@redsift/dashboard 12.5.2-muiv6 → 12.5.2
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/_internal/Dashboard2.js +2 -2
- package/_internal/Dashboard2.js.map +1 -1
- package/_internal/DataCardBody2.js +1 -0
- package/_internal/DataCardBody2.js.map +1 -1
- package/_internal/DataCardListbox2.js +1 -0
- package/_internal/DataCardListbox2.js.map +1 -1
- package/_internal/DrilldownDashboard2.js.map +1 -1
- package/_internal/PdfExportButton2.js +5 -5
- package/_internal/PdfExportButton2.js.map +1 -1
- package/_internal/WithFilters2.js +3 -6
- package/_internal/WithFilters2.js.map +1 -1
- package/_internal/types.js.map +1 -1
- package/index.d.ts +11627 -13
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithFilters2.js","sources":["../../src/hooks/useCategoricalChartAsListbox.ts","../../src/components/WithFilters/FilterableBarChart.tsx","../../src/components/WithFilters/FilterableDataCard.tsx","../../src/components/WithFilters/FilterableDataGrid.tsx","../../src/components/WithFilters/FilterablePieChart.tsx","../../src/components/WithFilters/FilterableScatterPlot.tsx","../../src/components/WithFilters/WithFilters.tsx"],"sourcesContent":["import { BaseMixin } from 'dc';\nimport { useRef, KeyboardEvent, useMemo, MutableRefObject } from 'react';\nimport { Group } from '../types';\n\ntype UseCategoricalChartAsListboxProps = <T extends BaseMixin<T>>(props: {\n id: string;\n ref: MutableRefObject<HTMLDivElement>;\n type: 'bar' | 'slice';\n ndxGroup?: Group;\n orientation?: 'horizontal' | 'vertical';\n}) => void;\n\n/**\n * Hook to give to a chart the roles, events and attributes of a listbox.\n */\nexport const useCategoricalChartAsListbox: UseCategoricalChartAsListboxProps =\n ({ id, ref, type, ndxGroup, orientation = 'horizontal' }) => {\n const currentIndexRef = useRef(0);\n\n const props = useMemo(() => {\n const numberOfGroups = ndxGroup\n ?.all()\n .filter((datum) => datum.value).length;\n if (ref && numberOfGroups) {\n const getCurrentOption = () =>\n ref.current.querySelector(\n `._${currentIndexRef.current}`\n ) as HTMLElement;\n\n const next = () => {\n getCurrentOption().classList.remove('focused');\n const index =\n currentIndexRef.current === numberOfGroups - 1\n ? 0\n : currentIndexRef.current + 1;\n currentIndexRef.current = index;\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-${currentIndexRef.current}`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const previous = () => {\n getCurrentOption().classList.remove('focused');\n const index =\n currentIndexRef.current === 0\n ? numberOfGroups - 1\n : currentIndexRef.current - 1;\n currentIndexRef.current = index;\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-${currentIndexRef.current}`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const focus = () => {\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-0`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const blur = () => {\n getCurrentOption().classList.remove('focused');\n currentIndexRef.current = 0;\n ref.current.setAttribute('aria-activedescendant', '');\n };\n\n const keydown = (e: Event) => {\n e.stopPropagation();\n\n switch ((e as unknown as KeyboardEvent).code) {\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n e.preventDefault();\n next();\n }\n break;\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n e.preventDefault();\n previous();\n }\n break;\n case 'ArrowDown':\n if (orientation === 'vertical') {\n e.preventDefault();\n next();\n }\n break;\n case 'ArrowUp':\n if (orientation === 'vertical') {\n e.preventDefault();\n previous();\n }\n break;\n case 'Enter':\n case 'Space':\n e.preventDefault();\n getCurrentOption().dispatchEvent(new Event('click'));\n break;\n default:\n break;\n }\n };\n\n return {\n 'aria-activedescendant': '',\n 'aria-multiselectable': 'true',\n 'aria-orientation': orientation,\n role: 'listbox',\n tabIndex: 0,\n onFocus: focus,\n onBlur: blur,\n onMouseDown: (event: MouseEvent) => event.preventDefault(),\n onMouseLeave: blur,\n onKeyDown: keydown,\n };\n }\n }, [\n ref,\n ref.current,\n ndxGroup,\n JSON.parse(JSON.stringify(ndxGroup?.all() || '')),\n ]);\n\n return props;\n };\n","import { GridFilterItem } from '@redsift/table';\nimport { BarDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, useCallback, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '../../hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterableBarChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>(null);\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n const [displayData, setDisplayData] = useState<Array<{ key: string; value: number }>>();\n\n /**\n * Snapshot the group values with our own filter temporarily lifted.\n * This gives us the cross-filtered counts (affected by OTHER dimensions'\n * filters) without the self-exclusion problem.\n */\n const snapshotDisplayData = useCallback((dim: Dimension, grp: Group, activeFilters: string[]) => {\n dim.filterAll();\n const snapshot: Array<{ key: string; value: number }> = JSON.parse(JSON.stringify(grp.all()));\n if (activeFilters.length) {\n dim.filter((d) => activeFilters.includes(d as string));\n }\n setDisplayData(snapshot);\n }, []);\n\n // Snapshot display data whenever the context updates (other dimensions change)\n useEffect(() => {\n if (ndxDimension && ndxGroup) {\n snapshotDisplayData(ndxDimension, ndxGroup, filters);\n }\n }, [ndxDimension, ndxGroup, filters, snapshotDisplayData, toggleUpdateContext]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n useEffect(() => {\n if (!datagridCategoryDimFilter) {\n return;\n }\n\n const updatedFilters = tableFilters.find(\n (filter) =>\n filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator\n )?.value;\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [tableFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'vertical',\n });\n\n const filterProps = {\n barProps: {\n tabIndex: -1,\n },\n barRole: 'option',\n role: 'listbox',\n chartProps: chartProps,\n chartRef: ref,\n data: displayData,\n emptyComponent,\n id,\n isBarSelected: (datum: BarDatum) => {\n return (\n filters.length === 0 ||\n filters.includes(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string))\n );\n },\n onBarClick: (datum: BarDatum) => {\n handleFilter(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string));\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import React, { Children, isValidElement, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { isComponent, useId } from '@redsift/design-system';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { WithFiltersProps } from './types';\nimport { Dimension, Group } from '../../types';\n\nconst arraysEqual = (a: string[], b: string[]): boolean => a.length === b.length && a.every((v, i) => v === b[i]);\n\nconst noop = () => {};\n\n/** Operators that expect a single scalar value rather than an array. */\nconst SCALAR_OPERATORS = new Set(['is', 'isNot']);\n\nexport const FilterableDataCard: React.FC<WithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter: propsCategoryDimFilter,\n field,\n id: propsId,\n isDimensionArray,\n onFilter,\n syncMode = 'two-way',\n } = props;\n\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const datagridCategoryDimFilter = propsCategoryDimFilter;\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const dimension = useMemo(\n () => props.dimension ?? (field ? (d: any) => d[field] : undefined),\n [props.dimension, field]\n );\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n if (!dimension) return;\n const computedDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedGroup = props.group ? props.group(computedDimension) : computedDimension.group();\n setNdxDimension(computedDimension);\n setNdxGroup(computedGroup);\n return function cleanup() {\n computedDimension.filterAll();\n };\n }, [dimension, data, props.group, isDimensionArray]);\n\n const [filters, setFilters] = useState<string[]>([]);\n\n const countsMap: Record<string, number> = {};\n if (ndxGroup) {\n ndxGroup.all().forEach((entry: any) => {\n countsMap[String(entry.key)] = entry.value as number;\n });\n }\n\n const isScalar = datagridCategoryDimFilter && SCALAR_OPERATORS.has(datagridCategoryDimFilter.operator);\n\n const handleFilter = (legend: string) => {\n if (!ndxDimension) return;\n\n let newFilters: string[];\n\n if (isScalar) {\n // Scalar operators (is / isNot): single-select toggle — clicking the\n // already-selected value deselects it; clicking another replaces it.\n newFilters = filters.includes(legend) ? [] : [legend];\n } else {\n // Array operators (isAnyOf, hasAnyOf, …): multi-select toggle.\n if (filters.includes(legend)) {\n newFilters = filters.filter((f) => f !== legend);\n } else {\n newFilters = [...filters, legend];\n }\n }\n\n setFilters(newFilters);\n\n if (newFilters.length) {\n ndxDimension.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n // Scalar operators expect a single value; array operators expect an array.\n const dispatchValue = isScalar ? newFilters[0] ?? undefined : newFilters;\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: dispatchValue,\n },\n });\n }\n\n onFilter?.(newFilters);\n };\n\n // Two-way sync: read tableFilters back to update selection + crossfilter\n const filtersRef = useRef(filters);\n filtersRef.current = filters;\n\n useEffect(() => {\n if (syncMode !== 'two-way' || !datagridCategoryDimFilter) return;\n\n const matchingFilter = tableFilters.find(\n (filter) =>\n filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator\n );\n\n // Normalize: scalar values (from `is`/`isNot`) → single-element array; empty → [].\n const rawValue = matchingFilter?.value;\n const updatedFilters: string[] = rawValue == null ? [] : Array.isArray(rawValue) ? rawValue : [rawValue as string];\n\n if (!arraysEqual(updatedFilters, filtersRef.current) && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension.filter((d) => updatedFilters.includes(d as string));\n } else {\n ndxDimension.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [tableFilters, syncMode, datagridCategoryDimFilter, ndxDimension, toggleUpdateContext]);\n\n const handleListboxChange = (newValues: string[]) => {\n if (!ndxDimension) return;\n\n let newFilters: string[];\n if (isScalar) {\n // Scalar: the Listbox is single-select; take the newly added value or clear.\n const added = newValues.filter((v) => !filters.includes(v));\n newFilters = added.length > 0 ? [added[0]] : [];\n } else {\n newFilters = newValues;\n }\n\n setFilters(newFilters);\n\n if (newFilters.length) {\n ndxDimension.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n const dispatchValue = isScalar ? newFilters[0] ?? undefined : newFilters;\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: dispatchValue,\n },\n });\n }\n\n onFilter?.(newFilters);\n };\n\n const enhanceChildren = (node: React.ReactNode, insideListbox = false): React.ReactNode => {\n return Children.map(node, (child) => {\n if (!isValidElement(child)) return child;\n\n const element = child as React.ReactElement<any>;\n\n // Inject value into DataRow children.\n // DataRow needs onClick to render as an Item (role=\"option\") inside a Listbox.\n // Outside a Listbox: onClick drives filtering directly.\n // Inside a Listbox: pass a no-op so DataRow renders as an Item; the\n // Listbox's onChange callback handles actual filter updates.\n if (isComponent('DataRow')(child)) {\n const legend = element.props.legend as string;\n const count = countsMap[legend] ?? 0;\n const injected: Record<string, unknown> = {\n value: count,\n hasFilterIcon: true,\n onClick: insideListbox ? noop : () => handleFilter(legend),\n };\n if (!insideListbox) {\n injected.isSelected = filters.includes(legend);\n }\n return React.cloneElement(element, injected);\n }\n\n // Set controlled selection on DataCardListbox and use onChange for filter updates\n if (isComponent('DataCardListbox')(child)) {\n return React.cloneElement(\n element,\n {\n values: filters,\n onChange: handleListboxChange,\n },\n enhanceChildren(element.props.children, true)\n );\n }\n\n // Recurse into other elements (e.g. DataCard.Body)\n if (element.props.children) {\n return React.cloneElement(element, {}, enhanceChildren(element.props.children, insideListbox));\n }\n\n return child;\n });\n };\n\n if (isValidElement(children)) {\n return <>{enhanceChildren(children)}</>;\n }\n\n return null;\n};\n","import { GridFilterModel } from '@redsift/table';\nimport React, { useContext, isValidElement, useState, useEffect } from 'react';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { WithFiltersProps } from './types';\n\nexport const FilterableDataGrid: React.FC<WithFiltersProps> = (props) => {\n const { children, onFilter } = props;\n\n const { state, data, dispatch, dataGridApiRef } =\n useContext(DashboardContext);\n const { tableFilters } = state;\n\n const [filterModel, setFilterModel] = useState<GridFilterModel>();\n useEffect(() => {\n setFilterModel({\n ...filterModel,\n items: tableFilters,\n });\n }, [tableFilters]);\n\n const updateChartFilters = (filterModel: GridFilterModel) => {\n dispatch?.({\n type: DashboardReducerActionType.FilterTableBatch,\n filter: filterModel.items,\n });\n };\n\n if (isValidElement(children)) {\n const filterProps = {\n apiRef: children.props.apiRef ?? dataGridApiRef,\n rows: data || [],\n filterModel,\n onFilterModelChange: (filterModel: GridFilterModel) => {\n if (onFilter) {\n onFilter(filterModel);\n }\n updateChartFilters(filterModel);\n },\n };\n\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { GridFilterItem } from '@redsift/table';\nimport { ArcDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, useCallback, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '../../hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterablePieChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>(null);\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n const [displayData, setDisplayData] = useState<Array<{ key: string; value: number }>>();\n\n /**\n * Snapshot the group values with our own filter temporarily lifted.\n * This gives us the cross-filtered counts (affected by OTHER dimensions'\n * filters) without the self-exclusion problem.\n */\n const snapshotDisplayData = useCallback((dim: Dimension, grp: Group, activeFilters: string[]) => {\n // Temporarily remove our own filter to see cross-filtered values\n dim.filterAll();\n const snapshot: Array<{ key: string; value: number }> = JSON.parse(JSON.stringify(grp.all()));\n // Re-apply our filter\n if (activeFilters.length) {\n dim.filter((d) => activeFilters.includes(d as string));\n }\n setDisplayData(snapshot);\n }, []);\n\n // Snapshot display data whenever the context updates (other dimensions change)\n useEffect(() => {\n if (ndxDimension && ndxGroup) {\n snapshotDisplayData(ndxDimension, ndxGroup, filters);\n }\n }, [ndxDimension, ndxGroup, filters, snapshotDisplayData, toggleUpdateContext]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n const updatedFilters = datagridCategoryDimFilter\n ? tableFilters.find(\n (filter) =>\n filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator\n )?.value\n : null;\n useEffect(() => {\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [updatedFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'horizontal',\n });\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n sliceProps: {\n tabIndex: -1,\n },\n sliceRole: 'option',\n role: 'listbox',\n chartProps,\n legendProps,\n chartRef: ref,\n data: displayData,\n emptyComponent,\n id,\n isSliceSelected: (datum: ArcDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n onSliceClick: (datum: ArcDatum) => {\n handleFilter(datum.data.key);\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { DotDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ScaleLinear as d3ScaleLinear } from 'd3';\nimport { ChartsWithFiltersProps } from './types';\nimport { useId } from '@redsift/design-system';\n\ntype BrushFilter = {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n};\n\nconst filter = (legendFilters?: string[], brushFilters?: BrushFilter) => (d: [number, number, string]) => {\n if (legendFilters && legendFilters.length && brushFilters) {\n return (\n d[0] >= brushFilters.minX &&\n d[0] <= brushFilters.maxX &&\n d[1] >= brushFilters.minY &&\n d[1] <= brushFilters.maxY &&\n legendFilters.includes(d[2])\n );\n } else if (legendFilters && legendFilters.length) {\n return legendFilters.includes(d[2]);\n } else if (brushFilters) {\n return (\n d[0] >= brushFilters.minX && d[0] <= brushFilters.maxX && d[1] >= brushFilters.minY && d[1] <= brushFilters.maxY\n );\n } else {\n return true;\n }\n};\n\nconst isFiltered = (legendFilters?: string[], brushFilters?: BrushFilter) => (datum: DotDatum) => {\n if (legendFilters && legendFilters.length && brushFilters) {\n return (\n (datum.data.key[0] as number) >= brushFilters.minX &&\n (datum.data.key[0] as number) <= brushFilters.maxX &&\n (datum.data.key[1] as number) >= brushFilters.minY &&\n (datum.data.key[1] as number) <= brushFilters.maxY &&\n legendFilters.includes(datum.data.key[2] as string)\n );\n } else if (legendFilters && legendFilters.length) {\n return legendFilters.includes(datum.data.key[2] as string);\n } else if (brushFilters) {\n return (\n (datum.data.key[0] as number) >= brushFilters.minX &&\n (datum.data.key[0] as number) <= brushFilters.maxX &&\n (datum.data.key[1] as number) >= brushFilters.minY &&\n (datum.data.key[1] as number) <= brushFilters.maxY\n );\n } else {\n return true;\n }\n};\n\nexport const FilterableScatterPlot: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCoordinatesCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [brushFilters, setBrushFilters] = useState<BrushFilter>();\n const [legendFilters, setLegendFilters] = useState<string[]>([]);\n\n const handleBrushFilter = (newFilters: BrushFilter) => {\n setBrushFilters(newFilters);\n ndxDimension!.filter((d) => filter(legendFilters, newFilters)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.AppendFilterTableBatch,\n filter: [\n {\n id: `${id}-x`,\n field: datagridCoordinatesCategoryDimFilter[0].field,\n operator: datagridCoordinatesCategoryDimFilter[0].operator,\n value: [newFilters.minX, newFilters.maxX],\n },\n {\n id: `${id}-y`,\n field: datagridCoordinatesCategoryDimFilter[1].field,\n operator: datagridCoordinatesCategoryDimFilter[1].operator,\n value: [newFilters.minY, newFilters.maxY],\n },\n ],\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const handleLegendFilter = (category: string) => {\n let newFilters: string[];\n if (legendFilters.includes(category)) {\n newFilters = legendFilters.filter((f) => f !== category);\n } else {\n newFilters = [...legendFilters, category];\n }\n\n setLegendFilters(newFilters);\n ndxDimension!.filter((d) => filter(newFilters, brushFilters)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter?.length === 3) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: `${id}-category`,\n field: datagridCoordinatesCategoryDimFilter[2].field,\n operator: datagridCoordinatesCategoryDimFilter[2].operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = (brush = true, legend = true) => {\n if (brush) {\n setBrushFilters(undefined);\n }\n if (legend) {\n setLegendFilters([]);\n }\n ndxDimension!.filter((d) =>\n filter(legend ? [] : legendFilters, brush ? undefined : brushFilters)(d as unknown as [number, number, string])\n );\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter) {\n if (brush) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-x`,\n field: datagridCoordinatesCategoryDimFilter[0].field,\n operator: datagridCoordinatesCategoryDimFilter[0].operator,\n },\n });\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-y`,\n field: datagridCoordinatesCategoryDimFilter[1].field,\n operator: datagridCoordinatesCategoryDimFilter[1].operator,\n },\n });\n }\n if (legend && datagridCoordinatesCategoryDimFilter.length === 3) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-category`,\n field: datagridCoordinatesCategoryDimFilter[2].field,\n operator: datagridCoordinatesCategoryDimFilter[2].operator,\n },\n });\n }\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n useEffect(() => {\n if (!datagridCoordinatesCategoryDimFilter || !ndxDimension) return;\n\n const xFilter = tableFilters.find(\n (f) =>\n f.field === datagridCoordinatesCategoryDimFilter[0].field &&\n f.operator === datagridCoordinatesCategoryDimFilter[0].operator\n );\n const yFilter = tableFilters.find(\n (f) =>\n f.field === datagridCoordinatesCategoryDimFilter[1].field &&\n f.operator === datagridCoordinatesCategoryDimFilter[1].operator\n );\n\n if (xFilter?.value && yFilter?.value) {\n const updatedBrush: BrushFilter = {\n minX: Number(xFilter.value[0]),\n maxX: Number(xFilter.value[1]),\n minY: Number(yFilter.value[0]),\n maxY: Number(yFilter.value[1]),\n };\n if (JSON.stringify(updatedBrush) !== JSON.stringify(brushFilters)) {\n setBrushFilters(updatedBrush);\n ndxDimension.filter((d) => filter(legendFilters, updatedBrush)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n }\n } else if (brushFilters && !xFilter && !yFilter) {\n // External filters were cleared — reset the brush\n setBrushFilters(undefined);\n ndxDimension.filter((d) => filter(legendFilters, undefined)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n }\n }, [tableFilters, datagridCoordinatesCategoryDimFilter, ndxDimension]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleLegendFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return legendFilters.length === 0 || legendFilters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n isBrushable: true,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n dotRole: 'option',\n role: 'listbox',\n emptyComponent,\n id,\n legendProps,\n onBrush: (\n selection: [[number, number], [number, number]],\n scaleX: d3ScaleLinear<number, number>,\n scaleY: d3ScaleLinear<number, number>\n ) => {\n if (selection) {\n setBrushFilters({\n minX: scaleX.invert(selection[0][0]),\n minY: scaleY.invert(selection[1][1]),\n maxX: scaleX.invert(selection[1][0]),\n maxY: scaleY.invert(selection[0][1]),\n });\n }\n },\n onBrushEnd: (\n selection: [[number, number], [number, number]],\n scaleX?: d3ScaleLinear<number, number>,\n scaleY?: d3ScaleLinear<number, number>\n ) => {\n if (selection && scaleX && scaleY) {\n handleBrushFilter({\n minX: scaleX.invert(selection[0][0]),\n minY: scaleY.invert(selection[1][1]),\n maxX: scaleX.invert(selection[1][0]),\n maxY: scaleY.invert(selection[0][1]),\n });\n } else {\n resetFilters(true, false);\n }\n },\n onReset: isResetable ? resetFilters : undefined,\n isDotSelected: (datum: DotDatum) => isFiltered(legendFilters, brushFilters)(datum),\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import React from 'react';\nimport { isComponent } from '@redsift/design-system';\nimport { FilterableBarChart } from './FilterableBarChart';\nimport { FilterableDataCard } from './FilterableDataCard';\nimport { FilterableDataGrid } from './FilterableDataGrid';\nimport { FilterablePieChart } from './FilterablePieChart';\nimport { FilterableScatterPlot } from './FilterableScatterPlot';\nimport { WithFiltersProps } from './types';\n\nexport const WithFilters: React.FC<WithFiltersProps> = (props) => {\n if (isComponent('DataGrid')(props.children)) {\n return <FilterableDataGrid {...props} />;\n }\n\n if (isComponent('DataCard')(props.children)) {\n return <FilterableDataCard {...props} />;\n }\n\n const { dimension } = props;\n\n if (!dimension) {\n return null;\n }\n\n if (isComponent('BarChart')(props.children)) {\n return <FilterableBarChart {...props} dimension={dimension} />;\n } else if (isComponent('PieChart')(props.children)) {\n return <FilterablePieChart {...props} dimension={dimension} />;\n } else if (isComponent('ScatterPlot')(props.children)) {\n return <FilterableScatterPlot {...props} dimension={dimension} />;\n }\n\n return React.isValidElement(props.children) ? props.children : null;\n};\n"],"names":["useCategoricalChartAsListbox","_ref","id","ref","type","ndxGroup","orientation","currentIndexRef","useRef","props","useMemo","numberOfGroups","all","filter","datum","value","length","getCurrentOption","current","querySelector","next","classList","remove","index","setAttribute","add","previous","focus","blur","keydown","e","stopPropagation","code","preventDefault","dispatchEvent","Event","role","tabIndex","onFocus","onBlur","onMouseDown","event","onMouseLeave","onKeyDown","JSON","parse","stringify","FilterableBarChart","children","datagridCategoryDimFilter","dimension","group","propsId","isDimensionArray","isResetable","localeText","onFilter","_id","useId","emptyChartTitle","emptyChartSubtitle","emptyChartResetLabel","_objectSpread","data","dispatch","toggleUpdateContext","state","tableFilters","useContext","DashboardContext","ndxDimension","setNdxDimension","useState","setNdxGroup","useEffect","computedNdxDimension","CrossfilterRegistry","get","computedNdxGroup","cleanup","filterAll","filters","setFilters","displayData","setDisplayData","snapshotDisplayData","useCallback","dim","grp","activeFilters","snapshot","d","includes","handleFilter","category","newFilters","f","DashboardReducerActionType","FilterTable","field","operator","resetFilters","ResetFilter","_tableFilters$find","updatedFilters","find","emptyComponent","React","createElement","ChartEmptyState","title","subtitle","resetLabel","onReset","chartProps","filterProps","barProps","barRole","chartRef","isBarSelected","Array","isArray","key","onBarClick","undefined","isValidElement","cloneElement","arraysEqual","a","b","every","v","i","noop","SCALAR_OPERATORS","Set","FilterableDataCard","propsCategoryDimFilter","syncMode","_props$dimension","computedDimension","computedGroup","countsMap","forEach","entry","String","isScalar","has","legend","_newFilters$","dispatchValue","filtersRef","matchingFilter","rawValue","handleListboxChange","newValues","added","_newFilters$2","enhanceChildren","node","insideListbox","arguments","Children","map","child","element","isComponent","_countsMap$legend","count","injected","hasFilterIcon","onClick","isSelected","values","onChange","Fragment","FilterableDataGrid","dataGridApiRef","filterModel","setFilterModel","items","updateChartFilters","FilterTableBatch","_children$props$apiRe","apiRef","rows","onFilterModelChange","FilterablePieChart","legendProps","onLegendItemClick","isLegendItemSelected","legendItemRole","sliceProps","sliceRole","isSliceSelected","onSliceClick","legendFilters","brushFilters","minX","maxX","minY","maxY","isFiltered","FilterableScatterPlot","datagridCoordinatesCategoryDimFilter","setBrushFilters","setLegendFilters","handleBrushFilter","AppendFilterTableBatch","handleLegendFilter","brush","xFilter","yFilter","updatedBrush","Number","isBrushable","dotRole","onBrush","selection","scaleX","scaleY","invert","onBrushEnd","isDotSelected","WithFilters","_extends"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WithFilters2.js","sources":["../../src/hooks/useCategoricalChartAsListbox.ts","../../src/components/WithFilters/FilterableBarChart.tsx","../../src/components/WithFilters/FilterableDataCard.tsx","../../src/components/WithFilters/FilterableDataGrid.tsx","../../src/components/WithFilters/FilterablePieChart.tsx","../../src/components/WithFilters/FilterableScatterPlot.tsx","../../src/components/WithFilters/WithFilters.tsx"],"sourcesContent":["import { BaseMixin } from 'dc';\nimport { useRef, KeyboardEvent, useMemo, MutableRefObject } from 'react';\nimport { Group } from '../types';\n\ntype UseCategoricalChartAsListboxProps = <T extends BaseMixin<T>>(props: {\n id: string;\n ref: MutableRefObject<HTMLDivElement>;\n type: 'bar' | 'slice';\n ndxGroup?: Group;\n orientation?: 'horizontal' | 'vertical';\n}) => void;\n\n/**\n * Hook to give to a chart the roles, events and attributes of a listbox.\n */\nexport const useCategoricalChartAsListbox: UseCategoricalChartAsListboxProps =\n ({ id, ref, type, ndxGroup, orientation = 'horizontal' }) => {\n const currentIndexRef = useRef(0);\n\n const props = useMemo(() => {\n const numberOfGroups = ndxGroup\n ?.all()\n .filter((datum) => datum.value).length;\n if (ref && numberOfGroups) {\n const getCurrentOption = () =>\n ref.current.querySelector(\n `._${currentIndexRef.current}`\n ) as HTMLElement;\n\n const next = () => {\n getCurrentOption().classList.remove('focused');\n const index =\n currentIndexRef.current === numberOfGroups - 1\n ? 0\n : currentIndexRef.current + 1;\n currentIndexRef.current = index;\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-${currentIndexRef.current}`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const previous = () => {\n getCurrentOption().classList.remove('focused');\n const index =\n currentIndexRef.current === 0\n ? numberOfGroups - 1\n : currentIndexRef.current - 1;\n currentIndexRef.current = index;\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-${currentIndexRef.current}`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const focus = () => {\n ref.current.setAttribute(\n 'aria-activedescendant',\n `id${id}__${type}-0`\n );\n getCurrentOption().classList.add('focused');\n };\n\n const blur = () => {\n getCurrentOption().classList.remove('focused');\n currentIndexRef.current = 0;\n ref.current.setAttribute('aria-activedescendant', '');\n };\n\n const keydown = (e: Event) => {\n e.stopPropagation();\n\n switch ((e as unknown as KeyboardEvent).code) {\n case 'ArrowRight':\n if (orientation === 'horizontal') {\n e.preventDefault();\n next();\n }\n break;\n case 'ArrowLeft':\n if (orientation === 'horizontal') {\n e.preventDefault();\n previous();\n }\n break;\n case 'ArrowDown':\n if (orientation === 'vertical') {\n e.preventDefault();\n next();\n }\n break;\n case 'ArrowUp':\n if (orientation === 'vertical') {\n e.preventDefault();\n previous();\n }\n break;\n case 'Enter':\n case 'Space':\n e.preventDefault();\n getCurrentOption().dispatchEvent(new Event('click'));\n break;\n default:\n break;\n }\n };\n\n return {\n 'aria-activedescendant': '',\n 'aria-multiselectable': 'true',\n 'aria-orientation': orientation,\n role: 'listbox',\n tabIndex: 0,\n onFocus: focus,\n onBlur: blur,\n onMouseDown: (event: MouseEvent) => event.preventDefault(),\n onMouseLeave: blur,\n onKeyDown: keydown,\n };\n }\n }, [\n ref,\n ref.current,\n ndxGroup,\n JSON.parse(JSON.stringify(ndxGroup?.all() || '')),\n ]);\n\n return props;\n };\n","import { GridFilterItem } from '@redsift/table';\nimport { BarDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, useCallback, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '../../hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterableBarChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>(null);\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n const [displayData, setDisplayData] = useState<Array<{ key: string; value: number }>>();\n\n /**\n * Snapshot the group values with our own filter temporarily lifted.\n * This gives us the cross-filtered counts (affected by OTHER dimensions'\n * filters) without the self-exclusion problem.\n */\n const snapshotDisplayData = useCallback((dim: Dimension, grp: Group, activeFilters: string[]) => {\n dim.filterAll();\n const snapshot: Array<{ key: string; value: number }> = JSON.parse(JSON.stringify(grp.all()));\n if (activeFilters.length) {\n dim.filter((d) => activeFilters.includes(d as string));\n }\n setDisplayData(snapshot);\n }, []);\n\n // Snapshot display data whenever the context updates (other dimensions change)\n useEffect(() => {\n if (ndxDimension && ndxGroup) {\n snapshotDisplayData(ndxDimension, ndxGroup, filters);\n }\n }, [ndxDimension, ndxGroup, filters, snapshotDisplayData, toggleUpdateContext]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n useEffect(() => {\n if (!datagridCategoryDimFilter) {\n return;\n }\n\n const updatedFilters = tableFilters.find(\n (filter) =>\n filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator\n )?.value;\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [tableFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'vertical',\n });\n\n const filterProps = {\n barProps: {\n tabIndex: -1,\n },\n barRole: 'option',\n role: 'listbox',\n chartProps: chartProps,\n chartRef: ref,\n data: displayData,\n emptyComponent,\n id,\n isBarSelected: (datum: BarDatum) => {\n return (\n filters.length === 0 ||\n filters.includes(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string))\n );\n },\n onBarClick: (datum: BarDatum) => {\n handleFilter(Array.isArray(datum.data.key) ? (datum.data.key[1] as string) : (datum.data.key as string));\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import React, { Children, isValidElement, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { isComponent, useId } from '@redsift/design-system';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { WithFiltersProps } from './types';\nimport { Dimension, Group } from '../../types';\n\nconst arraysEqual = (a: string[], b: string[]): boolean => a.length === b.length && a.every((v, i) => v === b[i]);\n\nconst noop = () => {};\n\n/** Operators that expect a single scalar value rather than an array. */\nconst SCALAR_OPERATORS = new Set(['is', 'isNot']);\n\nexport const FilterableDataCard: React.FC<WithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter: propsCategoryDimFilter,\n field,\n id: propsId,\n isDimensionArray,\n onFilter,\n syncMode = 'two-way',\n } = props;\n\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const datagridCategoryDimFilter = propsCategoryDimFilter;\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const dimension = useMemo(\n () => props.dimension ?? (field ? (d: any) => d[field] : undefined),\n [props.dimension, field]\n );\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n if (!dimension) return;\n const computedDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedGroup = props.group ? props.group(computedDimension) : computedDimension.group();\n setNdxDimension(computedDimension);\n setNdxGroup(computedGroup);\n return function cleanup() {\n computedDimension.filterAll();\n };\n }, [dimension, data, props.group, isDimensionArray]);\n\n const [filters, setFilters] = useState<string[]>([]);\n\n const countsMap: Record<string, number> = {};\n if (ndxGroup) {\n ndxGroup.all().forEach((entry: any) => {\n countsMap[String(entry.key)] = entry.value as number;\n });\n }\n\n const isScalar = datagridCategoryDimFilter && SCALAR_OPERATORS.has(datagridCategoryDimFilter.operator);\n\n const handleFilter = (legend: string) => {\n if (!ndxDimension) return;\n\n let newFilters: string[];\n\n if (isScalar) {\n // Scalar operators (is / isNot): single-select toggle — clicking the\n // already-selected value deselects it; clicking another replaces it.\n newFilters = filters.includes(legend) ? [] : [legend];\n } else {\n // Array operators (isAnyOf, hasAnyOf, …): multi-select toggle.\n if (filters.includes(legend)) {\n newFilters = filters.filter((f) => f !== legend);\n } else {\n newFilters = [...filters, legend];\n }\n }\n\n setFilters(newFilters);\n\n if (newFilters.length) {\n ndxDimension.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n // Scalar operators expect a single value; array operators expect an array.\n const dispatchValue = isScalar ? newFilters[0] ?? undefined : newFilters;\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: dispatchValue,\n },\n });\n }\n\n onFilter?.(newFilters);\n };\n\n // Two-way sync: read tableFilters back to update selection + crossfilter\n const filtersRef = useRef(filters);\n filtersRef.current = filters;\n\n useEffect(() => {\n if (syncMode !== 'two-way' || !datagridCategoryDimFilter) return;\n\n const matchingFilter = tableFilters.find(\n (filter) =>\n filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator\n );\n\n // Normalize: scalar values (from `is`/`isNot`) → single-element array; empty → [].\n const rawValue = matchingFilter?.value;\n const updatedFilters: string[] = rawValue == null ? [] : Array.isArray(rawValue) ? rawValue : [rawValue as string];\n\n if (!arraysEqual(updatedFilters, filtersRef.current) && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension.filter((d) => updatedFilters.includes(d as string));\n } else {\n ndxDimension.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [tableFilters, syncMode, datagridCategoryDimFilter, ndxDimension, toggleUpdateContext]);\n\n const handleListboxChange = (newValues: string[]) => {\n if (!ndxDimension) return;\n\n let newFilters: string[];\n if (isScalar) {\n // Scalar: the Listbox is single-select; take the newly added value or clear.\n const added = newValues.filter((v) => !filters.includes(v));\n newFilters = added.length > 0 ? [added[0]] : [];\n } else {\n newFilters = newValues;\n }\n\n setFilters(newFilters);\n\n if (newFilters.length) {\n ndxDimension.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n const dispatchValue = isScalar ? newFilters[0] ?? undefined : newFilters;\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: dispatchValue,\n },\n });\n }\n\n onFilter?.(newFilters);\n };\n\n const enhanceChildren = (node: React.ReactNode, insideListbox = false): React.ReactNode => {\n return Children.map(node, (child) => {\n if (!isValidElement(child)) return child;\n\n const element = child as React.ReactElement<any>;\n\n // Inject value into DataRow children.\n // DataRow needs onClick to render as an Item (role=\"option\") inside a Listbox.\n // Outside a Listbox: onClick drives filtering directly.\n // Inside a Listbox: pass a no-op so DataRow renders as an Item; the\n // Listbox's onChange callback handles actual filter updates.\n if (isComponent('DataRow')(child)) {\n const legend = element.props.legend as string;\n const count = countsMap[legend] ?? 0;\n const injected: Record<string, unknown> = {\n value: count,\n hasFilterIcon: true,\n onClick: insideListbox ? noop : () => handleFilter(legend),\n };\n if (!insideListbox) {\n injected.isSelected = filters.includes(legend);\n }\n return React.cloneElement(element, injected);\n }\n\n // Set controlled selection on DataCardListbox and use onChange for filter updates\n if (isComponent('DataCardListbox')(child)) {\n return React.cloneElement(\n element,\n {\n values: filters,\n onChange: handleListboxChange,\n },\n enhanceChildren(element.props.children, true)\n );\n }\n\n // Recurse into other elements (e.g. DataCard.Body)\n if (element.props.children) {\n return React.cloneElement(element, {}, enhanceChildren(element.props.children, insideListbox));\n }\n\n return child;\n });\n };\n\n if (isValidElement(children)) {\n return <>{enhanceChildren(children)}</>;\n }\n\n return null;\n};\n","import { GridFilterModel } from '@redsift/table';\nimport React, { useContext, isValidElement, useMemo } from 'react';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { WithFiltersProps } from './types';\n\nexport const FilterableDataGrid: React.FC<WithFiltersProps> = (props) => {\n const { children, onFilter } = props;\n\n const { state, data, dispatch, dataGridApiRef } = useContext(DashboardContext);\n const { tableFilters } = state;\n\n const filterModel = useMemo<GridFilterModel>(() => ({ items: tableFilters }), [tableFilters]);\n\n const updateChartFilters = (filterModel: GridFilterModel) => {\n dispatch?.({\n type: DashboardReducerActionType.FilterTableBatch,\n filter: filterModel.items,\n });\n };\n\n if (isValidElement(children)) {\n const filterProps = {\n apiRef: children.props.apiRef ?? dataGridApiRef,\n rows: data || [],\n filterModel,\n onFilterModelChange: (filterModel: GridFilterModel) => {\n if (onFilter) {\n onFilter(filterModel);\n }\n updateChartFilters(filterModel);\n },\n };\n\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { GridFilterItem } from '@redsift/table';\nimport { ArcDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement, useRef, useCallback, MutableRefObject } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ChartsWithFiltersProps } from './types';\nimport { useCategoricalChartAsListbox } from '../../hooks/useCategoricalChartAsListbox';\nimport { useId } from '@redsift/design-system';\n\nexport const FilterablePieChart: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n const ref = useRef<HTMLDivElement>(null);\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [filters, setFilters] = useState<string[]>([]);\n const [displayData, setDisplayData] = useState<Array<{ key: string; value: number }>>();\n\n /**\n * Snapshot the group values with our own filter temporarily lifted.\n * This gives us the cross-filtered counts (affected by OTHER dimensions'\n * filters) without the self-exclusion problem.\n */\n const snapshotDisplayData = useCallback((dim: Dimension, grp: Group, activeFilters: string[]) => {\n // Temporarily remove our own filter to see cross-filtered values\n dim.filterAll();\n const snapshot: Array<{ key: string; value: number }> = JSON.parse(JSON.stringify(grp.all()));\n // Re-apply our filter\n if (activeFilters.length) {\n dim.filter((d) => activeFilters.includes(d as string));\n }\n setDisplayData(snapshot);\n }, []);\n\n // Snapshot display data whenever the context updates (other dimensions change)\n useEffect(() => {\n if (ndxDimension && ndxGroup) {\n snapshotDisplayData(ndxDimension, ndxGroup, filters);\n }\n }, [ndxDimension, ndxGroup, filters, snapshotDisplayData, toggleUpdateContext]);\n\n const handleFilter = (category: string) => {\n let newFilters: string[];\n if (filters.includes(category)) {\n newFilters = filters.filter((f) => f !== category);\n } else {\n newFilters = [...filters, category];\n }\n\n setFilters(newFilters);\n if (newFilters.length) {\n ndxDimension!.filter((d) => newFilters.includes(d as string));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = () => {\n setFilters([]);\n ndxDimension!.filterAll();\n toggleUpdateContext?.();\n\n if (datagridCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: id,\n field: datagridCategoryDimFilter.field,\n operator: datagridCategoryDimFilter.operator,\n } as GridFilterItem,\n });\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n const updatedFilters = datagridCategoryDimFilter\n ? tableFilters.find(\n (filter) =>\n filter.field === datagridCategoryDimFilter.field && filter.operator === datagridCategoryDimFilter.operator\n )?.value\n : null;\n useEffect(() => {\n if (updatedFilters && updatedFilters !== filters && ndxDimension) {\n setFilters(updatedFilters);\n if (updatedFilters.length) {\n ndxDimension!.filter((d) => updatedFilters.includes(d));\n } else {\n ndxDimension!.filterAll();\n }\n toggleUpdateContext?.();\n }\n }, [updatedFilters]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const chartProps = useCategoricalChartAsListbox({\n id,\n ref: ref as MutableRefObject<HTMLDivElement>,\n type: 'bar',\n ndxGroup,\n orientation: 'horizontal',\n });\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n sliceProps: {\n tabIndex: -1,\n },\n sliceRole: 'option',\n role: 'listbox',\n chartProps,\n legendProps,\n chartRef: ref,\n data: displayData,\n emptyComponent,\n id,\n isSliceSelected: (datum: ArcDatum) => {\n return filters.length === 0 || filters.includes(datum.data.key);\n },\n onSliceClick: (datum: ArcDatum) => {\n handleFilter(datum.data.key);\n },\n onReset: isResetable ? resetFilters : undefined,\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import { DotDatum, LegendItemDatum } from '@redsift/charts';\nimport { Dimension, Group } from '../../types';\nimport React, { useEffect, useContext, useState, isValidElement } from 'react';\nimport { CrossfilterRegistry } from '../CrossfilterRegistry';\nimport { DashboardContext, DashboardReducerActionType } from '../Dashboard';\nimport { ChartEmptyState } from '../ChartEmptyState';\nimport { ScaleLinear as d3ScaleLinear } from 'd3';\nimport { ChartsWithFiltersProps } from './types';\nimport { useId } from '@redsift/design-system';\n\ntype BrushFilter = {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n};\n\nconst filter = (legendFilters?: string[], brushFilters?: BrushFilter) => (d: [number, number, string]) => {\n if (legendFilters && legendFilters.length && brushFilters) {\n return (\n d[0] >= brushFilters.minX &&\n d[0] <= brushFilters.maxX &&\n d[1] >= brushFilters.minY &&\n d[1] <= brushFilters.maxY &&\n legendFilters.includes(d[2])\n );\n } else if (legendFilters && legendFilters.length) {\n return legendFilters.includes(d[2]);\n } else if (brushFilters) {\n return (\n d[0] >= brushFilters.minX && d[0] <= brushFilters.maxX && d[1] >= brushFilters.minY && d[1] <= brushFilters.maxY\n );\n } else {\n return true;\n }\n};\n\nconst isFiltered = (legendFilters?: string[], brushFilters?: BrushFilter) => (datum: DotDatum) => {\n if (legendFilters && legendFilters.length && brushFilters) {\n return (\n (datum.data.key[0] as number) >= brushFilters.minX &&\n (datum.data.key[0] as number) <= brushFilters.maxX &&\n (datum.data.key[1] as number) >= brushFilters.minY &&\n (datum.data.key[1] as number) <= brushFilters.maxY &&\n legendFilters.includes(datum.data.key[2] as string)\n );\n } else if (legendFilters && legendFilters.length) {\n return legendFilters.includes(datum.data.key[2] as string);\n } else if (brushFilters) {\n return (\n (datum.data.key[0] as number) >= brushFilters.minX &&\n (datum.data.key[0] as number) <= brushFilters.maxX &&\n (datum.data.key[1] as number) >= brushFilters.minY &&\n (datum.data.key[1] as number) <= brushFilters.maxY\n );\n } else {\n return true;\n }\n};\n\nexport const FilterableScatterPlot: React.FC<ChartsWithFiltersProps> = (props) => {\n const {\n children,\n datagridCoordinatesCategoryDimFilter,\n dimension,\n group,\n id: propsId,\n isDimensionArray,\n isResetable,\n localeText,\n onFilter,\n } = props;\n const [_id] = useId();\n const id = propsId ?? _id;\n\n const { emptyChartTitle, emptyChartSubtitle, emptyChartResetLabel } = {\n ...localeText,\n };\n\n const {\n data,\n dispatch,\n toggleUpdateContext,\n state: { tableFilters },\n } = useContext(DashboardContext);\n\n const [ndxDimension, setNdxDimension] = useState<Dimension>();\n const [ndxGroup, setNdxGroup] = useState<Group>();\n\n useEffect(() => {\n const computedNdxDimension = CrossfilterRegistry.get(data).dimension(dimension, isDimensionArray);\n const computedNdxGroup = group ? group(computedNdxDimension) : computedNdxDimension.group();\n setNdxDimension(computedNdxDimension);\n setNdxGroup(computedNdxGroup);\n return function cleanup() {\n computedNdxDimension.filterAll();\n };\n }, [dimension, data, group]);\n\n const [brushFilters, setBrushFilters] = useState<BrushFilter>();\n const [legendFilters, setLegendFilters] = useState<string[]>([]);\n\n const handleBrushFilter = (newFilters: BrushFilter) => {\n setBrushFilters(newFilters);\n ndxDimension!.filter((d) => filter(legendFilters, newFilters)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter) {\n dispatch?.({\n type: DashboardReducerActionType.AppendFilterTableBatch,\n filter: [\n {\n id: `${id}-x`,\n field: datagridCoordinatesCategoryDimFilter[0].field,\n operator: datagridCoordinatesCategoryDimFilter[0].operator,\n value: [newFilters.minX, newFilters.maxX],\n },\n {\n id: `${id}-y`,\n field: datagridCoordinatesCategoryDimFilter[1].field,\n operator: datagridCoordinatesCategoryDimFilter[1].operator,\n value: [newFilters.minY, newFilters.maxY],\n },\n ],\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const handleLegendFilter = (category: string) => {\n let newFilters: string[];\n if (legendFilters.includes(category)) {\n newFilters = legendFilters.filter((f) => f !== category);\n } else {\n newFilters = [...legendFilters, category];\n }\n\n setLegendFilters(newFilters);\n ndxDimension!.filter((d) => filter(newFilters, brushFilters)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter?.length === 3) {\n dispatch?.({\n type: DashboardReducerActionType.FilterTable,\n filter: {\n id: `${id}-category`,\n field: datagridCoordinatesCategoryDimFilter[2].field,\n operator: datagridCoordinatesCategoryDimFilter[2].operator,\n value: newFilters,\n },\n });\n }\n\n if (onFilter) {\n onFilter(newFilters);\n }\n };\n\n const resetFilters = (brush = true, legend = true) => {\n if (brush) {\n setBrushFilters(undefined);\n }\n if (legend) {\n setLegendFilters([]);\n }\n ndxDimension!.filter((d) =>\n filter(legend ? [] : legendFilters, brush ? undefined : brushFilters)(d as unknown as [number, number, string])\n );\n toggleUpdateContext?.();\n\n if (datagridCoordinatesCategoryDimFilter) {\n if (brush) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-x`,\n field: datagridCoordinatesCategoryDimFilter[0].field,\n operator: datagridCoordinatesCategoryDimFilter[0].operator,\n },\n });\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-y`,\n field: datagridCoordinatesCategoryDimFilter[1].field,\n operator: datagridCoordinatesCategoryDimFilter[1].operator,\n },\n });\n }\n if (legend && datagridCoordinatesCategoryDimFilter.length === 3) {\n dispatch?.({\n type: DashboardReducerActionType.ResetFilter,\n filter: {\n id: `${id}-category`,\n field: datagridCoordinatesCategoryDimFilter[2].field,\n operator: datagridCoordinatesCategoryDimFilter[2].operator,\n },\n });\n }\n }\n\n if (onFilter) {\n onFilter();\n }\n };\n\n useEffect(() => {\n if (!datagridCoordinatesCategoryDimFilter || !ndxDimension) return;\n\n const xFilter = tableFilters.find(\n (f) =>\n f.field === datagridCoordinatesCategoryDimFilter[0].field &&\n f.operator === datagridCoordinatesCategoryDimFilter[0].operator\n );\n const yFilter = tableFilters.find(\n (f) =>\n f.field === datagridCoordinatesCategoryDimFilter[1].field &&\n f.operator === datagridCoordinatesCategoryDimFilter[1].operator\n );\n\n if (xFilter?.value && yFilter?.value) {\n const updatedBrush: BrushFilter = {\n minX: Number(xFilter.value[0]),\n maxX: Number(xFilter.value[1]),\n minY: Number(yFilter.value[0]),\n maxY: Number(yFilter.value[1]),\n };\n if (JSON.stringify(updatedBrush) !== JSON.stringify(brushFilters)) {\n setBrushFilters(updatedBrush);\n ndxDimension.filter((d) => filter(legendFilters, updatedBrush)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n }\n } else if (brushFilters && !xFilter && !yFilter) {\n // External filters were cleared — reset the brush\n setBrushFilters(undefined);\n ndxDimension.filter((d) => filter(legendFilters, undefined)(d as unknown as [number, number, string]));\n toggleUpdateContext?.();\n }\n }, [tableFilters, datagridCoordinatesCategoryDimFilter, ndxDimension]);\n\n const emptyComponent = (\n <ChartEmptyState\n title={emptyChartTitle!}\n subtitle={emptyChartSubtitle}\n resetLabel={emptyChartResetLabel}\n onReset={resetFilters}\n />\n );\n\n const legendProps = {\n onLegendItemClick: (datum: LegendItemDatum) => {\n handleLegendFilter(datum.data.key);\n },\n isLegendItemSelected: (datum: LegendItemDatum) => {\n return legendFilters.length === 0 || legendFilters.includes(datum.data.key);\n },\n legendItemRole: 'option',\n role: 'group',\n };\n\n const filterProps = {\n isBrushable: true,\n data: ndxGroup ? JSON.parse(JSON.stringify(ndxGroup.all())) : undefined,\n dotRole: 'option',\n role: 'listbox',\n emptyComponent,\n id,\n legendProps,\n onBrush: (\n selection: [[number, number], [number, number]],\n scaleX: d3ScaleLinear<number, number>,\n scaleY: d3ScaleLinear<number, number>\n ) => {\n if (selection) {\n setBrushFilters({\n minX: scaleX.invert(selection[0][0]),\n minY: scaleY.invert(selection[1][1]),\n maxX: scaleX.invert(selection[1][0]),\n maxY: scaleY.invert(selection[0][1]),\n });\n }\n },\n onBrushEnd: (\n selection: [[number, number], [number, number]],\n scaleX?: d3ScaleLinear<number, number>,\n scaleY?: d3ScaleLinear<number, number>\n ) => {\n if (selection && scaleX && scaleY) {\n handleBrushFilter({\n minX: scaleX.invert(selection[0][0]),\n minY: scaleY.invert(selection[1][1]),\n maxX: scaleX.invert(selection[1][0]),\n maxY: scaleY.invert(selection[0][1]),\n });\n } else {\n resetFilters(true, false);\n }\n },\n onReset: isResetable ? resetFilters : undefined,\n isDotSelected: (datum: DotDatum) => isFiltered(legendFilters, brushFilters)(datum),\n };\n\n if (isValidElement(children)) {\n return React.cloneElement(children, { ...filterProps });\n }\n\n return null;\n};\n","import React from 'react';\nimport { isComponent } from '@redsift/design-system';\nimport { FilterableBarChart } from './FilterableBarChart';\nimport { FilterableDataCard } from './FilterableDataCard';\nimport { FilterableDataGrid } from './FilterableDataGrid';\nimport { FilterablePieChart } from './FilterablePieChart';\nimport { FilterableScatterPlot } from './FilterableScatterPlot';\nimport { WithFiltersProps } from './types';\n\nexport const WithFilters: React.FC<WithFiltersProps> = (props) => {\n if (isComponent('DataGrid')(props.children)) {\n return <FilterableDataGrid {...props} />;\n }\n\n if (isComponent('DataCard')(props.children)) {\n return <FilterableDataCard {...props} />;\n }\n\n const { dimension } = props;\n\n if (!dimension) {\n return null;\n }\n\n if (isComponent('BarChart')(props.children)) {\n return <FilterableBarChart {...props} dimension={dimension} />;\n } else if (isComponent('PieChart')(props.children)) {\n return <FilterablePieChart {...props} dimension={dimension} />;\n } else if (isComponent('ScatterPlot')(props.children)) {\n return <FilterableScatterPlot {...props} dimension={dimension} />;\n }\n\n return React.isValidElement(props.children) ? props.children : null;\n};\n"],"names":["useCategoricalChartAsListbox","_ref","id","ref","type","ndxGroup","orientation","currentIndexRef","useRef","props","useMemo","numberOfGroups","all","filter","datum","value","length","getCurrentOption","current","querySelector","next","classList","remove","index","setAttribute","add","previous","focus","blur","keydown","e","stopPropagation","code","preventDefault","dispatchEvent","Event","role","tabIndex","onFocus","onBlur","onMouseDown","event","onMouseLeave","onKeyDown","JSON","parse","stringify","FilterableBarChart","children","datagridCategoryDimFilter","dimension","group","propsId","isDimensionArray","isResetable","localeText","onFilter","_id","useId","emptyChartTitle","emptyChartSubtitle","emptyChartResetLabel","_objectSpread","data","dispatch","toggleUpdateContext","state","tableFilters","useContext","DashboardContext","ndxDimension","setNdxDimension","useState","setNdxGroup","useEffect","computedNdxDimension","CrossfilterRegistry","get","computedNdxGroup","cleanup","filterAll","filters","setFilters","displayData","setDisplayData","snapshotDisplayData","useCallback","dim","grp","activeFilters","snapshot","d","includes","handleFilter","category","newFilters","f","DashboardReducerActionType","FilterTable","field","operator","resetFilters","ResetFilter","_tableFilters$find","updatedFilters","find","emptyComponent","React","createElement","ChartEmptyState","title","subtitle","resetLabel","onReset","chartProps","filterProps","barProps","barRole","chartRef","isBarSelected","Array","isArray","key","onBarClick","undefined","isValidElement","cloneElement","arraysEqual","a","b","every","v","i","noop","SCALAR_OPERATORS","Set","FilterableDataCard","propsCategoryDimFilter","syncMode","_props$dimension","computedDimension","computedGroup","countsMap","forEach","entry","String","isScalar","has","legend","_newFilters$","dispatchValue","filtersRef","matchingFilter","rawValue","handleListboxChange","newValues","added","_newFilters$2","enhanceChildren","node","insideListbox","arguments","Children","map","child","element","isComponent","_countsMap$legend","count","injected","hasFilterIcon","onClick","isSelected","values","onChange","Fragment","FilterableDataGrid","dataGridApiRef","filterModel","items","updateChartFilters","FilterTableBatch","_children$props$apiRe","apiRef","rows","onFilterModelChange","FilterablePieChart","legendProps","onLegendItemClick","isLegendItemSelected","legendItemRole","sliceProps","sliceRole","isSliceSelected","onSliceClick","legendFilters","brushFilters","minX","maxX","minY","maxY","isFiltered","FilterableScatterPlot","datagridCoordinatesCategoryDimFilter","setBrushFilters","setLegendFilters","handleBrushFilter","AppendFilterTableBatch","handleLegendFilter","brush","xFilter","yFilter","updatedBrush","Number","isBrushable","dotRole","onBrush","selection","scaleX","scaleY","invert","onBrushEnd","isDotSelected","WithFilters","_extends"],"mappings":";;;;;;;;AAYA;AACA;AACA;AACO,MAAMA,4BAA+D,GAC1EC,IAAA,IAA6D;EAAA,IAA5D;IAAEC,EAAE;IAAEC,GAAG;IAAEC,IAAI;IAAEC,QAAQ;AAAEC,IAAAA,WAAW,GAAG,YAAA;AAAa,GAAC,GAAAL,IAAA,CAAA;AACtD,EAAA,MAAMM,eAAe,GAAGC,MAAM,CAAC,CAAC,CAAC,CAAA;AAEjC,EAAA,MAAMC,KAAK,GAAGC,OAAO,CAAC,MAAM;IAC1B,MAAMC,cAAc,GAAGN,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAC3BO,GAAG,EAAE,CACNC,MAAM,CAAEC,KAAK,IAAKA,KAAK,CAACC,KAAK,CAAC,CAACC,MAAM,CAAA;IACxC,IAAIb,GAAG,IAAIQ,cAAc,EAAE;AACzB,MAAA,MAAMM,gBAAgB,GAAGA,MACvBd,GAAG,CAACe,OAAO,CAACC,aAAa,CACtB,CAAIZ,EAAAA,EAAAA,eAAe,CAACW,OAAQ,EAC/B,CAAgB,CAAA;MAElB,MAAME,IAAI,GAAGA,MAAM;QACjBH,gBAAgB,EAAE,CAACI,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC9C,QAAA,MAAMC,KAAK,GACThB,eAAe,CAACW,OAAO,KAAKP,cAAc,GAAG,CAAC,GAC1C,CAAC,GACDJ,eAAe,CAACW,OAAO,GAAG,CAAC,CAAA;QACjCX,eAAe,CAACW,OAAO,GAAGK,KAAK,CAAA;AAC/BpB,QAAAA,GAAG,CAACe,OAAO,CAACM,YAAY,CACtB,uBAAuB,EACtB,CAAA,EAAA,EAAItB,EAAG,CAAA,EAAA,EAAIE,IAAK,CAAGG,CAAAA,EAAAA,eAAe,CAACW,OAAQ,EAC9C,CAAC,CAAA;QACDD,gBAAgB,EAAE,CAACI,SAAS,CAACI,GAAG,CAAC,SAAS,CAAC,CAAA;OAC5C,CAAA;MAED,MAAMC,QAAQ,GAAGA,MAAM;QACrBT,gBAAgB,EAAE,CAACI,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC9C,QAAA,MAAMC,KAAK,GACThB,eAAe,CAACW,OAAO,KAAK,CAAC,GACzBP,cAAc,GAAG,CAAC,GAClBJ,eAAe,CAACW,OAAO,GAAG,CAAC,CAAA;QACjCX,eAAe,CAACW,OAAO,GAAGK,KAAK,CAAA;AAC/BpB,QAAAA,GAAG,CAACe,OAAO,CAACM,YAAY,CACtB,uBAAuB,EACtB,CAAA,EAAA,EAAItB,EAAG,CAAA,EAAA,EAAIE,IAAK,CAAGG,CAAAA,EAAAA,eAAe,CAACW,OAAQ,EAC9C,CAAC,CAAA;QACDD,gBAAgB,EAAE,CAACI,SAAS,CAACI,GAAG,CAAC,SAAS,CAAC,CAAA;OAC5C,CAAA;MAED,MAAME,KAAK,GAAGA,MAAM;AAClBxB,QAAAA,GAAG,CAACe,OAAO,CAACM,YAAY,CACtB,uBAAuB,EACtB,CAAA,EAAA,EAAItB,EAAG,CAAA,EAAA,EAAIE,IAAK,CAAA,EAAA,CACnB,CAAC,CAAA;QACDa,gBAAgB,EAAE,CAACI,SAAS,CAACI,GAAG,CAAC,SAAS,CAAC,CAAA;OAC5C,CAAA;MAED,MAAMG,IAAI,GAAGA,MAAM;QACjBX,gBAAgB,EAAE,CAACI,SAAS,CAACC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC9Cf,eAAe,CAACW,OAAO,GAAG,CAAC,CAAA;QAC3Bf,GAAG,CAACe,OAAO,CAACM,YAAY,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAA;OACtD,CAAA;MAED,MAAMK,OAAO,GAAIC,CAAQ,IAAK;QAC5BA,CAAC,CAACC,eAAe,EAAE,CAAA;QAEnB,QAASD,CAAC,CAA8BE,IAAI;AAC1C,UAAA,KAAK,YAAY;YACf,IAAI1B,WAAW,KAAK,YAAY,EAAE;cAChCwB,CAAC,CAACG,cAAc,EAAE,CAAA;AAClBb,cAAAA,IAAI,EAAE,CAAA;AACR,aAAA;AACA,YAAA,MAAA;AACF,UAAA,KAAK,WAAW;YACd,IAAId,WAAW,KAAK,YAAY,EAAE;cAChCwB,CAAC,CAACG,cAAc,EAAE,CAAA;AAClBP,cAAAA,QAAQ,EAAE,CAAA;AACZ,aAAA;AACA,YAAA,MAAA;AACF,UAAA,KAAK,WAAW;YACd,IAAIpB,WAAW,KAAK,UAAU,EAAE;cAC9BwB,CAAC,CAACG,cAAc,EAAE,CAAA;AAClBb,cAAAA,IAAI,EAAE,CAAA;AACR,aAAA;AACA,YAAA,MAAA;AACF,UAAA,KAAK,SAAS;YACZ,IAAId,WAAW,KAAK,UAAU,EAAE;cAC9BwB,CAAC,CAACG,cAAc,EAAE,CAAA;AAClBP,cAAAA,QAAQ,EAAE,CAAA;AACZ,aAAA;AACA,YAAA,MAAA;AACF,UAAA,KAAK,OAAO,CAAA;AACZ,UAAA,KAAK,OAAO;YACVI,CAAC,CAACG,cAAc,EAAE,CAAA;YAClBhB,gBAAgB,EAAE,CAACiB,aAAa,CAAC,IAAIC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;AACpD,YAAA,MAAA;AAGJ,SAAA;OACD,CAAA;MAED,OAAO;AACL,QAAA,uBAAuB,EAAE,EAAE;AAC3B,QAAA,sBAAsB,EAAE,MAAM;AAC9B,QAAA,kBAAkB,EAAE7B,WAAW;AAC/B8B,QAAAA,IAAI,EAAE,SAAS;AACfC,QAAAA,QAAQ,EAAE,CAAC;AACXC,QAAAA,OAAO,EAAEX,KAAK;AACdY,QAAAA,MAAM,EAAEX,IAAI;AACZY,QAAAA,WAAW,EAAGC,KAAiB,IAAKA,KAAK,CAACR,cAAc,EAAE;AAC1DS,QAAAA,YAAY,EAAEd,IAAI;AAClBe,QAAAA,SAAS,EAAEd,OAAAA;OACZ,CAAA;AACH,KAAA;AACF,GAAC,EAAE,CACD1B,GAAG,EACHA,GAAG,CAACe,OAAO,EACXb,QAAQ,EACRuC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAAC,CAAAzC,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,uBAARA,QAAQ,CAAEO,GAAG,EAAE,KAAI,EAAE,CAAC,CAAC,CAClD,CAAC,CAAA;AAEF,EAAA,OAAOH,KAAK,CAAA;AACd,CAAC;;ACvHI,MAAMsC,kBAAoD,GAAItC,KAAK,IAAK;EAC7E,MAAM;IACJuC,QAAQ;IACRC,yBAAyB;IACzBC,SAAS;IACTC,KAAK;AACLjD,IAAAA,EAAE,EAAEkD,OAAO;IACXC,gBAAgB;IAChBC,WAAW;IACXC,UAAU;AACVC,IAAAA,QAAAA;AACF,GAAC,GAAG/C,KAAK,CAAA;AACT,EAAA,MAAM,CAACgD,GAAG,CAAC,GAAGC,KAAK,EAAE,CAAA;EACrB,MAAMxD,EAAE,GAAGkD,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,GAAAA,OAAO,GAAIK,GAAG,CAAA;AACzB,EAAA,MAAMtD,GAAG,GAAGK,MAAM,CAAiB,IAAI,CAAC,CAAA;EAExC,MAAM;IAAEmD,eAAe;IAAEC,kBAAkB;AAAEC,IAAAA,oBAAAA;AAAqB,GAAC,GAAAC,cAAA,CAC9DP,EAAAA,EAAAA,UAAU,CACd,CAAA;EAED,MAAM;IACJQ,IAAI;IACJC,QAAQ;IACRC,mBAAmB;AACnBC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,YAAAA;AAAa,KAAA;AACxB,GAAC,GAAGC,UAAU,CAACC,gBAAgB,CAAC,CAAA;EAEhC,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGC,QAAQ,EAAa,CAAA;EAC7D,MAAM,CAACnE,QAAQ,EAAEoE,WAAW,CAAC,GAAGD,QAAQ,EAAS,CAAA;AAEjDE,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,MAAMC,oBAAoB,GAAGC,mBAAmB,CAACC,GAAG,CAACd,IAAI,CAAC,CAACb,SAAS,CAACA,SAAS,EAAEG,gBAAgB,CAAC,CAAA;AACjG,IAAA,MAAMyB,gBAAgB,GAAG3B,KAAK,GAAGA,KAAK,CAACwB,oBAAoB,CAAC,GAAGA,oBAAoB,CAACxB,KAAK,EAAE,CAAA;IAC3FoB,eAAe,CAACI,oBAAoB,CAAC,CAAA;IACrCF,WAAW,CAACK,gBAAgB,CAAC,CAAA;IAC7B,OAAO,SAASC,OAAOA,GAAG;MACxBJ,oBAAoB,CAACK,SAAS,EAAE,CAAA;KACjC,CAAA;GACF,EAAE,CAAC9B,SAAS,EAAEa,IAAI,EAAEZ,KAAK,CAAC,CAAC,CAAA;EAE5B,MAAM,CAAC8B,OAAO,EAAEC,UAAU,CAAC,GAAGV,QAAQ,CAAW,EAAE,CAAC,CAAA;EACpD,MAAM,CAACW,WAAW,EAAEC,cAAc,CAAC,GAAGZ,QAAQ,EAAyC,CAAA;;AAEvF;AACF;AACA;AACA;AACA;EACE,MAAMa,mBAAmB,GAAGC,WAAW,CAAC,CAACC,GAAc,EAAEC,GAAU,EAAEC,aAAuB,KAAK;IAC/FF,GAAG,CAACP,SAAS,EAAE,CAAA;AACf,IAAA,MAAMU,QAA+C,GAAG9C,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAAC0C,GAAG,CAAC5E,GAAG,EAAE,CAAC,CAAC,CAAA;IAC7F,IAAI6E,aAAa,CAACzE,MAAM,EAAE;MACxBuE,GAAG,CAAC1E,MAAM,CAAE8E,CAAC,IAAKF,aAAa,CAACG,QAAQ,CAACD,CAAW,CAAC,CAAC,CAAA;AACxD,KAAA;IACAP,cAAc,CAACM,QAAQ,CAAC,CAAA;GACzB,EAAE,EAAE,CAAC,CAAA;;AAEN;AACAhB,EAAAA,SAAS,CAAC,MAAM;IACd,IAAIJ,YAAY,IAAIjE,QAAQ,EAAE;AAC5BgF,MAAAA,mBAAmB,CAACf,YAAY,EAAEjE,QAAQ,EAAE4E,OAAO,CAAC,CAAA;AACtD,KAAA;AACF,GAAC,EAAE,CAACX,YAAY,EAAEjE,QAAQ,EAAE4E,OAAO,EAAEI,mBAAmB,EAAEpB,mBAAmB,CAAC,CAAC,CAAA;EAE/E,MAAM4B,YAAY,GAAIC,QAAgB,IAAK;AACzC,IAAA,IAAIC,UAAoB,CAAA;AACxB,IAAA,IAAId,OAAO,CAACW,QAAQ,CAACE,QAAQ,CAAC,EAAE;MAC9BC,UAAU,GAAGd,OAAO,CAACpE,MAAM,CAAEmF,CAAC,IAAKA,CAAC,KAAKF,QAAQ,CAAC,CAAA;AACpD,KAAC,MAAM;AACLC,MAAAA,UAAU,GAAG,CAAC,GAAGd,OAAO,EAAEa,QAAQ,CAAC,CAAA;AACrC,KAAA;IAEAZ,UAAU,CAACa,UAAU,CAAC,CAAA;IACtB,IAAIA,UAAU,CAAC/E,MAAM,EAAE;MACrBsD,YAAY,CAAEzD,MAAM,CAAE8E,CAAC,IAAKI,UAAU,CAACH,QAAQ,CAACD,CAAW,CAAC,CAAC,CAAA;AAC/D,KAAC,MAAM;MACLrB,YAAY,CAAEU,SAAS,EAAE,CAAA;AAC3B,KAAA;AACAf,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AAEvB,IAAA,IAAIhB,yBAAyB,EAAE;AAC7Be,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;QACT5D,IAAI,EAAE6F,0BAA0B,CAACC,WAAW;AAC5CrF,QAAAA,MAAM,EAAE;AACNX,UAAAA,EAAE,EAAEA,EAAE;UACNiG,KAAK,EAAElD,yBAAyB,CAACkD,KAAK;UACtCC,QAAQ,EAAEnD,yBAAyB,CAACmD,QAAQ;AAC5CrF,UAAAA,KAAK,EAAEgF,UAAAA;AACT,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAIvC,QAAQ,EAAE;MACZA,QAAQ,CAACuC,UAAU,CAAC,CAAA;AACtB,KAAA;GACD,CAAA;EAED,MAAMM,YAAY,GAAGA,MAAM;IACzBnB,UAAU,CAAC,EAAE,CAAC,CAAA;IACdZ,YAAY,CAAEU,SAAS,EAAE,CAAA;AACzBf,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AAEvB,IAAA,IAAIhB,yBAAyB,EAAE;AAC7Be,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;QACT5D,IAAI,EAAE6F,0BAA0B,CAACK,WAAW;AAC5CzF,QAAAA,MAAM,EAAE;AACNX,UAAAA,EAAE,EAAEA,EAAE;UACNiG,KAAK,EAAElD,yBAAyB,CAACkD,KAAK;UACtCC,QAAQ,EAAEnD,yBAAyB,CAACmD,QAAAA;AACtC,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAI5C,QAAQ,EAAE;AACZA,MAAAA,QAAQ,EAAE,CAAA;AACZ,KAAA;GACD,CAAA;AAEDkB,EAAAA,SAAS,CAAC,MAAM;AAAA,IAAA,IAAA6B,kBAAA,CAAA;IACd,IAAI,CAACtD,yBAAyB,EAAE;AAC9B,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMuD,cAAc,GAAA,CAAAD,kBAAA,GAAGpC,YAAY,CAACsC,IAAI,CACrC5F,MAAM,IACLA,MAAM,CAACsF,KAAK,KAAKlD,yBAAyB,CAACkD,KAAK,IAAItF,MAAM,CAACuF,QAAQ,KAAKnD,yBAAyB,CAACmD,QACtG,CAAC,MAAAG,IAAAA,IAAAA,kBAAA,KAHsBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAGpBxF,KAAK,CAAA;AACR,IAAA,IAAIyF,cAAc,IAAIA,cAAc,KAAKvB,OAAO,IAAIX,YAAY,EAAE;MAChEY,UAAU,CAACsB,cAAc,CAAC,CAAA;MAC1B,IAAIA,cAAc,CAACxF,MAAM,EAAE;QACzBsD,YAAY,CAAEzD,MAAM,CAAE8E,CAAC,IAAKa,cAAc,CAACZ,QAAQ,CAACD,CAAC,CAAC,CAAC,CAAA;AACzD,OAAC,MAAM;QACLrB,YAAY,CAAEU,SAAS,EAAE,CAAA;AAC3B,OAAA;AACAf,MAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AACzB,KAAA;AACF,GAAC,EAAE,CAACE,YAAY,CAAC,CAAC,CAAA;AAElB,EAAA,MAAMuC,cAAc,gBAClBC,KAAA,CAAAC,aAAA,CAACC,eAAe,EAAA;AACdC,IAAAA,KAAK,EAAEnD,eAAiB;AACxBoD,IAAAA,QAAQ,EAAEnD,kBAAmB;AAC7BoD,IAAAA,UAAU,EAAEnD,oBAAqB;AACjCoD,IAAAA,OAAO,EAAEZ,YAAAA;AAAa,GACvB,CACF,CAAA;EAED,MAAMa,UAAU,GAAGlH,4BAA4B,CAAC;IAC9CE,EAAE;AACFC,IAAAA,GAAG,EAAEA,GAAuC;AAC5CC,IAAAA,IAAI,EAAE,KAAK;IACXC,QAAQ;AACRC,IAAAA,WAAW,EAAE,UAAA;AACf,GAAC,CAAC,CAAA;AAEF,EAAA,MAAM6G,WAAW,GAAG;AAClBC,IAAAA,QAAQ,EAAE;AACR/E,MAAAA,QAAQ,EAAE,CAAC,CAAA;KACZ;AACDgF,IAAAA,OAAO,EAAE,QAAQ;AACjBjF,IAAAA,IAAI,EAAE,SAAS;AACf8E,IAAAA,UAAU,EAAEA,UAAU;AACtBI,IAAAA,QAAQ,EAAEnH,GAAG;AACb4D,IAAAA,IAAI,EAAEoB,WAAW;IACjBuB,cAAc;IACdxG,EAAE;IACFqH,aAAa,EAAGzG,KAAe,IAAK;AAClC,MAAA,OACEmE,OAAO,CAACjE,MAAM,KAAK,CAAC,IACpBiE,OAAO,CAACW,QAAQ,CAAC4B,KAAK,CAACC,OAAO,CAAC3G,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,GAAI5G,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,GAAe5G,KAAK,CAACiD,IAAI,CAAC2D,GAAc,CAAC,CAAA;KAE/G;IACDC,UAAU,EAAG7G,KAAe,IAAK;MAC/B+E,YAAY,CAAC2B,KAAK,CAACC,OAAO,CAAC3G,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,GAAI5G,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,GAAe5G,KAAK,CAACiD,IAAI,CAAC2D,GAAc,CAAC,CAAA;KACzG;AACDT,IAAAA,OAAO,EAAE3D,WAAW,GAAG+C,YAAY,GAAGuB,SAAAA;GACvC,CAAA;AAED,EAAA,kBAAIC,cAAc,CAAC7E,QAAQ,CAAC,EAAE;IAC5B,oBAAO2D,KAAK,CAACmB,YAAY,CAAC9E,QAAQ,EAAAc,cAAA,CAAA,EAAA,EAAOqD,WAAW,CAAE,CAAC,CAAA;AACzD,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC;;AC3LD,MAAMY,WAAW,GAAGA,CAACC,CAAW,EAAEC,CAAW,KAAcD,CAAC,CAAChH,MAAM,KAAKiH,CAAC,CAACjH,MAAM,IAAIgH,CAAC,CAACE,KAAK,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,KAAKF,CAAC,CAACG,CAAC,CAAC,CAAC,CAAA;AAEjH,MAAMC,IAAI,GAAGA,MAAM,EAAE,CAAA;;AAErB;AACA,MAAMC,gBAAgB,GAAG,IAAIC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;AAE1C,MAAMC,kBAA8C,GAAI/H,KAAK,IAAK;EACvE,MAAM;IACJuC,QAAQ;AACRC,IAAAA,yBAAyB,EAAEwF,sBAAsB;IACjDtC,KAAK;AACLjG,IAAAA,EAAE,EAAEkD,OAAO;IACXC,gBAAgB;IAChBG,QAAQ;AACRkF,IAAAA,QAAQ,GAAG,SAAA;AACb,GAAC,GAAGjI,KAAK,CAAA;AAET,EAAA,MAAM,CAACgD,GAAG,CAAC,GAAGC,KAAK,EAAE,CAAA;EACrB,MAAMxD,EAAE,GAAGkD,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,GAAAA,OAAO,GAAIK,GAAG,CAAA;EAEzB,MAAMR,yBAAyB,GAAGwF,sBAAsB,CAAA;EAExD,MAAM;IACJ1E,IAAI;IACJC,QAAQ;IACRC,mBAAmB;AACnBC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,YAAAA;AAAa,KAAA;AACxB,GAAC,GAAGC,UAAU,CAACC,gBAAgB,CAAC,CAAA;EAEhC,MAAMnB,SAAS,GAAGxC,OAAO,CACvB,MAAA;AAAA,IAAA,IAAAiI,gBAAA,CAAA;AAAA,IAAA,OAAA,CAAAA,gBAAA,GAAMlI,KAAK,CAACyC,SAAS,MAAA,IAAA,IAAAyF,gBAAA,KAAAA,KAAAA,CAAAA,GAAAA,gBAAA,GAAKxC,KAAK,GAAIR,CAAM,IAAKA,CAAC,CAACQ,KAAK,CAAC,GAAGyB,SAAS,CAAA;GAAC,EACnE,CAACnH,KAAK,CAACyC,SAAS,EAAEiD,KAAK,CACzB,CAAC,CAAA;EAED,MAAM,CAAC7B,YAAY,EAAEC,eAAe,CAAC,GAAGC,QAAQ,EAAa,CAAA;EAC7D,MAAM,CAACnE,QAAQ,EAAEoE,WAAW,CAAC,GAAGD,QAAQ,EAAS,CAAA;AAEjDE,EAAAA,SAAS,CAAC,MAAM;IACd,IAAI,CAACxB,SAAS,EAAE,OAAA;AAChB,IAAA,MAAM0F,iBAAiB,GAAGhE,mBAAmB,CAACC,GAAG,CAACd,IAAI,CAAC,CAACb,SAAS,CAACA,SAAS,EAAEG,gBAAgB,CAAC,CAAA;AAC9F,IAAA,MAAMwF,aAAa,GAAGpI,KAAK,CAAC0C,KAAK,GAAG1C,KAAK,CAAC0C,KAAK,CAACyF,iBAAiB,CAAC,GAAGA,iBAAiB,CAACzF,KAAK,EAAE,CAAA;IAC9FoB,eAAe,CAACqE,iBAAiB,CAAC,CAAA;IAClCnE,WAAW,CAACoE,aAAa,CAAC,CAAA;IAC1B,OAAO,SAAS9D,OAAOA,GAAG;MACxB6D,iBAAiB,CAAC5D,SAAS,EAAE,CAAA;KAC9B,CAAA;AACH,GAAC,EAAE,CAAC9B,SAAS,EAAEa,IAAI,EAAEtD,KAAK,CAAC0C,KAAK,EAAEE,gBAAgB,CAAC,CAAC,CAAA;EAEpD,MAAM,CAAC4B,OAAO,EAAEC,UAAU,CAAC,GAAGV,QAAQ,CAAW,EAAE,CAAC,CAAA;EAEpD,MAAMsE,SAAiC,GAAG,EAAE,CAAA;AAC5C,EAAA,IAAIzI,QAAQ,EAAE;IACZA,QAAQ,CAACO,GAAG,EAAE,CAACmI,OAAO,CAAEC,KAAU,IAAK;MACrCF,SAAS,CAACG,MAAM,CAACD,KAAK,CAACtB,GAAG,CAAC,CAAC,GAAGsB,KAAK,CAACjI,KAAe,CAAA;AACtD,KAAC,CAAC,CAAA;AACJ,GAAA;EAEA,MAAMmI,QAAQ,GAAGjG,yBAAyB,IAAIqF,gBAAgB,CAACa,GAAG,CAAClG,yBAAyB,CAACmD,QAAQ,CAAC,CAAA;EAEtG,MAAMP,YAAY,GAAIuD,MAAc,IAAK;IACvC,IAAI,CAAC9E,YAAY,EAAE,OAAA;AAEnB,IAAA,IAAIyB,UAAoB,CAAA;AAExB,IAAA,IAAImD,QAAQ,EAAE;AACZ;AACA;AACAnD,MAAAA,UAAU,GAAGd,OAAO,CAACW,QAAQ,CAACwD,MAAM,CAAC,GAAG,EAAE,GAAG,CAACA,MAAM,CAAC,CAAA;AACvD,KAAC,MAAM;AACL;AACA,MAAA,IAAInE,OAAO,CAACW,QAAQ,CAACwD,MAAM,CAAC,EAAE;QAC5BrD,UAAU,GAAGd,OAAO,CAACpE,MAAM,CAAEmF,CAAC,IAAKA,CAAC,KAAKoD,MAAM,CAAC,CAAA;AAClD,OAAC,MAAM;AACLrD,QAAAA,UAAU,GAAG,CAAC,GAAGd,OAAO,EAAEmE,MAAM,CAAC,CAAA;AACnC,OAAA;AACF,KAAA;IAEAlE,UAAU,CAACa,UAAU,CAAC,CAAA;IAEtB,IAAIA,UAAU,CAAC/E,MAAM,EAAE;MACrBsD,YAAY,CAACzD,MAAM,CAAE8E,CAAC,IAAKI,UAAU,CAACH,QAAQ,CAACD,CAAW,CAAC,CAAC,CAAA;AAC9D,KAAC,MAAM;MACLrB,YAAY,CAACU,SAAS,EAAE,CAAA;AAC1B,KAAA;AACAf,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AAEvB,IAAA,IAAIhB,yBAAyB,EAAE;AAAA,MAAA,IAAAoG,YAAA,CAAA;AAC7B;AACA,MAAA,MAAMC,aAAa,GAAGJ,QAAQ,GAAAG,CAAAA,YAAA,GAAGtD,UAAU,CAAC,CAAC,CAAC,cAAAsD,YAAA,KAAA,KAAA,CAAA,GAAAA,YAAA,GAAIzB,SAAS,GAAG7B,UAAU,CAAA;AACxE/B,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;QACT5D,IAAI,EAAE6F,0BAA0B,CAACC,WAAW;AAC5CrF,QAAAA,MAAM,EAAE;UACNX,EAAE;UACFiG,KAAK,EAAElD,yBAAyB,CAACkD,KAAK;UACtCC,QAAQ,EAAEnD,yBAAyB,CAACmD,QAAQ;AAC5CrF,UAAAA,KAAK,EAAEuI,aAAAA;AACT,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA9F,IAAAA,QAAQ,aAARA,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAARA,QAAQ,CAAGuC,UAAU,CAAC,CAAA;GACvB,CAAA;;AAED;AACA,EAAA,MAAMwD,UAAU,GAAG/I,MAAM,CAACyE,OAAO,CAAC,CAAA;EAClCsE,UAAU,CAACrI,OAAO,GAAG+D,OAAO,CAAA;AAE5BP,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAIgE,QAAQ,KAAK,SAAS,IAAI,CAACzF,yBAAyB,EAAE,OAAA;IAE1D,MAAMuG,cAAc,GAAGrF,YAAY,CAACsC,IAAI,CACrC5F,MAAM,IACLA,MAAM,CAACsF,KAAK,KAAKlD,yBAAyB,CAACkD,KAAK,IAAItF,MAAM,CAACuF,QAAQ,KAAKnD,yBAAyB,CAACmD,QACtG,CAAC,CAAA;;AAED;IACA,MAAMqD,QAAQ,GAAGD,cAAc,KAAA,IAAA,IAAdA,cAAc,KAAdA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAc,CAAEzI,KAAK,CAAA;AACtC,IAAA,MAAMyF,cAAwB,GAAGiD,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAGjC,KAAK,CAACC,OAAO,CAACgC,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAW,CAAA;IAElH,IAAI,CAAC1B,WAAW,CAACvB,cAAc,EAAE+C,UAAU,CAACrI,OAAO,CAAC,IAAIoD,YAAY,EAAE;MACpEY,UAAU,CAACsB,cAAc,CAAC,CAAA;MAC1B,IAAIA,cAAc,CAACxF,MAAM,EAAE;QACzBsD,YAAY,CAACzD,MAAM,CAAE8E,CAAC,IAAKa,cAAc,CAACZ,QAAQ,CAACD,CAAW,CAAC,CAAC,CAAA;AAClE,OAAC,MAAM;QACLrB,YAAY,CAACU,SAAS,EAAE,CAAA;AAC1B,OAAA;AACAf,MAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AACzB,KAAA;AACF,GAAC,EAAE,CAACE,YAAY,EAAEuE,QAAQ,EAAEzF,yBAAyB,EAAEqB,YAAY,EAAEL,mBAAmB,CAAC,CAAC,CAAA;EAE1F,MAAMyF,mBAAmB,GAAIC,SAAmB,IAAK;IACnD,IAAI,CAACrF,YAAY,EAAE,OAAA;AAEnB,IAAA,IAAIyB,UAAoB,CAAA;AACxB,IAAA,IAAImD,QAAQ,EAAE;AACZ;AACA,MAAA,MAAMU,KAAK,GAAGD,SAAS,CAAC9I,MAAM,CAAEsH,CAAC,IAAK,CAAClD,OAAO,CAACW,QAAQ,CAACuC,CAAC,CAAC,CAAC,CAAA;AAC3DpC,MAAAA,UAAU,GAAG6D,KAAK,CAAC5I,MAAM,GAAG,CAAC,GAAG,CAAC4I,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;AACjD,KAAC,MAAM;AACL7D,MAAAA,UAAU,GAAG4D,SAAS,CAAA;AACxB,KAAA;IAEAzE,UAAU,CAACa,UAAU,CAAC,CAAA;IAEtB,IAAIA,UAAU,CAAC/E,MAAM,EAAE;MACrBsD,YAAY,CAACzD,MAAM,CAAE8E,CAAC,IAAKI,UAAU,CAACH,QAAQ,CAACD,CAAW,CAAC,CAAC,CAAA;AAC9D,KAAC,MAAM;MACLrB,YAAY,CAACU,SAAS,EAAE,CAAA;AAC1B,KAAA;AACAf,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AAEvB,IAAA,IAAIhB,yBAAyB,EAAE;AAAA,MAAA,IAAA4G,aAAA,CAAA;AAC7B,MAAA,MAAMP,aAAa,GAAGJ,QAAQ,GAAAW,CAAAA,aAAA,GAAG9D,UAAU,CAAC,CAAC,CAAC,cAAA8D,aAAA,KAAA,KAAA,CAAA,GAAAA,aAAA,GAAIjC,SAAS,GAAG7B,UAAU,CAAA;AACxE/B,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;QACT5D,IAAI,EAAE6F,0BAA0B,CAACC,WAAW;AAC5CrF,QAAAA,MAAM,EAAE;UACNX,EAAE;UACFiG,KAAK,EAAElD,yBAAyB,CAACkD,KAAK;UACtCC,QAAQ,EAAEnD,yBAAyB,CAACmD,QAAQ;AAC5CrF,UAAAA,KAAK,EAAEuI,aAAAA;AACT,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA9F,IAAAA,QAAQ,aAARA,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAARA,QAAQ,CAAGuC,UAAU,CAAC,CAAA;GACvB,CAAA;AAED,EAAA,MAAM+D,eAAe,GAAG,UAACC,IAAqB,EAA6C;AAAA,IAAA,IAA3CC,aAAa,GAAAC,SAAA,CAAAjJ,MAAA,GAAA,CAAA,IAAAiJ,SAAA,CAAA,CAAA,CAAA,KAAArC,SAAA,GAAAqC,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK,CAAA;AACnE,IAAA,OAAOC,QAAQ,CAACC,GAAG,CAACJ,IAAI,EAAGK,KAAK,IAAK;AACnC,MAAA,IAAI,eAACvC,cAAc,CAACuC,KAAK,CAAC,EAAE,OAAOA,KAAK,CAAA;MAExC,MAAMC,OAAO,GAAGD,KAAgC,CAAA;;AAEhD;AACA;AACA;AACA;AACA;AACA,MAAA,IAAIE,WAAW,CAAC,SAAS,CAAC,CAACF,KAAK,CAAC,EAAE;AAAA,QAAA,IAAAG,iBAAA,CAAA;AACjC,QAAA,MAAMnB,MAAM,GAAGiB,OAAO,CAAC5J,KAAK,CAAC2I,MAAgB,CAAA;AAC7C,QAAA,MAAMoB,KAAK,GAAA,CAAAD,iBAAA,GAAGzB,SAAS,CAACM,MAAM,CAAC,MAAAmB,IAAAA,IAAAA,iBAAA,KAAAA,KAAAA,CAAAA,GAAAA,iBAAA,GAAI,CAAC,CAAA;AACpC,QAAA,MAAME,QAAiC,GAAG;AACxC1J,UAAAA,KAAK,EAAEyJ,KAAK;AACZE,UAAAA,aAAa,EAAE,IAAI;UACnBC,OAAO,EAAEX,aAAa,GAAG3B,IAAI,GAAG,MAAMxC,YAAY,CAACuD,MAAM,CAAA;SAC1D,CAAA;QACD,IAAI,CAACY,aAAa,EAAE;UAClBS,QAAQ,CAACG,UAAU,GAAG3F,OAAO,CAACW,QAAQ,CAACwD,MAAM,CAAC,CAAA;AAChD,SAAA;AACA,QAAA,oBAAOzC,KAAK,CAACmB,YAAY,CAACuC,OAAO,EAAEI,QAAQ,CAAC,CAAA;AAC9C,OAAA;;AAEA;AACA,MAAA,IAAIH,WAAW,CAAC,iBAAiB,CAAC,CAACF,KAAK,CAAC,EAAE;AACzC,QAAA,oBAAOzD,KAAK,CAACmB,YAAY,CACvBuC,OAAO,EACP;AACEQ,UAAAA,MAAM,EAAE5F,OAAO;AACf6F,UAAAA,QAAQ,EAAEpB,mBAAAA;SACX,EACDI,eAAe,CAACO,OAAO,CAAC5J,KAAK,CAACuC,QAAQ,EAAE,IAAI,CAC9C,CAAC,CAAA;AACH,OAAA;;AAEA;AACA,MAAA,IAAIqH,OAAO,CAAC5J,KAAK,CAACuC,QAAQ,EAAE;AAC1B,QAAA,oBAAO2D,KAAK,CAACmB,YAAY,CAACuC,OAAO,EAAE,EAAE,EAAEP,eAAe,CAACO,OAAO,CAAC5J,KAAK,CAACuC,QAAQ,EAAEgH,aAAa,CAAC,CAAC,CAAA;AAChG,OAAA;AAEA,MAAA,OAAOI,KAAK,CAAA;AACd,KAAC,CAAC,CAAA;GACH,CAAA;AAED,EAAA,kBAAIvC,cAAc,CAAC7E,QAAQ,CAAC,EAAE;AAC5B,IAAA,oBAAO2D,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAoE,QAAA,EAAA,IAAA,EAAGjB,eAAe,CAAC9G,QAAQ,CAAI,CAAC,CAAA;AACzC,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC;;AC7NM,MAAMgI,kBAA8C,GAAIvK,KAAK,IAAK;EACvE,MAAM;IAAEuC,QAAQ;AAAEQ,IAAAA,QAAAA;AAAS,GAAC,GAAG/C,KAAK,CAAA;EAEpC,MAAM;IAAEyD,KAAK;IAAEH,IAAI;IAAEC,QAAQ;AAAEiH,IAAAA,cAAAA;AAAe,GAAC,GAAG7G,UAAU,CAACC,gBAAgB,CAAC,CAAA;EAC9E,MAAM;AAAEF,IAAAA,YAAAA;AAAa,GAAC,GAAGD,KAAK,CAAA;AAE9B,EAAA,MAAMgH,WAAW,GAAGxK,OAAO,CAAkB,OAAO;AAAEyK,IAAAA,KAAK,EAAEhH,YAAAA;AAAa,GAAC,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC,CAAA;EAE7F,MAAMiH,kBAAkB,GAAIF,WAA4B,IAAK;AAC3DlH,IAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;MACT5D,IAAI,EAAE6F,0BAA0B,CAACoF,gBAAgB;MACjDxK,MAAM,EAAEqK,WAAW,CAACC,KAAAA;AACtB,KAAC,CAAC,CAAA;GACH,CAAA;AAED,EAAA,kBAAItD,cAAc,CAAC7E,QAAQ,CAAC,EAAE;AAAA,IAAA,IAAAsI,qBAAA,CAAA;AAC5B,IAAA,MAAMnE,WAAW,GAAG;AAClBoE,MAAAA,MAAM,EAAAD,CAAAA,qBAAA,GAAEtI,QAAQ,CAACvC,KAAK,CAAC8K,MAAM,MAAAD,IAAAA,IAAAA,qBAAA,KAAAA,KAAAA,CAAAA,GAAAA,qBAAA,GAAIL,cAAc;MAC/CO,IAAI,EAAEzH,IAAI,IAAI,EAAE;MAChBmH,WAAW;MACXO,mBAAmB,EAAGP,WAA4B,IAAK;AACrD,QAAA,IAAI1H,QAAQ,EAAE;UACZA,QAAQ,CAAC0H,WAAW,CAAC,CAAA;AACvB,SAAA;QACAE,kBAAkB,CAACF,WAAW,CAAC,CAAA;AACjC,OAAA;KACD,CAAA;IAED,oBAAOvE,KAAK,CAACmB,YAAY,CAAC9E,QAAQ,EAAAc,cAAA,CAAA,EAAA,EAAOqD,WAAW,CAAE,CAAC,CAAA;AACzD,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC;;AC1BM,MAAMuE,kBAAoD,GAAIjL,KAAK,IAAK;AAAA,EAAA,IAAA8F,kBAAA,CAAA;EAC7E,MAAM;IACJvD,QAAQ;IACRC,yBAAyB;IACzBC,SAAS;IACTC,KAAK;AACLjD,IAAAA,EAAE,EAAEkD,OAAO;IACXC,gBAAgB;IAChBC,WAAW;IACXC,UAAU;AACVC,IAAAA,QAAAA;AACF,GAAC,GAAG/C,KAAK,CAAA;AACT,EAAA,MAAM,CAACgD,GAAG,CAAC,GAAGC,KAAK,EAAE,CAAA;EACrB,MAAMxD,EAAE,GAAGkD,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,GAAAA,OAAO,GAAIK,GAAG,CAAA;AACzB,EAAA,MAAMtD,GAAG,GAAGK,MAAM,CAAiB,IAAI,CAAC,CAAA;EAExC,MAAM;IAAEmD,eAAe;IAAEC,kBAAkB;AAAEC,IAAAA,oBAAAA;AAAqB,GAAC,GAAAC,cAAA,CAC9DP,EAAAA,EAAAA,UAAU,CACd,CAAA;EAED,MAAM;IACJQ,IAAI;IACJC,QAAQ;IACRC,mBAAmB;AACnBC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,YAAAA;AAAa,KAAA;AACxB,GAAC,GAAGC,UAAU,CAACC,gBAAgB,CAAC,CAAA;EAEhC,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGC,QAAQ,EAAa,CAAA;EAC7D,MAAM,CAACnE,QAAQ,EAAEoE,WAAW,CAAC,GAAGD,QAAQ,EAAS,CAAA;AAEjDE,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,MAAMC,oBAAoB,GAAGC,mBAAmB,CAACC,GAAG,CAACd,IAAI,CAAC,CAACb,SAAS,CAACA,SAAS,EAAEG,gBAAgB,CAAC,CAAA;AACjG,IAAA,MAAMyB,gBAAgB,GAAG3B,KAAK,GAAGA,KAAK,CAACwB,oBAAoB,CAAC,GAAGA,oBAAoB,CAACxB,KAAK,EAAE,CAAA;IAC3FoB,eAAe,CAACI,oBAAoB,CAAC,CAAA;IACrCF,WAAW,CAACK,gBAAgB,CAAC,CAAA;IAC7B,OAAO,SAASC,OAAOA,GAAG;MACxBJ,oBAAoB,CAACK,SAAS,EAAE,CAAA;KACjC,CAAA;GACF,EAAE,CAAC9B,SAAS,EAAEa,IAAI,EAAEZ,KAAK,CAAC,CAAC,CAAA;EAE5B,MAAM,CAAC8B,OAAO,EAAEC,UAAU,CAAC,GAAGV,QAAQ,CAAW,EAAE,CAAC,CAAA;EACpD,MAAM,CAACW,WAAW,EAAEC,cAAc,CAAC,GAAGZ,QAAQ,EAAyC,CAAA;;AAEvF;AACF;AACA;AACA;AACA;EACE,MAAMa,mBAAmB,GAAGC,WAAW,CAAC,CAACC,GAAc,EAAEC,GAAU,EAAEC,aAAuB,KAAK;AAC/F;IACAF,GAAG,CAACP,SAAS,EAAE,CAAA;AACf,IAAA,MAAMU,QAA+C,GAAG9C,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAAC0C,GAAG,CAAC5E,GAAG,EAAE,CAAC,CAAC,CAAA;AAC7F;IACA,IAAI6E,aAAa,CAACzE,MAAM,EAAE;MACxBuE,GAAG,CAAC1E,MAAM,CAAE8E,CAAC,IAAKF,aAAa,CAACG,QAAQ,CAACD,CAAW,CAAC,CAAC,CAAA;AACxD,KAAA;IACAP,cAAc,CAACM,QAAQ,CAAC,CAAA;GACzB,EAAE,EAAE,CAAC,CAAA;;AAEN;AACAhB,EAAAA,SAAS,CAAC,MAAM;IACd,IAAIJ,YAAY,IAAIjE,QAAQ,EAAE;AAC5BgF,MAAAA,mBAAmB,CAACf,YAAY,EAAEjE,QAAQ,EAAE4E,OAAO,CAAC,CAAA;AACtD,KAAA;AACF,GAAC,EAAE,CAACX,YAAY,EAAEjE,QAAQ,EAAE4E,OAAO,EAAEI,mBAAmB,EAAEpB,mBAAmB,CAAC,CAAC,CAAA;EAE/E,MAAM4B,YAAY,GAAIC,QAAgB,IAAK;AACzC,IAAA,IAAIC,UAAoB,CAAA;AACxB,IAAA,IAAId,OAAO,CAACW,QAAQ,CAACE,QAAQ,CAAC,EAAE;MAC9BC,UAAU,GAAGd,OAAO,CAACpE,MAAM,CAAEmF,CAAC,IAAKA,CAAC,KAAKF,QAAQ,CAAC,CAAA;AACpD,KAAC,MAAM;AACLC,MAAAA,UAAU,GAAG,CAAC,GAAGd,OAAO,EAAEa,QAAQ,CAAC,CAAA;AACrC,KAAA;IAEAZ,UAAU,CAACa,UAAU,CAAC,CAAA;IACtB,IAAIA,UAAU,CAAC/E,MAAM,EAAE;MACrBsD,YAAY,CAAEzD,MAAM,CAAE8E,CAAC,IAAKI,UAAU,CAACH,QAAQ,CAACD,CAAW,CAAC,CAAC,CAAA;AAC/D,KAAC,MAAM;MACLrB,YAAY,CAAEU,SAAS,EAAE,CAAA;AAC3B,KAAA;AACAf,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AAEvB,IAAA,IAAIhB,yBAAyB,EAAE;AAC7Be,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;QACT5D,IAAI,EAAE6F,0BAA0B,CAACC,WAAW;AAC5CrF,QAAAA,MAAM,EAAE;AACNX,UAAAA,EAAE,EAAEA,EAAE;UACNiG,KAAK,EAAElD,yBAAyB,CAACkD,KAAK;UACtCC,QAAQ,EAAEnD,yBAAyB,CAACmD,QAAQ;AAC5CrF,UAAAA,KAAK,EAAEgF,UAAAA;AACT,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAIvC,QAAQ,EAAE;MACZA,QAAQ,CAACuC,UAAU,CAAC,CAAA;AACtB,KAAA;GACD,CAAA;EAED,MAAMM,YAAY,GAAGA,MAAM;IACzBnB,UAAU,CAAC,EAAE,CAAC,CAAA;IACdZ,YAAY,CAAEU,SAAS,EAAE,CAAA;AACzBf,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AAEvB,IAAA,IAAIhB,yBAAyB,EAAE;AAC7Be,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;QACT5D,IAAI,EAAE6F,0BAA0B,CAACK,WAAW;AAC5CzF,QAAAA,MAAM,EAAE;AACNX,UAAAA,EAAE,EAAEA,EAAE;UACNiG,KAAK,EAAElD,yBAAyB,CAACkD,KAAK;UACtCC,QAAQ,EAAEnD,yBAAyB,CAACmD,QAAAA;AACtC,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAI5C,QAAQ,EAAE;AACZA,MAAAA,QAAQ,EAAE,CAAA;AACZ,KAAA;GACD,CAAA;AAED,EAAA,MAAMgD,cAAc,GAAGvD,yBAAyB,GAAA,CAAAsD,kBAAA,GAC5CpC,YAAY,CAACsC,IAAI,CACd5F,MAAM,IACLA,MAAM,CAACsF,KAAK,KAAKlD,yBAAyB,CAACkD,KAAK,IAAItF,MAAM,CAACuF,QAAQ,KAAKnD,yBAAyB,CAACmD,QACtG,CAAC,MAAA,IAAA,IAAAG,kBAAA,KAHDA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAGGxF,KAAK,GACR,IAAI,CAAA;AACR2D,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAI8B,cAAc,IAAIA,cAAc,KAAKvB,OAAO,IAAIX,YAAY,EAAE;MAChEY,UAAU,CAACsB,cAAc,CAAC,CAAA;MAC1B,IAAIA,cAAc,CAACxF,MAAM,EAAE;QACzBsD,YAAY,CAAEzD,MAAM,CAAE8E,CAAC,IAAKa,cAAc,CAACZ,QAAQ,CAACD,CAAC,CAAC,CAAC,CAAA;AACzD,OAAC,MAAM;QACLrB,YAAY,CAAEU,SAAS,EAAE,CAAA;AAC3B,OAAA;AACAf,MAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AACzB,KAAA;AACF,GAAC,EAAE,CAACuC,cAAc,CAAC,CAAC,CAAA;AAEpB,EAAA,MAAME,cAAc,gBAClBC,KAAA,CAAAC,aAAA,CAACC,eAAe,EAAA;AACdC,IAAAA,KAAK,EAAEnD,eAAiB;AACxBoD,IAAAA,QAAQ,EAAEnD,kBAAmB;AAC7BoD,IAAAA,UAAU,EAAEnD,oBAAqB;AACjCoD,IAAAA,OAAO,EAAEZ,YAAAA;AAAa,GACvB,CACF,CAAA;EAED,MAAMa,UAAU,GAAGlH,4BAA4B,CAAC;IAC9CE,EAAE;AACFC,IAAAA,GAAG,EAAEA,GAAuC;AAC5CC,IAAAA,IAAI,EAAE,KAAK;IACXC,QAAQ;AACRC,IAAAA,WAAW,EAAE,YAAA;AACf,GAAC,CAAC,CAAA;AAEF,EAAA,MAAMqL,WAAW,GAAG;IAClBC,iBAAiB,EAAG9K,KAAsB,IAAK;AAC7C+E,MAAAA,YAAY,CAAC/E,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAA;KAC7B;IACDmE,oBAAoB,EAAG/K,KAAsB,IAAK;AAChD,MAAA,OAAOmE,OAAO,CAACjE,MAAM,KAAK,CAAC,IAAIiE,OAAO,CAACW,QAAQ,CAAC9E,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAA;KAChE;AACDoE,IAAAA,cAAc,EAAE,QAAQ;AACxB1J,IAAAA,IAAI,EAAE,OAAA;GACP,CAAA;AAED,EAAA,MAAM+E,WAAW,GAAG;AAClB4E,IAAAA,UAAU,EAAE;AACV1J,MAAAA,QAAQ,EAAE,CAAC,CAAA;KACZ;AACD2J,IAAAA,SAAS,EAAE,QAAQ;AACnB5J,IAAAA,IAAI,EAAE,SAAS;IACf8E,UAAU;IACVyE,WAAW;AACXrE,IAAAA,QAAQ,EAAEnH,GAAG;AACb4D,IAAAA,IAAI,EAAEoB,WAAW;IACjBuB,cAAc;IACdxG,EAAE;IACF+L,eAAe,EAAGnL,KAAe,IAAK;AACpC,MAAA,OAAOmE,OAAO,CAACjE,MAAM,KAAK,CAAC,IAAIiE,OAAO,CAACW,QAAQ,CAAC9E,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAA;KAChE;IACDwE,YAAY,EAAGpL,KAAe,IAAK;AACjC+E,MAAAA,YAAY,CAAC/E,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAA;KAC7B;AACDT,IAAAA,OAAO,EAAE3D,WAAW,GAAG+C,YAAY,GAAGuB,SAAAA;GACvC,CAAA;AAED,EAAA,kBAAIC,cAAc,CAAC7E,QAAQ,CAAC,EAAE;IAC5B,oBAAO2D,KAAK,CAACmB,YAAY,CAAC9E,QAAQ,EAAAc,cAAA,CAAA,EAAA,EAAOqD,WAAW,CAAE,CAAC,CAAA;AACzD,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC;;AC1LD,MAAMtG,MAAM,GAAGA,CAACsL,aAAwB,EAAEC,YAA0B,KAAMzG,CAA2B,IAAK;AACxG,EAAA,IAAIwG,aAAa,IAAIA,aAAa,CAACnL,MAAM,IAAIoL,YAAY,EAAE;IACzD,OACEzG,CAAC,CAAC,CAAC,CAAC,IAAIyG,YAAY,CAACC,IAAI,IACzB1G,CAAC,CAAC,CAAC,CAAC,IAAIyG,YAAY,CAACE,IAAI,IACzB3G,CAAC,CAAC,CAAC,CAAC,IAAIyG,YAAY,CAACG,IAAI,IACzB5G,CAAC,CAAC,CAAC,CAAC,IAAIyG,YAAY,CAACI,IAAI,IACzBL,aAAa,CAACvG,QAAQ,CAACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAEhC,GAAC,MAAM,IAAIwG,aAAa,IAAIA,aAAa,CAACnL,MAAM,EAAE;IAChD,OAAOmL,aAAa,CAACvG,QAAQ,CAACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;GACpC,MAAM,IAAIyG,YAAY,EAAE;AACvB,IAAA,OACEzG,CAAC,CAAC,CAAC,CAAC,IAAIyG,YAAY,CAACC,IAAI,IAAI1G,CAAC,CAAC,CAAC,CAAC,IAAIyG,YAAY,CAACE,IAAI,IAAI3G,CAAC,CAAC,CAAC,CAAC,IAAIyG,YAAY,CAACG,IAAI,IAAI5G,CAAC,CAAC,CAAC,CAAC,IAAIyG,YAAY,CAACI,IAAI,CAAA;AAEpH,GAAC,MAAM;AACL,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AACF,CAAC,CAAA;AAED,MAAMC,UAAU,GAAGA,CAACN,aAAwB,EAAEC,YAA0B,KAAMtL,KAAe,IAAK;AAChG,EAAA,IAAIqL,aAAa,IAAIA,aAAa,CAACnL,MAAM,IAAIoL,YAAY,EAAE;AACzD,IAAA,OACGtL,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,IAAe0E,YAAY,CAACC,IAAI,IACjDvL,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,IAAe0E,YAAY,CAACE,IAAI,IACjDxL,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,IAAe0E,YAAY,CAACG,IAAI,IACjDzL,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,IAAe0E,YAAY,CAACI,IAAI,IAClDL,aAAa,CAACvG,QAAQ,CAAC9E,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAW,CAAC,CAAA;AAEvD,GAAC,MAAM,IAAIyE,aAAa,IAAIA,aAAa,CAACnL,MAAM,EAAE;AAChD,IAAA,OAAOmL,aAAa,CAACvG,QAAQ,CAAC9E,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAW,CAAC,CAAA;GAC3D,MAAM,IAAI0E,YAAY,EAAE;IACvB,OACGtL,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,IAAe0E,YAAY,CAACC,IAAI,IACjDvL,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,IAAe0E,YAAY,CAACE,IAAI,IACjDxL,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,IAAe0E,YAAY,CAACG,IAAI,IACjDzL,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAC,CAAC,IAAe0E,YAAY,CAACI,IAAI,CAAA;AAEtD,GAAC,MAAM;AACL,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AACF,CAAC,CAAA;AAEM,MAAME,qBAAuD,GAAIjM,KAAK,IAAK;EAChF,MAAM;IACJuC,QAAQ;IACR2J,oCAAoC;IACpCzJ,SAAS;IACTC,KAAK;AACLjD,IAAAA,EAAE,EAAEkD,OAAO;IACXC,gBAAgB;IAChBC,WAAW;IACXC,UAAU;AACVC,IAAAA,QAAAA;AACF,GAAC,GAAG/C,KAAK,CAAA;AACT,EAAA,MAAM,CAACgD,GAAG,CAAC,GAAGC,KAAK,EAAE,CAAA;EACrB,MAAMxD,EAAE,GAAGkD,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAPA,KAAAA,CAAAA,GAAAA,OAAO,GAAIK,GAAG,CAAA;EAEzB,MAAM;IAAEE,eAAe;IAAEC,kBAAkB;AAAEC,IAAAA,oBAAAA;AAAqB,GAAC,GAAAC,cAAA,CAC9DP,EAAAA,EAAAA,UAAU,CACd,CAAA;EAED,MAAM;IACJQ,IAAI;IACJC,QAAQ;IACRC,mBAAmB;AACnBC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,YAAAA;AAAa,KAAA;AACxB,GAAC,GAAGC,UAAU,CAACC,gBAAgB,CAAC,CAAA;EAEhC,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGC,QAAQ,EAAa,CAAA;EAC7D,MAAM,CAACnE,QAAQ,EAAEoE,WAAW,CAAC,GAAGD,QAAQ,EAAS,CAAA;AAEjDE,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,MAAMC,oBAAoB,GAAGC,mBAAmB,CAACC,GAAG,CAACd,IAAI,CAAC,CAACb,SAAS,CAACA,SAAS,EAAEG,gBAAgB,CAAC,CAAA;AACjG,IAAA,MAAMyB,gBAAgB,GAAG3B,KAAK,GAAGA,KAAK,CAACwB,oBAAoB,CAAC,GAAGA,oBAAoB,CAACxB,KAAK,EAAE,CAAA;IAC3FoB,eAAe,CAACI,oBAAoB,CAAC,CAAA;IACrCF,WAAW,CAACK,gBAAgB,CAAC,CAAA;IAC7B,OAAO,SAASC,OAAOA,GAAG;MACxBJ,oBAAoB,CAACK,SAAS,EAAE,CAAA;KACjC,CAAA;GACF,EAAE,CAAC9B,SAAS,EAAEa,IAAI,EAAEZ,KAAK,CAAC,CAAC,CAAA;EAE5B,MAAM,CAACiJ,YAAY,EAAEQ,eAAe,CAAC,GAAGpI,QAAQ,EAAe,CAAA;EAC/D,MAAM,CAAC2H,aAAa,EAAEU,gBAAgB,CAAC,GAAGrI,QAAQ,CAAW,EAAE,CAAC,CAAA;EAEhE,MAAMsI,iBAAiB,GAAI/G,UAAuB,IAAK;IACrD6G,eAAe,CAAC7G,UAAU,CAAC,CAAA;AAC3BzB,IAAAA,YAAY,CAAEzD,MAAM,CAAE8E,CAAC,IAAK9E,MAAM,CAACsL,aAAa,EAAEpG,UAAU,CAAC,CAACJ,CAAwC,CAAC,CAAC,CAAA;AACxG1B,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AAEvB,IAAA,IAAI0I,oCAAoC,EAAE;AACxC3I,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;QACT5D,IAAI,EAAE6F,0BAA0B,CAAC8G,sBAAsB;AACvDlM,QAAAA,MAAM,EAAE,CACN;UACEX,EAAE,EAAG,CAAEA,EAAAA,EAAG,CAAG,EAAA,CAAA;AACbiG,UAAAA,KAAK,EAAEwG,oCAAoC,CAAC,CAAC,CAAC,CAACxG,KAAK;AACpDC,UAAAA,QAAQ,EAAEuG,oCAAoC,CAAC,CAAC,CAAC,CAACvG,QAAQ;UAC1DrF,KAAK,EAAE,CAACgF,UAAU,CAACsG,IAAI,EAAEtG,UAAU,CAACuG,IAAI,CAAA;AAC1C,SAAC,EACD;UACEpM,EAAE,EAAG,CAAEA,EAAAA,EAAG,CAAG,EAAA,CAAA;AACbiG,UAAAA,KAAK,EAAEwG,oCAAoC,CAAC,CAAC,CAAC,CAACxG,KAAK;AACpDC,UAAAA,QAAQ,EAAEuG,oCAAoC,CAAC,CAAC,CAAC,CAACvG,QAAQ;UAC1DrF,KAAK,EAAE,CAACgF,UAAU,CAACwG,IAAI,EAAExG,UAAU,CAACyG,IAAI,CAAA;SACzC,CAAA;AAEL,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAIhJ,QAAQ,EAAE;MACZA,QAAQ,CAACuC,UAAU,CAAC,CAAA;AACtB,KAAA;GACD,CAAA;EAED,MAAMiH,kBAAkB,GAAIlH,QAAgB,IAAK;AAC/C,IAAA,IAAIC,UAAoB,CAAA;AACxB,IAAA,IAAIoG,aAAa,CAACvG,QAAQ,CAACE,QAAQ,CAAC,EAAE;MACpCC,UAAU,GAAGoG,aAAa,CAACtL,MAAM,CAAEmF,CAAC,IAAKA,CAAC,KAAKF,QAAQ,CAAC,CAAA;AAC1D,KAAC,MAAM;AACLC,MAAAA,UAAU,GAAG,CAAC,GAAGoG,aAAa,EAAErG,QAAQ,CAAC,CAAA;AAC3C,KAAA;IAEA+G,gBAAgB,CAAC9G,UAAU,CAAC,CAAA;AAC5BzB,IAAAA,YAAY,CAAEzD,MAAM,CAAE8E,CAAC,IAAK9E,MAAM,CAACkF,UAAU,EAAEqG,YAAY,CAAC,CAACzG,CAAwC,CAAC,CAAC,CAAA;AACvG1B,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;IAEvB,IAAI,CAAA0I,oCAAoC,KAAA,IAAA,IAApCA,oCAAoC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAApCA,oCAAoC,CAAE3L,MAAM,MAAK,CAAC,EAAE;AACtDgD,MAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;QACT5D,IAAI,EAAE6F,0BAA0B,CAACC,WAAW;AAC5CrF,QAAAA,MAAM,EAAE;UACNX,EAAE,EAAG,CAAEA,EAAAA,EAAG,CAAU,SAAA,CAAA;AACpBiG,UAAAA,KAAK,EAAEwG,oCAAoC,CAAC,CAAC,CAAC,CAACxG,KAAK;AACpDC,UAAAA,QAAQ,EAAEuG,oCAAoC,CAAC,CAAC,CAAC,CAACvG,QAAQ;AAC1DrF,UAAAA,KAAK,EAAEgF,UAAAA;AACT,SAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAIvC,QAAQ,EAAE;MACZA,QAAQ,CAACuC,UAAU,CAAC,CAAA;AACtB,KAAA;GACD,CAAA;AAED,EAAA,MAAMM,YAAY,GAAG,YAAiC;AAAA,IAAA,IAAhC4G,KAAK,GAAAhD,SAAA,CAAAjJ,MAAA,GAAA,CAAA,IAAAiJ,SAAA,CAAA,CAAA,CAAA,KAAArC,SAAA,GAAAqC,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;AAAA,IAAA,IAAEb,MAAM,GAAAa,SAAA,CAAAjJ,MAAA,GAAA,CAAA,IAAAiJ,SAAA,CAAA,CAAA,CAAA,KAAArC,SAAA,GAAAqC,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAA;AAC/C,IAAA,IAAIgD,KAAK,EAAE;MACTL,eAAe,CAAChF,SAAS,CAAC,CAAA;AAC5B,KAAA;AACA,IAAA,IAAIwB,MAAM,EAAE;MACVyD,gBAAgB,CAAC,EAAE,CAAC,CAAA;AACtB,KAAA;IACAvI,YAAY,CAAEzD,MAAM,CAAE8E,CAAC,IACrB9E,MAAM,CAACuI,MAAM,GAAG,EAAE,GAAG+C,aAAa,EAAEc,KAAK,GAAGrF,SAAS,GAAGwE,YAAY,CAAC,CAACzG,CAAwC,CAChH,CAAC,CAAA;AACD1B,IAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AAEvB,IAAA,IAAI0I,oCAAoC,EAAE;AACxC,MAAA,IAAIM,KAAK,EAAE;AACTjJ,QAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;UACT5D,IAAI,EAAE6F,0BAA0B,CAACK,WAAW;AAC5CzF,UAAAA,MAAM,EAAE;YACNX,EAAE,EAAG,CAAEA,EAAAA,EAAG,CAAG,EAAA,CAAA;AACbiG,YAAAA,KAAK,EAAEwG,oCAAoC,CAAC,CAAC,CAAC,CAACxG,KAAK;AACpDC,YAAAA,QAAQ,EAAEuG,oCAAoC,CAAC,CAAC,CAAC,CAACvG,QAAAA;AACpD,WAAA;AACF,SAAC,CAAC,CAAA;AACFpC,QAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;UACT5D,IAAI,EAAE6F,0BAA0B,CAACK,WAAW;AAC5CzF,UAAAA,MAAM,EAAE;YACNX,EAAE,EAAG,CAAEA,EAAAA,EAAG,CAAG,EAAA,CAAA;AACbiG,YAAAA,KAAK,EAAEwG,oCAAoC,CAAC,CAAC,CAAC,CAACxG,KAAK;AACpDC,YAAAA,QAAQ,EAAEuG,oCAAoC,CAAC,CAAC,CAAC,CAACvG,QAAAA;AACpD,WAAA;AACF,SAAC,CAAC,CAAA;AACJ,OAAA;AACA,MAAA,IAAIgD,MAAM,IAAIuD,oCAAoC,CAAC3L,MAAM,KAAK,CAAC,EAAE;AAC/DgD,QAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAG;UACT5D,IAAI,EAAE6F,0BAA0B,CAACK,WAAW;AAC5CzF,UAAAA,MAAM,EAAE;YACNX,EAAE,EAAG,CAAEA,EAAAA,EAAG,CAAU,SAAA,CAAA;AACpBiG,YAAAA,KAAK,EAAEwG,oCAAoC,CAAC,CAAC,CAAC,CAACxG,KAAK;AACpDC,YAAAA,QAAQ,EAAEuG,oCAAoC,CAAC,CAAC,CAAC,CAACvG,QAAAA;AACpD,WAAA;AACF,SAAC,CAAC,CAAA;AACJ,OAAA;AACF,KAAA;AAEA,IAAA,IAAI5C,QAAQ,EAAE;AACZA,MAAAA,QAAQ,EAAE,CAAA;AACZ,KAAA;GACD,CAAA;AAEDkB,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAI,CAACiI,oCAAoC,IAAI,CAACrI,YAAY,EAAE,OAAA;AAE5D,IAAA,MAAM4I,OAAO,GAAG/I,YAAY,CAACsC,IAAI,CAC9BT,CAAC,IACAA,CAAC,CAACG,KAAK,KAAKwG,oCAAoC,CAAC,CAAC,CAAC,CAACxG,KAAK,IACzDH,CAAC,CAACI,QAAQ,KAAKuG,oCAAoC,CAAC,CAAC,CAAC,CAACvG,QAC3D,CAAC,CAAA;AACD,IAAA,MAAM+G,OAAO,GAAGhJ,YAAY,CAACsC,IAAI,CAC9BT,CAAC,IACAA,CAAC,CAACG,KAAK,KAAKwG,oCAAoC,CAAC,CAAC,CAAC,CAACxG,KAAK,IACzDH,CAAC,CAACI,QAAQ,KAAKuG,oCAAoC,CAAC,CAAC,CAAC,CAACvG,QAC3D,CAAC,CAAA;AAED,IAAA,IAAI8G,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,KAAA,CAAA,IAAPA,OAAO,CAAEnM,KAAK,IAAIoM,OAAO,aAAPA,OAAO,KAAA,KAAA,CAAA,IAAPA,OAAO,CAAEpM,KAAK,EAAE;AACpC,MAAA,MAAMqM,YAAyB,GAAG;QAChCf,IAAI,EAAEgB,MAAM,CAACH,OAAO,CAACnM,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9BuL,IAAI,EAAEe,MAAM,CAACH,OAAO,CAACnM,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9BwL,IAAI,EAAEc,MAAM,CAACF,OAAO,CAACpM,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9ByL,IAAI,EAAEa,MAAM,CAACF,OAAO,CAACpM,KAAK,CAAC,CAAC,CAAC,CAAA;OAC9B,CAAA;AACD,MAAA,IAAI6B,IAAI,CAACE,SAAS,CAACsK,YAAY,CAAC,KAAKxK,IAAI,CAACE,SAAS,CAACsJ,YAAY,CAAC,EAAE;QACjEQ,eAAe,CAACQ,YAAY,CAAC,CAAA;AAC7B9I,QAAAA,YAAY,CAACzD,MAAM,CAAE8E,CAAC,IAAK9E,MAAM,CAACsL,aAAa,EAAEiB,YAAY,CAAC,CAACzH,CAAwC,CAAC,CAAC,CAAA;AACzG1B,QAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AACzB,OAAA;KACD,MAAM,IAAImI,YAAY,IAAI,CAACc,OAAO,IAAI,CAACC,OAAO,EAAE;AAC/C;MACAP,eAAe,CAAChF,SAAS,CAAC,CAAA;AAC1BtD,MAAAA,YAAY,CAACzD,MAAM,CAAE8E,CAAC,IAAK9E,MAAM,CAACsL,aAAa,EAAEvE,SAAS,CAAC,CAACjC,CAAwC,CAAC,CAAC,CAAA;AACtG1B,MAAAA,mBAAmB,KAAnBA,IAAAA,IAAAA,mBAAmB,KAAnBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAmB,EAAI,CAAA;AACzB,KAAA;GACD,EAAE,CAACE,YAAY,EAAEwI,oCAAoC,EAAErI,YAAY,CAAC,CAAC,CAAA;AAEtE,EAAA,MAAMoC,cAAc,gBAClBC,KAAA,CAAAC,aAAA,CAACC,eAAe,EAAA;AACdC,IAAAA,KAAK,EAAEnD,eAAiB;AACxBoD,IAAAA,QAAQ,EAAEnD,kBAAmB;AAC7BoD,IAAAA,UAAU,EAAEnD,oBAAqB;AACjCoD,IAAAA,OAAO,EAAEZ,YAAAA;AAAa,GACvB,CACF,CAAA;AAED,EAAA,MAAMsF,WAAW,GAAG;IAClBC,iBAAiB,EAAG9K,KAAsB,IAAK;AAC7CkM,MAAAA,kBAAkB,CAAClM,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAA;KACnC;IACDmE,oBAAoB,EAAG/K,KAAsB,IAAK;AAChD,MAAA,OAAOqL,aAAa,CAACnL,MAAM,KAAK,CAAC,IAAImL,aAAa,CAACvG,QAAQ,CAAC9E,KAAK,CAACiD,IAAI,CAAC2D,GAAG,CAAC,CAAA;KAC5E;AACDoE,IAAAA,cAAc,EAAE,QAAQ;AACxB1J,IAAAA,IAAI,EAAE,OAAA;GACP,CAAA;AAED,EAAA,MAAM+E,WAAW,GAAG;AAClBmG,IAAAA,WAAW,EAAE,IAAI;AACjBvJ,IAAAA,IAAI,EAAE1D,QAAQ,GAAGuC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACzC,QAAQ,CAACO,GAAG,EAAE,CAAC,CAAC,GAAGgH,SAAS;AACvE2F,IAAAA,OAAO,EAAE,QAAQ;AACjBnL,IAAAA,IAAI,EAAE,SAAS;IACfsE,cAAc;IACdxG,EAAE;IACFyL,WAAW;AACX6B,IAAAA,OAAO,EAAEA,CACPC,SAA+C,EAC/CC,MAAqC,EACrCC,MAAqC,KAClC;AACH,MAAA,IAAIF,SAAS,EAAE;AACbb,QAAAA,eAAe,CAAC;AACdP,UAAAA,IAAI,EAAEqB,MAAM,CAACE,MAAM,CAACH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpClB,UAAAA,IAAI,EAAEoB,MAAM,CAACC,MAAM,CAACH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpCnB,UAAAA,IAAI,EAAEoB,MAAM,CAACE,MAAM,CAACH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACpCjB,IAAI,EAAEmB,MAAM,CAACC,MAAM,CAACH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrC,SAAC,CAAC,CAAA;AACJ,OAAA;KACD;AACDI,IAAAA,UAAU,EAAEA,CACVJ,SAA+C,EAC/CC,MAAsC,EACtCC,MAAsC,KACnC;AACH,MAAA,IAAIF,SAAS,IAAIC,MAAM,IAAIC,MAAM,EAAE;AACjCb,QAAAA,iBAAiB,CAAC;AAChBT,UAAAA,IAAI,EAAEqB,MAAM,CAACE,MAAM,CAACH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpClB,UAAAA,IAAI,EAAEoB,MAAM,CAACC,MAAM,CAACH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpCnB,UAAAA,IAAI,EAAEoB,MAAM,CAACE,MAAM,CAACH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACpCjB,IAAI,EAAEmB,MAAM,CAACC,MAAM,CAACH,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrC,SAAC,CAAC,CAAA;AACJ,OAAC,MAAM;AACLpH,QAAAA,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC3B,OAAA;KACD;AACDY,IAAAA,OAAO,EAAE3D,WAAW,GAAG+C,YAAY,GAAGuB,SAAS;IAC/CkG,aAAa,EAAGhN,KAAe,IAAK2L,UAAU,CAACN,aAAa,EAAEC,YAAY,CAAC,CAACtL,KAAK,CAAA;GAClF,CAAA;AAED,EAAA,kBAAI+G,cAAc,CAAC7E,QAAQ,CAAC,EAAE;IAC5B,oBAAO2D,KAAK,CAACmB,YAAY,CAAC9E,QAAQ,EAAAc,cAAA,CAAA,EAAA,EAAOqD,WAAW,CAAE,CAAC,CAAA;AACzD,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC;;AC7SY4G,MAAAA,WAAuC,GAAItN,KAAK,IAAK;EAChE,IAAI6J,WAAW,CAAC,UAAU,CAAC,CAAC7J,KAAK,CAACuC,QAAQ,CAAC,EAAE;AAC3C,IAAA,oBAAO2D,KAAA,CAAAC,aAAA,CAACoE,kBAAkB,EAAKvK,KAAQ,CAAC,CAAA;AAC1C,GAAA;EAEA,IAAI6J,WAAW,CAAC,UAAU,CAAC,CAAC7J,KAAK,CAACuC,QAAQ,CAAC,EAAE;AAC3C,IAAA,oBAAO2D,KAAA,CAAAC,aAAA,CAAC4B,kBAAkB,EAAK/H,KAAQ,CAAC,CAAA;AAC1C,GAAA;EAEA,MAAM;AAAEyC,IAAAA,SAAAA;AAAU,GAAC,GAAGzC,KAAK,CAAA;EAE3B,IAAI,CAACyC,SAAS,EAAE;AACd,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEA,IAAIoH,WAAW,CAAC,UAAU,CAAC,CAAC7J,KAAK,CAACuC,QAAQ,CAAC,EAAE;IAC3C,oBAAO2D,KAAA,CAAAC,aAAA,CAAC7D,kBAAkB,EAAAiL,QAAA,KAAKvN,KAAK,EAAA;AAAEyC,MAAAA,SAAS,EAAEA,SAAAA;AAAU,KAAA,CAAE,CAAC,CAAA;GAC/D,MAAM,IAAIoH,WAAW,CAAC,UAAU,CAAC,CAAC7J,KAAK,CAACuC,QAAQ,CAAC,EAAE;IAClD,oBAAO2D,KAAA,CAAAC,aAAA,CAAC8E,kBAAkB,EAAAsC,QAAA,KAAKvN,KAAK,EAAA;AAAEyC,MAAAA,SAAS,EAAEA,SAAAA;AAAU,KAAA,CAAE,CAAC,CAAA;GAC/D,MAAM,IAAIoH,WAAW,CAAC,aAAa,CAAC,CAAC7J,KAAK,CAACuC,QAAQ,CAAC,EAAE;IACrD,oBAAO2D,KAAA,CAAAC,aAAA,CAAC8F,qBAAqB,EAAAsB,QAAA,KAAKvN,KAAK,EAAA;AAAEyC,MAAAA,SAAS,EAAEA,SAAAA;AAAU,KAAA,CAAE,CAAC,CAAA;AACnE,GAAA;AAEA,EAAA,oBAAOyD,KAAK,CAACkB,cAAc,CAACpH,KAAK,CAACuC,QAAQ,CAAC,GAAGvC,KAAK,CAACuC,QAAQ,GAAG,IAAI,CAAA;AACrE;;;;"}
|
package/_internal/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../src/components/Dashboard/types.ts"],"sourcesContent":["import { ComponentProps, Dispatch, MutableRefObject, RefObject } from 'react';\nimport { GridFilterItem } from '@redsift/table';\nimport { GridApi } from '@mui/x-data-grid-
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/components/Dashboard/types.ts"],"sourcesContent":["import { ComponentProps, Dispatch, MutableRefObject, RefObject } from 'react';\nimport { GridFilterItem } from '@redsift/table';\nimport { GridApi } from '@mui/x-data-grid-premium';\n\nimport { JSONArray } from '../../types';\n\n/**\n * Context props.\n */\nexport type DashboardContextProps = {\n dashboardRef?: RefObject<HTMLDivElement>;\n data: JSONArray;\n // MUI v8: GridApi can be null initially\n dataGridApiRef?: MutableRefObject<GridApi | null>;\n dispatch: Dispatch<DashboardReducerAction>;\n state: DashboardReducerState;\n toggleUpdateContext?: () => void;\n};\n\n/**\n * Reducer props.\n */\nexport type DashboardReducerState = {\n tableFilters: GridFilterItem[];\n};\n\nexport enum DashboardReducerActionType {\n ResetFilter = 'reset-filter',\n ResetFilters = 'reset-filters',\n FilterTable = 'filter-table',\n FilterTableBatch = 'filter-table-batch',\n AppendFilterTableBatch = 'append-filter-table-batch',\n}\n\nexport type DashboardReducerAction = {\n type: DashboardReducerActionType;\n filter?: GridFilterItem | GridFilterItem[];\n};\n\n/**\n * Component props.\n */\nexport interface DashboardProps extends ComponentProps<'div'> {\n /** Dataset that will be share across every components within the dashboard. */\n data: JSONArray;\n /** Datagrid API Ref. MUI v8: can be null initially. */\n dataGridApiRef?: MutableRefObject<GridApi | null>;\n}\n"],"names":["DashboardReducerActionType"],"mappings":"AAMA;AACA;AACA;;AAWA;AACA;AACA;;AAKYA,IAAAA,0BAA0B,0BAA1BA,0BAA0B,EAAA;EAA1BA,0BAA0B,CAAA,aAAA,CAAA,GAAA,cAAA,CAAA;EAA1BA,0BAA0B,CAAA,cAAA,CAAA,GAAA,eAAA,CAAA;EAA1BA,0BAA0B,CAAA,aAAA,CAAA,GAAA,cAAA,CAAA;EAA1BA,0BAA0B,CAAA,kBAAA,CAAA,GAAA,oBAAA,CAAA;EAA1BA,0BAA0B,CAAA,wBAAA,CAAA,GAAA,2BAAA,CAAA;AAAA,EAAA,OAA1BA,0BAA0B,CAAA;AAAA,CAAA,CAAA,EAAA,EAAA;;AAatC;AACA;AACA;;;;"}
|