@redsift/dashboard 12.4.0-muiv7 → 12.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_internal/Dashboard2.js +2 -2
- package/_internal/Dashboard2.js.map +1 -1
- package/_internal/DataCardBody2.js.map +1 -1
- package/_internal/DataCardListbox2.js.map +1 -1
- package/_internal/DrilldownDashboard2.js.map +1 -1
- package/_internal/PdfExportButton2.js +2 -2
- package/_internal/PdfExportButton2.js.map +1 -1
- package/_internal/WithFilters2.js +2 -91
- 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 '@redsift/dashboard/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) => {\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<Record<string, unknown>>;\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 as React.ReactNode, 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 as React.ReactNode, 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 } =\n useContext(DashboardContext);\n const { tableFilters } = state;\n\n const filterModel = useMemo<GridFilterModel>(\n () => ({ items: tableFilters }),\n [tableFilters]\n );\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 '@redsift/dashboard/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":"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"}
|
|
1
|
+
{"version":3,"file":"WithFilters2.js","sources":["../../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 { 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 '@redsift/dashboard/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 '@redsift/dashboard/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":["FilterableBarChart","props","children","datagridCategoryDimFilter","dimension","group","id","propsId","isDimensionArray","isResetable","localeText","onFilter","_id","useId","ref","useRef","emptyChartTitle","emptyChartSubtitle","emptyChartResetLabel","_objectSpread","data","dispatch","toggleUpdateContext","state","tableFilters","useContext","DashboardContext","ndxDimension","setNdxDimension","useState","ndxGroup","setNdxGroup","useEffect","computedNdxDimension","CrossfilterRegistry","get","computedNdxGroup","cleanup","filterAll","filters","setFilters","displayData","setDisplayData","snapshotDisplayData","useCallback","dim","grp","activeFilters","snapshot","JSON","parse","stringify","all","length","filter","d","includes","handleFilter","category","newFilters","f","type","DashboardReducerActionType","FilterTable","field","operator","value","resetFilters","ResetFilter","_tableFilters$find","updatedFilters","find","emptyComponent","React","createElement","ChartEmptyState","title","subtitle","resetLabel","onReset","chartProps","useCategoricalChartAsListbox","orientation","filterProps","barProps","tabIndex","barRole","role","chartRef","isBarSelected","datum","Array","isArray","key","onBarClick","undefined","isValidElement","cloneElement","arraysEqual","a","b","every","v","i","noop","SCALAR_OPERATORS","Set","FilterableDataCard","propsCategoryDimFilter","syncMode","useMemo","_props$dimension","computedDimension","computedGroup","countsMap","forEach","entry","String","isScalar","has","legend","_newFilters$","dispatchValue","filtersRef","current","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":"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"}
|
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;;;;"}
|