{"version":3,"file":"GriddedGraphs.cjs","names":[],"sources":["../src/Components/Dashboard/GriddedGraphs.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 flattenDeep from 'lodash.flattendeep';\r\nimport intersection from 'lodash.intersection';\r\nimport { useCallback, useEffect, useEffectEvent, useMemo, useRef, useState } from 'react';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\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} from '@/Types';\r\nimport { checkIfMultiple } from '@/Utils/checkIfMultiple';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\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 { 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  noOfColumns?: number;\r\n  columnGridBy: string;\r\n  graphSettings?: GraphSettingsDataType;\r\n  dataSettings: DataSettingsDataType;\r\n  filters?: FilterUiSettingsDataType[];\r\n  noOfFiltersPerRow?: number;\r\n  graphType: Exclude<GraphType, 'geoHubMap' | 'geoHubCompareMap' | 'geoHubMapWithLayerSelection'>;\r\n  dataTransform?: {\r\n    keyColumn: string;\r\n    aggregationColumnsSetting?: AggregationSettingsDataType[];\r\n  };\r\n  showCommonColorScale?: boolean;\r\n  dataFilters?: DataFilterDataType[];\r\n  graphDataConfiguration?: GraphConfigurationDataType[];\r\n  dataSelectionOptions?: DataSelectionDataType[];\r\n  advancedDataSelectionOptions?: AdvancedDataSelectionDataType[];\r\n  minGraphHeight?: number;\r\n  minGraphWidth?: number;\r\n  debugMode?: boolean;\r\n  readableHeader?: {\r\n    value: string;\r\n    label: string;\r\n  }[];\r\n  uiMode?: 'light' | 'normal';\r\n  theme?: 'dark' | 'light';\r\n}\r\n\r\nexport function GriddedGraphs(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    noOfColumns,\r\n    columnGridBy,\r\n    dataFilters,\r\n    showCommonColorScale,\r\n    minGraphHeight,\r\n    minGraphWidth,\r\n    debugMode,\r\n    dataSelectionOptions,\r\n    advancedDataSelectionOptions,\r\n    readableHeader,\r\n    noOfFiltersPerRow = 4,\r\n    uiMode = 'normal',\r\n    theme = 'light',\r\n  } = props;\r\n  // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n  const [data, setData] = useState<any>(undefined);\r\n  // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n  const [dataFromFile, setDataFromFile] = useState<any>(undefined);\r\n  const [gridOption, setGridOption] = useState<(string | number)[]>([]);\r\n  const graphParentDiv = useRef<HTMLDivElement>(null);\r\n  const [graphConfig, setGraphConfig] = useState<GraphConfigurationDataType[] | undefined>(\r\n    graphDataConfiguration,\r\n  );\r\n  const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n  const [advancedGraphSettings, setAdvancedGraphSettings] = useState<GraphSettingsDataType>({});\r\n\r\n  const filterConfig = useMemo(\r\n    () => ({\r\n      ignoreCase: true,\r\n      ignoreAccents: true,\r\n      trim: true,\r\n    }),\r\n    [],\r\n  );\r\n\r\n  const filteredData = useMemo(() => {\r\n    if (!dataFromFile || filterSettings.length === 0) return dataFromFile;\r\n    // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n    const result = dataFromFile.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    return result;\r\n  }, [filterSettings, dataFromFile]);\r\n  useEffect(() => {\r\n    setData(filteredData);\r\n  }, [filteredData]);\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(dataFromFile, 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  useEffect(() => {\r\n    const fetchData = async () => {\r\n      try {\r\n        const fetchDataFromFile = 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        setDataFromFile(fetchDataFromFile);\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  useEffect(() => {\r\n    updateFiltersEvent();\r\n  }, [filters, dataFromFile]);\r\n\r\n  const updateGridOptionEvent = useEffectEvent(() => {\r\n    const gridValue = getUniqValue(dataFromFile, columnGridBy) as (string | number)[];\r\n    setGridOption(gridValue);\r\n  });\r\n  useEffect(() => {\r\n    updateGridOptionEvent();\r\n  }, [columnGridBy, dataFromFile]);\r\n  useEffect(() => {\r\n    setGraphConfig(graphDataConfiguration);\r\n  }, [graphDataConfiguration]);\r\n  // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n  const handleFilterChange = useCallback((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  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 || 'This is a gridded graph'}\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    >\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      {data && gridOption.length > 0 ? (\r\n        <>\r\n          {filterSettings.length !== 0 ||\r\n          (dataSelectionOptions || []).length !== 0 ||\r\n          (advancedDataSelectionOptions || []).length !== 0 ? (\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                      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                        isClearable={false}\r\n                        isSearchable\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                              ]\r\n                            : undefined\r\n                        }\r\n                        controlShouldRenderValue\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(el?.graphSettings || {});\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(selectedOption.graphSettings || {});\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                      isMulti\r\n                      variant={uiMode}\r\n                      isSearchable\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                      isRtl={graphSettings?.language === 'ar' || graphSettings?.language === 'he'}\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, 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                    flexWrap: 'wrap',\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}</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            </div>\r\n          ) : null}\r\n          {showCommonColorScale !== false && graphSettings?.showColorScale !== false ? (\r\n            <ColorLegend\r\n              width={graphSettings?.width}\r\n              colorLegendTitle={graphSettings?.colorLegendTitle}\r\n              colors={\r\n                (graphSettings?.colors as string[] | undefined) ||\r\n                (graphSettings?.lineColors as string[] | undefined) ||\r\n                Colors[(graphSettings?.theme as 'light' | 'dark' | undefined) || 'light']\r\n                  .categoricalColors.colors\r\n              }\r\n              colorDomain={graphSettings?.colorDomain || graphSettings?.labels || []}\r\n              showNAColor={\r\n                graphSettings?.showNAColor === undefined || graphSettings?.showNAColor === null\r\n                  ? true\r\n                  : graphSettings?.showNAColor\r\n              }\r\n            />\r\n          ) : null}\r\n          <div\r\n            className={`flex flex-wrap gap-4 justify-center ${graphSettings?.language === 'ar' || graphSettings?.language === 'he' ? 'flex-row-reverse' : 'flex-row'}`}\r\n          >\r\n            {gridOption.map((el) => (\r\n              <div\r\n                key={el}\r\n                style={{\r\n                  width: `calc(${\r\n                    100 / (noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number))\r\n                  }% - ${\r\n                    ((noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number)) - 1) /\r\n                    (noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number))\r\n                  }rem)`,\r\n                  minWidth: checkIfNullOrUndefined(minGraphWidth) ? '280px' : `${minGraphWidth}px`,\r\n                }}\r\n              >\r\n                <GraphEl\r\n                  graph={graphType}\r\n                  graphDataConfiguration={graphConfig}\r\n                  graphData={\r\n                    transformDataForGraph(\r\n                      dataTransform\r\n                        ? transformDataForAggregation(\r\n                            filterData(data, dataFilters || []).filter(\r\n                              // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n                              (d: any) => d[columnGridBy] === el,\r\n                            ),\r\n                            dataTransform.keyColumn,\r\n                            dataTransform.aggregationColumnsSetting,\r\n                          )\r\n                        : filterData(data, dataFilters || []).filter(\r\n                            // biome-ignore lint/suspicious/noExplicitAny: undefined data type\r\n                            (d: any) => d[columnGridBy] === el,\r\n                          ),\r\n                      graphType,\r\n                      graphConfig,\r\n                    ) || []\r\n                  }\r\n                  debugMode={debugMode}\r\n                  settings={{\r\n                    ...(graphSettings || {}),\r\n                    ...advancedGraphSettings,\r\n                    theme: graphSettings?.theme || theme,\r\n                    width: undefined,\r\n                    height: undefined,\r\n                    relativeHeight: graphSettings?.relativeHeight || 0.67,\r\n                    minHeight: minGraphHeight,\r\n                    graphTitle: `${el}`,\r\n                    graphDescription: undefined,\r\n                    graphDownload: false,\r\n                    dataDownload: false,\r\n                    backgroundColor: undefined,\r\n                    padding: '0',\r\n                    footNote: undefined,\r\n                    sources: undefined,\r\n                    showColorScale:\r\n                      graphSettings?.showColorScale === false\r\n                        ? false\r\n                        : showCommonColorScale === false,\r\n                  }}\r\n                  readableHeader={readableHeader || []}\r\n                />\r\n              </div>\r\n            ))}\r\n          </div>\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      {graphSettings?.sources || graphSettings?.footNote ? (\r\n        <GraphFooter\r\n          styles={{\r\n            footnote: graphSettings?.styles?.footnote,\r\n            source: graphSettings?.styles?.source,\r\n          }}\r\n          classNames={{\r\n            footnote: graphSettings?.classNames?.footnote,\r\n            source: graphSettings?.classNames?.source,\r\n          }}\r\n          sources={graphSettings?.sources}\r\n          footNote={graphSettings?.footNote}\r\n          width={graphSettings?.width}\r\n        />\r\n      ) : null}\r\n    </GraphContainer>\r\n  );\r\n}\r\n"],"mappings":"iiCAqEA,SAAgB,EAAc,EAAc,CAC1C,GAAM,CACJ,gBACA,eACA,UACA,YACA,gBACA,yBACA,cACA,eACA,cACA,uBACA,iBACA,gBACA,YACA,uBACA,+BACA,iBACA,oBAAoB,EACpB,SAAS,SACT,QAAQ,SACN,EAEE,CAAC,EAAM,IAAA,EAAA,EAAA,UAAyB,IAAA,EAAS,EAEzC,CAAC,EAAc,IAAA,EAAA,EAAA,UAAiC,IAAA,EAAS,EACzD,CAAC,EAAY,KAAA,EAAA,EAAA,UAA+C,CAAC,CAAC,EAC9D,GAAA,EAAA,EAAA,QAAwC,IAAI,EAC5C,CAAC,EAAa,IAAA,EAAA,EAAA,UAClB,CACF,EACM,CAAC,EAAgB,IAAA,EAAA,EAAA,UAAwD,CAAC,CAAC,EAC3E,CAAC,EAAuB,IAAA,EAAA,EAAA,UAA4D,CAAC,CAAC,EAEtF,GAAA,EAAA,EAAA,cACG,CACL,WAAY,GACZ,cAAe,GACf,KAAM,EACR,GACA,CAAC,CACH,EAEM,GAAA,EAAA,EAAA,aACA,CAAC,GAAgB,EAAe,SAAW,EAAU,EAE1C,EAAa,OAAQ,GAClC,EAAe,MAAO,GACpB,EAAO,QAAA,EAAA,EAAA,SAAqB,CAAC,EAAO,KAAK,CAAC,EAAE,OAAS,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAEnC,CAAC,EAAK,EAAO,OAAO,CAAC,GAAA,EAAA,EAAA,SACrB,CAAC,EAAO,KAAK,CAAC,EAAE,IAAK,GAAO,EAAG,KAAK,CAClD,EAAE,OAAS,EACX,EACN,CAEK,EACN,CAAC,EAAgB,CAAY,CAAC,GACjC,EAAA,EAAA,eAAgB,CACd,EAAQ,CAAY,CACtB,EAAG,CAAC,CAAY,CAAC,EAEjB,IAAM,GAAA,EAAA,EAAA,oBAA0C,CAe9C,GAd4B,GAAW,CAAC,GAAG,IAAK,IAAQ,CACtD,OAAQ,EAAG,OACX,MAAO,EAAG,OAAS,aAAa,EAAG,SACnC,aAAc,EAAG,aACjB,UAAW,EAAG,UACd,GAAI,EAAG,GACP,aAAc,EAAA,EAAsB,EAAG,YAAY,EACnD,MAAO,EAAA,EAAsB,EAAG,YAAY,EAC5C,gBAAiB,EAAA,EAAa,EAAc,EAAG,MAAM,EAClD,OAAQ,GAAM,CAAC,EAAG,eAAe,SAAS,GAAG,GAAG,CAAC,EACjD,IAAK,IAAO,CAAE,MAAO,EAAG,MAAO,CAAE,EAAE,EACtC,eAAgB,EAAG,eACnB,MAAO,EAAG,KACZ,EACkB,CAAkB,CACtC,CAAC,GACD,EAAA,EAAA,eAAgB,EAsCd,SArC8B,CAC5B,GAAI,CA+BF,EA9B0B,EAAa,QACnC,OAAO,EAAa,SAAY,SAC9B,EAAa,WAAa,OACxB,MAAM,EAAA,EACJ,EAAa,QACb,EAAa,eACb,EAAa,mBACb,CACF,EACA,EAAa,WAAa,MACxB,MAAM,EAAA,EACJ,EAAa,QACb,EAAa,WACb,EAAa,eACb,EAAa,mBACb,CACF,EACA,MAAM,EAAA,EACJ,EAAa,QACb,EAAa,mBACb,EAAa,eACb,EACA,EAAa,UACb,EACF,EACJ,MAAM,EAAA,EACJ,EAAa,QACb,EAAa,aACf,EACF,MAAM,EAAA,EAAwB,EAAa,KAAM,EAAa,cAAc,CAC/C,CACnC,OAAS,EAAO,CACd,QAAQ,MAAM,uBAAwB,CAAK,CAC7C,CACF,GACU,EACV,EAAmB,CACrB,EAAG,CAAC,EAAc,CAAS,CAAC,GAC5B,EAAA,EAAA,eAAgB,CACd,EAAmB,CACrB,EAAG,CAAC,EAAS,CAAY,CAAC,EAE1B,IAAM,IAAA,EAAA,EAAA,oBAA6C,CAEjD,GADkB,EAAA,EAAa,EAAc,CAC/B,CAAS,CACzB,CAAC,GACD,EAAA,EAAA,eAAgB,CACd,GAAsB,CACxB,EAAG,CAAC,EAAc,CAAY,CAAC,GAC/B,EAAA,EAAA,eAAgB,CACd,EAAe,CAAsB,CACvC,EAAG,CAAC,CAAsB,CAAC,EAE3B,IAAM,GAAA,EAAA,EAAA,cAAkC,EAAgB,IAAgB,CACtE,EAAmB,GACjB,EAAK,IAAK,GAAO,EAAE,SAAW,EAAS,CAAE,GAAG,EAAG,MAAO,CAAO,EAAI,CAAE,CACrE,CACF,EAAG,CAAC,CAAC,EACL,OACE,EAAA,EAAA,MAAC,EAAA,EAAD,CACE,UAAW,GAAe,YAAY,eACtC,MAAO,GAAe,QAAQ,eAC9B,GAAI,GAAe,QACnB,IAAK,EACL,aAAY,GAAe,WAAa,0BACxC,gBAAiB,GAAe,iBAAmB,GACnD,MAAO,GAAe,OAAS,QAC/B,SAAU,GAAe,UAAY,KACrC,MAAO,GAAe,MACtB,OAAQ,GAAe,OACvB,QAAS,GAAe,iBAX1B,CAaG,GAAuB,YACxB,GAAuB,kBACvB,GAAe,YACf,GAAe,kBACf,GAAe,eACf,GAAe,cACb,EAAA,EAAA,KAAC,GAAA,YAAD,CACE,OAAQ,CACN,MAAO,GAAuB,QAAQ,OAAS,GAAe,QAAQ,MACtE,YACE,GAAuB,QAAQ,aAAe,GAAe,QAAQ,WACzE,EACA,WAAY,CACV,MAAO,GAAuB,YAAY,OAAS,GAAe,YAAY,MAC9E,YACE,GAAuB,YAAY,aACnC,GAAe,YAAY,WAC/B,EACA,WAAY,GAAuB,YAAc,GAAe,WAChE,iBACE,GAAuB,kBAAoB,GAAe,iBAE5D,MAAO,GAAuB,OAAS,GAAe,MACtD,cAAe,GAAe,cAAgB,EAAiB,IAAA,GAC/D,aACE,GAAe,cAAgB,GAAQ,EAAK,OAAS,EAAI,EAAO,IAEnE,CAAA,EACC,KACH,GAAQ,EAAW,OAAS,GAC3B,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,EAAe,SAAW,IAC1B,GAAwB,CAAC,GAAG,SAAW,IACvC,GAAgC,CAAC,GAAG,SAAW,GAC9C,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6DAAf,CACG,GAA8B,KAAK,EAAG,KACrC,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,MACE,EAAE,OACF,QAAQ,IAAM,EAAkB,OAC7B,EAAoB,GAAK,EAC3B,MACH,SAAU,IAAE,MACZ,WAAY,EAAE,KAAO,SAAW,EAAE,MAAQ,EAAI,EAC9C,SAAU,OACZ,EACA,UAAU,gBAXZ,EAeE,EAAA,EAAA,KAAC,EAAA,MAAD,CAAO,UAAU,gBAAQ,EAAE,OAAS,UAAkB,CAAA,EACrD,EAAE,KAAO,SA4BR,EAAA,EAAA,KAAC,EAAA,WAAD,CACE,aAAc,EAAE,cAAc,OAAS,EAAE,QAAQ,GAAG,MACpD,QAAS,EACT,cAAgB,GAAO,CACrB,IAAM,EACJ,EAAE,QAAQ,EAAE,QAAQ,UAAW,GAAQ,EAAI,QAAU,CAAE,GACzD,EAAyB,EAAe,eAAiB,CAAC,CAAC,EAC3D,EAAe,EAAe,iBAAiB,CACjD,WAEC,EAAE,QAAQ,IAAK,IACd,EAAA,EAAA,KAAC,EAAA,eAAD,CAAgB,MAAO,EAAG,MAAO,MAAO,EAAG,KAAuB,EAAX,EAAG,KAAQ,CACnE,CACS,CAAA,GAxCZ,EAAA,EAAA,KAAC,EAAA,eAAD,CACE,QAAS,EAAE,QAAQ,IAAK,IAAS,CAC/B,GAAG,EACH,MAAO,EAAI,KACb,EAAE,EACF,YAAa,GACb,aAAA,GACA,QAAS,EACT,yBAAA,GACA,aACE,EAAE,aACE,CACE,GAAG,EAAE,aACL,MAAO,EAAE,cAAc,KACzB,EACA,CACE,GAAG,EAAE,QAAQ,GACb,MAAO,EAAE,QAAQ,GAAG,KACtB,EAGN,SAAW,GAAY,CACrB,EAAyB,GAAI,eAAiB,CAAC,CAAC,EAChD,EAAe,GAAI,iBAAiB,CACtC,CACD,CAAA,CAiBA,GA9CE,CA8CF,CACN,EACA,GAAsB,KAAK,EAAG,KAC7B,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,MACE,EAAE,OACF,QAAQ,IAAM,EAAkB,OAC7B,EAAoB,GAAK,EAC3B,MACH,SAAU,IAAE,MACZ,WAAY,EAAE,KAAO,SAAW,EAAE,MAAQ,EAAI,EAC9C,SAAU,OACZ,EACA,UAAU,gBAXZ,EAeE,EAAA,EAAA,KAAC,EAAA,MAAD,CAAO,UAAU,gBAAQ,EAAE,OAAS,aAAa,EAAE,cAAc,IAAY,CAAA,EAC3E,GAAA,EAAgB,EAAE,cAAe,GAAe,CAAC,CAAC,EA+EhD,EAAE,KAAO,SA2CX,EAAA,EAAA,KAAC,EAAA,cAAD,CACE,QAAS,EACT,aACE,EAEM,EACE,EAAuB,UACpB,GAAO,EAAG,gBAAkB,EAAE,aACjC,GACA,SAED,IACE,GACC,EAAE,iBACA,EAAE,iBAAiB,UAAW,GAAM,EAAE,QAAU,CAAE,EAExD,EACC,IAAK,GAAO,EAAG,KAAK,EACvB,CAAC,EAEP,cAAgB,GAAO,CACrB,IAAM,EAAiB,CACrB,SAAU,GAAM,CAAC,EACjB,cAAe,EAAE,aACnB,EACM,EAAgB,GAAa,IAAK,GACtC,EAAK,gBAAkB,EAAe,cAClC,EACA,CACN,EACA,EAAe,CAAa,CAC9B,WAEC,EAAE,iBAAiB,IAAK,IACvB,EAAA,EAAA,KAAC,EAAA,kBAAD,CAAmB,MAAO,EAAG,MAAO,MAAO,EAAG,KAAuB,EAAX,EAAG,KAAQ,CACtE,CACY,CAAA,GA9Ef,EAAA,EAAA,KAAC,EAAA,eAAD,CACE,QAAS,EAAE,iBACX,QAAA,GACA,QAAS,EACT,aAAA,GACA,yBAAA,GACA,aACE,EAEM,EACE,EAAuB,UACpB,GAAO,EAAG,gBAAkB,EAAE,aACjC,GACA,SACF,IACC,GACC,EAAE,iBACA,EAAE,iBAAiB,UAAW,GAAM,EAAE,QAAU,CAAE,EAExD,EACA,IAAA,GAEN,cAAA,EAAA,EAAA,cAA2B,CAAY,EAEvC,SAAW,GAAY,CACrB,IAAM,EAAiB,CACrB,SAAU,EAAG,IAEV,GAAc,EAAK,KACtB,EACA,cAAe,EAAE,aACnB,EACM,EAAgB,GAAa,IAAK,GACtC,EAAK,gBAAkB,EAAe,cAClC,EACA,CACN,EACA,EAAe,CAAa,CAC9B,EACA,MAAO,GAAe,WAAa,MAAQ,GAAe,WAAa,IACxE,CAAA,EAvHD,EAAE,KAAO,SAsCP,EAAA,EAAA,KAAC,EAAA,WAAD,CACE,QAAS,EACT,aACE,EACI,EAAE,iBACA,EAAE,iBAAiB,UAChB,GACC,EAAE,QACD,EACC,EAAuB,UACpB,GAAO,EAAG,gBAAkB,EAAE,aACjC,GACA,QACN,GACA,MACF,GAEN,cAAgB,GAAO,CACrB,IAAM,EACJ,EAAE,iBACA,EAAE,iBAAiB,UAAW,GAAQ,EAAI,QAAU,CAAE,GAEpD,EAAiB,CACrB,SAAU,EAAe,MACzB,cAAe,EAAE,aACnB,EACM,EAAgB,GAAa,IAAK,GACtC,EAAK,gBAAkB,EAAe,cAClC,EACA,CACN,EACA,EAAyB,EAAe,eAAiB,CAAC,CAAC,EAC3D,EAAe,CAAa,CAC9B,WAEC,EAAE,iBAAiB,IAAK,IACvB,EAAA,EAAA,KAAC,EAAA,eAAD,CAAgB,MAAO,EAAG,MAAO,MAAO,EAAG,KAAuB,EAAX,EAAG,KAAQ,CACnE,CACS,CAAA,GA3EZ,EAAA,EAAA,KAAC,EAAA,eAAD,CACE,QAAS,EAAE,iBACX,YAAa,GACb,aAAA,GACA,QAAS,EACT,aACE,EACI,EAAE,iBACA,EAAE,iBAAiB,UAChB,GACC,EAAE,QACD,EACC,EAAuB,UACpB,GAAO,EAAG,gBAAkB,EAAE,aACjC,GACA,QACN,GAEF,IAAA,GAEN,yBAAA,GAEA,SAAW,GAAY,CACrB,IAAM,EAAiB,CACrB,SAAU,GAAI,MACd,cAAe,EAAE,aACnB,EACM,EAAgB,GAAa,IAAK,GACtC,EAAK,gBAAkB,EAAe,cAClC,EACA,CACN,EACA,EAAyB,GAAI,eAAiB,CAAC,CAAC,EAChD,EAAe,CAAa,CAC9B,CACD,CAAA,CA2HF,GAnKE,CAmKF,CACN,EACA,GAAgB,KAAK,EAAG,KACvB,EAAA,EAAA,MAAC,MAAD,CACE,MAAO,CACL,MACE,EAAE,OACF,QAAQ,IAAM,EAAkB,OAC7B,EAAoB,GAAK,EAC3B,MACH,SAAU,IAAE,MACZ,WAAY,EAAE,KAAO,SAAW,EAAE,MAAQ,EAAI,EAC9C,SAAU,MACZ,EACA,UAAU,gBAXZ,EAeE,EAAA,EAAA,KAAC,EAAA,MAAD,CAAO,UAAU,gBAAQ,EAAE,KAAa,CAAA,EACvC,EAAE,aACD,EAAE,KAAO,SAeP,EAAA,EAAA,KAAC,EAAA,WAAD,CACE,QAAS,EACT,aAAe,EAAE,aAAkD,MACnE,cAAgB,GAAO,CACrB,EACE,EAAE,OACF,EAAE,gBAAgB,OAAQ,GAAM,EAAE,QAAU,CAAE,CAChD,CACF,WAEC,EAAE,gBAAgB,IAAK,IACtB,EAAA,EAAA,KAAC,EAAA,eAAD,CACE,MAAO,GAAG,EAAG,QACb,MAAO,GAAG,EAAG,OAEd,EADM,EAAG,KACT,CACF,CACS,CAAA,GA/BZ,EAAA,EAAA,KAAC,EAAA,eAAD,CACE,QAAS,EAAE,gBACX,QAAS,EACT,YAAa,EAAE,YAAc,IAAA,GAAY,GAAO,EAAE,UAClD,aAAA,GACA,yBAAA,GACA,cAAA,EAAA,EAAA,cAA2B,CAAY,EACvC,SAAW,GAAO,CAChB,EAAmB,EAAE,OAAQ,CAAE,CACjC,EACA,MAAO,EAAE,MACT,aAAc,EAAE,YACjB,CAAA,GAsBH,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,EAAE,KAAO,SAiBR,EAAA,EAAA,KAAC,EAAA,cAAD,CACE,QAAS,EACT,aACE,EAAE,aAEI,EAAE,aAIF,IAAK,GAAO,GAAG,EAAG,OAAO,EAC3B,CAAC,EAEP,MACE,EAAE,MAEI,EAAE,MAIF,IAAK,GAAO,GAAG,EAAG,OAAO,EAC3B,IAAA,GAEN,cAAgB,GAAO,CACrB,EACE,EAAE,OACF,EAAE,gBAAgB,OAAQ,GAAM,EAAG,QAAQ,GAAG,EAAE,OAAO,IAAM,EAAE,CACjE,CACF,WAEC,EAAE,gBAAgB,IAAK,IACtB,EAAA,EAAA,KAAC,EAAA,kBAAD,CACE,MAAO,GAAG,EAAG,QACb,MAAO,GAAG,EAAG,OAEd,EADM,EAAG,KACT,CACF,CACY,CAAA,GApDf,EAAA,EAAA,KAAC,EAAA,eAAD,CACE,QAAS,EAAE,gBACX,QAAS,EACT,KAAK,KACL,QAAA,GACA,YAAa,EAAE,YAAc,IAAA,GAAY,GAAO,EAAE,UAClD,aAAA,GACA,yBAAA,GACA,cAAA,EAAA,EAAA,cAA2B,CAAY,EACvC,SAAW,GAAO,CAChB,EAAmB,EAAE,OAAQ,CAAE,CACjC,EACA,MAAO,EAAE,MACT,aAAc,EAAE,YACjB,CAAA,EAwCF,EAAE,gBACD,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAU,4DACV,YAAe,CACb,EAAmB,EAAE,OAAQ,EAAE,eAAe,CAChD,WACD,oBAEO,CAAA,EACN,IACJ,CAAA,CAAA,CAED,GA5GE,CA4GF,CACN,CACE,IACH,KACH,IAAyB,IAAS,GAAe,iBAAmB,IACnE,EAAA,EAAA,KAAC,EAAA,YAAD,CACE,MAAO,GAAe,MACtB,iBAAkB,GAAe,iBACjC,OACG,GAAe,QACf,GAAe,YAChB,EAAA,OAAQ,GAAe,OAA0C,SAC9D,kBAAkB,OAEvB,YAAa,GAAe,aAAe,GAAe,QAAU,CAAC,EACrE,YACE,GAAe,cAAgB,IAAA,IAAa,GAAe,cAAgB,KACvE,GACA,GAAe,WAEtB,CAAA,EACC,MACJ,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,uCAAuC,GAAe,WAAa,MAAQ,GAAe,WAAa,KAAO,mBAAqB,sBAE7I,EAAW,IAAK,IACf,EAAA,EAAA,KAAC,MAAD,CAEE,MAAO,CACL,MAAO,QACL,KAAO,GAAgB,KAAK,IAAQ,EAAG,EAAW,QAAU,CAAE,GAC/D,QACG,GAAgB,KAAK,IAAQ,EAAG,EAAW,QAAU,CAAE,GAAgB,IACxE,GAAgB,KAAK,IAAQ,EAAG,EAAW,QAAU,CAAE,GACzD,MACD,SAAU,EAAA,EAAuB,CAAa,EAAI,QAAU,GAAG,EAAc,GAC/E,YAEA,EAAA,EAAA,KAAC,GAAA,EAAD,CACE,MAAO,EACP,uBAAwB,EACxB,UACE,EAAA,EACE,EACI,EAAA,EACE,EAAA,EAAW,EAAM,GAAe,CAAC,CAAC,EAAE,OAEjC,GAAW,EAAE,KAAkB,CAClC,EACA,EAAc,UACd,EAAc,yBAChB,EACA,EAAA,EAAW,EAAM,GAAe,CAAC,CAAC,EAAE,OAEjC,GAAW,EAAE,KAAkB,CAClC,EACJ,EACA,CACF,GAAK,CAAC,EAEG,YACX,SAAU,CACR,GAAI,GAAiB,CAAC,EACtB,GAAG,EACH,MAAO,GAAe,OAAS,EAC/B,MAAO,IAAA,GACP,OAAQ,IAAA,GACR,eAAgB,GAAe,gBAAkB,IACjD,UAAW,EACX,WAAY,GAAG,IACf,iBAAkB,IAAA,GAClB,cAAe,GACf,aAAc,GACd,gBAAiB,IAAA,GACjB,QAAS,IACT,SAAU,IAAA,GACV,QAAS,IAAA,GACT,eACE,GAAe,iBAAmB,GAC9B,GACA,IAAyB,EACjC,EACA,eAAgB,GAAkB,CAAC,CACpC,CAAA,CACE,EAzDE,CAyDF,CACN,CACE,CAAA,CACL,CAAA,CAAA,GAEF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,2CACb,EAAA,EAAA,KAAC,EAAA,QAAD,CAAU,CAAA,CACP,CAAA,EAEN,GAAe,SAAW,GAAe,UACxC,EAAA,EAAA,KAAC,GAAA,YAAD,CACE,OAAQ,CACN,SAAU,GAAe,QAAQ,SACjC,OAAQ,GAAe,QAAQ,MACjC,EACA,WAAY,CACV,SAAU,GAAe,YAAY,SACrC,OAAQ,GAAe,YAAY,MACrC,EACA,QAAS,GAAe,QACxB,SAAU,GAAe,SACzB,MAAO,GAAe,KACvB,CAAA,EACC,IACU,GAEpB"}