@embeddable.com/remarkable-ui 1.0.5 → 1.0.6

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.
Files changed (184) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +30 -29
  2. package/dist/BarChartDefaultHorizontalPro.js.map +1 -1
  3. package/dist/BarChartDefaultPro.js +35 -34
  4. package/dist/BarChartDefaultPro.js.map +1 -1
  5. package/dist/BarChartGroupedHorizontalPro.js +29 -28
  6. package/dist/BarChartGroupedHorizontalPro.js.map +1 -1
  7. package/dist/BarChartGroupedPro.js +40 -39
  8. package/dist/BarChartGroupedPro.js.map +1 -1
  9. package/dist/BarChartStackedHorizontalPro.js +28 -27
  10. package/dist/BarChartStackedHorizontalPro.js.map +1 -1
  11. package/dist/BarChartStackedPro.js +47 -46
  12. package/dist/BarChartStackedPro.js.map +1 -1
  13. package/dist/ChartCard-FOSghcoD.js +127 -0
  14. package/dist/ChartCard-FOSghcoD.js.map +1 -0
  15. package/dist/Color.type.emb-CTiA_AzI.js +9 -0
  16. package/dist/Color.type.emb-CTiA_AzI.js.map +1 -0
  17. package/dist/ColorEditor.js +38 -0
  18. package/dist/ColorEditor.js.map +1 -0
  19. package/dist/ComparisonPeriod.type.emb-CQ63PFtq.js +14 -0
  20. package/dist/{ComparisonPeriod.type.emb-D0_AP_PM.js.map → ComparisonPeriod.type.emb-CQ63PFtq.js.map} +1 -1
  21. package/dist/ComparisonPeriodSelectFieldPro.js +33 -32
  22. package/dist/ComparisonPeriodSelectFieldPro.js.map +1 -1
  23. package/dist/DateRangeSelectFieldPro.js +10 -8
  24. package/dist/DateRangeSelectFieldPro.js.map +1 -1
  25. package/dist/DonutChartPro.js +13 -12
  26. package/dist/DonutChartPro.js.map +1 -1
  27. package/dist/DonutLabelChartPro.js +16 -15
  28. package/dist/DonutLabelChartPro.js.map +1 -1
  29. package/dist/{EditorCard-BLudeyiZ.js → EditorCard-CB-re8Qn.js} +26 -25
  30. package/dist/EditorCard-CB-re8Qn.js.map +1 -0
  31. package/dist/{HeatMap-HTlj76CN.js → HeatMap-DwXoxYyu.js} +31 -31
  32. package/dist/{HeatMap-HTlj76CN.js.map → HeatMap-DwXoxYyu.js.map} +1 -1
  33. package/dist/HeatMapPro.js +84 -60
  34. package/dist/HeatMapPro.js.map +1 -1
  35. package/dist/KpiChart-lEsVao_M.js +110 -0
  36. package/dist/KpiChart-lEsVao_M.js.map +1 -0
  37. package/dist/KpiChartNumberComparisonPro.js +55 -53
  38. package/dist/KpiChartNumberComparisonPro.js.map +1 -1
  39. package/dist/KpiChartNumberPro.js +12 -11
  40. package/dist/KpiChartNumberPro.js.map +1 -1
  41. package/dist/LineChartComparisonDefaultPro.js +114 -106
  42. package/dist/LineChartComparisonDefaultPro.js.map +1 -1
  43. package/dist/LineChartDefaultPro.js +87 -84
  44. package/dist/LineChartDefaultPro.js.map +1 -1
  45. package/dist/LineChartGroupedPro.js +52 -51
  46. package/dist/LineChartGroupedPro.js.map +1 -1
  47. package/dist/MultiSelectFieldPro.js +10 -9
  48. package/dist/MultiSelectFieldPro.js.map +1 -1
  49. package/dist/PieChartPro.js +14 -13
  50. package/dist/PieChartPro.js.map +1 -1
  51. package/dist/{PivotTable-Diy2xzoH.js → PivotTable-DlBkWU2O.js} +8 -8
  52. package/dist/{PivotTable-Diy2xzoH.js.map → PivotTable-DlBkWU2O.js.map} +1 -1
  53. package/dist/PivotTablePro.js +48 -48
  54. package/dist/PivotTablePro.js.map +1 -1
  55. package/dist/SingleSelectField-ammJ2Zc2.js +110 -0
  56. package/dist/SingleSelectField-ammJ2Zc2.js.map +1 -0
  57. package/dist/SingleSelectFieldPro.js +9 -8
  58. package/dist/SingleSelectFieldPro.js.map +1 -1
  59. package/dist/TableChartPaginated.js +73 -72
  60. package/dist/TableChartPaginated.js.map +1 -1
  61. package/dist/TablePaginated-pVrIngVd.js +12448 -0
  62. package/dist/TablePaginated-pVrIngVd.js.map +1 -0
  63. package/dist/{bars.utils-CAMiF7iA.js → bars.utils-8ka9OKUG.js} +4 -4
  64. package/dist/{bars.utils-CAMiF7iA.js.map → bars.utils-8ka9OKUG.js.map} +1 -1
  65. package/dist/{charts.utils-Cw4SeX2m.js → charts.utils-Cbyzr0nO.js} +16149 -16144
  66. package/dist/charts.utils-Cbyzr0nO.js.map +1 -0
  67. package/dist/component.constants-VpbbPSIL.js +5452 -0
  68. package/dist/component.constants-VpbbPSIL.js.map +1 -0
  69. package/dist/embeddable-components.json +14 -12
  70. package/dist/embeddable-theme-2b917.js +16739 -16736
  71. package/dist/{embeddable-types-363c8.js → embeddable-types-df460.js} +21 -17
  72. package/dist/embeddable-types.js.map +1 -1
  73. package/dist/{formatter.utils-N2gk49ys.js → formatter.utils-BLz3TSY0.js} +2 -2
  74. package/dist/{formatter.utils-N2gk49ys.js.map → formatter.utils-BLz3TSY0.js.map} +1 -1
  75. package/dist/index-B7Pv2FEr.js +48 -0
  76. package/dist/{index-Dwe8JLUr.js.map → index-B7Pv2FEr.js.map} +1 -1
  77. package/dist/index-BYbp2vA7.js +57 -0
  78. package/dist/index-BYbp2vA7.js.map +1 -0
  79. package/dist/{index-Jm7acUco.js → index-CCJCuW1J.js} +37 -36
  80. package/dist/index-CCJCuW1J.js.map +1 -0
  81. package/dist/index-DcyTRz2V.js +63 -0
  82. package/dist/{index-DhfbSAKi.js.map → index-DcyTRz2V.js.map} +1 -1
  83. package/dist/{index-BOcQ7e6Q.js → index-DtmAIOuh.js} +25 -24
  84. package/dist/{index-BOcQ7e6Q.js.map → index-DtmAIOuh.js.map} +1 -1
  85. package/dist/index-mMCdUsGD.js +63 -0
  86. package/dist/{index-BKkfcfXT.js.map → index-mMCdUsGD.js.map} +1 -1
  87. package/dist/index.js +168 -169
  88. package/dist/index.js.map +1 -1
  89. package/dist/{pies.utils-E8f3Hj1h.js → pies.utils-Cr-a3NjZ.js} +15 -14
  90. package/dist/{pies.utils-E8f3Hj1h.js.map → pies.utils-Cr-a3NjZ.js.map} +1 -1
  91. package/dist/remarkable-pro/components/charts/kpis/KpiChartNumberComparisonPro/index.d.ts.map +1 -1
  92. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCard.d.ts +2 -2
  93. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCard.d.ts.map +1 -1
  94. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.d.ts +6 -2
  95. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.d.ts.map +1 -1
  96. package/dist/remarkable-pro/components/charts/tables/PivotTablePro/PivotPro.utils.d.ts +2 -3
  97. package/dist/remarkable-pro/components/charts/tables/PivotTablePro/PivotPro.utils.d.ts.map +1 -1
  98. package/dist/remarkable-pro/components/charts/tables/PivotTablePro/index.d.ts +0 -1
  99. package/dist/remarkable-pro/components/charts/tables/PivotTablePro/index.d.ts.map +1 -1
  100. package/dist/remarkable-pro/components/charts/tables/TableChartPaginated/index.d.ts.map +1 -1
  101. package/dist/remarkable-pro/components/component.constants.d.ts +0 -14
  102. package/dist/remarkable-pro/components/component.constants.d.ts.map +1 -1
  103. package/dist/remarkable-pro/components/editors/DateRangeSelectFieldPro/index.d.ts +1 -0
  104. package/dist/remarkable-pro/components/editors/DateRangeSelectFieldPro/index.d.ts.map +1 -1
  105. package/dist/remarkable-pro/editors/ColorEditor/index.d.ts +8 -0
  106. package/dist/remarkable-pro/editors/ColorEditor/index.d.ts.map +1 -0
  107. package/dist/remarkable-pro/theme/defaults/defaults.ChartCardMenu.constants.d.ts +17 -0
  108. package/dist/remarkable-pro/theme/defaults/defaults.ChartCardMenu.constants.d.ts.map +1 -0
  109. package/dist/remarkable-pro/theme/i18n/translations/de.d.ts.map +1 -1
  110. package/dist/remarkable-pro/theme/i18n/translations/en.d.ts.map +1 -1
  111. package/dist/remarkable-pro/theme/theme.constants.d.ts.map +1 -1
  112. package/dist/remarkable-pro/theme/theme.types.d.ts +2 -4
  113. package/dist/remarkable-pro/theme/theme.types.d.ts.map +1 -1
  114. package/dist/remarkable-pro/theme/utils/export.utils.d.ts +4 -4
  115. package/dist/remarkable-pro/theme/utils/export.utils.d.ts.map +1 -1
  116. package/dist/remarkable-ui/components/charts/kpis/KpiChart.d.ts.map +1 -1
  117. package/dist/remarkable-ui/components/charts/kpis/KpiChart.stories.d.ts +2 -1
  118. package/dist/remarkable-ui/components/charts/kpis/KpiChart.stories.d.ts.map +1 -1
  119. package/dist/remarkable-ui/components/charts/kpis/KpiChart.types.d.ts +2 -1
  120. package/dist/remarkable-ui/components/charts/kpis/KpiChart.types.d.ts.map +1 -1
  121. package/dist/remarkable-ui/components/charts/kpis/components/KpiChartChange.d.ts.map +1 -1
  122. package/dist/remarkable-ui/components/editors/selects/MultiSelectField/MultiSelectField.d.ts +1 -1
  123. package/dist/remarkable-ui/components/editors/selects/MultiSelectField/MultiSelectField.d.ts.map +1 -1
  124. package/dist/remarkable-ui/components/editors/selects/MultiSelectField/MultiSelectField.stories.d.ts +1 -1
  125. package/dist/remarkable-ui/components/editors/selects/MultiSelectField/MultiSelectField.stories.d.ts.map +1 -1
  126. package/dist/remarkable-ui/components/editors/selects/SingleSelectField/SingleSelectField.d.ts +3 -3
  127. package/dist/remarkable-ui/components/editors/selects/SingleSelectField/SingleSelectField.d.ts.map +1 -1
  128. package/dist/remarkable-ui/components/editors/selects/SingleSelectField/SingleSelectField.stories.d.ts +3 -3
  129. package/dist/remarkable-ui/components/editors/selects/SingleSelectField/SingleSelectField.stories.d.ts.map +1 -1
  130. package/dist/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectFieldContent.utils.d.ts +1 -1
  131. package/dist/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectFieldContent.utils.d.ts.map +1 -1
  132. package/dist/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectFieldOptions/SelectFieldCategory/SelectFieldCategory.d.ts.map +1 -0
  133. package/dist/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectFieldOptions/SelectFieldOption/SelectFieldOption.d.ts.map +1 -0
  134. package/dist/remarkable-ui/components/shared/Overlay/Overlay.d.ts +8 -0
  135. package/dist/remarkable-ui/components/shared/Overlay/Overlay.d.ts.map +1 -0
  136. package/dist/remarkable-ui/components/shared/Overlay/Overlay.stories.d.ts +10 -0
  137. package/dist/remarkable-ui/components/shared/Overlay/Overlay.stories.d.ts.map +1 -0
  138. package/dist/remarkable-ui/index.d.ts +3 -4
  139. package/dist/remarkable-ui/index.d.ts.map +1 -1
  140. package/dist/remarkable-ui.css +1 -1
  141. package/dist/{timeRange.utils-DuutFoIE.js → timeRange.utils-AEhW9Gu4.js} +2 -2
  142. package/dist/{timeRange.utils-DuutFoIE.js.map → timeRange.utils-AEhW9Gu4.js.map} +1 -1
  143. package/package.json +1 -1
  144. package/dist/ChartCard-BzLW_64B.js +0 -122
  145. package/dist/ChartCard-BzLW_64B.js.map +0 -1
  146. package/dist/ComparisonPeriod.type.emb-D0_AP_PM.js +0 -14
  147. package/dist/EditorCard-BLudeyiZ.js.map +0 -1
  148. package/dist/KpiChart-DWnEF3iA.js +0 -105
  149. package/dist/KpiChart-DWnEF3iA.js.map +0 -1
  150. package/dist/SingleSelectField-CX2hEN0u.js +0 -109
  151. package/dist/SingleSelectField-CX2hEN0u.js.map +0 -1
  152. package/dist/charts.utils-Cw4SeX2m.js.map +0 -1
  153. package/dist/component.constants-B5vygi6l.js +0 -17905
  154. package/dist/component.constants-B5vygi6l.js.map +0 -1
  155. package/dist/index-BKkfcfXT.js +0 -62
  156. package/dist/index-DhfbSAKi.js +0 -62
  157. package/dist/index-Dwe8JLUr.js +0 -47
  158. package/dist/index-Jm7acUco.js.map +0 -1
  159. package/dist/index-_mthkdMa.js +0 -56
  160. package/dist/index-_mthkdMa.js.map +0 -1
  161. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCard.stories.d.ts +0 -20
  162. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCard.stories.d.ts.map +0 -1
  163. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.constants.d.ts +0 -3
  164. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.constants.d.ts.map +0 -1
  165. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.stories.d.ts +0 -16
  166. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.stories.d.ts.map +0 -1
  167. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.types.d.ts +0 -16
  168. package/dist/remarkable-pro/components/charts/shared/ChartCard/ChartCardMenuPro/ChartCardMenuPro.types.d.ts.map +0 -1
  169. package/dist/remarkable-pro/components/editors/ComparisonPeriodSelectFieldPro/index.stories.d.ts +0 -12
  170. package/dist/remarkable-pro/components/editors/ComparisonPeriodSelectFieldPro/index.stories.d.ts.map +0 -1
  171. package/dist/remarkable-pro/components/editors/DateRangeSelectFieldPro/index.stories.d.ts +0 -17
  172. package/dist/remarkable-pro/components/editors/DateRangeSelectFieldPro/index.stories.d.ts.map +0 -1
  173. package/dist/remarkable-pro/components/editors/shared/EditorCard/EditorCard.stories.d.ts +0 -12
  174. package/dist/remarkable-pro/components/editors/shared/EditorCard/EditorCard.stories.d.ts.map +0 -1
  175. package/dist/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectListOptions/SelectFieldCategory/SelectFieldCategory.d.ts.map +0 -1
  176. package/dist/remarkable-ui/components/editors/selects/shared/SelectFieldContent/SelectListOptions/SelectFieldOption/SelectFieldOption.d.ts.map +0 -1
  177. package/dist/remarkable-ui/components/shared/PageOverlay/PageOverlay.d.ts +0 -3
  178. package/dist/remarkable-ui/components/shared/PageOverlay/PageOverlay.d.ts.map +0 -1
  179. package/dist/remarkable-ui/components/shared/PageOverlay/PageOverlay.stories.d.ts +0 -7
  180. package/dist/remarkable-ui/components/shared/PageOverlay/PageOverlay.stories.d.ts.map +0 -1
  181. package/dist/remarkable-ui/components/shared/PageOverlay/PageOverlay.types.d.ts +0 -7
  182. package/dist/remarkable-ui/components/shared/PageOverlay/PageOverlay.types.d.ts.map +0 -1
  183. /package/dist/remarkable-ui/components/editors/selects/shared/SelectFieldContent/{SelectListOptions → SelectFieldOptions}/SelectFieldCategory/SelectFieldCategory.d.ts +0 -0
  184. /package/dist/remarkable-ui/components/editors/selects/shared/SelectFieldContent/{SelectListOptions → SelectFieldOptions}/SelectFieldOption/SelectFieldOption.d.ts +0 -0
