@embeddable.com/remarkable-pro 0.1.12 → 0.1.13

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.
@@ -1,6 +1,6 @@
1
1
  import { l as t } from "./Color.type.emb-Bon3x9VC.js";
2
2
  import { definePreview as d, defineComponent as u } from "@embeddable.com/react";
3
- import { P as r } from "./index-B329Sipk.js";
3
+ import { P as r } from "./index-ezkJ1Yt0.js";
4
4
  import { i as o, s as i } from "./component.inputs.constants-DX8nFR6c.js";
5
5
  import { p as a } from "./preview.data.constants-BeVHkWI3.js";
6
6
  const w = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/charts/tables/PivotTablePro/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAa,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAexE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,eAAe,EAAE,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,GAAG,oBAAoB,CAAC;AAEzB,QAAA,MAAM,aAAa,GAAI,OAAO,kBAAkB,4CA+H/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/charts/tables/PivotTablePro/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAa,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAexE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,EAAE,SAAS,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,eAAe,EAAE,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;CACtD,GAAG,oBAAoB,CAAC;AAEzB,QAAA,MAAM,aAAa,GAAI,OAAO,kBAAkB,4CAmI/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,66 +1,66 @@
1
1
  {
2
2
  "components": [
3
3
  "EmptyBlockPro",
4
- "DimensionSingleSelectFieldPro",
5
4
  "ComparisonPeriodSelectFieldPro",
5
+ "DimensionSingleSelectFieldPro",
6
6
  "MultiSelectFieldPro",
7
- "SingleSelectFieldPro",
8
- "DateRangePickerCustomPro",
9
7
  "MeasureSingleSelectFieldPro",
10
- "BarChartDefaultPro",
11
- "DonutLabelChartPro",
8
+ "DateRangePickerCustomPro",
9
+ "GranularitySelectFieldPro",
10
+ "SingleSelectFieldPro",
11
+ "DateRangeSelectFieldPro",
12
+ "BarChartDefaultHorizontalPro",
12
13
  "BarChartGroupedPro",
14
+ "BarChartGroupedHorizontalPro",
15
+ "KpiChartNumberPro",
16
+ "BarChartDefaultPro",
13
17
  "BarChartStackedHorizontalPro",
18
+ "LineChartGroupedPro",
19
+ "LineChartDefaultPro",
20
+ "LineChartComparisonDefaultPro",
14
21
  "BarChartStackedPro",
15
22
  "KpiChartNumberComparisonPro",
16
23
  "DonutChartPro",
17
- "KpiChartNumberPro",
18
- "LineChartDefaultPro",
19
- "BarChartDefaultHorizontalPro",
20
- "LineChartComparisonDefaultPro",
21
- "PieChartPro",
22
- "BarChartGroupedHorizontalPro",
23
- "DateRangeSelectFieldPro",
24
- "GranularitySelectFieldPro",
25
- "LineChartGroupedPro",
26
24
  "PivotTablePro",
27
- "TableChartPaginated",
28
- "TableScrollable",
25
+ "DonutLabelChartPro",
26
+ "PieChartPro",
29
27
  "HorizontalDividerPro",
30
- "HeatMapPro"
28
+ "HeatMapPro",
29
+ "TableChartPaginated",
30
+ "TableScrollable"
31
31
  ],
32
32
  "editors": [
33
33
  "ColorEditor"
34
34
  ],
35
35
  "previews": [
36
36
  "EmptyBlockPro",
37
- "DimensionSingleSelectFieldPro",
38
37
  "ComparisonPeriodSelectFieldPro",
38
+ "DimensionSingleSelectFieldPro",
39
39
  "MultiSelectFieldPro",
40
- "SingleSelectFieldPro",
41
- "DateRangePickerCustomPro",
42
40
  "MeasureSingleSelectFieldPro",
43
- "BarChartDefaultPro",
44
- "DonutLabelChartPro",
41
+ "DateRangePickerCustomPro",
42
+ "GranularitySelectFieldPro",
43
+ "SingleSelectFieldPro",
44
+ "DateRangeSelectFieldPro",
45
+ "BarChartDefaultHorizontalPro",
45
46
  "BarChartGroupedPro",
47
+ "BarChartGroupedHorizontalPro",
48
+ "KpiChartNumberPro",
49
+ "BarChartDefaultPro",
46
50
  "BarChartStackedHorizontalPro",
51
+ "LineChartGroupedPro",
52
+ "LineChartDefaultPro",
53
+ "LineChartComparisonDefaultPro",
47
54
  "BarChartStackedPro",
48
55
  "KpiChartNumberComparisonPro",
49
56
  "DonutChartPro",
50
- "KpiChartNumberPro",
51
- "LineChartDefaultPro",
52
- "BarChartDefaultHorizontalPro",
53
- "LineChartComparisonDefaultPro",
54
- "PieChartPro",
55
- "BarChartGroupedHorizontalPro",
56
- "DateRangeSelectFieldPro",
57
- "GranularitySelectFieldPro",
58
- "LineChartGroupedPro",
59
57
  "PivotTablePro",
60
- "TableChartPaginated",
61
- "TableScrollable",
58
+ "DonutLabelChartPro",
59
+ "PieChartPro",
62
60
  "HorizontalDividerPro",
63
- "HeatMapPro"
61
+ "HeatMapPro",
62
+ "TableChartPaginated",
63
+ "TableScrollable"
64
64
  ],
65
65
  "plugin": "react"
66
66
  }
