{"version":3,"file":"static/js/665.caf7560d.chunk.js","mappings":"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","sources":["components/common/Charts/ChartScrollableWrapper.js","components/common/Charts/ChartLegendLabel.js","components/common/Charts/ChartUtilites.js","components/common/MapboxMap/FeatureParser.js","components/common/MapboxMap/MapBoxMap.js","components/common/Resource/DatasetCard.js","components/common/Resource/ResourceCardHeading.js","webpack://wddse-spa/./src/components/common/Resource/ResourceSmallCarousel.scss?b23d","components/common/Resource/ResourceSmallCarousel.js","components/icons/CarouselArrow.js","utilities/formulaParser.js","assets/refresh_black_24dp.svg","utilities/mapboxUtilities.js"],"sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport SimpleBar from 'simplebar-react'\nimport 'simplebar/dist/simplebar.min.css'\n\nimport './ChartScrollableWrapper.scss'\n\nfunction ChartScrollableWrapper ({ marginBottom, children }) {\n  return (\n    <SimpleBar\n      className='ChartScrollableWrapper'\n      style={{ marginBottom }}\n    >\n      {children}\n    </SimpleBar>\n  )\n}\n\nChartScrollableWrapper.propTypes = {\n  marginBottom: PropTypes.number,\n  children: PropTypes.oneOfType([\n    PropTypes.element,\n    PropTypes.string,\n    PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.element, PropTypes.string]))\n  ])\n}\n\nChartScrollableWrapper.defaultProps = {\n  marginBottom: 0\n}\n\nexport default ChartScrollableWrapper\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Text from '../../common/Text/Text'\nimport cx from 'classnames'\n\nimport './ChartLegendLabel.scss'\n\nfunction ChartLegendLabel ({ label, index, color }) {\n  return (\n    <div className='ChartLegendLabel'>\n      <div\n        className='ChartLegendLabel__dot'\n        style={{ backgroundColor: color }}\n      />\n      <Text\n        className={cx({\n          ChartLegendLabel__label: true\n        })}\n        typeFace='Small Text/MedGray'\n      >\n        {label}\n      </Text>\n    </div>\n  )\n}\n\nChartLegendLabel.propTypes = {\n  label: PropTypes.string,\n  index: PropTypes.number,\n  color: PropTypes.string\n}\n\nexport default ChartLegendLabel\n","import React from 'react'\nimport ChartLegendLabel from './ChartLegendLabel'\nimport stateFipsMapping from '../../../config/stateFipsMapping.json'\n\nexport const covidWeeklyLineChartDataTransform = (data, datasetConfig) => {\n  const chartDatasets = datasetConfig.map(config => {\n    return (\n      {\n        label: config.key,\n        data: []\n      }\n    )\n  })\n  datasetConfig.forEach((config, index) => {\n    data.forEach(entry => {\n      chartDatasets[index].data.push(entry[config.key])\n    })\n  })\n\n  return chartDatasets\n}\n\nexport const covidWeeklyCreateLabels = (data) => {\n  return data.map(entry => entry.week_ending)\n}\n\nexport const createChartLegend = (datasetConfig) => {\n  return datasetConfig.map((configs, index) => {\n    return (\n      <ChartLegendLabel\n        key={index}\n        index={index}\n        label={configs.legendLabel}\n        color={configs.lineColor}\n      />\n    )\n  })\n}\n\nexport const stateLookupTool = (() => {\n  const states = {}\n  const keys = Object.keys(stateFipsMapping)\n  for (let i = 0; i < keys.length; i++) {\n    states[stateFipsMapping[keys[i]].abbreviation] = stateFipsMapping[keys[i]].name\n  }\n  return (abbreviation) => states[abbreviation]\n})()\n\nexport const roundToPlace = (number, place = 2) => {\n  const factor = Math.pow(10, place)\n  const num = Number(number)\n  if (Number.isNaN(num)) {\n    return '( no value )'\n  }\n  return (Math.round(num * factor) / factor).toFixed(place)\n}\n","import parser from '../../../utilities/formulaParser'\n\nconst FeatureParser = (feature, formulas) => {\n  const { properties } = feature\n\n  return {\n    state: parser.parse(formulas.state.formula)(properties),\n    data: formulas.data.map(({ label, formula }) => {\n      return {\n        label,\n        value: parser.parse(formula)(properties)\n      }\n    })\n  }\n}\n\nexport default FeatureParser\n","import React, { useEffect, useRef, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport { initializeMap, addGeoCoder } from '../../../utilities/mapboxUtilities'\nimport { LoadingSpinner } from '../LoadingCover/LoadingCover'\nimport { getAlertBanner, expandMapToggle } from '../../../utilities/displayUtilities'\nimport Select from 'react-select'\nimport isEmpty from 'lodash/isEmpty'\nimport './MapboxMap.scss'\n\nconst MapBoxMap = (props) => {\n  const {\n    title,\n    description,\n    isLoading,\n    onMapLoad,\n    settings,\n    navigationControl,\n    resetOverride, // if this is true the reset button goes to the jump to location\n    geoCoder,\n    jumpTo,\n    expandMap,\n    expandMapOptions,\n    renderLegend,\n    historicalData,\n    historicalDataList,\n    onHistoricalDataChange,\n    alertBanner,\n    onAlertBannerClear,\n    customGeoCoder,\n    customGeoCoderOptions,\n    customGeoCoderFeatures,\n    OnMapError\n  } = props\n  const RESET_MAP_SPEED = 1.9\n\n  const mapContainerRef = useRef(null)\n  const mapboxRef = useRef(null)\n  const isMounted = useRef(false)\n\n  const [isMapExpanded, setIsMapExpanded] = useState(false)\n  const useModal = (expandMapOptions ? (expandMapOptions.useModal !== undefined ? expandMapOptions.useModal : false) : false)\n  const [resetJump, setResetJump] = useState({ center: settings.center, zoom: settings.zoom })\n\n  useEffect(() => {\n    try {\n      const mapContainer = mapContainerRef.current\n      // setup map upon mount\n      mapboxRef.current = initializeMap({\n        mapContainer,\n        settings,\n        navigationControl,\n        geoCoder,\n        onLoad: () => onMapLoad(mapboxRef.current),\n        setResetJump,\n        onError: OnMapError\n      })\n    } catch (error) {\n      OnMapError()\n      console.error(`Mapbox error.  Details: ${error}`)\n    }\n\n    // cleanup map upon unmount\n    return () => {\n      const map = mapboxRef?.current\n      map?.remove()\n    }\n    // TODO: Rework so this has proper dependencies\n    // eslint-disable-next-line\n  }, [])\n\n  useEffect(() => {\n    if (jumpTo) {\n      mapboxRef.current.flyTo({ center: jumpTo.center, zoom: jumpTo.zoom, speed: RESET_MAP_SPEED })\n    }\n  }, [jumpTo])\n\n  useEffect(() => {\n    if (resetOverride && jumpTo && jumpTo.center && jumpTo.zoom && isMounted && isMounted.current) {\n      mapboxRef.current.flyTo({ center: jumpTo.center, zoom: jumpTo.zoom, bearing: 0, speed: RESET_MAP_SPEED })\n    } else if (resetJump && resetJump.center && resetJump.zoom && isMounted && isMounted.current) {\n      mapboxRef.current.flyTo({ center: resetJump.center, zoom: resetJump.zoom, bearing: 0, speed: RESET_MAP_SPEED })\n    } else {\n      isMounted.current = true\n    }\n  }, [resetJump])\n\n  useEffect(() => {\n    mapboxRef?.current?.resize()\n    if (expandMapOptions !== undefined && expandMapOptions.resetViewOnExpandChange) {\n      if (isMapExpanded) {\n        document.body.classList.add('overflow-hidden')\n        mapboxRef?.current?.flyTo({ center: expandMapOptions.center ? expandMapOptions.center : settings.center, zoom: expandMapOptions.zoom ? expandMapOptions.zoom : settings.zoom })\n      } else {\n        document.body.classList.remove('overflow-hidden')\n        mapboxRef?.current?.flyTo({ center: settings.center, zoom: settings.zoom })\n      }\n    }\n  }, [isMapExpanded, settings, expandMapOptions])\n\n  useEffect(() => {\n    if (customGeoCoder && !isEmpty(customGeoCoderOptions) && !isEmpty(customGeoCoderFeatures) && !isEmpty(mapboxRef)) {\n      addGeoCoder(mapboxRef.current, customGeoCoderFeatures, customGeoCoderOptions)\n    }\n  }, [customGeoCoder, customGeoCoderOptions, customGeoCoderFeatures])\n\n  useEffect(() => {\n    const close = (e) => {\n      if (e.key === 'Escape') {\n        setIsMapExpanded(false)\n      }\n    }\n    window.addEventListener('keydown', close)\n    return () => window.removeEventListener('keydown', close)\n  }, [])\n\n  const historicalDataSelector = () => {\n    return (\n      <div className='HistoricalDataSelector__wrapper'>\n        <Select\n          classNamePrefix='HistoricalDataSelector'\n          defaultValue={historicalDataList.length ? historicalDataList[0] : ''}\n          onChange={(option) => onHistoricalDataChange(option.value, mapboxRef.current)}\n          options={historicalDataList}\n        />\n      </div>\n    )\n  }\n\n  const toggleIsMapExpanded = () => { setIsMapExpanded(!isMapExpanded) }\n\n  return (\n    <div className='MapBoxMap__wrapper'>\n      <div\n        className={`\n          ${cx('MapBoxMap', { loading: isLoading })} \n          ${isMapExpanded ? 'map-expanded' : ''}\n          ${useModal ? 'use-modal' : ''}\n        `}\n      >\n        <div className='MapBoxMap__header'>\n          <div className='title__wrapper'>\n            {title && <h3>{title}</h3>}\n            {description && <p>{description}</p>}\n          </div>\n          {historicalData && historicalDataList && historicalDataList.length && historicalDataSelector()}\n          {expandMap && expandMapToggle(isMapExpanded, toggleIsMapExpanded)}\n        </div>\n        <div className='MapBoxMap__loading'><LoadingSpinner statusText='' className='map_spinner' /></div>\n        {alertBanner && !isEmpty(alertBanner) && getAlertBanner(alertBanner, onAlertBannerClear)}\n        <div className='mapbox-ref' ref={mapContainerRef} />\n        {renderLegend}\n      </div>\n      {isMapExpanded && useModal &&\n        <div\n          className='map-expanded__background'\n          onClick={() => setIsMapExpanded(false)}\n        />}\n    </div>\n  )\n}\n\nMapBoxMap.propTypes = {\n  title: PropTypes.string,\n  description: PropTypes.string,\n  isLoading: PropTypes.bool,\n  onMapLoad: PropTypes.func,\n  // follows mapbox settings: https://docs.mapbox.com/mapbox-gl-js/api/map/\n  settings: PropTypes.shape({\n    style: PropTypes.string,\n    center: PropTypes.arrayOf(PropTypes.number),\n    zoom: PropTypes.number,\n    pitch: PropTypes.number\n  }).isRequired,\n  navigationControl: PropTypes.shape({\n    isEnabled: PropTypes.bool,\n    position: PropTypes.string\n  }),\n  resetOverride: PropTypes.bool,\n  geoCoder: PropTypes.shape({\n    isEnabled: PropTypes.bool,\n    position: PropTypes.string\n  }),\n  jumpTo: PropTypes.shape({\n    center: PropTypes.array,\n    zoom: PropTypes.number\n  }),\n  expandMap: PropTypes.bool,\n  expandMapOptions: PropTypes.shape({\n    useModal: PropTypes.bool,\n    resetViewOnExpandChange: PropTypes.bool,\n    zoom: PropTypes.number,\n    center: PropTypes.array\n  }),\n  historicalData: PropTypes.bool,\n  historicalDataList: PropTypes.arrayOf(PropTypes.shape({\n    id: PropTypes.string,\n    label: PropTypes.string\n  })),\n  onHistoricalDataChange: PropTypes.func,\n  renderLegend: PropTypes.object,\n  alertBanner: PropTypes.shape({\n    type: PropTypes.string,\n    title: PropTypes.string,\n    body: PropTypes.string\n  }),\n  onAlertBannerClear: PropTypes.func,\n  customGeoCoder: PropTypes.bool,\n  customGeoCoderOptions: PropTypes.shape({\n    searchFields: PropTypes.arrayOf(PropTypes.string),\n    placeNameField: PropTypes.string,\n    zoom: PropTypes.number,\n    types: PropTypes.oneOf(['country', 'region', 'postcode', 'district', 'place', 'locality', 'neighborhood', 'address']),\n    countries: PropTypes.string,\n    position: PropTypes.oneOf(['top-left', 'bottom-left', 'top-right', 'bottom-right']),\n    placeholder: PropTypes.string\n  }),\n  customGeoCoderFeatures: PropTypes.object,\n  OnMapError: PropTypes.func\n}\n\nexport default MapBoxMap\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Text from '../Text/Text'\nimport ResourceCardHeading from './ResourceCardHeading'\nimport { combineClassObjects } from '../../../utilities/displayUtilities'\n\nimport './DatasetCard.scss'\n\nconst baseClasses = {\n  anchorContainer: 'DatasetCard__container',\n  container: 'DatasetCard',\n  containerInner: 'DatasetCard__inner',\n  type: 'DatasetCard__small-text type',\n  heading: 'DatasetCard__heading',\n  footerLabel: 'DatasetCard__footer-label',\n  footer: 'DatasetCard__small-text footer'\n}\n\nconst DatasetCard = (props) => {\n  const {\n    heading,\n    slug,\n    footer,\n    classes\n  } = props\n  const combinedClasses = combineClassObjects(baseClasses, classes)\n  const hasContainerClass = props?.classes?.container\n  const handleCarouselSelection = (event = null) => {\n    if (!event.key || event.key === 'Enter' || event.key === ' ') {\n      window.open(slug, '_self')\n    }\n  }\n  return (\n    <a\n      className={combinedClasses.anchorContainer}\n      onClick={handleCarouselSelection}\n      onKeyPress={handleCarouselSelection}\n      aria-label={`Open ${heading}`}\n      noBs\n    >\n      <div className={combinedClasses.container}>\n        <div className={combinedClasses.containerInner}>\n          <Text\n            className={combinedClasses.type}\n            typeFace='Small Text/MedGray'\n          >\n            Dataset\n          </Text>\n\n          <Text\n            typeFace={hasContainerClass ? '05 H3/Regular/Dark Blue' : '05 H2/Regular/Dark Blue'}\n            className={combinedClasses.heading}\n          >\n            <ResourceCardHeading heading={heading} />\n          </Text>\n          <Text\n            className={combinedClasses.footerLabel}\n            typeFace='Small Text/MedGray'\n          >Page last modified\n          </Text>\n          <Text\n            className={combinedClasses.footer}\n            typeFace='Body/16pt/MedGray'\n          >\n            {footer}\n          </Text>\n        </div>\n      </div>\n    </a>\n  )\n}\n\nDatasetCard.propTypes = {\n  heading: PropTypes.string,\n  slug: PropTypes.string,\n  footer: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object\n  ]),\n  // appends custom classes to the component's elements\n  classes: PropTypes.shape({\n    anchorContainer: PropTypes.string,\n    container: PropTypes.string,\n    containerInner: PropTypes.string,\n    type: PropTypes.string,\n    heading: PropTypes.string,\n    footerLabel: PropTypes.string,\n    footer: PropTypes.string\n  })\n}\n\nDatasetCard.defaultProps = {\n  classes: {}\n}\n\nexport default DatasetCard\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger'\nimport Tooltip from 'react-bootstrap/Tooltip'\n\nconst DEFAULT_CHAR_LIMIT = 85\n\n/**\n *\n * @param {string} string\n * @param {number} charLimit\n */\nfunction isTruncationRequired (string = '', charLimit = DEFAULT_CHAR_LIMIT) {\n  return string.length > charLimit\n}\n\n/**\n *\n * @param {string} string\n * @param {number} charLimit\n */\nexport function truncate (string = '', charLimit = DEFAULT_CHAR_LIMIT) {\n  // use trim to remove any trailing spaces\n  return string.slice(0, charLimit).trim()\n}\n\nconst ResourceCardHeading = ({ heading, charLimit }) => {\n  const shouldTruncate = isTruncationRequired(heading, charLimit)\n\n  if (shouldTruncate) {\n    return (\n      <OverlayTrigger\n        flip\n        placement='right'\n        delay={{ show: 0, hide: 0 }}\n        overlay={(tooltipProps) => {\n          return (\n            <Tooltip\n              {...tooltipProps}\n              arrowProps={{ style: { display: 'none' } }}\n            >\n              {heading}\n            </Tooltip>\n          )\n        }}\n        trigger={['hover', 'focus']}\n      >\n        <span>{truncate(heading, charLimit)}...</span>\n      </OverlayTrigger>\n    )\n  } else {\n    return (\n      <span>{heading}</span>\n    )\n  }\n}\n\nResourceCardHeading.propTypes = {\n  heading: PropTypes.string,\n  charLimit: PropTypes.number\n}\n\nResourceCardHeading.defaultProps = {\n  heading: '',\n  charLimit: DEFAULT_CHAR_LIMIT\n}\n\nexport default ResourceCardHeading\n","// extracted by mini-css-extract-plugin\nexport default {\"resourceSmallWidthDesktop\":\"251px\",\"resourceSmallWidthMobile\":\"222px\",\"resourceSmallHeightDesktop\":\"290px\",\"resourceSmallHeightMobile\":\"250px\",\"datasetCardWidthDesktop\":\"246px\",\"datasetCardWidthMobile\":\"222px\",\"datasetCardHeightDesktop\":\"328px\",\"datasetCardHeightMobile\":\"274px\"};","import React, { useMemo, useRef, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport {\n  CarouselProvider,\n  Slider,\n  Slide,\n  DotGroup\n} from 'pure-react-carousel'\nimport useDisplayContext from '../../../hooks/useDisplayContext'\nimport { calculateSliderProps } from '../../../utilities/displayUtilities'\nimport scssVar from './ResourceSmallCarousel.scss'\n\nconst desiredSlideSpacing = 18\n\nconst resourceSmallWidthDesktop = parseInt(scssVar.resourceSmallWidthDesktop || '251px', 10)\nconst resourceSmallWidthMobile = parseInt(scssVar.resourceSmallWidthMobile || '222px', 10)\nconst resourceSmallHeightDesktop = parseInt(scssVar.resourceSmallHeightDesktop || '290px', 10)\nconst resourceSmallHeightMobile = parseInt(scssVar.resourceSmallHeightMobile || '250px', 10)\nconst datasetCardWidthDesktop = parseInt(scssVar.datasetCardWidthDesktop || '251px', 10)\nconst datasetCardWidthMobile = parseInt(scssVar.datasetCardWidthMobile || '222px', 10)\nconst datasetCardHeightDesktop = parseInt(scssVar.datasetCardHeightDesktop || '328px', 10)\nconst datasetCardHeightMobile = parseInt(scssVar.datasetCardHeightMobile || '274px', 10)\n\nconst ResourceSmallCarousel = (props) => {\n  const {\n    renderedResources = [],\n    renderControls,\n    useVisibleSlidesAsStep,\n    isDatasetCarousel\n  } = props\n  const { isMobile, windowWidth } = useDisplayContext()\n\n  const slideWidth = isDatasetCarousel\n    ? isMobile ? datasetCardWidthMobile : datasetCardWidthDesktop\n    : isMobile ? resourceSmallWidthMobile : resourceSmallWidthDesktop\n\n  // add in spacing\n  const naturalSlideWidth = slideWidth + desiredSlideSpacing\n\n  const naturalSlideHeight = isDatasetCarousel\n    ? isMobile ? datasetCardHeightMobile : datasetCardHeightDesktop\n    : isMobile ? resourceSmallHeightMobile : resourceSmallHeightDesktop\n\n  const [availableWidth, setAvailableWidth] = useState(naturalSlideWidth)\n  const containerRef = useRef()\n\n  const numOfSlides = renderedResources.length\n\n  useEffect(() => {\n    if (containerRef.current) {\n      const el = containerRef.current\n      const elWidth = el.getBoundingClientRect().width\n      setAvailableWidth(elWidth)\n    }\n  }, [windowWidth])\n\n  const { sliderStyle, numOfVisibleSlides, areAllSlidesVisible } = useMemo(() => {\n    return calculateSliderProps({\n      availableWidth: availableWidth,\n      totalWidthPerSlide: naturalSlideWidth,\n      numOfSlides: numOfSlides\n    })\n  }, [availableWidth, naturalSlideWidth, numOfSlides])\n\n  return (\n    <div ref={containerRef} className='ResourceSmallCarousel'>\n      <CarouselProvider\n        className='ResourceSmallCarouselCarousel'\n        naturalSlideWidth={naturalSlideWidth}\n        naturalSlideHeight={naturalSlideHeight}\n        totalSlides={numOfSlides}\n        step={useVisibleSlidesAsStep ? numOfVisibleSlides : 1}\n        dragStep={useVisibleSlidesAsStep ? numOfVisibleSlides : 1}\n        visibleSlides={numOfVisibleSlides}\n      >\n        <Slider\n          className='ResourceSmallCarousel__slider'\n          classNameTray='ResourceSmallCarousel__slider-tray'\n          classNameTrayWrap='ResourceSmallCarousel__slider-tray-wrap'\n          style={sliderStyle}\n        >\n          {renderedResources.map((renderedResource, i) => {\n            return (\n              <Slide className='ResourceSmallCarousel__slide' key={i} index={i}>\n                {renderedResource}\n              </Slide>\n            )\n          })}\n        </Slider>\n        {!areAllSlidesVisible && renderControls({ numOfVisibleSlides })}\n      </CarouselProvider>\n    </div>\n  )\n}\n\nResourceSmallCarousel.propTypes = {\n  isDatasetCarousel: PropTypes.bool,\n  renderedResources: PropTypes.arrayOf(PropTypes.object),\n  // custom control rendering, passed object { numOfVisibleSlides }\n  renderControls: PropTypes.func,\n  // tells the component to use its calculated numOfVisible slides as the step and drag step\n  useVisibleSlidesAsStep: PropTypes.bool\n}\n\nResourceSmallCarousel.defaultProps = {\n  renderedResources: [],\n  renderControls: () => {\n    return (\n      <DotGroup\n        className='ResourceSmallCarousel__dotGroup'\n        showAsSelectedForCurrentSlideOnly\n      />\n    )\n  }\n}\n\nexport default ResourceSmallCarousel\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst SMALL = 'small'\nconst LARGE = 'large'\nconst LEFT = 'left'\nconst RIGHT = 'right'\n\nconst lgWidth = 69\nconst lgHeight = 18\n\nconst smWidth = 27\nconst smHeight = 16\n\nconst CarouselArrow = ({ direction, size }) => {\n  let svgTransform = ''\n  let svg = null\n\n  if (direction === LEFT) {\n    svgTransform = size === LARGE\n      ? `rotate(180 ${lgWidth / 2} ${lgHeight / 2})`\n      : `rotate(180 ${smWidth / 2} ${smHeight / 2})`\n  }\n\n  if (size === LARGE) {\n    svg = (\n      <svg fill='currentColor' width={lgWidth} height={lgHeight} viewBox={`0 0 ${lgWidth} ${lgHeight}`} version='1.1' xmlns='http://www.w3.org/2000/svg'>\n        <g id='Topic-Page' stroke='none' transform={svgTransform} strokeWidth='1' fill='none' fillRule='evenodd'>\n          <g id='01-Topic_XL-T04-' transform='translate(-1110.000000, -5661.000000)' fill='currentColor'>\n            <g id='Related-Topic' transform='translate(0.000000, 5578.000000)'>\n              <g id='Arrow' transform='translate(1018.000000, 83.000000)'>\n                <g id='2.-Atom/Icon/Caret' transform='translate(126.500000, 9.000000) rotate(-90.000000) translate(-126.500000, -9.000000) translate(117.500000, -25.500000)'>\n                  <path d='M8.43844104,68.2205865 L0.774812809,60.3125613 C0.464303734,59.9970459 0.464303734,59.4868507 0.774812809,59.1713353 L1.24387971,58.6947056 C1.55438878,58.3791901 2.05648856,58.3791901 2.36699764,58.6947056 L9,65.5622011 L15.6330024,58.7014187 C15.9435114,58.3859032 16.4456112,58.3859032 16.7561203,58.7014187 L17.2251872,59.1780484 C17.5356963,59.4935638 17.5356963,60.003759 17.2251872,60.3192744 L9.56155896,68.2272996 C9.25104989,68.536102 8.74895011,68.536102 8.43844104,68.2205865 Z' />\n                  <rect id='Rectangle' x='8' y='0' width='2' height='67' rx='1' />\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n      </svg>\n    )\n  } else {\n    svg = (\n      <svg fill='currentColor' width={smWidth} height={smHeight} viewBox={`0 0 ${smWidth} ${smHeight}`} version='1.1' xmlns='http://www.w3.org/2000/svg'>\n        <g id='Topic-Page' stroke='none' transform={svgTransform} strokeWidth='1' fill='none' fillRule='evenodd'>\n          <g id='01-Topic_XL-T04-' transform='translate(-709.000000, -1482.000000)' fill='currentColor'>\n            <g id='Datasets' transform='translate(0.000000, 729.000000)'>\n              <g id='2.-Atom/Icon/Caret' transform='translate(640.000000, 761.000000) rotate(-90.000000) translate(-640.000000, -761.000000) translate(632.000000, 665.000000)'>\n                <g id='Group-14' transform='translate(-0.000000, 0.000000)'>\n                  <g id='Arrow' transform='translate(0.000000, 165.000000)'>\n                    <path d='M7.46885374,26.810014 L0.220269479,20.4835939 C-0.0734231595,20.2311815 -0.0734231595,19.8230254 0.220269479,19.570613 L0.663932826,19.1893093 C0.957625464,18.9368969 1.43253271,18.9368969 1.72622535,19.1893093 L8,24.6833057 L14.2737747,19.1946797 C14.5674673,18.9422674 15.0423745,18.9422674 15.3360672,19.1946797 L15.7797305,19.5759835 C16.0734232,19.8283958 16.0734232,20.236552 15.7797305,20.4889643 L8.53114626,26.8153845 C8.23745362,27.0624264 7.76254638,27.0624264 7.46885374,26.810014 Z' id='2.-Atom/Icon/Caret' />\n                    <rect id='Rectangle' x='6.85714286' y='0' width='2.28571429' height='25' rx='1' />\n                  </g>\n                </g>\n              </g>\n            </g>\n          </g>\n        </g>\n      </svg>\n    )\n  }\n\n  return (\n    <div className='CarouselArrow SvgIcon'>\n      {svg}\n    </div>\n  )\n}\n\nCarouselArrow.propTypes = {\n  direction: PropTypes.oneOf([LEFT, RIGHT]).isRequired,\n  size: PropTypes.oneOf([SMALL, LARGE]).isRequired\n}\n\nCarouselArrow.defaultProps = {\n  direction: RIGHT,\n  size: SMALL\n}\n\nexport default CarouselArrow\n","import React from 'react'\nimport dayjs from 'dayjs'\nimport { Parser } from 'formula-functionizer'\nimport * as formulajs from '@formulajs/formulajs'\nimport { numberWithCommas } from './searchPageHelpers'\nimport { roundToPlace } from '../components/common/Charts/ChartUtilites'\nimport ExternalLinkIcon from '../components/icons/ExternalLinkIcon'\n\nconst formulaParser = new Parser({\n  operators: 'javascript',\n  functions: {\n    FULL_ADDRESS_ONE_LINE: (street, city, state, zip) => {\n      return `${street}, ${city}, ${state} ${zip}`\n    },\n    DATE_FORMAT: (date, format) => {\n      return date\n        ? dayjs(date).format(format)\n        : 'N/A'\n    },\n    FORMAT_NUMBER: (value, numOfDecimalPlaces = 2) => {\n      if (!value) { return '(No value)' }\n\n      const decimalNum = roundToPlace(value, numOfDecimalPlaces)\n      return numberWithCommas(decimalNum)\n    },\n    STRING_OR_NA: (value) => {\n      return value === '' ? 'N/A' : value\n    },\n    EXTERNAL_LINK: (url, text) => {\n      if (!url || url === 'N/A' || !text) {\n        return 'N/A'\n      }\n\n      let validUrl = url\n      // Make sure URL parameter has a protocol.\n      if (url.search(/^http[s]?:\\/\\//) === -1) {\n        validUrl = 'http://' + url\n      }\n      return (\n        <a\n          href={validUrl}\n          title={validUrl}\n          target='_blank' rel='noopener noreferrer'\n        >\n          {text} <ExternalLinkIcon color='#02bfe7' width={10} height={10} />\n        </a>\n      )\n    },\n    EMAIL_LINK: (email, text) => {\n      if (!email || email === 'N/A' || !text) {\n        return 'N/A'\n      }\n      return (\n        <a\n          href={'mailto:' + email}\n          title={email}\n          target='_blank'\n          rel='noopener noreferrer'\n        >\n          {text} <ExternalLinkIcon color='#02bfe7' width={10} height={10} />\n        </a>\n      )\n    },\n    ...formulajs\n  }\n})\n\nexport default formulaParser\n","var _g;\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgRefreshBlack24Dp(_ref, svgRef) {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: \"24px\",\n    height: \"25px\",\n    viewBox: \"0 0 24 25\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n    ref: svgRef,\n    \"aria-labelledby\": titleId\n  }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, \"refresh_black_24dp\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    id: \"Working\",\n    stroke: \"none\",\n    strokeWidth: 1,\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"XL-Tool_Map_Reset-Control_Option-1\",\n    transform: \"translate(-128.000000, -1930.000000)\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"Map-View_State\",\n    transform: \"translate(102.000000, 1442.000000)\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"Map\",\n    transform: \"translate(-0.878929, 54.000000)\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"map-controls\",\n    transform: \"translate(21.000000, 311.000000)\"\n  }, /*#__PURE__*/React.createElement(\"g\", {\n    id: \"refresh_black_24dp\",\n    transform: \"translate(5.878929, 123.928776)\"\n  }, /*#__PURE__*/React.createElement(\"polygon\", {\n    id: \"Path\",\n    points: \"0 0 24 0 24 24 0 24\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M17.65,6.35 C16.2,4.9 14.21,4 12,4 C7.58,4 4.01,7.58 4.01,12 C4.01,16.42 7.58,20 12,20 C15.73,20 18.84,17.45 19.73,14 L17.65,14 C16.83,16.33 14.61,18 12,18 C8.69,18 6,15.31 6,12 C6,8.69 8.69,6 12,6 C13.66,6 15.14,6.69 16.22,7.78 L13,11 L20,11 L20,4 L17.65,6.35 Z\",\n    id: \"Path\",\n    fill: \"#333333\",\n    fillRule: \"nonzero\"\n  })))))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRefreshBlack24Dp);\nexport default __webpack_public_path__ + \"static/media/refresh_black_24dp.2ce8bafc3130b7cd672b89163540254b.svg\";\nexport { ForwardRef as ReactComponent };","import mapboxgl from 'mapbox-gl'\nimport MapboxGeocoder from '@mapbox/mapbox-gl-geocoder'\nimport backButton from '../assets/refresh_black_24dp.svg'\nimport ReactDOM from 'react-dom'\nimport { isEmpty, isArray, isString } from 'lodash'\n// src/utilities/mapboxUtilities.js\n// import backButton from '../../../../assets/refresh_black_24dp.svg'\n\n/**\n *\n * @param {object} payload\n * @param {string} payload.mapContainer - the DOM node to attach the map to\n * @param {object} payload.settings - follows mapbox settings https://docs.mapbox.com/mapbox-gl-js/api/map/\n * @param {object} payload.navigationControl - see https://docs.mapbox.com/mapbox-gl-js/api/map/#map#addcontrol\n * @param {boolean} payload.navigationControl.isEnabled\n * @param {string} payload.navigationControl.position\n * @param {object} payload.geoCoder - see https://docs.mapbox.com/mapbox-gl-js/api/map/#map#addcontrol\n * @param {boolean} payload.geoCoder.isEnabled\n * @param {string} payload.geoCoder.position\n * @param {function} payload.onLoad\n * @param {function} payload.setResetJump\n * @returns {object} returns created Mapbox map object\n */\nexport function initializeMap (payload) {\n  const {\n    mapContainer,\n    settings,\n    navigationControl,\n    geoCoder,\n    onLoad,\n    setResetJump,\n    onError\n  } = payload\n\n  const map = new mapboxgl.Map({\n    container: mapContainer,\n    // The `cooperativeGestures` option allows users to scroll a page with\n    // full-width maps. We are enabling this option by default for all maps\n    // per WDDSE-3399, but each individual map can override this setting.\n    // More information is available on\n    // https://www.mapbox.com/blog/mapbox-gl-js-v2-6\n    cooperativeGestures: true,\n    ...settings\n  })\n\n  map.on('error', (error) => {\n    if (onError) {\n      onError(error)\n    } else {\n      // Catchall error if onError is not handled in component\n      console.error(`Mapbox error. Details: ${error?.error}`)\n    }\n  })\n  let searchbox\n\n  // adds the searchbox\n  // TODO: Unify out-of-box geocoder with custom geocoder.\n  if (geoCoder && geoCoder.isEnabled) {\n    const geoCoderControl = { accessToken: mapboxgl.accessToken, mapboxgl: mapboxgl }\n    if (geoCoder.placeholder) {\n      geoCoderControl.placeholder = geoCoder.placeholder\n    }\n    searchbox = new MapboxGeocoder(geoCoderControl)\n    map.addControl(\n      searchbox,\n      geoCoder.position\n    )\n  }\n\n  // adds geocoder\n  if (navigationControl && navigationControl.isEnabled) {\n    map.addControl(new mapboxgl.NavigationControl(), navigationControl.position)\n  }\n\n  // our mapBoxMap component already has logic for jumpTo so it should be available for all maps\n  // arguments set the center and zoom that is reset to\n  const resetButton = new ResetButton(setResetJump, settings.center, settings.zoom)\n  // the final argument sets the position of the button, mapbox will put it in any corner\n\n  map.addControl(resetButton, 'bottom-left')\n  map.on('load', () => {\n    onLoad()\n  })\n\n  return map\n}\n\nexport function closeAllMapPopups (popup) {\n  const element = document.getElementById('mapPopopverWrapper')\n  // If popover wrapper isn't found, there's nothing to close.\n  if (element) {\n    ReactDOM.unmountComponentAtNode(element)\n    popup?.remove()\n  }\n}\n\n// the class creates a button and attaches a click event to it\n// the mapbox documentation for addControl has the specs\nclass ResetButton {\n  constructor (setJumpTo, center, zoom) {\n    this.setJumpTo = setJumpTo\n    this.center = center\n    this.zoom = zoom\n\n    this.onDivClick = (e) => {\n      const bottomLeftDiv = document.getElementsByClassName('mapboxgl-ctrl-bottom-left')[0]\n      const children = bottomLeftDiv.children\n      for (let i = 0; i < children.length; i++) {\n        const child = children[i]\n        child.classList.remove('map_reset_div_above')\n      }\n      e.target.classList.add('map_reset_div_above')\n    }\n  }\n\n  onAdd (map) {\n    const toggleFrontDiv = (event) => {\n      const activeDiv = event.target.parentElement\n      if (event.type === 'focus') {\n        activeDiv.classList?.add('map_reset_div_above')\n      } else {\n        activeDiv.classList?.remove('map_reset_div_above')\n      }\n    }\n\n    this.map = map\n    const newDiv = document.createElement('div')\n    newDiv.className = 'map_reset_div'\n    this.container = newDiv\n    const button = this._createButton()\n    this.container.appendChild(button)\n\n    button.addEventListener('focus', toggleFrontDiv)\n    button.addEventListener('focusout', toggleFrontDiv)\n\n    return this.container\n  }\n\n  onRemove () {\n    this.container.parentNode.removeChild(this.container)\n    this.map = undefined\n  }\n\n  _createButton () {\n    const btn = window.document.createElement('button')\n    const img = window.document.createElement('img')\n    img.setAttribute('src', backButton)\n    img.setAttribute('alt', 'Reset')\n    btn.appendChild(img)\n    btn.setAttribute('title', 'Reset')\n    btn.className = 'map_reset_button'\n    btn.addEventListener('click', (e) => {\n      this.setJumpTo({\n        center: this.center,\n        zoom: this.zoom\n      })\n      this.map.fire('closeAllPopups')\n      e.stopPropagation()\n    }, false)\n    return btn\n  }\n}\n\nexport const addGeoCoder = (map, featureCollection, settings) => {\n  function forwardGeocoder (query) {\n    const matchingFeatures = []\n    for (const feature of featureCollection.features) {\n      // Handle queries with different capitalization\n      // than the source data by calling toLowerCase().\n      const isMatch = settings.searchFields.filter(field => feature.properties[field].toLowerCase().includes(query.toLowerCase()))\n      if (isMatch.length > 0) {\n        feature.place_name = `${feature.properties[settings.placeNameField ?? 'name']}`\n        feature.center = feature.geometry.coordinates\n        feature.place_type = ['place']\n        matchingFeatures.push(feature)\n      }\n    }\n    return matchingFeatures\n  }\n\n  // Add the control to the map.\n  map.addControl(\n    new MapboxGeocoder({\n      accessToken: mapboxgl.accessToken,\n      localGeocoder: forwardGeocoder,\n      mapboxgl: mapboxgl,\n      zoom: settings.zoom ?? 14,\n      types: settings.types ?? 'place',\n      countries: settings.countries ?? 'US',\n      placeholder: settings.placeholder ?? 'Search location'\n    }),\n    settings.position ?? 'top-left'\n  )\n}\n\n/**\n *\n * @param {object} map - Mapbox object\n * @param {object} popupData - see https://docs.mapbox.com/mapbox-gl-js/api/markers/#popup\n * @param {function} renderPopup - function for rendering static HTML into popup; passes geoJSON as argument for consumer\n */\nexport function setupHoverPopup (map, popupData, renderPopup) {\n  const { layerId, options } = popupData\n  const popup = new mapboxgl.Popup({\n    ...options,\n    className: 'MapBoxPopup'\n  })\n\n  map.on('mousemove', layerId, e => {\n    const features = map.queryRenderedFeatures(e.point, {\n      layers: [layerId]\n    })\n    const feature = features[0]\n    const renderedPopup = renderPopup(feature)\n    popup.setDOMContent(renderedPopup).setLngLat(e.lngLat).addTo(map)\n  })\n\n  map.on('mouseleave', layerId, () => {\n    map.getCanvas().style.cursor = ''\n    popup.remove()\n  })\n}\n\n/**\n *\n * @param {object} map - Mapbox object\n * @param {object} popupData - see https://docs.mapbox.com/mapbox-gl-js/api/markers/#popup\n * @param {function} renderPopup - function for rendering static HTML into popup; passes geoJSON as argument for consumer\n * @param {boolean} isMobile - Optional param for whether or not viewing from mobile. (Default is false)\n * @param {array} chowData - Optional key-value list of CHOW records by buyer's enrollment id.\n * @param {array} acoData - Optional list of ACOs and containing info about each one.\n * @param {string} idsKeyName - Header name for ACO ids (Only required if acoData is populated).\n */\nexport function setupPopup (map, popupData, renderPopup, isMobile = false, chowData = null, acoData = null, idsKeyName = '') {\n  const { layerId, options } = popupData\n\n  // this variable keeps track of whether the user has clicked on a feature in the layer\n  let featureIsClicked = false\n\n  const popup = new mapboxgl.Popup({\n    ...options,\n    className: 'MapBoxPopup'\n  })\n\n  const closeAllPopupsHandler = () => {\n    closeAllMapPopups(popup)\n    featureIsClicked = false\n  }\n\n  // resuable function for showing the feature popup\n  function showPopup (feature) {\n    const { geometry } = feature\n    if (!isEmpty(chowData)) {\n      if (!isArray(geometry?.coordinates) || geometry?.coordinates.length !== 2) {\n      // Error: Feature is missing coordinates.\n        return\n      }\n      if (!isString(feature.properties?.ENRLMT_ID)) {\n      // Error: Feature is missing enrollment id property.\n        return\n      }\n    }\n    const coordinates = geometry.coordinates.slice()\n    let renderedPopup = isEmpty(chowData) && renderPopup(feature, closeAllPopupsHandler)\n    if (!isEmpty(acoData)) {\n      // ACOs are already sorted by aco_name in aco_geolocation sub-table (back-end site).\n      const acos = feature.properties[idsKeyName].split(',').map(id => acoData.get(id))\n\n      renderedPopup = renderPopup(acos, closeAllPopupsHandler)\n    }\n\n    if (!isEmpty(chowData)) {\n    // ENRLMT_ID might have a single id or a comma separated list.\n      const hospitals = feature.properties.ENRLMT_ID.split(',').map(id => chowData.get(id))\n      // Sort by effective date descending.\n      const hospitalsSortedByDate = hospitals.sort((item1, item2) => {\n        return (item2.CHOW_EFCTV_DT > item1.CHOW_EFCTV_DT) ? 1 : -1\n      })\n      // Per WDDSE-3637, we only want paginated tooltips for the hospitals\n      // that share the same location (lat and long) and at the same time\n      // have the same effective date, where the effective date is the\n      // latest of all. Hospitals with an effective date older than the\n      // latest are dropped and will not be displayed on the tooltip.\n      const hospitalsFilteredByDate = hospitalsSortedByDate.filter(item => {\n        return hospitalsSortedByDate[0].CHOW_EFCTV_DT === item.CHOW_EFCTV_DT\n      })\n      renderedPopup = renderPopup(hospitalsFilteredByDate, closeAllPopupsHandler)\n    }\n    popup.setDOMContent(renderedPopup).setLngLat(coordinates).addTo(map)\n  }\n\n  function onMouseEnter (e) {\n    // change the cursor style as a UI indicator\n    map.getCanvas().style.cursor = 'pointer'\n\n    const features = map.queryRenderedFeatures(e.point, {\n      layers: [layerId]\n    })\n\n    // only show hover-activated popup if another feature has not been clicked\n    if (!featureIsClicked) {\n      showPopup(features[0])\n    }\n  }\n\n  function onMouseClick (e) {\n    const features = map.queryRenderedFeatures(e.point, {\n      layers: [layerId]\n    })\n\n    // clicking anywhere on the map attempts to close any popups\n    map.fire('closeAllPopups')\n\n    if (features.length === 0) {\n      // the user clicked on the base map away from a feature\n      featureIsClicked = false\n    } else {\n      // a feature was clicked on; set the variable and show the popup\n      featureIsClicked = true\n      showPopup(features[0])\n    }\n  }\n\n  function onMouseLeave () {\n    // change it back to a pointer when it leaves\n    map.getCanvas().style.cursor = ''\n\n    // only remove popup upon mouseleave if feature has not been clicked\n    if (!featureIsClicked) {\n      map.fire('closeAllPopups')\n    }\n  }\n\n  function onDettachEvents () {\n    map.off('mouseenter', layerId, onMouseEnter)\n    map.off('click', onMouseClick)\n    map.off('mouseleave', layerId, onMouseLeave)\n    map.off('closeAllPopups', closeAllPopupsHandler)\n    map.off('dettachEvents', onDettachEvents)\n  }\n\n  // Setting up mouse events.\n  map.on('mouseenter', layerId, onMouseEnter)\n  map.on('click', onMouseClick)\n  map.on('mouseleave', layerId, onMouseLeave)\n  if (!isMobile) {\n    map.on('closeAllPopups', closeAllPopupsHandler)\n  }\n  map.on('dettachEvents', onDettachEvents)\n}\n"],"names":["ChartScrollableWrapper","_ref","marginBottom","children","_jsx","SimpleBar","className","style","defaultProps","label","index","color","_jsxs","backgroundColor","Text","cx","ChartLegendLabel__label","typeFace","covidWeeklyLineChartDataTransform","data","datasetConfig","chartDatasets","map","config","key","forEach","entry","push","covidWeeklyCreateLabels","week_ending","createChartLegend","configs","ChartLegendLabel","legendLabel","lineColor","stateLookupTool","states","keys","Object","stateFipsMapping","i","length","abbreviation","name","roundToPlace","number","place","arguments","undefined","factor","Math","pow","num","Number","isNaN","round","toFixed","FeatureParser","feature","formulas","properties","state","parser","parse","formula","value","props","title","description","isLoading","onMapLoad","settings","navigationControl","resetOverride","geoCoder","jumpTo","expandMap","expandMapOptions","renderLegend","historicalData","historicalDataList","onHistoricalDataChange","alertBanner","onAlertBannerClear","customGeoCoder","customGeoCoderOptions","customGeoCoderFeatures","OnMapError","mapContainerRef","useRef","mapboxRef","isMounted","isMapExpanded","setIsMapExpanded","useState","useModal","resetJump","setResetJump","center","zoom","useEffect","mapContainer","current","initializeMap","onLoad","onError","error","console","remove","flyTo","speed","bearing","_mapboxRef$current","_mapboxRef$current2","_mapboxRef$current3","resize","resetViewOnExpandChange","document","body","classList","add","isEmpty","addGeoCoder","close","e","window","addEventListener","removeEventListener","loading","Select","classNamePrefix","defaultValue","onChange","option","options","expandMapToggle","toggleIsMapExpanded","LoadingSpinner","statusText","getAlertBanner","ref","onClick","baseClasses","anchorContainer","container","containerInner","type","heading","footerLabel","footer","DatasetCard","_props$classes","slug","classes","combinedClasses","combineClassObjects","hasContainerClass","handleCarouselSelection","event","open","onKeyPress","noBs","ResourceCardHeading","truncate","charLimit","slice","trim","shouldTruncate","isTruncationRequired","OverlayTrigger","flip","placement","delay","show","hide","overlay","tooltipProps","Tooltip","arrowProps","display","trigger","resourceSmallWidthDesktop","parseInt","scssVar","resourceSmallWidthMobile","resourceSmallHeightDesktop","resourceSmallHeightMobile","datasetCardWidthDesktop","datasetCardWidthMobile","datasetCardHeightDesktop","datasetCardHeightMobile","ResourceSmallCarousel","renderedResources","renderControls","useVisibleSlidesAsStep","isDatasetCarousel","isMobile","windowWidth","useDisplayContext","naturalSlideWidth","naturalSlideHeight","availableWidth","setAvailableWidth","containerRef","numOfSlides","elWidth","getBoundingClientRect","width","sliderStyle","numOfVisibleSlides","areAllSlidesVisible","useMemo","calculateSliderProps","totalWidthPerSlide","CarouselProvider","totalSlides","step","dragStep","visibleSlides","Slider","classNameTray","classNameTrayWrap","renderedResource","Slide","DotGroup","showAsSelectedForCurrentSlideOnly","LARGE","CarouselArrow","direction","size","svgTransform","svg","fill","height","viewBox","version","xmlns","id","stroke","transform","strokeWidth","fillRule","d","x","y","rx","Parser","operators","functions","FULL_ADDRESS_ONE_LINE","street","city","zip","DATE_FORMAT","date","format","dayjs","FORMAT_NUMBER","numOfDecimalPlaces","decimalNum","numberWithCommas","STRING_OR_NA","EXTERNAL_LINK","url","text","validUrl","search","href","target","rel","ExternalLinkIcon","EMAIL_LINK","email","formulajs","payload","mapboxgl","cooperativeGestures","searchbox","on","isEnabled","geoCoderControl","accessToken","placeholder","MapboxGeocoder","addControl","position","resetButton","ResetButton","constructor","setJumpTo","this","onDivClick","getElementsByClassName","onAdd","toggleFrontDiv","activeDiv","parentElement","_activeDiv$classList","_activeDiv$classList2","newDiv","createElement","button","_createButton","appendChild","onRemove","parentNode","removeChild","btn","img","setAttribute","backButton","fire","stopPropagation","featureCollection","_settings$zoom","_settings$types","_settings$countries","_settings$placeholder","_settings$position","localGeocoder","query","matchingFeatures","features","_settings$placeNameFi","searchFields","filter","field","toLowerCase","includes","place_name","placeNameField","geometry","coordinates","place_type","types","countries","setupHoverPopup","popupData","renderPopup","layerId","popup","queryRenderedFeatures","point","layers","renderedPopup","setDOMContent","setLngLat","lngLat","addTo","getCanvas","cursor","setupPopup","chowData","acoData","idsKeyName","featureIsClicked","closeAllPopupsHandler","element","getElementById","ReactDOM","closeAllMapPopups","showPopup","_feature$properties","isArray","isString","ENRLMT_ID","acos","split","get","hospitalsSortedByDate","sort","item1","item2","CHOW_EFCTV_DT","hospitalsFilteredByDate","item","onMouseEnter","onMouseClick","onMouseLeave","onDettachEvents","off"],"sourceRoot":""}