@@ -1,37 +1,38 @@
1
1
  import { useTheme as R, defineComponent as P } from "@embeddable.com/react";
2
- import { E as k, m as $, i as F, r as v, j as w, N as S, d as j, w as y, I as V, b as B, z as O, t as T, c as X, A as E, s as K, e as N, f as U, g as Y, x as q, y as z, p as W, q as _, u as H, V as D, o as J } from "./component.constants-B5vygi6l.js";
3
- import { C as Q } from "./ChartCard-BzLW_64B.js";
4
- import { g as M } from "./formatter.utils-N2gk49ys.js";
2
+ import { i as $, r as v, d as F, q as k, C as y, a as S, u as j, t as B, b as O, v as T, s as X, c as K, e as U, f as Y, x as q, y as E, l as N, n as W, o as _ } from "./component.constants-VpbbPSIL.js";
3
+ import { a as w, m as z, j as V, L as H, V as D, l as J } from "./TablePaginated-pVrIngVd.js";
4
+ import { C as Q } from "./ChartCard-FOSghcoD.js";
5
+ import { g as M } from "./formatter.utils-BLz3TSY0.js";
5
6
  import { g as Z, a as G } from "./object.utils-D_Zzon-H.js";
6
7
  import { s as I } from "./color.utils-CVyp-fGP.js";
7
8
  import "react";
8
9
  import { g as ee } from "./lines.utils-CFEUUo4k.js";
9
10
  import { u as ae } from "./charts.fillGaps.hooks-5WclK2CD.js";
