@undp/data-viz 2.0.9 → 2.1.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.d.ts +2 -0
- package/dist/AreaChart.js +1 -1
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.d.ts +2 -0
- package/dist/BarGraph.js +1188 -1213
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.d.ts +2 -0
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.d.ts +2 -0
- package/dist/BeeSwarmChart.js +258 -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 +2 -0
- package/dist/BiVariateChoroplethMap.js +126 -131
- 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 +404 -413
- 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 +179 -184
- 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 +2 -0
- package/dist/ChoroplethMap.js +268 -273
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.d.ts +2 -0
- package/dist/CirclePackingGraph.js +1 -1
- package/dist/DataCards.d.ts +2 -0
- package/dist/DataCards.js +1 -1
- package/dist/DataTable.d.ts +2 -0
- package/dist/DetailsModal-0Ry5nXiC.js +32 -0
- package/dist/DetailsModal-0Ry5nXiC.js.map +1 -0
- package/dist/DetailsModal-BN0HDFlV.cjs +2 -0
- package/dist/DetailsModal-BN0HDFlV.cjs.map +1 -0
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.d.ts +2 -0
- package/dist/DifferenceLineChart.js +1 -1
- package/dist/DonutChart.cjs +1 -1
- package/dist/DonutChart.cjs.map +1 -1
- package/dist/DonutChart.d.ts +2 -0
- package/dist/DonutChart.js +185 -190
- package/dist/DonutChart.js.map +1 -1
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.d.ts +2 -0
- package/dist/DotDensityMap.js +198 -203
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.d.ts +2 -0
- 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 +364 -373
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/GeoHubCompareMaps.d.ts +2 -0
- package/dist/GeoHubMap.d.ts +2 -0
- package/dist/GeoHubMapWithLayerSelection.d.ts +2 -0
- package/dist/{GraphEl-BcKU0bG1.cjs → GraphEl-B16EYkko.cjs} +2 -2
- package/dist/{GraphEl-BcKU0bG1.cjs.map → GraphEl-B16EYkko.cjs.map} +1 -1
- package/dist/{GraphEl-CGq1EWRn.js → GraphEl-ebgfxefq.js} +3 -3
- package/dist/{GraphEl-CGq1EWRn.js.map → GraphEl-ebgfxefq.js.map} +1 -1
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.cjs.map +1 -1
- package/dist/GriddedGraphs.d.ts +2 -0
- package/dist/GriddedGraphs.js +19 -19
- package/dist/GriddedGraphs.js.map +1 -1
- package/dist/GriddedGraphsFromConfig.d.ts +2 -0
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.cjs.map +1 -1
- package/dist/HeatMap.d.ts +2 -0
- package/dist/HeatMap.js +111 -116
- package/dist/HeatMap.js.map +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.d.ts +2 -0
- package/dist/Histogram.js +1 -1
- package/dist/HybridMap.cjs +1 -1
- package/dist/HybridMap.cjs.map +1 -1
- package/dist/HybridMap.d.ts +2 -0
- package/dist/HybridMap.js +202 -207
- package/dist/HybridMap.js.map +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.d.ts +2 -0
- package/dist/LineChartWithConfidenceInterval.js +1 -1
- package/dist/{Modal-DGcuAHyK.js → Modal-bMQA6bL_.js} +5 -5
- package/dist/{Modal-DGcuAHyK.js.map → Modal-bMQA6bL_.js.map} +1 -1
- package/dist/MultiGraphDashboard.cjs +1 -1
- package/dist/MultiGraphDashboard.cjs.map +1 -1
- package/dist/MultiGraphDashboard.d.ts +2 -0
- package/dist/MultiGraphDashboard.js +10 -10
- package/dist/MultiGraphDashboard.js.map +1 -1
- package/dist/MultiGraphDashboardFromConfig.d.ts +2 -0
- package/dist/MultiGraphDashboardWideToLongFormat.d.ts +2 -0
- package/dist/MultiGraphDashboardWideToLongFormat.js +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.d.ts +2 -0
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.d.ts +2 -0
- package/dist/MultiLineAltChart.js +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.d.ts +2 -0
- package/dist/MultiLineChart.js +1 -1
- package/dist/ParetoChart.cjs +1 -1
- package/dist/ParetoChart.cjs.map +1 -1
- package/dist/ParetoChart.d.ts +2 -0
- package/dist/ParetoChart.js +187 -192
- package/dist/ParetoChart.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +2 -0
- package/dist/PerformanceIntensiveMultiGraphDashboard.js +16 -16
- package/dist/PerformanceIntensiveMultiGraphDashboard.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +2 -0
- package/dist/PerformanceIntensiveScrollStory.d.ts +2 -0
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.cjs.map +1 -1
- package/dist/RadarChart.d.ts +2 -0
- package/dist/RadarChart.js +158 -163
- package/dist/RadarChart.js.map +1 -1
- package/dist/SankeyChart.cjs +1 -1
- package/dist/SankeyChart.cjs.map +1 -1
- package/dist/SankeyChart.d.ts +2 -0
- package/dist/SankeyChart.js +172 -177
- package/dist/SankeyChart.js.map +1 -1
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.cjs.map +1 -1
- package/dist/ScatterPlot.d.ts +2 -0
- package/dist/ScatterPlot.js +222 -227
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/ScrollStory.d.ts +2 -0
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.d.ts +2 -0
- package/dist/SimpleLineChart.js +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.cjs.map +1 -1
- package/dist/SingleGraphDashboard.d.ts +2 -0
- package/dist/SingleGraphDashboard.js +24 -24
- package/dist/SingleGraphDashboard.js.map +1 -1
- package/dist/SingleGraphDashboardFromConfig.d.ts +2 -0
- package/dist/SingleGraphDashboardGeoHubMaps.d.ts +2 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +2 -0
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.d.ts +2 -0
- package/dist/SingleGraphDashboardThreeDGraphs.js +46 -46
- package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +2 -0
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.cjs.map +1 -1
- package/dist/SlopeChart.d.ts +2 -0
- package/dist/SlopeChart.js +182 -187
- package/dist/SlopeChart.js.map +1 -1
- package/dist/SparkLine.cjs +1 -1
- package/dist/SparkLine.d.ts +2 -0
- package/dist/SparkLine.js +1 -1
- package/dist/StatCardFromData.d.ts +2 -0
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.cjs.map +1 -1
- package/dist/StripChart.d.ts +2 -0
- package/dist/StripChart.js +249 -258
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.d.ts +2 -0
- package/dist/ThreeDGlobe.js +142 -147
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/Tooltip-Dj5eVppQ.js +45 -0
- package/dist/Tooltip-Dj5eVppQ.js.map +1 -0
- package/dist/Tooltip-uUdw6wJL.cjs +2 -0
- package/dist/Tooltip-uUdw6wJL.cjs.map +1 -0
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.cjs.map +1 -1
- package/dist/TreeMapGraph.d.ts +2 -0
- package/dist/TreeMapGraph.js +159 -164
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/Types.d.ts +2 -0
- package/dist/UnitChart.d.ts +2 -0
- package/dist/{checkIfMultiple-Y9iKaV_u.js → checkIfMultiple-CIRtG0KE.js} +2 -2
- package/dist/{checkIfMultiple-Y9iKaV_u.js.map → checkIfMultiple-CIRtG0KE.js.map} +1 -1
- package/dist/index-BBV4tAeA.js +330 -0
- package/dist/index-BBV4tAeA.js.map +1 -0
- package/dist/index-CF5hnGvG.cjs +2 -0
- package/dist/index-CF5hnGvG.cjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/Tooltip-4dJo4_AF.cjs +0 -2
- package/dist/Tooltip-4dJo4_AF.cjs.map +0 -1
- package/dist/Tooltip-CwWUegPB.js +0 -43
- package/dist/Tooltip-CwWUegPB.js.map +0 -1
- package/dist/index-B2LQV7Tk.js +0 -335
- package/dist/index-B2LQV7Tk.js.map +0 -1
- package/dist/index-xRHRLDIp.cjs +0 -2
- package/dist/index-xRHRLDIp.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: d.width ? 0 : 1,\r\n flexShrink: d.ui !== 'radio' || d.width ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"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"}
|
|
@@ -95,6 +95,7 @@ declare interface ClassNameObject {
|
|
|
95
95
|
regLine?: string;
|
|
96
96
|
dataCards?: string;
|
|
97
97
|
colorLegend?: string;
|
|
98
|
+
modal?: string;
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
declare interface ColumnConfigurationDataType {
|
|
@@ -617,6 +618,7 @@ declare interface StyleObject {
|
|
|
617
618
|
mouseOverLine?: React.CSSProperties;
|
|
618
619
|
regLine?: React.CSSProperties;
|
|
619
620
|
dataCards?: React.CSSProperties;
|
|
621
|
+
modal?: React.CSSProperties;
|
|
620
622
|
}
|
|
621
623
|
|
|
622
624
|
declare interface TimelineDataType {
|
|
@@ -3,7 +3,7 @@ import { useState as g, useEffectEvent as F, useEffect as v } from "react";
|
|
|
3
3
|
import { i as U } from "./index-BuwmuDFJ.js";
|
|
4
4
|
import { f as b } from "./index-EArKRVKg.js";
|
|
5
5
|
import { j as A, D as $ } from "./DropdownSelect-BbdPQa2k.js";
|
|
6
|
-
import { b as E, y as I, h as z, $ as q, P as J } from "./checkIfMultiple-
|
|
6
|
+
import { b as E, y as I, h as z, $ as q, P as J } from "./checkIfMultiple-CIRtG0KE.js";
|
|
7
7
|
import { G as B } from "./GraphContainer-CRqzdKu2.js";
|
|
8
8
|
import { SingleGraphDashboard as K } from "./SingleGraphDashboard.js";
|
|
9
9
|
import { f as Q, a as X, b as Y, c as Z, t as _ } from "./fetchAndParseData-BpqkBPQL.js";
|
|
@@ -14,16 +14,16 @@ import { t as N } from "./transformDataForSelect-D8AuvYdf.js";
|
|
|
14
14
|
const x = (f) => f.map((t) => t.columnWidth || 1).reduce((t, m) => t + m, 0), la = ["barChart", "choroplethMap", "biVariateChoroplethMap", "circlePacking", "treeMap"];
|
|
15
15
|
function va(f) {
|
|
16
16
|
const {
|
|
17
|
-
dashboardID:
|
|
17
|
+
dashboardID: w,
|
|
18
18
|
dashboardLayout: s,
|
|
19
19
|
dataSettings: t,
|
|
20
20
|
filters: m,
|
|
21
21
|
debugMode: d,
|
|
22
|
-
theme:
|
|
22
|
+
theme: y = "light",
|
|
23
23
|
readableHeader: O,
|
|
24
24
|
dataFilters: R,
|
|
25
25
|
noOfFiltersPerRow: p = 4,
|
|
26
|
-
filterPosition:
|
|
26
|
+
filterPosition: S,
|
|
27
27
|
uiMode: h = "normal",
|
|
28
28
|
graphStyles: H,
|
|
29
29
|
graphClassNames: M
|
|
@@ -75,15 +75,15 @@ function va(f) {
|
|
|
75
75
|
value: l
|
|
76
76
|
} : r));
|
|
77
77
|
};
|
|
78
|
-
return /* @__PURE__ */ i.jsxs(B, { id:
|
|
78
|
+
return /* @__PURE__ */ i.jsxs(B, { id: w, "aria-label": "This is a dashboard", backgroundColor: s.backgroundColor ?? !1, theme: y || "light", language: s.language || "en", padding: s.padding, children: [
|
|
79
79
|
s.title || s.description ? /* @__PURE__ */ i.jsx(ea, { graphTitle: s.title, graphDescription: s.description, isDashboard: !0 }) : null,
|
|
80
80
|
/* @__PURE__ */ i.jsxs("div", { className: "flex gap-4 flex-wrap", children: [
|
|
81
81
|
n.length !== 0 ? /* @__PURE__ */ i.jsx("div", { className: "flex-grow flex-shrink-0", style: {
|
|
82
|
-
width:
|
|
82
|
+
width: S === "side" ? "280px" : "100%"
|
|
83
83
|
}, children: /* @__PURE__ */ i.jsx("div", { className: "flex flex-wrap items-start gap-4 w-full sticky top-4", children: n?.map((e, l) => /* @__PURE__ */ i.jsxs("div", { style: {
|
|
84
84
|
width: e.width || `calc(${100 / p}% - ${(p - 1) / p}rem)`,
|
|
85
|
-
flexGrow: 1,
|
|
86
|
-
flexShrink: 0,
|
|
85
|
+
flexGrow: e.width ? 0 : 1,
|
|
86
|
+
flexShrink: e.ui !== "radio" || e.width ? 0 : 1,
|
|
87
87
|
minWidth: "240px"
|
|
88
88
|
}, children: [
|
|
89
89
|
/* @__PURE__ */ i.jsx(E, { className: "mb-2", children: e.label }),
|
|
@@ -103,7 +103,7 @@ function va(f) {
|
|
|
103
103
|
] })
|
|
104
104
|
] }, l)) }) }) : null,
|
|
105
105
|
/* @__PURE__ */ i.jsx("div", { className: "flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]", style: {
|
|
106
|
-
width:
|
|
106
|
+
width: S === "side" ? "calc(100% - 280px - 1rem)" : "100%"
|
|
107
107
|
}, children: s.rows.map((e, l) => /* @__PURE__ */ i.jsx("div", { className: "flex flex-wrap items-stretch gap-4 w-full h-auto", style: {
|
|
108
108
|
minHeight: `${e.height || 0}px`
|
|
109
109
|
}, children: e.columns.map((a, r) => /* @__PURE__ */ i.jsx("div", { className: "flex bg-transparent grow min-w-60", style: {
|
|
@@ -121,7 +121,7 @@ function va(f) {
|
|
|
121
121
|
radius: a.graphType === "donutChart" ? void 0 : a.settings?.radius,
|
|
122
122
|
size: a.graphType === "unitChart" ? a.settings?.size : void 0,
|
|
123
123
|
language: a.settings?.language || s.language,
|
|
124
|
-
theme: a.settings?.theme ||
|
|
124
|
+
theme: a.settings?.theme || y
|
|
125
125
|
}, dataSettings: {
|
|
126
126
|
data: V ? ta(V, R || []) : void 0
|
|
127
127
|
}, updateFilters: a.attachedFilter && la.indexOf(a.graphType) !== -1 && n.findIndex((o) => o.filter === a.attachedFilter) !== -1 ? (o) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiGraphDashboard.js","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","fetchData","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiGraphDashboard.js","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: d.width ? 0 : 1,\r\n flexShrink: d.ui !== 'radio' || d.width ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","fetchData","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"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"}
|
|
@@ -95,6 +95,7 @@ declare interface ClassNameObject {
|
|
|
95
95
|
regLine?: string;
|
|
96
96
|
dataCards?: string;
|
|
97
97
|
colorLegend?: string;
|
|
98
|
+
modal?: string;
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
declare interface ColumnConfigurationDataType {
|
|
@@ -621,6 +622,7 @@ declare interface StyleObject {
|
|
|
621
622
|
mouseOverLine?: React.CSSProperties;
|
|
622
623
|
regLine?: React.CSSProperties;
|
|
623
624
|
dataCards?: React.CSSProperties;
|
|
625
|
+
modal?: React.CSSProperties;
|
|
624
626
|
}
|
|
625
627
|
|
|
626
628
|
declare interface TimelineDataType {
|
|
@@ -30,6 +30,7 @@ declare interface ClassNameObject {
|
|
|
30
30
|
regLine?: string;
|
|
31
31
|
dataCards?: string;
|
|
32
32
|
colorLegend?: string;
|
|
33
|
+
modal?: string;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
declare interface ColumnConfigurationDataType {
|
|
@@ -124,6 +125,7 @@ declare interface StyleObject {
|
|
|
124
125
|
mouseOverLine?: React.CSSProperties;
|
|
125
126
|
regLine?: React.CSSProperties;
|
|
126
127
|
dataCards?: React.CSSProperties;
|
|
128
|
+
modal?: React.CSSProperties;
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
export { }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as i } from "./index-CHPV5EwG-Curnpaqc.js";
|
|
2
2
|
import { useState as g, useEffectEvent as w, useEffect as p } from "react";
|
|
3
3
|
import { j as A, D as E } from "./DropdownSelect-BbdPQa2k.js";
|
|
4
|
-
import { b as R } from "./checkIfMultiple-
|
|
4
|
+
import { b as R } from "./checkIfMultiple-CIRtG0KE.js";
|
|
5
5
|
import { w as V } from "./Spinner-D7rnnwnA.js";
|
|
6
6
|
import { SingleGraphDashboard as U } from "./SingleGraphDashboard.js";
|
|
7
7
|
import { f as H, a as $, b as z, c as G, t as M } from "./fetchAndParseData-BpqkBPQL.js";
|
|
@@ -30,6 +30,7 @@ declare interface ClassNameObject {
|
|
|
30
30
|
regLine?: string;
|
|
31
31
|
dataCards?: string;
|
|
32
32
|
colorLegend?: string;
|
|
33
|
+
modal?: string;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
declare interface ColumnConfigurationDataType {
|
|
@@ -129,6 +130,7 @@ declare interface StyleObject {
|
|
|
129
130
|
mouseOverLine?: React.CSSProperties;
|
|
130
131
|
regLine?: React.CSSProperties;
|
|
131
132
|
dataCards?: React.CSSProperties;
|
|
133
|
+
modal?: React.CSSProperties;
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
export { }
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-CHPV5EwG-CTPQjnHt.cjs"),R=require("react"),b=require("./parse-hMnG_lRV.cjs"),qe=require("./index-Cno4Q0YE.cjs"),Se=require("./numberFormattingFunction-02t-wJta.cjs"),Ge=require("./Tooltip-4dJo4_AF.cjs"),v=require("./checkIfNullOrUndefined-BCW3Y1ML.cjs"),Le=require("./customArea-CMF5g-C3.cjs"),We=require("./AxisTitle-sS5bLLR7.cjs"),Ye=require("./Axis-DxRV2yMi.cjs"),Xe=require("./XTicksAndGridLines-B6CELS7q.cjs"),Pe=require("./ReferenceLine-BH0qdf4R.cjs"),Be=require("./YTicksAndGridLines-4pxTRlRK.cjs"),ze=require("./index-B_sAFsEV.cjs"),G=require("./Colors.cjs"),Ee=require("./uniqBy-O05lp2S5.cjs"),Je=require("./sort-O96oMZLb.cjs"),Ke=require("./time-CZd5YLSP.cjs"),Qe=require("./linear-BwPAspcq.cjs"),Ze=require("./delaunay-rcy0HhZi.cjs"),Me=require("./line-DHV4JwCR.cjs"),Re=require("./step-BZ3C8QFW.cjs"),_e=require("./select-Bnfk0lJx.cjs"),Te=require("./init-DU0ybBc_.cjs"),ti=require("./pointer-Dkq5NV1q.cjs"),ei=require("./use-in-view-QcfiW0w3.cjs"),Ut=require("./proxy-BxvUI_9l.cjs"),ii=require("./GraphFooter.cjs"),oi=require("./GraphHeader.cjs"),ni=require("./EmptyState-sAEZ_5rU.cjs"),ri=require("./ColorLegendWithMouseOver.cjs"),Ie=require("./GraphContainer-d8A46BK2.cjs"),si=require("./getNoOfTicks-C_1CFXv_.cjs");function li(i){const t=n.compilerRuntimeExports.c(128),{data:u,width:tt,height:Ft,lineColors:f,dateFormat:r,noOfXTicks:me,rightMargin:et,topMargin:Ht,bottomMargin:it,suffix:$,prefix:h,leftMargin:C,tooltip:yt,onSeriesMouseOver:ot,refValues:nt,highlightAreaSettings:Gt,minValue:W,maxValue:vt,highlightedLines:V,animate:s,rtl:Y,strokeWidth:q,showDots:oe,annotations:jt,customHighlightAreaSettings:Wt,yAxisTitle:X,noOfYTicks:Yt,minDate:Xt,maxDate:Pt,curveType:rt,styles:j,colorDomain:k,selectedColor:Ot,classNames:w,showLabels:pe,dimmedOpacity:N,precision:P,naLabel:de,customLayers:B}=i,bt=R.useRef(null);let z;t[0]!==s.amount||t[1]!==s.once?(z={once:s.once,amount:s.amount},t[0]=s.amount,t[1]=s.once,t[2]=z):z=t[2];const x=ei.useInView(bt,z),[D,ne]=R.useState(!1);let Ct,st;t[3]!==s.duration||t[4]!==D||t[5]!==x?(Ct=()=>{if(x&&!D){const e=setTimeout(()=>{ne(!0)},(s.duration+.5)*1e3);return()=>clearTimeout(e)}},st=[x,D,s.duration],t[3]=s.duration,t[4]=D,t[5]=x,t[6]=Ct,t[7]=st):(Ct=t[6],st=t[7]),R.useEffect(Ct,st);const re=rt==="linear"?Me.curveLinear:rt==="step"?Re.curveStep:rt==="stepAfter"?Re.stepAfter:rt==="stepBefore"?Re.stepBefore:Re.monotoneX;let wt;t[8]!==r?(wt=e=>({...e,date:b.parse(`${e.date}`,r,new Date)}),t[8]=r,t[9]=wt):wt=t[9];const l=qe.orderBy(u.map(wt),["date"],["asc"]).filter(Vi),g=Ee.uniqBy(l,"label",!0);let Rt;t[10]!==r?(Rt=e=>b.parse(`${e}`,r,new Date),t[10]=r,t[11]=Rt):Rt=t[11];const Bt=Je.sort(Ee.uniqBy(u,"date",!0).map(Rt),$i),[m,lt]=R.useState(void 0),[at,J]=R.useState(void 0),[ct,K]=R.useState(void 0),Et=X?C+30:C;let ut;t[12]!==it||t[13]!==et||t[14]!==Et||t[15]!==Ht?(ut={top:Ht,bottom:it,left:Et,right:et},t[12]=it,t[13]=et,t[14]=Et,t[15]=Ht,t[16]=ut):ut=t[16];const d=ut,se=R.useRef(null),le=g.map(e=>qe.orderBy(l.filter(o=>o.label==e),["date"],["asc"]));let ft;if(t[17]!==r||t[18]!==Gt){let e;t[20]!==r?(e=o=>({...o,coordinates:[o.coordinates[0]===null?null:b.parse(`${o.coordinates[0]}`,r,new Date),o.coordinates[1]===null?null:b.parse(`${o.coordinates[1]}`,r,new Date)]}),t[20]=r,t[21]=e):e=t[21],ft=Gt.map(e),t[17]=r,t[18]=Gt,t[19]=ft}else ft=t[19];const At=ft;let xt;if(t[22]!==Wt||t[23]!==r){let e;t[25]!==r?(e=o=>({...o,coordinates:o.coordinates.map((y,Vt)=>Vt%2===0?b.parse(`${y}`,r,new Date):y)}),t[25]=r,t[26]=e):e=t[26],xt=Wt.map(e),t[22]=Wt,t[23]=r,t[24]=xt}else xt=t[24];const zt=xt,p=tt-d.left-d.right,E=Ft-d.top-d.bottom,ae=Xt?b.parse(`${Xt}`,r,new Date):Bt[0],Jt=Pt?b.parse(`${Pt}`,r,new Date):Bt[Bt.length-1],O=v.checkIfNullOrUndefined(W)?Math.min(...l.map(Ti).filter(Ii))?Math.min(...l.map(Mi).filter(Si))>0?0:Math.min(...l.map(qi).filter(Li)):0:W,U=Math.max(...l.map(Di).filter(Ni))?Math.max(...l.map(ki).filter(Ai)):0,a=Ke.time().domain([ae,Jt]).range([0,p]);let Q;t[27]!==O||t[28]!==W?(Q=v.checkIfNullOrUndefined(W)?O:W,t[27]=O,t[28]=W,t[29]=Q):Q=t[29];let L;t[30]!==U||t[31]!==vt?(L=v.checkIfNullOrUndefined(vt)?U>0?U:0:vt,t[30]=U,t[31]=vt,t[32]=L):L=t[32];const c=Qe.linear().domain([Q,L]).range([E,0]).nice(),ce=Ze.Delaunay.from(l.filter(Ei),e=>a(e.date),e=>c(e.y)).voronoi([0,0,p<0?0:p,E<0?0:E]),kt=Me.line().x(e=>a(e.date)).y(e=>c(e.y)).curve(re),Nt=c.ticks(Yt),Kt=a.ticks(me);R.useEffect(()=>{const e=y=>{const Vt=l[Te.bisectCenter(l.map(Ri),a.invert(ti.pointer(y)[0]),0)];lt(Vt||l[l.length-1]),K(y.clientY),J(y.clientX),ot?.(Vt||l[l.length-1])},o=()=>{lt(void 0),J(void 0),K(void 0)};_e.select(se.current).on("mousemove",e).on("mouseout",o),ot?.(void 0)},[a,l,ot]);let Z;t[33]!==s||t[34]!==E||t[35]!==p||t[36]!==At||t[37]!==x||t[38]!==a?(Z=n.jsxRuntimeExports.jsx(ze.HighlightArea,{areaSettings:At,width:p,height:E,scale:a,animate:s,isInView:x}),t[33]=s,t[34]=E,t[35]=p,t[36]=At,t[37]=x,t[38]=a,t[39]=Z):Z=t[39];const Dt=j?.yAxis?.gridLines,S=j?.yAxis?.labels;let mt;t[40]!==Dt||t[41]!==S?(mt={gridLines:Dt,labels:S},t[40]=Dt,t[41]=S,t[42]=mt):mt=t[42];const Lt=w?.yAxis?.gridLines,qt=w?.yAxis?.labels;let pt;t[43]!==Lt||t[44]!==qt?(pt={gridLines:Lt,labels:qt},t[43]=Lt,t[44]=qt,t[45]=pt):pt=t[45];const dt=c(O<0?0:O),St=c(O<0?0:O),Mt=0-C,_=p+d.right,ue=O<0?0:O;let M;t[46]!==P||t[47]!==h||t[48]!==$||t[49]!==ue?(M=Se.numberFormattingFunction(ue,"NA",P,h,$),t[46]=P,t[47]=h,t[48]=$,t[49]=ue,t[50]=M):M=t[50];const fe=0-C,It=c(O<0?0:O),xe=U<0?"1em":-5;let F;t[51]!==fe||t[52]!==It||t[53]!==xe?(F={x:fe,y:It,dx:0,dy:xe},t[51]=fe,t[52]=It,t[53]=xe,t[54]=F):F=t[54];const Qt=w?.xAxis?.axis,ht=w?.yAxis?.labels;let I;t[55]!==Qt||t[56]!==ht?(I={axis:Qt,label:ht},t[55]=Qt,t[56]=ht,t[57]=I):I=t[57];const Tt=j?.xAxis?.axis,$t=j?.yAxis?.labels;let A;t[58]!==Tt||t[59]!==$t?(A={axis:Tt,label:$t},t[58]=Tt,t[59]=$t,t[60]=A):A=t[60];let T;t[61]!==dt||t[62]!==St||t[63]!==Mt||t[64]!==_||t[65]!==M||t[66]!==F||t[67]!==I||t[68]!==A?(T=n.jsxRuntimeExports.jsx(Ye.Axis,{y1:dt,y2:St,x1:Mt,x2:_,label:M,labelPos:F,classNames:I,styles:A}),t[61]=dt,t[62]=St,t[63]=Mt,t[64]=_,t[65]=M,t[66]=F,t[67]=I,t[68]=A,t[69]=T):T=t[69];const H=0-C-15,gt=E/2,Zt=j?.yAxis?.title,_t=w?.yAxis?.title;let he;t[70]!==H||t[71]!==gt||t[72]!==Zt||t[73]!==_t||t[74]!==X?(he=n.jsxRuntimeExports.jsx(We.AxisTitle,{x:H,y:gt,style:Zt,className:_t,text:X,rotate90:!0}),t[70]=H,t[71]=gt,t[72]=Zt,t[73]=_t,t[74]=X,t[75]=he):he=t[75];let ge;t[76]!==r?(ge=e=>b.format(e,r),t[76]=r,t[77]=ge):ge=t[77];const $e=Kt.map(ge),Ve=Kt.map(e=>a(e)),Ae=j?.xAxis?.gridLines,ke=j?.xAxis?.labels;let ye;t[78]!==Ae||t[79]!==ke?(ye={gridLines:Ae,labels:ke},t[78]=Ae,t[79]=ke,t[80]=ye):ye=t[80];const Ne=w?.xAxis?.gridLines;let te;t[81]!==Ne?(te=n.mo("opacity-0",Ne),t[81]=Ne,t[82]=te):te=t[82];const De=w?.xAxis?.labels;let ee;t[83]!==De?(ee=n.mo("fill-primary-gray-700 dark:fill-primary-gray-300 xs:max-[360px]:hidden text-[9px] md:text-[10px] lg:text-xs",De),t[83]=De,t[84]=ee):ee=t[84];let ve;t[85]!==te||t[86]!==ee?(ve={gridLines:te,labels:ee},t[85]=te,t[86]=ee,t[87]=ve):ve=t[87];let je;t[88]!==B?(je=B.filter(bi).map(Oi),t[88]=B,t[89]=je):je=t[89];const Ue=l.filter(ui).map((e,o)=>n.jsxRuntimeExports.jsx("g",{children:n.jsxRuntimeExports.jsx("path",{d:ce.renderCell(l.findIndex(y=>y.label===e.label&&y.date===e.date)),opacity:0,onMouseEnter:y=>{lt(e),K(y.clientY),J(y.clientX),ot?.(e)},onMouseMove:y=>{lt(e),K(y.clientY),J(y.clientX)},onMouseLeave:()=>{lt(void 0),J(void 0),K(void 0),ot?.(void 0)}})},o));let Oe;t[90]!==s||t[91]!==p||t[92]!==x||t[93]!==C||t[94]!==d.right||t[95]!==nt||t[96]!==c?(Oe=nt?n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:nt.map((e,o)=>n.jsxRuntimeExports.jsx(Pe.RefLineY,{text:e.text,color:e.color,y:c(e.value),x1:0-C,x2:p+d.right,classNames:e.classNames,styles:e.styles,animate:s,isInView:x},o))}):null,t[90]=s,t[91]=p,t[92]=x,t[93]=C,t[94]=d.right,t[95]=nt,t[96]=c,t[97]=Oe):Oe=t[97];let ie;if(t[98]!==s||t[99]!==jt||t[100]!==r||t[101]!==p||t[102]!==x||t[103]!==d.right||t[104]!==Y||t[105]!==a||t[106]!==c){let e;t[108]!==s||t[109]!==r||t[110]!==p||t[111]!==x||t[112]!==d.right||t[113]!==Y||t[114]!==a||t[115]!==c?(e=(o,y)=>{const Vt=Le.getLineEndPoint({x:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0),y:o.yCoordinate?c(o.yCoordinate)+(o.yOffset||0)-8:0+(o.yOffset||0)-8},{x:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date)):0,y:o.yCoordinate?c(o.yCoordinate):0},v.checkIfNullOrUndefined(o.connectorRadius)?3.5:o.connectorRadius),Fe=o.showConnector?{y1:Vt.y,x1:Vt.x,y2:o.yCoordinate?c(o.yCoordinate)+(o.yOffset||0):0+(o.yOffset||0),x2:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0),cy:o.yCoordinate?c(o.yCoordinate):0,cx:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date)):0,circleRadius:v.checkIfNullOrUndefined(o.connectorRadius)?3.5:o.connectorRadius,strokeWidth:o.showConnector===!0?2:Math.min(o.showConnector||0,1)}:void 0,He={y:o.yCoordinate?c(o.yCoordinate)+(o.yOffset||0)-8:0+(o.yOffset||0)-8,x:Y?0:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0),width:Y?o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0):p+d.right-(o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0)),maxWidth:o.maxWidth,fontWeight:o.fontWeight,align:o.align};return n.jsxRuntimeExports.jsx(Le.Annotation,{color:o.color,connectorsSettings:Fe,labelSettings:He,text:o.text,classNames:o.classNames,styles:o.styles,animate:s,isInView:x},y)},t[108]=s,t[109]=r,t[110]=p,t[111]=x,t[112]=d.right,t[113]=Y,t[114]=a,t[115]=c,t[116]=e):e=t[116],ie=jt.map(e),t[98]=s,t[99]=jt,t[100]=r,t[101]=p,t[102]=x,t[103]=d.right,t[104]=Y,t[105]=a,t[106]=c,t[107]=ie}else ie=t[107];let be;t[117]!==ie?(be=n.jsxRuntimeExports.jsx("g",{children:ie}),t[117]=ie,t[118]=be):be=t[118];let Ce;t[119]!==B?(Ce=B.filter(ci).map(ai),t[119]=B,t[120]=Ce):Ce=t[120];let we;return t[121]!==w?.tooltip||t[122]!==at||t[123]!==ct||t[124]!==m||t[125]!==j?.tooltip||t[126]!==yt?(we=m&&yt&&at&&ct?n.jsxRuntimeExports.jsx(Ge.Tooltip,{data:m,body:yt,xPos:at,yPos:ct,backgroundStyle:j?.tooltip,className:w?.tooltip}):null,t[121]=w?.tooltip,t[122]=at,t[123]=ct,t[124]=m,t[125]=j?.tooltip,t[126]=yt,t[127]=we):we=t[127],n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[n.jsxRuntimeExports.jsx(Ut.motion.svg,{width:`${tt}px`,height:`${Ft}px`,viewBox:`0 0 ${tt} ${Ft}`,direction:"ltr",ref:bt,children:n.jsxRuntimeExports.jsxs("g",{transform:`translate(${d.left},${d.top})`,children:[Z,n.jsxRuntimeExports.jsx(Le.CustomArea,{areaSettings:zt,scaleX:a,scaleY:c,animate:s,isInView:x}),n.jsxRuntimeExports.jsxs("g",{children:[n.jsxRuntimeExports.jsx(Be.YTicksAndGridLines,{values:Nt.filter(wi),y:Nt.filter(Ci).map(e=>c(e)),x1:0-C,x2:p+d.right,styles:mt,classNames:pt,suffix:$,prefix:h,labelType:"secondary",showGridLines:!0,labelPos:"vertical",precision:P}),T,he]}),n.jsxRuntimeExports.jsx("g",{children:n.jsxRuntimeExports.jsx(Xe.XTicksAndGridLines,{values:$e,x:Ve,y1:0,y2:E,styles:ye,classNames:ve,suffix:$,prefix:h,labelType:"primary",showGridLines:!0,precision:P})}),je,n.jsxRuntimeExports.jsxs(Ut.motion.g,{children:[le.map(e=>n.jsxRuntimeExports.jsxs(Ut.motion.g,{exit:{opacity:0,transition:{duration:s.duration}},variants:{initial:{opacity:m?e[0].label===m.label?1:N:Ot?e[0].color&&f[k.indexOf(e[0].color)]===Ot?1:N:V.length!==0?V.indexOf(e[0].label)!==-1?1:N:1},whileInView:{opacity:m?e[0].label===m.label?1:N:Ot?e[0].color&&f[k.indexOf(e[0].color)]===Ot?1:N:V.length!==0?V.indexOf(e[0].label)!==-1?1:N:1,transition:{duration:s.duration}}},initial:"initial",animate:x?"whileInView":"initial",children:[n.jsxRuntimeExports.jsx(Ut.motion.path,{d:kt(e.filter(ji))||"",style:{fill:"none",strokeWidth:m?e[0].label===m.label?q+Math.max(2,.5*q):q:V.length!==0&&V.indexOf(e[0].label)!==-1?q+Math.max(2,.5*q):q},exit:{opacity:0,transition:{duration:s.duration}},variants:{initial:{pathLength:0,d:kt(e.filter(vi))||"",opacity:1,stroke:u.filter(yi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray},whileInView:{pathLength:1,d:kt(e.filter(gi))||"",opacity:1,stroke:u.filter(hi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,transition:{duration:s.duration}}},initial:"initial",animate:x?"whileInView":"initial"}),e.map((o,y)=>n.jsxRuntimeExports.jsx(Ut.motion.g,{children:v.checkIfNullOrUndefined(o.y)?null:n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:oe?n.jsxRuntimeExports.jsx(Ut.motion.circle,{r:p/e.length<5?0:p/e.length<20?2:4,exit:{opacity:0,transition:{duration:s.duration}},variants:{initial:{opacity:0,fill:u.filter(di).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,cx:a(o.date),cy:c(o.y)},whileInView:{opacity:1,fill:u.filter(pi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,transition:{duration:D?s.duration:.5,delay:D?0:s.duration},cx:a(o.date),cy:c(o.y)}},initial:"initial",animate:x?"whileInView":"initial"}):null})},y)),(V.indexOf(e[0].label)!==-1||m?.label===e[0].label)&&pe?n.jsxRuntimeExports.jsx(Ut.motion.text,{className:"text-sm font-bold",dx:5,dy:4,exit:{opacity:0,transition:{duration:s.duration}},variants:{initial:{opacity:0,fill:u.filter(mi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,x:a(e[e.length-1].date),y:c(e[e.length-1].y)},whileInView:{opacity:1,fill:u.filter(xi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,x:a(e[e.length-1].date),y:c(e[e.length-1].y),transition:{duration:D?s.duration:.5,delay:D?0:s.duration}}},initial:"initial",animate:x?"whileInView":"initial",children:e[0].label}):null]},e[0].label)),m?n.jsxRuntimeExports.jsx("text",{y:c(m.y)-8,x:a(m.date),className:n.mo("graph-value text-sm font-bold",w?.graphObjectValues),style:{fill:u.filter(fi).length===0?f[0]:m.color?f[k.indexOf(m.color)]:G.Colors.gray,textAnchor:"middle",...j?.graphObjectValues||{}},children:Se.numberFormattingFunction(m.y,de,P,h,$)}):null]}),Ue,Oe,be,Ce]})}),we]})}function ai(i){return i.layer}function ci(i){return i.position==="after"}function ui(i){return!v.checkIfNullOrUndefined(i.y)}function fi(i){return i.color}function xi(i){return i.color}function mi(i){return i.color}function pi(i){return i.color}function di(i){return i.color}function hi(i){return i.color}function gi(i){return!v.checkIfNullOrUndefined(i.y)}function yi(i){return i.color}function vi(i){return!v.checkIfNullOrUndefined(i.y)}function ji(i){return!v.checkIfNullOrUndefined(i.y)}function Oi(i){return i.layer}function bi(i){return i.position==="before"}function Ci(i){return i!==0}function wi(i){return i!==0}function Ri(i){return i.date}function Ei(i){return!v.checkIfNullOrUndefined(i.date)&&!v.checkIfNullOrUndefined(i.y)}function Ai(i){return!v.checkIfNullOrUndefined(i)}function ki(i){return i.y}function Ni(i){return!v.checkIfNullOrUndefined(i)}function Di(i){return i.y}function Li(i){return!v.checkIfNullOrUndefined(i)}function qi(i){return i.y}function Si(i){return!v.checkIfNullOrUndefined(i)}function Mi(i){return i.y}function Ii(i){return!v.checkIfNullOrUndefined(i)}function Ti(i){return i.y}function $i(i,t){return Te.ascending(i,t)}function Vi(i){return!v.checkIfNullOrUndefined(i.y)}function Ui(i){const t=n.compilerRuntimeExports.c(94),{data:u,graphTitle:tt,showNAColor:Ft,colors:f,colorDomain:r,suffix:me,sources:et,prefix:Ht,graphDescription:it,height:$,width:h,footNote:C,noOfXTicks:yt,dateFormat:ot,padding:nt,backgroundColor:Gt,leftMargin:W,rightMargin:vt,topMargin:V,bottomMargin:s,showColorScale:Y,tooltip:q,relativeHeight:oe,onSeriesMouseOver:jt,showLabels:Wt,refValues:X,highlightAreaSettings:Yt,graphID:Xt,minValue:Pt,maxValue:rt,highlightedLines:j,graphDownload:k,dataDownload:Ot,animate:w,language:pe,colorLegendTitle:N,minHeight:P,strokeWidth:de,showDots:B,annotations:bt,customHighlightAreaSettings:z,theme:x,ariaLabel:D,yAxisTitle:ne,noOfYTicks:Ct,minDate:st,maxDate:re,curveType:wt,styles:l,classNames:g,dimmedOpacity:Rt,precision:Bt,customLayers:m,naLabel:lt}=i,at=Ft===void 0?!0:Ft,J=me===void 0?"":me,ct=Ht===void 0?"":Ht,K=yt===void 0?10:yt,Et=ot===void 0?"yyyy":ot,ut=Gt===void 0?!1:Gt,d=W===void 0?30:W,se=vt===void 0?50:vt,le=V===void 0?20:V,ft=s===void 0?25:s,At=Y===void 0?!0:Y,xt=Wt===void 0?!0:Wt;let zt;t[0]!==X?(zt=X===void 0?[]:X,t[0]=X,t[1]=zt):zt=t[1];const p=zt;let E;t[2]!==Yt?(E=Yt===void 0?[]:Yt,t[2]=Yt,t[3]=E):E=t[3];const ae=E;let Jt;t[4]!==j?(Jt=j===void 0?[]:j,t[4]=j,t[5]=Jt):Jt=t[5];const O=Jt,U=k===void 0?!1:k,a=Ot===void 0?!1:Ot,Q=w===void 0?!1:w,L=pe===void 0?"en":pe,c=P===void 0?0:P,ce=de===void 0?2:de,kt=B===void 0?!0:B;let Nt;t[6]!==bt?(Nt=bt===void 0?[]:bt,t[6]=bt,t[7]=Nt):Nt=t[7];const Kt=Nt;let Z;t[8]!==z?(Z=z===void 0?[]:z,t[8]=z,t[9]=Z):Z=t[9];const Dt=Z,S=x===void 0?"light":x,mt=Ct===void 0?5:Ct,Lt=wt===void 0?"curve":wt,qt=Rt===void 0?.3:Rt,pt=Bt===void 0?2:Bt;let dt;t[10]!==m?(dt=m===void 0?[]:m,t[10]=m,t[11]=dt):dt=t[11];const St=dt,Mt=lt===void 0?"NA":lt,[_,ue]=R.useState(0),[M,fe]=R.useState(0),[It,xe]=R.useState(void 0),F=R.useRef(null),Qt=R.useRef(null);let ht,I;t[12]===Symbol.for("react.memo_cache_sentinel")?(ht=()=>{const Zt=new ResizeObserver(_t=>{ue(_t[0].target.clientWidth||620),fe(_t[0].target.clientHeight||480)});return F.current&&Zt.observe(F.current),()=>Zt.disconnect()},I=[],t[12]=ht,t[13]=I):(ht=t[12],I=t[13]),R.useEffect(ht,I);const Tt=g?.graphContainer,$t=l?.graphContainer;let A;t[14]!==g?.description||t[15]!==g?.title||t[16]!==u||t[17]!==a||t[18]!==it||t[19]!==U||t[20]!==tt||t[21]!==l?.description||t[22]!==l?.title||t[23]!==h?(A=tt||it||U||a?n.jsxRuntimeExports.jsx(oi.GraphHeader,{styles:{title:l?.title,description:l?.description},classNames:{title:g?.title,description:g?.description},graphTitle:tt,graphDescription:it,width:h,graphDownload:U?Qt:void 0,dataDownload:a?u.map(Bi).filter(Pi).length>0?u.map(Xi).filter(Yi):u.filter(Wi):null}):null,t[14]=g?.description,t[15]=g?.title,t[16]=u,t[17]=a,t[18]=it,t[19]=U,t[20]=tt,t[21]=l?.description,t[22]=l?.title,t[23]=h,t[24]=A):A=t[24];let T;t[25]!==Q||t[26]!==Kt||t[27]!==ft||t[28]!==g||t[29]!==r||t[30]!==N||t[31]!==f||t[32]!==Lt||t[33]!==Dt||t[34]!==St||t[35]!==u||t[36]!==Et||t[37]!==qt||t[38]!==ae||t[39]!==O||t[40]!==L||t[41]!==d||t[42]!==re||t[43]!==rt||t[44]!==st||t[45]!==Pt||t[46]!==Mt||t[47]!==K||t[48]!==mt||t[49]!==jt||t[50]!==pt||t[51]!==ct||t[52]!==p||t[53]!==se||t[54]!==It||t[55]!==At||t[56]!==kt||t[57]!==xt||t[58]!==at||t[59]!==ce||t[60]!==l||t[61]!==J||t[62]!==M||t[63]!==_||t[64]!==S||t[65]!==q||t[66]!==le||t[67]!==h||t[68]!==ne?(T=u.length===0?n.jsxRuntimeExports.jsx(ni.EmptyState,{}):n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[At&&u.filter(Gi).length!==0?n.jsxRuntimeExports.jsx(ri.ColorLegendWithMouseOver,{width:h,colorLegendTitle:N,colors:f||G.Colors[S].categoricalColors.colors,colorDomain:r||Ee.uniqBy(u,"color",!0),setSelectedColor:xe,showNAColor:at,className:g?.colorLegend}):null,n.jsxRuntimeExports.jsx(Ie.GraphArea,{ref:F,children:_&&M?n.jsxRuntimeExports.jsx(li,{data:u,lineColors:u.filter(Hi).length===0?f?[f]:[G.Colors.primaryColors["blue-600"]]:f||G.Colors[S].categoricalColors.colors,width:_,height:M,dateFormat:Et,noOfXTicks:K??si.getNoOfTicks(_),leftMargin:d,rightMargin:se,topMargin:le,bottomMargin:ft,tooltip:q,onSeriesMouseOver:jt,suffix:J,prefix:ct,highlightAreaSettings:ae,refValues:p,minValue:Pt,maxValue:rt,highlightedLines:O,animate:Q===!0?{duration:.5,once:!0,amount:.5}:Q||{duration:0,once:!0,amount:0},rtl:L==="he"||L==="ar",strokeWidth:ce,showDots:kt,annotations:Kt,customHighlightAreaSettings:Dt,yAxisTitle:ne,noOfYTicks:mt,minDate:st,maxDate:re,curveType:Lt,styles:l,classNames:g,selectedColor:It,showLabels:xt,colorDomain:u.filter(Fi).length===0?[]:r||Ee.uniqBy(u,"color",!0),dimmedOpacity:qt,precision:pt,customLayers:St,naLabel:Mt}):null})]}),t[25]=Q,t[26]=Kt,t[27]=ft,t[28]=g,t[29]=r,t[30]=N,t[31]=f,t[32]=Lt,t[33]=Dt,t[34]=St,t[35]=u,t[36]=Et,t[37]=qt,t[38]=ae,t[39]=O,t[40]=L,t[41]=d,t[42]=re,t[43]=rt,t[44]=st,t[45]=Pt,t[46]=Mt,t[47]=K,t[48]=mt,t[49]=jt,t[50]=pt,t[51]=ct,t[52]=p,t[53]=se,t[54]=It,t[55]=At,t[56]=kt,t[57]=xt,t[58]=at,t[59]=ce,t[60]=l,t[61]=J,t[62]=M,t[63]=_,t[64]=S,t[65]=q,t[66]=le,t[67]=h,t[68]=ne,t[69]=T):T=t[69];let H;t[70]!==g?.footnote||t[71]!==g?.source||t[72]!==C||t[73]!==et||t[74]!==l?.footnote||t[75]!==l?.source||t[76]!==h?(H=et||C?n.jsxRuntimeExports.jsx(ii.GraphFooter,{styles:{footnote:l?.footnote,source:l?.source},classNames:{footnote:g?.footnote,source:g?.source},sources:et,footNote:C,width:h}):null,t[70]=g?.footnote,t[71]=g?.source,t[72]=C,t[73]=et,t[74]=l?.footnote,t[75]=l?.source,t[76]=h,t[77]=H):H=t[77];let gt;return t[78]!==D||t[79]!==ut||t[80]!==Xt||t[81]!==$||t[82]!==L||t[83]!==c||t[84]!==nt||t[85]!==oe||t[86]!==Tt||t[87]!==$t||t[88]!==A||t[89]!==T||t[90]!==H||t[91]!==S||t[92]!==h?(gt=n.jsxRuntimeExports.jsxs(Ie.GraphContainer,{className:Tt,style:$t,id:Xt,ref:Qt,"aria-label":D,backgroundColor:ut,theme:S,language:L,minHeight:c,width:h,height:$,relativeHeight:oe,padding:nt,children:[A,T,H]}),t[78]=D,t[79]=ut,t[80]=Xt,t[81]=$,t[82]=L,t[83]=c,t[84]=nt,t[85]=oe,t[86]=Tt,t[87]=$t,t[88]=A,t[89]=T,t[90]=H,t[91]=S,t[92]=h,t[93]=gt):gt=t[93],gt}function Fi(i){return i.color}function Hi(i){return i.color}function Gi(i){return i.color}function Wi(i){return i!==void 0}function Yi(i){return i!==void 0}function Xi(i){return i.data}function Pi(i){return i!==void 0}function Bi(i){return i.data}exports.MultiLineAltChart=Ui;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-CHPV5EwG-CTPQjnHt.cjs"),R=require("react"),b=require("./parse-hMnG_lRV.cjs"),qe=require("./index-Cno4Q0YE.cjs"),Se=require("./numberFormattingFunction-02t-wJta.cjs"),Ge=require("./Tooltip-uUdw6wJL.cjs"),v=require("./checkIfNullOrUndefined-BCW3Y1ML.cjs"),Le=require("./customArea-CMF5g-C3.cjs"),We=require("./AxisTitle-sS5bLLR7.cjs"),Ye=require("./Axis-DxRV2yMi.cjs"),Xe=require("./XTicksAndGridLines-B6CELS7q.cjs"),Pe=require("./ReferenceLine-BH0qdf4R.cjs"),Be=require("./YTicksAndGridLines-4pxTRlRK.cjs"),ze=require("./index-B_sAFsEV.cjs"),G=require("./Colors.cjs"),Ee=require("./uniqBy-O05lp2S5.cjs"),Je=require("./sort-O96oMZLb.cjs"),Ke=require("./time-CZd5YLSP.cjs"),Qe=require("./linear-BwPAspcq.cjs"),Ze=require("./delaunay-rcy0HhZi.cjs"),Me=require("./line-DHV4JwCR.cjs"),Re=require("./step-BZ3C8QFW.cjs"),_e=require("./select-Bnfk0lJx.cjs"),Te=require("./init-DU0ybBc_.cjs"),ti=require("./pointer-Dkq5NV1q.cjs"),ei=require("./use-in-view-QcfiW0w3.cjs"),Ut=require("./proxy-BxvUI_9l.cjs"),ii=require("./GraphFooter.cjs"),oi=require("./GraphHeader.cjs"),ni=require("./EmptyState-sAEZ_5rU.cjs"),ri=require("./ColorLegendWithMouseOver.cjs"),Ie=require("./GraphContainer-d8A46BK2.cjs"),si=require("./getNoOfTicks-C_1CFXv_.cjs");function li(i){const t=n.compilerRuntimeExports.c(128),{data:u,width:tt,height:Ft,lineColors:f,dateFormat:r,noOfXTicks:me,rightMargin:et,topMargin:Ht,bottomMargin:it,suffix:$,prefix:h,leftMargin:C,tooltip:yt,onSeriesMouseOver:ot,refValues:nt,highlightAreaSettings:Gt,minValue:W,maxValue:vt,highlightedLines:V,animate:s,rtl:Y,strokeWidth:q,showDots:oe,annotations:jt,customHighlightAreaSettings:Wt,yAxisTitle:X,noOfYTicks:Yt,minDate:Xt,maxDate:Pt,curveType:rt,styles:j,colorDomain:k,selectedColor:Ot,classNames:w,showLabels:pe,dimmedOpacity:N,precision:P,naLabel:de,customLayers:B}=i,bt=R.useRef(null);let z;t[0]!==s.amount||t[1]!==s.once?(z={once:s.once,amount:s.amount},t[0]=s.amount,t[1]=s.once,t[2]=z):z=t[2];const x=ei.useInView(bt,z),[D,ne]=R.useState(!1);let Ct,st;t[3]!==s.duration||t[4]!==D||t[5]!==x?(Ct=()=>{if(x&&!D){const e=setTimeout(()=>{ne(!0)},(s.duration+.5)*1e3);return()=>clearTimeout(e)}},st=[x,D,s.duration],t[3]=s.duration,t[4]=D,t[5]=x,t[6]=Ct,t[7]=st):(Ct=t[6],st=t[7]),R.useEffect(Ct,st);const re=rt==="linear"?Me.curveLinear:rt==="step"?Re.curveStep:rt==="stepAfter"?Re.stepAfter:rt==="stepBefore"?Re.stepBefore:Re.monotoneX;let wt;t[8]!==r?(wt=e=>({...e,date:b.parse(`${e.date}`,r,new Date)}),t[8]=r,t[9]=wt):wt=t[9];const l=qe.orderBy(u.map(wt),["date"],["asc"]).filter(Vi),g=Ee.uniqBy(l,"label",!0);let Rt;t[10]!==r?(Rt=e=>b.parse(`${e}`,r,new Date),t[10]=r,t[11]=Rt):Rt=t[11];const Bt=Je.sort(Ee.uniqBy(u,"date",!0).map(Rt),$i),[m,lt]=R.useState(void 0),[at,J]=R.useState(void 0),[ct,K]=R.useState(void 0),Et=X?C+30:C;let ut;t[12]!==it||t[13]!==et||t[14]!==Et||t[15]!==Ht?(ut={top:Ht,bottom:it,left:Et,right:et},t[12]=it,t[13]=et,t[14]=Et,t[15]=Ht,t[16]=ut):ut=t[16];const d=ut,se=R.useRef(null),le=g.map(e=>qe.orderBy(l.filter(o=>o.label==e),["date"],["asc"]));let ft;if(t[17]!==r||t[18]!==Gt){let e;t[20]!==r?(e=o=>({...o,coordinates:[o.coordinates[0]===null?null:b.parse(`${o.coordinates[0]}`,r,new Date),o.coordinates[1]===null?null:b.parse(`${o.coordinates[1]}`,r,new Date)]}),t[20]=r,t[21]=e):e=t[21],ft=Gt.map(e),t[17]=r,t[18]=Gt,t[19]=ft}else ft=t[19];const At=ft;let xt;if(t[22]!==Wt||t[23]!==r){let e;t[25]!==r?(e=o=>({...o,coordinates:o.coordinates.map((y,Vt)=>Vt%2===0?b.parse(`${y}`,r,new Date):y)}),t[25]=r,t[26]=e):e=t[26],xt=Wt.map(e),t[22]=Wt,t[23]=r,t[24]=xt}else xt=t[24];const zt=xt,p=tt-d.left-d.right,E=Ft-d.top-d.bottom,ae=Xt?b.parse(`${Xt}`,r,new Date):Bt[0],Jt=Pt?b.parse(`${Pt}`,r,new Date):Bt[Bt.length-1],O=v.checkIfNullOrUndefined(W)?Math.min(...l.map(Ti).filter(Ii))?Math.min(...l.map(Mi).filter(Si))>0?0:Math.min(...l.map(qi).filter(Li)):0:W,U=Math.max(...l.map(Di).filter(Ni))?Math.max(...l.map(ki).filter(Ai)):0,a=Ke.time().domain([ae,Jt]).range([0,p]);let Q;t[27]!==O||t[28]!==W?(Q=v.checkIfNullOrUndefined(W)?O:W,t[27]=O,t[28]=W,t[29]=Q):Q=t[29];let L;t[30]!==U||t[31]!==vt?(L=v.checkIfNullOrUndefined(vt)?U>0?U:0:vt,t[30]=U,t[31]=vt,t[32]=L):L=t[32];const c=Qe.linear().domain([Q,L]).range([E,0]).nice(),ce=Ze.Delaunay.from(l.filter(Ei),e=>a(e.date),e=>c(e.y)).voronoi([0,0,p<0?0:p,E<0?0:E]),kt=Me.line().x(e=>a(e.date)).y(e=>c(e.y)).curve(re),Nt=c.ticks(Yt),Kt=a.ticks(me);R.useEffect(()=>{const e=y=>{const Vt=l[Te.bisectCenter(l.map(Ri),a.invert(ti.pointer(y)[0]),0)];lt(Vt||l[l.length-1]),K(y.clientY),J(y.clientX),ot?.(Vt||l[l.length-1])},o=()=>{lt(void 0),J(void 0),K(void 0)};_e.select(se.current).on("mousemove",e).on("mouseout",o),ot?.(void 0)},[a,l,ot]);let Z;t[33]!==s||t[34]!==E||t[35]!==p||t[36]!==At||t[37]!==x||t[38]!==a?(Z=n.jsxRuntimeExports.jsx(ze.HighlightArea,{areaSettings:At,width:p,height:E,scale:a,animate:s,isInView:x}),t[33]=s,t[34]=E,t[35]=p,t[36]=At,t[37]=x,t[38]=a,t[39]=Z):Z=t[39];const Dt=j?.yAxis?.gridLines,S=j?.yAxis?.labels;let mt;t[40]!==Dt||t[41]!==S?(mt={gridLines:Dt,labels:S},t[40]=Dt,t[41]=S,t[42]=mt):mt=t[42];const Lt=w?.yAxis?.gridLines,qt=w?.yAxis?.labels;let pt;t[43]!==Lt||t[44]!==qt?(pt={gridLines:Lt,labels:qt},t[43]=Lt,t[44]=qt,t[45]=pt):pt=t[45];const dt=c(O<0?0:O),St=c(O<0?0:O),Mt=0-C,_=p+d.right,ue=O<0?0:O;let M;t[46]!==P||t[47]!==h||t[48]!==$||t[49]!==ue?(M=Se.numberFormattingFunction(ue,"NA",P,h,$),t[46]=P,t[47]=h,t[48]=$,t[49]=ue,t[50]=M):M=t[50];const fe=0-C,It=c(O<0?0:O),xe=U<0?"1em":-5;let F;t[51]!==fe||t[52]!==It||t[53]!==xe?(F={x:fe,y:It,dx:0,dy:xe},t[51]=fe,t[52]=It,t[53]=xe,t[54]=F):F=t[54];const Qt=w?.xAxis?.axis,ht=w?.yAxis?.labels;let I;t[55]!==Qt||t[56]!==ht?(I={axis:Qt,label:ht},t[55]=Qt,t[56]=ht,t[57]=I):I=t[57];const Tt=j?.xAxis?.axis,$t=j?.yAxis?.labels;let A;t[58]!==Tt||t[59]!==$t?(A={axis:Tt,label:$t},t[58]=Tt,t[59]=$t,t[60]=A):A=t[60];let T;t[61]!==dt||t[62]!==St||t[63]!==Mt||t[64]!==_||t[65]!==M||t[66]!==F||t[67]!==I||t[68]!==A?(T=n.jsxRuntimeExports.jsx(Ye.Axis,{y1:dt,y2:St,x1:Mt,x2:_,label:M,labelPos:F,classNames:I,styles:A}),t[61]=dt,t[62]=St,t[63]=Mt,t[64]=_,t[65]=M,t[66]=F,t[67]=I,t[68]=A,t[69]=T):T=t[69];const H=0-C-15,gt=E/2,Zt=j?.yAxis?.title,_t=w?.yAxis?.title;let he;t[70]!==H||t[71]!==gt||t[72]!==Zt||t[73]!==_t||t[74]!==X?(he=n.jsxRuntimeExports.jsx(We.AxisTitle,{x:H,y:gt,style:Zt,className:_t,text:X,rotate90:!0}),t[70]=H,t[71]=gt,t[72]=Zt,t[73]=_t,t[74]=X,t[75]=he):he=t[75];let ge;t[76]!==r?(ge=e=>b.format(e,r),t[76]=r,t[77]=ge):ge=t[77];const $e=Kt.map(ge),Ve=Kt.map(e=>a(e)),Ae=j?.xAxis?.gridLines,ke=j?.xAxis?.labels;let ye;t[78]!==Ae||t[79]!==ke?(ye={gridLines:Ae,labels:ke},t[78]=Ae,t[79]=ke,t[80]=ye):ye=t[80];const Ne=w?.xAxis?.gridLines;let te;t[81]!==Ne?(te=n.mo("opacity-0",Ne),t[81]=Ne,t[82]=te):te=t[82];const De=w?.xAxis?.labels;let ee;t[83]!==De?(ee=n.mo("fill-primary-gray-700 dark:fill-primary-gray-300 xs:max-[360px]:hidden text-[9px] md:text-[10px] lg:text-xs",De),t[83]=De,t[84]=ee):ee=t[84];let ve;t[85]!==te||t[86]!==ee?(ve={gridLines:te,labels:ee},t[85]=te,t[86]=ee,t[87]=ve):ve=t[87];let je;t[88]!==B?(je=B.filter(bi).map(Oi),t[88]=B,t[89]=je):je=t[89];const Ue=l.filter(ui).map((e,o)=>n.jsxRuntimeExports.jsx("g",{children:n.jsxRuntimeExports.jsx("path",{d:ce.renderCell(l.findIndex(y=>y.label===e.label&&y.date===e.date)),opacity:0,onMouseEnter:y=>{lt(e),K(y.clientY),J(y.clientX),ot?.(e)},onMouseMove:y=>{lt(e),K(y.clientY),J(y.clientX)},onMouseLeave:()=>{lt(void 0),J(void 0),K(void 0),ot?.(void 0)}})},o));let Oe;t[90]!==s||t[91]!==p||t[92]!==x||t[93]!==C||t[94]!==d.right||t[95]!==nt||t[96]!==c?(Oe=nt?n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:nt.map((e,o)=>n.jsxRuntimeExports.jsx(Pe.RefLineY,{text:e.text,color:e.color,y:c(e.value),x1:0-C,x2:p+d.right,classNames:e.classNames,styles:e.styles,animate:s,isInView:x},o))}):null,t[90]=s,t[91]=p,t[92]=x,t[93]=C,t[94]=d.right,t[95]=nt,t[96]=c,t[97]=Oe):Oe=t[97];let ie;if(t[98]!==s||t[99]!==jt||t[100]!==r||t[101]!==p||t[102]!==x||t[103]!==d.right||t[104]!==Y||t[105]!==a||t[106]!==c){let e;t[108]!==s||t[109]!==r||t[110]!==p||t[111]!==x||t[112]!==d.right||t[113]!==Y||t[114]!==a||t[115]!==c?(e=(o,y)=>{const Vt=Le.getLineEndPoint({x:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0),y:o.yCoordinate?c(o.yCoordinate)+(o.yOffset||0)-8:0+(o.yOffset||0)-8},{x:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date)):0,y:o.yCoordinate?c(o.yCoordinate):0},v.checkIfNullOrUndefined(o.connectorRadius)?3.5:o.connectorRadius),Fe=o.showConnector?{y1:Vt.y,x1:Vt.x,y2:o.yCoordinate?c(o.yCoordinate)+(o.yOffset||0):0+(o.yOffset||0),x2:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0),cy:o.yCoordinate?c(o.yCoordinate):0,cx:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date)):0,circleRadius:v.checkIfNullOrUndefined(o.connectorRadius)?3.5:o.connectorRadius,strokeWidth:o.showConnector===!0?2:Math.min(o.showConnector||0,1)}:void 0,He={y:o.yCoordinate?c(o.yCoordinate)+(o.yOffset||0)-8:0+(o.yOffset||0)-8,x:Y?0:o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0),width:Y?o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0):p+d.right-(o.xCoordinate?a(b.parse(`${o.xCoordinate}`,r,new Date))+(o.xOffset||0):0+(o.xOffset||0)),maxWidth:o.maxWidth,fontWeight:o.fontWeight,align:o.align};return n.jsxRuntimeExports.jsx(Le.Annotation,{color:o.color,connectorsSettings:Fe,labelSettings:He,text:o.text,classNames:o.classNames,styles:o.styles,animate:s,isInView:x},y)},t[108]=s,t[109]=r,t[110]=p,t[111]=x,t[112]=d.right,t[113]=Y,t[114]=a,t[115]=c,t[116]=e):e=t[116],ie=jt.map(e),t[98]=s,t[99]=jt,t[100]=r,t[101]=p,t[102]=x,t[103]=d.right,t[104]=Y,t[105]=a,t[106]=c,t[107]=ie}else ie=t[107];let be;t[117]!==ie?(be=n.jsxRuntimeExports.jsx("g",{children:ie}),t[117]=ie,t[118]=be):be=t[118];let Ce;t[119]!==B?(Ce=B.filter(ci).map(ai),t[119]=B,t[120]=Ce):Ce=t[120];let we;return t[121]!==w?.tooltip||t[122]!==at||t[123]!==ct||t[124]!==m||t[125]!==j?.tooltip||t[126]!==yt?(we=m&&yt&&at&&ct?n.jsxRuntimeExports.jsx(Ge.Tooltip,{data:m,body:yt,xPos:at,yPos:ct,backgroundStyle:j?.tooltip,className:w?.tooltip}):null,t[121]=w?.tooltip,t[122]=at,t[123]=ct,t[124]=m,t[125]=j?.tooltip,t[126]=yt,t[127]=we):we=t[127],n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[n.jsxRuntimeExports.jsx(Ut.motion.svg,{width:`${tt}px`,height:`${Ft}px`,viewBox:`0 0 ${tt} ${Ft}`,direction:"ltr",ref:bt,children:n.jsxRuntimeExports.jsxs("g",{transform:`translate(${d.left},${d.top})`,children:[Z,n.jsxRuntimeExports.jsx(Le.CustomArea,{areaSettings:zt,scaleX:a,scaleY:c,animate:s,isInView:x}),n.jsxRuntimeExports.jsxs("g",{children:[n.jsxRuntimeExports.jsx(Be.YTicksAndGridLines,{values:Nt.filter(wi),y:Nt.filter(Ci).map(e=>c(e)),x1:0-C,x2:p+d.right,styles:mt,classNames:pt,suffix:$,prefix:h,labelType:"secondary",showGridLines:!0,labelPos:"vertical",precision:P}),T,he]}),n.jsxRuntimeExports.jsx("g",{children:n.jsxRuntimeExports.jsx(Xe.XTicksAndGridLines,{values:$e,x:Ve,y1:0,y2:E,styles:ye,classNames:ve,suffix:$,prefix:h,labelType:"primary",showGridLines:!0,precision:P})}),je,n.jsxRuntimeExports.jsxs(Ut.motion.g,{children:[le.map(e=>n.jsxRuntimeExports.jsxs(Ut.motion.g,{exit:{opacity:0,transition:{duration:s.duration}},variants:{initial:{opacity:m?e[0].label===m.label?1:N:Ot?e[0].color&&f[k.indexOf(e[0].color)]===Ot?1:N:V.length!==0?V.indexOf(e[0].label)!==-1?1:N:1},whileInView:{opacity:m?e[0].label===m.label?1:N:Ot?e[0].color&&f[k.indexOf(e[0].color)]===Ot?1:N:V.length!==0?V.indexOf(e[0].label)!==-1?1:N:1,transition:{duration:s.duration}}},initial:"initial",animate:x?"whileInView":"initial",children:[n.jsxRuntimeExports.jsx(Ut.motion.path,{d:kt(e.filter(ji))||"",style:{fill:"none",strokeWidth:m?e[0].label===m.label?q+Math.max(2,.5*q):q:V.length!==0&&V.indexOf(e[0].label)!==-1?q+Math.max(2,.5*q):q},exit:{opacity:0,transition:{duration:s.duration}},variants:{initial:{pathLength:0,d:kt(e.filter(vi))||"",opacity:1,stroke:u.filter(yi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray},whileInView:{pathLength:1,d:kt(e.filter(gi))||"",opacity:1,stroke:u.filter(hi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,transition:{duration:s.duration}}},initial:"initial",animate:x?"whileInView":"initial"}),e.map((o,y)=>n.jsxRuntimeExports.jsx(Ut.motion.g,{children:v.checkIfNullOrUndefined(o.y)?null:n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:oe?n.jsxRuntimeExports.jsx(Ut.motion.circle,{r:p/e.length<5?0:p/e.length<20?2:4,exit:{opacity:0,transition:{duration:s.duration}},variants:{initial:{opacity:0,fill:u.filter(di).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,cx:a(o.date),cy:c(o.y)},whileInView:{opacity:1,fill:u.filter(pi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,transition:{duration:D?s.duration:.5,delay:D?0:s.duration},cx:a(o.date),cy:c(o.y)}},initial:"initial",animate:x?"whileInView":"initial"}):null})},y)),(V.indexOf(e[0].label)!==-1||m?.label===e[0].label)&&pe?n.jsxRuntimeExports.jsx(Ut.motion.text,{className:"text-sm font-bold",dx:5,dy:4,exit:{opacity:0,transition:{duration:s.duration}},variants:{initial:{opacity:0,fill:u.filter(mi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,x:a(e[e.length-1].date),y:c(e[e.length-1].y)},whileInView:{opacity:1,fill:u.filter(xi).length===0?f[0]:e[0].color?f[k.indexOf(e[0].color)]:G.Colors.gray,x:a(e[e.length-1].date),y:c(e[e.length-1].y),transition:{duration:D?s.duration:.5,delay:D?0:s.duration}}},initial:"initial",animate:x?"whileInView":"initial",children:e[0].label}):null]},e[0].label)),m?n.jsxRuntimeExports.jsx("text",{y:c(m.y)-8,x:a(m.date),className:n.mo("graph-value text-sm font-bold",w?.graphObjectValues),style:{fill:u.filter(fi).length===0?f[0]:m.color?f[k.indexOf(m.color)]:G.Colors.gray,textAnchor:"middle",...j?.graphObjectValues||{}},children:Se.numberFormattingFunction(m.y,de,P,h,$)}):null]}),Ue,Oe,be,Ce]})}),we]})}function ai(i){return i.layer}function ci(i){return i.position==="after"}function ui(i){return!v.checkIfNullOrUndefined(i.y)}function fi(i){return i.color}function xi(i){return i.color}function mi(i){return i.color}function pi(i){return i.color}function di(i){return i.color}function hi(i){return i.color}function gi(i){return!v.checkIfNullOrUndefined(i.y)}function yi(i){return i.color}function vi(i){return!v.checkIfNullOrUndefined(i.y)}function ji(i){return!v.checkIfNullOrUndefined(i.y)}function Oi(i){return i.layer}function bi(i){return i.position==="before"}function Ci(i){return i!==0}function wi(i){return i!==0}function Ri(i){return i.date}function Ei(i){return!v.checkIfNullOrUndefined(i.date)&&!v.checkIfNullOrUndefined(i.y)}function Ai(i){return!v.checkIfNullOrUndefined(i)}function ki(i){return i.y}function Ni(i){return!v.checkIfNullOrUndefined(i)}function Di(i){return i.y}function Li(i){return!v.checkIfNullOrUndefined(i)}function qi(i){return i.y}function Si(i){return!v.checkIfNullOrUndefined(i)}function Mi(i){return i.y}function Ii(i){return!v.checkIfNullOrUndefined(i)}function Ti(i){return i.y}function $i(i,t){return Te.ascending(i,t)}function Vi(i){return!v.checkIfNullOrUndefined(i.y)}function Ui(i){const t=n.compilerRuntimeExports.c(94),{data:u,graphTitle:tt,showNAColor:Ft,colors:f,colorDomain:r,suffix:me,sources:et,prefix:Ht,graphDescription:it,height:$,width:h,footNote:C,noOfXTicks:yt,dateFormat:ot,padding:nt,backgroundColor:Gt,leftMargin:W,rightMargin:vt,topMargin:V,bottomMargin:s,showColorScale:Y,tooltip:q,relativeHeight:oe,onSeriesMouseOver:jt,showLabels:Wt,refValues:X,highlightAreaSettings:Yt,graphID:Xt,minValue:Pt,maxValue:rt,highlightedLines:j,graphDownload:k,dataDownload:Ot,animate:w,language:pe,colorLegendTitle:N,minHeight:P,strokeWidth:de,showDots:B,annotations:bt,customHighlightAreaSettings:z,theme:x,ariaLabel:D,yAxisTitle:ne,noOfYTicks:Ct,minDate:st,maxDate:re,curveType:wt,styles:l,classNames:g,dimmedOpacity:Rt,precision:Bt,customLayers:m,naLabel:lt}=i,at=Ft===void 0?!0:Ft,J=me===void 0?"":me,ct=Ht===void 0?"":Ht,K=yt===void 0?10:yt,Et=ot===void 0?"yyyy":ot,ut=Gt===void 0?!1:Gt,d=W===void 0?30:W,se=vt===void 0?50:vt,le=V===void 0?20:V,ft=s===void 0?25:s,At=Y===void 0?!0:Y,xt=Wt===void 0?!0:Wt;let zt;t[0]!==X?(zt=X===void 0?[]:X,t[0]=X,t[1]=zt):zt=t[1];const p=zt;let E;t[2]!==Yt?(E=Yt===void 0?[]:Yt,t[2]=Yt,t[3]=E):E=t[3];const ae=E;let Jt;t[4]!==j?(Jt=j===void 0?[]:j,t[4]=j,t[5]=Jt):Jt=t[5];const O=Jt,U=k===void 0?!1:k,a=Ot===void 0?!1:Ot,Q=w===void 0?!1:w,L=pe===void 0?"en":pe,c=P===void 0?0:P,ce=de===void 0?2:de,kt=B===void 0?!0:B;let Nt;t[6]!==bt?(Nt=bt===void 0?[]:bt,t[6]=bt,t[7]=Nt):Nt=t[7];const Kt=Nt;let Z;t[8]!==z?(Z=z===void 0?[]:z,t[8]=z,t[9]=Z):Z=t[9];const Dt=Z,S=x===void 0?"light":x,mt=Ct===void 0?5:Ct,Lt=wt===void 0?"curve":wt,qt=Rt===void 0?.3:Rt,pt=Bt===void 0?2:Bt;let dt;t[10]!==m?(dt=m===void 0?[]:m,t[10]=m,t[11]=dt):dt=t[11];const St=dt,Mt=lt===void 0?"NA":lt,[_,ue]=R.useState(0),[M,fe]=R.useState(0),[It,xe]=R.useState(void 0),F=R.useRef(null),Qt=R.useRef(null);let ht,I;t[12]===Symbol.for("react.memo_cache_sentinel")?(ht=()=>{const Zt=new ResizeObserver(_t=>{ue(_t[0].target.clientWidth||620),fe(_t[0].target.clientHeight||480)});return F.current&&Zt.observe(F.current),()=>Zt.disconnect()},I=[],t[12]=ht,t[13]=I):(ht=t[12],I=t[13]),R.useEffect(ht,I);const Tt=g?.graphContainer,$t=l?.graphContainer;let A;t[14]!==g?.description||t[15]!==g?.title||t[16]!==u||t[17]!==a||t[18]!==it||t[19]!==U||t[20]!==tt||t[21]!==l?.description||t[22]!==l?.title||t[23]!==h?(A=tt||it||U||a?n.jsxRuntimeExports.jsx(oi.GraphHeader,{styles:{title:l?.title,description:l?.description},classNames:{title:g?.title,description:g?.description},graphTitle:tt,graphDescription:it,width:h,graphDownload:U?Qt:void 0,dataDownload:a?u.map(Bi).filter(Pi).length>0?u.map(Xi).filter(Yi):u.filter(Wi):null}):null,t[14]=g?.description,t[15]=g?.title,t[16]=u,t[17]=a,t[18]=it,t[19]=U,t[20]=tt,t[21]=l?.description,t[22]=l?.title,t[23]=h,t[24]=A):A=t[24];let T;t[25]!==Q||t[26]!==Kt||t[27]!==ft||t[28]!==g||t[29]!==r||t[30]!==N||t[31]!==f||t[32]!==Lt||t[33]!==Dt||t[34]!==St||t[35]!==u||t[36]!==Et||t[37]!==qt||t[38]!==ae||t[39]!==O||t[40]!==L||t[41]!==d||t[42]!==re||t[43]!==rt||t[44]!==st||t[45]!==Pt||t[46]!==Mt||t[47]!==K||t[48]!==mt||t[49]!==jt||t[50]!==pt||t[51]!==ct||t[52]!==p||t[53]!==se||t[54]!==It||t[55]!==At||t[56]!==kt||t[57]!==xt||t[58]!==at||t[59]!==ce||t[60]!==l||t[61]!==J||t[62]!==M||t[63]!==_||t[64]!==S||t[65]!==q||t[66]!==le||t[67]!==h||t[68]!==ne?(T=u.length===0?n.jsxRuntimeExports.jsx(ni.EmptyState,{}):n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[At&&u.filter(Gi).length!==0?n.jsxRuntimeExports.jsx(ri.ColorLegendWithMouseOver,{width:h,colorLegendTitle:N,colors:f||G.Colors[S].categoricalColors.colors,colorDomain:r||Ee.uniqBy(u,"color",!0),setSelectedColor:xe,showNAColor:at,className:g?.colorLegend}):null,n.jsxRuntimeExports.jsx(Ie.GraphArea,{ref:F,children:_&&M?n.jsxRuntimeExports.jsx(li,{data:u,lineColors:u.filter(Hi).length===0?f?[f]:[G.Colors.primaryColors["blue-600"]]:f||G.Colors[S].categoricalColors.colors,width:_,height:M,dateFormat:Et,noOfXTicks:K??si.getNoOfTicks(_),leftMargin:d,rightMargin:se,topMargin:le,bottomMargin:ft,tooltip:q,onSeriesMouseOver:jt,suffix:J,prefix:ct,highlightAreaSettings:ae,refValues:p,minValue:Pt,maxValue:rt,highlightedLines:O,animate:Q===!0?{duration:.5,once:!0,amount:.5}:Q||{duration:0,once:!0,amount:0},rtl:L==="he"||L==="ar",strokeWidth:ce,showDots:kt,annotations:Kt,customHighlightAreaSettings:Dt,yAxisTitle:ne,noOfYTicks:mt,minDate:st,maxDate:re,curveType:Lt,styles:l,classNames:g,selectedColor:It,showLabels:xt,colorDomain:u.filter(Fi).length===0?[]:r||Ee.uniqBy(u,"color",!0),dimmedOpacity:qt,precision:pt,customLayers:St,naLabel:Mt}):null})]}),t[25]=Q,t[26]=Kt,t[27]=ft,t[28]=g,t[29]=r,t[30]=N,t[31]=f,t[32]=Lt,t[33]=Dt,t[34]=St,t[35]=u,t[36]=Et,t[37]=qt,t[38]=ae,t[39]=O,t[40]=L,t[41]=d,t[42]=re,t[43]=rt,t[44]=st,t[45]=Pt,t[46]=Mt,t[47]=K,t[48]=mt,t[49]=jt,t[50]=pt,t[51]=ct,t[52]=p,t[53]=se,t[54]=It,t[55]=At,t[56]=kt,t[57]=xt,t[58]=at,t[59]=ce,t[60]=l,t[61]=J,t[62]=M,t[63]=_,t[64]=S,t[65]=q,t[66]=le,t[67]=h,t[68]=ne,t[69]=T):T=t[69];let H;t[70]!==g?.footnote||t[71]!==g?.source||t[72]!==C||t[73]!==et||t[74]!==l?.footnote||t[75]!==l?.source||t[76]!==h?(H=et||C?n.jsxRuntimeExports.jsx(ii.GraphFooter,{styles:{footnote:l?.footnote,source:l?.source},classNames:{footnote:g?.footnote,source:g?.source},sources:et,footNote:C,width:h}):null,t[70]=g?.footnote,t[71]=g?.source,t[72]=C,t[73]=et,t[74]=l?.footnote,t[75]=l?.source,t[76]=h,t[77]=H):H=t[77];let gt;return t[78]!==D||t[79]!==ut||t[80]!==Xt||t[81]!==$||t[82]!==L||t[83]!==c||t[84]!==nt||t[85]!==oe||t[86]!==Tt||t[87]!==$t||t[88]!==A||t[89]!==T||t[90]!==H||t[91]!==S||t[92]!==h?(gt=n.jsxRuntimeExports.jsxs(Ie.GraphContainer,{className:Tt,style:$t,id:Xt,ref:Qt,"aria-label":D,backgroundColor:ut,theme:S,language:L,minHeight:c,width:h,height:$,relativeHeight:oe,padding:nt,children:[A,T,H]}),t[78]=D,t[79]=ut,t[80]=Xt,t[81]=$,t[82]=L,t[83]=c,t[84]=nt,t[85]=oe,t[86]=Tt,t[87]=$t,t[88]=A,t[89]=T,t[90]=H,t[91]=S,t[92]=h,t[93]=gt):gt=t[93],gt}function Fi(i){return i.color}function Hi(i){return i.color}function Gi(i){return i.color}function Wi(i){return i!==void 0}function Yi(i){return i!==void 0}function Xi(i){return i.data}function Pi(i){return i!==void 0}function Bi(i){return i.data}exports.MultiLineAltChart=Ui;
|
|
2
2
|
//# sourceMappingURL=MultiLineAltChart.cjs.map
|
|
@@ -58,6 +58,7 @@ declare interface ClassNameObject {
|
|
|
58
58
|
regLine?: string;
|
|
59
59
|
dataCards?: string;
|
|
60
60
|
colorLegend?: string;
|
|
61
|
+
modal?: string;
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
declare type CurveTypes = 'linear' | 'curve' | 'step' | 'stepAfter' | 'stepBefore';
|
|
@@ -240,6 +241,7 @@ declare interface StyleObject {
|
|
|
240
241
|
mouseOverLine?: React.CSSProperties;
|
|
241
242
|
regLine?: React.CSSProperties;
|
|
242
243
|
dataCards?: React.CSSProperties;
|
|
244
|
+
modal?: React.CSSProperties;
|
|
243
245
|
}
|
|
244
246
|
|
|
245
247
|
export { }
|
|
@@ -3,7 +3,7 @@ import { useRef as De, useState as It, useEffect as Te } from "react";
|
|
|
3
3
|
import { p as A, f as Xe } from "./parse-DlCRUFh_.js";
|
|
4
4
|
import { o as Ne } from "./index-BZQYSqar.js";
|
|
5
5
|
import { n as Ve } from "./numberFormattingFunction-14YCbkN2.js";
|
|
6
|
-
import { T as Ge } from "./Tooltip-
|
|
6
|
+
import { T as Ge } from "./Tooltip-Dj5eVppQ.js";
|
|
7
7
|
import { c as v } from "./checkIfNullOrUndefined-DmfiKkNw.js";
|
|
8
8
|
import { C as Ee, g as Pe, A as Be } from "./customArea-BUhPiPT6.js";
|
|
9
9
|
import { A as ze } from "./AxisTitle-jeI7am8o.js";
|