@embeddable.com/remarkable-pro 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/BarChartDefaultHorizontalPro.js +1 -1
  2. package/dist/BarChartDefaultPro.js +1 -1
  3. package/dist/BarChartGroupedHorizontalPro.js +1 -1
  4. package/dist/BarChartGroupedPro.js +1 -1
  5. package/dist/BarChartStackedHorizontalPro.js +1 -1
  6. package/dist/BarChartStackedPro.js +1 -1
  7. package/dist/ComparisonPeriodSelectFieldPro.js +1 -1
  8. package/dist/DateRangePickerCustomPro.js +1 -1
  9. package/dist/DateRangeSelectFieldPro.js +1 -1
  10. package/dist/{DimensionAndMeasureSingleSelectField-HJcwoxiQ.js → DimensionAndMeasureSingleSelectField-B-HiSZ1m.js} +2 -2
  11. package/dist/{DimensionAndMeasureSingleSelectField-HJcwoxiQ.js.map → DimensionAndMeasureSingleSelectField-B-HiSZ1m.js.map} +1 -1
  12. package/dist/DimensionMeasureMultiSelectFieldPro.js +1 -1
  13. package/dist/DimensionSingleSelectFieldPro.js +1 -1
  14. package/dist/DonutChartPro.js +1 -1
  15. package/dist/DonutLabelChartPro.js +1 -1
  16. package/dist/FilterBuilderPro.js +3 -3
  17. package/dist/{GranularitySelectField-l18OwBvC.js → GranularitySelectField-DpQLHVFc.js} +2 -2
  18. package/dist/{GranularitySelectField-l18OwBvC.js.map → GranularitySelectField-DpQLHVFc.js.map} +1 -1
  19. package/dist/GranularitySelectFieldPro.js +1 -1
  20. package/dist/HeatMapPro.js +1 -1
  21. package/dist/HorizontalDividerPro.js +1 -1
  22. package/dist/KpiChartNumberComparisonPro.js +1 -1
  23. package/dist/KpiChartNumberPro.js +1 -1
  24. package/dist/LineChartComparisonDefaultPro.js +1 -1
  25. package/dist/LineChartDefaultPro.js +1 -1
  26. package/dist/LineChartGroupedPro.js +1 -1
  27. package/dist/LineChartWithKpiTabsPro.js +1 -1
  28. package/dist/MarkdownPro.js +1 -1
  29. package/dist/MeasureMultiSelectFieldPro.js +1 -1
  30. package/dist/MeasureSingleSelectFieldPro.js +1 -1
  31. package/dist/MultiSelectFieldPro.js +1 -1
  32. package/dist/PieChartPro.js +1 -1
  33. package/dist/PivotTablePro.js +1 -1
  34. package/dist/ScatterChartPro.js +1 -1
  35. package/dist/SingleSelectFieldPro.js +1 -1
  36. package/dist/TableChartPaginated.js +1 -1
  37. package/dist/TableScrollable.js +1 -1
  38. package/dist/TextFieldPro.js +1 -1
  39. package/dist/{bars.loadData.utils-DpaXxzT5.js → bars.loadData.utils-C3w-0agD.js} +3 -3
  40. package/dist/{bars.loadData.utils-DpaXxzT5.js.map → bars.loadData.utils-C3w-0agD.js.map} +1 -1
  41. package/dist/bars.utils-DR-ga7ps.js +176 -0
  42. package/dist/bars.utils-DR-ga7ps.js.map +1 -0
  43. package/dist/{charts.fillGaps.hooks-CPpTEo01.js → charts.fillGaps.hooks-DgH30vXI.js} +2 -2
  44. package/dist/{charts.fillGaps.hooks-CPpTEo01.js.map → charts.fillGaps.hooks-DgH30vXI.js.map} +1 -1
  45. package/dist/charts.utils-BEwWG4s2.js +25 -0
  46. package/dist/charts.utils-BEwWG4s2.js.map +1 -0
  47. package/dist/{component.inputs.constants-Bf2Ty2En.js → component.inputs.constants-DnFrZzR7.js} +206 -191
  48. package/dist/component.inputs.constants-DnFrZzR7.js.map +1 -0
  49. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/BarChartGroupedHorizontalPro.emb.d.ts +1 -1
  50. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/definition.d.ts +2 -2
  51. package/dist/components/charts/bars/BarChartGroupedHorizontalPro/index.d.ts.map +1 -1
  52. package/dist/components/charts/bars/BarChartGroupedPro/BarChartGroupedPro.emb.d.ts +1 -1
  53. package/dist/components/charts/bars/BarChartGroupedPro/definition.d.ts +2 -2
  54. package/dist/components/charts/bars/BarChartGroupedPro/index.d.ts.map +1 -1
  55. package/dist/components/charts/bars/BarChartStackedHorizontalPro/BarChartStackedHorizontalPro.emb.d.ts +1 -1
  56. package/dist/components/charts/bars/BarChartStackedHorizontalPro/definition.d.ts +2 -2
  57. package/dist/components/charts/bars/BarChartStackedHorizontalPro/index.d.ts.map +1 -1
  58. package/dist/components/charts/bars/BarChartStackedPro/BarChartStackedPro.emb.d.ts +1 -1
  59. package/dist/components/charts/bars/BarChartStackedPro/definition.d.ts +2 -2
  60. package/dist/components/charts/bars/BarChartStackedPro/index.d.ts.map +1 -1
  61. package/dist/components/charts/bars/bars.utils.d.ts +11 -0
  62. package/dist/components/charts/bars/bars.utils.d.ts.map +1 -1
  63. package/dist/components/charts/charts.utils.d.ts +1 -0
  64. package/dist/components/charts/charts.utils.d.ts.map +1 -1
  65. package/dist/components/charts/lines/LineChartComparisonDefaultPro/LineChartComparisonDefaultPro.utils.d.ts.map +1 -1
  66. package/dist/components/charts/lines/LineChartDefaultPro/LineChartDefaultPro.utils.d.ts.map +1 -1
  67. package/dist/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.d.ts +1 -0
  68. package/dist/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.d.ts.map +1 -1
  69. package/dist/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.test.d.ts +2 -0
  70. package/dist/components/charts/lines/LineChartGroupedPro/LineChartGroupedPro.utils.test.d.ts.map +1 -0
  71. package/dist/components/charts/lines/lines.utils.d.ts +4 -1
  72. package/dist/components/charts/lines/lines.utils.d.ts.map +1 -1
  73. package/dist/components/charts/pies/pies.utils.d.ts +4 -1
  74. package/dist/components/charts/pies/pies.utils.d.ts.map +1 -1
  75. package/dist/components/charts/tables/TableChartPaginated/TableChartPaginated.emb.d.ts +17 -0
  76. package/dist/components/charts/tables/TableChartPaginated/TableChartPaginated.emb.d.ts.map +1 -1
  77. package/dist/components/charts/tables/TableChartPaginated/definition.d.ts +39 -3
  78. package/dist/components/charts/tables/TableChartPaginated/definition.d.ts.map +1 -1
  79. package/dist/components/charts/tables/TableScrollable/TableScrollable.emb.d.ts +17 -0
  80. package/dist/components/charts/tables/TableScrollable/TableScrollable.emb.d.ts.map +1 -1
  81. package/dist/components/charts/tables/TableScrollable/definition.d.ts +39 -4
  82. package/dist/components/charts/tables/TableScrollable/definition.d.ts.map +1 -1
  83. package/dist/components/component.inputs.constants.d.ts +18 -2
  84. package/dist/components/component.inputs.constants.d.ts.map +1 -1
  85. package/dist/{definition-DOQkt6mp.js → definition-5MQbWUXL.js} +12 -12
  86. package/dist/definition-5MQbWUXL.js.map +1 -0
  87. package/dist/{definition-CS4RuL8e.js → definition-B66i_lHu.js} +3 -3
  88. package/dist/{definition-CS4RuL8e.js.map → definition-B66i_lHu.js.map} +1 -1
  89. package/dist/{definition-eDsz1LSa.js → definition-BNOhKWNT.js} +3 -3
  90. package/dist/{definition-eDsz1LSa.js.map → definition-BNOhKWNT.js.map} +1 -1
  91. package/dist/{definition-CGptoEwG.js → definition-BNffWCqm.js} +46 -39
  92. package/dist/definition-BNffWCqm.js.map +1 -0
  93. package/dist/{definition-B0EoSD5U.js → definition-BZVoO8bb.js} +3 -3
  94. package/dist/{definition-B0EoSD5U.js.map → definition-BZVoO8bb.js.map} +1 -1
  95. package/dist/{definition-B_WnKkA9.js → definition-Ba7J1LGI.js} +2 -2
  96. package/dist/{definition-B_WnKkA9.js.map → definition-Ba7J1LGI.js.map} +1 -1
  97. package/dist/{definition-B5pATGjj.js → definition-Bm1ec3cN.js} +3 -3
  98. package/dist/{definition-B5pATGjj.js.map → definition-Bm1ec3cN.js.map} +1 -1
  99. package/dist/{definition-D9ZlqgLF.js → definition-BpHv0bRb.js} +2 -2
  100. package/dist/{definition-D9ZlqgLF.js.map → definition-BpHv0bRb.js.map} +1 -1
  101. package/dist/{definition-CdcpkNRA.js → definition-CJR0UaGt.js} +3 -3
  102. package/dist/{definition-CdcpkNRA.js.map → definition-CJR0UaGt.js.map} +1 -1
  103. package/dist/{definition-CnRhPW66.js → definition-CMvwdXRu.js} +55 -48
  104. package/dist/definition-CMvwdXRu.js.map +1 -0
  105. package/dist/{definition-DWIyItYm.js → definition-Ce2VcCyv.js} +5 -5
  106. package/dist/{definition-DWIyItYm.js.map → definition-Ce2VcCyv.js.map} +1 -1
  107. package/dist/{definition-D6fsmeL7.js → definition-CfCvupyD.js} +3 -3
  108. package/dist/{definition-D6fsmeL7.js.map → definition-CfCvupyD.js.map} +1 -1
  109. package/dist/{definition-b_Q1K06P.js → definition-D1YtBczb.js} +44 -37
  110. package/dist/definition-D1YtBczb.js.map +1 -0
  111. package/dist/{definition-YVbooAf6.js → definition-D2bJQDNh.js} +33 -26
  112. package/dist/definition-D2bJQDNh.js.map +1 -0
  113. package/dist/{definition-hgg6kcIq.js → definition-D30Z62sw.js} +4 -4
  114. package/dist/{definition-hgg6kcIq.js.map → definition-D30Z62sw.js.map} +1 -1
  115. package/dist/{definition-DEqyuC5t.js → definition-D59NL3vt.js} +3 -3
  116. package/dist/{definition-DEqyuC5t.js.map → definition-D59NL3vt.js.map} +1 -1
  117. package/dist/{definition-D6c43j2_.js → definition-DIH0gF4I.js} +5 -5
  118. package/dist/{definition-D6c43j2_.js.map → definition-DIH0gF4I.js.map} +1 -1
  119. package/dist/{definition-CUA9oFdm.js → definition-DISg7Yca.js} +3 -3
  120. package/dist/{definition-CUA9oFdm.js.map → definition-DISg7Yca.js.map} +1 -1
  121. package/dist/definition-DIkjRBmH.js +260 -0
  122. package/dist/definition-DIkjRBmH.js.map +1 -0
  123. package/dist/{definition-mP5KhZwN.js → definition-DMI3MDQJ.js} +2 -2
  124. package/dist/{definition-mP5KhZwN.js.map → definition-DMI3MDQJ.js.map} +1 -1
  125. package/dist/definition-DOaQylZq.js +281 -0
  126. package/dist/definition-DOaQylZq.js.map +1 -0
  127. package/dist/{definition-uwrGYsP0.js → definition-DQP0JMyo.js} +115 -101
  128. package/dist/definition-DQP0JMyo.js.map +1 -0
  129. package/dist/{definition-DxTb-MOm.js → definition-Dd4MdyW4.js} +2 -2
  130. package/dist/{definition-DxTb-MOm.js.map → definition-Dd4MdyW4.js.map} +1 -1
  131. package/dist/{definition-CJHymHtY.js → definition-DvM-bBHc.js} +4 -4
  132. package/dist/{definition-CJHymHtY.js.map → definition-DvM-bBHc.js.map} +1 -1
  133. package/dist/{definition-Dpo-1FJs.js → definition-DwouHcfu.js} +11 -11
  134. package/dist/definition-DwouHcfu.js.map +1 -0
  135. package/dist/{definition-DfHOG4Fd.js → definition-HByuRICY.js} +80 -79
  136. package/dist/definition-HByuRICY.js.map +1 -0
  137. package/dist/{definition-Bf2gheY1.js → definition-HLAKpAEj.js} +2 -2
  138. package/dist/{definition-Bf2gheY1.js.map → definition-HLAKpAEj.js.map} +1 -1
  139. package/dist/{definition-DbspoO9C.js → definition-NZLRzHFa.js} +2 -2
  140. package/dist/{definition-DbspoO9C.js.map → definition-NZLRzHFa.js.map} +1 -1
  141. package/dist/{definition-B2TigGb3.js → definition-_hl_uvEW.js} +11 -11
  142. package/dist/definition-_hl_uvEW.js.map +1 -0
  143. package/dist/{definition-CQaZAYag.js → definition-luwVk1GE.js} +3 -3
  144. package/dist/{definition-CQaZAYag.js.map → definition-luwVk1GE.js.map} +1 -1
  145. package/dist/{definition-DCNv1r9i.js → definition-mz09xu8Q.js} +5 -5
  146. package/dist/{definition-DCNv1r9i.js.map → definition-mz09xu8Q.js.map} +1 -1
  147. package/dist/definition-nEosVAA3.js +564 -0
  148. package/dist/{definition-DLsqkPjT.js.map → definition-nEosVAA3.js.map} +1 -1
  149. package/dist/{definition-JPgTRMBs.js → definition-vdBo_sz-.js} +3 -3
  150. package/dist/{definition-JPgTRMBs.js.map → definition-vdBo_sz-.js.map} +1 -1
  151. package/dist/{dimensionsAndMeasures.utils-z1Fh_wO2.js → dimensionsAndMeasures.utils-DsVzuJ1x.js} +2 -2
  152. package/dist/{dimensionsAndMeasures.utils-z1Fh_wO2.js.map → dimensionsAndMeasures.utils-DsVzuJ1x.js.map} +1 -1
  153. package/dist/embeddable-components.json +46 -46
  154. package/dist/embeddable-theme-0137e.js +1 -1
  155. package/dist/{formatter.utils-ClBgeuH1.js → formatter.utils-BZMmas2O.js} +2 -2
  156. package/dist/{formatter.utils-ClBgeuH1.js.map → formatter.utils-BZMmas2O.js.map} +1 -1
  157. package/dist/{granularity.utils-DqPJsdYT.js → granularity.utils-B2u5dfRk.js} +2 -2
  158. package/dist/{granularity.utils-DqPJsdYT.js.map → granularity.utils-B2u5dfRk.js.map} +1 -1
  159. package/dist/index.js +203 -200
  160. package/dist/index.js.map +1 -1
  161. package/dist/lines.utils-CEGfmIHB.js.map +1 -1
  162. package/dist/pies.utils-Bb2EFei6.js +99 -0
  163. package/dist/pies.utils-Bb2EFei6.js.map +1 -0
  164. package/dist/{tables.utils-D0oPxjdp.js → tables.utils-CigVmDOc.js} +3 -3
  165. package/dist/{tables.utils-D0oPxjdp.js.map → tables.utils-CigVmDOc.js.map} +1 -1
  166. package/dist/{charts.utils-CJLmr9Q8.js → theme.constants-Cl6fOHv-.js} +639 -655
  167. package/dist/theme.constants-Cl6fOHv-.js.map +1 -0
  168. package/package.json +1 -2
  169. package/dist/bars.utils-DG6iNy-i.js +0 -158
  170. package/dist/bars.utils-DG6iNy-i.js.map +0 -1
  171. package/dist/charts.utils-CJLmr9Q8.js.map +0 -1
  172. package/dist/component.inputs.constants-Bf2Ty2En.js.map +0 -1
  173. package/dist/definition-B2TigGb3.js.map +0 -1
  174. package/dist/definition-C7um17eU.js +0 -242
  175. package/dist/definition-C7um17eU.js.map +0 -1
  176. package/dist/definition-CGptoEwG.js.map +0 -1
  177. package/dist/definition-CnRhPW66.js.map +0 -1
  178. package/dist/definition-DLsqkPjT.js +0 -560
  179. package/dist/definition-DOQkt6mp.js.map +0 -1
  180. package/dist/definition-DfHOG4Fd.js.map +0 -1
  181. package/dist/definition-Dpo-1FJs.js.map +0 -1
  182. package/dist/definition-RYVGlC6K.js +0 -277
  183. package/dist/definition-RYVGlC6K.js.map +0 -1
  184. package/dist/definition-YVbooAf6.js.map +0 -1
  185. package/dist/definition-b_Q1K06P.js.map +0 -1
  186. package/dist/definition-uwrGYsP0.js.map +0 -1
  187. package/dist/pies.utils-DyBQ0LjG.js +0 -76
  188. package/dist/pies.utils-DyBQ0LjG.js.map +0 -1
