{"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":""}