@@ -0,0 +1,135 @@
1
+ import { j as P, t as X } from "./Color.type.emb-Bon3x9VC.js";
2
+ import { useTheme as Y } from "@embeddable.com/react";
3
+ import { a as Z, r as $, i as K } from "./component.utils-DubLDCwF.js";
4
+ import { C as ee } from "./ChartCard-BO7MZwqM.js";
5
+ import { useRef as te, useState as D, useEffect as oe } from "react";
6
+ import { u as S } from "./charts.fillGaps.hooks-C7KsWcZb.js";
7
+ import { g as x } from "./preview.data.constants-BeVHkWI3.js";
8
+ import { u as ne } from "./tables.hooks-fVC_4V5K.js";
9
+ const se = (t, e) => {
10
+ const o = x(e);
11
+ return t.measures.map((n) => {
12
+ var l, s;
13
+ return {
14
+ key: n.name,
15
+ label: o.dimensionOrMeasureTitle(n),
16
+ showAsPercentage: !!((l = n.inputs) != null && l.showAsPercentage),
17
+ percentageDecimalPlaces: ((s = n.inputs) == null ? void 0 : s.decimalPlaces) ?? 1,
18
+ accessor: (r) => r[n.name] == null ? t.displayNullAs : o.data(n, r[n.name])
19
+ };
20
+ });
21
+ }, R = (t, e) => {
22
+ const o = x(e);
23
+ return {
24
+ key: t.dimension.name,
25
+ label: o.dimensionOrMeasureTitle(t.dimension),
26
+ formatValue: (n) => o.data(t.dimension, n)
27
+ };
28
+ }, ae = (t) => t.filter((e) => {
29
+ var o;
30
+ return (o = e.inputs) == null ? void 0 : o.showColumnTotal;
31
+ }).map((e) => e.name), ie = (t) => t.filter((e) => {
32
+ var o;
33
+ return (o = e.inputs) == null ? void 0 : o.showRowTotal;
34
+ }).map((e) => e.name), re = (t, e, o = "asc") => [...t].sort((n, l) => n[e] < l[e] ? o === "asc" ? -1 : 1 : n[e] > l[e] ? o === "asc" ? 1 : -1 : 0), le = (t) => {
35
+ var p, b;
36
+ const e = Y();
37
+ Z(e);
38
+ const { title: o, description: n, tooltip: l } = $(t), {
39
+ resultsSubRows: s,
40
+ measures: r,
41
+ rowDimension: a,
42
+ subRowDimension: m,
43
+ columnDimension: c,
44
+ displayNullAs: F,
45
+ columnWidth: y,
46
+ firstColumnWidth: C,
47
+ hideMenu: M,
48
+ expandedRowKeys: w,
49
+ setExpandedRowKey: B
50
+ } = t, A = Array.from(
51
+ new Set((t.results.data ?? []).filter(Boolean).map((i) => i[c.name]))
52
+ ), j = Array.from(
53
+ new Set((t.results.data ?? []).filter(Boolean).map((i) => i[a.name]))
54
+ ), E = S({
55
+ results: t.results,
56
+ dimension: c
57
+ }), O = S({
58
+ results: E,
59
+ dimension: a
60
+ }), L = ne({
61
+ results: O,
62
+ columnOrder: A,
63
+ rowOrder: j,
64
+ columnDimension: c,
65
+ rowDimension: a,
66
+ measures: r
67
+ }), G = te(null), _ = se({ measures: r, displayNullAs: F }, e), k = R({ dimension: a }, e), N = m ? R({ dimension: m }, e) : void 0, W = R({ dimension: c }, e), z = ae(r), I = ie(r), [V, g] = D(/* @__PURE__ */ new Set()), [q, H] = D(/* @__PURE__ */ new Map()), J = (i) => {
68
+ g((u) => new Set(u).add(i)), B(i);
69
+ };
70
+ oe(() => {
71
+ if (!s || !(s != null && s.data) || w.length === 0)
72
+ return;
73
+ const i = /* @__PURE__ */ new Map();
74
+ w.forEach((u) => {
75
+ var h, v;
76
+ if ((h = s.data) == null ? void 0 : h.some(
77
+ (d) => String(d[a.name]) === u
78
+ )) {
79
+ const d = ((v = s.data) == null ? void 0 : v.filter((f) => String(f[a.name]) === u)) ?? [], U = m ? re(d, m.name, "asc") : d;
80
+ i.set(u, U), g((f) => {
81
+ const T = new Set(f);
82
+ return T.delete(u), T;
83
+ });
84
+ }
85
+ }), H(i);
86
+ }, [s, w, a, m]);
87
+ const Q = {
88
+ ...t.results,
89
+ isLoading: !!((p = t.results) != null && p.isLoading || s != null && s.isLoading)
90
+ };
91
+ return /* @__PURE__ */ P.jsx(
92
+ ee,
93
+ {
94
+ ref: G,
95
+ title: o,
96
+ description: n,
97
+ tooltip: l,
98
+ data: Q,
99
+ dimensionsAndMeasures: [a, c, ...r],
100
+ errorMessage: (b = t.results) == null ? void 0 : b.error,
101
+ hideMenu: M,
102
+ children: /* @__PURE__ */ P.jsx(
103
+ X,
104
+ {
105
+ firstColumnWidth: C,
106
+ columnWidth: y,
107
+ totalLabel: K.t("charts.pivotTable.total"),
108
+ data: L,
109
+ measures: _,
110
+ rowDimension: k,
111
+ columnDimension: W,
112
+ columnTotalsFor: z,
113
+ rowTotalsFor: I,
114
+ expandableRows: !!m,
115
+ subRowsByRow: q,
116
+ loadingRows: V,
117
+ onRowExpand: J,
118
+ subRowDimension: N
119
+ }
120
+ )
121
+ }
122
+ );
123
+ }, be = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
124
+ __proto__: null,
125
+ default: le
126
+ }, Symbol.toStringTag, { value: "Module" }));
127
+ export {
128
+ le as P,
129
+ R as a,
130
+ se as b,
131
+ ie as c,
132
+ ae as g,
133
+ be as i
134
+ };
135
+ //# sourceMappingURL=index-ezkJ1Yt0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-B329Sipk.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.utils.ts","../src/utils/array.utils.ts","../src/components/charts/tables/PivotTablePro/index.tsx"],"sourcesContent":["import { Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { PivotTableProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getPivotMeasures = (\n props: { measures: Measure[]; displayNullAs?: string },\n theme: Theme,\n): PivotTableProps<any>['measures'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return props.measures.map((measure) => {\n return {\n key: measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n showAsPercentage: Boolean(measure.inputs?.showAsPercentage),\n percentageDecimalPlaces: measure.inputs?.decimalPlaces ?? 1,\n accessor: (row) => {\n const value = row[measure.name];\n\n return value == null\n ? props.displayNullAs\n : themeFormatter.data(measure, row[measure.name]);\n },\n };\n });\n};\n\nexport const getPivotDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n): PivotTableProps<any>['rowDimension' | 'columnDimension'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n formatValue: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nexport const getPivotColumnTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['columnTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showColumnTotal).map((m) => m.name);\n};\n\nexport const getPivotRowTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['rowTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showRowTotal).map((m) => m.name);\n};\n","export const sortArrayByProp = <T, K extends keyof T>(\n arr: T[],\n prop: K,\n order: 'asc' | 'desc' = 'asc',\n): T[] => {\n return [...arr].sort((a, b) => {\n if (a[prop] < b[prop]) return order === 'asc' ? -1 : 1;\n if (a[prop] > b[prop]) return order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { PivotTable } from '@embeddable.com/remarkable-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport {\n getPivotColumnTotalsFor,\n getPivotDimension,\n getPivotMeasures,\n getPivotRowTotalsFor,\n} from './PivotPro.utils';\nimport { useGetTableSortedResults } from '../tables.hooks';\nimport { sortArrayByProp } from '../../../../utils/array.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type PivotTableProProps = {\n results: DataResponse;\n resultsSubRows?: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n subRowDimension?: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\n expandedRowKeys: string[];\n setExpandedRowKey: (expandedRowKeys: string) => void;\n} & ChartCardHeaderProps;\n\nconst PivotTablePro = (props: PivotTableProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip } = resolveI18nProps(props);\n const {\n resultsSubRows,\n measures,\n rowDimension,\n subRowDimension,\n columnDimension,\n displayNullAs,\n columnWidth,\n firstColumnWidth,\n hideMenu,\n expandedRowKeys,\n setExpandedRowKey,\n } = props;\n\n const columnOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[columnDimension.name])),\n );\n\n const rowOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[rowDimension.name])),\n );\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const resultsRowColumnDimensionFillGaps = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const results = useGetTableSortedResults({\n results: resultsRowColumnDimensionFillGaps,\n columnOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n });\n\n const cardContentRef = useRef<HTMLDivElement>(null);\n\n const pivotMeasures = getPivotMeasures({ measures, displayNullAs }, theme);\n const pivotRowDimension = getPivotDimension({ dimension: rowDimension }, theme);\n const pivotSubRowDimension = subRowDimension\n ? getPivotDimension({ dimension: subRowDimension }, theme)\n : undefined;\n const pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\n\n const [loadingRows, setLoadingRows] = useState(new Set<string>());\n const [subRowsByRow, setSubRowsByRow] = useState(new Map<string, any[]>());\n\n const handleRowExpand = (rowKey: string) => {\n setLoadingRows((prev) => new Set(prev).add(rowKey));\n setExpandedRowKey(rowKey);\n };\n\n useEffect(() => {\n // No results or no expandedRowKeys, nothing to load\n if (!resultsSubRows || !resultsSubRows?.data || expandedRowKeys.length === 0) {\n return;\n }\n\n const subRowsByRowData = new Map<string, any[]>();\n expandedRowKeys.forEach((rowKey) => {\n const containsSubRow = resultsSubRows.data?.some(\n (row) => String(row[rowDimension.name]) === rowKey,\n );\n\n if (containsSubRow) {\n const subRows =\n resultsSubRows.data?.filter((row) => String(row[rowDimension.name]) === rowKey) ?? [];\n const subRowsSorted = subRowDimension\n ? sortArrayByProp(subRows, subRowDimension.name, 'asc')\n : subRows;\n\n subRowsByRowData.set(rowKey, subRowsSorted);\n }\n\n setLoadingRows((prev) => {\n const next = new Set(prev);\n next.delete(rowKey);\n return next;\n });\n });\n setSubRowsByRow(subRowsByRowData);\n }, [resultsSubRows, expandedRowKeys, rowDimension, subRowDimension]);\n\n return (\n <ChartCard\n ref={cardContentRef}\n title={title}\n description={description}\n tooltip={tooltip}\n data={props.results}\n dimensionsAndMeasures={[rowDimension, columnDimension, ...measures]}\n errorMessage={props.results?.error}\n hideMenu={hideMenu}\n >\n <PivotTable\n firstColumnWidth={firstColumnWidth}\n columnWidth={columnWidth}\n totalLabel={i18n.t('charts.pivotTable.total')}\n data={results}\n measures={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n columnTotalsFor={pivotColumnTotalsFor}\n rowTotalsFor={pivotRowTotalsFor}\n expandableRows={Boolean(subRowDimension)}\n subRowsByRow={subRowsByRow}\n loadingRows={loadingRows}\n onRowExpand={handleRowExpand}\n subRowDimension={pivotSubRowDimension}\n />\n </ChartCard>\n );\n};\n\nexport default PivotTablePro;\n"],"names":["getPivotMeasures","props","theme","themeFormatter","getThemeFormatter","measure","_a","_b","row","getPivotDimension","value","getPivotColumnTotalsFor","measures","m","getPivotRowTotalsFor","sortArrayByProp","arr","prop","order","a","b","PivotTablePro","useTheme","i18nSetup","title","description","tooltip","resolveI18nProps","resultsSubRows","rowDimension","subRowDimension","columnDimension","displayNullAs","columnWidth","firstColumnWidth","hideMenu","expandedRowKeys","setExpandedRowKey","columnOrder","d","rowOrder","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","results","useGetTableSortedResults","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotSubRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","loadingRows","setLoadingRows","useState","subRowsByRow","setSubRowsByRow","handleRowExpand","rowKey","prev","useEffect","subRowsByRowData","subRows","subRowsSorted","next","jsx","ChartCard","PivotTable","i18n"],"mappings":"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"}
1
+ {"version":3,"file":"index-ezkJ1Yt0.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.utils.ts","../src/utils/array.utils.ts","../src/components/charts/tables/PivotTablePro/index.tsx"],"sourcesContent":["import { Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { PivotTableProps } from '@embeddable.com/remarkable-ui';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const getPivotMeasures = (\n props: { measures: Measure[]; displayNullAs?: string },\n theme: Theme,\n): PivotTableProps<any>['measures'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return props.measures.map((measure) => {\n return {\n key: measure.name,\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n showAsPercentage: Boolean(measure.inputs?.showAsPercentage),\n percentageDecimalPlaces: measure.inputs?.decimalPlaces ?? 1,\n accessor: (row) => {\n const value = row[measure.name];\n\n return value == null\n ? props.displayNullAs\n : themeFormatter.data(measure, row[measure.name]);\n },\n };\n });\n};\n\nexport const getPivotDimension = (\n props: { dimension: Dimension },\n theme: Theme,\n): PivotTableProps<any>['rowDimension' | 'columnDimension'] => {\n const themeFormatter = getThemeFormatter(theme);\n\n return {\n key: props.dimension.name,\n label: themeFormatter.dimensionOrMeasureTitle(props.dimension),\n formatValue: (value: string) => themeFormatter.data(props.dimension, value),\n };\n};\n\nexport const getPivotColumnTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['columnTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showColumnTotal).map((m) => m.name);\n};\n\nexport const getPivotRowTotalsFor = (\n measures: Measure[],\n): PivotTableProps<any>['rowTotalsFor'] | undefined => {\n return measures.filter((m) => m.inputs?.showRowTotal).map((m) => m.name);\n};\n","export const sortArrayByProp = <T, K extends keyof T>(\n arr: T[],\n prop: K,\n order: 'asc' | 'desc' = 'asc',\n): T[] => {\n return [...arr].sort((a, b) => {\n if (a[prop] < b[prop]) return order === 'asc' ? -1 : 1;\n if (a[prop] > b[prop]) return order === 'asc' ? 1 : -1;\n return 0;\n });\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { i18n, i18nSetup } from '../../../../theme/i18n/i18n';\nimport { ChartCard, ChartCardHeaderProps } from '../../shared/ChartCard/ChartCard';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { PivotTable } from '@embeddable.com/remarkable-ui';\nimport { useEffect, useRef, useState } from 'react';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport {\n getPivotColumnTotalsFor,\n getPivotDimension,\n getPivotMeasures,\n getPivotRowTotalsFor,\n} from './PivotPro.utils';\nimport { useGetTableSortedResults } from '../tables.hooks';\nimport { sortArrayByProp } from '../../../../utils/array.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type PivotTableProProps = {\n results: DataResponse;\n resultsSubRows?: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n subRowDimension?: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\n expandedRowKeys: string[];\n setExpandedRowKey: (expandedRowKeys: string) => void;\n} & ChartCardHeaderProps;\n\nconst PivotTablePro = (props: PivotTableProProps) => {\n const theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, tooltip } = resolveI18nProps(props);\n const {\n resultsSubRows,\n measures,\n rowDimension,\n subRowDimension,\n columnDimension,\n displayNullAs,\n columnWidth,\n firstColumnWidth,\n hideMenu,\n expandedRowKeys,\n setExpandedRowKey,\n } = props;\n\n const columnOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[columnDimension.name])),\n );\n\n const rowOrder = Array.from(\n new Set((props.results.data ?? []).filter(Boolean).map((d) => d[rowDimension.name])),\n );\n\n // Fill gaps for the column dimension\n const resultsColumnDimensionFillGaps = useFillGaps({\n results: props.results,\n dimension: columnDimension,\n });\n\n // Fill gaps for the row dimension\n const resultsRowColumnDimensionFillGaps = useFillGaps({\n results: resultsColumnDimensionFillGaps,\n dimension: rowDimension,\n });\n\n const results = useGetTableSortedResults({\n results: resultsRowColumnDimensionFillGaps,\n columnOrder,\n rowOrder,\n columnDimension,\n rowDimension,\n measures,\n });\n\n const cardContentRef = useRef<HTMLDivElement>(null);\n\n const pivotMeasures = getPivotMeasures({ measures, displayNullAs }, theme);\n const pivotRowDimension = getPivotDimension({ dimension: rowDimension }, theme);\n const pivotSubRowDimension = subRowDimension\n ? getPivotDimension({ dimension: subRowDimension }, theme)\n : undefined;\n const pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\n\n const [loadingRows, setLoadingRows] = useState(new Set<string>());\n const [subRowsByRow, setSubRowsByRow] = useState(new Map<string, any[]>());\n\n const handleRowExpand = (rowKey: string) => {\n setLoadingRows((prev) => new Set(prev).add(rowKey));\n setExpandedRowKey(rowKey);\n };\n\n useEffect(() => {\n // No results or no expandedRowKeys, nothing to load\n if (!resultsSubRows || !resultsSubRows?.data || expandedRowKeys.length === 0) {\n return;\n }\n\n const subRowsByRowData = new Map<string, any[]>();\n expandedRowKeys.forEach((rowKey) => {\n const containsSubRow = resultsSubRows.data?.some(\n (row) => String(row[rowDimension.name]) === rowKey,\n );\n\n if (containsSubRow) {\n const subRows =\n resultsSubRows.data?.filter((row) => String(row[rowDimension.name]) === rowKey) ?? [];\n const subRowsSorted = subRowDimension\n ? sortArrayByProp(subRows, subRowDimension.name, 'asc')\n : subRows;\n\n subRowsByRowData.set(rowKey, subRowsSorted);\n setLoadingRows((prev) => {\n const next = new Set(prev);\n next.delete(rowKey);\n return next;\n });\n }\n });\n setSubRowsByRow(subRowsByRowData);\n }, [resultsSubRows, expandedRowKeys, rowDimension, subRowDimension]);\n\n const data: DataResponse = {\n ...props.results,\n isLoading: Boolean(props.results?.isLoading || resultsSubRows?.isLoading),\n };\n\n return (\n <ChartCard\n ref={cardContentRef}\n title={title}\n description={description}\n tooltip={tooltip}\n data={data}\n dimensionsAndMeasures={[rowDimension, columnDimension, ...measures]}\n errorMessage={props.results?.error}\n hideMenu={hideMenu}\n >\n <PivotTable\n firstColumnWidth={firstColumnWidth}\n columnWidth={columnWidth}\n totalLabel={i18n.t('charts.pivotTable.total')}\n data={results}\n measures={pivotMeasures}\n rowDimension={pivotRowDimension}\n columnDimension={pivotColumnDimension}\n columnTotalsFor={pivotColumnTotalsFor}\n rowTotalsFor={pivotRowTotalsFor}\n expandableRows={Boolean(subRowDimension)}\n subRowsByRow={subRowsByRow}\n loadingRows={loadingRows}\n onRowExpand={handleRowExpand}\n subRowDimension={pivotSubRowDimension}\n />\n </ChartCard>\n );\n};\n\nexport default PivotTablePro;\n"],"names":["getPivotMeasures","props","theme","themeFormatter","getThemeFormatter","measure","_a","_b","row","getPivotDimension","value","getPivotColumnTotalsFor","measures","m","getPivotRowTotalsFor","sortArrayByProp","arr","prop","order","a","b","PivotTablePro","useTheme","i18nSetup","title","description","tooltip","resolveI18nProps","resultsSubRows","rowDimension","subRowDimension","columnDimension","displayNullAs","columnWidth","firstColumnWidth","hideMenu","expandedRowKeys","setExpandedRowKey","columnOrder","d","rowOrder","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","results","useGetTableSortedResults","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotSubRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","loadingRows","setLoadingRows","useState","subRowsByRow","setSubRowsByRow","handleRowExpand","rowKey","prev","useEffect","subRowsByRowData","subRows","subRowsSorted","next","data","jsx","ChartCard","PivotTable","i18n"],"mappings":";;;;;;;;AAOO,MAAMA,KAAmB,CAC9BC,GACAC,MACqC;AACrC,QAAMC,IAAiBC,EAAkBF,CAAK;AAE9C,SAAOD,EAAM,SAAS,IAAI,CAACI,MAAY;;AACrC,WAAO;AAAA,MACL,KAAKA,EAAQ;AAAA,MACb,OAAOF,EAAe,wBAAwBE,CAAO;AAAA,MACrD,kBAAkB,IAAQC,IAAAD,EAAQ,WAAR,QAAAC,EAAgB;AAAA,MAC1C,2BAAyBC,IAAAF,EAAQ,WAAR,gBAAAE,EAAgB,kBAAiB;AAAA,MAC1D,UAAU,CAACC,MACKA,EAAIH,EAAQ,IAAI,KAEd,OACZJ,EAAM,gBACNE,EAAe,KAAKE,GAASG,EAAIH,EAAQ,IAAI,CAAC;AAAA,IACpD;AAAA,EAEJ,CAAC;AACH,GAEaI,IAAoB,CAC/BR,GACAC,MAC6D;AAC7D,QAAMC,IAAiBC,EAAkBF,CAAK;AAE9C,SAAO;AAAA,IACL,KAAKD,EAAM,UAAU;AAAA,IACrB,OAAOE,EAAe,wBAAwBF,EAAM,SAAS;AAAA,IAC7D,aAAa,CAACS,MAAkBP,EAAe,KAAKF,EAAM,WAAWS,CAAK;AAAA,EAAA;AAE9E,GAEaC,KAA0B,CACrCC,MAEOA,EAAS,OAAO,CAACC,MAAA;;AAAM,UAAAP,IAAAO,EAAE,WAAF,gBAAAP,EAAU;AAAA,CAAe,EAAE,IAAI,CAACO,MAAMA,EAAE,IAAI,GAG/DC,KAAuB,CAClCF,MAEOA,EAAS,OAAO,CAACC,MAAA;;AAAM,UAAAP,IAAAO,EAAE,WAAF,gBAAAP,EAAU;AAAA,CAAY,EAAE,IAAI,CAACO,MAAMA,EAAE,IAAI,GCpD5DE,KAAkB,CAC7BC,GACAC,GACAC,IAAwB,UAEjB,CAAC,GAAGF,CAAG,EAAE,KAAK,CAACG,GAAGC,MACnBD,EAAEF,CAAI,IAAIG,EAAEH,CAAI,IAAUC,MAAU,QAAQ,KAAK,IACjDC,EAAEF,CAAI,IAAIG,EAAEH,CAAI,IAAUC,MAAU,QAAQ,IAAI,KAC7C,CACR,GCyBGG,KAAgB,CAACpB,MAA8B;;AACnD,QAAMC,IAAQoB,EAAA;AACd,EAAAC,EAAUrB,CAAK;AAEf,QAAM,EAAE,OAAAsB,GAAO,aAAAC,GAAa,SAAAC,EAAA,IAAYC,EAAiB1B,CAAK,GACxD;AAAA,IACJ,gBAAA2B;AAAA,IACA,UAAAhB;AAAA,IACA,cAAAiB;AAAA,IACA,iBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA,IACEpC,GAEEqC,IAAc,MAAM;AAAA,IACxB,IAAI,KAAKrC,EAAM,QAAQ,QAAQ,CAAA,GAAI,OAAO,OAAO,EAAE,IAAI,CAACsC,MAAMA,EAAER,EAAgB,IAAI,CAAC,CAAC;AAAA,EAAA,GAGlFS,IAAW,MAAM;AAAA,IACrB,IAAI,KAAKvC,EAAM,QAAQ,QAAQ,CAAA,GAAI,OAAO,OAAO,EAAE,IAAI,CAACsC,MAAMA,EAAEV,EAAa,IAAI,CAAC,CAAC;AAAA,EAAA,GAI/EY,IAAiCC,EAAY;AAAA,IACjD,SAASzC,EAAM;AAAA,IACf,WAAW8B;AAAA,EAAA,CACZ,GAGKY,IAAoCD,EAAY;AAAA,IACpD,SAASD;AAAA,IACT,WAAWZ;AAAA,EAAA,CACZ,GAEKe,IAAUC,GAAyB;AAAA,IACvC,SAASF;AAAA,IACT,aAAAL;AAAA,IACA,UAAAE;AAAA,IACA,iBAAAT;AAAA,IACA,cAAAF;AAAA,IACA,UAAAjB;AAAA,EAAA,CACD,GAEKkC,IAAiBC,GAAuB,IAAI,GAE5CC,IAAgBhD,GAAiB,EAAE,UAAAY,GAAU,eAAAoB,EAAA,GAAiB9B,CAAK,GACnE+C,IAAoBxC,EAAkB,EAAE,WAAWoB,EAAA,GAAgB3B,CAAK,GACxEgD,IAAuBpB,IACzBrB,EAAkB,EAAE,WAAWqB,EAAA,GAAmB5B,CAAK,IACvD,QACEiD,IAAuB1C,EAAkB,EAAE,WAAWsB,EAAA,GAAmB7B,CAAK,GAC9EkD,IAAuBzC,GAAwBC,CAAQ,GACvDyC,IAAoBvC,GAAqBF,CAAQ,GAEjD,CAAC0C,GAAaC,CAAc,IAAIC,EAAS,oBAAI,KAAa,GAC1D,CAACC,GAAcC,CAAe,IAAIF,EAAS,oBAAI,KAAoB,GAEnEG,IAAkB,CAACC,MAAmB;AAC1C,IAAAL,EAAe,CAACM,MAAS,IAAI,IAAIA,CAAI,EAAE,IAAID,CAAM,CAAC,GAClDvB,EAAkBuB,CAAM;AAAA,EAC1B;AAEA,EAAAE,GAAU,MAAM;AAEd,QAAI,CAAClC,KAAkB,EAACA,KAAA,QAAAA,EAAgB,SAAQQ,EAAgB,WAAW;AACzE;AAGF,UAAM2B,wBAAuB,IAAA;AAC7B,IAAA3B,EAAgB,QAAQ,CAACwB,MAAW;;AAKlC,WAJuBtD,IAAAsB,EAAe,SAAf,gBAAAtB,EAAqB;AAAA,QAC1C,CAACE,MAAQ,OAAOA,EAAIqB,EAAa,IAAI,CAAC,MAAM+B;AAAA,SAG1B;AAClB,cAAMI,MACJzD,IAAAqB,EAAe,SAAf,gBAAArB,EAAqB,OAAO,CAACC,MAAQ,OAAOA,EAAIqB,EAAa,IAAI,CAAC,MAAM+B,OAAW,CAAA,GAC/EK,IAAgBnC,IAClBf,GAAgBiD,GAASlC,EAAgB,MAAM,KAAK,IACpDkC;AAEJ,QAAAD,EAAiB,IAAIH,GAAQK,CAAa,GAC1CV,EAAe,CAACM,MAAS;AACvB,gBAAMK,IAAO,IAAI,IAAIL,CAAI;AACzB,iBAAAK,EAAK,OAAON,CAAM,GACXM;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF,CAAC,GACDR,EAAgBK,CAAgB;AAAA,EAClC,GAAG,CAACnC,GAAgBQ,GAAiBP,GAAcC,CAAe,CAAC;AAEnE,QAAMqC,IAAqB;AAAA,IACzB,GAAGlE,EAAM;AAAA,IACT,WAAW,IAAQK,IAAAL,EAAM,YAAN,QAAAK,EAAe,aAAasB,KAAA,QAAAA,EAAgB;AAAA,EAAS;AAG1E,SACEwC,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAKvB;AAAA,MACL,OAAAtB;AAAA,MACA,aAAAC;AAAA,MACA,SAAAC;AAAA,MACA,MAAAyC;AAAA,MACA,uBAAuB,CAACtC,GAAcE,GAAiB,GAAGnB,CAAQ;AAAA,MAClE,eAAcL,IAAAN,EAAM,YAAN,gBAAAM,EAAe;AAAA,MAC7B,UAAA4B;AAAA,MAEA,UAAAiC,gBAAAA,EAAAA;AAAAA,QAACE;AAAA,QAAA;AAAA,UACC,kBAAApC;AAAA,UACA,aAAAD;AAAA,UACA,YAAYsC,EAAK,EAAE,yBAAyB;AAAA,UAC5C,MAAM3B;AAAA,UACN,UAAUI;AAAA,UACV,cAAcC;AAAA,UACd,iBAAiBE;AAAA,UACjB,iBAAiBC;AAAA,UACjB,cAAcC;AAAA,UACd,gBAAgB,EAAQvB;AAAA,UACxB,cAAA2B;AAAA,UACA,aAAAH;AAAA,UACA,aAAaK;AAAA,UACb,iBAAiBT;AAAA,QAAA;AAAA,MAAA;AAAA,IACnB;AAAA,EAAA;AAGN;;;;"}
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ import { i as He } from "./index-JCUdzaRx.js";
25
25
  import { i as Ke } from "./index-CMhOFWvJ.js";