@@ -0,0 +1,176 @@
1
+ import { r as v } from "./theme.constants-Cl6fOHv-.js";
2
+ import { g as h, a as F } from "./formatter.utils-BZMmas2O.js";
3
+ import { g as V, a as k, b as D } from "./charts.utils-BEwWG4s2.js";
4
+ import { g as f } from "./styles.utils-C8CnV0SB.js";
5
+ import { t as w } from "./index-B9eYAQkT.js";
6
+ const L = (n, d) => {
7
+ const m = h(d), { data: o = [], dimension: c, groupDimension: e, measure: l } = n, s = [...new Set(o.map((r) => r[c.name]).filter((r) => r != null))];
8
+ s.sort();
9
+ const a = n.axisOrder ? n.axisOrder.filter((r) => s.includes(r)) : s, t = F(e), i = [...new Set(o.map((r) => r[t]))].filter((r) => r != null), u = w(), b = i.map((r, g) => {
10
+ const $ = f({
11
+ dimensionOrMeasure: e,
12
+ theme: d,
13
+ color: "background",
14
+ value: `${e.name}.${r}`,
15
+ index: g,
16
+ chartColors: u
17
+ }), O = f({
18
+ dimensionOrMeasure: e,
19
+ theme: d,
20
+ color: "border",
21
+ value: `${e.name}.${r}`,
22
+ index: g,
23
+ chartColors: u
24
+ });
25
+ return {
26
+ label: m.data(e, r),
27
+ rawLabel: r,
28
+ backgroundColor: $,
29
+ borderColor: O,
30
+ data: a.map((P) => {
31
+ const C = o.find(
32
+ (p) => p[t] === r && p[c.name] === P
33
+ );
34
+ return C ? Number(C[l.name]) : 0;
35
+ })
36
+ };
37
+ });
38
+ return {
39
+ labels: a,
40
+ datasets: b
41
+ };
42
+ }, I = (n, d = v) => {
43
+ if (!n.data)
44
+ return {
45
+ labels: [],
46
+ datasets: [{ data: [] }]
47
+ };
48
+ const m = h(d), o = V(n.data, n.dimension, n.measures, n.maxItems), c = w();
49
+ return {
50
+ labels: o.map((e) => e[n.dimension.name]),
51
+ datasets: n.measures.map((e, l) => {
52
+ const s = f({
53
+ dimensionOrMeasure: e,
54
+ theme: d,
55
+ color: "background",
56
+ value: e.name,
57
+ index: l,
58
+ chartColors: c
59
+ }), a = f({
60
+ dimensionOrMeasure: e,
61
+ theme: d,
62
+ color: "border",
63
+ value: e.name,
64
+ index: l,
65
+ chartColors: c
66
+ });
67
+ return {
68
+ label: m.dimensionOrMeasureTitle(e),
69
+ data: o.map((t) => t[e.name] ?? 0),
70
+ backgroundColor: s,
71
+ borderColor: a
72
+ };
73
+ })
74
+ };
75
+ }, M = (n, d) => {
76
+ const { datasets: m } = n.chart.data, o = n.dataIndex, c = m.reduce((e, l) => {
77
+ const s = l.data[o];
78
+ return e + (s || 0);
79
+ }, 0);
80
+ return d(c);
81
+ }, N = (n, d) => {
82
+ const { onBarClicked: m, measures: o, dimension: c, horizontal: e, data: l } = n, s = h(d);
83
+ return {
84
+ plugins: {
85
+ legend: { position: d.charts.legendPosition ?? "bottom" },
86
+ datalabels: {
87
+ labels: {
88
+ total: {
89
+ formatter: (a, t) => M(
90
+ t,
91
+ (i) => s.data(o[0], i)
92
+ )
93
+ },
94
+ value: {
95
+ formatter: (a, t) => {
96
+ var u;
97
+ const i = o[t.datasetIndex % o.length];
98
+ return (u = i.inputs) != null && u.showValueAsPercentage ? k(Number(a), t.dataset.data) : s.data(i, a);
99
+ }
100
+ }
101
+ }
102
+ },
103
+ tooltip: {
104
+ callbacks: {
105
+ title: (a) => {
106
+ var i;
107
+ const t = (i = a[0]) == null ? void 0 : i.label;
108
+ return s.data(D(c), t);
109
+ },
110
+ label: (a) => {
111
+ var r;
112
+ const t = o[a.datasetIndex % o.length], i = a.raw, u = s.data(t, i);
113
+ let b = "";
114
+ return (r = t.inputs) != null && r.showValueAsPercentage && (b = `(${k(i, a.dataset.data)})`), `${a.dataset.label}: ${u} ${b}`;
115
+ }
116
+ }
117
+ }
118
+ },
119
+ scales: {
120
+ x: {
121
+ ticks: {
122
+ callback: (a) => {
123
+ if (e)
124
+ return s.data(o[0], a);
125
+ if (!l || !l.labels) return;
126
+ const t = l.labels[Number(a)];
127
+ return s.data(c, t);
128
+ }
129
+ }
130
+ },
131
+ y: {
132
+ ticks: {
133
+ callback: (a) => {
134
+ if (!e)
135
+ return s.data(o[0], a);
136
+ if (!l || !l.labels) return;
137
+ const t = l.labels[Number(a)];
138
+ return s.data(c, t);
139
+ }
140
+ }
141
+ }
142
+ },
143
+ onClick: (a, t, i) => {
144
+ var g;
145
+ if (!m) return;
146
+ const u = t[0], b = u ? i.data.labels[u.index] : null, r = u ? (g = i.data.datasets[u.datasetIndex]) == null ? void 0 : g.rawLabel : null;
147
+ m({
148
+ axisDimensionValue: b,
149
+ groupingDimensionValue: r
150
+ });
151
+ }
152
+ };
153
+ }, _ = (n, d) => {
154
+ const { measures: m, groupDimension: o } = n, c = h(d), e = N(n, d);
155
+ return e.plugins.tooltip = {
156
+ callbacks: {
157
+ ...e.plugins.tooltip.callbacks,
158
+ label: (l) => {
159
+ var b;
160
+ const s = m[l.datasetIndex % m.length], a = l.raw, t = c.data(s, a);
161
+ let i = "";
162
+ return (b = s.inputs) != null && b.showValueAsPercentage && (i = `(${k(a, l.dataset.data)})`), `${c.data(
163
+ D(o),
164
+ l.dataset.rawLabel
165
+ )}: ${t} ${i}`;
166
+ }
167
+ }
168
+ }, e;
169
+ };
170
+ export {
171
+ N as a,
172
+ L as b,
173
+ _ as c,
174
+ I as g
175
+ };
176
+ //# sourceMappingURL=bars.utils-DR-ga7ps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bars.utils-DR-ga7ps.js","sources":["../src/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\nimport { Theme } from '../../../theme/theme.types';\nimport { remarkableTheme } from '../../../theme/theme.constants';\nimport { ChartData, ChartOptions } from 'chart.js';\nimport { getThemeFormatter } from '../../../theme/formatter/formatter.utils';\nimport {\n getDatalabelPercentage,\n getDimensionWithoutTruncation,\n groupTailAsOther,\n} from '../charts.utils';\nimport { getDimensionFieldName } from '../../../utils/data.utils';\nimport { getDimensionMeasureColor } from '../../../theme/styles/styles.utils';\nimport { getChartColors } from '@embeddable.com/remarkable-ui';\nimport { Context } from 'chartjs-plugin-datalabels';\n\nexport const getBarStackedChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n groupDimension: Dimension;\n measure: Measure;\n axisOrder?: string[];\n },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const uniqueAxis = [...new Set(data.map((d) => d[dimension.name]).filter((d) => d != null))];\n uniqueAxis.sort();\n\n const axis = props.axisOrder ? props.axisOrder.filter((v) => uniqueAxis.includes(v)) : uniqueAxis;\n const groupDimensionName = getDimensionFieldName(groupDimension);\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter((d) => d != null);\n\n const chartColors = getChartColors();\n const datasets = groupBy.map((groupByItem, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'background',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: groupDimension,\n theme,\n color: 'border',\n value: `${groupDimension.name}.${groupByItem}`,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.data(groupDimension, groupByItem),\n rawLabel: groupByItem,\n backgroundColor,\n borderColor,\n data: axis.map((axisItem) => {\n const record = data.find(\n (d) => d[groupDimensionName] === groupByItem && d[dimension.name] === axisItem,\n );\n return record ? Number(record[measure.name]) : 0;\n }),\n };\n });\n\n return {\n labels: axis,\n datasets,\n };\n};\n\nexport const getBarChartProData = (\n props: {\n data: DataResponse['data'];\n dimension: Dimension;\n measures: Measure[];\n maxItems?: number;\n },\n theme: Theme = remarkableTheme,\n): ChartData<'bar'> => {\n if (!props.data) {\n return {\n labels: [],\n datasets: [{ data: [] }],\n };\n }\n\n const themeFormatter = getThemeFormatter(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\n const chartColors = getChartColors();\n\n return {\n labels: groupedData.map((item) => {\n return item[props.dimension.name];\n }),\n datasets: props.measures.map((measure, index) => {\n const backgroundColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'background',\n value: measure.name,\n index,\n chartColors,\n });\n\n const borderColor = getDimensionMeasureColor({\n dimensionOrMeasure: measure,\n theme,\n color: 'border',\n value: measure.name,\n index,\n chartColors,\n });\n\n return {\n label: themeFormatter.dimensionOrMeasureTitle(measure),\n data: groupedData.map((item) => item[measure.name] ?? 0),\n backgroundColor,\n borderColor,\n };\n }),\n };\n};\n\nconst getBarChartProDatalabelTotalFormatter = (\n context: Context,\n formatter: (value: number) => string,\n) => {\n const { datasets } = context.chart.data;\n const i = context.dataIndex;\n\n const total = datasets.reduce((sum, ds) => {\n const val = ds.data[i] as number;\n return sum + (val || 0);\n }, 0);\n\n return formatter(total);\n};\n\nexport const getBarChartProOptions = (\n options: {\n onBarClicked?: (args: {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n }) => void;\n measures: Measure[];\n dimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { onBarClicked, measures, dimension, horizontal, data } = options;\n\n const themeFormatter = getThemeFormatter(theme);\n return {\n plugins: {\n legend: { position: theme.charts.legendPosition ?? 'bottom' },\n datalabels: {\n labels: {\n total: {\n formatter: (_value: string | number, context: Context) =>\n getBarChartProDatalabelTotalFormatter(context, (value: number) =>\n themeFormatter.data(measures[0]!, value),\n ),\n },\n value: {\n formatter: (value: string | number, context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n\n if (measure.inputs?.showValueAsPercentage) {\n return getDatalabelPercentage(Number(value), context.dataset.data);\n }\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(getDimensionWithoutTruncation(dimension), label);\n },\n\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n\n const measureValue = themeFormatter.data(measure, raw);\n\n let percentage = '';\n if (measure.inputs?.showValueAsPercentage) {\n percentage = `(${getDatalabelPercentage(raw, context.dataset.data)})`;\n }\n\n return `${context.dataset.label}: ${measureValue} ${percentage}`;\n },\n },\n },\n },\n scales: {\n x: {\n ticks: {\n callback: (value) => {\n if (horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n\n if (!data || !data.labels) return undefined;\n\n const label = data.labels[Number(value)] as string;\n\n return themeFormatter.data(dimension, label);\n },\n },\n },\n y: {\n ticks: {\n callback: (value) => {\n if (!horizontal) {\n return themeFormatter.data(measures[0]!, value);\n }\n if (!data || !data.labels) return undefined;\n const label = data.labels[Number(value)] as string;\n return themeFormatter.data(dimension, label);\n },\n },\n },\n },\n onClick: (_event, elements, chart) => {\n if (!onBarClicked) return;\n\n const element = elements[0];\n const axisDimensionValue = (element ? chart.data.labels![element.index] : null) as\n | string\n | null;\n const groupingDimensionValue = (\n element\n ? (chart.data.datasets[element.datasetIndex] as { rawLabel?: string | null })?.rawLabel\n : null\n ) as string | null;\n\n onBarClicked({\n axisDimensionValue,\n groupingDimensionValue,\n });\n },\n };\n};\n\nexport const getBarStackedChartProOptions = (\n options: {\n onBarClicked?: (args: {\n axisDimensionValue: string | null;\n groupingDimensionValue: string | null;\n }) => void;\n measures: Measure[];\n dimension: Dimension;\n groupDimension: Dimension;\n horizontal: boolean;\n data: ChartData<'bar'>;\n },\n theme: Theme,\n): Partial<ChartOptions<'bar'>> => {\n const { measures, groupDimension } = options;\n const themeFormatter = getThemeFormatter(theme);\n const base = getBarChartProOptions(options, theme);\n\n base.plugins!.tooltip = {\n callbacks: {\n ...base.plugins!.tooltip!.callbacks,\n label: (context) => {\n const measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n const measureValue = themeFormatter.data(measure, raw);\n\n let percentage = '';\n if (measure.inputs?.showValueAsPercentage) {\n percentage = `(${getDatalabelPercentage(raw, context.dataset.data)})`;\n }\n\n const label = themeFormatter.data(\n getDimensionWithoutTruncation(groupDimension),\n (context.dataset as { rawLabel?: string }).rawLabel,\n );\n return `${label}: ${measureValue} ${percentage}`;\n },\n },\n };\n\n return base;\n};\n"],"names":["getBarStackedChartProData","props","theme","themeFormatter","getThemeFormatter","data","dimension","groupDimension","measure","uniqueAxis","d","axis","v","groupDimensionName","getDimensionFieldName","groupBy","chartColors","getChartColors","datasets","groupByItem","index","backgroundColor","getDimensionMeasureColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","item","getBarChartProDatalabelTotalFormatter","context","formatter","i","total","sum","ds","val","getBarChartProOptions","options","onBarClicked","measures","horizontal","_value","value","_a","getDatalabelPercentage","label","getDimensionWithoutTruncation","raw","measureValue","percentage","_event","elements","chart","element","axisDimensionValue","groupingDimensionValue","getBarStackedChartProOptions","base"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { i as B, q as C } from "./quarterOfYear-d8ZftuS6.js";
3
3
  import { v as E } from "./index-B9eYAQkT.js";
