@embeddable.com/remarkable-ui 0.1.50 → 0.1.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BarChartDefaultHorizontalPro.js +18 -17
- package/dist/BarChartDefaultHorizontalPro.js.map +1 -1
- package/dist/BarChartDefaultPro.js +18 -17
- package/dist/BarChartDefaultPro.js.map +1 -1
- package/dist/BarChartGroupedHorizontalPro.js +20 -19
- package/dist/BarChartGroupedHorizontalPro.js.map +1 -1
- package/dist/BarChartGroupedPro.js +20 -19
- package/dist/BarChartGroupedPro.js.map +1 -1
- package/dist/BarChartStackedHorizontalPro.js +24 -23
- package/dist/BarChartStackedHorizontalPro.js.map +1 -1
- package/dist/BarChartStackedPro.js +24 -23
- package/dist/BarChartStackedPro.js.map +1 -1
- package/dist/{ChartCard-k190CXR0.js → ChartCard-9vU81B9E.js} +19 -19
- package/dist/{ChartCard-k190CXR0.js.map → ChartCard-9vU81B9E.js.map} +1 -1
- package/dist/{ComparisonPeriod.type.emb-Dgl2VM4_.js → ComparisonPeriod.type.emb-Bc58XXHO.js} +2 -2
- package/dist/{ComparisonPeriod.type.emb-Dgl2VM4_.js.map → ComparisonPeriod.type.emb-Bc58XXHO.js.map} +1 -1
- package/dist/ComparisonPeriodSelectFieldPro.js +8 -8
- package/dist/DateRangeSelectFieldPro.js +2 -2
- package/dist/DonutChartPro.js +2 -2
- package/dist/DonutLabelChartPro.js +2 -2
- package/dist/{EditorCard-BNBH4Y9F.js → EditorCard-CQCOOD0u.js} +18 -18
- package/dist/{EditorCard-BNBH4Y9F.js.map → EditorCard-CQCOOD0u.js.map} +1 -1
- package/dist/{HeatMap-ylrlKLQI.js → HeatMap-EjQRtDvC.js} +2 -2
- package/dist/{HeatMap-ylrlKLQI.js.map → HeatMap-EjQRtDvC.js.map} +1 -1
- package/dist/HeatMapPro.js +18 -18
- package/dist/{KpiChart-DJ5el66E.js → KpiChart-CtIsMk4c.js} +10 -10
- package/dist/{KpiChart-DJ5el66E.js.map → KpiChart-CtIsMk4c.js.map} +1 -1
- package/dist/KpiChartNumberComparisonPro.js +29 -29
- package/dist/KpiChartNumberPro.js +4 -4
- package/dist/LineChartComparisonDefaultPro.js +13 -13
- package/dist/LineChartDefaultPro.js +10 -10
- package/dist/LineChartGroupedPro.js +6 -6
- package/dist/MultiSelectFieldPro.js +2 -2
- package/dist/PieChartPro.js +2 -2
- package/dist/{PivotTable-awuBNY8c.js → PivotTable-BTtSAZkU.js} +2 -2
- package/dist/{PivotTable-awuBNY8c.js.map → PivotTable-BTtSAZkU.js.map} +1 -1
- package/dist/PivotTablePro.js +18 -18
- package/dist/{SingleSelectField-CY0TwkyW.js → SingleSelectField-Cu5phRJ-.js} +15 -15
- package/dist/{SingleSelectField-CY0TwkyW.js.map → SingleSelectField-Cu5phRJ-.js.map} +1 -1
- package/dist/SingleSelectFieldPro.js +2 -2
- package/dist/TableChartPaginated.js +27 -27
- package/dist/bars.utils-H-eVsaD9.js +146 -0
- package/dist/bars.utils-H-eVsaD9.js.map +1 -0
- package/dist/{charts.utils-LgE4AEAw.js → charts.utils-BHaQCnGS.js} +3 -3
- package/dist/{charts.utils-LgE4AEAw.js.map → charts.utils-BHaQCnGS.js.map} +1 -1
- package/dist/{component.constants-D0ea4CW4.js → component.constants-BysG97Au.js} +3343 -3181
- package/dist/component.constants-BysG97Au.js.map +1 -0
- package/dist/embeddable-components.json +11 -11
- package/dist/{formatter.utils-DBUd3PfE.js → formatter.utils-tk7xEyBO.js} +2 -2
- package/dist/{formatter.utils-DBUd3PfE.js.map → formatter.utils-tk7xEyBO.js.map} +1 -1
- package/dist/{index-DuWcnytb.js → index-B149xfYw.js} +7 -7
- package/dist/{index-DuWcnytb.js.map → index-B149xfYw.js.map} +1 -1
- package/dist/{index-C_G6mJoE.js → index-BZmaPHSu.js} +18 -18
- package/dist/{index-C_G6mJoE.js.map → index-BZmaPHSu.js.map} +1 -1
- package/dist/{index-BpujEeVe.js → index-CAZ9r1pH.js} +7 -7
- package/dist/{index-BpujEeVe.js.map → index-CAZ9r1pH.js.map} +1 -1
- package/dist/{index-BGf7vP5k.js → index-Cdd-V_lk.js} +8 -8
- package/dist/{index-BGf7vP5k.js.map → index-Cdd-V_lk.js.map} +1 -1
- package/dist/{index-DGb59RGF.js → index-HfLTeWS9.js} +9 -9
- package/dist/{index-DGb59RGF.js.map → index-HfLTeWS9.js.map} +1 -1
- package/dist/{index-D_TXLv5w.js → index-Ys3psTd9.js} +22 -22
- package/dist/{index-D_TXLv5w.js.map → index-Ys3psTd9.js.map} +1 -1
- package/dist/index.js +142 -135
- package/dist/{pies.utils-DpY3U9c2.js → pies.utils-DKG--4_R.js} +6 -6
- package/dist/{pies.utils-DpY3U9c2.js.map → pies.utils-DKG--4_R.js.map} +1 -1
- package/dist/remarkable-ui/charts/lines/lines.utils.d.ts.map +1 -1
- package/dist/remarkable-ui/index.d.ts +4 -1
- package/dist/remarkable-ui/index.d.ts.map +1 -1
- package/dist/{timeRange.utils-B9kyLPq_.js → timeRange.utils-CLeolDg1.js} +2 -2
- package/dist/{timeRange.utils-B9kyLPq_.js.map → timeRange.utils-CLeolDg1.js.map} +1 -1
- package/package.json +1 -1
- package/dist/bars.utils-cZSSvRai.js +0 -311
- package/dist/bars.utils-cZSSvRai.js.map +0 -1
- package/dist/component.constants-D0ea4CW4.js.map +0 -1
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
import { C as $, m as C, D as I, E as h, F as x, G as B, H as T, I as S, L as R, J as V, K as j, M as F, N, O as P, P as z, j as f, Q as M, R as _, S as H, T as L } from "./component.constants-D0ea4CW4.js";
|
|
2
|
-
import { useRef as K } from "react";
|
|
3
|
-
import { r as E, g as G } from "./charts.utils-LgE4AEAw.js";
|
|
4
|
-
import { g as y } from "./formatter.utils-DBUd3PfE.js";
|
|
5
|
-
import { g as w, a as p } from "./object.utils-D_Zzon-H.js";
|
|
6
|
-
const J = (a) => {
|
|
7
|
-
var t;
|
|
8
|
-
return {
|
|
9
|
-
...a,
|
|
10
|
-
datasets: (t = a.datasets) == null ? void 0 : t.map((n, s) => {
|
|
11
|
-
const e = h[s % h.length], r = {
|
|
12
|
-
...n,
|
|
13
|
-
backgroundColor: e,
|
|
14
|
-
borderColor: e
|
|
15
|
-
};
|
|
16
|
-
return C(r, n);
|
|
17
|
-
})
|
|
18
|
-
};
|
|
19
|
-
}, Q = (a, t) => t && a.datasetIndex === a.chart.data.datasets.length - 1 ? "auto" : !1, X = (a, t) => {
|
|
20
|
-
const { datasets: n } = t.chart.data, s = t.dataIndex, e = n.reduce((r, d) => {
|
|
21
|
-
const o = d.data[s];
|
|
22
|
-
return r + (o || 0);
|
|
23
|
-
}, 0);
|
|
24
|
-
return e > 0 ? e : "";
|
|
25
|
-
}, Y = (a) => ({
|
|
26
|
-
indexAxis: "x",
|
|
27
|
-
layout: {
|
|
28
|
-
padding: {
|
|
29
|
-
top: (a.stacked ? a.showTotalLabels : a.showValueLabels) ? B : 0
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
plugins: {
|
|
33
|
-
datalabels: {
|
|
34
|
-
labels: {
|
|
35
|
-
total: {
|
|
36
|
-
align: (t) => t.dataset.data[t.dataIndex] >= 0 ? "top" : "left"
|
|
37
|
-
},
|
|
38
|
-
value: {
|
|
39
|
-
align: (t) => a.stacked ? "center" : t.dataset.data[t.dataIndex] >= 0 ? "top" : "bottom"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
scales: {
|
|
45
|
-
x: {
|
|
46
|
-
grid: { display: !1 },
|
|
47
|
-
ticks: {
|
|
48
|
-
color: x("--em-chart-grid-font-color-default")
|
|
49
|
-
},
|
|
50
|
-
reverse: a.reverseXAxis
|
|
51
|
-
},
|
|
52
|
-
y: {
|
|
53
|
-
grid: { display: !0 },
|
|
54
|
-
ticks: {
|
|
55
|
-
color: x("--em-chart-grid-font-color-muted")
|
|
56
|
-
},
|
|
57
|
-
min: a.yAxisRangeMin,
|
|
58
|
-
max: a.yAxisRangeMax,
|
|
59
|
-
type: a.showLogarithmicScale ? "logarithmic" : "linear"
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}), q = (a) => ({
|
|
63
|
-
indexAxis: "y",
|
|
64
|
-
layout: {
|
|
65
|
-
padding: {
|
|
66
|
-
right: (a.stacked ? a.showTotalLabels : a.showValueLabels) ? B : 0
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
plugins: {
|
|
70
|
-
datalabels: {
|
|
71
|
-
labels: {
|
|
72
|
-
total: {
|
|
73
|
-
align: (t) => t.dataset.data[t.dataIndex] >= 0 ? "right" : "left"
|
|
74
|
-
},
|
|
75
|
-
value: {
|
|
76
|
-
align: (t) => a.stacked ? "center" : t.dataset.data[t.dataIndex] >= 0 ? "right" : "left"
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
scales: {
|
|
82
|
-
x: {
|
|
83
|
-
grid: { display: !0 },
|
|
84
|
-
ticks: {
|
|
85
|
-
color: x("--em-chart-grid-font-color-muted")
|
|
86
|
-
},
|
|
87
|
-
min: a.xAxisRangeMin,
|
|
88
|
-
max: a.xAxisRangeMax,
|
|
89
|
-
type: a.showLogarithmicScale ? "logarithmic" : "linear"
|
|
90
|
-
},
|
|
91
|
-
y: {
|
|
92
|
-
grid: { display: !1 },
|
|
93
|
-
ticks: {
|
|
94
|
-
color: x("--em-chart-grid-font-color-default")
|
|
95
|
-
},
|
|
96
|
-
reverse: a.reverseYAxis
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}), U = (a) => {
|
|
100
|
-
const t = {
|
|
101
|
-
elements: {
|
|
102
|
-
bar: {
|
|
103
|
-
borderRadius: $("--em-chart-style-border-radius-default")
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
plugins: {
|
|
107
|
-
legend: { display: a.showLegend },
|
|
108
|
-
tooltip: {
|
|
109
|
-
enabled: a.showTooltips
|
|
110
|
-
},
|
|
111
|
-
datalabels: {
|
|
112
|
-
display: (e) => a.showValueLabels && e.dataset.data[e.dataIndex] !== 0 ? "auto" : !1,
|
|
113
|
-
labels: {
|
|
114
|
-
total: {
|
|
115
|
-
display: (e) => Q(e, a.showTotalLabels),
|
|
116
|
-
formatter: X,
|
|
117
|
-
anchor: (e) => e.dataset.data[e.dataIndex] >= 0 ? "end" : "start"
|
|
118
|
-
},
|
|
119
|
-
value: {
|
|
120
|
-
anchor: (e) => a.stacked ? "center" : e.dataset.data[e.dataIndex] >= 0 ? "end" : "start"
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
scales: {
|
|
126
|
-
x: {
|
|
127
|
-
stacked: !!a.stacked,
|
|
128
|
-
title: {
|
|
129
|
-
display: !!a.xAxisLabel,
|
|
130
|
-
text: a.xAxisLabel ?? ""
|
|
131
|
-
},
|
|
132
|
-
ticks: { display: !0 }
|
|
133
|
-
},
|
|
134
|
-
y: {
|
|
135
|
-
stacked: !!a.stacked,
|
|
136
|
-
title: {
|
|
137
|
-
display: !!a.yAxisLabel,
|
|
138
|
-
text: a.yAxisLabel ?? ""
|
|
139
|
-
},
|
|
140
|
-
ticks: { display: !0 }
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}, s = (a.horizontal ? q : Y)(a);
|
|
144
|
-
return C(I, t, s);
|
|
145
|
-
};
|
|
146
|
-
T.register(
|
|
147
|
-
S,
|
|
148
|
-
R,
|
|
149
|
-
V,
|
|
150
|
-
j,
|
|
151
|
-
F,
|
|
152
|
-
N,
|
|
153
|
-
P,
|
|
154
|
-
z
|
|
155
|
-
);
|
|
156
|
-
const sa = ({ data: a, onSegmentClick: t, options: n = {}, ...s }) => {
|
|
157
|
-
const e = K(null), r = C(U(s), n), d = (o) => {
|
|
158
|
-
const l = H(o, e);
|
|
159
|
-
t == null || t(l);
|
|
160
|
-
};
|
|
161
|
-
return /* @__PURE__ */ f.jsx("div", { className: M.chartContainer, children: /* @__PURE__ */ f.jsx(
|
|
162
|
-
_,
|
|
163
|
-
{
|
|
164
|
-
ref: e,
|
|
165
|
-
data: J(a),
|
|
166
|
-
options: r,
|
|
167
|
-
onClick: d
|
|
168
|
-
}
|
|
169
|
-
) });
|
|
170
|
-
}, la = (a, t) => {
|
|
171
|
-
var g;
|
|
172
|
-
const n = y(t), { data: s = [], dimension: e, groupDimension: r, measure: d } = a, o = [...new Set(s.map((u) => u[e.name]).filter(Boolean))].sort(), l = `${r.name}${(g = r.inputs) != null && g.granularity ? `.${r.inputs.granularity}` : ""}`, i = [...new Set(s.map((u) => u[l]))].filter(Boolean), c = w(t), m = i.map((u, b) => {
|
|
173
|
-
const A = p(
|
|
174
|
-
`${c}.charts.backgroundColors`,
|
|
175
|
-
`${r.name}.${u}`,
|
|
176
|
-
t.charts.backgroundColors ?? h,
|
|
177
|
-
b
|
|
178
|
-
), O = p(
|
|
179
|
-
`${c}.charts.borderColors`,
|
|
180
|
-
`${r.name}.${u}`,
|
|
181
|
-
t.charts.borderColors ?? h,
|
|
182
|
-
b
|
|
183
|
-
);
|
|
184
|
-
return {
|
|
185
|
-
label: n.data(r, u),
|
|
186
|
-
rawLabel: u,
|
|
187
|
-
backgroundColor: A,
|
|
188
|
-
borderColor: O,
|
|
189
|
-
data: o.map((D) => {
|
|
190
|
-
const k = s.find(
|
|
191
|
-
(v) => v[l] === u && v[e.name] === D
|
|
192
|
-
);
|
|
193
|
-
return k ? Number(k[d.name]) : 0;
|
|
194
|
-
})
|
|
195
|
-
};
|
|
196
|
-
});
|
|
197
|
-
return {
|
|
198
|
-
labels: o,
|
|
199
|
-
datasets: m
|
|
200
|
-
};
|
|
201
|
-
}, oa = (a, t = E) => {
|
|
202
|
-
if (!a.data)
|
|
203
|
-
return {
|
|
204
|
-
labels: [],
|
|
205
|
-
datasets: [{ data: [] }]
|
|
206
|
-
};
|
|
207
|
-
const n = y(t), s = w(t), e = G(a.data, a.dimension, a.measures, a.maxItems);
|
|
208
|
-
return {
|
|
209
|
-
labels: e.map((r) => r[a.dimension.name]),
|
|
210
|
-
datasets: a.measures.map((r, d) => {
|
|
211
|
-
const o = p(
|
|
212
|
-
`${s}.charts.backgroundColors`,
|
|
213
|
-
r.name,
|
|
214
|
-
t.charts.backgroundColors ?? L,
|
|
215
|
-
d
|
|
216
|
-
), l = p(
|
|
217
|
-
`${s}.charts.borderColors`,
|
|
218
|
-
r.name,
|
|
219
|
-
t.charts.borderColors ?? L,
|
|
220
|
-
d
|
|
221
|
-
);
|
|
222
|
-
return {
|
|
223
|
-
label: n.dimensionOrMeasureTitle(r),
|
|
224
|
-
data: e.map((i) => i[r.name] ?? 0),
|
|
225
|
-
backgroundColor: o,
|
|
226
|
-
borderColor: l
|
|
227
|
-
};
|
|
228
|
-
})
|
|
229
|
-
};
|
|
230
|
-
}, W = (a, t) => {
|
|
231
|
-
const { datasets: n } = a.chart.data, s = a.dataIndex, e = n.reduce((r, d) => {
|
|
232
|
-
const o = d.data[s];
|
|
233
|
-
return r + (o || 0);
|
|
234
|
-
}, 0);
|
|
235
|
-
return t(e);
|
|
236
|
-
}, na = (a, t) => {
|
|
237
|
-
const { onBarClicked: n, measures: s, dimension: e, horizontal: r, data: d } = a, o = y(t);
|
|
238
|
-
return {
|
|
239
|
-
plugins: {
|
|
240
|
-
legend: { position: t.charts.legendPosition ?? "bottom" },
|
|
241
|
-
datalabels: {
|
|
242
|
-
labels: {
|
|
243
|
-
total: {
|
|
244
|
-
formatter: (l, i) => W(
|
|
245
|
-
i,
|
|
246
|
-
(c) => o.data(s[0], c)
|
|
247
|
-
)
|
|
248
|
-
},
|
|
249
|
-
value: {
|
|
250
|
-
formatter: (l, i) => {
|
|
251
|
-
const c = s[i.datasetIndex % s.length];
|
|
252
|
-
return o.data(c, l);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
},
|
|
257
|
-
tooltip: {
|
|
258
|
-
callbacks: {
|
|
259
|
-
title: (l) => {
|
|
260
|
-
var c;
|
|
261
|
-
const i = (c = l[0]) == null ? void 0 : c.label;
|
|
262
|
-
return o.data(e, i);
|
|
263
|
-
},
|
|
264
|
-
label: (l) => {
|
|
265
|
-
const i = s[l.datasetIndex % s.length], c = l.raw;
|
|
266
|
-
return `${o.data(e, l.dataset.label) || ""}: ${o.data(i, c)}`;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
scales: {
|
|
272
|
-
x: {
|
|
273
|
-
ticks: {
|
|
274
|
-
callback: (l) => {
|
|
275
|
-
if (r)
|
|
276
|
-
return o.data(s[0], l);
|
|
277
|
-
if (!d || !d.labels) return;
|
|
278
|
-
const i = d.labels[Number(l)];
|
|
279
|
-
return o.data(e, i);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
},
|
|
283
|
-
y: {
|
|
284
|
-
ticks: {
|
|
285
|
-
callback: (l) => {
|
|
286
|
-
if (!r)
|
|
287
|
-
return o.data(s[0], l);
|
|
288
|
-
if (!d || !d.labels) return;
|
|
289
|
-
const i = d.labels[Number(l)];
|
|
290
|
-
return o.data(e, i);
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
},
|
|
295
|
-
onClick: (l, i, c) => {
|
|
296
|
-
var b;
|
|
297
|
-
const m = i[0], g = m ? c.data.labels[m.index] : null, u = m ? (b = c.data.datasets[m.datasetIndex]) == null ? void 0 : b.rawLabel : null;
|
|
298
|
-
n({
|
|
299
|
-
axisDimensionValue: g,
|
|
300
|
-
groupingDimensionValue: u
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
};
|
|
304
|
-
};
|
|
305
|
-
export {
|
|
306
|
-
sa as B,
|
|
307
|
-
na as a,
|
|
308
|
-
la as b,
|
|
309
|
-
oa as g
|
|
310
|
-
};
|
|
311
|
-
//# sourceMappingURL=bars.utils-cZSSvRai.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bars.utils-cZSSvRai.js","sources":["../src/remarkable-ui/charts/bars/bars.utils.ts","../src/remarkable-ui/charts/bars/BarChart.tsx","../src/remarkable-pro/components/charts/bars/bars.utils.ts"],"sourcesContent":["import { ChartData, ChartOptions } from 'chart.js';\nimport { chartContrastColors } from '../charts.constants';\nimport { getStyle, getStyleNumber } from '../../styles/styles.utils';\nimport { mergician } from 'mergician';\nimport { BarChartConfigurationProps, BarChartHorizontalConfigurationProps } from './bars.types';\nimport { Context } from 'chartjs-plugin-datalabels';\nimport {\n chartjsAxisOptions,\n chartjsAxisOptionsLayoutPadding,\n} from '../chartjs.cartesian.constants';\n\nexport const getBarChartData = (data: ChartData<'bar'>): ChartData<'bar'> => {\n return {\n ...data,\n datasets: data.datasets?.map((dataset, index) => {\n const colors = chartContrastColors[index % chartContrastColors.length];\n const defaultDataset = {\n ...dataset,\n backgroundColor: colors,\n borderColor: colors,\n };\n\n return mergician(defaultDataset, dataset) as typeof dataset;\n }),\n };\n};\n\nconst getDatalabelTotalDisplay = (context: Context, showTotalLabels: boolean | undefined) =>\n showTotalLabels && context.datasetIndex === context.chart.data.datasets.length - 1\n ? 'auto'\n : false;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst getDatalabelTotalFormatter = (_value: any, context: Context) => {\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 total > 0 ? total : '';\n};\n\nconst getBarVerticalChartOptions = (\n config: BarChartConfigurationProps,\n): Partial<ChartOptions<'bar'>> => {\n return {\n indexAxis: 'x',\n layout: {\n padding: {\n top: (config.stacked ? config.showTotalLabels : config.showValueLabels)\n ? chartjsAxisOptionsLayoutPadding\n : 0,\n },\n },\n plugins: {\n datalabels: {\n labels: {\n total: {\n align: (context) => {\n const value = context.dataset.data[context.dataIndex] as number;\n return value >= 0 ? 'top' : 'left';\n },\n },\n value: {\n align: (context) => {\n if (config.stacked) {\n return 'center';\n }\n const value = context.dataset.data[context.dataIndex] as number;\n return value >= 0 ? 'top' : 'bottom';\n },\n },\n },\n },\n },\n scales: {\n x: {\n grid: { display: false },\n ticks: {\n color: getStyle('--em-chart-grid-font-color-default'),\n },\n reverse: config.reverseXAxis,\n },\n y: {\n grid: { display: true },\n ticks: {\n color: getStyle('--em-chart-grid-font-color-muted'),\n },\n min: config.yAxisRangeMin,\n max: config.yAxisRangeMax,\n type: config.showLogarithmicScale ? 'logarithmic' : 'linear',\n },\n },\n };\n};\n\nconst getBarHorizontalChartOptions = (\n config: BarChartHorizontalConfigurationProps,\n): Partial<ChartOptions<'bar'>> => {\n return {\n indexAxis: 'y',\n layout: {\n padding: {\n right: (config.stacked ? config.showTotalLabels : config.showValueLabels)\n ? chartjsAxisOptionsLayoutPadding\n : 0,\n },\n },\n plugins: {\n datalabels: {\n labels: {\n total: {\n align: (context) => {\n const value = context.dataset.data[context.dataIndex] as number;\n return value >= 0 ? 'right' : 'left';\n },\n },\n value: {\n align: (context) => {\n if (config.stacked) {\n return 'center';\n }\n const value = context.dataset.data[context.dataIndex] as number;\n return value >= 0 ? 'right' : 'left';\n },\n },\n },\n },\n },\n scales: {\n x: {\n grid: { display: true },\n ticks: {\n color: getStyle('--em-chart-grid-font-color-muted'),\n },\n min: config.xAxisRangeMin,\n max: config.xAxisRangeMax,\n type: config.showLogarithmicScale ? 'logarithmic' : 'linear',\n },\n y: {\n grid: { display: false },\n ticks: {\n color: getStyle('--em-chart-grid-font-color-default'),\n },\n reverse: config.reverseYAxis,\n },\n },\n };\n};\n\nexport const getBarChartOptions = (\n options: BarChartConfigurationProps,\n): Partial<ChartOptions<'bar'>> => {\n const baseBarChartOptions: Partial<ChartOptions<'bar'>> = {\n elements: {\n bar: {\n borderRadius: getStyleNumber('--em-chart-style-border-radius-default'),\n },\n },\n plugins: {\n legend: { display: options.showLegend },\n tooltip: {\n enabled: options.showTooltips,\n },\n datalabels: {\n display: (context) => {\n return options.showValueLabels && context.dataset.data[context.dataIndex] !== 0\n ? 'auto'\n : false;\n },\n labels: {\n total: {\n display: (context) => getDatalabelTotalDisplay(context, options.showTotalLabels),\n formatter: getDatalabelTotalFormatter,\n anchor: (context) => {\n const value = context.dataset.data[context.dataIndex] as number;\n return value >= 0 ? 'end' : 'start';\n },\n },\n value: {\n anchor: (context) => {\n if (options.stacked) {\n return 'center';\n }\n const value = context.dataset.data[context.dataIndex] as number;\n return value >= 0 ? 'end' : 'start';\n },\n },\n },\n },\n },\n scales: {\n x: {\n stacked: Boolean(options.stacked),\n title: {\n display: Boolean(options.xAxisLabel),\n text: options.xAxisLabel ?? '',\n },\n ticks: { display: true },\n },\n y: {\n stacked: Boolean(options.stacked),\n title: {\n display: Boolean(options.yAxisLabel),\n text: options.yAxisLabel ?? '',\n },\n ticks: { display: true },\n },\n },\n };\n\n const getVerticalHorizontalOptions = options.horizontal\n ? getBarHorizontalChartOptions\n : getBarVerticalChartOptions;\n\n const verticalHorizontalOptions = getVerticalHorizontalOptions(options);\n\n return mergician(chartjsAxisOptions, baseBarChartOptions, verticalHorizontalOptions);\n};\n","import { FC, useRef } from 'react';\nimport { Bar } from 'react-chartjs-2';\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend,\n LogarithmicScale,\n} from 'chart.js';\nimport { BaseBarChartProps } from './bars.types';\nimport { getSegmentIndexClicked } from '../chartjs.utils';\nimport { getBarChartData, getBarChartOptions } from './bars.utils';\nimport styles from '../charts.module.css';\nimport { mergician } from 'mergician';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\nChartJS.register(\n CategoryScale,\n LinearScale,\n BarElement,\n LogarithmicScale,\n Title,\n Tooltip,\n Legend,\n ChartDataLabels,\n);\n\nexport type BarChartProps = BaseBarChartProps;\n\nexport const BarChart: FC<BarChartProps> = ({ data, onSegmentClick, options = {}, ...props }) => {\n const chartRef = useRef(null);\n\n const barChartOptions = mergician(getBarChartOptions(props), options);\n\n const handleSegmentClick = (event: React.MouseEvent<HTMLCanvasElement>) => {\n const indexClicked = getSegmentIndexClicked(event, chartRef);\n onSegmentClick?.(indexClicked);\n };\n\n return (\n <div className={styles.chartContainer}>\n <Bar\n ref={chartRef}\n data={getBarChartData(data)}\n options={barChartOptions}\n onClick={handleSegmentClick}\n />\n </div>\n );\n};\n","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 { groupTailAsOther } from '../charts.utils';\nimport { getColor } from '../../../theme/styles/styles.utils';\nimport { chartColors } from '../../../../remarkable-ui';\nimport { getObjectStableKey } from '../../../utils.ts/object.utils';\nimport { chartContrastColors } from '../../../../remarkable-ui/charts/charts.constants';\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 },\n theme: Theme,\n): ChartData<'bar'> => {\n const themeFormatter = getThemeFormatter(theme);\n const { data = [], dimension, groupDimension, measure } = props;\n\n const axis = [...new Set(data.map((d) => d[dimension.name]).filter(Boolean))].sort();\n const groupDimensionName = `${groupDimension.name}${groupDimension.inputs?.granularity ? `.${groupDimension.inputs.granularity}` : ''}`;\n const groupBy = [...new Set(data.map((d) => d[groupDimensionName]))].filter(Boolean);\n\n const themeKey = getObjectStableKey(theme);\n\n const 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 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 themeKey = getObjectStableKey(theme);\n const groupedData = groupTailAsOther(props.data, props.dimension, props.measures, props.maxItems);\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 = getColor(\n `${themeKey}.charts.backgroundColors`,\n measure.name,\n theme.charts.backgroundColors ?? chartColors,\n index,\n );\n\n const borderColor = getColor(\n `${themeKey}.charts.borderColors`,\n measure.name,\n theme.charts.borderColors ?? chartColors,\n index,\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 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 measure = measures[context.datasetIndex % measures.length]!;\n const raw = context.raw as number;\n return `${themeFormatter.data(dimension, context.dataset.label) || ''}: ${themeFormatter.data(measure, raw)}`;\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 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"],"names":["getBarChartData","data","_a","dataset","index","colors","chartContrastColors","defaultDataset","mergician","getDatalabelTotalDisplay","context","showTotalLabels","getDatalabelTotalFormatter","_value","datasets","i","total","sum","ds","val","getBarVerticalChartOptions","config","chartjsAxisOptionsLayoutPadding","getStyle","getBarHorizontalChartOptions","getBarChartOptions","options","baseBarChartOptions","getStyleNumber","verticalHorizontalOptions","chartjsAxisOptions","ChartJS","CategoryScale","LinearScale","BarElement","LogarithmicScale","Title","Tooltip","Legend","ChartDataLabels","BarChart","onSegmentClick","props","chartRef","useRef","barChartOptions","handleSegmentClick","event","indexClicked","getSegmentIndexClicked","jsx","styles","Bar","getBarStackedChartProData","theme","themeFormatter","getThemeFormatter","dimension","groupDimension","measure","axis","d","groupDimensionName","groupBy","themeKey","getObjectStableKey","groupByItem","backgroundColor","getColor","borderColor","axisItem","record","getBarChartProData","remarkableTheme","groupedData","groupTailAsOther","item","chartColors","getBarChartProDatalabelTotalFormatter","formatter","getBarChartProOptions","onBarClicked","measures","horizontal","value","label","raw","_event","elements","chart","element","axisDimensionValue","groupingDimensionValue"],"mappings":"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"}
|