10
- const se = (e, t) => {
11
- const c = M(t), { data: o = [], dimension: l, groupDimension: r, measure: n, hasMinMaxYAxisRange: m } = e, u = [...new Set(o.map((a) => a[l.name]).filter((a) => a != null))].sort(), d = [...new Set(o.map((a) => a[r.name]))].filter((a) => a != null), s = Z(t), i = d.map((a, x) => {
11
+ const se = (e, o) => {
12
+ const c = M(o), { data: t = [], dimension: l, groupDimension: r, measure: n, hasMinMaxYAxisRange: u } = e, m = [...new Set(t.map((a) => a[l.name]).filter((a) => a != null))].sort(), d = [...new Set(t.map((a) => a[r.name]))].filter((a) => a != null), s = Z(o), i = d.map((a, x) => {
12
13
  var p;
13
14
  const b = G(
14
15
  `${s}.charts.backgroundColors`,
15
16
  `${r.name}.${a}`,
16
- t.charts.backgroundColors ?? k,
17
+ o.charts.backgroundColors ?? w,
17
18
  x
18
19
  ), h = G(
19
20
  `${s}.charts.borderColors`,
20
21
  `${r.name}.${a}`,
21
- t.charts.borderColors ?? k,
22
+ o.charts.borderColors ?? w,
22
23
  x
23
24
  );
24
25
  return {
25
- clip: m,
26
+ clip: u,
26
27
  label: c.data(r, a),
27
28
  rawLabel: a,
28
29
  backgroundColor: I(b, 0.5),
29
30
  pointBackgroundColor: b,
30
31
  fill: (p = n.inputs) == null ? void 0 : p.fillUnderLine,
31
32
  borderColor: h,
32
- data: u.map((C) => {
33
+ data: m.map((C) => {
33
34
  var f;
34
- const g = o.find(
35
+ const g = t.find(
35
36
  (A) => A[r.name] === a && A[l.name] === C
36
37
  );
37
38
  return (g == null ? void 0 : g[n.name]) ?? ((f = n.inputs) != null && f.connectGaps ? 0 : null);
@@ -39,12 +40,12 @@ const se = (e, t) => {
39
40
  };
40
41
  });
41
42
  return {
42
- labels: u,
43
+ labels: m,
43
44
  datasets: i
44
45
  };
45
- }, ne = (e, t) => {
46
- var u, d;
47
- const { dimension: c, data: o, measure: l, onLineClicked: r } = e, n = M(t), m = {
46
+ }, ne = (e, o) => {
47
+ var m, d;
48
+ const { dimension: c, data: t, measure: l, onLineClicked: r } = e, n = M(o), u = {
48
49
  plugins: {
49
50
  datalabels: {
50
51
  labels: {
@@ -71,8 +72,8 @@ const se = (e, t) => {
71
72
  x: {
72
73
  ticks: {
73
74
  callback: (s) => {
74
- if (!o || !o.labels) return;
75
- const i = o.labels[Number(s)];
75
+ if (!t || !t.labels) return;
76
+ const i = t.labels[Number(s)];
76
77
  return n.data(c, i);
77
78
  }
78
79
  }
@@ -84,18 +85,18 @@ const se = (e, t) => {
84
85
  }
85
86
  }
86
87
  };
87
- return $(
88
+ return z(
88
89
  ee({ onLineClicked: r }),
89
- m,
90
- ((d = (u = t.charts) == null ? void 0 : u.lineChartGroupedPro) == null ? void 0 : d.options) || {}
90
+ u,
91
+ ((d = (m = o.charts) == null ? void 0 : m.lineChartGroupedPro) == null ? void 0 : d.options) || {}
91
92
  );
92
- }, te = (e) => {
93
- const t = R();
94
- F(t);
95
- const { title: c, description: o, xAxisLabel: l, yAxisLabel: r } = v(e), {
93
+ }, oe = (e) => {
94
+ const o = R();
95
+ $(o);
96
+ const { title: c, description: t, xAxisLabel: l, yAxisLabel: r } = v(e), {
96
97
  measure: n,
97
- xAxis: m,
98
- groupBy: u,
98
+ xAxis: u,
99
+ groupBy: m,
99
100
  reverseXAxis: d,
100
101
  showLegend: s,
101
102
  showLogarithmicScale: i,
@@ -110,26 +111,26 @@ const se = (e, t) => {
110
111
  }), C = se(
111
112
  {
112
113
  data: p.data,
113
- dimension: m,
114
- groupDimension: u,
114
+ dimension: u,
115
+ groupDimension: m,
115
116
  measure: n,
116
117
  hasMinMaxYAxisRange: h != null || b != null
117
118
  },
118
- t
119
+ o
119
120
  ), g = ne(
120
- { data: C, dimension: m, measure: n, onLineClicked: L },
121
- t
121
+ { data: C, dimension: u, measure: n, onLineClicked: L },
122
+ o
122
123
  );
123
- return /* @__PURE__ */ w.jsx(
124
+ return /* @__PURE__ */ V.jsx(
124
125
  Q,
125
126
  {
126
127
  data: p,
127
- dimensionsAndMeasures: [n, m, u],
128
+ dimensionsAndMeasures: [n, u, m],
128
129
  errorMessage: p.error,
129
- subtitle: o,
130
+ subtitle: t,
130
131
  title: c,
131
- children: /* @__PURE__ */ w.jsx(
132
- S,
132
+ children: /* @__PURE__ */ V.jsx(
133
+ H,
133
134
  {
134
135
  data: C,
135
136
  reverseXAxis: d,
@@ -146,34 +147,34 @@ const se = (e, t) => {
146
147
  )
147
148
  }
148
149
  );
149
- }, oe = {
150
+ }, te = {
150
151
  name: "LineChartGroupedPro",
151
152
  label: "Line Chart - Grouped",
152
153
  category: "Line Charts",
153
154
  inputs: [
154
- j,
155
+ F,
155
156
  {
156
- ...y,
157
+ ...k,
157
158
  inputs: [
158
- ...y.inputs,
159
- { ...V, name: "fillUnderLine", label: "Fill under line" },
160
- { ...V, name: "connectGaps", label: "Connect gaps", defaultValue: !0 }
159
+ ...k.inputs,
160
+ { ...y, name: "fillUnderLine", label: "Fill under line" },
161
+ { ...y, name: "connectGaps", label: "Connect gaps", defaultValue: !0 }
161
162
  ]
162
163
  },
163
- { ...B, name: "xAxis", label: "X-axis" },
164
- { ...O, name: "groupBy", label: "Group by" },
164
+ { ...S, name: "xAxis", label: "X-axis" },
165
+ { ...j, name: "groupBy", label: "Group by" },
166
+ B,
167
+ O,
165
168
  T,
166
169
  X,
167
- E,
168
170
  K,
169
- N,
170
171
  U,
171
172
  Y,
172
173
  q,
173
- z,
174
+ E,
175
+ N,
174
176
  W,
175
- _,
176
- H
177
+ _
177
178
  ],
178
179
  events: [
179
180
  {
@@ -193,7 +194,7 @@ const se = (e, t) => {
193
194
  ]
194
195
  }
195
196
  ]
196
- }, ge = P(te, oe, {
197
+ }, xe = P(oe, te, {
197
198
  props: (e) => ({
198
199
  ...e,
199
200
  results: J({
@@ -210,7 +211,7 @@ const se = (e, t) => {
210
211
  }
211
212
  });
212
213
  export {
213
- ge as default,
214
- oe as meta
214
+ xe as default,
215
+ te as meta
215
216
  };
216
217
  //# sourceMappingURL=LineChartGroupedPro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LineChartGroupedPro.js","sources":["../src/remarkable-pro/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.ts","../src/remarkable-pro/components/charts/lines/LineChartGroupedPro/index.tsx","../src/remarkable-pro/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.emb.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { mergician } from 'mergician';\nimport { getObjectStableKey } from '../../../../utils.ts/object.utils';\nimport { getColor } from '../../../../theme/styles/styles.utils';\nimport { setColorAlpha } from '../../../../utils.ts/color.utils';\nimport { chartContrastColors } from '../../../../../remarkable-ui';\nimport { getLineChartProOptions, LineChartProOptionsClick } from '../lines.utils';\n\nexport const getLineChartGroupedProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n hasMinMaxYAxisRange: boolean;\n },\n theme: Theme,\n): ChartData<'line'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure, hasMinMaxYAxisRange } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupBy = [...new Set(data.map((d) => d[groupDimension.name]))].filter((d) => d != null);\n\n const themeKey = getObjectStableKey(theme);\n\n const datasets: ChartData<'line'>['datasets'] = groupBy.map((groupByItem, index) => {\n const backgroundColor = getColor(\n `${themeKey}.charts.backgroundColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.backgroundColors ?? chartContrastColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.borderColors ?? chartContrastColors,\n index,\n );\n\n const dataset = {\n clip: hasMinMaxYAxisRange,\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor: setColorAlpha(backgroundColor, 0.5),\n pointBackgroundColor: backgroundColor,\n fill: measure.inputs?.['fillUnderLine'],\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimension.name] === groupByItem && d[dimension.name] === axisItem,\n );\n return record?.[measure.name] ?? (measure.inputs?.['connectGaps'] ? 0 : null);\n }),\n } as ChartData<'line'>['datasets'][number];\n\n return dataset;\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getLineChartGroupedProOptions = (\n options: {\n dimension: Dimension;\n measure: Measure;\n data: ChartData<'line'>;\n onLineClicked: LineChartProOptionsClick;\n },\n theme: Theme,\n): ChartOptions<'line'> => {\n const { dimension, data, measure, onLineClicked } = options;\n const themeFormatter = getThemeFormatter(theme);\n\n const lineChartOptions: ChartOptions<'line'> = {\n plugins: {\n datalabels: {\n labels: {\n value: {\n formatter: (value: string | number) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(dimension, label);\n },\n label: (context) => {\n const raw = context.raw as number;\n return `${context.dataset.label}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n };\n\n return mergician(\n getLineChartProOptions({ onLineClicked }),\n lineChartOptions,\n theme.charts?.lineChartGroupedPro?.options || {},\n );\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport {\n getLineChartGroupedProData,\n getLineChartGroupedProOptions,\n} from './LineChartGroupedPro.utils';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport { LineChartProOptionsClick } from '../lines.utils';\nimport { LineChart } from '../../../../../remarkable-ui';\n\nexport type LineChartGroupedProPropsOnLineClicked = {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n};\n\ntype LineChartGroupedProProp = {\n description: string;\n xAxis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n results: DataResponse;\n reverseXAxis: boolean;\n showLegend: boolean;\n showLogarithmicScale: boolean;\n showTooltips: boolean;\n showValueLabels: boolean;\n title: string;\n xAxisLabel: string;\n yAxisLabel: string;\n yAxisRangeMax?: number;\n yAxisRangeMin?: number;\n onLineClicked: LineChartProOptionsClick;\n};\n\nconst LineChartGroupedPro = (props: LineChartGroupedProProp) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n const {\n measure,\n xAxis,\n groupBy,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n yAxisRangeMax,\n yAxisRangeMin,\n onLineClicked,\n } = props;\n\n const results = useFillGaps({\n results: props.results,\n dimension: props.xAxis,\n });\n\n const data = getLineChartGroupedProData(\n {\n data: results.data,\n dimension: xAxis,\n groupDimension: groupBy,\n measure,\n hasMinMaxYAxisRange: Boolean(yAxisRangeMin != null || yAxisRangeMax != null),\n },\n\n theme,\n );\n const options = getLineChartGroupedProOptions(\n { data, dimension: xAxis, measure, onLineClicked },\n theme,\n );\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure, xAxis, groupBy]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\n >\n <LineChart\n data={data}\n reverseXAxis={reverseXAxis}\n showLegend={showLegend}\n showLogarithmicScale={showLogarithmicScale}\n showTooltips={showTooltips}\n showValueLabels={showValueLabels}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n yAxisRangeMax={yAxisRangeMax}\n yAxisRangeMin={yAxisRangeMin}\n options={options}\n />\n </ChartCard>\n );\n};\n\nexport default LineChartGroupedPro;\n","import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport {\n dataset,\n description,\n dimension,\n dimensionWithDateBounds,\n genericBoolean,\n maxResults,\n measure,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n title,\n xAxisLabel,\n yAxisLabel,\n yAxisRangeMax,\n yAxisRangeMin,\n} from '../../../component.constants';\nimport LineChartGroupedPro from './index';\nimport { loadData, Value } from '@embeddable.com/core';\nimport { LineChartProOptionsClickArg } from '../lines.utils';\n\nexport const meta = {\n name: 'LineChartGroupedPro',\n label: 'Line Chart - Grouped',\n category: 'Line Charts',\n inputs: [\n dataset,\n {\n ...measure,\n inputs: [\n ...measure.inputs,\n { ...genericBoolean, name: 'fillUnderLine', label: 'Fill under line' },\n { ...genericBoolean, name: 'connectGaps', label: 'Connect gaps', defaultValue: true },\n ],\n },\n { ...dimensionWithDateBounds, name: 'xAxis', label: 'X-axis' },\n { ...dimension, name: 'groupBy', label: 'Group by' },\n title,\n description,\n maxResults,\n showLegend,\n showTooltips,\n showValueLabels,\n showLogarithmicScale,\n xAxisLabel,\n yAxisLabel,\n reverseXAxis,\n yAxisRangeMin,\n yAxisRangeMax,\n ],\n events: [\n {\n name: 'onLineClicked',\n label: 'A line is clicked',\n properties: [\n {\n name: 'axisDimensionValue',\n label: 'Clicked Axis Dimension Value',\n type: 'string',\n },\n {\n name: 'groupingDimensionValue',\n label: 'Clicked Grouping Dimension Value',\n type: 'string',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(LineChartGroupedPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [inputs.xAxis, inputs.groupBy, inputs.measure],\n }),\n };\n },\n events: {\n onLineClicked: (value: LineChartProOptionsClickArg) => {\n return {\n axisDimensionValue: value.dimensionValue || Value.noFilter(),\n groupingDimensionValue: value.groupingDimensionValue || Value.noFilter(),\n };\n },\n },\n});\n"],"names":["getLineChartGroupedProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","hasMinMaxYAxisRange","axis","d","groupBy","themeKey","getObjectStableKey","datasets","groupByItem","index","backgroundColor","getColor","chartContrastColors","borderColor","setColorAlpha","_a","axisItem","record","getLineChartGroupedProOptions","options","onLineClicked","lineChartOptions","value","context","label","raw","mergician","getLineChartProOptions","_b","LineChartGroupedPro","useTheme","i18nSetup","title","description","xAxisLabel","yAxisLabel","resolveI18nProps","xAxis","reverseXAxis","showLegend","showLogarithmicScale","showTooltips","showValueLabels","yAxisRangeMax","yAxisRangeMin","results","useFillGaps","jsx","ChartCard","LineChart","meta","dataset","genericBoolean","dimensionWithDateBounds","maxResults","LineChartGroupedPro_emb","defineComponent","inputs","loadData","Value"],"mappings":"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"}
1
+ {"version":3,"file":"LineChartGroupedPro.js","sources":["../src/remarkable-pro/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.ts","../src/remarkable-pro/components/charts/lines/LineChartGroupedPro/index.tsx","../src/remarkable-pro/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.emb.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../../theme/theme.types';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../../theme/formatter/formatter.utils';\nimport { mergician } from 'mergician';\nimport { getObjectStableKey } from '../../../../utils.ts/object.utils';\nimport { getColor } from '../../../../theme/styles/styles.utils';\nimport { setColorAlpha } from '../../../../utils.ts/color.utils';\nimport { chartContrastColors } from '../../../../../remarkable-ui';\nimport { getLineChartProOptions, LineChartProOptionsClick } from '../lines.utils';\n\nexport const getLineChartGroupedProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n hasMinMaxYAxisRange: boolean;\n },\n theme: Theme,\n): ChartData<'line'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure, hasMinMaxYAxisRange } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))].sort();\n const groupBy = [...new Set(data.map((d) => d[groupDimension.name]))].filter((d) => d != null);\n\n const themeKey = getObjectStableKey(theme);\n\n const datasets: ChartData<'line'>['datasets'] = groupBy.map((groupByItem, index) => {\n const backgroundColor = getColor(\n `${themeKey}.charts.backgroundColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.backgroundColors ?? chartContrastColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n `${groupDimension.name}.${groupByItem}`,\n theme.charts.borderColors ?? chartContrastColors,\n index,\n );\n\n const dataset = {\n clip: hasMinMaxYAxisRange,\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor: setColorAlpha(backgroundColor, 0.5),\n pointBackgroundColor: backgroundColor,\n fill: measure.inputs?.['fillUnderLine'],\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimension.name] === groupByItem && d[dimension.name] === axisItem,\n );\n return record?.[measure.name] ?? (measure.inputs?.['connectGaps'] ? 0 : null);\n }),\n } as ChartData<'line'>['datasets'][number];\n\n return dataset;\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getLineChartGroupedProOptions = (\n options: {\n dimension: Dimension;\n measure: Measure;\n data: ChartData<'line'>;\n onLineClicked: LineChartProOptionsClick;\n },\n theme: Theme,\n): ChartOptions<'line'> => {\n const { dimension, data, measure, onLineClicked } = options;\n const themeFormatter = getThemeFormatter(theme);\n\n const lineChartOptions: ChartOptions<'line'> = {\n plugins: {\n datalabels: {\n labels: {\n value: {\n formatter: (value: string | number) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n tooltip: {\n callbacks: {\n title: (context) => {\n const label = context[0]?.label;\n return themeFormatter.data(dimension, label);\n },\n label: (context) => {\n const raw = context.raw as number;\n return `${context.dataset.label}: ${themeFormatter.data(measure, raw)}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n return themeFormatter.data(measure, value);\n },\n },\n },\n },\n };\n\n return mergician(\n getLineChartProOptions({ onLineClicked }),\n lineChartOptions,\n theme.charts?.lineChartGroupedPro?.options || {},\n );\n};\n","import { useTheme } from '@embeddable.com/react';\nimport { Theme } from '../../../../theme/theme.types';\nimport { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { i18nSetup } from '../../../../theme/i18n/i18n';\nimport { resolveI18nProps } from '../../../component.utils';\nimport { ChartCard } from '../../shared/ChartCard/ChartCard';\nimport {\n getLineChartGroupedProData,\n getLineChartGroupedProOptions,\n} from './LineChartGroupedPro.utils';\nimport { useFillGaps } from '../../charts.fillGaps.hooks';\nimport { LineChartProOptionsClick } from '../lines.utils';\nimport { LineChart } from '../../../../../remarkable-ui';\n\nexport type LineChartGroupedProPropsOnLineClicked = {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n};\n\ntype LineChartGroupedProProp = {\n description: string;\n xAxis: Dimension;\n groupBy: Dimension;\n measure: Measure;\n results: DataResponse;\n reverseXAxis: boolean;\n showLegend: boolean;\n showLogarithmicScale: boolean;\n showTooltips: boolean;\n showValueLabels: boolean;\n title: string;\n xAxisLabel: string;\n yAxisLabel: string;\n yAxisRangeMax?: number;\n yAxisRangeMin?: number;\n onLineClicked: LineChartProOptionsClick;\n};\n\nconst LineChartGroupedPro = (props: LineChartGroupedProProp) => {\n const theme: Theme = useTheme() as Theme;\n i18nSetup(theme);\n\n const { title, description, xAxisLabel, yAxisLabel } = resolveI18nProps(props);\n const {\n measure,\n xAxis,\n groupBy,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n yAxisRangeMax,\n yAxisRangeMin,\n onLineClicked,\n } = props;\n\n const results = useFillGaps({\n results: props.results,\n dimension: props.xAxis,\n });\n\n const data = getLineChartGroupedProData(\n {\n data: results.data,\n dimension: xAxis,\n groupDimension: groupBy,\n measure,\n hasMinMaxYAxisRange: Boolean(yAxisRangeMin != null || yAxisRangeMax != null),\n },\n\n theme,\n );\n const options = getLineChartGroupedProOptions(\n { data, dimension: xAxis, measure, onLineClicked },\n theme,\n );\n\n return (\n <ChartCard\n data={results}\n dimensionsAndMeasures={[measure, xAxis, groupBy]}\n errorMessage={results.error}\n subtitle={description}\n title={title}\n >\n <LineChart\n data={data}\n reverseXAxis={reverseXAxis}\n showLegend={showLegend}\n showLogarithmicScale={showLogarithmicScale}\n showTooltips={showTooltips}\n showValueLabels={showValueLabels}\n xAxisLabel={xAxisLabel}\n yAxisLabel={yAxisLabel}\n yAxisRangeMax={yAxisRangeMax}\n yAxisRangeMin={yAxisRangeMin}\n options={options}\n />\n </ChartCard>\n );\n};\n\nexport default LineChartGroupedPro;\n","import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport {\n dataset,\n description,\n dimension,\n dimensionWithDateBounds,\n genericBoolean,\n maxResults,\n measure,\n reverseXAxis,\n showLegend,\n showLogarithmicScale,\n showTooltips,\n showValueLabels,\n title,\n xAxisLabel,\n yAxisLabel,\n yAxisRangeMax,\n yAxisRangeMin,\n} from '../../../component.constants';\nimport LineChartGroupedPro from './index';\nimport { loadData, Value } from '@embeddable.com/core';\nimport { LineChartProOptionsClickArg } from '../lines.utils';\n\nexport const meta = {\n name: 'LineChartGroupedPro',\n label: 'Line Chart - Grouped',\n category: 'Line Charts',\n inputs: [\n dataset,\n {\n ...measure,\n inputs: [\n ...measure.inputs,\n { ...genericBoolean, name: 'fillUnderLine', label: 'Fill under line' },\n { ...genericBoolean, name: 'connectGaps', label: 'Connect gaps', defaultValue: true },\n ],\n },\n { ...dimensionWithDateBounds, name: 'xAxis', label: 'X-axis' },\n { ...dimension, name: 'groupBy', label: 'Group by' },\n title,\n description,\n maxResults,\n showLegend,\n showTooltips,\n showValueLabels,\n showLogarithmicScale,\n xAxisLabel,\n yAxisLabel,\n reverseXAxis,\n yAxisRangeMin,\n yAxisRangeMax,\n ],\n events: [\n {\n name: 'onLineClicked',\n label: 'A line is clicked',\n properties: [\n {\n name: 'axisDimensionValue',\n label: 'Clicked Axis Dimension Value',\n type: 'string',\n },\n {\n name: 'groupingDimensionValue',\n label: 'Clicked Grouping Dimension Value',\n type: 'string',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(LineChartGroupedPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n limit: inputs.maxResults,\n from: inputs.dataset,\n select: [inputs.xAxis, inputs.groupBy, inputs.measure],\n }),\n };\n },\n events: {\n onLineClicked: (value: LineChartProOptionsClickArg) => {\n return {\n axisDimensionValue: value.dimensionValue || Value.noFilter(),\n groupingDimensionValue: value.groupingDimensionValue || Value.noFilter(),\n };\n },\n },\n});\n"],"names":["getLineChartGroupedProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","hasMinMaxYAxisRange","axis","d","groupBy","themeKey","getObjectStableKey","datasets","groupByItem","index","backgroundColor","getColor","chartContrastColors","borderColor","setColorAlpha","_a","axisItem","record","getLineChartGroupedProOptions","options","onLineClicked","lineChartOptions","value","context","label","raw","mergician","getLineChartProOptions","_b","LineChartGroupedPro","useTheme","i18nSetup","title","description","xAxisLabel","yAxisLabel","resolveI18nProps","xAxis","reverseXAxis","showLegend","showLogarithmicScale","showTooltips","showValueLabels","yAxisRangeMax","yAxisRangeMin","results","useFillGaps","jsx","ChartCard","LineChart","meta","dataset","genericBoolean","dimensionWithDateBounds","maxResults","LineChartGroupedPro_emb","defineComponent","inputs","loadData","Value"],"mappings":";;;;;;;;;;AAWO,MAAMA,KAA6B,CACxCC,GAOAC,MACsB;AACtB,QAAMC,IAAiBC,EAAkBF,CAAK,GACxC,EAAE,MAAAG,IAAO,IAAI,WAAAC,GAAW,gBAAAC,GAAgB,SAAAC,GAAS,qBAAAC,MAAwBR,GAEzES,IAAO,CAAC,GAAG,IAAI,IAAIL,EAAK,IAAI,CAACM,MAAMA,EAAEL,EAAU,IAAI,CAAC,EAAE,OAAO,CAACK,MAAMA,KAAK,IAAI,CAAC,CAAC,EAAE,KAAA,GACjFC,IAAU,CAAC,GAAG,IAAI,IAAIP,EAAK,IAAI,CAACM,MAAMA,EAAEJ,EAAe,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAACI,MAAMA,KAAK,IAAI,GAEvFE,IAAWC,EAAmBZ,CAAK,GAEnCa,IAA0CH,EAAQ,IAAI,CAACI,GAAaC,MAAU;;AAClF,UAAMC,IAAkBC;AAAA,MACtB,GAAGN,CAAQ;AAAA,MACX,GAAGN,EAAe,IAAI,IAAIS,CAAW;AAAA,MACrCd,EAAM,OAAO,oBAAoBkB;AAAA,MACjCH;AAAA,IAAA,GAGII,IAAcF;AAAA,MAClB,GAAGN,CAAQ;AAAA,MACX,GAAGN,EAAe,IAAI,IAAIS,CAAW;AAAA,MACrCd,EAAM,OAAO,gBAAgBkB;AAAA,MAC7BH;AAAA,IAAA;AAmBF,WAhBgB;AAAA,MACd,MAAMR;AAAA,MACN,OAAON,EAAe,KAAKI,GAAgBS,CAAW;AAAA,MACtD,UAAUA;AAAA,MACV,iBAAiBM,EAAcJ,GAAiB,GAAG;AAAA,MACnD,sBAAsBA;AAAA,MACtB,OAAMK,IAAAf,EAAQ,WAAR,gBAAAe,EAAiB;AAAA,MACvB,aAAAF;AAAA,MACA,MAAMX,EAAK,IAAI,CAACc,MAAa;;AAC3B,cAAMC,IAASpB,EAAK;AAAA,UAClB,CAACM,MAAMA,EAAEJ,EAAe,IAAI,MAAMS,KAAeL,EAAEL,EAAU,IAAI,MAAMkB;AAAA,QAAA;AAEzE,gBAAOC,KAAA,gBAAAA,EAASjB,EAAQ,YAAUe,IAAAf,EAAQ,WAAR,QAAAe,EAAiB,cAAiB,IAAI;AAAA,MAC1E,CAAC;AAAA,IAAA;AAAA,EAIL,CAAC;AAED,SAAO;AAAA,IACL,QAAQb;AAAA,IACR,UAAAK;AAAA,EAAA;AAEJ,GAEaW,KAAgC,CAC3CC,GAMAzB,MACyB;;AACzB,QAAM,EAAE,WAAAI,GAAW,MAAAD,GAAM,SAAAG,GAAS,eAAAoB,MAAkBD,GAC9CxB,IAAiBC,EAAkBF,CAAK,GAExC2B,IAAyC;AAAA,IAC7C,SAAS;AAAA,MACP,YAAY;AAAA,QACV,QAAQ;AAAA,UACN,OAAO;AAAA,YACL,WAAW,CAACC,MACH3B,EAAe,KAAKK,GAASsB,CAAK;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AAAA,MAEF,SAAS;AAAA,QACP,WAAW;AAAA,UACT,OAAO,CAACC,MAAY;;AAClB,kBAAMC,KAAQT,IAAAQ,EAAQ,CAAC,MAAT,gBAAAR,EAAY;AAC1B,mBAAOpB,EAAe,KAAKG,GAAW0B,CAAK;AAAA,UAC7C;AAAA,UACA,OAAO,CAACD,MAAY;AAClB,kBAAME,IAAMF,EAAQ;AACpB,mBAAO,GAAGA,EAAQ,QAAQ,KAAK,KAAK5B,EAAe,KAAKK,GAASyB,CAAG,CAAC;AAAA,UACvE;AAAA,QAAA;AAAA,MACF;AAAA,IACF;AAAA,IAEF,QAAQ;AAAA,MACN,GAAG;AAAA,QACD,OAAO;AAAA,UACL,UAAU,CAACH,MAAU;AACnB,gBAAI,CAACzB,KAAQ,CAACA,EAAK,OAAQ;AAE3B,kBAAM2B,IAAQ3B,EAAK,OAAO,OAAOyB,CAAK,CAAC;AACvC,mBAAO3B,EAAe,KAAKG,GAAW0B,CAAK;AAAA,UAC7C;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,GAAG;AAAA,QACD,OAAO;AAAA,UACL,UAAU,CAACF,MACF3B,EAAe,KAAKK,GAASsB,CAAK;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGF,SAAOI;AAAA,IACLC,GAAuB,EAAE,eAAAP,GAAe;AAAA,IACxCC;AAAA,MACAO,KAAAb,IAAArB,EAAM,WAAN,gBAAAqB,EAAc,wBAAd,gBAAAa,EAAmC,YAAW,CAAA;AAAA,EAAC;AAEnD,GC7FMC,KAAsB,CAACpC,MAAmC;AAC9D,QAAMC,IAAeoC,EAAA;AACrB,EAAAC,EAAUrC,CAAK;AAEf,QAAM,EAAE,OAAAsC,GAAO,aAAAC,GAAa,YAAAC,GAAY,YAAAC,EAAA,IAAeC,EAAiB3C,CAAK,GACvE;AAAA,IACJ,SAAAO;AAAA,IACA,OAAAqC;AAAA,IACA,SAAAjC;AAAA,IACA,cAAAkC;AAAA,IACA,YAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAxB;AAAA,EAAA,IACE3B,GAEEoD,IAAUC,GAAY;AAAA,IAC1B,SAASrD,EAAM;AAAA,IACf,WAAWA,EAAM;AAAA,EAAA,CAClB,GAEKI,IAAOL;AAAA,IACX;AAAA,MACE,MAAMqD,EAAQ;AAAA,MACd,WAAWR;AAAA,MACX,gBAAgBjC;AAAA,MAChB,SAAAJ;AAAA,MACA,qBAA6B4C,KAAiB,QAAQD,KAAiB;AAAA,IAAI;AAAA,IAG7EjD;AAAA,EAAA,GAEIyB,IAAUD;AAAA,IACd,EAAE,MAAArB,GAAM,WAAWwC,GAAO,SAAArC,GAAS,eAAAoB,EAAA;AAAA,IACnC1B;AAAA,EAAA;AAGF,SACEqD,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMH;AAAA,MACN,uBAAuB,CAAC7C,GAASqC,GAAOjC,CAAO;AAAA,MAC/C,cAAcyC,EAAQ;AAAA,MACtB,UAAUZ;AAAA,MACV,OAAAD;AAAA,MAEA,UAAAe,gBAAAA,EAAAA;AAAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAApD;AAAA,UACA,cAAAyC;AAAA,UACA,YAAAC;AAAA,UACA,sBAAAC;AAAA,UACA,cAAAC;AAAA,UACA,iBAAAC;AAAA,UACA,YAAAR;AAAA,UACA,YAAAC;AAAA,UACA,eAAAQ;AAAA,UACA,eAAAC;AAAA,UACA,SAAAzB;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GC7Ea+B,KAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACA;AAAA,MACE,GAAGnD;AAAA,MACH,QAAQ;AAAA,QACN,GAAGA,EAAQ;AAAA,QACX,EAAE,GAAGoD,GAAgB,MAAM,iBAAiB,OAAO,kBAAA;AAAA,QACnD,EAAE,GAAGA,GAAgB,MAAM,eAAe,OAAO,gBAAgB,cAAc,GAAA;AAAA,MAAK;AAAA,IACtF;AAAA,IAEF,EAAE,GAAGC,GAAyB,MAAM,SAAS,OAAO,SAAA;AAAA,IACpD,EAAE,GAAGvD,GAAW,MAAM,WAAW,OAAO,WAAA;AAAA,IACxCkC;AAAA,IACAC;AAAA,IACAqB;AAAA,IACAf;AAAA,IACAE;AAAA,IACAC;AAAA,IACAF;AAAA,IACAN;AAAA,IACAC;AAAA,IACAG;AAAA,IACAM;AAAA,IACAD;AAAA,EAAA;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,QAER;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEJ,GAEAY,KAAeC,EAAgB3B,IAAqBqB,IAAM;AAAA,EACxD,OAAO,CAACO,OACC;AAAA,IACL,GAAGA;AAAA,IACH,SAASC,EAAS;AAAA,MAChB,OAAOD,EAAO;AAAA,MACd,MAAMA,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,OAAOA,EAAO,SAASA,EAAO,OAAO;AAAA,IAAA,CACtD;AAAA,EAAA;AAAA,EAGL,QAAQ;AAAA,IACN,eAAe,CAACnC,OACP;AAAA,MACL,oBAAoBA,EAAM,kBAAkBqC,EAAM,SAAA;AAAA,MAClD,wBAAwBrC,EAAM,0BAA0BqC,EAAM,SAAA;AAAA,IAAS;AAAA,EAE3E;AAEJ,CAAC;"}
@@ -1,6 +1,7 @@
1
1
  import { defineComponent as i } from "@embeddable.com/react";
2
- import { d as r, z as s, t as d, c as u, a1 as m, V as t, o as c } from "./component.constants-B5vygi6l.js";
3
- import { M as p, a as f } from "./index-Jm7acUco.js";
2
+ import { V as t, l as r } from "./TablePaginated-pVrIngVd.js";
3
+ import { d as s, u as d, t as u, b as m, M as c } from "./component.constants-VpbbPSIL.js";
4
+ import { M as p, a as f } from "./index-CCJCuW1J.js";
4
5
  const g = {
5
6
  name: "MultiSelectFieldPro",
6
7
  label: "Multi Select Field",
@@ -8,11 +9,11 @@ const g = {
8
9
  defaultWidth: 300,
9
10
  defaultHeight: 120,
10
11
  inputs: [
11
- r,
12
- { ...s, label: "Dimension (to load Dropdown values)" },
13
- d,
12
+ s,
13
+ { ...d, label: "Dimension (to load Dropdown values)" },
14
14
  u,
15
- { ...m, defaultValue: "Select values..." },
15
+ m,
16
+ { ...c, defaultValue: "Select values..." },
16
17
  {
17
18
  name: "maxOptions",
18
19
  type: "number",
@@ -63,13 +64,13 @@ const g = {
63
64
  events: [{ name: "onChange", property: "value" }]
64
65
  }
65
66
  ]
66
- }, h = i(f, g, {
67
+ }, S = i(f, g, {
67
68
  props: (e, [a, l]) => {
68
69
  const n = e.dimension.nativeType === "string" ? "contains" : "equals";
69
70
  return {
70
71
  ...e,
71
72
  setSearchValue: (o) => l({ searchValue: o }),
72
- results: c({
73
+ results: r({
73
74
  limit: e.maxOptions,
74
75
  from: e.dataset,
75
76
  select: [e.dimension, e.optionalSecondDimension].filter(Boolean),
@@ -90,7 +91,7 @@ const g = {
90
91
  }
91
92
  });
92
93
  export {
93
- h as default,
94
+ S as default,
94
95
  g as meta
95
96
  };
96
97
  //# sourceMappingURL=MultiSelectFieldPro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectFieldPro.js","sources":["../src/remarkable-pro/components/editors/MultiSelectFieldPro/MultiSelectFieldPro.emb.ts"],"sourcesContent":["import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport { Value, loadData } from '@embeddable.com/core';\nimport { dataset, description, dimension, placeholder, title } from '../../component.constants';\nimport MultiSelectFieldPro, { MAX_OPTIONS } from '.';\n\nexport const meta = {\n name: 'MultiSelectFieldPro',\n label: 'Multi Select Field',\n category: 'Dropdowns',\n defaultWidth: 300,\n defaultHeight: 120,\n inputs: [\n dataset,\n { ...dimension, label: 'Dimension (to load Dropdown values)' },\n title,\n description,\n { ...placeholder, defaultValue: 'Select values...' },\n {\n name: 'maxOptions',\n type: 'number',\n label: 'Maximum options',\n category: 'Component Settings',\n defaultValue: MAX_OPTIONS,\n },\n {\n name: 'selectedValues',\n type: 'string',\n array: true,\n label: 'Selected Values',\n category: 'Pre-configured Variables',\n },\n {\n type: 'dimension',\n config: {\n dataset: 'dataset',\n },\n required: false,\n name: 'optionalSecondDimension',\n label: 'Optional secondary dimension',\n category: 'Data Mapping for Interactions',\n description: 'Send a different dimension to embeddable when the user clicks. Must be unique.',\n },\n ],\n events: [\n {\n name: 'onChange',\n label: 'selected values updated',\n properties: [\n {\n name: 'value',\n label: 'selected values',\n type: 'string',\n array: true,\n },\n ],\n },\n ],\n variables: [\n {\n name: 'multi-select values',\n type: 'string',\n array: true,\n defaultValue: Value.noFilter(),\n inputs: ['selectedValues'],\n events: [{ name: 'onChange', property: 'value' }],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\ntype MultiSelectDropdownState = {\n searchValue?: string;\n};\n\nexport default defineComponent(MultiSelectFieldPro, meta, {\n props: (\n inputs: Inputs<typeof meta>,\n [state, setState]: [MultiSelectDropdownState, (state: MultiSelectDropdownState) => void],\n ) => {\n const operator = inputs.dimension.nativeType === 'string' ? 'contains' : 'equals';\n return {\n ...inputs,\n setSearchValue: (searchValue: string) => setState({ searchValue }),\n results: loadData({\n limit: inputs.maxOptions,\n from: inputs.dataset,\n select: [inputs.dimension, inputs.optionalSecondDimension].filter(Boolean),\n filters: state?.searchValue\n ? [\n {\n operator,\n property: inputs.dimension,\n value: state.searchValue,\n },\n ]\n : undefined,\n }),\n };\n },\n events: {\n onChange: (selectedValues: string[]) => {\n return {\n value: selectedValues.length ? selectedValues : Value.noFilter(),\n };\n },\n },\n});\n"],"names":["meta","dataset","dimension","title","description","placeholder","MAX_OPTIONS","Value","MultiSelectFieldPro_emb","defineComponent","MultiSelectFieldPro","inputs","state","setState","operator","searchValue","loadData","selectedValues"],"mappings":";;;AAKO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,QAAQ;AAAA,IACNC;AAAA,IACA,EAAE,GAAGC,GAAW,OAAO,sCAAA;AAAA,IACvBC;AAAA,IACAC;AAAA,IACA,EAAE,GAAGC,GAAa,cAAc,mBAAA;AAAA,IAChC;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAcC;AAAA,IAAA;AAAA,IAEhB;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,MAEX,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAcC,EAAM,SAAA;AAAA,MACpB,QAAQ,CAAC,gBAAgB;AAAA,MACzB,QAAQ,CAAC,EAAE,MAAM,YAAY,UAAU,SAAS;AAAA,IAAA;AAAA,EAClD;AAEJ,GAMAC,IAAeC,EAAgBC,GAAqBV,GAAM;AAAA,EACxD,OAAO,CACLW,GACA,CAACC,GAAOC,CAAQ,MACb;AACH,UAAMC,IAAWH,EAAO,UAAU,eAAe,WAAW,aAAa;AACzE,WAAO;AAAA,MACL,GAAGA;AAAA,MACH,gBAAgB,CAACI,MAAwBF,EAAS,EAAE,aAAAE,GAAa;AAAA,MACjE,SAASC,EAAS;AAAA,QAChB,OAAOL,EAAO;AAAA,QACd,MAAMA,EAAO;AAAA,QACb,QAAQ,CAACA,EAAO,WAAWA,EAAO,uBAAuB,EAAE,OAAO,OAAO;AAAA,QACzE,SAASC,KAAA,QAAAA,EAAO,cACZ;AAAA,UACE;AAAA,YACE,UAAAE;AAAA,YACA,UAAUH,EAAO;AAAA,YACjB,OAAOC,EAAM;AAAA,UAAA;AAAA,QACf,IAEF;AAAA,MAAA,CACL;AAAA,IAAA;AAAA,EAEL;AAAA,EACA,QAAQ;AAAA,IACN,UAAU,CAACK,OACF;AAAA,MACL,OAAOA,EAAe,SAASA,IAAiBV,EAAM,SAAA;AAAA,IAAS;AAAA,EAEnE;AAEJ,CAAC;"}
1
+ {"version":3,"file":"MultiSelectFieldPro.js","sources":["../src/remarkable-pro/components/editors/MultiSelectFieldPro/MultiSelectFieldPro.emb.ts"],"sourcesContent":["import { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport { Value, loadData } from '@embeddable.com/core';\nimport { dataset, description, dimension, placeholder, title } from '../../component.constants';\nimport MultiSelectFieldPro, { MAX_OPTIONS } from '.';\n\nexport const meta = {\n name: 'MultiSelectFieldPro',\n label: 'Multi Select Field',\n category: 'Dropdowns',\n defaultWidth: 300,\n defaultHeight: 120,\n inputs: [\n dataset,\n { ...dimension, label: 'Dimension (to load Dropdown values)' },\n title,\n description,\n { ...placeholder, defaultValue: 'Select values...' },\n {\n name: 'maxOptions',\n type: 'number',\n label: 'Maximum options',\n category: 'Component Settings',\n defaultValue: MAX_OPTIONS,\n },\n {\n name: 'selectedValues',\n type: 'string',\n array: true,\n label: 'Selected Values',\n category: 'Pre-configured Variables',\n },\n {\n type: 'dimension',\n config: {\n dataset: 'dataset',\n },\n required: false,\n name: 'optionalSecondDimension',\n label: 'Optional secondary dimension',\n category: 'Data Mapping for Interactions',\n description: 'Send a different dimension to embeddable when the user clicks. Must be unique.',\n },\n ],\n events: [\n {\n name: 'onChange',\n label: 'selected values updated',\n properties: [\n {\n name: 'value',\n label: 'selected values',\n type: 'string',\n array: true,\n },\n ],\n },\n ],\n variables: [\n {\n name: 'multi-select values',\n type: 'string',\n array: true,\n defaultValue: Value.noFilter(),\n inputs: ['selectedValues'],\n events: [{ name: 'onChange', property: 'value' }],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\ntype MultiSelectDropdownState = {\n searchValue?: string;\n};\n\nexport default defineComponent(MultiSelectFieldPro, meta, {\n props: (\n inputs: Inputs<typeof meta>,\n [state, setState]: [MultiSelectDropdownState, (state: MultiSelectDropdownState) => void],\n ) => {\n const operator = inputs.dimension.nativeType === 'string' ? 'contains' : 'equals';\n return {\n ...inputs,\n setSearchValue: (searchValue: string) => setState({ searchValue }),\n results: loadData({\n limit: inputs.maxOptions,\n from: inputs.dataset,\n select: [inputs.dimension, inputs.optionalSecondDimension].filter(Boolean),\n filters: state?.searchValue\n ? [\n {\n operator,\n property: inputs.dimension,\n value: state.searchValue,\n },\n ]\n : undefined,\n }),\n };\n },\n events: {\n onChange: (selectedValues: string[]) => {\n return {\n value: selectedValues.length ? selectedValues : Value.noFilter(),\n };\n },\n },\n});\n"],"names":["meta","dataset","dimension","title","description","placeholder","MAX_OPTIONS","Value","MultiSelectFieldPro_emb","defineComponent","MultiSelectFieldPro","inputs","state","setState","operator","searchValue","loadData","selectedValues"],"mappings":";;;;AAKO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,QAAQ;AAAA,IACNC;AAAA,IACA,EAAE,GAAGC,GAAW,OAAO,sCAAA;AAAA,IACvBC;AAAA,IACAC;AAAA,IACA,EAAE,GAAGC,GAAa,cAAc,mBAAA;AAAA,IAChC;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAcC;AAAA,IAAA;AAAA,IAEhB;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,MAEX,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,cAAcC,EAAM,SAAA;AAAA,MACpB,QAAQ,CAAC,gBAAgB;AAAA,MACzB,QAAQ,CAAC,EAAE,MAAM,YAAY,UAAU,SAAS;AAAA,IAAA;AAAA,EAClD;AAEJ,GAMAC,IAAeC,EAAgBC,GAAqBV,GAAM;AAAA,EACxD,OAAO,CACLW,GACA,CAACC,GAAOC,CAAQ,MACb;AACH,UAAMC,IAAWH,EAAO,UAAU,eAAe,WAAW,aAAa;AACzE,WAAO;AAAA,MACL,GAAGA;AAAA,MACH,gBAAgB,CAACI,MAAwBF,EAAS,EAAE,aAAAE,GAAa;AAAA,MACjE,SAASC,EAAS;AAAA,QAChB,OAAOL,EAAO;AAAA,QACd,MAAMA,EAAO;AAAA,QACb,QAAQ,CAACA,EAAO,WAAWA,EAAO,uBAAuB,EAAE,OAAO,OAAO;AAAA,QACzE,SAASC,KAAA,QAAAA,EAAO,cACZ;AAAA,UACE;AAAA,YACE,UAAAE;AAAA,YACA,UAAUH,EAAO;AAAA,YACjB,OAAOC,EAAM;AAAA,UAAA;AAAA,QACf,IAEF;AAAA,MAAA,CACL;AAAA,IAAA;AAAA,EAEL;AAAA,EACA,QAAQ;AAAA,IACN,UAAU,CAACK,OACF;AAAA,MACL,OAAOA,EAAe,SAASA,IAAiBV,EAAM,SAAA;AAAA,IAAS;AAAA,EAEnE;AAEJ,CAAC;"}
@@ -1,20 +1,21 @@
1
- import { d as a, w as s, z as t, t as o, c as n, s as i, Q as r, e as m, f as l, V as d, o as c } from "./component.constants-B5vygi6l.js";
2
- import { defineComponent as p } from "@embeddable.com/react";
3
- import { P as u } from "./index-BKkfcfXT.js";
1
+ import { V as a, l as s } from "./TablePaginated-pVrIngVd.js";
2
+ import { defineComponent as t } from "@embeddable.com/react";
3
+ import { P as o } from "./index-mMCdUsGD.js";
4
+ import { d as i, q as n, u as r, t as m, b as l, s as d, F as c, c as p, e as u } from "./component.constants-VpbbPSIL.js";
4
5
  const C = {
5
6
  name: "PieChartPro",
6
7
  label: "Pie Chart",
7
8
  category: "Pie Charts",
8
9
  inputs: [
9
- a,
10
- s,
11
- t,
12
- o,
13
- n,
14
10
  i,
11
+ n,
15
12
  r,
16
13
  m,
17
- l
14
+ l,
15
+ d,
16
+ c,
17
+ p,
18
+ u
18
19
  ],
19
20
  events: [
20
21
  {
@@ -29,22 +30,22 @@ const C = {
29
30
  ]
30
31
  }
31
32
  ]
32
- }, g = p(u, C, {
33
+ }, b = t(o, C, {
33
34
  props: (e) => ({
34
35
  ...e,
35
- results: c({
36
+ results: s({
36
37
  from: e.dataset,
37
38
  select: [e.measure, e.dimension]
38
39
  })
39
40
  }),
40
41
  events: {
41
42
  onSegmentClick: (e) => ({
42
- dimensionValue: e.dimensionValue || d.noFilter()
43
+ dimensionValue: e.dimensionValue || a.noFilter()
43
44
  })
44
45
  }
45
46
  });
46
47
  export {
47
- g as default,
48
+ b as default,
48
49
  C as meta
49
50
  };
50
51
  //# sourceMappingURL=PieChartPro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PieChartPro.js","sources":["../src/remarkable-pro/components/charts/pies/PieChartPro/PieChartPro.emb.ts"],"sourcesContent":["import { Value, loadData } from '@embeddable.com/core';\nimport { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport PieChartPro from './index';\nimport {\n dataset,\n description,\n dimension,\n measure,\n maxLegendItems,\n showLegend,\n showTooltips,\n showValueLabels,\n title,\n} from '../../../component.constants';\n\nexport const meta = {\n name: 'PieChartPro',\n label: 'Pie Chart',\n category: 'Pie Charts',\n inputs: [\n dataset,\n measure,\n dimension,\n title,\n description,\n showLegend,\n maxLegendItems,\n showTooltips,\n showValueLabels,\n ],\n events: [\n {\n name: 'onSegmentClick',\n label: 'A segment is clicked',\n properties: [\n {\n name: 'dimensionValue',\n label: 'Clicked Dimension',\n type: 'string',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(PieChartPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n from: inputs.dataset,\n select: [inputs.measure, inputs.dimension],\n }),\n };\n },\n events: {\n onSegmentClick: (value) => {\n return {\n dimensionValue: value.dimensionValue || Value.noFilter(),\n };\n },\n },\n});\n"],"names":["meta","dataset","measure","dimension","title","description","showLegend","maxLegendItems","showTooltips","showValueLabels","PieChartPro_emb","defineComponent","PieChartPro","inputs","loadData","value","Value"],"mappings":";;;AAeO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEJ,GAEAC,IAAeC,EAAgBC,GAAaZ,GAAM;AAAA,EAChD,OAAO,CAACa,OACC;AAAA,IACL,GAAGA;AAAA,IACH,SAASC,EAAS;AAAA,MAChB,MAAMD,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,SAASA,EAAO,SAAS;AAAA,IAAA,CAC1C;AAAA,EAAA;AAAA,EAGL,QAAQ;AAAA,IACN,gBAAgB,CAACE,OACR;AAAA,MACL,gBAAgBA,EAAM,kBAAkBC,EAAM,SAAA;AAAA,IAAS;AAAA,EAE3D;AAEJ,CAAC;"}
1
+ {"version":3,"file":"PieChartPro.js","sources":["../src/remarkable-pro/components/charts/pies/PieChartPro/PieChartPro.emb.ts"],"sourcesContent":["import { Value, loadData } from '@embeddable.com/core';\nimport { defineComponent, EmbeddedComponentMeta, Inputs } from '@embeddable.com/react';\nimport PieChartPro from './index';\nimport {\n dataset,\n description,\n dimension,\n measure,\n maxLegendItems,\n showLegend,\n showTooltips,\n showValueLabels,\n title,\n} from '../../../component.constants';\n\nexport const meta = {\n name: 'PieChartPro',\n label: 'Pie Chart',\n category: 'Pie Charts',\n inputs: [\n dataset,\n measure,\n dimension,\n title,\n description,\n showLegend,\n maxLegendItems,\n showTooltips,\n showValueLabels,\n ],\n events: [\n {\n name: 'onSegmentClick',\n label: 'A segment is clicked',\n properties: [\n {\n name: 'dimensionValue',\n label: 'Clicked Dimension',\n type: 'string',\n },\n ],\n },\n ],\n} as const satisfies EmbeddedComponentMeta;\n\nexport default defineComponent(PieChartPro, meta, {\n props: (inputs: Inputs<typeof meta>) => {\n return {\n ...inputs,\n results: loadData({\n from: inputs.dataset,\n select: [inputs.measure, inputs.dimension],\n }),\n };\n },\n events: {\n onSegmentClick: (value) => {\n return {\n dimensionValue: value.dimensionValue || Value.noFilter(),\n };\n },\n },\n});\n"],"names":["meta","dataset","measure","dimension","title","description","showLegend","maxLegendItems","showTooltips","showValueLabels","PieChartPro_emb","defineComponent","PieChartPro","inputs","loadData","value","Value"],"mappings":";;;;AAeO,MAAMA,IAAO;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,IACNC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA;AAAA,EAEF,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,YAAY;AAAA,QACV;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEJ,GAEAC,IAAeC,EAAgBC,GAAaZ,GAAM;AAAA,EAChD,OAAO,CAACa,OACC;AAAA,IACL,GAAGA;AAAA,IACH,SAASC,EAAS;AAAA,MAChB,MAAMD,EAAO;AAAA,MACb,QAAQ,CAACA,EAAO,SAASA,EAAO,SAAS;AAAA,IAAA,CAC1C;AAAA,EAAA;AAAA,EAGL,QAAQ;AAAA,IACN,gBAAgB,CAACE,OACR;AAAA,MACL,gBAAgBA,EAAM,kBAAkBC,EAAM,SAAA;AAAA,IAAS;AAAA,EAE3D;AAEJ,CAAC;"}
@@ -1,7 +1,7 @@
1
- import { j as o, a2 as F, aP as a } from "./component.constants-B5vygi6l.js";
1
+ import { j as o, k as F, R as a } from "./TablePaginated-pVrIngVd.js";
2
2
  import { useMemo as b, useState as Z, useEffect as _ } from "react";
3
3
  import { g as v } from "./tables.utils-D7KXdM2S.js";
4
- const G = (x) => typeof x == "number" && !Number.isNaN(x), I = (x, N) => `${x.toFixed(N)}%`, lt = ({
4
+ const G = (x) => typeof x == "number" && !Number.isNaN(x), R = (x, N) => `${x.toFixed(N)}%`, lt = ({
5
5
  columnWidth: x,
6
6
  firstColumnWidth: N,
7
7
  data: d,
@@ -11,7 +11,7 @@ const G = (x) => typeof x == "number" && !Number.isNaN(x), I = (x, N) => `${x.to
11
11
  progressive: T = !0,
12
12
  batchSize: V = 100,
13
13
  batchDelayMs: A = 0,
14
- rowTotalsFor: R = [],
14
+ rowTotalsFor: I = [],
15
15
  columnTotalsFor: E = [],
16
16
  totalLabel: C = "Total",
17
17
  className: H
@@ -37,7 +37,7 @@ const G = (x) => typeof x == "number" && !Number.isNaN(x), I = (x, N) => `${x.to
37
37
  t.has(e) || t.set(e, /* @__PURE__ */ new Map()), t.get(e).set(c, l);
38
38
  }
39
39
  return t;
40
- }, [d, y.key, p.key]), $ = b(() => new Set(R), [R]), B = b(() => new Set(E), [E]), P = $.size > 0, O = B.size > 0, K = b(() => {
40
+ }, [d, y.key, p.key]), $ = b(() => new Set(I), [I]), B = b(() => new Set(E), [E]), P = $.size > 0, O = B.size > 0, K = b(() => {
41
41
  const t = /* @__PURE__ */ new Map();
42
42
  return s.forEach((l, e) => t.set(String(l.key), e)), t;
43
43
  }, [s]), { colTotals: q, rowTotals: Q, grandTotals: z } = b(() => {
@@ -198,7 +198,7 @@ const G = (x) => typeof x == "number" && !Number.isNaN(x), I = (x, N) => `${x.to
198
198
  P && s.filter((e) => $.has(e.key)).map((e, c) => {
199
199
  const r = Q.get(t) ?? s.map(() => 0), n = K.get(e.key) ?? -1, i = `row-total-${String(t)}-${e.key}-${c}`, g = n >= 0 ? r[n] ?? 0 : 0;
200
200
  let h = g;
201
- return e.showAsPercentage ? h = I(
201
+ return e.showAsPercentage ? h = R(
202
202
  g / (z[n] || 1) * 100,
203
203
  e.percentageDecimalPlaces ?? 0
204
204
  ) : e.accessor && (h = e.accessor({ [e.key]: g })), /* @__PURE__ */ o.jsx("td", { className: a.boltCell, title: h, children: h }, i);
@@ -219,7 +219,7 @@ const G = (x) => typeof x == "number" && !Number.isNaN(x), I = (x, N) => `${x.to
219
219
  (t) => s.map((l, e) => {
220
220
  const c = B.has(String(l.key)), r = q.get(String(t)) ?? s.map(() => 0), n = s.findIndex((j) => String(j.key) === String(l.key)), i = `col-total-${String(t)}-${l.key}-${e}`, g = r[n] ?? 0;
221
221
  let h = g;
222
- l.showAsPercentage ? h = I(
222
+ l.showAsPercentage ? h = R(
223
223
  100,
224
224
  l.percentageDecimalPlaces ?? 0
225
225
  ) : l.accessor && (h = l.accessor({ [l.key]: g }));
@@ -230,7 +230,7 @@ const G = (x) => typeof x == "number" && !Number.isNaN(x), I = (x, N) => `${x.to
230
230
  P && s.filter((t) => $.has(t.key)).map((t, l) => {
231
231
  const e = s.findIndex((i) => String(i.key) === t.key), c = `grand-total-${t.key}-${l}`, r = z[e] ?? 0;
232
232
  let n = r;
233
- return t.showAsPercentage ? n = I(
233
+ return t.showAsPercentage ? n = R(
234
234
  100,
235
235
  t.percentageDecimalPlaces ?? 0
236
236
  ) : t.accessor && (n = t.accessor({ [t.key]: r })), /* @__PURE__ */ o.jsx("td", { className: a.boltCell, title: n, children: n }, c);
@@ -246,4 +246,4 @@ const G = (x) => typeof x == "number" && !Number.isNaN(x), I = (x, N) => `${x.to
246
246
  export {
247
247
  lt as P
248
248
  };
249
- //# sourceMappingURL=PivotTable-Diy2xzoH.js.map
249
+ //# sourceMappingURL=PivotTable-DlBkWU2O.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PivotTable-Diy2xzoH.js","sources":["../src/remarkable-ui/components/charts/tables/PivotTable/PivotTable.tsx"],"sourcesContent":["import { FC, useEffect, useMemo, useState } from 'react';\nimport tableStyles from '../tables.module.css';\nimport clsx from 'clsx';\nimport { PivotTableProps } from './PivotTable.types';\nimport { getTableCellWidthStyle } from '../tables.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nconst isNumber = (v: any) => typeof v === 'number' && !Number.isNaN(v);\n\nconst getPercentageDisplay = (percentage: number, percentageDecimalPlaces: number) => {\n return `${percentage.toFixed(percentageDecimalPlaces)}%`;\n};\n\nexport const PivotTable: FC<PivotTableProps<any>> = ({\n columnWidth,\n firstColumnWidth,\n data,\n measures,\n rowDimension,\n columnDimension,\n progressive = true,\n batchSize = 100,\n batchDelayMs = 0,\n rowTotalsFor = [],\n columnTotalsFor = [],\n totalLabel = 'Total',\n className,\n}) => {\n const rowValues = useMemo(() => {\n const s = new Set<string>();\n for (const d of data) {\n const rowValue = d[rowDimension.key];\n if (rowValue) s.add(rowValue);\n }\n return Array.from(s);\n }, [data, rowDimension.key]);\n\n const columnValues = useMemo(() => {\n const s = new Set<string>();\n for (const d of data) {\n const columnValue = d[columnDimension.key];\n if (columnValue) s.add(columnValue as string);\n }\n return Array.from(s);\n }, [data, columnDimension.key]);\n\n const cellMap = useMemo(() => {\n const map = new Map<string, Map<string, Record<string, any>>>();\n for (const d of data) {\n const r = String(d[rowDimension.key]);\n const c = String(d[columnDimension.key]);\n if (!map.has(r)) map.set(r, new Map());\n map.get(r)!.set(c, d as Record<string, any>);\n }\n return map;\n }, [data, rowDimension.key, columnDimension.key]);\n\n const rowTotalsSet = useMemo(() => new Set<string>(rowTotalsFor), [rowTotalsFor]);\n const columnTotalsSet = useMemo(() => new Set<string>(columnTotalsFor), [columnTotalsFor]);\n const hasRowTotals = rowTotalsSet.size > 0;\n const hasColumnTotals = columnTotalsSet.size > 0;\n\n const measureIndexByKey = useMemo(() => {\n const map = new Map<string, number>();\n measures.forEach((m, i) => map.set(String(m.key), i));\n return map;\n }, [measures]);\n\n const { colTotals, rowTotals, grandTotals } = useMemo(() => {\n const cTotals = new Map<string, number[]>();\n const rTotals = new Map<string, number[]>();\n const gTotals = measures.map(() => 0);\n\n for (const d of data) {\n const r = String(d[rowDimension.key]);\n const c = String(d[columnDimension.key]);\n const cArr = cTotals.get(c) ?? measures.map(() => 0);\n const rArr = rTotals.get(r) ?? measures.map(() => 0);\n\n measures.forEach((m, i) => {\n const raw = (d as any)?.[m.key];\n const v = Number(raw);\n if (!Number.isNaN(v)) {\n cArr[i]! += v;\n rArr[i]! += v;\n gTotals[i]! += v;\n }\n });\n\n cTotals.set(c, cArr);\n rTotals.set(r, rArr);\n }\n\n for (const c of columnValues) {\n if (!cTotals.has(String(c)))\n cTotals.set(\n String(c),\n measures.map(() => 0),\n );\n }\n for (const r of rowValues) {\n if (!rTotals.has(String(r)))\n rTotals.set(\n String(r),\n measures.map(() => 0),\n );\n }\n\n return { colTotals: cTotals, rowTotals: rTotals, grandTotals: gTotals };\n }, [data, measures, rowDimension.key, columnDimension.key, columnValues, rowValues]);\n\n const [visibleCount, setVisibleCount] = useState(() =>\n progressive ? Math.min(batchSize, rowValues.length) : rowValues.length,\n );\n\n useEffect(() => {\n if (!progressive) {\n setVisibleCount(rowValues.length);\n return;\n }\n let cancelled = false;\n let t: number | null = null;\n setVisibleCount(0);\n\n const tick = () => {\n setVisibleCount((prev) => {\n const next = Math.min(prev + batchSize, rowValues.length);\n if (next < rowValues.length && !cancelled) {\n t = window.setTimeout(tick, batchDelayMs);\n }\n return next;\n });\n };\n\n t = window.setTimeout(tick, batchDelayMs);\n\n return () => {\n cancelled = true;\n if (t !== null) window.clearTimeout(t);\n };\n }, [progressive, batchSize, batchDelayMs, rowValues.length, data]);\n\n const visibleRows = progressive ? rowValues.slice(0, visibleCount) : rowValues;\n\n return (\n <div className={clsx(tableStyles.tableFullContainer, className)}>\n <div\n className={clsx(\n tableStyles.tableAdjustedContainer,\n (!columnWidth || !firstColumnWidth) && tableStyles.fullWidth,\n )}\n >\n <table\n className={tableStyles.table}\n aria-label={`${rowDimension.label} by ${columnDimension.label}`}\n >\n <thead>\n <tr>\n <th\n scope=\"col\"\n rowSpan={1}\n title={columnDimension.label}\n className={tableStyles.stickyFirstColumn}\n >\n {columnDimension.label}\n </th>\n {columnValues.map((columnValue) => {\n const columnValueDisplay = columnDimension.formatValue\n ? columnDimension.formatValue(columnValue)\n : columnValue;\n return (\n <th\n key={`col-${columnValue}`}\n scope=\"colgroup\"\n colSpan={measures.length}\n title={columnValueDisplay}\n >\n {columnValueDisplay}\n </th>\n );\n })}\n {hasRowTotals && (\n <th\n key=\"col-total-group\"\n scope=\"colgroup\"\n colSpan={Array.from(rowTotalsSet).length}\n className={tableStyles.boltCell}\n title={totalLabel}\n >\n {totalLabel}\n </th>\n )}\n </tr>\n <tr>\n <th\n scope=\"col\"\n rowSpan={1}\n title={rowDimension.label}\n className={tableStyles.stickyFirstColumn}\n style={getTableCellWidthStyle(firstColumnWidth)}\n >\n {rowDimension.label}\n </th>\n {columnValues.flatMap((col) =>\n measures.map((measure, idx) => (\n <th\n key={`sub-${String(col)}-${measure.key}-${idx}`}\n scope=\"col\"\n title={measure.label}\n style={getTableCellWidthStyle(columnWidth)}\n >\n {measure.label}\n </th>\n )),\n )}\n {hasRowTotals &&\n measures\n .filter((measure) => rowTotalsSet.has(measure.key))\n .map((measure, idx) => (\n <th\n key={`sub-total-${measure.key}-${idx}`}\n scope=\"col\"\n className={tableStyles.boltCell}\n title={measure.label}\n style={getTableCellWidthStyle(columnWidth)}\n >\n {measure.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {visibleRows.map((row) => {\n const rowDimensionValue = rowDimension.formatValue\n ? rowDimension.formatValue(row)\n : row;\n return (\n <tr key={`row-${row}`}>\n <th\n scope=\"row\"\n title={rowDimensionValue}\n className={tableStyles.stickyFirstColumn}\n >\n {rowDimensionValue}\n </th>\n\n {columnValues.flatMap((columnValue) =>\n measures.map((measure, idx) => {\n const object = cellMap.get(row)?.get(columnValue) ?? {};\n const value = object?.[measure.key];\n\n const key = `cell-${row}-${columnValue}-${measure.key}-${idx}`;\n const getDisplayValue = () => {\n if (measure.showAsPercentage) {\n const mi = measureIndexByKey.get(String(measure.key)) ?? -1;\n const totalsForCol =\n colTotals.get(String(columnValue)) ?? measures.map(() => 0);\n const colTotal = mi >= 0 ? (totalsForCol[mi] ?? 0) : 0;\n\n const shouldShowPct =\n measure.showAsPercentage &&\n isNumber(Number(value)) &&\n isNumber(colTotal) &&\n colTotal > 0;\n\n if (shouldShowPct) {\n const percentage = (value / colTotal) * 100;\n return `${percentage.toFixed(measure.percentageDecimalPlaces ?? 0)}%`;\n }\n }\n\n return measure.accessor ? measure.accessor(object) : value;\n };\n\n const columnValueDisplay = getDisplayValue();\n\n return (\n <td key={key} title={columnValueDisplay}>\n {columnValueDisplay}\n </td>\n );\n }),\n )}\n\n {hasRowTotals &&\n measures\n .filter((measure) => rowTotalsSet.has(measure.key))\n .map((measure, idx) => {\n const totalsForRow = rowTotals.get(row) ?? measures.map(() => 0);\n const measureIndex = measureIndexByKey.get(measure.key) ?? -1;\n const key = `row-total-${String(row)}-${measure.key}-${idx}`;\n const value: number =\n measureIndex >= 0 ? (totalsForRow[measureIndex] ?? 0) : 0;\n let displayValue: any = value;\n\n if (measure.showAsPercentage) {\n displayValue = getPercentageDisplay(\n (value / (grandTotals[measureIndex] || 1)) * 100,\n measure.percentageDecimalPlaces ?? 0,\n );\n } else if (measure.accessor) {\n displayValue = measure.accessor({ [measure.key]: value });\n }\n\n return (\n <td key={key} className={tableStyles.boltCell} title={displayValue}>\n {displayValue}\n </td>\n );\n })}\n </tr>\n );\n })}\n {hasColumnTotals && (\n <tr key=\"totals-row\" className={tableStyles.stickyLastRow}>\n <th\n scope=\"row\"\n className={clsx(tableStyles.stickyFirstColumn, tableStyles.boltCell)}\n title={totalLabel}\n >\n {totalLabel}\n </th>\n\n {columnValues.flatMap((columnValue) =>\n measures.map((measure, idx) => {\n const show = columnTotalsSet.has(String(measure.key));\n const totalsForCol =\n colTotals.get(String(columnValue)) ?? measures.map(() => 0);\n const mi = measures.findIndex((mm) => String(mm.key) === String(measure.key));\n const key = `col-total-${String(columnValue)}-${measure.key}-${idx}`;\n const value: number = totalsForCol[mi] ?? 0;\n let displayValue: any = value;\n\n if (measure.showAsPercentage) {\n displayValue = getPercentageDisplay(\n 100,\n measure.percentageDecimalPlaces ?? 0,\n );\n } else if (measure.accessor) {\n displayValue = measure.accessor({ [measure.key]: value });\n }\n const columnValueDisplay = show ? displayValue : '';\n\n return (\n <td key={key} className={tableStyles.boltCell} title={columnValueDisplay}>\n {columnValueDisplay}\n </td>\n );\n }),\n )}\n\n {hasRowTotals &&\n measures\n .filter((measure) => rowTotalsSet.has(measure.key))\n .map((measure, idx) => {\n const measureIndex = measures.findIndex((m) => String(m.key) === measure.key);\n const key = `grand-total-${measure.key}-${idx}`;\n const value: number = grandTotals[measureIndex] ?? 0;\n let displayValue: any = value;\n\n if (measure.showAsPercentage) {\n displayValue = getPercentageDisplay(\n 100,\n measure.percentageDecimalPlaces ?? 0,\n );\n } else if (measure.accessor) {\n displayValue = measure.accessor({ [measure.key]: value });\n }\n\n return (\n <td key={key} className={tableStyles.boltCell} title={displayValue}>\n {displayValue}\n </td>\n );\n })}\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n"],"names":["isNumber","v","getPercentageDisplay","percentage","percentageDecimalPlaces","PivotTable","columnWidth","firstColumnWidth","data","measures","rowDimension","columnDimension","progressive","batchSize","batchDelayMs","rowTotalsFor","columnTotalsFor","totalLabel","className","rowValues","useMemo","s","d","rowValue","columnValues","columnValue","cellMap","map","r","rowTotalsSet","columnTotalsSet","hasRowTotals","hasColumnTotals","measureIndexByKey","m","i","colTotals","rowTotals","grandTotals","cTotals","rTotals","gTotals","c","cArr","rArr","raw","visibleCount","setVisibleCount","useState","useEffect","cancelled","t","tick","prev","next","visibleRows","clsx","tableStyles","jsx","jsxs","columnValueDisplay","getTableCellWidthStyle","col","measure","idx","row","rowDimensionValue","object","_a","value","key","mi","totalsForCol","colTotal","totalsForRow","measureIndex","displayValue","show","mm"],"mappings":"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"}
1
+ {"version":3,"file":"PivotTable-DlBkWU2O.js","sources":["../src/remarkable-ui/components/charts/tables/PivotTable/PivotTable.tsx"],"sourcesContent":["import { FC, useEffect, useMemo, useState } from 'react';\nimport tableStyles from '../tables.module.css';\nimport clsx from 'clsx';\nimport { PivotTableProps } from './PivotTable.types';\nimport { getTableCellWidthStyle } from '../tables.utils';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nconst isNumber = (v: any) => typeof v === 'number' && !Number.isNaN(v);\n\nconst getPercentageDisplay = (percentage: number, percentageDecimalPlaces: number) => {\n return `${percentage.toFixed(percentageDecimalPlaces)}%`;\n};\n\nexport const PivotTable: FC<PivotTableProps<any>> = ({\n columnWidth,\n firstColumnWidth,\n data,\n measures,\n rowDimension,\n columnDimension,\n progressive = true,\n batchSize = 100,\n batchDelayMs = 0,\n rowTotalsFor = [],\n columnTotalsFor = [],\n totalLabel = 'Total',\n className,\n}) => {\n const rowValues = useMemo(() => {\n const s = new Set<string>();\n for (const d of data) {\n const rowValue = d[rowDimension.key];\n if (rowValue) s.add(rowValue);\n }\n return Array.from(s);\n }, [data, rowDimension.key]);\n\n const columnValues = useMemo(() => {\n const s = new Set<string>();\n for (const d of data) {\n const columnValue = d[columnDimension.key];\n if (columnValue) s.add(columnValue as string);\n }\n return Array.from(s);\n }, [data, columnDimension.key]);\n\n const cellMap = useMemo(() => {\n const map = new Map<string, Map<string, Record<string, any>>>();\n for (const d of data) {\n const r = String(d[rowDimension.key]);\n const c = String(d[columnDimension.key]);\n if (!map.has(r)) map.set(r, new Map());\n map.get(r)!.set(c, d as Record<string, any>);\n }\n return map;\n }, [data, rowDimension.key, columnDimension.key]);\n\n const rowTotalsSet = useMemo(() => new Set<string>(rowTotalsFor), [rowTotalsFor]);\n const columnTotalsSet = useMemo(() => new Set<string>(columnTotalsFor), [columnTotalsFor]);\n const hasRowTotals = rowTotalsSet.size > 0;\n const hasColumnTotals = columnTotalsSet.size > 0;\n\n const measureIndexByKey = useMemo(() => {\n const map = new Map<string, number>();\n measures.forEach((m, i) => map.set(String(m.key), i));\n return map;\n }, [measures]);\n\n const { colTotals, rowTotals, grandTotals } = useMemo(() => {\n const cTotals = new Map<string, number[]>();\n const rTotals = new Map<string, number[]>();\n const gTotals = measures.map(() => 0);\n\n for (const d of data) {\n const r = String(d[rowDimension.key]);\n const c = String(d[columnDimension.key]);\n const cArr = cTotals.get(c) ?? measures.map(() => 0);\n const rArr = rTotals.get(r) ?? measures.map(() => 0);\n\n measures.forEach((m, i) => {\n const raw = (d as any)?.[m.key];\n const v = Number(raw);\n if (!Number.isNaN(v)) {\n cArr[i]! += v;\n rArr[i]! += v;\n gTotals[i]! += v;\n }\n });\n\n cTotals.set(c, cArr);\n rTotals.set(r, rArr);\n }\n\n for (const c of columnValues) {\n if (!cTotals.has(String(c)))\n cTotals.set(\n String(c),\n measures.map(() => 0),\n );\n }\n for (const r of rowValues) {\n if (!rTotals.has(String(r)))\n rTotals.set(\n String(r),\n measures.map(() => 0),\n );\n }\n\n return { colTotals: cTotals, rowTotals: rTotals, grandTotals: gTotals };\n }, [data, measures, rowDimension.key, columnDimension.key, columnValues, rowValues]);\n\n const [visibleCount, setVisibleCount] = useState(() =>\n progressive ? Math.min(batchSize, rowValues.length) : rowValues.length,\n );\n\n useEffect(() => {\n if (!progressive) {\n setVisibleCount(rowValues.length);\n return;\n }\n let cancelled = false;\n let t: number | null = null;\n setVisibleCount(0);\n\n const tick = () => {\n setVisibleCount((prev) => {\n const next = Math.min(prev + batchSize, rowValues.length);\n if (next < rowValues.length && !cancelled) {\n t = window.setTimeout(tick, batchDelayMs);\n }\n return next;\n });\n };\n\n t = window.setTimeout(tick, batchDelayMs);\n\n return () => {\n cancelled = true;\n if (t !== null) window.clearTimeout(t);\n };\n }, [progressive, batchSize, batchDelayMs, rowValues.length, data]);\n\n const visibleRows = progressive ? rowValues.slice(0, visibleCount) : rowValues;\n\n return (\n <div className={clsx(tableStyles.tableFullContainer, className)}>\n <div\n className={clsx(\n tableStyles.tableAdjustedContainer,\n (!columnWidth || !firstColumnWidth) && tableStyles.fullWidth,\n )}\n >\n <table\n className={tableStyles.table}\n aria-label={`${rowDimension.label} by ${columnDimension.label}`}\n >\n <thead>\n <tr>\n <th\n scope=\"col\"\n rowSpan={1}\n title={columnDimension.label}\n className={tableStyles.stickyFirstColumn}\n >\n {columnDimension.label}\n </th>\n {columnValues.map((columnValue) => {\n const columnValueDisplay = columnDimension.formatValue\n ? columnDimension.formatValue(columnValue)\n : columnValue;\n return (\n <th\n key={`col-${columnValue}`}\n scope=\"colgroup\"\n colSpan={measures.length}\n title={columnValueDisplay}\n >\n {columnValueDisplay}\n </th>\n );\n })}\n {hasRowTotals && (\n <th\n key=\"col-total-group\"\n scope=\"colgroup\"\n colSpan={Array.from(rowTotalsSet).length}\n className={tableStyles.boltCell}\n title={totalLabel}\n >\n {totalLabel}\n </th>\n )}\n </tr>\n <tr>\n <th\n scope=\"col\"\n rowSpan={1}\n title={rowDimension.label}\n className={tableStyles.stickyFirstColumn}\n style={getTableCellWidthStyle(firstColumnWidth)}\n >\n {rowDimension.label}\n </th>\n {columnValues.flatMap((col) =>\n measures.map((measure, idx) => (\n <th\n key={`sub-${String(col)}-${measure.key}-${idx}`}\n scope=\"col\"\n title={measure.label}\n style={getTableCellWidthStyle(columnWidth)}\n >\n {measure.label}\n </th>\n )),\n )}\n {hasRowTotals &&\n measures\n .filter((measure) => rowTotalsSet.has(measure.key))\n .map((measure, idx) => (\n <th\n key={`sub-total-${measure.key}-${idx}`}\n scope=\"col\"\n className={tableStyles.boltCell}\n title={measure.label}\n style={getTableCellWidthStyle(columnWidth)}\n >\n {measure.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {visibleRows.map((row) => {\n const rowDimensionValue = rowDimension.formatValue\n ? rowDimension.formatValue(row)\n : row;\n return (\n <tr key={`row-${row}`}>\n <th\n scope=\"row\"\n title={rowDimensionValue}\n className={tableStyles.stickyFirstColumn}\n >\n {rowDimensionValue}\n </th>\n\n {columnValues.flatMap((columnValue) =>\n measures.map((measure, idx) => {\n const object = cellMap.get(row)?.get(columnValue) ?? {};\n const value = object?.[measure.key];\n\n const key = `cell-${row}-${columnValue}-${measure.key}-${idx}`;\n const getDisplayValue = () => {\n if (measure.showAsPercentage) {\n const mi = measureIndexByKey.get(String(measure.key)) ?? -1;\n const totalsForCol =\n colTotals.get(String(columnValue)) ?? measures.map(() => 0);\n const colTotal = mi >= 0 ? (totalsForCol[mi] ?? 0) : 0;\n\n const shouldShowPct =\n measure.showAsPercentage &&\n isNumber(Number(value)) &&\n isNumber(colTotal) &&\n colTotal > 0;\n\n if (shouldShowPct) {\n const percentage = (value / colTotal) * 100;\n return `${percentage.toFixed(measure.percentageDecimalPlaces ?? 0)}%`;\n }\n }\n\n return measure.accessor ? measure.accessor(object) : value;\n };\n\n const columnValueDisplay = getDisplayValue();\n\n return (\n <td key={key} title={columnValueDisplay}>\n {columnValueDisplay}\n </td>\n );\n }),\n )}\n\n {hasRowTotals &&\n measures\n .filter((measure) => rowTotalsSet.has(measure.key))\n .map((measure, idx) => {\n const totalsForRow = rowTotals.get(row) ?? measures.map(() => 0);\n const measureIndex = measureIndexByKey.get(measure.key) ?? -1;\n const key = `row-total-${String(row)}-${measure.key}-${idx}`;\n const value: number =\n measureIndex >= 0 ? (totalsForRow[measureIndex] ?? 0) : 0;\n let displayValue: any = value;\n\n if (measure.showAsPercentage) {\n displayValue = getPercentageDisplay(\n (value / (grandTotals[measureIndex] || 1)) * 100,\n measure.percentageDecimalPlaces ?? 0,\n );\n } else if (measure.accessor) {\n displayValue = measure.accessor({ [measure.key]: value });\n }\n\n return (\n <td key={key} className={tableStyles.boltCell} title={displayValue}>\n {displayValue}\n </td>\n );\n })}\n </tr>\n );\n })}\n {hasColumnTotals && (\n <tr key=\"totals-row\" className={tableStyles.stickyLastRow}>\n <th\n scope=\"row\"\n className={clsx(tableStyles.stickyFirstColumn, tableStyles.boltCell)}\n title={totalLabel}\n >\n {totalLabel}\n </th>\n\n {columnValues.flatMap((columnValue) =>\n measures.map((measure, idx) => {\n const show = columnTotalsSet.has(String(measure.key));\n const totalsForCol =\n colTotals.get(String(columnValue)) ?? measures.map(() => 0);\n const mi = measures.findIndex((mm) => String(mm.key) === String(measure.key));\n const key = `col-total-${String(columnValue)}-${measure.key}-${idx}`;\n const value: number = totalsForCol[mi] ?? 0;\n let displayValue: any = value;\n\n if (measure.showAsPercentage) {\n displayValue = getPercentageDisplay(\n 100,\n measure.percentageDecimalPlaces ?? 0,\n );\n } else if (measure.accessor) {\n displayValue = measure.accessor({ [measure.key]: value });\n }\n const columnValueDisplay = show ? displayValue : '';\n\n return (\n <td key={key} className={tableStyles.boltCell} title={columnValueDisplay}>\n {columnValueDisplay}\n </td>\n );\n }),\n )}\n\n {hasRowTotals &&\n measures\n .filter((measure) => rowTotalsSet.has(measure.key))\n .map((measure, idx) => {\n const measureIndex = measures.findIndex((m) => String(m.key) === measure.key);\n const key = `grand-total-${measure.key}-${idx}`;\n const value: number = grandTotals[measureIndex] ?? 0;\n let displayValue: any = value;\n\n if (measure.showAsPercentage) {\n displayValue = getPercentageDisplay(\n 100,\n measure.percentageDecimalPlaces ?? 0,\n );\n } else if (measure.accessor) {\n displayValue = measure.accessor({ [measure.key]: value });\n }\n\n return (\n <td key={key} className={tableStyles.boltCell} title={displayValue}>\n {displayValue}\n </td>\n );\n })}\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n"],"names":["isNumber","v","getPercentageDisplay","percentage","percentageDecimalPlaces","PivotTable","columnWidth","firstColumnWidth","data","measures","rowDimension","columnDimension","progressive","batchSize","batchDelayMs","rowTotalsFor","columnTotalsFor","totalLabel","className","rowValues","useMemo","s","d","rowValue","columnValues","columnValue","cellMap","map","r","rowTotalsSet","columnTotalsSet","hasRowTotals","hasColumnTotals","measureIndexByKey","m","i","colTotals","rowTotals","grandTotals","cTotals","rTotals","gTotals","c","cArr","rArr","raw","visibleCount","setVisibleCount","useState","useEffect","cancelled","t","tick","prev","next","visibleRows","clsx","tableStyles","jsx","jsxs","columnValueDisplay","getTableCellWidthStyle","col","measure","idx","row","rowDimensionValue","object","_a","value","key","mi","totalsForCol","colTotal","totalsForRow","measureIndex","displayValue","show","mm"],"mappings":"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"}