@redsift/dashboard 12.5.3-alpha.5 → 12.5.3-alpha.7

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.
@@ -13,6 +13,12 @@ const CLASSNAME = 'redsift-crossfiltered-dashboard';
13
13
  * and a DataGrid with minimal boilerplate. Under the hood it uses `<Dashboard>`
14
14
  * and `<WithFilters>` to create crossfilter dimensions and two-way filter sync.
15
15
  *
16
+ * Do not reach for `FilterableDataCard`, `FilterableDataGrid`, `FilterableBarChart`,
17
+ * `FilterablePieChart`, or `FilterableScatterPlot` directly — those are internal
18
+ * implementation components used by `<WithFilters>`. Use the sub-components of
19
+ * `CrossfilteredDashboard` (`.Card`, `.Grid`, `.BarChart`, `.PieChart`,
20
+ * `.ScatterPlot`) or compose with `<WithFilters>` directly instead.
21
+ *
16
22
  * @example
17
23
  * ```tsx
18
24
  * <CrossfilteredDashboard data={rows}>
@@ -1 +1 @@
1
- {"version":3,"file":"CrossfilteredDashboard2.js","sources":["../../src/components/CrossfilteredDashboard/CrossfilteredDashboard.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nimport { Comp } from '@redsift/design-system';\nimport { Dashboard } from '../Dashboard';\nimport { WithFilters } from '../WithFilters';\nimport {\n CrossfilteredDashboardProps,\n CrossfilteredCardProps,\n CrossfilteredPieChartProps,\n CrossfilteredBarChartProps,\n CrossfilteredGridProps,\n} from './types';\n\nconst COMPONENT_NAME = 'CrossfilteredDashboard';\nconst CLASSNAME = 'redsift-crossfiltered-dashboard';\n\n/**\n * A compound component that wires up crossfilter-powered DataCards, Charts,\n * and a DataGrid with minimal boilerplate. Under the hood it uses `<Dashboard>`\n * and `<WithFilters>` to create crossfilter dimensions and two-way filter sync.\n *\n * @example\n * ```tsx\n * <CrossfilteredDashboard data={rows}>\n * <CrossfilteredDashboard.Card field=\"Category\" operator=\"isAnyOf\">\n * <DataCard color=\"warning\" isLoading={false}>...</DataCard>\n * </CrossfilteredDashboard.Card>\n * <CrossfilteredDashboard.PieChart field=\"Category\" operator=\"isAnyOf\" isResetable>\n * <PieChart title=\"Category\" size=\"medium\" />\n * </CrossfilteredDashboard.PieChart>\n * <CrossfilteredDashboard.BarChart field=\"Allergens\" operator=\"hasAnyOf\" isDimensionArray isResetable>\n * <BarChart title=\"Allergens\" orientation=\"vertical\" size=\"medium\" />\n * </CrossfilteredDashboard.BarChart>\n * <CrossfilteredDashboard.Grid>\n * <DataGrid columns={columns} />\n * </CrossfilteredDashboard.Grid>\n * </CrossfilteredDashboard>\n * ```\n */\nconst CrossfilteredDashboardBase: Comp<CrossfilteredDashboardProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, data, ...forwardedProps } = props;\n\n return (\n <Dashboard {...forwardedProps} data={data} className={classNames(CLASSNAME, className)} ref={ref}>\n {children}\n </Dashboard>\n );\n});\nCrossfilteredDashboardBase.className = CLASSNAME;\nCrossfilteredDashboardBase.displayName = COMPONENT_NAME;\n\n/**\n * A DataCard slot that auto-wires crossfilter dimension + DataGrid sync.\n */\nconst Card: React.FC<CrossfilteredCardProps> = ({\n field,\n dimension,\n isDimensionArray,\n operator,\n syncMode = 'two-way',\n children,\n}) => (\n <WithFilters\n field={field}\n dimension={dimension ?? ((d: any) => d[field])}\n isDimensionArray={isDimensionArray}\n datagridCategoryDimFilter={{ field, operator }}\n syncMode={syncMode}\n >\n {children}\n </WithFilters>\n);\nCard.displayName = 'CrossfilteredDashboard.Card';\n\n/**\n * A PieChart slot that auto-wires crossfilter dimension + DataGrid sync.\n */\nconst CrossfilteredPieChart: React.FC<CrossfilteredPieChartProps> = ({\n field,\n dimension,\n isDimensionArray,\n operator,\n isResetable,\n children,\n}) => (\n <WithFilters\n dimension={dimension ?? ((d: any) => d[field])}\n isDimensionArray={isDimensionArray}\n datagridCategoryDimFilter={{ field, operator }}\n isResetable={isResetable}\n >\n {children}\n </WithFilters>\n);\nCrossfilteredPieChart.displayName = 'CrossfilteredDashboard.PieChart';\n\n/**\n * A BarChart slot that auto-wires crossfilter dimension + DataGrid sync.\n */\nconst CrossfilteredBarChart: React.FC<CrossfilteredBarChartProps> = ({\n field,\n dimension,\n isDimensionArray,\n operator,\n isResetable,\n children,\n}) => (\n <WithFilters\n dimension={dimension ?? ((d: any) => d[field])}\n isDimensionArray={isDimensionArray}\n datagridCategoryDimFilter={{ field, operator }}\n isResetable={isResetable}\n >\n {children}\n </WithFilters>\n);\nCrossfilteredBarChart.displayName = 'CrossfilteredDashboard.BarChart';\n\n/**\n * A DataGrid slot that auto-wires filter sync from all connected cards/charts.\n */\nconst Grid: React.FC<CrossfilteredGridProps> = ({ children }) => <WithFilters>{children}</WithFilters>;\nGrid.displayName = 'CrossfilteredDashboard.Grid';\n\n/**\n * CrossfilteredDashboard with attached sub-components.\n */\nexport const CrossfilteredDashboard = Object.assign(CrossfilteredDashboardBase, {\n Card,\n PieChart: CrossfilteredPieChart,\n BarChart: CrossfilteredBarChart,\n Grid,\n});\n"],"names":["COMPONENT_NAME","CLASSNAME","CrossfilteredDashboardBase","forwardRef","props","ref","children","className","data","forwardedProps","_objectWithoutProperties","_excluded","React","createElement","Dashboard","_extends","classNames","displayName","Card","_ref","field","dimension","isDimensionArray","operator","syncMode","WithFilters","d","datagridCategoryDimFilter","CrossfilteredPieChart","_ref2","isResetable","CrossfilteredBarChart","_ref3","Grid","_ref4","CrossfilteredDashboard","Object","assign","PieChart","BarChart"],"mappings":"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"}
1
+ {"version":3,"file":"CrossfilteredDashboard2.js","sources":["../../src/components/CrossfilteredDashboard/CrossfilteredDashboard.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nimport { Comp } from '@redsift/design-system';\nimport { Dashboard } from '../Dashboard';\nimport { WithFilters } from '../WithFilters';\nimport {\n CrossfilteredDashboardProps,\n CrossfilteredCardProps,\n CrossfilteredPieChartProps,\n CrossfilteredBarChartProps,\n CrossfilteredGridProps,\n} from './types';\n\nconst COMPONENT_NAME = 'CrossfilteredDashboard';\nconst CLASSNAME = 'redsift-crossfiltered-dashboard';\n\n/**\n * A compound component that wires up crossfilter-powered DataCards, Charts,\n * and a DataGrid with minimal boilerplate. Under the hood it uses `<Dashboard>`\n * and `<WithFilters>` to create crossfilter dimensions and two-way filter sync.\n *\n * Do not reach for `FilterableDataCard`, `FilterableDataGrid`, `FilterableBarChart`,\n * `FilterablePieChart`, or `FilterableScatterPlot` directly — those are internal\n * implementation components used by `<WithFilters>`. Use the sub-components of\n * `CrossfilteredDashboard` (`.Card`, `.Grid`, `.BarChart`, `.PieChart`,\n * `.ScatterPlot`) or compose with `<WithFilters>` directly instead.\n *\n * @example\n * ```tsx\n * <CrossfilteredDashboard data={rows}>\n * <CrossfilteredDashboard.Card field=\"Category\" operator=\"isAnyOf\">\n * <DataCard color=\"warning\" isLoading={false}>...</DataCard>\n * </CrossfilteredDashboard.Card>\n * <CrossfilteredDashboard.PieChart field=\"Category\" operator=\"isAnyOf\" isResetable>\n * <PieChart title=\"Category\" size=\"medium\" />\n * </CrossfilteredDashboard.PieChart>\n * <CrossfilteredDashboard.BarChart field=\"Allergens\" operator=\"hasAnyOf\" isDimensionArray isResetable>\n * <BarChart title=\"Allergens\" orientation=\"vertical\" size=\"medium\" />\n * </CrossfilteredDashboard.BarChart>\n * <CrossfilteredDashboard.Grid>\n * <DataGrid columns={columns} />\n * </CrossfilteredDashboard.Grid>\n * </CrossfilteredDashboard>\n * ```\n */\nconst CrossfilteredDashboardBase: Comp<CrossfilteredDashboardProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, data, ...forwardedProps } = props;\n\n return (\n <Dashboard {...forwardedProps} data={data} className={classNames(CLASSNAME, className)} ref={ref}>\n {children}\n </Dashboard>\n );\n});\nCrossfilteredDashboardBase.className = CLASSNAME;\nCrossfilteredDashboardBase.displayName = COMPONENT_NAME;\n\n/**\n * A DataCard slot that auto-wires crossfilter dimension + DataGrid sync.\n */\nconst Card: React.FC<CrossfilteredCardProps> = ({\n field,\n dimension,\n isDimensionArray,\n operator,\n syncMode = 'two-way',\n children,\n}) => (\n <WithFilters\n field={field}\n dimension={dimension ?? ((d: any) => d[field])}\n isDimensionArray={isDimensionArray}\n datagridCategoryDimFilter={{ field, operator }}\n syncMode={syncMode}\n >\n {children}\n </WithFilters>\n);\nCard.displayName = 'CrossfilteredDashboard.Card';\n\n/**\n * A PieChart slot that auto-wires crossfilter dimension + DataGrid sync.\n */\nconst CrossfilteredPieChart: React.FC<CrossfilteredPieChartProps> = ({\n field,\n dimension,\n isDimensionArray,\n operator,\n isResetable,\n children,\n}) => (\n <WithFilters\n dimension={dimension ?? ((d: any) => d[field])}\n isDimensionArray={isDimensionArray}\n datagridCategoryDimFilter={{ field, operator }}\n isResetable={isResetable}\n >\n {children}\n </WithFilters>\n);\nCrossfilteredPieChart.displayName = 'CrossfilteredDashboard.PieChart';\n\n/**\n * A BarChart slot that auto-wires crossfilter dimension + DataGrid sync.\n */\nconst CrossfilteredBarChart: React.FC<CrossfilteredBarChartProps> = ({\n field,\n dimension,\n isDimensionArray,\n operator,\n isResetable,\n children,\n}) => (\n <WithFilters\n dimension={dimension ?? ((d: any) => d[field])}\n isDimensionArray={isDimensionArray}\n datagridCategoryDimFilter={{ field, operator }}\n isResetable={isResetable}\n >\n {children}\n </WithFilters>\n);\nCrossfilteredBarChart.displayName = 'CrossfilteredDashboard.BarChart';\n\n/**\n * A DataGrid slot that auto-wires filter sync from all connected cards/charts.\n */\nconst Grid: React.FC<CrossfilteredGridProps> = ({ children }) => <WithFilters>{children}</WithFilters>;\nGrid.displayName = 'CrossfilteredDashboard.Grid';\n\n/**\n * CrossfilteredDashboard with attached sub-components.\n */\nexport const CrossfilteredDashboard = Object.assign(CrossfilteredDashboardBase, {\n Card,\n PieChart: CrossfilteredPieChart,\n BarChart: CrossfilteredBarChart,\n Grid,\n});\n"],"names":["COMPONENT_NAME","CLASSNAME","CrossfilteredDashboardBase","forwardRef","props","ref","children","className","data","forwardedProps","_objectWithoutProperties","_excluded","React","createElement","Dashboard","_extends","classNames","displayName","Card","_ref","field","dimension","isDimensionArray","operator","syncMode","WithFilters","d","datagridCategoryDimFilter","CrossfilteredPieChart","_ref2","isResetable","CrossfilteredBarChart","_ref3","Grid","_ref4","CrossfilteredDashboard","Object","assign","PieChart","BarChart"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { _ as _objectWithoutProperties, a as _extends } from './_rollupPluginBabelHelpers.js';
2
2
  import React, { forwardRef } from 'react';
3
3
  import classNames from 'classnames';
4
- import { baseStyling, partitionComponents, isComponent } from '@redsift/design-system';
4
+ import { baseStyling, partitionComponents, isComponent, warnOnNestedSubComponents } from '@redsift/design-system';
5
5
  import styled, { css } from 'styled-components';
6
6
  import { D as DataCardHeader } from './DataCardHeader2.js';
7
7
  import { D as DataCardBody } from './DataCardBody2.js';
@@ -51,6 +51,7 @@ const StyledDataCard = styled.div`
51
51
  const _excluded = ["children", "className", "color", "isLoading"];
52
52
  const COMPONENT_NAME = 'DataCard';
53
53
  const CLASSNAME = 'redsift-data-card';
54
+ const SUB_COMPONENT_NAMES = new Set(['DataCardHeader', 'DataCardBody', 'DataCardListbox']);
54
55
 
55
56
  /**
56
57
  * DataCard is a container for displaying key statistics with a colored border
@@ -60,6 +61,10 @@ const CLASSNAME = 'redsift-data-card';
60
61
  * Body is used for static or link-based DataRow children.
61
62
  * Listbox is used for DataRow children with filter interactions.
62
63
  *
64
+ * **Important:** Sub-components (`DataCard.Header`, `DataCard.Body`, `DataCard.Listbox`)
65
+ * must be direct children of `<DataCard>`. Do not nest them inside each other —
66
+ * e.g. placing `<DataCard.Listbox>` inside `<DataCard.Body>` will break the layout.
67
+ *
63
68
  * @example
64
69
  * // Basic data card with static rows
65
70
  * <DataCard color="info" isLoading={false}>
@@ -98,6 +103,17 @@ const BaseDataCard = /*#__PURE__*/forwardRef((props, ref) => {
98
103
  } = props,
99
104
  forwardedProps = _objectWithoutProperties(props, _excluded);
100
105
  const [[header], [body], [listbox]] = partitionComponents(React.Children.toArray(children), [isComponent('DataCardHeader'), isComponent('DataCardBody'), isComponent('DataCardListbox')]);
106
+ if (process.env.NODE_ENV !== 'production') {
107
+ // Warn if sub-components are nested inside each other instead of being direct children
108
+ React.Children.forEach(children, child => {
109
+ var _child$type;
110
+ if (! /*#__PURE__*/React.isValidElement(child)) return;
111
+ const displayName = (_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName;
112
+ if (displayName === 'DataCardBody' || displayName === 'DataCardListbox') {
113
+ warnOnNestedSubComponents(child.props.children, 'DataCard', displayName, SUB_COMPONENT_NAMES);
114
+ }
115
+ });
116
+ }
101
117
  return /*#__PURE__*/React.createElement(StyledDataCard, _extends({}, forwardedProps, {
102
118
  $color: color,
103
119
  $isLoading: isLoading,
@@ -1 +1 @@
1
- {"version":3,"file":"DataCard2.js","sources":["../../src/components/DataCard/types.ts","../../src/components/DataCard/styles.ts","../../src/components/DataCard/DataCard.tsx"],"sourcesContent":["import { ComponentProps } from 'react';\nimport { StylingProps, StylingTransientProps, ValueOf } from '@redsift/design-system';\n\n/**\n * DataCard color variant.\n */\nexport const DataCardColor = {\n error: 'error',\n success: 'success',\n warning: 'warning',\n info: 'info',\n} as const;\nexport type DataCardColor = ValueOf<typeof DataCardColor>;\n\n/**\n * DataCard component props.\n */\nexport interface DataCardProps extends ComponentProps<'div'>, StylingProps {\n /**\n * Color variant for the card border.\n * Maps to notification color tokens.\n * @default 'info'\n */\n color?: DataCardColor;\n /** Whether the card is in a loading state. When true, the header is hidden. */\n isLoading?: boolean;\n}\n\nexport type StyledDataCardProps = Omit<DataCardProps, 'color' | 'isLoading'> &\n StylingTransientProps & {\n $color: DataCardProps['color'];\n $isLoading: DataCardProps['isLoading'];\n };\n","import styled, { css } from 'styled-components';\nimport { baseStyling } from '@redsift/design-system';\nimport { StyledDataCardProps } from './types';\n\n/**\n * DataCard style.\n */\nexport const StyledDataCard = styled.div<StyledDataCardProps>`\n ${baseStyling}\n\n display: flex;\n flex-direction: column;\n gap: 0;\n border-radius: 8px;\n margin: 8px 6px;\n\n ${({ $color, $isLoading }) =>\n $isLoading\n ? css`\n border: 2px solid var(--redsift-color-neutral-light-grey);\n padding-top: 22px;\n `\n : css`\n border: 2px solid var(--redsift-color-notifications-${$color}-primary);\n min-width: 175px;\n `}\n`;\n","import React, { forwardRef, RefObject } from 'react';\nimport classNames from 'classnames';\nimport { Comp, partitionComponents, isComponent } from '@redsift/design-system';\nimport { StyledDataCard } from './styles';\nimport { DataCardProps } from './types';\nimport { DataCardHeader } from '../DataCardHeader';\nimport { DataCardBody } from '../DataCardBody';\nimport { DataCardListbox } from '../DataCardListbox';\n\nconst COMPONENT_NAME = 'DataCard';\nconst CLASSNAME = 'redsift-data-card';\n\n/**\n * DataCard is a container for displaying key statistics with a colored border\n * and a floating header label. It accepts DataCard.Header, DataCard.Body,\n * and DataCard.Listbox as children.\n *\n * Body is used for static or link-based DataRow children.\n * Listbox is used for DataRow children with filter interactions.\n *\n * @example\n * // Basic data card with static rows\n * <DataCard color=\"info\" isLoading={false}>\n * <DataCard.Header icon={mdiShieldCheck} title=\"My Certificates\" />\n * <DataCard.Body>\n * <DataRow value={42} legend=\"Total\" size=\"large\" />\n * <DataRow value={38} legend=\"Active\" size=\"medium\" />\n * </DataCard.Body>\n * </DataCard>\n *\n * @example\n * // Loading state\n * <DataCard color=\"error\" isLoading>\n * <DataCard.Header icon={mdiAlertCircle} title=\"Expired\" />\n * <DataCard.Body>\n * <DataRow value={0} legend=\"Expired\" size=\"large\" isLoading />\n * </DataCard.Body>\n * </DataCard>\n *\n * @example\n * // Drilldown card with filter items\n * <DataCard color=\"warning\" isLoading={false}>\n * <DataCard.Header icon={mdiCalendarClock} title=\"Expiring Soon\" />\n * <DataCard.Body>\n * <DataRow value={5} legend=\"Critical\" size=\"small\" onClick={handleFilter} hasFilterIcon />\n * <DataRow value={12} legend=\"Due\" size=\"small\" onClick={handleFilter} hasFilterIcon />\n * </DataCard.Body>\n * </DataCard>\n */\nconst BaseDataCard: Comp<DataCardProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, color = 'info', isLoading = false, ...forwardedProps } = props;\n\n const [[header], [body], [listbox]] = partitionComponents(React.Children.toArray(children), [\n isComponent('DataCardHeader'),\n isComponent('DataCardBody'),\n isComponent('DataCardListbox'),\n ]);\n\n return (\n <StyledDataCard\n {...forwardedProps}\n $color={color}\n $isLoading={isLoading}\n className={classNames(BaseDataCard.className, className)}\n ref={ref as RefObject<HTMLDivElement>}\n >\n {!isLoading ? header : null}\n {body}\n {listbox}\n </StyledDataCard>\n );\n});\nBaseDataCard.className = CLASSNAME;\nBaseDataCard.displayName = COMPONENT_NAME;\n\nexport const DataCard = Object.assign(BaseDataCard, {\n Header: DataCardHeader,\n Body: DataCardBody,\n Listbox: DataCardListbox,\n});\n"],"names":["DataCardColor","error","success","warning","info","StyledDataCard","styled","div","baseStyling","_ref","$color","$isLoading","css","COMPONENT_NAME","CLASSNAME","BaseDataCard","forwardRef","props","ref","children","className","color","isLoading","forwardedProps","_objectWithoutProperties","_excluded","header","body","listbox","partitionComponents","React","Children","toArray","isComponent","createElement","_extends","classNames","displayName","DataCard","Object","assign","Header","DataCardHeader","Body","DataCardBody","Listbox","DataCardListbox"],"mappings":";;;;;;;;;AAGA;AACA;AACA;AACO,MAAMA,aAAa,GAAG;AAC3BC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,IAAI,EAAE,MAAA;AACR,EAAU;;AAGV;AACA;AACA;;ACZA;AACA;AACA;AACaC,MAAAA,cAAc,GAAGC,MAAM,CAACC,GAAyB,CAAA;AAC9D,EAAA,EAAIC,WAAY,CAAA;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,EAAIC,IAAA,IAAA;EAAA,IAAC;IAAEC,MAAM;AAAEC,IAAAA,UAAAA;AAAW,GAAC,GAAAF,IAAA,CAAA;EAAA,OACvBE,UAAU,GACNC,GAAI,CAAA;AACZ;AACA;AACA,QAAA,CAAS,GACDA,GAAI,CAAA;AACZ,8DAAA,EAAgEF,MAAO,CAAA;AACvE;AACA,QAAS,CAAA,CAAA;AAAA,CAAC,CAAA;AACV;;;ACjBA,MAAMG,cAAc,GAAG,UAAU,CAAA;AACjC,MAAMC,SAAS,GAAG,mBAAmB,CAAA;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,YAAiD,gBAAGC,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACnF,MAAM;MAAEC,QAAQ;MAAEC,SAAS;AAAEC,MAAAA,KAAK,GAAG,MAAM;AAAEC,MAAAA,SAAS,GAAG,KAAA;AAAyB,KAAC,GAAGL,KAAK;AAAxBM,IAAAA,cAAc,GAAAC,wBAAA,CAAKP,KAAK,EAAAQ,SAAA,CAAA,CAAA;AAE3F,EAAA,MAAM,CAAC,CAACC,MAAM,CAAC,EAAE,CAACC,IAAI,CAAC,EAAE,CAACC,OAAO,CAAC,CAAC,GAAGC,mBAAmB,CAACC,KAAK,CAACC,QAAQ,CAACC,OAAO,CAACb,QAAQ,CAAC,EAAE,CAC1Fc,WAAW,CAAC,gBAAgB,CAAC,EAC7BA,WAAW,CAAC,cAAc,CAAC,EAC3BA,WAAW,CAAC,iBAAiB,CAAC,CAC/B,CAAC,CAAA;EAEF,oBACEH,KAAA,CAAAI,aAAA,CAAC7B,cAAc,EAAA8B,QAAA,KACTZ,cAAc,EAAA;AAClBb,IAAAA,MAAM,EAAEW,KAAM;AACdV,IAAAA,UAAU,EAAEW,SAAU;IACtBF,SAAS,EAAEgB,UAAU,CAACrB,YAAY,CAACK,SAAS,EAAEA,SAAS,CAAE;AACzDF,IAAAA,GAAG,EAAEA,GAAAA;GAEJ,CAAA,EAAA,CAACI,SAAS,GAAGI,MAAM,GAAG,IAAI,EAC1BC,IAAI,EACJC,OACa,CAAC,CAAA;AAErB,CAAC,CAAC,CAAA;AACFb,YAAY,CAACK,SAAS,GAAGN,SAAS,CAAA;AAClCC,YAAY,CAACsB,WAAW,GAAGxB,cAAc,CAAA;AAElC,MAAMyB,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAACzB,YAAY,EAAE;AAClD0B,EAAAA,MAAM,EAAEC,cAAc;AACtBC,EAAAA,IAAI,EAAEC,YAAY;AAClBC,EAAAA,OAAO,EAAEC,eAAAA;AACX,CAAC;;;;"}
1
+ {"version":3,"file":"DataCard2.js","sources":["../../src/components/DataCard/types.ts","../../src/components/DataCard/styles.ts","../../src/components/DataCard/DataCard.tsx"],"sourcesContent":["import { ComponentProps } from 'react';\nimport { StylingProps, StylingTransientProps, ValueOf } from '@redsift/design-system';\n\n/**\n * DataCard color variant.\n */\nexport const DataCardColor = {\n error: 'error',\n success: 'success',\n warning: 'warning',\n info: 'info',\n} as const;\nexport type DataCardColor = ValueOf<typeof DataCardColor>;\n\n/**\n * DataCard component props.\n */\nexport interface DataCardProps extends ComponentProps<'div'>, StylingProps {\n /**\n * Color variant for the card border.\n * Maps to notification color tokens.\n * @default 'info'\n */\n color?: DataCardColor;\n /** Whether the card is in a loading state. When true, the header is hidden. */\n isLoading?: boolean;\n}\n\nexport type StyledDataCardProps = Omit<DataCardProps, 'color' | 'isLoading'> &\n StylingTransientProps & {\n $color: DataCardProps['color'];\n $isLoading: DataCardProps['isLoading'];\n };\n","import styled, { css } from 'styled-components';\nimport { baseStyling } from '@redsift/design-system';\nimport { StyledDataCardProps } from './types';\n\n/**\n * DataCard style.\n */\nexport const StyledDataCard = styled.div<StyledDataCardProps>`\n ${baseStyling}\n\n display: flex;\n flex-direction: column;\n gap: 0;\n border-radius: 8px;\n margin: 8px 6px;\n\n ${({ $color, $isLoading }) =>\n $isLoading\n ? css`\n border: 2px solid var(--redsift-color-neutral-light-grey);\n padding-top: 22px;\n `\n : css`\n border: 2px solid var(--redsift-color-notifications-${$color}-primary);\n min-width: 175px;\n `}\n`;\n","import React, { forwardRef, RefObject } from 'react';\nimport classNames from 'classnames';\nimport { Comp, partitionComponents, isComponent, warnOnNestedSubComponents } from '@redsift/design-system';\nimport { StyledDataCard } from './styles';\nimport { DataCardProps } from './types';\nimport { DataCardHeader } from '../DataCardHeader';\nimport { DataCardBody } from '../DataCardBody';\nimport { DataCardListbox } from '../DataCardListbox';\n\nconst COMPONENT_NAME = 'DataCard';\nconst CLASSNAME = 'redsift-data-card';\n\nconst SUB_COMPONENT_NAMES = new Set(['DataCardHeader', 'DataCardBody', 'DataCardListbox']);\n\n/**\n * DataCard is a container for displaying key statistics with a colored border\n * and a floating header label. It accepts DataCard.Header, DataCard.Body,\n * and DataCard.Listbox as children.\n *\n * Body is used for static or link-based DataRow children.\n * Listbox is used for DataRow children with filter interactions.\n *\n * **Important:** Sub-components (`DataCard.Header`, `DataCard.Body`, `DataCard.Listbox`)\n * must be direct children of `<DataCard>`. Do not nest them inside each other —\n * e.g. placing `<DataCard.Listbox>` inside `<DataCard.Body>` will break the layout.\n *\n * @example\n * // Basic data card with static rows\n * <DataCard color=\"info\" isLoading={false}>\n * <DataCard.Header icon={mdiShieldCheck} title=\"My Certificates\" />\n * <DataCard.Body>\n * <DataRow value={42} legend=\"Total\" size=\"large\" />\n * <DataRow value={38} legend=\"Active\" size=\"medium\" />\n * </DataCard.Body>\n * </DataCard>\n *\n * @example\n * // Loading state\n * <DataCard color=\"error\" isLoading>\n * <DataCard.Header icon={mdiAlertCircle} title=\"Expired\" />\n * <DataCard.Body>\n * <DataRow value={0} legend=\"Expired\" size=\"large\" isLoading />\n * </DataCard.Body>\n * </DataCard>\n *\n * @example\n * // Drilldown card with filter items\n * <DataCard color=\"warning\" isLoading={false}>\n * <DataCard.Header icon={mdiCalendarClock} title=\"Expiring Soon\" />\n * <DataCard.Body>\n * <DataRow value={5} legend=\"Critical\" size=\"small\" onClick={handleFilter} hasFilterIcon />\n * <DataRow value={12} legend=\"Due\" size=\"small\" onClick={handleFilter} hasFilterIcon />\n * </DataCard.Body>\n * </DataCard>\n */\nconst BaseDataCard: Comp<DataCardProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, color = 'info', isLoading = false, ...forwardedProps } = props;\n\n const [[header], [body], [listbox]] = partitionComponents(React.Children.toArray(children), [\n isComponent('DataCardHeader'),\n isComponent('DataCardBody'),\n isComponent('DataCardListbox'),\n ]);\n\n if (process.env.NODE_ENV !== 'production') {\n // Warn if sub-components are nested inside each other instead of being direct children\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const displayName = (child.type as any)?.displayName;\n if (displayName === 'DataCardBody' || displayName === 'DataCardListbox') {\n warnOnNestedSubComponents((child.props as any).children, 'DataCard', displayName, SUB_COMPONENT_NAMES);\n }\n });\n }\n\n return (\n <StyledDataCard\n {...forwardedProps}\n $color={color}\n $isLoading={isLoading}\n className={classNames(BaseDataCard.className, className)}\n ref={ref as RefObject<HTMLDivElement>}\n >\n {!isLoading ? header : null}\n {body}\n {listbox}\n </StyledDataCard>\n );\n});\nBaseDataCard.className = CLASSNAME;\nBaseDataCard.displayName = COMPONENT_NAME;\n\nexport const DataCard = Object.assign(BaseDataCard, {\n Header: DataCardHeader,\n Body: DataCardBody,\n Listbox: DataCardListbox,\n});\n"],"names":["DataCardColor","error","success","warning","info","StyledDataCard","styled","div","baseStyling","_ref","$color","$isLoading","css","COMPONENT_NAME","CLASSNAME","SUB_COMPONENT_NAMES","Set","BaseDataCard","forwardRef","props","ref","children","className","color","isLoading","forwardedProps","_objectWithoutProperties","_excluded","header","body","listbox","partitionComponents","React","Children","toArray","isComponent","process","env","NODE_ENV","forEach","child","_child$type","isValidElement","displayName","type","warnOnNestedSubComponents","createElement","_extends","classNames","DataCard","Object","assign","Header","DataCardHeader","Body","DataCardBody","Listbox","DataCardListbox"],"mappings":";;;;;;;;;AAGA;AACA;AACA;AACO,MAAMA,aAAa,GAAG;AAC3BC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,IAAI,EAAE,MAAA;AACR,EAAU;;AAGV;AACA;AACA;;ACZA;AACA;AACA;AACaC,MAAAA,cAAc,GAAGC,MAAM,CAACC,GAAyB,CAAA;AAC9D,EAAA,EAAIC,WAAY,CAAA;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,EAAIC,IAAA,IAAA;EAAA,IAAC;IAAEC,MAAM;AAAEC,IAAAA,UAAAA;AAAW,GAAC,GAAAF,IAAA,CAAA;EAAA,OACvBE,UAAU,GACNC,GAAI,CAAA;AACZ;AACA;AACA,QAAA,CAAS,GACDA,GAAI,CAAA;AACZ,8DAAA,EAAgEF,MAAO,CAAA;AACvE;AACA,QAAS,CAAA,CAAA;AAAA,CAAC,CAAA;AACV;;;ACjBA,MAAMG,cAAc,GAAG,UAAU,CAAA;AACjC,MAAMC,SAAS,GAAG,mBAAmB,CAAA;AAErC,MAAMC,mBAAmB,GAAG,IAAIC,GAAG,CAAC,CAAC,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAA;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,YAAiD,gBAAGC,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;EACnF,MAAM;MAAEC,QAAQ;MAAEC,SAAS;AAAEC,MAAAA,KAAK,GAAG,MAAM;AAAEC,MAAAA,SAAS,GAAG,KAAA;AAAyB,KAAC,GAAGL,KAAK;AAAxBM,IAAAA,cAAc,GAAAC,wBAAA,CAAKP,KAAK,EAAAQ,SAAA,CAAA,CAAA;AAE3F,EAAA,MAAM,CAAC,CAACC,MAAM,CAAC,EAAE,CAACC,IAAI,CAAC,EAAE,CAACC,OAAO,CAAC,CAAC,GAAGC,mBAAmB,CAACC,KAAK,CAACC,QAAQ,CAACC,OAAO,CAACb,QAAQ,CAAC,EAAE,CAC1Fc,WAAW,CAAC,gBAAgB,CAAC,EAC7BA,WAAW,CAAC,cAAc,CAAC,EAC3BA,WAAW,CAAC,iBAAiB,CAAC,CAC/B,CAAC,CAAA;AAEF,EAAA,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;AACzC;IACAN,KAAK,CAACC,QAAQ,CAACM,OAAO,CAAClB,QAAQ,EAAGmB,KAAK,IAAK;AAAA,MAAA,IAAAC,WAAA,CAAA;AAC1C,MAAA,IAAI,eAACT,KAAK,CAACU,cAAc,CAACF,KAAK,CAAC,EAAE,OAAA;AAClC,MAAA,MAAMG,WAAW,GAAA,CAAAF,WAAA,GAAID,KAAK,CAACI,IAAI,MAAA,IAAA,IAAAH,WAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAXA,WAAA,CAAqBE,WAAW,CAAA;AACpD,MAAA,IAAIA,WAAW,KAAK,cAAc,IAAIA,WAAW,KAAK,iBAAiB,EAAE;AACvEE,QAAAA,yBAAyB,CAAEL,KAAK,CAACrB,KAAK,CAASE,QAAQ,EAAE,UAAU,EAAEsB,WAAW,EAAE5B,mBAAmB,CAAC,CAAA;AACxG,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;EAEA,oBACEiB,KAAA,CAAAc,aAAA,CAACzC,cAAc,EAAA0C,QAAA,KACTtB,cAAc,EAAA;AAClBf,IAAAA,MAAM,EAAEa,KAAM;AACdZ,IAAAA,UAAU,EAAEa,SAAU;IACtBF,SAAS,EAAE0B,UAAU,CAAC/B,YAAY,CAACK,SAAS,EAAEA,SAAS,CAAE;AACzDF,IAAAA,GAAG,EAAEA,GAAAA;GAEJ,CAAA,EAAA,CAACI,SAAS,GAAGI,MAAM,GAAG,IAAI,EAC1BC,IAAI,EACJC,OACa,CAAC,CAAA;AAErB,CAAC,CAAC,CAAA;AACFb,YAAY,CAACK,SAAS,GAAGR,SAAS,CAAA;AAClCG,YAAY,CAAC0B,WAAW,GAAG9B,cAAc,CAAA;AAElC,MAAMoC,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAAClC,YAAY,EAAE;AAClDmC,EAAAA,MAAM,EAAEC,cAAc;AACtBC,EAAAA,IAAI,EAAEC,YAAY;AAClBC,EAAAA,OAAO,EAAEC,eAAAA;AACX,CAAC;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { _ as _objectWithoutProperties, a as _extends, b as _objectSpread2 } from './_rollupPluginBabelHelpers.js';
2
2
  import React, { forwardRef, useState, useRef, useMemo, useCallback, useContext, createContext } from 'react';
3
3
  import classNames from 'classnames';
4
+ import { warnOnMissingContext } from '@redsift/design-system';
4
5
 
5
6
  const _excluded = ["children", "className", "data", "computeAggregates"];
6
7
  const COMPONENT_NAME = 'DrilldownDashboard';
@@ -140,6 +141,9 @@ const Card = _ref => {
140
141
  children
141
142
  } = _ref;
142
143
  const ctx = useContext(DrilldownContext);
144
+ if (process.env.NODE_ENV !== 'production') {
145
+ warnOnMissingContext(ctx, 'DrilldownDashboard.Card', 'DrilldownDashboard');
146
+ }
143
147
  const fieldAggregates = (_ctx$aggregates$field = ctx.aggregates[field]) !== null && _ctx$aggregates$field !== void 0 ? _ctx$aggregates$field : {};
144
148
  const selection = ctx.getSelectedFromFilterModel(field);
145
149
  const isDisabled = ctx.hasFilterForField(field) && !ctx.cardControlledFields.current.has(field);
@@ -169,6 +173,9 @@ const Grid = _ref2 => {
169
173
  children
170
174
  } = _ref2;
171
175
  const ctx = useContext(DrilldownContext);
176
+ if (process.env.NODE_ENV !== 'production') {
177
+ warnOnMissingContext(ctx, 'DrilldownDashboard.Grid', 'DrilldownDashboard');
178
+ }
172
179
  const handleFilterModelChange = useCallback(model => {
173
180
  if (ctx.isInternalUpdate.current) {
174
181
  ctx.isInternalUpdate.current = false;
@@ -1 +1 @@
1
- {"version":3,"file":"DrilldownDashboard2.js","sources":["../../src/components/DrilldownDashboard/DrilldownDashboard.tsx"],"sourcesContent":["import React, { createContext, forwardRef, useCallback, useContext, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Comp } from '@redsift/design-system';\nimport { GridFilterModel } from '@mui/x-data-grid-premium';\nimport { DrilldownDashboardProps, DrilldownCardProps, DrilldownGridProps, AggregateMap } from './types';\n\nconst COMPONENT_NAME = 'DrilldownDashboard';\nconst CLASSNAME = 'redsift-drilldown-dashboard';\n\n// ---------------------------------------------------------------------------\n// Internal context\n// ---------------------------------------------------------------------------\n\ninterface DrilldownContextValue {\n aggregates: Record<string, AggregateMap>;\n filterModel: GridFilterModel;\n setFilterModel: React.Dispatch<React.SetStateAction<GridFilterModel>>;\n cardControlledFields: React.MutableRefObject<Set<string>>;\n isInternalUpdate: React.MutableRefObject<boolean>;\n getSelectedFromFilterModel: (field: string) => string[];\n updateFilterModel: (field: string, values: string[], operator?: string) => void;\n hasFilterForField: (field: string) => boolean;\n}\n\nconst DrilldownContext = createContext<DrilldownContextValue>(null as any);\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nconst getSelectedFromModel = (model: GridFilterModel, field: string): string[] => {\n const item = model.items.find((i) => i.field === field);\n if (!item) return [];\n const val = item.value;\n if (val == null) return [];\n return Array.isArray(val) ? val : [String(val)];\n};\n\nconst updateModel = (prev: GridFilterModel, field: string, values: string[], operator = 'isAnyOf'): GridFilterModel => {\n if (values.length === 0) {\n return { ...prev, items: prev.items.filter((i) => i.field !== field) };\n }\n const existing = prev.items.find((i) => i.field === field);\n if (existing) {\n return {\n ...prev,\n items: prev.items.map((i) => (i.field === field ? { ...i, value: values, operator } : i)),\n };\n }\n return { ...prev, items: [...prev.items, { field, operator, value: values }] };\n};\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\n/**\n * A compound component for the \"drilldown\" dashboard pattern.\n *\n * Unlike CrossfilteredDashboard, DataCards always show full-dataset aggregates\n * (no crossfiltering between cards). Clicking a card row applies a filter to\n * the DataGrid. If the DataGrid's filter panel sets a filter for a field,\n * the corresponding card is disabled.\n *\n * @example\n * ```tsx\n * <DrilldownDashboard data={rows} computeAggregates={computeAggregates}>\n * <DrilldownDashboard.Card field=\"Category\">\n * <DataCard color=\"warning\">\n * <DataCard.Header title=\"Category\" />\n * <DataCard.Listbox selectionMode=\"multiple\" aria-label=\"Filter by category\">\n * <DataRow legend=\"Bakery\" />\n * <DataRow legend=\"Beverage\" />\n * </DataCard.Listbox>\n * </DataCard>\n * </DrilldownDashboard.Card>\n * <DrilldownDashboard.Grid>\n * <DataGrid columns={columns} />\n * </DrilldownDashboard.Grid>\n * </DrilldownDashboard>\n * ```\n */\nconst DrilldownDashboardBase: Comp<DrilldownDashboardProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, data, computeAggregates: computeAggregatesFn, ...forwardedProps } = props;\n\n const [filterModel, setFilterModel] = useState<GridFilterModel>({ items: [] });\n const cardControlledFields = useRef(new Set<string>());\n const isInternalUpdate = useRef(false);\n\n const aggregates = useMemo(() => computeAggregatesFn(data), [data, computeAggregatesFn]);\n\n const getSelectedFromFilterModel = useCallback(\n (field: string) => getSelectedFromModel(filterModel, field),\n [filterModel]\n );\n\n const updateFilterModelFn = useCallback((field: string, values: string[], operator?: string) => {\n isInternalUpdate.current = true;\n cardControlledFields.current.add(field);\n setFilterModel((prev) => {\n const updated = updateModel(prev, field, values, operator);\n if (JSON.stringify(prev.items) === JSON.stringify(updated.items)) return prev;\n return updated;\n });\n }, []);\n\n const hasFilterForField = useCallback(\n (field: string) => filterModel.items.some((item) => item.field === field),\n [filterModel]\n );\n\n const contextValue = useMemo<DrilldownContextValue>(\n () => ({\n aggregates,\n filterModel,\n setFilterModel,\n cardControlledFields,\n isInternalUpdate,\n getSelectedFromFilterModel,\n updateFilterModel: updateFilterModelFn,\n hasFilterForField,\n }),\n [aggregates, filterModel, getSelectedFromFilterModel, updateFilterModelFn, hasFilterForField]\n );\n\n return (\n <DrilldownContext.Provider value={contextValue}>\n <div {...forwardedProps} className={classNames(CLASSNAME, className)} ref={ref}>\n {children}\n </div>\n </DrilldownContext.Provider>\n );\n});\nDrilldownDashboardBase.className = CLASSNAME;\nDrilldownDashboardBase.displayName = COMPONENT_NAME;\n\n// ---------------------------------------------------------------------------\n// Sub-components\n// ---------------------------------------------------------------------------\n\n/**\n * A DataCard slot in a DrilldownDashboard. Reads aggregates from context\n * and wires up selection state and filter model sync.\n *\n * The card renders its children with injected aggregate values and selection state.\n * When the DataGrid's filter panel controls the same field, the card is disabled.\n */\nconst Card: React.FC<DrilldownCardProps> = ({ field, children }) => {\n const ctx = useContext(DrilldownContext);\n const fieldAggregates = ctx.aggregates[field] ?? {};\n const selection = ctx.getSelectedFromFilterModel(field);\n const isDisabled = ctx.hasFilterForField(field) && !ctx.cardControlledFields.current.has(field);\n\n const handleChange = useCallback(\n (newValues: string[]) => {\n ctx.updateFilterModel(field, newValues);\n },\n [ctx, field]\n );\n\n // Clone the DataCard children and inject aggregate values + selection state\n if (!React.isValidElement(children)) return null;\n\n return React.cloneElement(children as React.ReactElement<any>, {\n _drilldown: { fieldAggregates, selection, isDisabled, onChange: handleChange },\n });\n};\nCard.displayName = 'DrilldownDashboard.Card';\n\n/**\n * A DataGrid slot in a DrilldownDashboard. Reads filterModel from context\n * and syncs changes back.\n */\nconst Grid: React.FC<DrilldownGridProps> = ({ children }) => {\n const ctx = useContext(DrilldownContext);\n\n const handleFilterModelChange = useCallback(\n (model: GridFilterModel) => {\n if (ctx.isInternalUpdate.current) {\n ctx.isInternalUpdate.current = false;\n ctx.setFilterModel((prev) => {\n if (JSON.stringify(prev.items) === JSON.stringify(model.items)) return prev;\n return model;\n });\n return;\n }\n const panelFields = new Set(model.items.map((item) => item.field));\n for (const f of panelFields) {\n ctx.cardControlledFields.current.delete(f);\n }\n for (const f of ctx.cardControlledFields.current) {\n if (!panelFields.has(f)) {\n ctx.cardControlledFields.current.delete(f);\n }\n }\n ctx.setFilterModel((prev) => {\n if (JSON.stringify(prev.items) === JSON.stringify(model.items)) return prev;\n return model;\n });\n },\n [ctx]\n );\n\n if (!React.isValidElement(children)) return null;\n\n return React.cloneElement(children as React.ReactElement<any>, {\n filterModel: ctx.filterModel,\n onFilterModelChange: handleFilterModelChange,\n });\n};\nGrid.displayName = 'DrilldownDashboard.Grid';\n\n/**\n * DrilldownDashboard with attached sub-components.\n */\nexport const DrilldownDashboard = Object.assign(DrilldownDashboardBase, {\n Card,\n Grid,\n});\n"],"names":["COMPONENT_NAME","CLASSNAME","DrilldownContext","createContext","getSelectedFromModel","model","field","item","items","find","i","val","value","Array","isArray","String","updateModel","prev","values","operator","arguments","length","undefined","_objectSpread","filter","existing","map","DrilldownDashboardBase","forwardRef","props","ref","children","className","data","computeAggregates","computeAggregatesFn","forwardedProps","_objectWithoutProperties","_excluded","filterModel","setFilterModel","useState","cardControlledFields","useRef","Set","isInternalUpdate","aggregates","useMemo","getSelectedFromFilterModel","useCallback","updateFilterModelFn","current","add","updated","JSON","stringify","hasFilterForField","some","contextValue","updateFilterModel","React","createElement","Provider","_extends","classNames","displayName","Card","_ref","_ctx$aggregates$field","ctx","useContext","fieldAggregates","selection","isDisabled","has","handleChange","newValues","isValidElement","cloneElement","_drilldown","onChange","Grid","_ref2","handleFilterModelChange","panelFields","f","delete","onFilterModelChange","DrilldownDashboard","Object","assign"],"mappings":"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"}
1
+ {"version":3,"file":"DrilldownDashboard2.js","sources":["../../src/components/DrilldownDashboard/DrilldownDashboard.tsx"],"sourcesContent":["import React, { createContext, forwardRef, useCallback, useContext, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Comp, warnOnMissingContext } from '@redsift/design-system';\nimport { GridFilterModel } from '@mui/x-data-grid-premium';\nimport { DrilldownDashboardProps, DrilldownCardProps, DrilldownGridProps, AggregateMap } from './types';\n\nconst COMPONENT_NAME = 'DrilldownDashboard';\nconst CLASSNAME = 'redsift-drilldown-dashboard';\n\n// ---------------------------------------------------------------------------\n// Internal context\n// ---------------------------------------------------------------------------\n\ninterface DrilldownContextValue {\n aggregates: Record<string, AggregateMap>;\n filterModel: GridFilterModel;\n setFilterModel: React.Dispatch<React.SetStateAction<GridFilterModel>>;\n cardControlledFields: React.MutableRefObject<Set<string>>;\n isInternalUpdate: React.MutableRefObject<boolean>;\n getSelectedFromFilterModel: (field: string) => string[];\n updateFilterModel: (field: string, values: string[], operator?: string) => void;\n hasFilterForField: (field: string) => boolean;\n}\n\nconst DrilldownContext = createContext<DrilldownContextValue>(null as any);\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nconst getSelectedFromModel = (model: GridFilterModel, field: string): string[] => {\n const item = model.items.find((i) => i.field === field);\n if (!item) return [];\n const val = item.value;\n if (val == null) return [];\n return Array.isArray(val) ? val : [String(val)];\n};\n\nconst updateModel = (prev: GridFilterModel, field: string, values: string[], operator = 'isAnyOf'): GridFilterModel => {\n if (values.length === 0) {\n return { ...prev, items: prev.items.filter((i) => i.field !== field) };\n }\n const existing = prev.items.find((i) => i.field === field);\n if (existing) {\n return {\n ...prev,\n items: prev.items.map((i) => (i.field === field ? { ...i, value: values, operator } : i)),\n };\n }\n return { ...prev, items: [...prev.items, { field, operator, value: values }] };\n};\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\n/**\n * A compound component for the \"drilldown\" dashboard pattern.\n *\n * Unlike CrossfilteredDashboard, DataCards always show full-dataset aggregates\n * (no crossfiltering between cards). Clicking a card row applies a filter to\n * the DataGrid. If the DataGrid's filter panel sets a filter for a field,\n * the corresponding card is disabled.\n *\n * @example\n * ```tsx\n * <DrilldownDashboard data={rows} computeAggregates={computeAggregates}>\n * <DrilldownDashboard.Card field=\"Category\">\n * <DataCard color=\"warning\">\n * <DataCard.Header title=\"Category\" />\n * <DataCard.Listbox selectionMode=\"multiple\" aria-label=\"Filter by category\">\n * <DataRow legend=\"Bakery\" />\n * <DataRow legend=\"Beverage\" />\n * </DataCard.Listbox>\n * </DataCard>\n * </DrilldownDashboard.Card>\n * <DrilldownDashboard.Grid>\n * <DataGrid columns={columns} />\n * </DrilldownDashboard.Grid>\n * </DrilldownDashboard>\n * ```\n */\nconst DrilldownDashboardBase: Comp<DrilldownDashboardProps, HTMLDivElement> = forwardRef((props, ref) => {\n const { children, className, data, computeAggregates: computeAggregatesFn, ...forwardedProps } = props;\n\n const [filterModel, setFilterModel] = useState<GridFilterModel>({ items: [] });\n const cardControlledFields = useRef(new Set<string>());\n const isInternalUpdate = useRef(false);\n\n const aggregates = useMemo(() => computeAggregatesFn(data), [data, computeAggregatesFn]);\n\n const getSelectedFromFilterModel = useCallback(\n (field: string) => getSelectedFromModel(filterModel, field),\n [filterModel]\n );\n\n const updateFilterModelFn = useCallback((field: string, values: string[], operator?: string) => {\n isInternalUpdate.current = true;\n cardControlledFields.current.add(field);\n setFilterModel((prev) => {\n const updated = updateModel(prev, field, values, operator);\n if (JSON.stringify(prev.items) === JSON.stringify(updated.items)) return prev;\n return updated;\n });\n }, []);\n\n const hasFilterForField = useCallback(\n (field: string) => filterModel.items.some((item) => item.field === field),\n [filterModel]\n );\n\n const contextValue = useMemo<DrilldownContextValue>(\n () => ({\n aggregates,\n filterModel,\n setFilterModel,\n cardControlledFields,\n isInternalUpdate,\n getSelectedFromFilterModel,\n updateFilterModel: updateFilterModelFn,\n hasFilterForField,\n }),\n [aggregates, filterModel, getSelectedFromFilterModel, updateFilterModelFn, hasFilterForField]\n );\n\n return (\n <DrilldownContext.Provider value={contextValue}>\n <div {...forwardedProps} className={classNames(CLASSNAME, className)} ref={ref}>\n {children}\n </div>\n </DrilldownContext.Provider>\n );\n});\nDrilldownDashboardBase.className = CLASSNAME;\nDrilldownDashboardBase.displayName = COMPONENT_NAME;\n\n// ---------------------------------------------------------------------------\n// Sub-components\n// ---------------------------------------------------------------------------\n\n/**\n * A DataCard slot in a DrilldownDashboard. Reads aggregates from context\n * and wires up selection state and filter model sync.\n *\n * The card renders its children with injected aggregate values and selection state.\n * When the DataGrid's filter panel controls the same field, the card is disabled.\n */\nconst Card: React.FC<DrilldownCardProps> = ({ field, children }) => {\n const ctx = useContext(DrilldownContext);\n\n if (process.env.NODE_ENV !== 'production') {\n warnOnMissingContext(ctx, 'DrilldownDashboard.Card', 'DrilldownDashboard');\n }\n\n const fieldAggregates = ctx.aggregates[field] ?? {};\n const selection = ctx.getSelectedFromFilterModel(field);\n const isDisabled = ctx.hasFilterForField(field) && !ctx.cardControlledFields.current.has(field);\n\n const handleChange = useCallback(\n (newValues: string[]) => {\n ctx.updateFilterModel(field, newValues);\n },\n [ctx, field]\n );\n\n // Clone the DataCard children and inject aggregate values + selection state\n if (!React.isValidElement(children)) return null;\n\n return React.cloneElement(children as React.ReactElement<any>, {\n _drilldown: { fieldAggregates, selection, isDisabled, onChange: handleChange },\n });\n};\nCard.displayName = 'DrilldownDashboard.Card';\n\n/**\n * A DataGrid slot in a DrilldownDashboard. Reads filterModel from context\n * and syncs changes back.\n */\nconst Grid: React.FC<DrilldownGridProps> = ({ children }) => {\n const ctx = useContext(DrilldownContext);\n\n if (process.env.NODE_ENV !== 'production') {\n warnOnMissingContext(ctx, 'DrilldownDashboard.Grid', 'DrilldownDashboard');\n }\n\n const handleFilterModelChange = useCallback(\n (model: GridFilterModel) => {\n if (ctx.isInternalUpdate.current) {\n ctx.isInternalUpdate.current = false;\n ctx.setFilterModel((prev) => {\n if (JSON.stringify(prev.items) === JSON.stringify(model.items)) return prev;\n return model;\n });\n return;\n }\n const panelFields = new Set(model.items.map((item) => item.field));\n for (const f of panelFields) {\n ctx.cardControlledFields.current.delete(f);\n }\n for (const f of ctx.cardControlledFields.current) {\n if (!panelFields.has(f)) {\n ctx.cardControlledFields.current.delete(f);\n }\n }\n ctx.setFilterModel((prev) => {\n if (JSON.stringify(prev.items) === JSON.stringify(model.items)) return prev;\n return model;\n });\n },\n [ctx]\n );\n\n if (!React.isValidElement(children)) return null;\n\n return React.cloneElement(children as React.ReactElement<any>, {\n filterModel: ctx.filterModel,\n onFilterModelChange: handleFilterModelChange,\n });\n};\nGrid.displayName = 'DrilldownDashboard.Grid';\n\n/**\n * DrilldownDashboard with attached sub-components.\n */\nexport const DrilldownDashboard = Object.assign(DrilldownDashboardBase, {\n Card,\n Grid,\n});\n"],"names":["COMPONENT_NAME","CLASSNAME","DrilldownContext","createContext","getSelectedFromModel","model","field","item","items","find","i","val","value","Array","isArray","String","updateModel","prev","values","operator","arguments","length","undefined","_objectSpread","filter","existing","map","DrilldownDashboardBase","forwardRef","props","ref","children","className","data","computeAggregates","computeAggregatesFn","forwardedProps","_objectWithoutProperties","_excluded","filterModel","setFilterModel","useState","cardControlledFields","useRef","Set","isInternalUpdate","aggregates","useMemo","getSelectedFromFilterModel","useCallback","updateFilterModelFn","current","add","updated","JSON","stringify","hasFilterForField","some","contextValue","updateFilterModel","React","createElement","Provider","_extends","classNames","displayName","Card","_ref","_ctx$aggregates$field","ctx","useContext","process","env","NODE_ENV","warnOnMissingContext","fieldAggregates","selection","isDisabled","has","handleChange","newValues","isValidElement","cloneElement","_drilldown","onChange","Grid","_ref2","handleFilterModelChange","panelFields","f","delete","onFilterModelChange","DrilldownDashboard","Object","assign"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PdfExportButton2.js","sources":["../../src/components/PdfExportButton/styles.ts","../../src/components/PdfExportButton/PdfDocument.tsx","../../src/components/PdfExportButton/PdfExportButton.tsx"],"sourcesContent":["// istanbul ignore file\n\nimport { Font, StyleSheet } from '@react-pdf/renderer';\nconst BACKGROUND_COLOR = '#F8F8F8';\nconst GREY_1 = '#E2E6EA';\nconst GREY_2 = '#bff0fd';\n\nexport const getPdfStyles = (primaryColor: string) => {\n Font.register({\n family: 'Source Code Pro',\n fonts: [\n {\n src: 'https://fonts.gstatic.com/s/sourcecodepro/v7/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vT.ttf',\n },\n ],\n });\n\n Font.register({\n family: 'Roboto',\n fonts: [\n {\n fontWeight: 700,\n src: 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/fonts/roboto/Roboto-Regular.ttf',\n },\n {\n fontWeight: 400,\n src: 'https://cdnjs.cloudflare.com/ajax/libs/ink/3.1.10/fonts/Roboto/roboto-light-webfont.ttf',\n },\n ],\n });\n\n return StyleSheet.create({\n page: {\n borderTopStyle: 'solid',\n borderTopWidth: 32,\n borderTopColor: primaryColor,\n borderBottomStyle: 'solid',\n borderBottomWidth: 6,\n borderBottomColor: primaryColor,\n backgroundColor: BACKGROUND_COLOR,\n paddingTop: 20,\n paddingBottom: 40,\n },\n logoContainer: {\n margin: 0,\n paddingBottom: 10,\n alignItems: 'center',\n width: '100%',\n },\n logo: {\n width: 'auto',\n height: 30,\n },\n introductionContainer: {\n lineHeight: 1.4,\n textAlign: 'center',\n marginHorizontal: 40,\n marginVertical: 10,\n },\n introductionText: {\n fontSize: 8,\n fontFamily: 'Roboto',\n fontWeight: 400,\n color: 'black',\n },\n pageNumber: {\n fontFamily: 'Source Code Pro',\n position: 'absolute',\n fontSize: 6,\n bottom: 5,\n right: 20,\n left: 0,\n textAlign: 'right',\n color: 'black',\n },\n pageContinue: {\n fontSize: 8,\n fontFamily: 'Roboto',\n fontWeight: 400,\n top: -10,\n left: 20,\n },\n tableContainer: {\n backgroundColor: 'white',\n marginHorizontal: 20,\n marginVertical: 10,\n paddingTop: 10,\n paddingLeft: 10,\n borderRightWidth: 1,\n borderBottomWidth: 1,\n borderRightColor: BACKGROUND_COLOR,\n borderBottomColor: GREY_1,\n width: 'auto',\n },\n tableRowContainer: {\n flexDirection: 'row',\n borderBottomColor: GREY_2,\n alignItems: 'flex-start',\n fontSize: 8,\n marginLeft: 16,\n marginRight: 24,\n height: 'auto',\n },\n tableHeaderContainer: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n fontSize: 7,\n fontFamily: 'Roboto',\n fontWeight: 700,\n marginLeft: 16,\n marginRight: 24,\n marginBottom: 12,\n paddingTop: 12,\n paddingBottom: 12,\n borderBottomWidth: 2,\n borderBottomColor: primaryColor,\n },\n tableCellHeaderText: {\n fontSize: 7,\n fontFamily: 'Roboto',\n fontWeight: 700,\n color: 'black',\n overflow: 'hidden',\n },\n tableCellText: {\n fontSize: 6,\n lineHeight: 1.5,\n fontFamily: 'Roboto',\n fontWeight: 400,\n color: 'black',\n overflow: 'hidden',\n },\n dashboardImageContainer: {\n marginHorizontal: 20,\n marginTop: 0,\n marginBottom: 10,\n },\n constraintsContainer: {\n width: 'auto',\n height: 'auto',\n paddingVertical: 30,\n textAlign: 'center',\n },\n constraints: {\n fontSize: 6,\n fontFamily: 'Roboto',\n fontWeight: 700,\n color: 'black',\n },\n });\n};\n","// istanbul ignore file\n\nimport React from 'react';\nimport { Document, Image, Page, Text, View } from '@react-pdf/renderer';\nimport { GridValidRowModel } from '@mui/x-data-grid-premium';\nimport { PdfTableColumn, PdfTableRowProps, PdfTableProps, PdfDocumentProps, PdfStyles } from './types';\nimport { getPdfStyles } from './styles';\n\nconst DEFAULT_COLUMN_WIDTH = 100;\n\nconst getWidthColumn = (width: number, totalW: number, nrColumns: number) => {\n // calculation width column where the 7px margin between the columns is included\n return `${Math.round((width * 100) / (totalW - 7 * (nrColumns - 1)))}%`;\n};\n\nconst PdfTableRow = ({ rowIndex, rowData, columns, styles, totalWidth }: PdfTableRowProps) => {\n return (\n <View style={styles.tableRowContainer} key={`row-${rowIndex}`}>\n {columns.map((column: PdfTableColumn, index: number) => {\n const { field, width } = column;\n let totalW = totalWidth;\n let nrColumns = columns.length;\n\n // The checkbox in the table will not be printed\n if (field === '__check__') {\n totalW = totalW - (width || 50);\n nrColumns = nrColumns - 1;\n return;\n }\n const widthColumn = getWidthColumn(width || DEFAULT_COLUMN_WIDTH, totalW, nrColumns);\n\n // Empty value will print '-'\n if (!rowData[field]) {\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`cell-${rowIndex}-${index}`}\n >\n <Text style={styles.tableCellText}>{'-'}</Text>\n </View>\n );\n }\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`cell-${rowIndex}-${index}`}\n >\n <Text style={styles.tableCellText}>\n {Array.isArray(rowData[field]) ? rowData[field].join(', ') : rowData[field]}\n </Text>\n </View>\n );\n })}\n </View>\n );\n};\n\nconst PdfTable = ({ dataTable, styles, localeText }: PdfTableProps) => {\n const { data, columns, totalWidth } = dataTable;\n\n return (\n <>\n <View style={styles.tableHeaderContainer}>\n {columns.map((column: PdfTableColumn) => {\n let totalW = totalWidth;\n let nrColumns = columns.length;\n const { field, headerName, width } = column;\n\n // The checkbox in the table will not be printed\n if (field === '__check__') {\n totalW = totalW - (width || 50);\n nrColumns = nrColumns - 1;\n return;\n }\n const widthColumn = getWidthColumn(width || DEFAULT_COLUMN_WIDTH, totalW, nrColumns);\n\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`heading-${field}`}\n >\n <Text style={styles.tableCellHeaderText}>{headerName}</Text>\n </View>\n );\n })}\n </View>\n <View>\n {data.map((row: GridValidRowModel, index: number) => {\n if (index < 1000) {\n return (\n <PdfTableRow\n key={index}\n rowIndex={index}\n rowData={data[index]}\n columns={columns}\n styles={styles}\n totalWidth={totalWidth}\n />\n );\n }\n })}\n </View>\n {data.length >= 1000 ? (\n <View style={styles.constraintsContainer}>\n <Text style={styles.constraints}>\n {localeText?.maxSizeDisclaimer ||\n 'Due to processing constraints this pdf is limited to the first 1000 rows of data.'}\n </Text>\n </View>\n ) : null}\n </>\n );\n};\n\nconst Pagination = ({ styles }: { styles: PdfStyles }) => {\n return (\n <Text style={styles.pageNumber} render={({ pageNumber, totalPages }) => `${pageNumber}/${totalPages}`} fixed />\n );\n};\n\nexport const PdfDocument = ({\n dashboardImage,\n introduction,\n localeText,\n logo,\n dataTable,\n primaryColor,\n}: PdfDocumentProps) => {\n const styles = getPdfStyles(primaryColor);\n\n return (\n <Document>\n <Page size=\"A4\" style={styles.page}>\n <>\n {logo ? (\n <View style={styles.logoContainer}>\n <Image src={logo} style={styles.logo} />\n </View>\n ) : null}\n {introduction ? (\n <View style={styles.introductionContainer}>\n <Text style={styles.introductionText}>{introduction}</Text>\n </View>\n ) : null}\n {dashboardImage ? (\n <View style={styles.dashboardImageContainer}>\n <Image src={dashboardImage as unknown as string} />\n </View>\n ) : null}\n {dataTable ? (\n <View style={styles.tableContainer}>\n <PdfTable dataTable={dataTable} styles={styles} localeText={localeText} />\n </View>\n ) : null}\n\n <Pagination styles={styles} />\n </>\n </Page>\n </Document>\n );\n};\n","// istanbul ignore file\n\nimport React, {\n forwardRef,\n JSXElementConstructor,\n ReactElement,\n RefObject,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n gridFilteredSortedRowEntriesSelector,\n gridVisibleColumnDefinitionsSelector,\n gridColumnsTotalWidthSelector,\n} from '@mui/x-data-grid-premium';\nimport classNames from 'classnames';\nimport { saveAs } from 'file-saver';\nimport { pdf } from '@react-pdf/renderer';\nimport domToImage from 'dom-to-image';\n\nimport { Comp, Button, Spinner, RedsiftColorBlueD1 } from '@redsift/design-system';\n\nimport { PdfExportButtonProps } from './types';\nimport { PdfDocument } from './PdfDocument';\nimport { DashboardContext } from '../Dashboard';\n\nconst COMPONENT_NAME = 'PdfExportButton';\nconst CLASSNAME = 'redsift-pdf-export-button';\n\nconst getDashboardImage = async (componentRef: RefObject<HTMLElement>): Promise<string> => {\n const filter = (el: Node) => {\n const classList = (el as HTMLElement).classList;\n return !(classList?.contains('redsift-datagrid') || classList?.contains('redsift-button'));\n };\n\n const dashboardHeight = (componentRef.current as HTMLElement).getBoundingClientRect().height;\n const datagridHeight =\n (componentRef.current as HTMLElement)?.getElementsByClassName('redsift-datagrid')?.[0]?.getBoundingClientRect()\n ?.height || 0;\n\n return new Promise((resolve) => {\n domToImage\n .toPng(componentRef.current as HTMLElement, {\n filter,\n height: dashboardHeight - datagridHeight,\n })\n .then(function (dataUrl: string) {\n resolve(dataUrl);\n })\n .catch(() => {\n resolve('');\n });\n });\n};\n\nexport const PdfExportButton: Comp<PdfExportButtonProps, HTMLButtonElement> = forwardRef((props, ref) => {\n const {\n children,\n className,\n componentRef: propComponentRef,\n fileName,\n introduction,\n localeText,\n logo,\n onClick,\n primaryColor,\n ...forwardedProps\n } = props;\n const [componentRef, setComponentRef] = useState(propComponentRef);\n const [isLoading, setIsLoading] = useState(false);\n\n const { dashboardRef, dataGridApiRef } = useContext(DashboardContext);\n\n useEffect(() => {\n if (!componentRef || !componentRef.current) {\n setComponentRef(dashboardRef);\n }\n }, [dashboardRef]);\n\n const exportPdf = async () => {\n if (onClick) {\n onClick();\n }\n setIsLoading(true);\n try {\n const dashboardImage = await getDashboardImage(componentRef || dashboardRef!);\n\n let dataTable;\n if (dataGridApiRef?.current) {\n dataTable = {\n data: gridFilteredSortedRowEntriesSelector(dataGridApiRef)\n .slice(0, 1000)\n .map(({ model }) => model),\n columns: gridVisibleColumnDefinitionsSelector(dataGridApiRef),\n totalWidth: gridColumnsTotalWidthSelector(dataGridApiRef),\n };\n }\n\n const doc = (\n <PdfDocument\n localeText={localeText}\n dashboardImage={dashboardImage}\n introduction={introduction}\n logo={logo}\n primaryColor={primaryColor || RedsiftColorBlueD1}\n dataTable={dataTable}\n />\n );\n const asPdf = pdf([] as unknown as ReactElement<any, string | JSXElementConstructor<any>>);\n asPdf.updateContainer(doc);\n const blob = await asPdf.toBlob();\n saveAs(blob, fileName || 'redsift-dashboard.pdf');\n } catch (e) {\n console.log('error:', e);\n }\n setIsLoading(false);\n };\n\n return (\n <Button\n className={classNames(PdfExportButton.className, className)}\n onClick={exportPdf}\n isDisabled={isLoading}\n {...forwardedProps}\n ref={ref as RefObject<HTMLButtonElement>}\n >\n {isLoading ? <Spinner size=\"xsmall\" isColored={false} /> : null} {children}\n </Button>\n );\n});\nPdfExportButton.className = CLASSNAME;\nPdfExportButton.displayName = COMPONENT_NAME;\n"],"names":["BACKGROUND_COLOR","GREY_1","GREY_2","getPdfStyles","primaryColor","Font","register","family","fonts","src","fontWeight","StyleSheet","create","page","borderTopStyle","borderTopWidth","borderTopColor","borderBottomStyle","borderBottomWidth","borderBottomColor","backgroundColor","paddingTop","paddingBottom","logoContainer","margin","alignItems","width","logo","height","introductionContainer","lineHeight","textAlign","marginHorizontal","marginVertical","introductionText","fontSize","fontFamily","color","pageNumber","position","bottom","right","left","pageContinue","top","tableContainer","paddingLeft","borderRightWidth","borderRightColor","tableRowContainer","flexDirection","marginLeft","marginRight","tableHeaderContainer","marginBottom","tableCellHeaderText","overflow","tableCellText","dashboardImageContainer","marginTop","constraintsContainer","paddingVertical","constraints","DEFAULT_COLUMN_WIDTH","getWidthColumn","totalW","nrColumns","Math","round","PdfTableRow","_ref","rowIndex","rowData","columns","styles","totalWidth","React","createElement","View","style","key","map","column","index","field","length","widthColumn","Text","Array","isArray","join","PdfTable","_ref2","dataTable","localeText","data","Fragment","headerName","row","maxSizeDisclaimer","Pagination","_ref3","render","_ref4","totalPages","fixed","PdfDocument","_ref5","dashboardImage","introduction","Document","Page","size","Image","COMPONENT_NAME","CLASSNAME","getDashboardImage","componentRef","_componentRef$current","_componentRef$current2","_componentRef$current3","_componentRef$current4","filter","el","classList","contains","dashboardHeight","current","getBoundingClientRect","datagridHeight","getElementsByClassName","Promise","resolve","domToImage","toPng","then","dataUrl","catch","PdfExportButton","forwardRef","props","ref","children","className","propComponentRef","fileName","onClick","forwardedProps","_objectWithoutProperties","_excluded","setComponentRef","useState","isLoading","setIsLoading","dashboardRef","dataGridApiRef","useContext","DashboardContext","useEffect","exportPdf","gridFilteredSortedRowEntriesSelector","slice","model","gridVisibleColumnDefinitionsSelector","gridColumnsTotalWidthSelector","doc","RedsiftColorBlueD1","asPdf","pdf","updateContainer","blob","toBlob","saveAs","e","console","log","Button","_extends","classNames","isDisabled","Spinner","isColored","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"PdfExportButton2.js","sources":["../../src/components/PdfExportButton/styles.ts","../../src/components/PdfExportButton/PdfDocument.tsx","../../src/components/PdfExportButton/PdfExportButton.tsx"],"sourcesContent":["// istanbul ignore file\n\nimport { Font, StyleSheet } from '@react-pdf/renderer';\nconst BACKGROUND_COLOR = '#F8F8F8';\nconst GREY_1 = '#E2E6EA';\nconst GREY_2 = '#bff0fd';\n\nexport const getPdfStyles = (primaryColor: string) => {\n Font.register({\n family: 'Source Code Pro',\n fonts: [\n {\n src: 'https://fonts.gstatic.com/s/sourcecodepro/v7/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vT.ttf',\n },\n ],\n });\n\n Font.register({\n family: 'Roboto',\n fonts: [\n {\n fontWeight: 700,\n src: 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/fonts/roboto/Roboto-Regular.ttf',\n },\n {\n fontWeight: 400,\n src: 'https://cdnjs.cloudflare.com/ajax/libs/ink/3.1.10/fonts/Roboto/roboto-light-webfont.ttf',\n },\n ],\n });\n\n return StyleSheet.create({\n page: {\n borderTopStyle: 'solid',\n borderTopWidth: 32,\n borderTopColor: primaryColor,\n borderBottomStyle: 'solid',\n borderBottomWidth: 6,\n borderBottomColor: primaryColor,\n backgroundColor: BACKGROUND_COLOR,\n paddingTop: 20,\n paddingBottom: 40,\n },\n logoContainer: {\n margin: 0,\n paddingBottom: 10,\n alignItems: 'center',\n width: '100%',\n },\n logo: {\n width: 'auto',\n height: 30,\n },\n introductionContainer: {\n lineHeight: 1.4,\n textAlign: 'center',\n marginHorizontal: 40,\n marginVertical: 10,\n },\n introductionText: {\n fontSize: 8,\n fontFamily: 'Roboto',\n fontWeight: 400,\n color: 'black',\n },\n pageNumber: {\n fontFamily: 'Source Code Pro',\n position: 'absolute',\n fontSize: 6,\n bottom: 5,\n right: 20,\n left: 0,\n textAlign: 'right',\n color: 'black',\n },\n pageContinue: {\n fontSize: 8,\n fontFamily: 'Roboto',\n fontWeight: 400,\n top: -10,\n left: 20,\n },\n tableContainer: {\n backgroundColor: 'white',\n marginHorizontal: 20,\n marginVertical: 10,\n paddingTop: 10,\n paddingLeft: 10,\n borderRightWidth: 1,\n borderBottomWidth: 1,\n borderRightColor: BACKGROUND_COLOR,\n borderBottomColor: GREY_1,\n width: 'auto',\n },\n tableRowContainer: {\n flexDirection: 'row',\n borderBottomColor: GREY_2,\n alignItems: 'flex-start',\n fontSize: 8,\n marginLeft: 16,\n marginRight: 24,\n height: 'auto',\n },\n tableHeaderContainer: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n fontSize: 7,\n fontFamily: 'Roboto',\n fontWeight: 700,\n marginLeft: 16,\n marginRight: 24,\n marginBottom: 12,\n paddingTop: 12,\n paddingBottom: 12,\n borderBottomWidth: 2,\n borderBottomColor: primaryColor,\n },\n tableCellHeaderText: {\n fontSize: 7,\n fontFamily: 'Roboto',\n fontWeight: 700,\n color: 'black',\n overflow: 'hidden',\n },\n tableCellText: {\n fontSize: 6,\n lineHeight: 1.5,\n fontFamily: 'Roboto',\n fontWeight: 400,\n color: 'black',\n overflow: 'hidden',\n },\n dashboardImageContainer: {\n marginHorizontal: 20,\n marginTop: 0,\n marginBottom: 10,\n },\n constraintsContainer: {\n width: 'auto',\n height: 'auto',\n paddingVertical: 30,\n textAlign: 'center',\n },\n constraints: {\n fontSize: 6,\n fontFamily: 'Roboto',\n fontWeight: 700,\n color: 'black',\n },\n });\n};\n","// istanbul ignore file\n/**\n * @internal\n * React-PDF document template used internally by PdfExportButton. Not part of the public API.\n * Use `PdfExportButton` for PDF export functionality.\n */\nimport React from 'react';\nimport { Document, Image, Page, Text, View } from '@react-pdf/renderer';\nimport { GridValidRowModel } from '@mui/x-data-grid-premium';\nimport { PdfTableColumn, PdfTableRowProps, PdfTableProps, PdfDocumentProps, PdfStyles } from './types';\nimport { getPdfStyles } from './styles';\n\nconst DEFAULT_COLUMN_WIDTH = 100;\n\nconst getWidthColumn = (width: number, totalW: number, nrColumns: number) => {\n // calculation width column where the 7px margin between the columns is included\n return `${Math.round((width * 100) / (totalW - 7 * (nrColumns - 1)))}%`;\n};\n\nconst PdfTableRow = ({ rowIndex, rowData, columns, styles, totalWidth }: PdfTableRowProps) => {\n return (\n <View style={styles.tableRowContainer} key={`row-${rowIndex}`}>\n {columns.map((column: PdfTableColumn, index: number) => {\n const { field, width } = column;\n let totalW = totalWidth;\n let nrColumns = columns.length;\n\n // The checkbox in the table will not be printed\n if (field === '__check__') {\n totalW = totalW - (width || 50);\n nrColumns = nrColumns - 1;\n return;\n }\n const widthColumn = getWidthColumn(width || DEFAULT_COLUMN_WIDTH, totalW, nrColumns);\n\n // Empty value will print '-'\n if (!rowData[field]) {\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`cell-${rowIndex}-${index}`}\n >\n <Text style={styles.tableCellText}>{'-'}</Text>\n </View>\n );\n }\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`cell-${rowIndex}-${index}`}\n >\n <Text style={styles.tableCellText}>\n {Array.isArray(rowData[field]) ? rowData[field].join(', ') : rowData[field]}\n </Text>\n </View>\n );\n })}\n </View>\n );\n};\n\nconst PdfTable = ({ dataTable, styles, localeText }: PdfTableProps) => {\n const { data, columns, totalWidth } = dataTable;\n\n return (\n <>\n <View style={styles.tableHeaderContainer}>\n {columns.map((column: PdfTableColumn) => {\n let totalW = totalWidth;\n let nrColumns = columns.length;\n const { field, headerName, width } = column;\n\n // The checkbox in the table will not be printed\n if (field === '__check__') {\n totalW = totalW - (width || 50);\n nrColumns = nrColumns - 1;\n return;\n }\n const widthColumn = getWidthColumn(width || DEFAULT_COLUMN_WIDTH, totalW, nrColumns);\n\n return (\n <View\n style={{\n width: widthColumn,\n paddingVertical: 2,\n marginRight: 7,\n }}\n key={`heading-${field}`}\n >\n <Text style={styles.tableCellHeaderText}>{headerName}</Text>\n </View>\n );\n })}\n </View>\n <View>\n {data.map((row: GridValidRowModel, index: number) => {\n if (index < 1000) {\n return (\n <PdfTableRow\n key={index}\n rowIndex={index}\n rowData={data[index]}\n columns={columns}\n styles={styles}\n totalWidth={totalWidth}\n />\n );\n }\n })}\n </View>\n {data.length >= 1000 ? (\n <View style={styles.constraintsContainer}>\n <Text style={styles.constraints}>\n {localeText?.maxSizeDisclaimer ||\n 'Due to processing constraints this pdf is limited to the first 1000 rows of data.'}\n </Text>\n </View>\n ) : null}\n </>\n );\n};\n\nconst Pagination = ({ styles }: { styles: PdfStyles }) => {\n return (\n <Text style={styles.pageNumber} render={({ pageNumber, totalPages }) => `${pageNumber}/${totalPages}`} fixed />\n );\n};\n\nexport const PdfDocument = ({\n dashboardImage,\n introduction,\n localeText,\n logo,\n dataTable,\n primaryColor,\n}: PdfDocumentProps) => {\n const styles = getPdfStyles(primaryColor);\n\n return (\n <Document>\n <Page size=\"A4\" style={styles.page}>\n <>\n {logo ? (\n <View style={styles.logoContainer}>\n <Image src={logo} style={styles.logo} />\n </View>\n ) : null}\n {introduction ? (\n <View style={styles.introductionContainer}>\n <Text style={styles.introductionText}>{introduction}</Text>\n </View>\n ) : null}\n {dashboardImage ? (\n <View style={styles.dashboardImageContainer}>\n <Image src={dashboardImage as unknown as string} />\n </View>\n ) : null}\n {dataTable ? (\n <View style={styles.tableContainer}>\n <PdfTable dataTable={dataTable} styles={styles} localeText={localeText} />\n </View>\n ) : null}\n\n <Pagination styles={styles} />\n </>\n </Page>\n </Document>\n );\n};\n","// istanbul ignore file\n\nimport React, {\n forwardRef,\n JSXElementConstructor,\n ReactElement,\n RefObject,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n gridFilteredSortedRowEntriesSelector,\n gridVisibleColumnDefinitionsSelector,\n gridColumnsTotalWidthSelector,\n} from '@mui/x-data-grid-premium';\nimport classNames from 'classnames';\nimport { saveAs } from 'file-saver';\nimport { pdf } from '@react-pdf/renderer';\nimport domToImage from 'dom-to-image';\n\nimport { Comp, Button, Spinner, RedsiftColorBlueD1 } from '@redsift/design-system';\n\nimport { PdfExportButtonProps } from './types';\nimport { PdfDocument } from './PdfDocument';\nimport { DashboardContext } from '../Dashboard';\n\nconst COMPONENT_NAME = 'PdfExportButton';\nconst CLASSNAME = 'redsift-pdf-export-button';\n\nconst getDashboardImage = async (componentRef: RefObject<HTMLElement>): Promise<string> => {\n const filter = (el: Node) => {\n const classList = (el as HTMLElement).classList;\n return !(classList?.contains('redsift-datagrid') || classList?.contains('redsift-button'));\n };\n\n const dashboardHeight = (componentRef.current as HTMLElement).getBoundingClientRect().height;\n const datagridHeight =\n (componentRef.current as HTMLElement)?.getElementsByClassName('redsift-datagrid')?.[0]?.getBoundingClientRect()\n ?.height || 0;\n\n return new Promise((resolve) => {\n domToImage\n .toPng(componentRef.current as HTMLElement, {\n filter,\n height: dashboardHeight - datagridHeight,\n })\n .then(function (dataUrl: string) {\n resolve(dataUrl);\n })\n .catch(() => {\n resolve('');\n });\n });\n};\n\nexport const PdfExportButton: Comp<PdfExportButtonProps, HTMLButtonElement> = forwardRef((props, ref) => {\n const {\n children,\n className,\n componentRef: propComponentRef,\n fileName,\n introduction,\n localeText,\n logo,\n onClick,\n primaryColor,\n ...forwardedProps\n } = props;\n const [componentRef, setComponentRef] = useState(propComponentRef);\n const [isLoading, setIsLoading] = useState(false);\n\n const { dashboardRef, dataGridApiRef } = useContext(DashboardContext);\n\n useEffect(() => {\n if (!componentRef || !componentRef.current) {\n setComponentRef(dashboardRef);\n }\n }, [dashboardRef]);\n\n const exportPdf = async () => {\n if (onClick) {\n onClick();\n }\n setIsLoading(true);\n try {\n const dashboardImage = await getDashboardImage(componentRef || dashboardRef!);\n\n let dataTable;\n if (dataGridApiRef?.current) {\n dataTable = {\n data: gridFilteredSortedRowEntriesSelector(dataGridApiRef)\n .slice(0, 1000)\n .map(({ model }) => model),\n columns: gridVisibleColumnDefinitionsSelector(dataGridApiRef),\n totalWidth: gridColumnsTotalWidthSelector(dataGridApiRef),\n };\n }\n\n const doc = (\n <PdfDocument\n localeText={localeText}\n dashboardImage={dashboardImage}\n introduction={introduction}\n logo={logo}\n primaryColor={primaryColor || RedsiftColorBlueD1}\n dataTable={dataTable}\n />\n );\n const asPdf = pdf([] as unknown as ReactElement<any, string | JSXElementConstructor<any>>);\n asPdf.updateContainer(doc);\n const blob = await asPdf.toBlob();\n saveAs(blob, fileName || 'redsift-dashboard.pdf');\n } catch (e) {\n console.log('error:', e);\n }\n setIsLoading(false);\n };\n\n return (\n <Button\n className={classNames(PdfExportButton.className, className)}\n onClick={exportPdf}\n isDisabled={isLoading}\n {...forwardedProps}\n ref={ref as RefObject<HTMLButtonElement>}\n >\n {isLoading ? <Spinner size=\"xsmall\" isColored={false} /> : null} {children}\n </Button>\n );\n});\nPdfExportButton.className = CLASSNAME;\nPdfExportButton.displayName = COMPONENT_NAME;\n"],"names":["BACKGROUND_COLOR","GREY_1","GREY_2","getPdfStyles","primaryColor","Font","register","family","fonts","src","fontWeight","StyleSheet","create","page","borderTopStyle","borderTopWidth","borderTopColor","borderBottomStyle","borderBottomWidth","borderBottomColor","backgroundColor","paddingTop","paddingBottom","logoContainer","margin","alignItems","width","logo","height","introductionContainer","lineHeight","textAlign","marginHorizontal","marginVertical","introductionText","fontSize","fontFamily","color","pageNumber","position","bottom","right","left","pageContinue","top","tableContainer","paddingLeft","borderRightWidth","borderRightColor","tableRowContainer","flexDirection","marginLeft","marginRight","tableHeaderContainer","marginBottom","tableCellHeaderText","overflow","tableCellText","dashboardImageContainer","marginTop","constraintsContainer","paddingVertical","constraints","DEFAULT_COLUMN_WIDTH","getWidthColumn","totalW","nrColumns","Math","round","PdfTableRow","_ref","rowIndex","rowData","columns","styles","totalWidth","React","createElement","View","style","key","map","column","index","field","length","widthColumn","Text","Array","isArray","join","PdfTable","_ref2","dataTable","localeText","data","Fragment","headerName","row","maxSizeDisclaimer","Pagination","_ref3","render","_ref4","totalPages","fixed","PdfDocument","_ref5","dashboardImage","introduction","Document","Page","size","Image","COMPONENT_NAME","CLASSNAME","getDashboardImage","componentRef","_componentRef$current","_componentRef$current2","_componentRef$current3","_componentRef$current4","filter","el","classList","contains","dashboardHeight","current","getBoundingClientRect","datagridHeight","getElementsByClassName","Promise","resolve","domToImage","toPng","then","dataUrl","catch","PdfExportButton","forwardRef","props","ref","children","className","propComponentRef","fileName","onClick","forwardedProps","_objectWithoutProperties","_excluded","setComponentRef","useState","isLoading","setIsLoading","dashboardRef","dataGridApiRef","useContext","DashboardContext","useEffect","exportPdf","gridFilteredSortedRowEntriesSelector","slice","model","gridVisibleColumnDefinitionsSelector","gridColumnsTotalWidthSelector","doc","RedsiftColorBlueD1","asPdf","pdf","updateContainer","blob","toBlob","saveAs","e","console","log","Button","_extends","classNames","isDisabled","Spinner","isColored","displayName"],"mappings":"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"}
@@ -259,6 +259,12 @@ const FilterableBarChart = props => {
259
259
  return null;
260
260
  };
261
261
 
262
+ /**
263
+ * @internal
264
+ * Cross-filter wiring layer for DataCard inside a CrossfilteredDashboard or WithFilters context.
265
+ * Not part of the public API — do not import or render directly.
266
+ * Use `CrossfilteredDashboard.Card` or wrap a `DataCard` with `<WithFilters>` instead.
267
+ */
262
268
  const arraysEqual = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
263
269
  const noop = () => {};
264
270
 
@@ -447,6 +453,12 @@ const FilterableDataCard = props => {
447
453
  return null;
448
454
  };
449
455
 
456
+ /**
457
+ * @internal
458
+ * Cross-filter wiring layer for DataGrid inside a CrossfilteredDashboard or WithFilters context.
459
+ * Not part of the public API — do not import or render directly.
460
+ * Use `CrossfilteredDashboard.Grid` or wrap a DataGrid with `<WithFilters>` instead.
461
+ */
450
462
  const FilterableDataGrid = props => {
451
463
  const {
452
464
  children,
@@ -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, 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":"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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","/**\n * @internal\n * Cross-filter wiring layer for BarChart inside a CrossfilteredDashboard or WithFilters context.\n * Not part of the public API — do not import or render directly.\n * Use `CrossfilteredDashboard.BarChart` or wrap a `BarChart` with `<WithFilters>` instead.\n */\nimport { 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","/**\n * @internal\n * Cross-filter wiring layer for DataCard inside a CrossfilteredDashboard or WithFilters context.\n * Not part of the public API — do not import or render directly.\n * Use `CrossfilteredDashboard.Card` or wrap a `DataCard` with `<WithFilters>` instead.\n */\nimport 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\n/**\n * @internal\n * Cross-filter wiring layer for DataGrid inside a CrossfilteredDashboard or WithFilters context.\n * Not part of the public API — do not import or render directly.\n * Use `CrossfilteredDashboard.Grid` or wrap a DataGrid with `<WithFilters>` instead.\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","/**\n * @internal\n * Cross-filter wiring layer for PieChart inside a CrossfilteredDashboard or WithFilters context.\n * Not part of the public API — do not import or render directly.\n * Use `CrossfilteredDashboard.PieChart` or wrap a `PieChart` with `<WithFilters>` instead.\n */\nimport { 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","/**\n * @internal\n * Cross-filter wiring layer for ScatterPlot inside a CrossfilteredDashboard or WithFilters context.\n * Not part of the public API — do not import or render directly.\n * Use `CrossfilteredDashboard.ScatterPlot` or wrap a `ScatterPlot` with `<WithFilters>` instead.\n */\nimport { 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;;ACjHI,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;;ACxMD;AACA;AACA;AACA;AACA;AACA;AAQA,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;;ACnOD;AACA;AACA;AACA;AACA;AACA;AACO,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;;ACnTY4G,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/package.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "test": "yarn test:unit && yarn test:storybook"
31
31
  },
32
32
  "types": "index.d.ts",
33
- "version": "12.5.3-alpha.5",
33
+ "version": "12.5.3-alpha.7",
34
34
  "dependencies": {
35
35
  "@emotion/react": "^11.10.4",
36
36
  "@emotion/styled": "^11.10.4",
@@ -109,5 +109,5 @@
109
109
  "react-dom": ">=17",
110
110
  "styled-components": "6.1.19"
111
111
  },
112
- "gitHead": "f28834034974ffed13896f0b615271557fb65bd1"
112
+ "gitHead": "d6bbaa5082b6d63d000834a362238a0618680d60"
113
113
  }