26
26
  import { g as we, a as ze } from "./pies.utils-vTQtc_xP.js";
27
27
  import { i as We } from "./index-U8AIqj5k.js";
28
- import { i as _e, g as Ue, a as Ze, b as qe, c as Je } from "./index-B329Sipk.js";
28
+ import { i as _e, g as Ue, a as Ze, b as qe, c as Je } from "./index-ezkJ1Yt0.js";
29
29
  import { i as Ye } from "./index-DRlAqfj6.js";
30
30
  import { T as ea, i as aa } from "./index-C2Wozewk.js";
31
31
  import { g as oa, a as ta, b as sa, c as ia } from "./tables.utils-DS3rr8kb.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@embeddable.com/remarkable-pro",
3
3
  "author": "embeddable (https://embeddable.com)",
4
- "version": "0.1.12",
4
+ "version": "0.1.13",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/embeddable-hq/remarkable-pro"
@@ -77,7 +77,7 @@
77
77
  },
78
78
  "devDependencies": {
79
79
  "@embeddable.com/sdk-core": "^4.1.12",
80
- "@embeddable.com/sdk-react": "^4.2.4",
80
+ "@embeddable.com/sdk-react": "^4.2.5",
81
81
  "@eslint/css": "^0.13.0",
82
82
  "@types/chroma-js": "^3.1.1",
83
83
  "@types/react": "^19.1.9",
@@ -1,131 +0,0 @@
1
- import { j as v, t as J } from "./Color.type.emb-Bon3x9VC.js";
2
- import { useTheme as Q } from "@embeddable.com/react";
3
- import { a as U, r as X, i as Y } from "./component.utils-DubLDCwF.js";
4
- import { C as Z } from "./ChartCard-BO7MZwqM.js";
5
- import { useRef as $, useState as T, useEffect as K } from "react";
6
- import { u as S } from "./charts.fillGaps.hooks-C7KsWcZb.js";
7
- import { g as P } from "./preview.data.constants-BeVHkWI3.js";
8
- import { u as ee } from "./tables.hooks-fVC_4V5K.js";
9
- const te = (t, e) => {
10
- const o = P(e);
11
- return t.measures.map((n) => {
12
- var l, s;
13
- return {
14
- key: n.name,
15
- label: o.dimensionOrMeasureTitle(n),
16
- showAsPercentage: !!((l = n.inputs) != null && l.showAsPercentage),
17
- percentageDecimalPlaces: ((s = n.inputs) == null ? void 0 : s.decimalPlaces) ?? 1,
18
- accessor: (r) => r[n.name] == null ? t.displayNullAs : o.data(n, r[n.name])
19
- };
20
- });
21
- }, R = (t, e) => {
22
- const o = P(e);
23
- return {
24
- key: t.dimension.name,
25
- label: o.dimensionOrMeasureTitle(t.dimension),
26
- formatValue: (n) => o.data(t.dimension, n)
27
- };
28
- }, oe = (t) => t.filter((e) => {
29
- var o;
30
- return (o = e.inputs) == null ? void 0 : o.showColumnTotal;
31
- }).map((e) => e.name), ne = (t) => t.filter((e) => {
32
- var o;
33
- return (o = e.inputs) == null ? void 0 : o.showRowTotal;
34
- }).map((e) => e.name), se = (t, e, o = "asc") => [...t].sort((n, l) => n[e] < l[e] ? o === "asc" ? -1 : 1 : n[e] > l[e] ? o === "asc" ? 1 : -1 : 0), ae = (t) => {
35
- var b;
36
- const e = Q();
37
- U(e);
38
- const { title: o, description: n, tooltip: l } = X(t), {
39
- resultsSubRows: s,
40
- measures: r,
41
- rowDimension: a,
42
- subRowDimension: m,
43
- columnDimension: d,
44
- displayNullAs: D,
45
- columnWidth: x,
46
- firstColumnWidth: F,
47
- hideMenu: y,
48
- expandedRowKeys: f,
49
- setExpandedRowKey: C
50
- } = t, M = Array.from(
51
- new Set((t.results.data ?? []).filter(Boolean).map((i) => i[d.name]))
52
- ), A = Array.from(
53
- new Set((t.results.data ?? []).filter(Boolean).map((i) => i[a.name]))
54
- ), B = S({
55
- results: t.results,
56
- dimension: d
57
- }), j = S({
58
- results: B,
59
- dimension: a
60
- }), E = ee({
61
- results: j,
62
- columnOrder: M,
63
- rowOrder: A,
64
- columnDimension: d,
65
- rowDimension: a,
66
- measures: r
67
- }), O = $(null), G = te({ measures: r, displayNullAs: D }, e), _ = R({ dimension: a }, e), k = m ? R({ dimension: m }, e) : void 0, L = R({ dimension: d }, e), N = oe(r), W = ne(r), [z, p] = T(/* @__PURE__ */ new Set()), [I, V] = T(/* @__PURE__ */ new Map()), q = (i) => {
68
- p((u) => new Set(u).add(i)), C(i);
69
- };
70
- return K(() => {
71
- if (!s || !(s != null && s.data) || f.length === 0)
72
- return;
73
- const i = /* @__PURE__ */ new Map();
74
- f.forEach((u) => {
75
- var g, h;
76
- if ((g = s.data) == null ? void 0 : g.some(
77
- (c) => String(c[a.name]) === u
78
- )) {
79
- const c = ((h = s.data) == null ? void 0 : h.filter((H) => String(H[a.name]) === u)) ?? [], w = m ? se(c, m.name, "asc") : c;
80
- i.set(u, w);
81
- }
82
- p((c) => {
83
- const w = new Set(c);
84
- return w.delete(u), w;
85
- });
86
- }), V(i);
87
- }, [s, f, a, m]), /* @__PURE__ */ v.jsx(
88
- Z,
89
- {
90
- ref: O,
91
- title: o,
92
- description: n,
93
- tooltip: l,
94
- data: t.results,
95
- dimensionsAndMeasures: [a, d, ...r],
96
- errorMessage: (b = t.results) == null ? void 0 : b.error,
97
- hideMenu: y,
98
- children: /* @__PURE__ */ v.jsx(
99
- J,
100
- {
101
- firstColumnWidth: F,
102
- columnWidth: x,
103
- totalLabel: Y.t("charts.pivotTable.total"),
104
- data: E,
105
- measures: G,
106
- rowDimension: _,
107
- columnDimension: L,
108
- columnTotalsFor: N,
109
- rowTotalsFor: W,
110
- expandableRows: !!m,
111
- subRowsByRow: I,
112
- loadingRows: z,
113
- onRowExpand: q,
114
- subRowDimension: k
115
- }
116
- )
117
- }
118
- );
119
- }, Re = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
120
- __proto__: null,
121
- default: ae
122
- }, Symbol.toStringTag, { value: "Module" }));
123
- export {
124
- ae as P,
125
- R as a,
126
- te as b,
127
- ne as c,
128
- oe as g,
129
- Re as i
130
- };
131
- //# sourceMappingURL=index-B329Sipk.js.map