{"version":3,"file":"SingleGraphDashboard.cjs","names":[],"sources":["../src/Components/Dashboard/SingleGraphDashboard.tsx"],"sourcesContent":["import { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\nimport isEqual from 'fast-deep-equal';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport intersection from 'lodash.intersection';\r\nimport { useEffect, useEffectEvent, useRef, useState } from 'react';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport type {\r\n  AdvancedDataSelectionDataType,\r\n  AggregationSettingsDataType,\r\n  DataFilterDataType,\r\n  DataSelectionDataType,\r\n  DataSettingsDataType,\r\n  FilterSettingsDataType,\r\n  FilterUiSettingsDataType,\r\n  GraphConfigurationDataType,\r\n  GraphSettingsDataType,\r\n  GraphType,\r\n  HighlightDataPointSettingsDataType,\r\n} from '@/Types';\r\nimport { checkIfMultiple } from '@/Utils/checkIfMultiple';\r\nimport {\r\n  fetchAndParseCSV,\r\n  fetchAndParseJSON,\r\n  fetchAndParseMultipleDataSources,\r\n  fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { graphList } from '@/Utils/getGraphList';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { transformDataForAggregation } from '@/Utils/transformData/transformDataForAggregation';\r\nimport { transformDataForGraph } from '@/Utils/transformData/transformDataForGraph';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\nimport GraphEl from './GraphEl';\r\n\r\ninterface Props {\r\n  graphSettings?: GraphSettingsDataType;\r\n  readableHeader?: {\r\n    value: string;\r\n    label: string;\r\n  }[];\r\n  dataSettings: DataSettingsDataType;\r\n  filters?: FilterUiSettingsDataType[];\r\n  highlightDataPointSettings?: HighlightDataPointSettingsDataType;\r\n  noOfFiltersPerRow?: number;\r\n  graphType: GraphType;\r\n  dataTransform?: {\r\n    keyColumn: string;\r\n    aggregationColumnsSetting?: AggregationSettingsDataType[];\r\n  };\r\n  dataFilters?: DataFilterDataType[];\r\n  graphDataConfiguration?: GraphConfigurationDataType[];\r\n  dataSelectionOptions?: DataSelectionDataType[];\r\n  advancedDataSelectionOptions?: AdvancedDataSelectionDataType[];\r\n  debugMode?: boolean;\r\n  uiMode?: 'light' | 'normal';\r\n  updateFilters?: (_d: string) => void;\r\n}\r\n\r\nconst addMinAndMax = (config: GraphConfigurationDataType[]) => {\r\n  if (\r\n    config.findIndex((d) => d.chartConfigId === 'yMin') !== -1 &&\r\n    config.findIndex((d) => d.chartConfigId === 'yMax') !== -1\r\n  )\r\n    return config;\r\n  const configTemp = [...config];\r\n  if (config.findIndex((d) => d.chartConfigId === 'yMin') === -1) {\r\n    configTemp.push({\r\n      chartConfigId: 'yMin',\r\n      columnId: `${config[config.findIndex((d) => d.chartConfigId === 'y')].columnId}Min`,\r\n    });\r\n  }\r\n  if (config.findIndex((d) => d.chartConfigId === 'yMax') === -1) {\r\n    configTemp.push({\r\n      chartConfigId: 'yMax',\r\n      columnId: `${config[config.findIndex((d) => d.chartConfigId === 'y')].columnId}Max`,\r\n    });\r\n  }\r\n  return configTemp;\r\n};\r\n\r\nconst getGraphSettings = (\r\n  dataSelectionOptions: DataSelectionDataType[],\r\n  updatedConfig?: GraphConfigurationDataType[],\r\n) => {\r\n  const updatedSettings =\r\n    updatedConfig?.map((c) => {\r\n      const indx = dataSelectionOptions?.findIndex((opt) => opt.chartConfigId === c.chartConfigId);\r\n      if (indx === -1) return {};\r\n      const allowedValIndx = dataSelectionOptions[indx]?.allowedColumnIds?.findIndex(\r\n        (col) => col.value === c.columnId,\r\n      );\r\n      if (allowedValIndx === -1) return {};\r\n      return dataSelectionOptions[indx].allowedColumnIds[allowedValIndx].graphSettings || {};\r\n    }) || [];\r\n  return Object.assign({}, ...updatedSettings);\r\n};\r\n\r\nexport function SingleGraphDashboard(props: Props) {\r\n  const {\r\n    graphSettings,\r\n    dataSettings,\r\n    filters,\r\n    graphType,\r\n    dataTransform,\r\n    graphDataConfiguration,\r\n    dataFilters,\r\n    debugMode,\r\n    dataSelectionOptions,\r\n    advancedDataSelectionOptions,\r\n    readableHeader,\r\n    noOfFiltersPerRow = 4,\r\n    updateFilters,\r\n    uiMode = 'normal',\r\n    highlightDataPointSettings,\r\n  } = props;\r\n  // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n  const [filteredData, setFilteredData] = useState<any>(undefined);\r\n  // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n  const [data, setData] = useState<any>(undefined);\r\n  const [graphConfig, setGraphConfig] = useState<GraphConfigurationDataType[] | undefined>(\r\n    graphDataConfiguration,\r\n  );\r\n  const [advancedGraphSettings, setAdvancedGraphSettings] = useState<GraphSettingsDataType>({});\r\n  const [highlightedDataPointList, setHighlightedDataPointList] = useState<\r\n    (string | number)[] | undefined\r\n  >(undefined);\r\n  const [highlightedDataPointOptions, setHighlightedDataPointOption] = useState<\r\n    { label: string | number; value: string | number }[]\r\n  >([]);\r\n  const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n  const prevGraphDataConfigRef = useRef<GraphConfigurationDataType[] | undefined>(\r\n    graphDataConfiguration,\r\n  );\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  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\r\n  const filteredDataEvent = useEffectEvent(() => {\r\n    if (!data || filterSettings.length === 0) setFilteredData(data);\r\n    else {\r\n      // biome-ignore lint/suspicious/noExplicitAny: undefined data type\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    if (dataSelectionOptions)\r\n      setAdvancedGraphSettings(getGraphSettings(dataSelectionOptions, graphDataConfiguration));\r\n  }, [dataSelectionOptions, graphDataConfiguration]);\r\n\r\n  const updateHighlightedDataPointOptions = useEffectEvent(() => {\r\n    if (highlightDataPointSettings?.column && filteredData)\r\n      setHighlightedDataPointOption(\r\n        getUniqValue(filteredData, highlightDataPointSettings.column)\r\n          .filter((v) => !highlightDataPointSettings?.excludeValues?.includes(`${v}`))\r\n          .map((d) => ({ value: d, label: d })),\r\n      );\r\n  });\r\n\r\n  useEffect(() => {\r\n    updateHighlightedDataPointOptions();\r\n  }, [highlightDataPointSettings]);\r\n\r\n  useEffect(() => {\r\n    if (!isEqual(prevGraphDataConfigRef.current, graphDataConfiguration)) {\r\n      setGraphConfig(graphDataConfiguration);\r\n      prevGraphDataConfigRef.current = graphDataConfiguration;\r\n    }\r\n  }, [graphDataConfiguration]);\r\n\r\n  // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n  const handleFilterChange = (filter: string, values: any) => {\r\n    setFilterSettings((prev) =>\r\n      prev.map((f) => (f.filter === filter ? { ...f, value: values } : f)),\r\n    );\r\n  };\r\n\r\n  const graphData = !data\r\n    ? undefined\r\n    : transformDataForGraph(\r\n        dataTransform\r\n          ? transformDataForAggregation(\r\n              filterData(data, dataFilters || []),\r\n              dataTransform.keyColumn,\r\n              dataTransform.aggregationColumnsSetting,\r\n            )\r\n          : filterData(data, dataFilters || []),\r\n        graphType,\r\n        graphType === 'lineChartWithConfidenceInterval' && graphConfig\r\n          ? addMinAndMax(graphConfig)\r\n          : graphConfig,\r\n      );\r\n  return (\r\n    <GraphContainer\r\n      className={graphSettings?.classNames?.graphContainer}\r\n      style={graphSettings?.styles?.graphContainer}\r\n      id={graphSettings?.graphID}\r\n      ref={graphParentDiv}\r\n      aria-label={graphSettings?.ariaLabel}\r\n      backgroundColor={graphSettings?.backgroundColor ?? false}\r\n      theme={graphSettings?.theme || 'light'}\r\n      language={graphSettings?.language || 'en'}\r\n      width={graphSettings?.width}\r\n      height={graphSettings?.height}\r\n      padding={graphSettings?.padding}\r\n      minHeight={graphSettings?.minHeight}\r\n      relativeHeight={graphSettings?.relativeHeight}\r\n    >\r\n      {data ||\r\n      graphList\r\n        .filter((el) => el.geoHubMapPresentation)\r\n        .map((el) => el.graphID)\r\n        .indexOf(graphType) !== -1 ? (\r\n        <>\r\n          {advancedGraphSettings?.graphTitle ||\r\n          advancedGraphSettings?.graphDescription ||\r\n          graphSettings?.graphTitle ||\r\n          graphSettings?.graphDescription ||\r\n          graphSettings?.graphDownload ||\r\n          graphSettings?.dataDownload ? (\r\n            <GraphHeader\r\n              styles={{\r\n                title: advancedGraphSettings?.styles?.title || graphSettings?.styles?.title,\r\n                description:\r\n                  advancedGraphSettings?.styles?.description || graphSettings?.styles?.description,\r\n              }}\r\n              classNames={{\r\n                title: advancedGraphSettings?.classNames?.title || graphSettings?.classNames?.title,\r\n                description:\r\n                  advancedGraphSettings?.classNames?.description ||\r\n                  graphSettings?.classNames?.description,\r\n              }}\r\n              graphTitle={advancedGraphSettings?.graphTitle || graphSettings?.graphTitle}\r\n              graphDescription={\r\n                advancedGraphSettings?.graphDescription || graphSettings?.graphDescription\r\n              }\r\n              width={advancedGraphSettings?.width || graphSettings?.width}\r\n              graphDownload={graphSettings?.graphDownload ? graphParentDiv : undefined}\r\n              dataDownload={\r\n                graphSettings?.dataDownload && data ? (data.length > 0 ? data : null) : null\r\n              }\r\n            />\r\n          ) : null}\r\n          {filterSettings.length !== 0 ||\r\n          (dataSelectionOptions || []).length !== 0 ||\r\n          (advancedDataSelectionOptions || []).length !== 0 ||\r\n          highlightDataPointSettings ? (\r\n            <div className='flex flex-wrap items-start gap-x-4 gap-y-0 w-full'>\r\n              {advancedDataSelectionOptions?.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                  className='pb-4'\r\n                  // biome-ignore lint/suspicious/noArrayIndexKey: index is the unique identifier\r\n                  key={i}\r\n                >\r\n                  <Label className='mb-2'>{d.label || 'Graph by'}</Label>\r\n                  {d.ui !== 'radio' ? (\r\n                    <DropdownSelect\r\n                      options={d.options.map((opt) => ({\r\n                        ...opt,\r\n                        value: opt.label,\r\n                      }))}\r\n                      size='sm'\r\n                      isClearable={false}\r\n                      isSearchable\r\n                      variant={uiMode}\r\n                      controlShouldRenderValue\r\n                      defaultValue={\r\n                        d.defaultValue\r\n                          ? {\r\n                              ...d.defaultValue,\r\n                              value: d.defaultValue?.label,\r\n                            }\r\n                          : {\r\n                              ...d.options[0],\r\n                              value: d.options[0].label,\r\n                            }\r\n                      }\r\n                      // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n                      onChange={(el: any) => {\r\n                        setAdvancedGraphSettings(el?.graphSettings || {});\r\n                        setGraphConfig(el?.dataConfiguration);\r\n                      }}\r\n                    />\r\n                  ) : (\r\n                    <RadioGroup\r\n                      defaultValue={d.defaultValue?.label || d.options[0].label}\r\n                      variant={uiMode}\r\n                      onValueChange={(el) => {\r\n                        const selectedOption =\r\n                          d.options[d.options.findIndex((opt) => opt.label === el)];\r\n                        setAdvancedGraphSettings(selectedOption.graphSettings || {});\r\n                        setGraphConfig(selectedOption.dataConfiguration);\r\n                      }}\r\n                    >\r\n                      {d.options.map((el) => (\r\n                        <RadioGroupItem label={el.label} value={el.label} key={el.label} />\r\n                      ))}\r\n                    </RadioGroup>\r\n                  )}\r\n                </div>\r\n              ))}\r\n              {dataSelectionOptions?.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                  className='pb-4'\r\n                  // biome-ignore lint/suspicious/noArrayIndexKey: index is the unique identifier\r\n                  key={i}\r\n                >\r\n                  <Label className='mb-2'>{d.label || `Visualize ${d.chartConfigId} by`}</Label>\r\n                  {!checkIfMultiple(d.chartConfigId, graphConfig || []) ? (\r\n                    d.ui !== 'radio' ? (\r\n                      <DropdownSelect\r\n                        options={d.allowedColumnIds}\r\n                        size='sm'\r\n                        isClearable={false}\r\n                        isSearchable\r\n                        variant={uiMode}\r\n                        controlShouldRenderValue\r\n                        defaultValue={\r\n                          graphDataConfiguration\r\n                            ? d.allowedColumnIds[\r\n                                d.allowedColumnIds.findIndex(\r\n                                  (j) =>\r\n                                    j.value ===\r\n                                    (graphDataConfiguration[\r\n                                      graphDataConfiguration.findIndex(\r\n                                        (el) => el.chartConfigId === d.chartConfigId,\r\n                                      )\r\n                                    ].columnId as string),\r\n                                )\r\n                              ]\r\n                            : undefined\r\n                        }\r\n                        // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n                        onChange={(el: any) => {\r\n                          const newGraphConfig = {\r\n                            columnId: el?.value as string,\r\n                            chartConfigId: d.chartConfigId,\r\n                          };\r\n                          const updatedConfig = graphConfig?.map((item) =>\r\n                            item.chartConfigId === newGraphConfig.chartConfigId\r\n                              ? newGraphConfig\r\n                              : item,\r\n                          );\r\n                          setAdvancedGraphSettings(\r\n                            getGraphSettings(dataSelectionOptions, updatedConfig),\r\n                          );\r\n                          setGraphConfig(updatedConfig);\r\n                        }}\r\n                      />\r\n                    ) : (\r\n                      <RadioGroup\r\n                        variant={uiMode}\r\n                        defaultValue={\r\n                          graphDataConfiguration\r\n                            ? d.allowedColumnIds[\r\n                                d.allowedColumnIds.findIndex(\r\n                                  (j) =>\r\n                                    j.value ===\r\n                                    (graphDataConfiguration[\r\n                                      graphDataConfiguration.findIndex(\r\n                                        (el) => el.chartConfigId === d.chartConfigId,\r\n                                      )\r\n                                    ].columnId as string),\r\n                                )\r\n                              ].value\r\n                            : ''\r\n                        }\r\n                        onValueChange={(el) => {\r\n                          const selectedOption =\r\n                            d.allowedColumnIds[\r\n                              d.allowedColumnIds.findIndex((opt) => opt.value === el)\r\n                            ];\r\n                          const newGraphConfig = {\r\n                            columnId: selectedOption.value,\r\n                            chartConfigId: d.chartConfigId,\r\n                          };\r\n                          const updatedConfig = graphConfig?.map((item) =>\r\n                            item.chartConfigId === newGraphConfig.chartConfigId\r\n                              ? newGraphConfig\r\n                              : item,\r\n                          );\r\n                          setAdvancedGraphSettings(\r\n                            getGraphSettings(dataSelectionOptions, updatedConfig),\r\n                          );\r\n                          setGraphConfig(updatedConfig);\r\n                        }}\r\n                      >\r\n                        {d.allowedColumnIds.map((el) => (\r\n                          <RadioGroupItem label={el.label} value={el.value} key={el.value} />\r\n                        ))}\r\n                      </RadioGroup>\r\n                    )\r\n                  ) : d.ui !== 'radio' ? (\r\n                    <DropdownSelect\r\n                      options={d.allowedColumnIds}\r\n                      size='sm'\r\n                      isMulti\r\n                      isSearchable\r\n                      variant={uiMode}\r\n                      controlShouldRenderValue\r\n                      defaultValue={\r\n                        graphDataConfiguration\r\n                          ? (\r\n                              graphDataConfiguration[\r\n                                graphDataConfiguration.findIndex(\r\n                                  (el) => el.chartConfigId === d.chartConfigId,\r\n                                )\r\n                              ].columnId as string[]\r\n                            ).map(\r\n                              (el) =>\r\n                                d.allowedColumnIds[\r\n                                  d.allowedColumnIds.findIndex((j) => j.value === el)\r\n                                ],\r\n                            )\r\n                          : undefined\r\n                      }\r\n                      filterOption={createFilter(filterConfig)}\r\n                      // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n                      onChange={(el: any) => {\r\n                        const newGraphConfig = {\r\n                          columnId: (el || []).map(\r\n                            // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n                            (item: any) => item.value,\r\n                          ) as string[],\r\n                          chartConfigId: d.chartConfigId,\r\n                        };\r\n                        const updatedConfig = graphConfig?.map((item) =>\r\n                          item.chartConfigId === newGraphConfig.chartConfigId\r\n                            ? newGraphConfig\r\n                            : item,\r\n                        );\r\n                        setGraphConfig(updatedConfig);\r\n                      }}\r\n                    />\r\n                  ) : (\r\n                    <CheckboxGroup\r\n                      variant={uiMode}\r\n                      defaultValue={\r\n                        graphDataConfiguration\r\n                          ? (\r\n                              graphDataConfiguration[\r\n                                graphDataConfiguration.findIndex(\r\n                                  (el) => el.chartConfigId === d.chartConfigId,\r\n                                )\r\n                              ].columnId as string[]\r\n                            )\r\n                              .map(\r\n                                (el) =>\r\n                                  d.allowedColumnIds[\r\n                                    d.allowedColumnIds.findIndex((j) => j.value === el)\r\n                                  ],\r\n                              )\r\n                              .map((el) => el.value)\r\n                          : []\r\n                      }\r\n                      onValueChange={(el) => {\r\n                        const newGraphConfig = {\r\n                          columnId: el || [],\r\n                          chartConfigId: d.chartConfigId,\r\n                        };\r\n                        const updatedConfig = graphConfig?.map((item) =>\r\n                          item.chartConfigId === newGraphConfig.chartConfigId\r\n                            ? newGraphConfig\r\n                            : item,\r\n                        );\r\n                        setGraphConfig(updatedConfig);\r\n                      }}\r\n                    >\r\n                      {d.allowedColumnIds.map((el) => (\r\n                        <CheckboxGroupItem label={el.label} value={el.value} key={el.value} />\r\n                      ))}\r\n                    </CheckboxGroup>\r\n                  )}\r\n                </div>\r\n              ))}\r\n              {filterSettings?.map((d) => (\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: 0,\r\n                    minWidth: '240px',\r\n                  }}\r\n                  className='pb-4'\r\n                  key={d.label}\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) => (\r\n                          <RadioGroupItem\r\n                            label={`${el.label}`}\r\n                            value={`${el.value}`}\r\n                            key={el.value}\r\n                          />\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) => (\r\n                            <CheckboxGroupItem\r\n                              label={`${el.label}`}\r\n                              value={`${el.value}`}\r\n                              key={el.value}\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-info'\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              {highlightDataPointSettings ? (\r\n                <div\r\n                  style={{\r\n                    width:\r\n                      highlightDataPointSettings.width ||\r\n                      `calc(${100 / noOfFiltersPerRow}% - ${\r\n                        (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n                      }rem)`,\r\n                    flexGrow: highlightDataPointSettings.width ? 0 : 1,\r\n                    flexShrink: 0,\r\n                    minWidth: '240px',\r\n                  }}\r\n                  className='pb-4'\r\n                >\r\n                  <Label className='mb-2'>\r\n                    {highlightDataPointSettings.label || 'Highlight data'}\r\n                  </Label>\r\n                  <DropdownSelect\r\n                    options={highlightedDataPointOptions}\r\n                    variant={uiMode}\r\n                    size='sm'\r\n                    isMulti\r\n                    isClearable\r\n                    isSearchable\r\n                    controlShouldRenderValue\r\n                    filterOption={createFilter(filterConfig)}\r\n                    // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n                    onChange={(el: any) => {\r\n                      // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n                      setHighlightedDataPointList(el?.map((d: any) => d.value));\r\n                    }}\r\n                    value={highlightedDataPointList?.map((d) => ({\r\n                      label: d,\r\n                      value: d,\r\n                    }))}\r\n                    defaultValue={highlightDataPointSettings.defaultValues?.map((d) => ({\r\n                      label: d,\r\n                      value: d,\r\n                    }))}\r\n                  />\r\n                </div>\r\n              ) : null}\r\n            </div>\r\n          ) : null}\r\n          <GraphEl\r\n            graph={graphType}\r\n            graphData={graphData}\r\n            graphDataConfiguration={graphConfig}\r\n            debugMode={debugMode}\r\n            readableHeader={readableHeader || []}\r\n            updateFilters={updateFilters}\r\n            settings={{\r\n              ...(graphSettings || {}),\r\n              ...advancedGraphSettings,\r\n              graphTitle: undefined,\r\n              graphDescription: undefined,\r\n              graphDownload: false,\r\n              dataDownload: false,\r\n              backgroundColor: undefined,\r\n              width: undefined,\r\n              height: undefined,\r\n              relativeHeight: undefined,\r\n              minHeight: undefined,\r\n              padding: '0',\r\n              theme: graphSettings?.theme,\r\n              ...(highlightedDataPointList\r\n                ? {\r\n                    highlightedDataPoints: highlightedDataPointList,\r\n                    highlightedIds: highlightedDataPointList?.map((d) => `${d}`),\r\n                    highlightedLines: highlightedDataPointList?.map((d) => d),\r\n                  }\r\n                : {}),\r\n            }}\r\n          />\r\n        </>\r\n      ) : (\r\n        <div className='w-full flex justify-center p-4'>\r\n          <Spinner />\r\n        </div>\r\n      )}\r\n    </GraphContainer>\r\n  );\r\n}\r\n"],"mappings":"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"}