4
4
  import { useTheme as M } from "@embeddable.com/react";
5
5
  import { useMemo as W } from "react";
6
- import { d as Z } from "./component.inputs.constants-Bf2Ty2En.js";
6
+ import { d as Z } from "./component.inputs.constants-DnFrZzR7.js";
7
7
  var O = { exports: {} }, b = O.exports, G;
8
8
  function z() {
9
9
  return G || (G = 1, (function(v, d) {
@@ -67,4 +67,4 @@ function P(v) {
67
67
  export {
68
68
  P as u
69
69
  };
70
- //# sourceMappingURL=charts.fillGaps.hooks-CPpTEo01.js.map
70
+ //# sourceMappingURL=charts.fillGaps.hooks-DgH30vXI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"charts.fillGaps.hooks-CPpTEo01.js","sources":["../node_modules/dayjs/plugin/isSameOrBefore.js","../src/components/charts/charts.fillGaps.hooks.ts"],"sourcesContent":["!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","import { DataResponse, Dimension, TimeRange } from '@embeddable.com/core';\nimport dayjs, { QUnitType } from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek.js';\nimport utc from 'dayjs/plugin/utc.js';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';\nimport { Theme } from '../../theme/theme.types';\nimport { useTheme } from '@embeddable.com/react';\nimport { useMemo } from 'react';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear.js';\nimport { defaultGranularitySelectFieldOptions } from '../../theme/defaults/defaults.GranularityOptions.constants';\n\ndayjs.extend(utc);\ndayjs.extend(isoWeek);\ndayjs.extend(isSameOrBefore);\ndayjs.extend(quarterOfYear);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DataRecord = { [key: string]: any };\n\ntype UseFillGapsProps = {\n results: DataResponse | undefined;\n dimension: Dimension;\n orderDirection?: 'asc' | 'desc';\n externalDateBounds?: TimeRange;\n};\n\nexport function useFillGaps(props: UseFillGapsProps): DataResponse {\n const theme = useTheme() as Theme;\n const { results, dimension, orderDirection = 'asc', externalDateBounds } = props;\n\n const processed = useMemo(() => {\n const granularity = dimension.inputs?.granularity;\n const dimensionName = dimension.name;\n const dateBoundsTmp: TimeRange = dimension.inputs?.dateBounds;\n\n const knownGranularities = defaultGranularitySelectFieldOptions.map(\n (opt) => opt.value as string,\n );\n\n if (\n !granularity ||\n !knownGranularities.includes(granularity) ||\n !dimensionName ||\n !results ||\n results.isLoading ||\n results.data?.length === 0\n ) {\n return results;\n }\n\n const dateBounds = dateBoundsTmp?.relativeTimeString\n ? theme.defaults.dateRangesOptions\n .find((option) => option.value === dateBoundsTmp?.relativeTimeString)\n ?.getRange(theme.clientContext.timezone)\n : dateBoundsTmp;\n\n if (dimension.nativeType !== 'time') return results;\n\n const sortedResults = [...(results?.data ?? [])].sort((a, b) => {\n const aVal = a[dimensionName];\n const bVal = b[dimensionName];\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n return dayjs.utc(aVal).diff(dayjs.utc(bVal));\n });\n\n // Determine the full date range even if data is empty\n const from = dayjs.utc(\n externalDateBounds?.from ?? dateBounds?.from ?? sortedResults[0]?.[dimensionName],\n );\n\n const to = dayjs.utc(\n externalDateBounds?.to ??\n dateBounds?.to ??\n sortedResults[sortedResults.length - 1]?.[dimensionName] ??\n [...sortedResults].reverse().find((item) => item?.[dimensionName] != null)?.[dimensionName],\n );\n\n // If we *still* don’t have valid date bounds, bail out safely\n if (!from.isValid() || !to.isValid()) {\n return { ...results, data: [] };\n }\n\n const recordsByDate = new Map<string, DataRecord[]>();\n for (const record of sortedResults) {\n const value = record[dimensionName];\n if (value == null) continue;\n const key = dayjs.utc(value).toISOString().split('Z')[0]!;\n const arr = recordsByDate.get(key) ?? [];\n arr.push(record);\n recordsByDate.set(key, arr);\n }\n\n const filled: DataRecord[] = [];\n let current = from.startOf((granularity === 'week' ? 'isoWeek' : granularity) as QUnitType);\n\n while (current.isSameOrBefore(to)) {\n const key = current.toISOString().split('Z')[0]!;\n const records = recordsByDate.get(key);\n\n if (records && records.length > 0) {\n filled.push(...records);\n } else {\n filled.push({ [dimensionName]: key });\n }\n\n current = current.add(1, granularity as QUnitType);\n }\n\n if (orderDirection === 'desc') {\n filled.reverse();\n }\n\n return {\n ...results,\n data: filled,\n };\n }, [results, dimension, orderDirection, theme]);\n\n return processed as DataResponse;\n}\n"],"names":["e","i","module","this","dayjs","utc","isoWeek","isSameOrBefore","quarterOfYear","useFillGaps","props","theme","useTheme","results","dimension","orderDirection","externalDateBounds","useMemo","granularity","_a","dimensionName","dateBoundsTmp","_b","knownGranularities","defaultGranularitySelectFieldOptions","opt","_c","dateBounds","_d","option","sortedResults","a","b","aVal","bVal","from","_e","to","_f","_g","item","recordsByDate","record","value","key","arr","filled","current","records"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"charts.fillGaps.hooks-DgH30vXI.js","sources":["../node_modules/dayjs/plugin/isSameOrBefore.js","../src/components/charts/charts.fillGaps.hooks.ts"],"sourcesContent":["!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","import { DataResponse, Dimension, TimeRange } from '@embeddable.com/core';\nimport dayjs, { QUnitType } from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek.js';\nimport utc from 'dayjs/plugin/utc.js';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';\nimport { Theme } from '../../theme/theme.types';\nimport { useTheme } from '@embeddable.com/react';\nimport { useMemo } from 'react';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear.js';\nimport { defaultGranularitySelectFieldOptions } from '../../theme/defaults/defaults.GranularityOptions.constants';\n\ndayjs.extend(utc);\ndayjs.extend(isoWeek);\ndayjs.extend(isSameOrBefore);\ndayjs.extend(quarterOfYear);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DataRecord = { [key: string]: any };\n\ntype UseFillGapsProps = {\n results: DataResponse | undefined;\n dimension: Dimension;\n orderDirection?: 'asc' | 'desc';\n externalDateBounds?: TimeRange;\n};\n\nexport function useFillGaps(props: UseFillGapsProps): DataResponse {\n const theme = useTheme() as Theme;\n const { results, dimension, orderDirection = 'asc', externalDateBounds } = props;\n\n const processed = useMemo(() => {\n const granularity = dimension.inputs?.granularity;\n const dimensionName = dimension.name;\n const dateBoundsTmp: TimeRange = dimension.inputs?.dateBounds;\n\n const knownGranularities = defaultGranularitySelectFieldOptions.map(\n (opt) => opt.value as string,\n );\n\n if (\n !granularity ||\n !knownGranularities.includes(granularity) ||\n !dimensionName ||\n !results ||\n results.isLoading ||\n results.data?.length === 0\n ) {\n return results;\n }\n\n const dateBounds = dateBoundsTmp?.relativeTimeString\n ? theme.defaults.dateRangesOptions\n .find((option) => option.value === dateBoundsTmp?.relativeTimeString)\n ?.getRange(theme.clientContext.timezone)\n : dateBoundsTmp;\n\n if (dimension.nativeType !== 'time') return results;\n\n const sortedResults = [...(results?.data ?? [])].sort((a, b) => {\n const aVal = a[dimensionName];\n const bVal = b[dimensionName];\n if (aVal == null) return 1;\n if (bVal == null) return -1;\n return dayjs.utc(aVal).diff(dayjs.utc(bVal));\n });\n\n // Determine the full date range even if data is empty\n const from = dayjs.utc(\n externalDateBounds?.from ?? dateBounds?.from ?? sortedResults[0]?.[dimensionName],\n );\n\n const to = dayjs.utc(\n externalDateBounds?.to ??\n dateBounds?.to ??\n sortedResults[sortedResults.length - 1]?.[dimensionName] ??\n [...sortedResults].reverse().find((item) => item?.[dimensionName] != null)?.[dimensionName],\n );\n\n // If we *still* don’t have valid date bounds, bail out safely\n if (!from.isValid() || !to.isValid()) {\n return { ...results, data: [] };\n }\n\n const recordsByDate = new Map<string, DataRecord[]>();\n for (const record of sortedResults) {\n const value = record[dimensionName];\n if (value == null) continue;\n const key = dayjs.utc(value).toISOString().split('Z')[0]!;\n const arr = recordsByDate.get(key) ?? [];\n arr.push(record);\n recordsByDate.set(key, arr);\n }\n\n const filled: DataRecord[] = [];\n let current = from.startOf((granularity === 'week' ? 'isoWeek' : granularity) as QUnitType);\n\n while (current.isSameOrBefore(to)) {\n const key = current.toISOString().split('Z')[0]!;\n const records = recordsByDate.get(key);\n\n if (records && records.length > 0) {\n filled.push(...records);\n } else {\n filled.push({ [dimensionName]: key });\n }\n\n current = current.add(1, granularity as QUnitType);\n }\n\n if (orderDirection === 'desc') {\n filled.reverse();\n }\n\n return {\n ...results,\n data: filled,\n };\n }, [results, dimension, orderDirection, theme]);\n\n return processed as DataResponse;\n}\n"],"names":["e","i","module","this","dayjs","utc","isoWeek","isSameOrBefore","quarterOfYear","useFillGaps","props","theme","useTheme","results","dimension","orderDirection","externalDateBounds","useMemo","granularity","_a","dimensionName","dateBoundsTmp","_b","knownGranularities","defaultGranularitySelectFieldOptions","opt","_c","dateBounds","_d","option","sortedResults","a","b","aVal","bVal","from","_e","to","_f","_g","item","recordsByDate","record","value","key","arr","filled","current","records"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,25 @@
1
+ import { i as l } from "./component.utils-Dua9clQJ.js";
2
+ const p = (e) => ({
3
+ ...e,
4
+ inputs: { ...e.inputs, maxCharacters: null }
5
+ }), h = (e = [], n, r, t) => {
6
+ if (!t || e.length <= t) return e;
7
+ const o = e.slice(0, t - 1), c = e.slice(t - 1), a = {
8
+ [n.name]: l.t("common.other")
9
+ };
10
+ for (const s of r)
11
+ a[s.name] = c.reduce(
12
+ (u, i) => u + parseFloat(i[s.name] ?? "0"),
13
+ 0
14
+ );
15
+ return [...o, a];
16
+ }, f = (e, n) => {
17
+ const r = n.reduce((t, o) => t + Number.parseFloat(o), 0);
18
+ return r === 0 ? "0%" : `${Number.parseFloat((e / r * 100).toFixed(2))}%`;
19
+ };
20
+ export {
21
+ f as a,
22
+ p as b,
23
+ h as g
24
+ };
25
+ //# sourceMappingURL=charts.utils-BEwWG4s2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charts.utils-BEwWG4s2.js","sources":["../src/components/charts/charts.utils.ts"],"sourcesContent":["import { DataResponse, Dimension, Measure } from '@embeddable.com/core';\n\nimport { i18n } from '../../theme/i18n/i18n';\n\nexport const getDimensionWithoutTruncation = (dimension: Dimension): Dimension => ({\n ...dimension,\n inputs: { ...dimension.inputs, maxCharacters: null },\n});\n\nexport const groupTailAsOther = (\n data: DataResponse['data'] = [],\n dimension: Dimension,\n measures: Measure[],\n maxItems?: number,\n) => {\n if (!maxItems || data.length <= maxItems) return data;\n\n const head = data.slice(0, maxItems - 1);\n const tail = data.slice(maxItems - 1);\n\n const aggregatedRow: Record<string, unknown> = {\n [dimension.name]: i18n.t('common.other'),\n };\n\n for (const measure of measures) {\n aggregatedRow[measure.name] = tail.reduce(\n (sum, row) => sum + parseFloat(row[measure.name] ?? '0'),\n 0,\n );\n }\n\n return [...head, aggregatedRow];\n};\n\nexport const getDatalabelPercentage = (value: number, data: unknown[]): string => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const total = data.reduce((sum: number, v: any) => sum + Number.parseFloat(v), 0);\n if (total === 0) return '0%';\n return `${Number.parseFloat(((value / total) * 100).toFixed(2))}%`;\n};\n"],"names":["getDimensionWithoutTruncation","dimension","groupTailAsOther","data","measures","maxItems","head","tail","aggregatedRow","i18n","measure","sum","row","getDatalabelPercentage","value","total","v"],"mappings":";AAIO,MAAMA,IAAgC,CAACC,OAAqC;AAAA,EACjF,GAAGA;AAAA,EACH,QAAQ,EAAE,GAAGA,EAAU,QAAQ,eAAe,KAAA;AAChD,IAEaC,IAAmB,CAC9BC,IAA6B,CAAA,GAC7BF,GACAG,GACAC,MACG;AACH,MAAI,CAACA,KAAYF,EAAK,UAAUE,EAAU,QAAOF;AAEjD,QAAMG,IAAOH,EAAK,MAAM,GAAGE,IAAW,CAAC,GACjCE,IAAOJ,EAAK,MAAME,IAAW,CAAC,GAE9BG,IAAyC;AAAA,IAC7C,CAACP,EAAU,IAAI,GAAGQ,EAAK,EAAE,cAAc;AAAA,EAAA;AAGzC,aAAWC,KAAWN;AACpB,IAAAI,EAAcE,EAAQ,IAAI,IAAIH,EAAK;AAAA,MACjC,CAACI,GAAKC,MAAQD,IAAM,WAAWC,EAAIF,EAAQ,IAAI,KAAK,GAAG;AAAA,MACvD;AAAA,IAAA;AAIJ,SAAO,CAAC,GAAGJ,GAAME,CAAa;AAChC,GAEaK,IAAyB,CAACC,GAAeX,MAA4B;AAEhF,QAAMY,IAAQZ,EAAK,OAAO,CAACQ,GAAaK,MAAWL,IAAM,OAAO,WAAWK,CAAC,GAAG,CAAC;AAChF,SAAID,MAAU,IAAU,OACjB,GAAG,OAAO,YAAaD,IAAQC,IAAS,KAAK,QAAQ,CAAC,CAAC,CAAC;AACjE;"}