@undp/data-viz 2.2.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AreaChart.cjs +1 -1
- package/dist/AreaChart.js +1 -1
- package/dist/Axis-D56Gy0se.js +31 -0
- package/dist/Axis-D56Gy0se.js.map +1 -0
- package/dist/Axis-Jt_tmhxS.cjs +2 -0
- package/dist/Axis-Jt_tmhxS.cjs.map +1 -0
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.d.ts +6 -0
- package/dist/BarGraph.js +1759 -1750
- package/dist/BarGraph.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.d.ts +2 -0
- package/dist/BeeSwarmChart.js +270 -267
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.cjs.map +1 -1
- package/dist/BiVariateChoroplethMap.d.ts +4 -0
- package/dist/BiVariateChoroplethMap.js +328 -401
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.cjs.map +1 -1
- package/dist/BulletChart.d.ts +2 -0
- package/dist/BulletChart.js +544 -542
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +1 -1
- package/dist/ButterflyChart.cjs.map +1 -1
- package/dist/ButterflyChart.d.ts +2 -0
- package/dist/ButterflyChart.js +332 -330
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.d.ts +4 -0
- package/dist/ChoroplethMap.js +341 -416
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/Data/01.json +4042 -0
- package/dist/Data/mapData.json +4543 -0
- package/dist/Data/testMap.json +361 -0
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.js +1 -1
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.d.ts +4 -0
- package/dist/DotDensityMap.js +297 -311
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.js +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.d.ts +2 -0
- package/dist/DumbbellChart.js +537 -536
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/{GraphEl-DcNr5JzH.js → GraphEl-L5hNe7wJ.js} +84 -67
- package/dist/GraphEl-L5hNe7wJ.js.map +1 -0
- package/dist/GraphEl-ic8C5Ksc.cjs +2 -0
- package/dist/GraphEl-ic8C5Ksc.cjs.map +1 -0
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.d.ts +3 -0
- package/dist/GriddedGraphs.js +1 -1
- package/dist/GriddedGraphsFromConfig.d.ts +3 -0
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.cjs.map +1 -1
- package/dist/Histogram.d.ts +2 -0
- package/dist/Histogram.js +50 -49
- package/dist/Histogram.js.map +1 -1
- package/dist/HybridMap.cjs +1 -1
- package/dist/HybridMap.cjs.map +1 -1
- package/dist/HybridMap.d.ts +4 -0
- package/dist/HybridMap.js +368 -418
- package/dist/HybridMap.js.map +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.js +1 -1
- package/dist/MultiGraphDashboard.d.ts +3 -0
- package/dist/MultiGraphDashboardFromConfig.d.ts +3 -0
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.js +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.js +1 -1
- package/dist/ParetoChart.cjs +1 -1
- package/dist/ParetoChart.js +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +3 -0
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +3 -0
- package/dist/PerformanceIntensiveScrollStory.d.ts +3 -0
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.js +1 -1
- package/dist/ScrollStory.d.ts +3 -0
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.js +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.d.ts +3 -0
- package/dist/SingleGraphDashboard.js +1 -1
- package/dist/SingleGraphDashboardFromConfig.d.ts +3 -0
- package/dist/SingleGraphDashboardGeoHubMaps.d.ts +3 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +3 -0
- package/dist/SingleGraphDashboardThreeDGraphs.d.ts +3 -0
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +3 -0
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.js +1 -1
- package/dist/Types.d.ts +3 -0
- package/dist/WaterfallChart.cjs +1 -1
- package/dist/WaterfallChart.cjs.map +1 -1
- package/dist/WaterfallChart.d.ts +2 -0
- package/dist/WaterfallChart.js +263 -261
- package/dist/WaterfallChart.js.map +1 -1
- package/dist/index-DLFt97gy.cjs +2 -0
- package/dist/index-DLFt97gy.cjs.map +1 -0
- package/dist/index-Dp_SfsUA.js +2344 -0
- package/dist/index-Dp_SfsUA.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/package.json +2 -1
- package/readme.md +0 -7
- package/dist/Axis-DoOqnt6g.js +0 -32
- package/dist/Axis-DoOqnt6g.js.map +0 -1
- package/dist/Axis-Dtjn-EgM.cjs +0 -2
- package/dist/Axis-Dtjn-EgM.cjs.map +0 -1
- package/dist/GraphEl-CAjJLOGk.cjs +0 -2
- package/dist/GraphEl-CAjJLOGk.cjs.map +0 -1
- package/dist/GraphEl-DcNr5JzH.js.map +0 -1
- package/dist/zoom-5AkJSuWO.js +0 -1864
- package/dist/zoom-5AkJSuWO.js.map +0 -1
- package/dist/zoom-ChcvXFIz.cjs +0 -2
- package/dist/zoom-ChcvXFIz.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WaterfallChart.js","sources":["../src/Components/Graphs/WaterfallChart/Graph.tsx","../src/Components/Graphs/WaterfallChart/index.tsx"],"sourcesContent":["import isEqual from 'fast-deep-equal';\r\nimport { scaleLinear, scaleBand } from 'd3-scale';\r\nimport { useMemo, useRef, useState } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n ReferenceDataType,\r\n StyleObject,\r\n WaterfallChartDataType,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { RefLineY } from '@/Components/Elements/ReferenceLine';\r\nimport { YTicksAndGridLines } from '@/Components/Elements/Axes/YTicksAndGridLines';\r\nimport { XAxesLabels } from '@/Components/Elements/Axes/XAxesLabels';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\nimport { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\n\r\ninterface Props {\r\n data: WaterfallChartDataType[];\r\n barColor: string[];\r\n colorDomain: string[];\r\n suffix: string;\r\n prefix: string;\r\n barPadding: number;\r\n showValues: boolean;\r\n showTicks: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n showLabels: boolean;\r\n truncateBy: number;\r\n width: number;\r\n height: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n refValues?: ReferenceDataType[];\r\n selectedColor?: string;\r\n maxValue?: number;\r\n minValue?: number;\r\n highlightedDataPoints: (string | number)[];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n labelOrder?: string[];\r\n rtl: boolean;\r\n maxBarThickness?: number;\r\n minBarThickness?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n barAxisTitle?: string;\r\n noOfTicks: number;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n dimmedOpacity: number;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n naLabel: string;\r\n}\r\nfunction getWaterfallExtent(values: (number | null | undefined)[]) {\r\n let cumulative = 0;\r\n let max = 0;\r\n let min = 0;\r\n\r\n for (const v of values) {\r\n cumulative += v || 0;\r\n if (cumulative > max) max = cumulative;\r\n if (cumulative < min) min = cumulative;\r\n }\r\n\r\n return {\r\n max,\r\n min,\r\n };\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n data,\r\n width,\r\n height,\r\n barColor,\r\n suffix,\r\n prefix,\r\n barPadding,\r\n showLabels,\r\n showValues,\r\n showTicks,\r\n colorDomain,\r\n truncateBy,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n selectedColor,\r\n maxValue,\r\n minValue,\r\n highlightedDataPoints,\r\n onSeriesMouseClick,\r\n labelOrder,\r\n maxBarThickness,\r\n minBarThickness,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n dimmedOpacity,\r\n animate,\r\n precision,\r\n customLayers,\r\n naLabel,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: barAxisTitle ? leftMargin + 30 : leftMargin,\r\n right: rightMargin,\r\n };\r\n\r\n const { max, min } = getWaterfallExtent(data.map(d => d.size));\r\n\r\n const maxVal = !checkIfNullOrUndefined(maxValue) ? (maxValue as number) : max;\r\n const minVal = !checkIfNullOrUndefined(minValue) ? (minValue as number) : min;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n const dataWithId = useMemo(() => {\r\n const idSet = new Set<string>();\r\n\r\n const dataWithIdWithoutMissingIds = data.map((d, i) => {\r\n const id = labelOrder ? `${d.label}` : `${i}`;\r\n idSet.add(id);\r\n return { ...d, id };\r\n });\r\n\r\n const missingIds = labelOrder ? labelOrder.filter(id => !idSet.has(id)) : [];\r\n\r\n return [\r\n ...dataWithIdWithoutMissingIds,\r\n ...missingIds.map(id => ({\r\n id,\r\n label: id,\r\n color: null,\r\n size: null,\r\n })),\r\n ];\r\n }, [data, labelOrder]);\r\n\r\n const barOrder = useMemo(() => {\r\n return labelOrder ?? dataWithId.map(d => `${d.id}`);\r\n }, [labelOrder, dataWithId]);\r\n\r\n const y = scaleLinear().domain([minVal, maxVal]).range([graphHeight, 0]).nice();\r\n\r\n const x = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n minBarThickness\r\n ? Math.max(graphWidth, minBarThickness * barOrder.length)\r\n : maxBarThickness\r\n ? Math.min(graphWidth, maxBarThickness * barOrder.length)\r\n : graphWidth,\r\n ])\r\n .paddingInner(barPadding);\r\n const yTicks = y.ticks(noOfTicks);\r\n let running = 0;\r\n\r\n const waterfallData = dataWithId.map(d => {\r\n const start = running;\r\n running += d.size || 0;\r\n return {\r\n ...d,\r\n start,\r\n end: running,\r\n };\r\n });\r\n return (\r\n <>\r\n <motion.svg\r\n ref={svgRef}\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <Axis\r\n y1={y(minVal < 0 ? 0 : minVal)}\r\n y2={y(minVal < 0 ? 0 : minVal)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n label={numberFormattingFunction(\r\n minVal < 0 ? 0 : minVal,\r\n naLabel,\r\n precision,\r\n prefix,\r\n suffix,\r\n )}\r\n labelPos={{\r\n x: 0 - leftMargin,\r\n dx: 0,\r\n dy: maxVal < 0 ? '1em' : -5,\r\n y: y(minVal < 0 ? 0 : minVal),\r\n }}\r\n classNames={{\r\n axis: classNames?.xAxis?.axis,\r\n label: classNames?.yAxis?.labels,\r\n }}\r\n styles={{ axis: styles?.xAxis?.axis, label: styles?.yAxis?.labels }}\r\n />\r\n {showTicks ? (\r\n <YTicksAndGridLines\r\n values={yTicks.filter(d => d !== 0)}\r\n y={yTicks.filter(d => d !== 0).map(d => y(d))}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n styles={{\r\n gridLines: styles?.yAxis?.gridLines,\r\n labels: styles?.yAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.yAxis?.gridLines,\r\n labels: classNames?.yAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n labelPos='vertical'\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={0 - leftMargin - 15}\r\n y={graphHeight / 2}\r\n style={styles?.yAxis?.title}\r\n className={classNames?.yAxis?.title}\r\n text={barAxisTitle}\r\n rotate90\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {waterfallData.map((d, _i) =>\r\n !checkIfNullOrUndefined(x(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n variants={{\r\n initial: {\r\n opacity: selectedColor\r\n ? d.color\r\n ? barColor[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints.length !== 0\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85,\r\n },\r\n whileInView: {\r\n opacity: selectedColor\r\n ? d.color\r\n ? barColor[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints.length !== 0\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d)) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n {d.size ? (\r\n <motion.rect\r\n width={x.bandwidth()}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n variants={{\r\n initial: {\r\n height: 0,\r\n x: x(`${d.id}`),\r\n y: y(d.start),\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? barColor[0]\r\n : !d.color\r\n ? Colors.gray\r\n : barColor[colorDomain.indexOf(d.color)],\r\n },\r\n whileInView: {\r\n height: Math.abs(y(d.start) - y(d.end)),\r\n y: y(Math.max(d.start, d.end)),\r\n x: x(`${d.id}`),\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? barColor[0]\r\n : !d.color\r\n ? Colors.gray\r\n : barColor[colorDomain.indexOf(d.color)],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n height: 0,\r\n y: y(d.start),\r\n transition: { duration: animate.duration },\r\n }}\r\n />\r\n ) : null}\r\n {showLabels ? (\r\n <XAxesLabels\r\n value={\r\n `${d.label}`.length < truncateBy\r\n ? `${d.label}`\r\n : `${`${d.label}`.substring(0, truncateBy)}...`\r\n }\r\n y={y(0) + 5}\r\n x={x(`${d.id}`) as number}\r\n width={x.bandwidth()}\r\n height={margin.bottom}\r\n style={styles?.xAxis?.labels}\r\n className={classNames?.xAxis?.labels}\r\n alignment='top'\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues && Math.abs(y(d.start) - y(d.end)) > 16 ? (\r\n <motion.text\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dy='0.33em'\r\n variants={{\r\n initial: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: (y(d.start) + y(d.end)) / 2,\r\n opacity: 0,\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? getTextColorBasedOnBgColor(barColor[0])\r\n : !d.color\r\n ? getTextColorBasedOnBgColor(Colors.gray)\r\n : getTextColorBasedOnBgColor(\r\n barColor[colorDomain.indexOf(d.color)],\r\n ),\r\n },\r\n whileInView: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: (y(d.start) + y(d.end)) / 2,\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? getTextColorBasedOnBgColor(barColor[0])\r\n : !d.color\r\n ? getTextColorBasedOnBgColor(Colors.gray)\r\n : getTextColorBasedOnBgColor(\r\n barColor[colorDomain.indexOf(d.color)],\r\n ),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.size ? Math.abs(d.size) : d.size,\r\n naLabel,\r\n precision,\r\n prefix,\r\n suffix,\r\n )}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ) : null,\r\n )}\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineY\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n y={y(el.value as number)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n classNames={el.classNames}\r\n styles={el.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </>\r\n ) : null}\r\n </AnimatePresence>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <DetailsModal\r\n body={detailsOnClick}\r\n data={mouseClickData}\r\n setData={setMouseClickData}\r\n className={classNames?.modal}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { GraphContainer, GraphArea } from '@/Components/Elements/GraphContainer';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport {\r\n ReferenceDataType,\r\n SourcesDataType,\r\n Languages,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n WaterfallChartDataType,\r\n} from '@/Types';\r\nimport { checkIfNullOrUndefined } from '@/Utils';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: WaterfallChartDataType[];\r\n\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Color or array of colors for bars */\r\n colors?: string | string[];\r\n /** Domain of colors for the graph */\r\n colorDomain?: string[];\r\n /** Title for the color legend */\r\n colorLegendTitle?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n /** Padding between bars */\r\n barPadding?: number;\r\n /** Maximum thickness of bars */\r\n maxBarThickness?: number;\r\n /** Minimum thickness of bars */\r\n minBarThickness?: number;\r\n /** Maximum number of bars shown in the graph */\r\n maxNumberOfBars?: number;\r\n\r\n // Values and Ticks\r\n /** Prefix for values */\r\n prefix?: string;\r\n /** Suffix for values */\r\n suffix?: string;\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n /** Reference values for comparison */\r\n refValues?: ReferenceDataType[];\r\n /** Number of ticks on the axis */\r\n noOfTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Custom order for labels */\r\n labelOrder?: string[];\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Toggle visibility of axis ticks */\r\n showTicks?: boolean;\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Toggle visibility of NA color in the color scale. This is only applicable if the data props hae color parameter and showColorScale prop is true */\r\n showNAColor?: boolean;\r\n /** Data points to highlight. Use the label value from data to highlight the data point */\r\n highlightedDataPoints?: (string | number)[];\r\n /** Defines the opacity of the non-highlighted data */\r\n dimmedOpacity?: number;\r\n /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Toggles if data point which are undefined or has value null are filtered out. */\r\n filterNA?: boolean;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function WaterfallChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n graphDescription,\r\n barPadding = 0.25,\r\n showValues = true,\r\n showTicks = true,\r\n truncateBy = 999,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n highlightedDataPoints = [],\r\n padding,\r\n backgroundColor = false,\r\n topMargin,\r\n bottomMargin,\r\n leftMargin,\r\n rightMargin,\r\n showLabels = true,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n showColorScale = true,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n labelOrder,\r\n language = 'en',\r\n showNAColor = true,\r\n minHeight = 0,\r\n theme = 'light',\r\n maxBarThickness,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n ariaLabel,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n styles,\r\n classNames,\r\n filterNA = true,\r\n animate = false,\r\n dimmedOpacity = 0.3,\r\n precision = 2,\r\n customLayers = [],\r\n naLabel = 'NA',\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [selectedColor, setSelectedColor] = useState<string | undefined>(undefined);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(entries[0].target.clientWidth || 620);\r\n setSvgHeight(entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n return (\r\n <GraphContainer\r\n className={classNames?.graphContainer}\r\n style={styles?.graphContainer}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={ariaLabel}\r\n backgroundColor={backgroundColor}\r\n theme={theme}\r\n language={language}\r\n minHeight={minHeight}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n padding={padding}\r\n >\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n graphDownload={graphDownload ? graphParentDiv : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n {showColorScale && data.filter(el => el.color).length !== 0 && data.length > 0 ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorLegendTitle={colorLegendTitle}\r\n colors={(colors as string[] | undefined) || Colors[theme].categoricalColors.colors}\r\n colorDomain={colorDomain || (uniqBy(data, 'color', true) as (string | number)[])}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={showNAColor}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)).length === 0 && (\r\n <EmptyState />\r\n )}\r\n {svgWidth &&\r\n svgHeight &&\r\n data.filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)).length > 0 ? (\r\n <Graph\r\n data={data\r\n .filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d))\r\n .filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))}\r\n barColor={\r\n data.filter(el => el.color).length === 0\r\n ? colors\r\n ? [colors as string]\r\n : [Colors.primaryColors['blue-600']]\r\n : (colors as string[] | undefined) || Colors[theme].categoricalColors.colors\r\n }\r\n colorDomain={\r\n data.filter(el => el.color).length === 0\r\n ? []\r\n : colorDomain || (uniqBy(data, 'color', true) as string[])\r\n }\r\n selectedColor={selectedColor}\r\n width={svgWidth}\r\n height={svgHeight}\r\n suffix={suffix}\r\n prefix={prefix}\r\n barPadding={barPadding}\r\n showValues={showValues}\r\n showTicks={showTicks}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n truncateBy={truncateBy}\r\n showLabels={showLabels}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n refValues={refValues}\r\n maxValue={maxValue}\r\n minValue={minValue}\r\n highlightedDataPoints={highlightedDataPoints}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n labelOrder={labelOrder}\r\n rtl={language === 'he' || language === 'ar'}\r\n maxBarThickness={maxBarThickness}\r\n minBarThickness={minBarThickness}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n classNames={classNames}\r\n styles={styles}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["getWaterfallExtent","values","cumulative","max","min","v","Graph","props","$","_c","leftMargin","t0","rightMargin","t1","topMargin","t2","bottomMargin","t3","data","width","height","barColor","suffix","prefix","barPadding","showLabels","showValues","showTicks","colorDomain","truncateBy","tooltip","onSeriesMouseOver","refValues","selectedColor","maxValue","minValue","highlightedDataPoints","onSeriesMouseClick","labelOrder","maxBarThickness","minBarThickness","detailsOnClick","barAxisTitle","noOfTicks","styles","classNames","dimmedOpacity","animate","precision","customLayers","naLabel","undefined","svgRef","useRef","t4","amount","once","isInView","useInView","t5","t6","top","bottom","left","right","margin","map","_temp","maxVal","checkIfNullOrUndefined","minVal","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","graphWidth","graphHeight","t7","idSet","Set","dataWithIdWithoutMissingIds","d_0","i","id","d","label","add","missingIds","filter","id_0","has","_temp2","dataWithId","t8","_temp3","barOrder","y","scaleLinear","domain","range","nice","x","scaleBand","Math","length","paddingInner","yTicks","ticks","running","waterfallData","d_2","start","size","end","t9","xAxis","axis","t10","yAxis","labels","t11","t12","t13","t14","t15","t16","t17","title","t18","t19","AxisTitle","t20","_temp6","_temp7","T0","AnimatePresence","t21","d_8","_i","jsxs","motion","initial","opacity","color","indexOf","whileInView","transition","duration","event","clientY","clientX","isEqual","event_0","jsx","bandwidth","fill","_temp8","Colors","gray","abs","_temp9","XAxesLabels","substring","textAnchor","graphObjectValues","cn","_temp0","getTextColorBasedOnBgColor","_temp1","numberFormattingFunction","t22","Fragment","el_3","i_0","RefLineY","el","text","value","t23","t24","_temp10","_temp11","t25","Tooltip","t26","modal","DetailsModal","Axis","dx","dy","YTicksAndGridLines","_temp4","_temp5","d_5","gridLines","d_10","layer","d_9","position","el_2","el_1","el_0","d_7","d_6","d_4","d_3","d_1","id_1","WaterfallChart","graphTitle","colors","sources","graphDescription","footNote","colorLegendTitle","padding","backgroundColor","relativeHeight","showColorScale","graphID","graphDownload","dataDownload","language","showNAColor","minHeight","theme","maxNumberOfBars","ariaLabel","filterNA","svgWidth","setSvgWidth","svgHeight","setSvgHeight","setSelectedColor","graphDiv","graphParentDiv","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","t27","graphContainer","t28","t29","description","GraphHeader","t30","colorLegend","ColorLegendWithMouseOver","categoricalColors","uniqBy","t31","EmptyState","t32","_d","primaryColors","t33","GraphArea","t34","footnote","source","GraphFooter","t35","GraphContainer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WaterfallChart.js","sources":["../src/Components/Graphs/WaterfallChart/Graph.tsx","../src/Components/Graphs/WaterfallChart/index.tsx"],"sourcesContent":["import isEqual from 'fast-deep-equal';\r\nimport { scaleLinear, scaleBand } from 'd3-scale';\r\nimport { useMemo, useRef, useState } from 'react';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n ReferenceDataType,\r\n StyleObject,\r\n WaterfallChartDataType,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { AxisTitle } from '@/Components/Elements/Axes/AxisTitle';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { RefLineY } from '@/Components/Elements/ReferenceLine';\r\nimport { YTicksAndGridLines } from '@/Components/Elements/Axes/YTicksAndGridLines';\r\nimport { XAxesLabels } from '@/Components/Elements/Axes/XAxesLabels';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\nimport { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\n\r\ninterface Props {\r\n data: WaterfallChartDataType[];\r\n barColor: string[];\r\n colorDomain: string[];\r\n suffix: string;\r\n prefix: string;\r\n barPadding: number;\r\n showValues: boolean;\r\n showTicks: boolean;\r\n leftMargin?: number;\r\n rightMargin?: number;\r\n topMargin?: number;\r\n bottomMargin?: number;\r\n showLabels: boolean;\r\n truncateBy: number;\r\n width: number;\r\n height: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n refValues?: ReferenceDataType[];\r\n selectedColor?: string;\r\n maxValue?: number;\r\n minValue?: number;\r\n highlightedDataPoints: (string | number)[];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n labelOrder?: string[];\r\n rtl: boolean;\r\n maxBarThickness?: number;\r\n minBarThickness?: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n barAxisTitle?: string;\r\n noOfTicks: number;\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n animate: AnimateDataType;\r\n dimmedOpacity: number;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n naLabel: string;\r\n hideAxisLine: boolean;\r\n}\r\nfunction getWaterfallExtent(values: (number | null | undefined)[]) {\r\n let cumulative = 0;\r\n let max = 0;\r\n let min = 0;\r\n\r\n for (const v of values) {\r\n cumulative += v || 0;\r\n if (cumulative > max) max = cumulative;\r\n if (cumulative < min) min = cumulative;\r\n }\r\n\r\n return {\r\n max,\r\n min,\r\n };\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 20,\r\n bottomMargin = 25,\r\n data,\r\n width,\r\n height,\r\n barColor,\r\n suffix,\r\n prefix,\r\n barPadding,\r\n showLabels,\r\n showValues,\r\n showTicks,\r\n colorDomain,\r\n truncateBy,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n selectedColor,\r\n maxValue,\r\n minValue,\r\n highlightedDataPoints,\r\n onSeriesMouseClick,\r\n labelOrder,\r\n maxBarThickness,\r\n minBarThickness,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks,\r\n styles,\r\n classNames,\r\n dimmedOpacity,\r\n animate,\r\n precision,\r\n customLayers,\r\n naLabel,\r\n hideAxisLine,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: barAxisTitle ? leftMargin + 30 : leftMargin,\r\n right: rightMargin,\r\n };\r\n\r\n const { max, min } = getWaterfallExtent(data.map(d => d.size));\r\n\r\n const maxVal = !checkIfNullOrUndefined(maxValue) ? (maxValue as number) : max;\r\n const minVal = !checkIfNullOrUndefined(minValue) ? (minValue as number) : min;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n const dataWithId = useMemo(() => {\r\n const idSet = new Set<string>();\r\n\r\n const dataWithIdWithoutMissingIds = data.map((d, i) => {\r\n const id = labelOrder ? `${d.label}` : `${i}`;\r\n idSet.add(id);\r\n return { ...d, id };\r\n });\r\n\r\n const missingIds = labelOrder ? labelOrder.filter(id => !idSet.has(id)) : [];\r\n\r\n return [\r\n ...dataWithIdWithoutMissingIds,\r\n ...missingIds.map(id => ({\r\n id,\r\n label: id,\r\n color: null,\r\n size: null,\r\n })),\r\n ];\r\n }, [data, labelOrder]);\r\n\r\n const barOrder = useMemo(() => {\r\n return labelOrder ?? dataWithId.map(d => `${d.id}`);\r\n }, [labelOrder, dataWithId]);\r\n\r\n const y = scaleLinear().domain([minVal, maxVal]).range([graphHeight, 0]).nice();\r\n\r\n const x = scaleBand()\r\n .domain(barOrder)\r\n .range([\r\n 0,\r\n minBarThickness\r\n ? Math.max(graphWidth, minBarThickness * barOrder.length)\r\n : maxBarThickness\r\n ? Math.min(graphWidth, maxBarThickness * barOrder.length)\r\n : graphWidth,\r\n ])\r\n .paddingInner(barPadding);\r\n const yTicks = y.ticks(noOfTicks);\r\n let running = 0;\r\n\r\n const waterfallData = dataWithId.map(d => {\r\n const start = running;\r\n running += d.size || 0;\r\n return {\r\n ...d,\r\n start,\r\n end: running,\r\n };\r\n });\r\n return (\r\n <>\r\n <motion.svg\r\n ref={svgRef}\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n <Axis\r\n y1={y(minVal < 0 ? 0 : minVal)}\r\n y2={y(minVal < 0 ? 0 : minVal)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n hideAxisLine={hideAxisLine}\r\n label={\r\n showTicks\r\n ? numberFormattingFunction(\r\n minVal < 0 ? 0 : minVal,\r\n naLabel,\r\n precision,\r\n prefix,\r\n suffix,\r\n )\r\n : undefined\r\n }\r\n labelPos={{\r\n x: 0 - leftMargin,\r\n dx: 0,\r\n dy: maxVal < 0 ? '1em' : -5,\r\n y: y(minVal < 0 ? 0 : minVal),\r\n }}\r\n classNames={{\r\n axis: classNames?.xAxis?.axis,\r\n label: classNames?.yAxis?.labels,\r\n }}\r\n styles={{ axis: styles?.xAxis?.axis, label: styles?.yAxis?.labels }}\r\n />\r\n {showTicks ? (\r\n <YTicksAndGridLines\r\n values={yTicks.filter(d => d !== 0)}\r\n y={yTicks.filter(d => d !== 0).map(d => y(d))}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n styles={{\r\n gridLines: styles?.yAxis?.gridLines,\r\n labels: styles?.yAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.yAxis?.gridLines,\r\n labels: classNames?.yAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n labelPos='vertical'\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AxisTitle\r\n x={0 - leftMargin - 15}\r\n y={graphHeight / 2}\r\n style={styles?.yAxis?.title}\r\n className={classNames?.yAxis?.title}\r\n text={barAxisTitle}\r\n rotate90\r\n />\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <AnimatePresence>\r\n {waterfallData.map((d, _i) =>\r\n !checkIfNullOrUndefined(x(d.id)) ? (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n variants={{\r\n initial: {\r\n opacity: selectedColor\r\n ? d.color\r\n ? barColor[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints.length !== 0\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85,\r\n },\r\n whileInView: {\r\n opacity: selectedColor\r\n ? d.color\r\n ? barColor[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints.length !== 0\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d)) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n {d.size ? (\r\n <motion.rect\r\n width={x.bandwidth()}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n variants={{\r\n initial: {\r\n height: 0,\r\n x: x(`${d.id}`),\r\n y: y(d.start),\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? barColor[0]\r\n : !d.color\r\n ? Colors.gray\r\n : barColor[colorDomain.indexOf(d.color)],\r\n },\r\n whileInView: {\r\n height: Math.abs(y(d.start) - y(d.end)),\r\n y: y(Math.max(d.start, d.end)),\r\n x: x(`${d.id}`),\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? barColor[0]\r\n : !d.color\r\n ? Colors.gray\r\n : barColor[colorDomain.indexOf(d.color)],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n exit={{\r\n height: 0,\r\n y: y(d.start),\r\n transition: { duration: animate.duration },\r\n }}\r\n />\r\n ) : null}\r\n {showLabels ? (\r\n <XAxesLabels\r\n value={\r\n `${d.label}`.length < truncateBy\r\n ? `${d.label}`\r\n : `${`${d.label}`.substring(0, truncateBy)}...`\r\n }\r\n y={y(0) + 5}\r\n x={x(`${d.id}`) as number}\r\n width={x.bandwidth()}\r\n height={margin.bottom}\r\n style={styles?.xAxis?.labels}\r\n className={classNames?.xAxis?.labels}\r\n alignment='top'\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ) : null}\r\n {showValues && Math.abs(y(d.start) - y(d.end)) > 16 ? (\r\n <motion.text\r\n style={{\r\n textAnchor: 'middle',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dy='0.33em'\r\n variants={{\r\n initial: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: (y(d.start) + y(d.end)) / 2,\r\n opacity: 0,\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? getTextColorBasedOnBgColor(barColor[0])\r\n : !d.color\r\n ? getTextColorBasedOnBgColor(Colors.gray)\r\n : getTextColorBasedOnBgColor(\r\n barColor[colorDomain.indexOf(d.color)],\r\n ),\r\n },\r\n whileInView: {\r\n x: (x(`${d.id}`) as number) + x.bandwidth() / 2,\r\n y: (y(d.start) + y(d.end)) / 2,\r\n fill:\r\n data.filter(el => el.color).length === 0\r\n ? getTextColorBasedOnBgColor(barColor[0])\r\n : !d.color\r\n ? getTextColorBasedOnBgColor(Colors.gray)\r\n : getTextColorBasedOnBgColor(\r\n barColor[colorDomain.indexOf(d.color)],\r\n ),\r\n opacity: 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.size ? Math.abs(d.size) : d.size,\r\n naLabel,\r\n precision,\r\n prefix,\r\n suffix,\r\n )}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n ) : null,\r\n )}\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineY\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n y={y(el.value as number)}\r\n x1={0 - leftMargin}\r\n x2={graphWidth + margin.right}\r\n classNames={el.classNames}\r\n styles={el.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </>\r\n ) : null}\r\n </AnimatePresence>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <DetailsModal\r\n body={detailsOnClick}\r\n data={mouseClickData}\r\n setData={setMouseClickData}\r\n className={classNames?.modal}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { GraphContainer, GraphArea } from '@/Components/Elements/GraphContainer';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport {\r\n ReferenceDataType,\r\n SourcesDataType,\r\n Languages,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n WaterfallChartDataType,\r\n} from '@/Types';\r\nimport { checkIfNullOrUndefined } from '@/Utils';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: WaterfallChartDataType[];\r\n\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Color or array of colors for bars */\r\n colors?: string | string[];\r\n /** Domain of colors for the graph */\r\n colorDomain?: string[];\r\n /** Title for the color legend */\r\n colorLegendTitle?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n /** Padding between bars */\r\n barPadding?: number;\r\n /** Maximum thickness of bars */\r\n maxBarThickness?: number;\r\n /** Minimum thickness of bars */\r\n minBarThickness?: number;\r\n /** Maximum number of bars shown in the graph */\r\n maxNumberOfBars?: number;\r\n\r\n // Values and Ticks\r\n /** Prefix for values */\r\n prefix?: string;\r\n /** Suffix for values */\r\n suffix?: string;\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n /** Reference values for comparison */\r\n refValues?: ReferenceDataType[];\r\n /** Number of ticks on the axis */\r\n noOfTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Custom order for labels */\r\n labelOrder?: string[];\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Toggle visibility of axis ticks */\r\n showTicks?: boolean;\r\n /** Toggle visibility of axis line for the main axis */\r\n hideAxisLine?: boolean;\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Toggle visibility of NA color in the color scale. This is only applicable if the data props hae color parameter and showColorScale prop is true */\r\n showNAColor?: boolean;\r\n /** Data points to highlight. Use the label value from data to highlight the data point */\r\n highlightedDataPoints?: (string | number)[];\r\n /** Defines the opacity of the non-highlighted data */\r\n dimmedOpacity?: number;\r\n /** Title for the bar axis */\r\n barAxisTitle?: string;\r\n /** Toggles if data point which are undefined or has value null are filtered out. */\r\n filterNA?: boolean;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function WaterfallChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n graphDescription,\r\n barPadding = 0.25,\r\n showValues = true,\r\n showTicks = true,\r\n truncateBy = 999,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n highlightedDataPoints = [],\r\n padding,\r\n backgroundColor = false,\r\n topMargin,\r\n bottomMargin,\r\n leftMargin,\r\n rightMargin,\r\n showLabels = true,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n refValues,\r\n showColorScale = true,\r\n graphID,\r\n maxValue,\r\n minValue,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n labelOrder,\r\n language = 'en',\r\n showNAColor = true,\r\n minHeight = 0,\r\n theme = 'light',\r\n maxBarThickness,\r\n maxNumberOfBars,\r\n minBarThickness,\r\n ariaLabel,\r\n detailsOnClick,\r\n barAxisTitle,\r\n noOfTicks = 5,\r\n styles,\r\n classNames,\r\n filterNA = true,\r\n animate = false,\r\n dimmedOpacity = 0.3,\r\n precision = 2,\r\n customLayers = [],\r\n naLabel = 'NA',\r\n hideAxisLine = false,\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [selectedColor, setSelectedColor] = useState<string | undefined>(undefined);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(entries[0].target.clientWidth || 620);\r\n setSvgHeight(entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n return (\r\n <GraphContainer\r\n className={classNames?.graphContainer}\r\n style={styles?.graphContainer}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={ariaLabel}\r\n backgroundColor={backgroundColor}\r\n theme={theme}\r\n language={language}\r\n minHeight={minHeight}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n padding={padding}\r\n >\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n graphDownload={graphDownload ? graphParentDiv : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n {showColorScale && data.filter(el => el.color).length !== 0 && data.length > 0 ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorLegendTitle={colorLegendTitle}\r\n colors={(colors as string[] | undefined) || Colors[theme].categoricalColors.colors}\r\n colorDomain={colorDomain || (uniqBy(data, 'color', true) as (string | number)[])}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={showNAColor}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)).length === 0 && (\r\n <EmptyState />\r\n )}\r\n {svgWidth &&\r\n svgHeight &&\r\n data.filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d)).length > 0 ? (\r\n <Graph\r\n hideAxisLine={hideAxisLine}\r\n data={data\r\n .filter(d => (filterNA ? !checkIfNullOrUndefined(d.size) : d))\r\n .filter((_d, i) => (maxNumberOfBars ? i < maxNumberOfBars : true))}\r\n barColor={\r\n data.filter(el => el.color).length === 0\r\n ? colors\r\n ? [colors as string]\r\n : [Colors.primaryColors['blue-600']]\r\n : (colors as string[] | undefined) || Colors[theme].categoricalColors.colors\r\n }\r\n colorDomain={\r\n data.filter(el => el.color).length === 0\r\n ? []\r\n : colorDomain || (uniqBy(data, 'color', true) as string[])\r\n }\r\n selectedColor={selectedColor}\r\n width={svgWidth}\r\n height={svgHeight}\r\n suffix={suffix}\r\n prefix={prefix}\r\n barPadding={barPadding}\r\n showValues={showValues}\r\n showTicks={showTicks}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n truncateBy={truncateBy}\r\n showLabels={showLabels}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n refValues={refValues}\r\n maxValue={maxValue}\r\n minValue={minValue}\r\n highlightedDataPoints={highlightedDataPoints}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n labelOrder={labelOrder}\r\n rtl={language === 'he' || language === 'ar'}\r\n maxBarThickness={maxBarThickness}\r\n minBarThickness={minBarThickness}\r\n detailsOnClick={detailsOnClick}\r\n barAxisTitle={barAxisTitle}\r\n noOfTicks={noOfTicks}\r\n classNames={classNames}\r\n styles={styles}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["getWaterfallExtent","values","cumulative","max","min","v","Graph","props","$","_c","leftMargin","t0","rightMargin","t1","topMargin","t2","bottomMargin","t3","data","width","height","barColor","suffix","prefix","barPadding","showLabels","showValues","showTicks","colorDomain","truncateBy","tooltip","onSeriesMouseOver","refValues","selectedColor","maxValue","minValue","highlightedDataPoints","onSeriesMouseClick","labelOrder","maxBarThickness","minBarThickness","detailsOnClick","barAxisTitle","noOfTicks","styles","classNames","dimmedOpacity","animate","precision","customLayers","naLabel","hideAxisLine","undefined","svgRef","useRef","t4","amount","once","isInView","useInView","t5","t6","top","bottom","left","right","margin","map","_temp","maxVal","checkIfNullOrUndefined","minVal","mouseOverData","setMouseOverData","useState","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","graphWidth","graphHeight","t7","idSet","Set","dataWithIdWithoutMissingIds","d_0","i","id","d","label","add","missingIds","filter","id_0","has","_temp2","dataWithId","t8","_temp3","barOrder","y","scaleLinear","domain","range","nice","x","scaleBand","Math","length","paddingInner","yTicks","ticks","running","waterfallData","d_2","start","size","end","t9","xAxis","axis","t10","yAxis","labels","t11","t12","t13","t14","t15","t16","t17","title","t18","t19","AxisTitle","t20","_temp6","_temp7","T0","AnimatePresence","t21","d_8","_i","jsxs","motion","initial","opacity","color","indexOf","whileInView","transition","duration","event","clientY","clientX","isEqual","event_0","jsx","bandwidth","fill","_temp8","Colors","gray","abs","_temp9","XAxesLabels","substring","textAnchor","graphObjectValues","cn","_temp0","getTextColorBasedOnBgColor","_temp1","numberFormattingFunction","t22","Fragment","el_3","i_0","RefLineY","el","text","value","t23","t24","_temp10","_temp11","t25","Tooltip","t26","modal","DetailsModal","Axis","dx","dy","YTicksAndGridLines","_temp4","_temp5","d_5","gridLines","d_10","layer","d_9","position","el_2","el_1","el_0","d_7","d_6","d_4","d_3","d_1","id_1","WaterfallChart","graphTitle","colors","sources","graphDescription","footNote","colorLegendTitle","padding","backgroundColor","relativeHeight","showColorScale","graphID","graphDownload","dataDownload","language","showNAColor","minHeight","theme","maxNumberOfBars","ariaLabel","filterNA","svgWidth","setSvgWidth","svgHeight","setSvgHeight","setSelectedColor","graphDiv","graphParentDiv","t27","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","t28","graphContainer","t29","t30","description","GraphHeader","t31","colorLegend","ColorLegendWithMouseOver","categoricalColors","uniqBy","t32","EmptyState","t33","_d","primaryColors","t34","GraphArea","t35","footnote","source","GraphFooter","t36","GraphContainer"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const Qe=require("./index-C5K--w8d.cjs"),Xt=require("./timer-CKyBCVzT.cjs"),b=require("./string-C-kRh1bQ.cjs"),U=require("./select-Bnfk0lJx.cjs"),vt=require("./pointer-Dkq5NV1q.cjs");class gt{constructor(){this._partials=new Float64Array(32),this._n=0}add(n){const e=this._partials;let i=0;for(let r=0;r<this._n&&r<32;r++){const u=e[r],o=n+u,l=Math.abs(n)<Math.abs(u)?n-(o-u):u-(o-n);l&&(e[i++]=l),n=o}return e[i]=n,this._n=i+1,this}valueOf(){const n=this._partials;let e=this._n,i,r,u,o=0;if(e>0){for(o=n[--e];e>0&&(i=o,r=n[--e],o=i+r,u=r-(o-i),!u););e>0&&(u<0&&n[e-1]<0||u>0&&n[e-1]>0)&&(r=u*2,i=o+r,r==i-o&&(o=i))}return o}}function*be(t){for(const n of t)yield*n}function ge(t){return Array.from(be(t))}var Yn=180/Math.PI,hn={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function de(t,n,e,i,r,u){var o,l,p;return(o=Math.sqrt(t*t+n*n))&&(t/=o,n/=o),(p=t*e+n*i)&&(e-=t*p,i-=n*p),(l=Math.sqrt(e*e+i*i))&&(e/=l,i/=l,p/=l),t*i<n*e&&(t=-t,n=-n,p=-p,o=-o),{translateX:r,translateY:u,rotate:Math.atan2(n,t)*Yn,skewX:Math.atan(p)*Yn,scaleX:o,scaleY:l}}var $t;function je(t){const n=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?hn:de(n.a,n.b,n.c,n.d,n.e,n.f)}function ti(t){return t==null||($t||($t=document.createElementNS("http://www.w3.org/2000/svg","g")),$t.setAttribute("transform",t),!(t=$t.transform.baseVal.consolidate()))?hn:(t=t.matrix,de(t.a,t.b,t.c,t.d,t.e,t.f))}function ye(t,n,e,i){function r(s){return s.length?s.pop()+" ":""}function u(s,a,f,c,h,y){if(s!==f||a!==c){var m=h.push("translate(",null,n,null,e);y.push({i:m-4,x:b.interpolateNumber(s,f)},{i:m-2,x:b.interpolateNumber(a,c)})}else(f||c)&&h.push("translate("+f+n+c+e)}function o(s,a,f,c){s!==a?(s-a>180?a+=360:a-s>180&&(s+=360),c.push({i:f.push(r(f)+"rotate(",null,i)-2,x:b.interpolateNumber(s,a)})):a&&f.push(r(f)+"rotate("+a+i)}function l(s,a,f,c){s!==a?c.push({i:f.push(r(f)+"skewX(",null,i)-2,x:b.interpolateNumber(s,a)}):a&&f.push(r(f)+"skewX("+a+i)}function p(s,a,f,c,h,y){if(s!==f||a!==c){var m=h.push(r(h)+"scale(",null,",",null,")");y.push({i:m-4,x:b.interpolateNumber(s,f)},{i:m-2,x:b.interpolateNumber(a,c)})}else(f!==1||c!==1)&&h.push(r(h)+"scale("+f+","+c+")")}return function(s,a){var f=[],c=[];return s=t(s),a=t(a),u(s.translateX,s.translateY,a.translateX,a.translateY,f,c),o(s.rotate,a.rotate,f,c),l(s.skewX,a.skewX,f,c),p(s.scaleX,s.scaleY,a.scaleX,a.scaleY,f,c),s=a=null,function(h){for(var y=-1,m=c.length,_;++y<m;)f[(_=c[y]).i]=_.x(h);return f.join("")}}}var ni=ye(je,"px, ","px)","deg)"),ei=ye(ti,", ",")",")"),ii=1e-12;function On(t){return((t=Math.exp(t))+1/t)/2}function ri(t){return((t=Math.exp(t))-1/t)/2}function oi(t){return((t=Math.exp(2*t))-1)/(t+1)}const ui=(function t(n,e,i){function r(u,o){var l=u[0],p=u[1],s=u[2],a=o[0],f=o[1],c=o[2],h=a-l,y=f-p,m=h*h+y*y,_,w;if(m<ii)w=Math.log(c/s)/n,_=function(I){return[l+I*h,p+I*y,s*Math.exp(n*I*w)]};else{var M=Math.sqrt(m),P=(c*c-s*s+i*m)/(2*s*e*M),S=(c*c-s*s-i*m)/(2*c*e*M),A=Math.log(Math.sqrt(P*P+1)-P),T=Math.log(Math.sqrt(S*S+1)-S);w=(T-A)/n,_=function(I){var F=I*w,X=On(A),q=s/(e*M)*(X*oi(n*F+A)-ri(A));return[l+q*h,p+q*y,s*X/On(n*F+A)]}}return _.duration=w*1e3*n/Math.SQRT2,_}return r.rho=function(u){var o=Math.max(.001,+u),l=o*o,p=l*l;return t(o,l,p)},r})(Math.SQRT2,2,4);function Vn(t,n,e){var i=new Xt.Timer;return n=n==null?0:+n,i.restart(r=>{i.stop(),t(r+n)},n,e),i}function ai(t,n={}){if(t.bbox!=null&&n.recompute!==!0)return t.bbox;const e=[1/0,1/0,-1/0,-1/0];return Qe.coordEach(t,i=>{e[0]>i[0]&&(e[0]=i[0]),e[1]>i[1]&&(e[1]=i[1]),e[2]<i[0]&&(e[2]=i[0]),e[3]<i[1]&&(e[3]=i[1])}),e}var li=ai,C=1e-6,me=1e-12,k=Math.PI,J=k/2,Bn=k/4,Q=k*2,K=180/k,B=k/180,Y=Math.abs,we=Math.atan,dt=Math.atan2,L=Math.cos,ci=Math.exp,si=Math.log,D=Math.sin,Ot=Math.sign||function(t){return t>0?1:t<0?-1:0},et=Math.sqrt,fi=Math.tan;function hi(t){return t>1?0:t<-1?k:Math.acos(t)}function it(t){return t>1?J:t<-1?-J:Math.asin(t)}function tt(){}function Zt(t,n){t&&Hn.hasOwnProperty(t.type)&&Hn[t.type](t,n)}var Un={Feature:function(t,n){Zt(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,i=-1,r=e.length;++i<r;)Zt(e[i].geometry,n)}},Hn={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,i=-1,r=e.length;++i<r;)t=e[i],n.point(t[0],t[1],t[2])},LineString:function(t,n){pn(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,i=-1,r=e.length;++i<r;)pn(e[i],n,0)},Polygon:function(t,n){Wn(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,i=-1,r=e.length;++i<r;)Wn(e[i],n)},GeometryCollection:function(t,n){for(var e=t.geometries,i=-1,r=e.length;++i<r;)Zt(e[i],n)}};function pn(t,n,e){var i=-1,r=t.length-e,u;for(n.lineStart();++i<r;)u=t[i],n.point(u[0],u[1],u[2]);n.lineEnd()}function Wn(t,n){var e=-1,i=t.length;for(n.polygonStart();++e<i;)pn(t[e],n,1);n.polygonEnd()}function mt(t,n){t&&Un.hasOwnProperty(t.type)?Un[t.type](t,n):Zt(t,n)}function vn(t){return[dt(t[1],t[0]),it(t[2])]}function _t(t){var n=t[0],e=t[1],i=L(e);return[i*L(n),i*D(n),D(e)]}function kt(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Kt(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function an(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function Dt(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function gn(t){var n=et(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function dn(t,n){function e(i,r){return i=t(i,r),n(i[0],i[1])}return t.invert&&n.invert&&(e.invert=function(i,r){return i=n.invert(i,r),i&&t.invert(i[0],i[1])}),e}function yn(t,n){return Y(t)>k&&(t-=Math.round(t/Q)*Q),[t,n]}yn.invert=yn;function _e(t,n,e){return(t%=Q)?n||e?dn(Kn(t),Jn(n,e)):Kn(t):n||e?Jn(n,e):yn}function Zn(t){return function(n,e){return n+=t,Y(n)>k&&(n-=Math.round(n/Q)*Q),[n,e]}}function Kn(t){var n=Zn(t);return n.invert=Zn(-t),n}function Jn(t,n){var e=L(t),i=D(t),r=L(n),u=D(n);function o(l,p){var s=L(p),a=L(l)*s,f=D(l)*s,c=D(p),h=c*e+a*i;return[dt(f*r-h*u,a*e-c*i),it(h*r+f*u)]}return o.invert=function(l,p){var s=L(p),a=L(l)*s,f=D(l)*s,c=D(p),h=c*r-f*u;return[dt(f*r+c*u,a*e+h*i),it(h*e-a*i)]},o}function pi(t){t=_e(t[0]*B,t[1]*B,t.length>2?t[2]*B:0);function n(e){return e=t(e[0]*B,e[1]*B),e[0]*=K,e[1]*=K,e}return n.invert=function(e){return e=t.invert(e[0]*B,e[1]*B),e[0]*=K,e[1]*=K,e},n}function vi(t,n,e,i,r,u){if(e){var o=L(n),l=D(n),p=i*e;r==null?(r=n+i*Q,u=n-p/2):(r=Qn(o,r),u=Qn(o,u),(i>0?r<u:r>u)&&(r+=i*Q));for(var s,a=r;i>0?a>u:a<u;a-=p)s=vn([o,-l*L(a),-l*D(a)]),t.point(s[0],s[1])}}function Qn(t,n){n=_t(n),n[0]-=t,gn(n);var e=hi(-n[1]);return((-n[2]<0?-e:e)+Q-C)%Q}function Ee(){var t=[],n;return{point:function(e,i,r){n.push([e,i,r])},lineStart:function(){t.push(n=[])},lineEnd:tt,rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))},result:function(){var e=t;return t=[],n=null,e}}}function Vt(t,n){return Y(t[0]-n[0])<C&&Y(t[1]-n[1])<C}function qt(t,n,e,i){this.x=t,this.z=n,this.o=e,this.e=i,this.v=!1,this.n=this.p=null}function Se(t,n,e,i,r){var u=[],o=[],l,p;if(t.forEach(function(y){if(!((m=y.length-1)<=0)){var m,_=y[0],w=y[m],M;if(Vt(_,w)){if(!_[2]&&!w[2]){for(r.lineStart(),l=0;l<m;++l)r.point((_=y[l])[0],_[1]);r.lineEnd();return}w[0]+=2*C}u.push(M=new qt(_,y,null,!0)),o.push(M.o=new qt(_,null,M,!1)),u.push(M=new qt(w,y,null,!1)),o.push(M.o=new qt(w,null,M,!0))}}),!!u.length){for(o.sort(n),bn(u),bn(o),l=0,p=o.length;l<p;++l)o[l].e=e=!e;for(var s=u[0],a,f;;){for(var c=s,h=!0;c.v;)if((c=c.n)===s)return;a=c.z,r.lineStart();do{if(c.v=c.o.v=!0,c.e){if(h)for(l=0,p=a.length;l<p;++l)r.point((f=a[l])[0],f[1]);else i(c.x,c.n.x,1,r);c=c.n}else{if(h)for(a=c.p.z,l=a.length-1;l>=0;--l)r.point((f=a[l])[0],f[1]);else i(c.x,c.p.x,-1,r);c=c.p}c=c.o,a=c.z,h=!h}while(!c.v);r.lineEnd()}}}function bn(t){if(n=t.length){for(var n,e=0,i=t[0],r;++e<n;)i.n=r=t[e],r.p=i,i=r;i.n=r=t[0],r.p=i}}function ln(t){return Y(t[0])<=k?t[0]:Ot(t[0])*((Y(t[0])+k)%Q-k)}function gi(t,n){var e=ln(n),i=n[1],r=D(i),u=[D(e),-L(e),0],o=0,l=0,p=new gt;r===1?i=J+C:r===-1&&(i=-J-C);for(var s=0,a=t.length;s<a;++s)if(c=(f=t[s]).length)for(var f,c,h=f[c-1],y=ln(h),m=h[1]/2+Bn,_=D(m),w=L(m),M=0;M<c;++M,y=S,_=T,w=I,h=P){var P=f[M],S=ln(P),A=P[1]/2+Bn,T=D(A),I=L(A),F=S-y,X=F>=0?1:-1,q=X*F,R=q>k,Z=_*T;if(p.add(dt(Z*X*D(q),w*I+Z*L(q))),o+=R?F+X*Q:F,R^y>=e^S>=e){var O=Kt(_t(h),_t(P));gn(O);var v=Kt(u,O);gn(v);var g=(R^F>=0?-1:1)*it(v[2]);(i>g||i===g&&(O[0]||O[1]))&&(l+=R^F>=0?1:-1)}}return(o<-C||o<C&&p<-me)^l&1}function Me(t,n,e,i){return function(r){var u=n(r),o=Ee(),l=n(o),p=!1,s,a,f,c={point:h,lineStart:m,lineEnd:_,polygonStart:function(){c.point=w,c.lineStart=M,c.lineEnd=P,a=[],s=[]},polygonEnd:function(){c.point=h,c.lineStart=m,c.lineEnd=_,a=ge(a);var S=gi(s,i);a.length?(p||(r.polygonStart(),p=!0),Se(a,yi,S,e,r)):S&&(p||(r.polygonStart(),p=!0),r.lineStart(),e(null,null,1,r),r.lineEnd()),p&&(r.polygonEnd(),p=!1),a=s=null},sphere:function(){r.polygonStart(),r.lineStart(),e(null,null,1,r),r.lineEnd(),r.polygonEnd()}};function h(S,A){t(S,A)&&r.point(S,A)}function y(S,A){u.point(S,A)}function m(){c.point=y,u.lineStart()}function _(){c.point=h,u.lineEnd()}function w(S,A){f.push([S,A]),l.point(S,A)}function M(){l.lineStart(),f=[]}function P(){w(f[0][0],f[0][1]),l.lineEnd();var S=l.clean(),A=o.result(),T,I=A.length,F,X,q;if(f.pop(),s.push(f),f=null,!!I){if(S&1){if(X=A[0],(F=X.length-1)>0){for(p||(r.polygonStart(),p=!0),r.lineStart(),T=0;T<F;++T)r.point((q=X[T])[0],q[1]);r.lineEnd()}return}I>1&&S&2&&A.push(A.pop().concat(A.shift())),a.push(A.filter(di))}}return c}}function di(t){return t.length>1}function yi(t,n){return((t=t.x)[0]<0?t[1]-J-C:J-t[1])-((n=n.x)[0]<0?n[1]-J-C:J-n[1])}const jn=Me(function(){return!0},mi,_i,[-k,-J]);function mi(t){var n=NaN,e=NaN,i=NaN,r;return{lineStart:function(){t.lineStart(),r=1},point:function(u,o){var l=u>0?k:-k,p=Y(u-n);Y(p-k)<C?(t.point(n,e=(e+o)/2>0?J:-J),t.point(i,e),t.lineEnd(),t.lineStart(),t.point(l,e),t.point(u,e),r=0):i!==l&&p>=k&&(Y(n-i)<C&&(n-=i*C),Y(u-l)<C&&(u-=l*C),e=wi(n,e,u,o),t.point(i,e),t.lineEnd(),t.lineStart(),t.point(l,e),r=0),t.point(n=u,e=o),i=l},lineEnd:function(){t.lineEnd(),n=e=NaN},clean:function(){return 2-r}}}function wi(t,n,e,i){var r,u,o=D(t-e);return Y(o)>C?we((D(n)*(u=L(i))*D(e)-D(i)*(r=L(n))*D(t))/(r*u*o)):(n+i)/2}function _i(t,n,e,i){var r;if(t==null)r=e*J,i.point(-k,r),i.point(0,r),i.point(k,r),i.point(k,0),i.point(k,-r),i.point(0,-r),i.point(-k,-r),i.point(-k,0),i.point(-k,r);else if(Y(t[0]-n[0])>C){var u=t[0]<n[0]?k:-k;r=e*u/2,i.point(-u,r),i.point(0,r),i.point(u,r)}else i.point(n[0],n[1])}function Ei(t){var n=L(t),e=2*B,i=n>0,r=Y(n)>C;function u(a,f,c,h){vi(h,t,e,c,a,f)}function o(a,f){return L(a)*L(f)>n}function l(a){var f,c,h,y,m;return{lineStart:function(){y=h=!1,m=1},point:function(_,w){var M=[_,w],P,S=o(_,w),A=i?S?0:s(_,w):S?s(_+(_<0?k:-k),w):0;if(!f&&(y=h=S)&&a.lineStart(),S!==h&&(P=p(f,M),(!P||Vt(f,P)||Vt(M,P))&&(M[2]=1)),S!==h)m=0,S?(a.lineStart(),P=p(M,f),a.point(P[0],P[1])):(P=p(f,M),a.point(P[0],P[1],2),a.lineEnd()),f=P;else if(r&&f&&i^S){var T;!(A&c)&&(T=p(M,f,!0))&&(m=0,i?(a.lineStart(),a.point(T[0][0],T[0][1]),a.point(T[1][0],T[1][1]),a.lineEnd()):(a.point(T[1][0],T[1][1]),a.lineEnd(),a.lineStart(),a.point(T[0][0],T[0][1],3)))}S&&(!f||!Vt(f,M))&&a.point(M[0],M[1]),f=M,h=S,c=A},lineEnd:function(){h&&a.lineEnd(),f=null},clean:function(){return m|(y&&h)<<1}}}function p(a,f,c){var h=_t(a),y=_t(f),m=[1,0,0],_=Kt(h,y),w=kt(_,_),M=_[0],P=w-M*M;if(!P)return!c&&a;var S=n*w/P,A=-n*M/P,T=Kt(m,_),I=Dt(m,S),F=Dt(_,A);an(I,F);var X=T,q=kt(I,X),R=kt(X,X),Z=q*q-R*(kt(I,I)-1);if(!(Z<0)){var O=et(Z),v=Dt(X,(-q-O)/R);if(an(v,I),v=vn(v),!c)return v;var g=a[0],d=f[0],E=a[1],z=f[1],N;d<g&&(N=g,g=d,d=N);var x=d-g,$=Y(x-k)<C,G=$||x<C;if(!$&&z<E&&(N=E,E=z,z=N),G?$?E+z>0^v[1]<(Y(v[0]-g)<C?E:z):E<=v[1]&&v[1]<=z:x>k^(g<=v[0]&&v[0]<=d)){var H=Dt(X,(-q+O)/R);return an(H,I),[v,vn(H)]}}}function s(a,f){var c=i?t:k-t,h=0;return a<-c?h|=1:a>c&&(h|=2),f<-c?h|=4:f>c&&(h|=8),h}return Me(o,l,u,i?[0,-t]:[-k,t-k])}function Si(t,n,e,i,r,u){var o=t[0],l=t[1],p=n[0],s=n[1],a=0,f=1,c=p-o,h=s-l,y;if(y=e-o,!(!c&&y>0)){if(y/=c,c<0){if(y<a)return;y<f&&(f=y)}else if(c>0){if(y>f)return;y>a&&(a=y)}if(y=r-o,!(!c&&y<0)){if(y/=c,c<0){if(y>f)return;y>a&&(a=y)}else if(c>0){if(y<a)return;y<f&&(f=y)}if(y=i-l,!(!h&&y>0)){if(y/=h,h<0){if(y<a)return;y<f&&(f=y)}else if(h>0){if(y>f)return;y>a&&(a=y)}if(y=u-l,!(!h&&y<0)){if(y/=h,h<0){if(y>f)return;y>a&&(a=y)}else if(h>0){if(y<a)return;y<f&&(f=y)}return a>0&&(t[0]=o+a*c,t[1]=l+a*h),f<1&&(n[0]=o+f*c,n[1]=l+f*h),!0}}}}}var Mt=1e9,Gt=-Mt;function Mi(t,n,e,i){function r(s,a){return t<=s&&s<=e&&n<=a&&a<=i}function u(s,a,f,c){var h=0,y=0;if(s==null||(h=o(s,f))!==(y=o(a,f))||p(s,a)<0^f>0)do c.point(h===0||h===3?t:e,h>1?i:n);while((h=(h+f+4)%4)!==y);else c.point(a[0],a[1])}function o(s,a){return Y(s[0]-t)<C?a>0?0:3:Y(s[0]-e)<C?a>0?2:1:Y(s[1]-n)<C?a>0?1:0:a>0?3:2}function l(s,a){return p(s.x,a.x)}function p(s,a){var f=o(s,1),c=o(a,1);return f!==c?f-c:f===0?a[1]-s[1]:f===1?s[0]-a[0]:f===2?s[1]-a[1]:a[0]-s[0]}return function(s){var a=s,f=Ee(),c,h,y,m,_,w,M,P,S,A,T,I={point:F,lineStart:Z,lineEnd:O,polygonStart:q,polygonEnd:R};function F(g,d){r(g,d)&&a.point(g,d)}function X(){for(var g=0,d=0,E=h.length;d<E;++d)for(var z=h[d],N=1,x=z.length,$=z[0],G,H,V=$[0],W=$[1];N<x;++N)G=V,H=W,$=z[N],V=$[0],W=$[1],H<=i?W>i&&(V-G)*(i-H)>(W-H)*(t-G)&&++g:W<=i&&(V-G)*(i-H)<(W-H)*(t-G)&&--g;return g}function q(){a=f,c=[],h=[],T=!0}function R(){var g=X(),d=T&&g,E=(c=ge(c)).length;(d||E)&&(s.polygonStart(),d&&(s.lineStart(),u(null,null,1,s),s.lineEnd()),E&&Se(c,l,g,u,s),s.polygonEnd()),a=s,c=h=y=null}function Z(){I.point=v,h&&h.push(y=[]),A=!0,S=!1,M=P=NaN}function O(){c&&(v(m,_),w&&S&&f.rejoin(),c.push(f.result())),I.point=F,S&&a.lineEnd()}function v(g,d){var E=r(g,d);if(h&&y.push([g,d]),A)m=g,_=d,w=E,A=!1,E&&(a.lineStart(),a.point(g,d));else if(E&&S)a.point(g,d);else{var z=[M=Math.max(Gt,Math.min(Mt,M)),P=Math.max(Gt,Math.min(Mt,P))],N=[g=Math.max(Gt,Math.min(Mt,g)),d=Math.max(Gt,Math.min(Mt,d))];Si(z,N,t,n,e,i)?(S||(a.lineStart(),a.point(z[0],z[1])),a.point(N[0],N[1]),E||a.lineEnd(),T=!1):E&&(a.lineStart(),a.point(g,d),T=!1)}M=g,P=d,S=E}return I}}const mn=t=>t;var cn=new gt,wn=new gt,ze,Pe,_n,En,ft={point:tt,lineStart:tt,lineEnd:tt,polygonStart:function(){ft.lineStart=zi,ft.lineEnd=Ti},polygonEnd:function(){ft.lineStart=ft.lineEnd=ft.point=tt,cn.add(Y(wn)),wn=new gt},result:function(){var t=cn/2;return cn=new gt,t}};function zi(){ft.point=Pi}function Pi(t,n){ft.point=Te,ze=_n=t,Pe=En=n}function Te(t,n){wn.add(En*t-_n*n),_n=t,En=n}function Ti(){Te(ze,Pe)}var Et=1/0,Jt=Et,It=-Et,Qt=It,bt={point:Ni,lineStart:tt,lineEnd:tt,polygonStart:tt,polygonEnd:tt,result:function(){var t=[[Et,Jt],[It,Qt]];return It=Qt=-(Jt=Et=1/0),t}};function Ni(t,n){t<Et&&(Et=t),t>It&&(It=t),n<Jt&&(Jt=n),n>Qt&&(Qt=n)}var Sn=0,Mn=0,zt=0,jt=0,tn=0,wt=0,zn=0,Pn=0,Pt=0,Ne,Ae,ot,ut,j={point:yt,lineStart:te,lineEnd:ne,polygonStart:function(){j.lineStart=xi,j.lineEnd=Ci},polygonEnd:function(){j.point=yt,j.lineStart=te,j.lineEnd=ne},result:function(){var t=Pt?[zn/Pt,Pn/Pt]:wt?[jt/wt,tn/wt]:zt?[Sn/zt,Mn/zt]:[NaN,NaN];return Sn=Mn=zt=jt=tn=wt=zn=Pn=Pt=0,t}};function yt(t,n){Sn+=t,Mn+=n,++zt}function te(){j.point=Ai}function Ai(t,n){j.point=Ri,yt(ot=t,ut=n)}function Ri(t,n){var e=t-ot,i=n-ut,r=et(e*e+i*i);jt+=r*(ot+t)/2,tn+=r*(ut+n)/2,wt+=r,yt(ot=t,ut=n)}function ne(){j.point=yt}function xi(){j.point=Ii}function Ci(){Re(Ne,Ae)}function Ii(t,n){j.point=Re,yt(Ne=ot=t,Ae=ut=n)}function Re(t,n){var e=t-ot,i=n-ut,r=et(e*e+i*i);jt+=r*(ot+t)/2,tn+=r*(ut+n)/2,wt+=r,r=ut*t-ot*n,zn+=r*(ot+t),Pn+=r*(ut+n),Pt+=r*3,yt(ot=t,ut=n)}function xe(t){this._context=t}xe.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:{this._context.moveTo(t,n),this._point=1;break}case 1:{this._context.lineTo(t,n);break}default:{this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Q);break}}},result:tt};var Tn=new gt,sn,Ce,Ie,Tt,Nt,Ft={point:tt,lineStart:function(){Ft.point=Fi},lineEnd:function(){sn&&Fe(Ce,Ie),Ft.point=tt},polygonStart:function(){sn=!0},polygonEnd:function(){sn=null},result:function(){var t=+Tn;return Tn=new gt,t}};function Fi(t,n){Ft.point=Fe,Ce=Tt=t,Ie=Nt=n}function Fe(t,n){Tt-=t,Nt-=n,Tn.add(et(Tt*Tt+Nt*Nt)),Tt=t,Nt=n}let ee,nn,ie,re;class oe{constructor(n){this._append=n==null?Xe:Xi(n),this._radius=4.5,this._=""}pointRadius(n){return this._radius=+n,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(n,e){switch(this._point){case 0:{this._append`M${n},${e}`,this._point=1;break}case 1:{this._append`L${n},${e}`;break}default:{if(this._append`M${n},${e}`,this._radius!==ie||this._append!==nn){const i=this._radius,r=this._;this._="",this._append`m0,${i}a${i},${i} 0 1,1 0,${-2*i}a${i},${i} 0 1,1 0,${2*i}z`,ie=i,nn=this._append,re=this._,this._=r}this._+=re;break}}}result(){const n=this._;return this._="",n.length?n:null}}function Xe(t){let n=1;this._+=t[0];for(const e=t.length;n<e;++n)this._+=arguments[n]+t[n]}function Xi(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return Xe;if(n!==ee){const e=10**n;ee=n,nn=function(r){let u=1;this._+=r[0];for(const o=r.length;u<o;++u)this._+=Math.round(arguments[u]*e)/e+r[u]}}return nn}function $i(t,n){let e=3,i=4.5,r,u;function o(l){return l&&(typeof i=="function"&&u.pointRadius(+i.apply(this,arguments)),mt(l,r(u))),u.result()}return o.area=function(l){return mt(l,r(ft)),ft.result()},o.measure=function(l){return mt(l,r(Ft)),Ft.result()},o.bounds=function(l){return mt(l,r(bt)),bt.result()},o.centroid=function(l){return mt(l,r(j)),j.result()},o.projection=function(l){return arguments.length?(r=l==null?(t=null,mn):(t=l).stream,o):t},o.context=function(l){return arguments.length?(u=l==null?(n=null,new oe(e)):new xe(n=l),typeof i!="function"&&u.pointRadius(i),o):n},o.pointRadius=function(l){return arguments.length?(i=typeof l=="function"?l:(u.pointRadius(+l),+l),o):i},o.digits=function(l){if(!arguments.length)return e;if(l==null)e=null;else{const p=Math.floor(l);if(!(p>=0))throw new RangeError(`invalid digits: ${l}`);e=p}return n===null&&(u=new oe(e)),o},o.projection(t).digits(e).context(n)}function Xn(t){return function(n){var e=new Nn;for(var i in t)e[i]=t[i];return e.stream=n,e}}function Nn(){}Nn.prototype={constructor:Nn,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function $n(t,n,e){var i=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),i!=null&&t.clipExtent(null),mt(e,t.stream(bt)),n(bt.result()),i!=null&&t.clipExtent(i),t}function kn(t,n,e){return $n(t,function(i){var r=n[1][0]-n[0][0],u=n[1][1]-n[0][1],o=Math.min(r/(i[1][0]-i[0][0]),u/(i[1][1]-i[0][1])),l=+n[0][0]+(r-o*(i[1][0]+i[0][0]))/2,p=+n[0][1]+(u-o*(i[1][1]+i[0][1]))/2;t.scale(150*o).translate([l,p])},e)}function $e(t,n,e){return kn(t,[[0,0],n],e)}function ke(t,n,e){return $n(t,function(i){var r=+n,u=r/(i[1][0]-i[0][0]),o=(r-u*(i[1][0]+i[0][0]))/2,l=-u*i[0][1];t.scale(150*u).translate([o,l])},e)}function De(t,n,e){return $n(t,function(i){var r=+n,u=r/(i[1][1]-i[0][1]),o=-u*i[0][0],l=(r-u*(i[1][1]+i[0][1]))/2;t.scale(150*u).translate([o,l])},e)}var ue=16,ki=L(30*B);function ae(t,n){return+n?qi(t,n):Di(t)}function Di(t){return Xn({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}function qi(t,n){function e(i,r,u,o,l,p,s,a,f,c,h,y,m,_){var w=s-i,M=a-r,P=w*w+M*M;if(P>4*n&&m--){var S=o+c,A=l+h,T=p+y,I=et(S*S+A*A+T*T),F=it(T/=I),X=Y(Y(T)-1)<C||Y(u-f)<C?(u+f)/2:dt(A,S),q=t(X,F),R=q[0],Z=q[1],O=R-i,v=Z-r,g=M*O-w*v;(g*g/P>n||Y((w*O+M*v)/P-.5)>.3||o*c+l*h+p*y<ki)&&(e(i,r,u,o,l,p,R,Z,X,S/=I,A/=I,T,m,_),_.point(R,Z),e(R,Z,X,S,A,T,s,a,f,c,h,y,m,_))}}return function(i){var r,u,o,l,p,s,a,f,c,h,y,m,_={point:w,lineStart:M,lineEnd:S,polygonStart:function(){i.polygonStart(),_.lineStart=A},polygonEnd:function(){i.polygonEnd(),_.lineStart=M}};function w(F,X){F=t(F,X),i.point(F[0],F[1])}function M(){f=NaN,_.point=P,i.lineStart()}function P(F,X){var q=_t([F,X]),R=t(F,X);e(f,c,a,h,y,m,f=R[0],c=R[1],a=F,h=q[0],y=q[1],m=q[2],ue,i),i.point(f,c)}function S(){_.point=w,i.lineEnd()}function A(){M(),_.point=T,_.lineEnd=I}function T(F,X){P(r=F,X),u=f,o=c,l=h,p=y,s=m,_.point=P}function I(){e(f,c,a,h,y,m,u,o,r,l,p,s,ue,i),_.lineEnd=S,S()}return _}}var Gi=Xn({point:function(t,n){this.stream.point(t*B,n*B)}});function Li(t){return Xn({point:function(n,e){var i=t(n,e);return this.stream.point(i[0],i[1])}})}function Yi(t,n,e,i,r){function u(o,l){return o*=i,l*=r,[n+t*o,e-t*l]}return u.invert=function(o,l){return[(o-n)/t*i,(e-l)/t*r]},u}function le(t,n,e,i,r,u){if(!u)return Yi(t,n,e,i,r);var o=L(u),l=D(u),p=o*t,s=l*t,a=o/t,f=l/t,c=(l*e-o*n)/t,h=(l*n+o*e)/t;function y(m,_){return m*=i,_*=r,[p*m-s*_+n,e-s*m-p*_]}return y.invert=function(m,_){return[i*(a*m-f*_+c),r*(h-f*m-a*_)]},y}function rn(t){return qe(function(){return t})()}function qe(t){var n,e=150,i=480,r=250,u=0,o=0,l=0,p=0,s=0,a,f=0,c=1,h=1,y=null,m=jn,_=null,w,M,P,S=mn,A=.5,T,I,F,X,q;function R(g){return F(g[0]*B,g[1]*B)}function Z(g){return g=F.invert(g[0],g[1]),g&&[g[0]*K,g[1]*K]}R.stream=function(g){return X&&q===g?X:X=Gi(Li(a)(m(T(S(q=g)))))},R.preclip=function(g){return arguments.length?(m=g,y=void 0,v()):m},R.postclip=function(g){return arguments.length?(S=g,_=w=M=P=null,v()):S},R.clipAngle=function(g){return arguments.length?(m=+g?Ei(y=g*B):(y=null,jn),v()):y*K},R.clipExtent=function(g){return arguments.length?(S=g==null?(_=w=M=P=null,mn):Mi(_=+g[0][0],w=+g[0][1],M=+g[1][0],P=+g[1][1]),v()):_==null?null:[[_,w],[M,P]]},R.scale=function(g){return arguments.length?(e=+g,O()):e},R.translate=function(g){return arguments.length?(i=+g[0],r=+g[1],O()):[i,r]},R.center=function(g){return arguments.length?(u=g[0]%360*B,o=g[1]%360*B,O()):[u*K,o*K]},R.rotate=function(g){return arguments.length?(l=g[0]%360*B,p=g[1]%360*B,s=g.length>2?g[2]%360*B:0,O()):[l*K,p*K,s*K]},R.angle=function(g){return arguments.length?(f=g%360*B,O()):f*K},R.reflectX=function(g){return arguments.length?(c=g?-1:1,O()):c<0},R.reflectY=function(g){return arguments.length?(h=g?-1:1,O()):h<0},R.precision=function(g){return arguments.length?(T=ae(I,A=g*g),v()):et(A)},R.fitExtent=function(g,d){return kn(R,g,d)},R.fitSize=function(g,d){return $e(R,g,d)},R.fitWidth=function(g,d){return ke(R,g,d)},R.fitHeight=function(g,d){return De(R,g,d)};function O(){var g=le(e,0,0,c,h,f).apply(null,n(u,o)),d=le(e,i-g[0],r-g[1],c,h,f);return a=_e(l,p,s),I=dn(n,d),F=dn(a,I),T=ae(I,A),v()}function v(){return X=q=null,R}return function(){return n=t.apply(this,arguments),R.invert=n.invert&&Z,O()}}function Oi(t){var n=0,e=k/3,i=qe(t),r=i(n,e);return r.parallels=function(u){return arguments.length?i(n=u[0]*B,e=u[1]*B):[n*K,e*K]},r}function Vi(t){var n=L(t);function e(i,r){return[i*n,D(r)/n]}return e.invert=function(i,r){return[i/n,it(r*n)]},e}function Bi(t,n){var e=D(t),i=(e+D(n))/2;if(Y(i)<C)return Vi(t);var r=1+e*(2*i-e),u=et(r)/i;function o(l,p){var s=et(r-2*i*D(p))/i;return[s*D(l*=i),u-s*L(l)]}return o.invert=function(l,p){var s=u-p,a=dt(l,Y(s))*Ot(s);return s*i<0&&(a-=k*Ot(l)*Ot(s)),[a/i,it((r-(l*l+s*s)*i*i)/(2*i))]},o}function An(){return Oi(Bi).scale(155.424).center([0,33.6442])}function Ui(){return An().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Hi(t){var n=t.length;return{point:function(e,i){for(var r=-1;++r<n;)t[r].point(e,i)},sphere:function(){for(var e=-1;++e<n;)t[e].sphere()},lineStart:function(){for(var e=-1;++e<n;)t[e].lineStart()},lineEnd:function(){for(var e=-1;++e<n;)t[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<n;)t[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<n;)t[e].polygonEnd()}}}function Wi(){var t,n,e=Ui(),i,r=An().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u,o=An().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l,p,s={point:function(c,h){p=[c,h]}};function a(c){var h=c[0],y=c[1];return p=null,i.point(h,y),p||(u.point(h,y),p)||(l.point(h,y),p)}a.invert=function(c){var h=e.scale(),y=e.translate(),m=(c[0]-y[0])/h,_=(c[1]-y[1])/h;return(_>=.12&&_<.234&&m>=-.425&&m<-.214?r:_>=.166&&_<.234&&m>=-.214&&m<-.115?o:e).invert(c)},a.stream=function(c){return t&&n===c?t:t=Hi([e.stream(n=c),r.stream(c),o.stream(c)])},a.precision=function(c){return arguments.length?(e.precision(c),r.precision(c),o.precision(c),f()):e.precision()},a.scale=function(c){return arguments.length?(e.scale(c),r.scale(c*.35),o.scale(c),a.translate(e.translate())):e.scale()},a.translate=function(c){if(!arguments.length)return e.translate();var h=e.scale(),y=+c[0],m=+c[1];return i=e.translate(c).clipExtent([[y-.455*h,m-.238*h],[y+.455*h,m+.238*h]]).stream(s),u=r.translate([y-.307*h,m+.201*h]).clipExtent([[y-.425*h+C,m+.12*h+C],[y-.214*h-C,m+.234*h-C]]).stream(s),l=o.translate([y-.205*h,m+.212*h]).clipExtent([[y-.214*h+C,m+.166*h+C],[y-.115*h-C,m+.234*h-C]]).stream(s),f()},a.fitExtent=function(c,h){return kn(a,c,h)},a.fitSize=function(c,h){return $e(a,c,h)},a.fitWidth=function(c,h){return ke(a,c,h)},a.fitHeight=function(c,h){return De(a,c,h)};function f(){return t=n=null,a}return a.scale(1070)}function Zi(t){return function(n,e){var i=et(n*n+e*e),r=t(i),u=D(r),o=L(r);return[dt(n*u,i*o),it(i&&e*u/i)]}}function Dn(t,n){return[t,si(fi((J+n)/2))]}Dn.invert=function(t,n){return[t,2*we(ci(n))-J]};function Ki(){return Ji(Dn).scale(961/Q)}function Ji(t){var n=rn(t),e=n.center,i=n.scale,r=n.translate,u=n.clipExtent,o=null,l,p,s;n.scale=function(f){return arguments.length?(i(f),a()):i()},n.translate=function(f){return arguments.length?(r(f),a()):r()},n.center=function(f){return arguments.length?(e(f),a()):e()},n.clipExtent=function(f){return arguments.length?(f==null?o=l=p=s=null:(o=+f[0][0],l=+f[0][1],p=+f[1][0],s=+f[1][1]),a()):o==null?null:[[o,l],[p,s]]};function a(){var f=k*i(),c=n(pi(n.rotate()).invert([0,0]));return u(o==null?[[c[0]-f,c[1]-f],[c[0]+f,c[1]+f]]:t===Dn?[[Math.max(c[0]-f,o),l],[Math.min(c[0]+f,p),s]]:[[o,Math.max(c[1]-f,l)],[p,Math.min(c[1]+f,s)]])}return a()}var At=1.340264,Rt=-.081106,xt=893e-6,Ct=.003796,en=et(3)/2,Qi=12;function Ge(t,n){var e=it(en*D(n)),i=e*e,r=i*i*i;return[t*L(e)/(en*(At+3*Rt*i+r*(7*xt+9*Ct*i))),e*(At+Rt*i+r*(xt+Ct*i))]}Ge.invert=function(t,n){for(var e=n,i=e*e,r=i*i*i,u=0,o,l,p;u<Qi&&(l=e*(At+Rt*i+r*(xt+Ct*i))-n,p=At+3*Rt*i+r*(7*xt+9*Ct*i),e-=o=l/p,i=e*e,r=i*i*i,!(Y(o)<me));++u);return[en*t*(At+3*Rt*i+r*(7*xt+9*Ct*i))/L(e),it(D(e)/en)]};function bi(){return rn(Ge).scale(177.158)}function Le(t,n){var e=n*n,i=e*e;return[t*(.8707-.131979*e+i*(-.013791+i*(.003971*e-.001529*i))),n*(1.007226+e*(.015085+i*(-.044475+.028874*e-.005916*i)))]}Le.invert=function(t,n){var e=n,i=25,r;do{var u=e*e,o=u*u;e-=r=(e*(1.007226+u*(.015085+o*(-.044475+.028874*u-.005916*o)))-n)/(1.007226+u*(.015085*3+o*(-.044475*7+.028874*9*u-.005916*11*o)))}while(Y(r)>C&&--i>0);return[t/(.8707+(u=e*e)*(-.131979+u*(-.013791+u*u*u*(.003971-.001529*u)))),e]};function ji(){return rn(Le).scale(175.295)}function Ye(t,n){return[L(n)*D(t),D(n)]}Ye.invert=Zi(it);function tr(){return rn(Ye).scale(249.5).clipAngle(90+C)}const Rn={capture:!0,passive:!1};function xn(t){t.preventDefault(),t.stopImmediatePropagation()}function nr(t){var n=t.document.documentElement,e=U.select(t).on("dragstart.drag",xn,Rn);"onselectstart"in n?e.on("selectstart.drag",xn,Rn):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function er(t,n){var e=t.document.documentElement,i=U.select(t).on("dragstart.drag",null);n&&(i.on("click.drag",xn,Rn),setTimeout(function(){i.on("click.drag",null)},0)),"onselectstart"in e?i.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var ir=Xt.dispatch("start","end","cancel","interrupt"),rr=[],Oe=0,ce=1,Cn=2,Bt=3,se=4,In=5,Ut=6;function on(t,n,e,i,r,u){var o=t.__transition;if(!o)t.__transition={};else if(e in o)return;or(t,e,{name:n,index:i,group:r,on:ir,tween:rr,time:u.time,delay:u.delay,duration:u.duration,ease:u.ease,timer:null,state:Oe})}function qn(t,n){var e=rt(t,n);if(e.state>Oe)throw new Error("too late; already scheduled");return e}function at(t,n){var e=rt(t,n);if(e.state>Bt)throw new Error("too late; already running");return e}function rt(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function or(t,n,e){var i=t.__transition,r;i[n]=e,e.timer=Xt.timer(u,0,e.time);function u(s){e.state=ce,e.timer.restart(o,e.delay,e.time),e.delay<=s&&o(s-e.delay)}function o(s){var a,f,c,h;if(e.state!==ce)return p();for(a in i)if(h=i[a],h.name===e.name){if(h.state===Bt)return Vn(o);h.state===se?(h.state=Ut,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[a]):+a<n&&(h.state=Ut,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[a])}if(Vn(function(){e.state===Bt&&(e.state=se,e.timer.restart(l,e.delay,e.time),l(s))}),e.state=Cn,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Cn){for(e.state=Bt,r=new Array(c=e.tween.length),a=0,f=-1;a<c;++a)(h=e.tween[a].value.call(t,t.__data__,e.index,e.group))&&(r[++f]=h);r.length=f+1}}function l(s){for(var a=s<e.duration?e.ease.call(null,s/e.duration):(e.timer.restart(p),e.state=In,1),f=-1,c=r.length;++f<c;)r[f].call(t,a);e.state===In&&(e.on.call("end",t,t.__data__,e.index,e.group),p())}function p(){e.state=Ut,e.timer.stop(),delete i[n];for(var s in i)return;delete t.__transition}}function Ht(t,n){var e=t.__transition,i,r,u=!0,o;if(e){n=n==null?null:n+"";for(o in e){if((i=e[o]).name!==n){u=!1;continue}r=i.state>Cn&&i.state<In,i.state=Ut,i.timer.stop(),i.on.call(r?"interrupt":"cancel",t,t.__data__,i.index,i.group),delete e[o]}u&&delete t.__transition}}function ur(t){return this.each(function(){Ht(this,t)})}function ar(t,n){var e,i;return function(){var r=at(this,t),u=r.tween;if(u!==e){i=e=u;for(var o=0,l=i.length;o<l;++o)if(i[o].name===n){i=i.slice(),i.splice(o,1);break}}r.tween=i}}function lr(t,n,e){var i,r;if(typeof e!="function")throw new Error;return function(){var u=at(this,t),o=u.tween;if(o!==i){r=(i=o).slice();for(var l={name:n,value:e},p=0,s=r.length;p<s;++p)if(r[p].name===n){r[p]=l;break}p===s&&r.push(l)}u.tween=r}}function cr(t,n){var e=this._id;if(t+="",arguments.length<2){for(var i=rt(this.node(),e).tween,r=0,u=i.length,o;r<u;++r)if((o=i[r]).name===t)return o.value;return null}return this.each((n==null?ar:lr)(e,t,n))}function Gn(t,n,e){var i=t._id;return t.each(function(){var r=at(this,i);(r.value||(r.value={}))[n]=e.apply(this,arguments)}),function(r){return rt(r,i).value[n]}}function Ve(t,n){var e;return(typeof n=="number"?b.interpolateNumber:n instanceof b.color?b.interpolateRgb:(e=b.color(n))?(n=e,b.interpolateRgb):b.interpolateString)(t,n)}function sr(t){return function(){this.removeAttribute(t)}}function fr(t){return function(){this.removeAttributeNS(t.space,t.local)}}function hr(t,n,e){var i,r=e+"",u;return function(){var o=this.getAttribute(t);return o===r?null:o===i?u:u=n(i=o,e)}}function pr(t,n,e){var i,r=e+"",u;return function(){var o=this.getAttributeNS(t.space,t.local);return o===r?null:o===i?u:u=n(i=o,e)}}function vr(t,n,e){var i,r,u;return function(){var o,l=e(this),p;return l==null?void this.removeAttribute(t):(o=this.getAttribute(t),p=l+"",o===p?null:o===i&&p===r?u:(r=p,u=n(i=o,l)))}}function gr(t,n,e){var i,r,u;return function(){var o,l=e(this),p;return l==null?void this.removeAttributeNS(t.space,t.local):(o=this.getAttributeNS(t.space,t.local),p=l+"",o===p?null:o===i&&p===r?u:(r=p,u=n(i=o,l)))}}function dr(t,n){var e=U.namespace(t),i=e==="transform"?ei:Ve;return this.attrTween(t,typeof n=="function"?(e.local?gr:vr)(e,i,Gn(this,"attr."+t,n)):n==null?(e.local?fr:sr)(e):(e.local?pr:hr)(e,i,n))}function yr(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function mr(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function wr(t,n){var e,i;function r(){var u=n.apply(this,arguments);return u!==i&&(e=(i=u)&&mr(t,u)),e}return r._value=n,r}function _r(t,n){var e,i;function r(){var u=n.apply(this,arguments);return u!==i&&(e=(i=u)&&yr(t,u)),e}return r._value=n,r}function Er(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(n==null)return this.tween(e,null);if(typeof n!="function")throw new Error;var i=U.namespace(t);return this.tween(e,(i.local?wr:_r)(i,n))}function Sr(t,n){return function(){qn(this,t).delay=+n.apply(this,arguments)}}function Mr(t,n){return n=+n,function(){qn(this,t).delay=n}}function zr(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?Sr:Mr)(n,t)):rt(this.node(),n).delay}function Pr(t,n){return function(){at(this,t).duration=+n.apply(this,arguments)}}function Tr(t,n){return n=+n,function(){at(this,t).duration=n}}function Nr(t){var n=this._id;return arguments.length?this.each((typeof t=="function"?Pr:Tr)(n,t)):rt(this.node(),n).duration}function Ar(t,n){if(typeof n!="function")throw new Error;return function(){at(this,t).ease=n}}function Rr(t){var n=this._id;return arguments.length?this.each(Ar(n,t)):rt(this.node(),n).ease}function xr(t,n){return function(){var e=n.apply(this,arguments);if(typeof e!="function")throw new Error;at(this,t).ease=e}}function Cr(t){if(typeof t!="function")throw new Error;return this.each(xr(this._id,t))}function Ir(t){typeof t!="function"&&(t=U.matcher(t));for(var n=this._groups,e=n.length,i=new Array(e),r=0;r<e;++r)for(var u=n[r],o=u.length,l=i[r]=[],p,s=0;s<o;++s)(p=u[s])&&t.call(p,p.__data__,s,u)&&l.push(p);return new pt(i,this._parents,this._name,this._id)}function Fr(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,i=n.length,r=e.length,u=Math.min(i,r),o=new Array(i),l=0;l<u;++l)for(var p=n[l],s=e[l],a=p.length,f=o[l]=new Array(a),c,h=0;h<a;++h)(c=p[h]||s[h])&&(f[h]=c);for(;l<i;++l)o[l]=n[l];return new pt(o,this._parents,this._name,this._id)}function Xr(t){return(t+"").trim().split(/^|\s+/).every(function(n){var e=n.indexOf(".");return e>=0&&(n=n.slice(0,e)),!n||n==="start"})}function $r(t,n,e){var i,r,u=Xr(n)?qn:at;return function(){var o=u(this,t),l=o.on;l!==i&&(r=(i=l).copy()).on(n,e),o.on=r}}function kr(t,n){var e=this._id;return arguments.length<2?rt(this.node(),e).on.on(t):this.each($r(e,t,n))}function Dr(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function qr(){return this.on("end.remove",Dr(this._id))}function Gr(t){var n=this._name,e=this._id;typeof t!="function"&&(t=U.selector(t));for(var i=this._groups,r=i.length,u=new Array(r),o=0;o<r;++o)for(var l=i[o],p=l.length,s=u[o]=new Array(p),a,f,c=0;c<p;++c)(a=l[c])&&(f=t.call(a,a.__data__,c,l))&&("__data__"in a&&(f.__data__=a.__data__),s[c]=f,on(s[c],n,e,c,s,rt(a,e)));return new pt(u,this._parents,n,e)}function Lr(t){var n=this._name,e=this._id;typeof t!="function"&&(t=U.selectorAll(t));for(var i=this._groups,r=i.length,u=[],o=[],l=0;l<r;++l)for(var p=i[l],s=p.length,a,f=0;f<s;++f)if(a=p[f]){for(var c=t.call(a,a.__data__,f,p),h,y=rt(a,e),m=0,_=c.length;m<_;++m)(h=c[m])&&on(h,n,e,m,c,y);u.push(c),o.push(a)}return new pt(u,o,n,e)}var Yr=U.selection.prototype.constructor;function Or(){return new Yr(this._groups,this._parents)}function Vr(t,n){var e,i,r;return function(){var u=U.styleValue(this,t),o=(this.style.removeProperty(t),U.styleValue(this,t));return u===o?null:u===e&&o===i?r:r=n(e=u,i=o)}}function Be(t){return function(){this.style.removeProperty(t)}}function Br(t,n,e){var i,r=e+"",u;return function(){var o=U.styleValue(this,t);return o===r?null:o===i?u:u=n(i=o,e)}}function Ur(t,n,e){var i,r,u;return function(){var o=U.styleValue(this,t),l=e(this),p=l+"";return l==null&&(p=l=(this.style.removeProperty(t),U.styleValue(this,t))),o===p?null:o===i&&p===r?u:(r=p,u=n(i=o,l))}}function Hr(t,n){var e,i,r,u="style."+n,o="end."+u,l;return function(){var p=at(this,t),s=p.on,a=p.value[u]==null?l||(l=Be(n)):void 0;(s!==e||r!==a)&&(i=(e=s).copy()).on(o,r=a),p.on=i}}function Wr(t,n,e){var i=(t+="")=="transform"?ni:Ve;return n==null?this.styleTween(t,Vr(t,i)).on("end.style."+t,Be(t)):typeof n=="function"?this.styleTween(t,Ur(t,i,Gn(this,"style."+t,n))).each(Hr(this._id,t)):this.styleTween(t,Br(t,i,n),e).on("end.style."+t,null)}function Zr(t,n,e){return function(i){this.style.setProperty(t,n.call(this,i),e)}}function Kr(t,n,e){var i,r;function u(){var o=n.apply(this,arguments);return o!==r&&(i=(r=o)&&Zr(t,o,e)),i}return u._value=n,u}function Jr(t,n,e){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(n==null)return this.tween(i,null);if(typeof n!="function")throw new Error;return this.tween(i,Kr(t,n,e??""))}function Qr(t){return function(){this.textContent=t}}function br(t){return function(){var n=t(this);this.textContent=n??""}}function jr(t){return this.tween("text",typeof t=="function"?br(Gn(this,"text",t)):Qr(t==null?"":t+""))}function to(t){return function(n){this.textContent=t.call(this,n)}}function no(t){var n,e;function i(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&to(r)),n}return i._value=t,i}function eo(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,no(t))}function io(){for(var t=this._name,n=this._id,e=Ue(),i=this._groups,r=i.length,u=0;u<r;++u)for(var o=i[u],l=o.length,p,s=0;s<l;++s)if(p=o[s]){var a=rt(p,n);on(p,t,e,s,o,{time:a.time+a.delay+a.duration,delay:0,duration:a.duration,ease:a.ease})}return new pt(i,this._parents,t,e)}function ro(){var t,n,e=this,i=e._id,r=e.size();return new Promise(function(u,o){var l={value:o},p={value:function(){--r===0&&u()}};e.each(function(){var s=at(this,i),a=s.on;a!==t&&(n=(t=a).copy(),n._.cancel.push(l),n._.interrupt.push(l),n._.end.push(p)),s.on=n}),r===0&&u()})}var oo=0;function pt(t,n,e,i){this._groups=t,this._parents=n,this._name=e,this._id=i}function Ue(){return++oo}var st=U.selection.prototype;pt.prototype={constructor:pt,select:Gr,selectAll:Lr,selectChild:st.selectChild,selectChildren:st.selectChildren,filter:Ir,merge:Fr,selection:Or,transition:io,call:st.call,nodes:st.nodes,node:st.node,size:st.size,empty:st.empty,each:st.each,on:kr,attr:dr,attrTween:Er,style:Wr,styleTween:Jr,text:jr,textTween:eo,remove:qr,tween:cr,delay:zr,duration:Nr,ease:Rr,easeVarying:Cr,end:ro,[Symbol.iterator]:st[Symbol.iterator]};function uo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var ao={time:null,delay:0,duration:250,ease:uo};function lo(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function co(t){var n,e;t instanceof pt?(n=t._id,t=t._name):(n=Ue(),(e=ao).time=Xt.now(),t=t==null?null:t+"");for(var i=this._groups,r=i.length,u=0;u<r;++u)for(var o=i[u],l=o.length,p,s=0;s<l;++s)(p=o[s])&&on(p,t,n,s,o,e||lo(p,n));return new pt(i,this._parents,t,n)}U.selection.prototype.interrupt=ur;U.selection.prototype.transition=co;const Lt=t=>()=>t;function so(t,{sourceEvent:n,target:e,transform:i,dispatch:r}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:r}})}function ht(t,n,e){this.k=t,this.x=n,this.y=e}ht.prototype={constructor:ht,scale:function(t){return t===1?this:new ht(this.k*t,this.x,this.y)},translate:function(t,n){return t===0&n===0?this:new ht(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var He=new ht(1,0,0);ht.prototype;function fn(t){t.stopImmediatePropagation()}function St(t){t.preventDefault(),t.stopImmediatePropagation()}function fo(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function ho(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function fe(){return this.__zoom||He}function po(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function vo(){return navigator.maxTouchPoints||"ontouchstart"in this}function go(t,n,e){var i=t.invertX(n[0][0])-e[0][0],r=t.invertX(n[1][0])-e[1][0],u=t.invertY(n[0][1])-e[0][1],o=t.invertY(n[1][1])-e[1][1];return t.translate(r>i?(i+r)/2:Math.min(0,i)||Math.max(0,r),o>u?(u+o)/2:Math.min(0,u)||Math.max(0,o))}function yo(){var t=fo,n=ho,e=go,i=po,r=vo,u=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],l=250,p=ui,s=Xt.dispatch("start","zoom","end"),a,f,c,h=500,y=150,m=0,_=10;function w(v){v.property("__zoom",fe).on("wheel.zoom",F,{passive:!1}).on("mousedown.zoom",X).on("dblclick.zoom",q).filter(r).on("touchstart.zoom",R).on("touchmove.zoom",Z).on("touchend.zoom touchcancel.zoom",O).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}w.transform=function(v,g,d,E){var z=v.selection?v.selection():v;z.property("__zoom",fe),v!==z?A(v,g,d,E):z.interrupt().each(function(){T(this,arguments).event(E).start().zoom(null,typeof g=="function"?g.apply(this,arguments):g).end()})},w.scaleBy=function(v,g,d,E){w.scaleTo(v,function(){var z=this.__zoom.k,N=typeof g=="function"?g.apply(this,arguments):g;return z*N},d,E)},w.scaleTo=function(v,g,d,E){w.transform(v,function(){var z=n.apply(this,arguments),N=this.__zoom,x=d==null?S(z):typeof d=="function"?d.apply(this,arguments):d,$=N.invert(x),G=typeof g=="function"?g.apply(this,arguments):g;return e(P(M(N,G),x,$),z,o)},d,E)},w.translateBy=function(v,g,d,E){w.transform(v,function(){return e(this.__zoom.translate(typeof g=="function"?g.apply(this,arguments):g,typeof d=="function"?d.apply(this,arguments):d),n.apply(this,arguments),o)},null,E)},w.translateTo=function(v,g,d,E,z){w.transform(v,function(){var N=n.apply(this,arguments),x=this.__zoom,$=E==null?S(N):typeof E=="function"?E.apply(this,arguments):E;return e(He.translate($[0],$[1]).scale(x.k).translate(typeof g=="function"?-g.apply(this,arguments):-g,typeof d=="function"?-d.apply(this,arguments):-d),N,o)},E,z)};function M(v,g){return g=Math.max(u[0],Math.min(u[1],g)),g===v.k?v:new ht(g,v.x,v.y)}function P(v,g,d){var E=g[0]-d[0]*v.k,z=g[1]-d[1]*v.k;return E===v.x&&z===v.y?v:new ht(v.k,E,z)}function S(v){return[(+v[0][0]+ +v[1][0])/2,(+v[0][1]+ +v[1][1])/2]}function A(v,g,d,E){v.on("start.zoom",function(){T(this,arguments).event(E).start()}).on("interrupt.zoom end.zoom",function(){T(this,arguments).event(E).end()}).tween("zoom",function(){var z=this,N=arguments,x=T(z,N).event(E),$=n.apply(z,N),G=d==null?S($):typeof d=="function"?d.apply(z,N):d,H=Math.max($[1][0]-$[0][0],$[1][1]-$[0][1]),V=z.__zoom,W=typeof g=="function"?g.apply(z,N):g,lt=p(V.invert(G).concat(H/V.k),W.invert(G).concat(H/W.k));return function(nt){if(nt===1)nt=W;else{var ct=lt(nt),un=H/ct[2];nt=new ht(un,G[0]-ct[0]*un,G[1]-ct[1]*un)}x.zoom(null,nt)}})}function T(v,g,d){return!d&&v.__zooming||new I(v,g)}function I(v,g){this.that=v,this.args=g,this.active=0,this.sourceEvent=null,this.extent=n.apply(v,g),this.taps=0}I.prototype={event:function(v){return v&&(this.sourceEvent=v),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(v,g){return this.mouse&&v!=="mouse"&&(this.mouse[1]=g.invert(this.mouse[0])),this.touch0&&v!=="touch"&&(this.touch0[1]=g.invert(this.touch0[0])),this.touch1&&v!=="touch"&&(this.touch1[1]=g.invert(this.touch1[0])),this.that.__zoom=g,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(v){var g=U.select(this.that).datum();s.call(v,this.that,new so(v,{sourceEvent:this.sourceEvent,target:w,transform:this.that.__zoom,dispatch:s}),g)}};function F(v,...g){if(!t.apply(this,arguments))return;var d=T(this,g).event(v),E=this.__zoom,z=Math.max(u[0],Math.min(u[1],E.k*Math.pow(2,i.apply(this,arguments)))),N=vt.pointer(v);if(d.wheel)(d.mouse[0][0]!==N[0]||d.mouse[0][1]!==N[1])&&(d.mouse[1]=E.invert(d.mouse[0]=N)),clearTimeout(d.wheel);else{if(E.k===z)return;d.mouse=[N,E.invert(N)],Ht(this),d.start()}St(v),d.wheel=setTimeout(x,y),d.zoom("mouse",e(P(M(E,z),d.mouse[0],d.mouse[1]),d.extent,o));function x(){d.wheel=null,d.end()}}function X(v,...g){if(c||!t.apply(this,arguments))return;var d=v.currentTarget,E=T(this,g,!0).event(v),z=U.select(v.view).on("mousemove.zoom",G,!0).on("mouseup.zoom",H,!0),N=vt.pointer(v,d),x=v.clientX,$=v.clientY;nr(v.view),fn(v),E.mouse=[N,this.__zoom.invert(N)],Ht(this),E.start();function G(V){if(St(V),!E.moved){var W=V.clientX-x,lt=V.clientY-$;E.moved=W*W+lt*lt>m}E.event(V).zoom("mouse",e(P(E.that.__zoom,E.mouse[0]=vt.pointer(V,d),E.mouse[1]),E.extent,o))}function H(V){z.on("mousemove.zoom mouseup.zoom",null),er(V.view,E.moved),St(V),E.event(V).end()}}function q(v,...g){if(t.apply(this,arguments)){var d=this.__zoom,E=vt.pointer(v.changedTouches?v.changedTouches[0]:v,this),z=d.invert(E),N=d.k*(v.shiftKey?.5:2),x=e(P(M(d,N),E,z),n.apply(this,g),o);St(v),l>0?U.select(this).transition().duration(l).call(A,x,E,v):U.select(this).call(w.transform,x,E,v)}}function R(v,...g){if(t.apply(this,arguments)){var d=v.touches,E=d.length,z=T(this,g,v.changedTouches.length===E).event(v),N,x,$,G;for(fn(v),x=0;x<E;++x)$=d[x],G=vt.pointer($,this),G=[G,this.__zoom.invert(G),$.identifier],z.touch0?!z.touch1&&z.touch0[2]!==G[2]&&(z.touch1=G,z.taps=0):(z.touch0=G,N=!0,z.taps=1+!!a);a&&(a=clearTimeout(a)),N&&(z.taps<2&&(f=G[0],a=setTimeout(function(){a=null},h)),Ht(this),z.start())}}function Z(v,...g){if(this.__zooming){var d=T(this,g).event(v),E=v.changedTouches,z=E.length,N,x,$,G;for(St(v),N=0;N<z;++N)x=E[N],$=vt.pointer(x,this),d.touch0&&d.touch0[2]===x.identifier?d.touch0[0]=$:d.touch1&&d.touch1[2]===x.identifier&&(d.touch1[0]=$);if(x=d.that.__zoom,d.touch1){var H=d.touch0[0],V=d.touch0[1],W=d.touch1[0],lt=d.touch1[1],nt=(nt=W[0]-H[0])*nt+(nt=W[1]-H[1])*nt,ct=(ct=lt[0]-V[0])*ct+(ct=lt[1]-V[1])*ct;x=M(x,Math.sqrt(nt/ct)),$=[(H[0]+W[0])/2,(H[1]+W[1])/2],G=[(V[0]+lt[0])/2,(V[1]+lt[1])/2]}else if(d.touch0)$=d.touch0[0],G=d.touch0[1];else return;d.zoom("touch",e(P(x,$,G),d.extent,o))}}function O(v,...g){if(this.__zooming){var d=T(this,g).event(v),E=v.changedTouches,z=E.length,N,x;for(fn(v),c&&clearTimeout(c),c=setTimeout(function(){c=null},h),N=0;N<z;++N)x=E[N],d.touch0&&d.touch0[2]===x.identifier?delete d.touch0:d.touch1&&d.touch1[2]===x.identifier&&delete d.touch1;if(d.touch1&&!d.touch0&&(d.touch0=d.touch1,delete d.touch1),d.touch0)d.touch0[1]=this.__zoom.invert(d.touch0[0]);else if(d.end(),d.taps===2&&(x=vt.pointer(x,this),Math.hypot(f[0]-x[0],f[1]-x[1])<_)){var $=U.select(this).on("dblclick.zoom");$&&$.apply(this,arguments)}}}return w.wheelDelta=function(v){return arguments.length?(i=typeof v=="function"?v:Lt(+v),w):i},w.filter=function(v){return arguments.length?(t=typeof v=="function"?v:Lt(!!v),w):t},w.touchable=function(v){return arguments.length?(r=typeof v=="function"?v:Lt(!!v),w):r},w.extent=function(v){return arguments.length?(n=typeof v=="function"?v:Lt([[+v[0][0],+v[0][1]],[+v[1][0],+v[1][1]]]),w):n},w.scaleExtent=function(v){return arguments.length?(u[0]=+v[0],u[1]=+v[1],w):[u[0],u[1]]},w.translateExtent=function(v){return arguments.length?(o[0][0]=+v[0][0],o[1][0]=+v[1][0],o[0][1]=+v[0][1],o[1][1]=+v[1][1],w):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},w.constrain=function(v){return arguments.length?(e=v,w):e},w.duration=function(v){return arguments.length?(l=+v,w):l},w.interpolate=function(v){return arguments.length?(p=v,w):p},w.on=function(){var v=s.on.apply(s,arguments);return v===s?w:v},w.clickDistance=function(v){return arguments.length?(m=(v=+v)*v,w):Math.sqrt(m)},w.tapDistance=function(v){return arguments.length?(_=+v,w):_},w}function mo(t){if(!t)throw new Error("geojson is required");switch(t.type){case"Feature":return We(t);case"FeatureCollection":return wo(t);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return Ln(t);default:throw new Error("unknown GeoJSON type")}}function We(t){const n={type:"Feature"};return Object.keys(t).forEach(e=>{switch(e){case"type":case"properties":case"geometry":return;default:n[e]=t[e]}}),n.properties=Ze(t.properties),t.geometry==null?n.geometry=null:n.geometry=Ln(t.geometry),n}function Ze(t){const n={};return t&&Object.keys(t).forEach(e=>{const i=t[e];typeof i=="object"?i===null?n[e]=null:Array.isArray(i)?n[e]=i.map(r=>r):n[e]=Ze(i):n[e]=i}),n}function wo(t){const n={type:"FeatureCollection"};return Object.keys(t).forEach(e=>{switch(e){case"type":case"features":return;default:n[e]=t[e]}}),n.features=t.features.map(e=>We(e)),n}function Ln(t){const n={type:t.type};return t.bbox&&(n.bbox=t.bbox),t.type==="GeometryCollection"?(n.geometries=t.geometries.map(e=>Ln(e)),n):(n.coordinates=Ke(t.coordinates),n)}function Ke(t){const n=t;return typeof n[0]!="object"?n.slice():n.map(e=>Ke(e))}function _o(t){if(Array.isArray(t))return t;if(t.type==="Feature"){if(t.geometry!==null)return t.geometry.coordinates}else if(t.coordinates)return t.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function Fn(t){const n=_o(t);let e=0,i=1,r,u;for(;i<n.length;)r=u||n[0],u=n[i],e+=(u[0]-r[0])*(u[1]+r[1]),i++;return e>0}function Eo(t,n={}){const e={type:"FeatureCollection"};return n.id&&(e.id=n.id),n.bbox&&(e.bbox=n.bbox),e.features=t,e}function So(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function he(t,n){if(t.type==="Feature")n(t,0);else if(t.type==="FeatureCollection")for(var e=0;e<t.features.length&&n(t.features[e],e)!==!1;e++);}function Je(t,n){var e,i,r,u,o,l,p,s,a,f,c=0,h=t.type==="FeatureCollection",y=t.type==="Feature",m=h?t.features.length:1;for(e=0;e<m;e++){for(l=h?t.features[e].geometry:y?t.geometry:t,s=h?t.features[e].properties:y?t.properties:{},a=h?t.features[e].bbox:y?t.bbox:void 0,f=h?t.features[e].id:y?t.id:void 0,p=l?l.type==="GeometryCollection":!1,o=p?l.geometries.length:1,r=0;r<o;r++){if(u=p?l.geometries[r]:l,u===null){if(n(null,c,s,a,f)===!1)return!1;continue}switch(u.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":{if(n(u,c,s,a,f)===!1)return!1;break}case"GeometryCollection":{for(i=0;i<u.geometries.length;i++)if(n(u.geometries[i],c,s,a,f)===!1)return!1;break}default:throw new Error("Unknown Geometry Type")}}c++}}function Yt(t){if(Array.isArray(t))return t;if(t.type==="Feature"){if(t.geometry!==null)return t.geometry.coordinates}else if(t.coordinates)return t.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function Mo(t,n={}){var e,i;if(n=n||{},!So(n))throw new Error("options is invalid");const r=(e=n.mutate)!=null?e:!1,u=(i=n.reverse)!=null?i:!1;if(!t)throw new Error("<geojson> is required");if(typeof u!="boolean")throw new Error("<reverse> must be a boolean");if(typeof r!="boolean")throw new Error("<mutate> must be a boolean");!r&&t.type!=="Point"&&t.type!=="MultiPoint"&&(t=mo(t));const o=[];switch(t.type){case"GeometryCollection":return Je(t,function(l){Wt(l,u)}),t;case"FeatureCollection":return he(t,function(l){const p=Wt(l,u);he(p,function(s){o.push(s)})}),Eo(o)}return Wt(t,u)}function Wt(t,n){switch(t.type==="Feature"?t.geometry.type:t.type){case"GeometryCollection":return Je(t,function(i){Wt(i,n)}),t;case"LineString":return pe(Yt(t),n),t;case"Polygon":return ve(Yt(t),n),t;case"MultiLineString":return Yt(t).forEach(function(i){pe(i,n)}),t;case"MultiPolygon":return Yt(t).forEach(function(i){ve(i,n)}),t;case"Point":case"MultiPoint":return t}}function pe(t,n){Fn(t)===n&&t.reverse()}function ve(t,n){Fn(t[0])!==n&&t[0].reverse();for(let e=1;e<t.length;e++)Fn(t[e])===n&&t[e].reverse()}var zo=Mo;exports.geoAlbersUsa=Wi;exports.geoEqualEarth=bi;exports.geoMercator=Ki;exports.geoNaturalEarth1=ji;exports.geoOrthographic=tr;exports.geoPath=$i;exports.index_default=zo;exports.index_default$1=li;exports.zoom=yo;
|
|
2
|
+
//# sourceMappingURL=index-DLFt97gy.cjs.map
|