@embeddable.com/remarkable-pro 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BarChartDefaultHorizontalPro.js +5 -5
- package/dist/BarChartDefaultPro.js +5 -5
- package/dist/BarChartGroupedHorizontalPro.js +5 -5
- package/dist/BarChartGroupedPro.js +5 -5
- package/dist/BarChartStackedHorizontalPro.js +5 -5
- package/dist/BarChartStackedPro.js +5 -5
- package/dist/ChartCard-BmBTN11g.js +117 -0
- package/dist/{ChartCard-lY9ll4LQ.js.map → ChartCard-BmBTN11g.js.map} +1 -1
- package/dist/{Color.type.emb-DyMeb06O.js → Color.type.emb-tRPNtuPs.js} +12868 -12752
- package/dist/Color.type.emb-tRPNtuPs.js.map +1 -0
- package/dist/ColorEditor.js +1 -1
- package/dist/ComparisonPeriodSelectFieldPro.js +3 -3
- package/dist/DateRangePickerCustomPro.js +4 -4
- package/dist/DateRangeSelectFieldPro.js +3 -3
- package/dist/{DimensionAndMeasureSingleSelectField-CauMjY7c.js → DimensionAndMeasureSingleSelectField-Bap43crU.js} +3 -3
- package/dist/{DimensionAndMeasureSingleSelectField-CauMjY7c.js.map → DimensionAndMeasureSingleSelectField-Bap43crU.js.map} +1 -1
- package/dist/DimensionSingleSelectFieldPro.js +5 -5
- package/dist/DonutChartPro.js +4 -4
- package/dist/DonutLabelChartPro.js +4 -4
- package/dist/{EditorCard-BT_swxOl.js → EditorCard-BEOWlY3S.js} +3 -3
- package/dist/{EditorCard-BT_swxOl.js.map → EditorCard-BEOWlY3S.js.map} +1 -1
- package/dist/{GranularitySelectField-BxO_3Xt9.js → GranularitySelectField-D0AUovNu.js} +3 -3
- package/dist/{GranularitySelectField-BxO_3Xt9.js.map → GranularitySelectField-D0AUovNu.js.map} +1 -1
- package/dist/GranularitySelectFieldPro.js +4 -4
- package/dist/HeatMapPro.js +4 -4
- package/dist/{IconCalendarFilled-CnWTSJdY.js → IconCalendarFilled-Dlxre0eW.js} +2 -2
- package/dist/{IconCalendarFilled-CnWTSJdY.js.map → IconCalendarFilled-Dlxre0eW.js.map} +1 -1
- package/dist/KpiChartNumberComparisonPro.js +4 -4
- package/dist/KpiChartNumberPro.js +4 -4
- package/dist/LineChartComparisonDefaultPro.js +5 -5
- package/dist/LineChartDefaultPro.js +5 -5
- package/dist/LineChartGroupedPro.js +5 -5
- package/dist/MeasureSingleSelectFieldPro.js +5 -5
- package/dist/MultiSelectFieldPro.js +4 -4
- package/dist/PieChartPro.js +4 -4
- package/dist/PivotTablePro.js +77 -43
- package/dist/PivotTablePro.js.map +1 -1
- package/dist/SingleSelectFieldPro.js +4 -4
- package/dist/TableChartPaginated.js +4 -4
- package/dist/TableScrollable.js +5 -5
- package/dist/{bars.utils-D67ef4lU.js → bars.utils-C6w2ekZW.js} +4 -4
- package/dist/{bars.utils-D67ef4lU.js.map → bars.utils-C6w2ekZW.js.map} +1 -1
- package/dist/{charts.utils-B3C8A2Nv.js → charts.utils-5taHDsqH.js} +1155 -1103
- package/dist/charts.utils-5taHDsqH.js.map +1 -0
- package/dist/{component.inputs.constants-DIuvtpIr.js → component.inputs.constants-DIZMtQw0.js} +2 -2
- package/dist/{component.inputs.constants-DIuvtpIr.js.map → component.inputs.constants-DIZMtQw0.js.map} +1 -1
- package/dist/components/charts/tables/PivotTablePro/index.d.ts +4 -0
- package/dist/components/charts/tables/PivotTablePro/index.d.ts.map +1 -1
- package/dist/components/charts/tables/tables.hooks.d.ts +2 -2
- package/dist/components/charts/tables/tables.hooks.d.ts.map +1 -1
- package/dist/embeddable-components.json +30 -30
- package/dist/embeddable-theme-0137e.js +485 -433
- package/dist/{formatter.utils-7mfdOwJE.js → formatter.utils-BuiHCNHH.js} +2 -2
- package/dist/{formatter.utils-7mfdOwJE.js.map → formatter.utils-BuiHCNHH.js.map} +1 -1
- package/dist/{granularity.utils-DOE6WosF.js → granularity.utils-DAAi-602.js} +5 -5
- package/dist/{granularity.utils-DOE6WosF.js.map → granularity.utils-DAAi-602.js.map} +1 -1
- package/dist/{index-BurrZuJv.js → index-B3L4DXwu.js} +6 -6
- package/dist/{index-BurrZuJv.js.map → index-B3L4DXwu.js.map} +1 -1
- package/dist/{index-DY_fdpVZ.js → index-B5__yodm.js} +5 -5
- package/dist/{index-DY_fdpVZ.js.map → index-B5__yodm.js.map} +1 -1
- package/dist/{index-Ddl-xnlO.js → index-B8IHON3t.js} +5 -5
- package/dist/{index-Ddl-xnlO.js.map → index-B8IHON3t.js.map} +1 -1
- package/dist/{index-xEBUfTFG.js → index-BDpQF_cG.js} +5 -5
- package/dist/{index-xEBUfTFG.js.map → index-BDpQF_cG.js.map} +1 -1
- package/dist/{index-CWbF9C-q.js → index-BKikv8mC.js} +6 -6
- package/dist/{index-CWbF9C-q.js.map → index-BKikv8mC.js.map} +1 -1
- package/dist/index-BL76s-yZ.js +127 -0
- package/dist/index-BL76s-yZ.js.map +1 -0
- package/dist/{index-DE1v51rj.js → index-BRywHn8j.js} +4 -4
- package/dist/{index-DE1v51rj.js.map → index-BRywHn8j.js.map} +1 -1
- package/dist/{index-CjHAwVRf.js → index-BSXcd7SN.js} +5 -5
- package/dist/{index-CjHAwVRf.js.map → index-BSXcd7SN.js.map} +1 -1
- package/dist/{index-DUbT-KRk.js → index-C3QKhnf_.js} +6 -6
- package/dist/{index-DUbT-KRk.js.map → index-C3QKhnf_.js.map} +1 -1
- package/dist/{index-Dqg161tJ.js → index-C4C09WJe.js} +6 -6
- package/dist/{index-Dqg161tJ.js.map → index-C4C09WJe.js.map} +1 -1
- package/dist/{index-CUSduRHI.js → index-CGmgAyAB.js} +5 -5
- package/dist/{index-CUSduRHI.js.map → index-CGmgAyAB.js.map} +1 -1
- package/dist/{index-Cqijl93L.js → index-CfscOxbu.js} +6 -6
- package/dist/{index-Cqijl93L.js.map → index-CfscOxbu.js.map} +1 -1
- package/dist/{index-GErBkwin.js → index-CvQFVQLU.js} +5 -5
- package/dist/{index-GErBkwin.js.map → index-CvQFVQLU.js.map} +1 -1
- package/dist/{index-LXoveu2D.js → index-D4nH7Tfx.js} +5 -5
- package/dist/{index-LXoveu2D.js.map → index-D4nH7Tfx.js.map} +1 -1
- package/dist/{index-CF3L0Llr.js → index-DJeAhPf-.js} +6 -6
- package/dist/{index-CF3L0Llr.js.map → index-DJeAhPf-.js.map} +1 -1
- package/dist/{index-lRdvXdHc.js → index-DQDBupb0.js} +7 -7
- package/dist/{index-lRdvXdHc.js.map → index-DQDBupb0.js.map} +1 -1
- package/dist/{index-RClH7rnf.js → index-De7NmChy.js} +6 -6
- package/dist/{index-RClH7rnf.js.map → index-De7NmChy.js.map} +1 -1
- package/dist/{index-CFrNEzVs.js → index-DhA_rNUY.js} +6 -6
- package/dist/{index-CFrNEzVs.js.map → index-DhA_rNUY.js.map} +1 -1
- package/dist/{index-D6MGD_eg.js → index-GK0v6bfO.js} +6 -6
- package/dist/{index-D6MGD_eg.js.map → index-GK0v6bfO.js.map} +1 -1
- package/dist/{index-CMQ1TgyS.js → index-SfB11gF_.js} +6 -6
- package/dist/{index-CMQ1TgyS.js.map → index-SfB11gF_.js.map} +1 -1
- package/dist/{index-C-nvYCGs.js → index-miobE3AH.js} +6 -6
- package/dist/{index-C-nvYCGs.js.map → index-miobE3AH.js.map} +1 -1
- package/dist/index.js +30 -30
- package/dist/{pies.utils-JJQ8gWX5.js → pies.utils-FfqwwwDi.js} +5 -5
- package/dist/{pies.utils-JJQ8gWX5.js.map → pies.utils-FfqwwwDi.js.map} +1 -1
- package/dist/{preview.data.constants-BsS2fJxn.js → preview.data.constants-DDnGcvzL.js} +2 -2
- package/dist/{preview.data.constants-BsS2fJxn.js.map → preview.data.constants-DDnGcvzL.js.map} +1 -1
- package/dist/remarkable-pro.css +1 -1
- package/dist/tables.hooks-DFEu8kZn.js +46 -0
- package/dist/tables.hooks-DFEu8kZn.js.map +1 -0
- package/dist/{tables.utils-Tmh4h7ni.js → tables.utils-CBn15nfE.js} +4 -4
- package/dist/{tables.utils-Tmh4h7ni.js.map → tables.utils-CBn15nfE.js.map} +1 -1
- package/dist/{timeRange.utils-BkBVvgvj.js → timeRange.utils-B4CCk0Na.js} +2 -2
- package/dist/{timeRange.utils-BkBVvgvj.js.map → timeRange.utils-B4CCk0Na.js.map} +1 -1
- package/dist/utils/array.utils.d.ts +2 -0
- package/dist/utils/array.utils.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/ChartCard-lY9ll4LQ.js +0 -117
- package/dist/Color.type.emb-DyMeb06O.js.map +0 -1
- package/dist/charts.utils-B3C8A2Nv.js.map +0 -1
- package/dist/index-QipF64Oq.js +0 -99
- package/dist/index-QipF64Oq.js.map +0 -1
- package/dist/tables.hooks-BQdyUxau.js +0 -45
- package/dist/tables.hooks-BQdyUxau.js.map +0 -1
package/dist/index-QipF64Oq.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { j as u, p as j } from "./Color.type.emb-DyMeb06O.js";
|
|
2
|
-
import { useTheme as x } from "@embeddable.com/react";
|
|
3
|
-
import { a as O, r as S, i as G } from "./component.inputs.constants-DIuvtpIr.js";
|
|
4
|
-
import { C as _ } from "./ChartCard-lY9ll4LQ.js";
|
|
5
|
-
import { useRef as B } from "react";
|
|
6
|
-
import { u as c } from "./charts.fillGaps.hooks-C7KsWcZb.js";
|
|
7
|
-
import { g as f } from "./formatter.utils-7mfdOwJE.js";
|
|
8
|
-
import { u as k } from "./tables.hooks-BQdyUxau.js";
|
|
9
|
-
const N = (e, t) => {
|
|
10
|
-
const o = f(t);
|
|
11
|
-
return e.measures.map((s) => {
|
|
12
|
-
var a, n;
|
|
13
|
-
return {
|
|
14
|
-
key: s.name,
|
|
15
|
-
label: o.dimensionOrMeasureTitle(s),
|
|
16
|
-
showAsPercentage: !!((a = s.inputs) != null && a.showAsPercentage),
|
|
17
|
-
percentageDecimalPlaces: ((n = s.inputs) == null ? void 0 : n.decimalPlaces) ?? 1,
|
|
18
|
-
accessor: (r) => r[s.name] == null ? e.displayNullAs : o.data(s, r[s.name])
|
|
19
|
-
};
|
|
20
|
-
});
|
|
21
|
-
}, d = (e, t) => {
|
|
22
|
-
const o = f(t);
|
|
23
|
-
return {
|
|
24
|
-
key: e.dimension.name,
|
|
25
|
-
label: o.dimensionOrMeasureTitle(e.dimension),
|
|
26
|
-
formatValue: (s) => o.data(e.dimension, s)
|
|
27
|
-
};
|
|
28
|
-
}, W = (e) => e.filter((t) => {
|
|
29
|
-
var o;
|
|
30
|
-
return (o = t.inputs) == null ? void 0 : o.showColumnTotal;
|
|
31
|
-
}).map((t) => t.name), z = (e) => e.filter((t) => {
|
|
32
|
-
var o;
|
|
33
|
-
return (o = t.inputs) == null ? void 0 : o.showRowTotal;
|
|
34
|
-
}).map((t) => t.name), E = (e) => {
|
|
35
|
-
var m;
|
|
36
|
-
const t = x();
|
|
37
|
-
O(t);
|
|
38
|
-
const { title: o, description: s, tooltip: a } = S(e), {
|
|
39
|
-
measures: n,
|
|
40
|
-
rowDimension: r,
|
|
41
|
-
columnDimension: i,
|
|
42
|
-
displayNullAs: p,
|
|
43
|
-
columnWidth: T,
|
|
44
|
-
firstColumnWidth: v,
|
|
45
|
-
hideMenu: h
|
|
46
|
-
} = e, w = Array.from(
|
|
47
|
-
new Set((e.results.data ?? []).filter(Boolean).map((l) => l[i.name]))
|
|
48
|
-
), P = Array.from(
|
|
49
|
-
new Set((e.results.data ?? []).filter(Boolean).map((l) => l[r.name]))
|
|
50
|
-
), g = c({
|
|
51
|
-
results: e.results,
|
|
52
|
-
dimension: i
|
|
53
|
-
}), F = c({
|
|
54
|
-
results: g,
|
|
55
|
-
dimension: r
|
|
56
|
-
}), C = k({
|
|
57
|
-
results: F,
|
|
58
|
-
columnOrder: w,
|
|
59
|
-
rowOrder: P,
|
|
60
|
-
columnDimension: i,
|
|
61
|
-
rowDimension: r,
|
|
62
|
-
measures: n
|
|
63
|
-
}), b = B(null), D = N({ measures: n, displayNullAs: p }, t), R = d({ dimension: r }, t), y = d({ dimension: i }, t), M = W(n), A = z(n);
|
|
64
|
-
return /* @__PURE__ */ u.jsx(
|
|
65
|
-
_,
|
|
66
|
-
{
|
|
67
|
-
ref: b,
|
|
68
|
-
title: o,
|
|
69
|
-
description: s,
|
|
70
|
-
tooltip: a,
|
|
71
|
-
data: e.results,
|
|
72
|
-
dimensionsAndMeasures: [r, i, ...n],
|
|
73
|
-
errorMessage: (m = e.results) == null ? void 0 : m.error,
|
|
74
|
-
hideMenu: h,
|
|
75
|
-
children: /* @__PURE__ */ u.jsx(
|
|
76
|
-
j,
|
|
77
|
-
{
|
|
78
|
-
firstColumnWidth: v,
|
|
79
|
-
columnWidth: T,
|
|
80
|
-
totalLabel: G.t("charts.pivotTable.total"),
|
|
81
|
-
data: C,
|
|
82
|
-
measures: D,
|
|
83
|
-
rowDimension: R,
|
|
84
|
-
columnDimension: y,
|
|
85
|
-
columnTotalsFor: M,
|
|
86
|
-
rowTotalsFor: A
|
|
87
|
-
}
|
|
88
|
-
)
|
|
89
|
-
}
|
|
90
|
-
);
|
|
91
|
-
}, U = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
92
|
-
__proto__: null,
|
|
93
|
-
default: E
|
|
94
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
95
|
-
export {
|
|
96
|
-
E as P,
|
|
97
|
-
U as i
|
|
98
|
-
};
|
|
99
|
-
//# sourceMappingURL=index-QipF64Oq.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-QipF64Oq.js","sources":["../src/components/charts/tables/PivotTablePro/PivotPro.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","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 { useRef } 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';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ntype PivotTableProProps = {\n results: DataResponse;\n measures: Measure[];\n rowDimension: Dimension;\n columnDimension: Dimension;\n displayNullAs?: string;\n columnWidth?: number;\n firstColumnWidth?: number;\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 measures,\n rowDimension,\n columnDimension,\n displayNullAs,\n columnWidth,\n firstColumnWidth,\n hideMenu,\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 pivotColumnDimension = getPivotDimension({ dimension: columnDimension }, theme);\n const pivotColumnTotalsFor = getPivotColumnTotalsFor(measures);\n const pivotRowTotalsFor = getPivotRowTotalsFor(measures);\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 />\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","PivotTablePro","useTheme","i18nSetup","title","description","tooltip","resolveI18nProps","rowDimension","columnDimension","displayNullAs","columnWidth","firstColumnWidth","hideMenu","columnOrder","d","rowOrder","resultsColumnDimensionFillGaps","useFillGaps","resultsRowColumnDimensionFillGaps","results","useGetTableSortedResults","cardContentRef","useRef","pivotMeasures","pivotRowDimension","pivotColumnDimension","pivotColumnTotalsFor","pivotRowTotalsFor","jsx","ChartCard","PivotTable","i18n"],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { useMemo as O } from "react";
|
|
2
|
-
function b(e) {
|
|
3
|
-
let t = 0, n = 0;
|
|
4
|
-
for (let u = 0; u < e.length - 1; u++) {
|
|
5
|
-
const s = e[u], r = e[u + 1];
|
|
6
|
-
s == null || r == null || (s < r ? t++ : s > r && n++);
|
|
7
|
-
}
|
|
8
|
-
return t > n ? "asc" : n > t ? "desc" : "equal";
|
|
9
|
-
}
|
|
10
|
-
function d(e) {
|
|
11
|
-
let t = 0, n = 0;
|
|
12
|
-
for (let u = 0; u < e.length - 1; u++) {
|
|
13
|
-
const s = e[u], r = e[u + 1];
|
|
14
|
-
s == null || r == null || (s < r ? t++ : s > r && n++);
|
|
15
|
-
}
|
|
16
|
-
return t > 0 && n > 0;
|
|
17
|
-
}
|
|
18
|
-
const T = (e) => (t, n) => e === "asc" ? t < n ? -1 : t > n ? 1 : 0 : e === "desc" ? t > n ? -1 : t < n ? 1 : 0 : 0, w = (e) => {
|
|
19
|
-
const t = e.results.data ?? [], n = t[0];
|
|
20
|
-
if (!n) return [];
|
|
21
|
-
const u = () => e.measures.reduce((r, o) => (r[o.name] = void 0, r), {}), s = (r, o, i) => {
|
|
22
|
-
if (!d(r))
|
|
23
|
-
return t;
|
|
24
|
-
const a = b(r), f = [...r].sort(T(a)).map((l) => {
|
|
25
|
-
const c = t.find(
|
|
26
|
-
(m) => m[o.name] === l && m[i.name] === n[i.name]
|
|
27
|
-
);
|
|
28
|
-
return c || {
|
|
29
|
-
...n,
|
|
30
|
-
[o.name]: l,
|
|
31
|
-
...u()
|
|
32
|
-
};
|
|
33
|
-
}), g = t.filter(
|
|
34
|
-
(l) => !f.some(
|
|
35
|
-
(c) => c[o.name] === l[o.name] && c[i.name] === l[i.name]
|
|
36
|
-
)
|
|
37
|
-
);
|
|
38
|
-
return [...f, ...g];
|
|
39
|
-
};
|
|
40
|
-
return d(e.columnOrder) ? s(e.columnOrder, e.columnDimension, e.rowDimension) : d(e.rowOrder) ? s(e.rowOrder, e.rowDimension, e.columnDimension) : t;
|
|
41
|
-
}, R = (e) => O(() => w(e), [e]);
|
|
42
|
-
export {
|
|
43
|
-
R as u
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=tables.hooks-BQdyUxau.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tables.hooks-BQdyUxau.js","sources":["../src/components/charts/tables/tables.hooks.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { useMemo } from 'react';\n\ntype Order = 'asc' | 'desc' | 'equal';\n\nfunction getTablePredominantOrder(arr: (string | number | boolean)[]): Order {\n let asc = 0;\n let desc = 0;\n\n for (let i = 0; i < arr.length - 1; i++) {\n const a = arr[i];\n const b = arr[i + 1];\n\n if (a == null || b == null) continue;\n\n if (a < b) asc++;\n else if (a > b) desc++;\n }\n\n if (asc > desc) return 'asc';\n if (desc > asc) return 'desc';\n return 'equal';\n}\n\nfunction isTableOrderMixed(arr: (string | number | boolean)[]): boolean {\n let asc = 0;\n let desc = 0;\n\n for (let i = 0; i < arr.length - 1; i++) {\n const a = arr[i];\n const b = arr[i + 1];\n\n if (a == null || b == null) continue;\n\n if (a < b) asc++;\n else if (a > b) desc++;\n }\n\n return asc > 0 && desc > 0;\n}\n\nconst getTableSortComparator = (order: Order) => {\n return <T>(a: T, b: T) => {\n if (order === 'asc') {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n if (order === 'desc') {\n return a > b ? -1 : a < b ? 1 : 0;\n }\n return 0;\n };\n};\n\ntype useGetTableSortedResultsProps = {\n results: DataResponse;\n columnOrder: (string | number | boolean)[];\n rowOrder: (string | number | boolean)[];\n columnDimension: Dimension;\n rowDimension: Dimension;\n measures: Measure[];\n};\n\nexport const getTableSortedResults = (props: useGetTableSortedResultsProps) => {\n const data = props.results.data ?? [];\n const firstRow = data[0];\n\n if (!firstRow) return [];\n\n const buildEmptyMeasures = () =>\n props.measures.reduce<Record<string, unknown>>((acc, measure) => {\n acc[measure.name] = undefined;\n return acc;\n }, {});\n\n const reorderByAxis = (\n axisOrder: (string | number | boolean)[],\n axisDimension: Dimension,\n fixedDimension: Dimension,\n ) => {\n if (!isTableOrderMixed(axisOrder)) {\n return data;\n }\n\n const order = getTablePredominantOrder(axisOrder);\n const sortedAxisOrder = [...axisOrder].sort(getTableSortComparator(order));\n\n // “Leader” rows: one per value in the axis order, at the fixed dimension’s first value\n const leaderRows = sortedAxisOrder.map((value) => {\n const existing = data.find(\n (x) =>\n x[axisDimension.name] === value &&\n x[fixedDimension.name] === firstRow[fixedDimension.name],\n );\n\n if (existing) return existing;\n\n return {\n ...firstRow,\n [axisDimension.name]: value,\n ...buildEmptyMeasures(),\n };\n });\n\n // Remove rows that are already covered by leaderRows (same [axis, fixed] tuple)\n const restResults = data.filter(\n (resultRow) =>\n !leaderRows.some(\n (leaderRow) =>\n leaderRow[axisDimension.name] === resultRow[axisDimension.name] &&\n leaderRow[fixedDimension.name] === resultRow[fixedDimension.name],\n ),\n );\n\n return [...leaderRows, ...restResults];\n };\n\n // Preserve original behavior: fix columns if mixed, otherwise rows if mixed\n if (isTableOrderMixed(props.columnOrder)) {\n return reorderByAxis(props.columnOrder, props.columnDimension, props.rowDimension);\n }\n\n if (isTableOrderMixed(props.rowOrder)) {\n return reorderByAxis(props.rowOrder, props.rowDimension, props.columnDimension);\n }\n\n return data;\n};\n\nexport const useGetTableSortedResults = (props: useGetTableSortedResultsProps) => {\n const results = useMemo(() => {\n return getTableSortedResults(props);\n }, [props]);\n return results;\n};\n"],"names":["getTablePredominantOrder","arr","asc","desc","i","a","b","isTableOrderMixed","getTableSortComparator","order","getTableSortedResults","props","data","firstRow","buildEmptyMeasures","acc","measure","reorderByAxis","axisOrder","axisDimension","fixedDimension","leaderRows","value","existing","x","restResults","resultRow","leaderRow","useGetTableSortedResults","useMemo"],"mappings":";AAKA,SAASA,EAAyBC,GAA2C;AAC3E,MAAIC,IAAM,GACNC,IAAO;AAEX,WAASC,IAAI,GAAGA,IAAIH,EAAI,SAAS,GAAGG,KAAK;AACvC,UAAMC,IAAIJ,EAAIG,CAAC,GACTE,IAAIL,EAAIG,IAAI,CAAC;AAEnB,IAAIC,KAAK,QAAQC,KAAK,SAElBD,IAAIC,IAAGJ,MACFG,IAAIC,KAAGH;AAAA,EAClB;AAEA,SAAID,IAAMC,IAAa,QACnBA,IAAOD,IAAY,SAChB;AACT;AAEA,SAASK,EAAkBN,GAA6C;AACtE,MAAIC,IAAM,GACNC,IAAO;AAEX,WAASC,IAAI,GAAGA,IAAIH,EAAI,SAAS,GAAGG,KAAK;AACvC,UAAMC,IAAIJ,EAAIG,CAAC,GACTE,IAAIL,EAAIG,IAAI,CAAC;AAEnB,IAAIC,KAAK,QAAQC,KAAK,SAElBD,IAAIC,IAAGJ,MACFG,IAAIC,KAAGH;AAAA,EAClB;AAEA,SAAOD,IAAM,KAAKC,IAAO;AAC3B;AAEA,MAAMK,IAAyB,CAACC,MACvB,CAAIJ,GAAMC,MACXG,MAAU,QACLJ,IAAIC,IAAI,KAAKD,IAAIC,IAAI,IAAI,IAE9BG,MAAU,SACLJ,IAAIC,IAAI,KAAKD,IAAIC,IAAI,IAAI,IAE3B,GAaEI,IAAwB,CAACC,MAAyC;AAC7E,QAAMC,IAAOD,EAAM,QAAQ,QAAQ,CAAA,GAC7BE,IAAWD,EAAK,CAAC;AAEvB,MAAI,CAACC,EAAU,QAAO,CAAA;AAEtB,QAAMC,IAAqB,MACzBH,EAAM,SAAS,OAAgC,CAACI,GAAKC,OACnDD,EAAIC,EAAQ,IAAI,IAAI,QACbD,IACN,CAAA,CAAE,GAEDE,IAAgB,CACpBC,GACAC,GACAC,MACG;AACH,QAAI,CAACb,EAAkBW,CAAS;AAC9B,aAAON;AAGT,UAAMH,IAAQT,EAAyBkB,CAAS,GAI1CG,IAHkB,CAAC,GAAGH,CAAS,EAAE,KAAKV,EAAuBC,CAAK,CAAC,EAGtC,IAAI,CAACa,MAAU;AAChD,YAAMC,IAAWX,EAAK;AAAA,QACpB,CAACY,MACCA,EAAEL,EAAc,IAAI,MAAMG,KAC1BE,EAAEJ,EAAe,IAAI,MAAMP,EAASO,EAAe,IAAI;AAAA,MAAA;AAG3D,aAAIG,KAEG;AAAA,QACL,GAAGV;AAAA,QACH,CAACM,EAAc,IAAI,GAAGG;AAAA,QACtB,GAAGR,EAAA;AAAA,MAAmB;AAAA,IAE1B,CAAC,GAGKW,IAAcb,EAAK;AAAA,MACvB,CAACc,MACC,CAACL,EAAW;AAAA,QACV,CAACM,MACCA,EAAUR,EAAc,IAAI,MAAMO,EAAUP,EAAc,IAAI,KAC9DQ,EAAUP,EAAe,IAAI,MAAMM,EAAUN,EAAe,IAAI;AAAA,MAAA;AAAA,IACpE;AAGJ,WAAO,CAAC,GAAGC,GAAY,GAAGI,CAAW;AAAA,EACvC;AAGA,SAAIlB,EAAkBI,EAAM,WAAW,IAC9BM,EAAcN,EAAM,aAAaA,EAAM,iBAAiBA,EAAM,YAAY,IAG/EJ,EAAkBI,EAAM,QAAQ,IAC3BM,EAAcN,EAAM,UAAUA,EAAM,cAAcA,EAAM,eAAe,IAGzEC;AACT,GAEagB,IAA2B,CAACjB,MACvBkB,EAAQ,MACfnB,EAAsBC,CAAK,GACjC,CAACA,CAAK,CAAC;"}
|