drizzle-cube 0.1.69 → 0.2.1
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/adapters/{compiler-CghsDLXl.cjs → compiler-DP1pPIcg.cjs} +9 -9
- package/dist/adapters/{compiler-BnHK-nxh.js → compiler-gcKytLwd.js} +12 -13
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.js +1 -1
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.js +1 -1
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.js +1 -1
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.js +1 -1
- package/dist/client/charts/ChartLoader.d.ts +56 -0
- package/dist/client/charts/lazyChartConfigRegistry.d.ts +90 -0
- package/dist/client/charts.d.ts +6 -0
- package/dist/client/charts.js +38 -15
- package/dist/client/charts.js.map +1 -1
- package/dist/client/chunks/chart-activitygridchart-B5OqLgbD.js +3713 -0
- package/dist/client/chunks/chart-activitygridchart-B5OqLgbD.js.map +1 -0
- package/dist/client/chunks/chart-activitygridchart-config-D9CgNH02.js +51 -0
- package/dist/client/chunks/chart-activitygridchart-config-D9CgNH02.js.map +1 -0
- package/dist/client/chunks/chart-areachart-CTzUpR0_.js +204 -0
- package/dist/client/chunks/chart-areachart-CTzUpR0_.js.map +1 -0
- package/dist/client/chunks/chart-areachart-config-InZgxubz.js +66 -0
- package/dist/client/chunks/chart-areachart-config-InZgxubz.js.map +1 -0
- package/dist/client/chunks/chart-barchart-CKF8FnMs.js +177 -0
- package/dist/client/chunks/chart-barchart-CKF8FnMs.js.map +1 -0
- package/dist/client/chunks/chart-barchart-config-DxatOnVV.js +59 -0
- package/dist/client/chunks/chart-barchart-config-DxatOnVV.js.map +1 -0
- package/dist/client/chunks/chart-bubblechart-5Z0hPYwn.js +210 -0
- package/dist/client/chunks/chart-bubblechart-5Z0hPYwn.js.map +1 -0
- package/dist/client/chunks/chart-bubblechart-config-CcZTMTCx.js +59 -0
- package/dist/client/chunks/chart-bubblechart-config-CcZTMTCx.js.map +1 -0
- package/dist/client/chunks/chart-chartcontainer-CdwzIKP1.js +103 -0
- package/dist/client/chunks/chart-chartcontainer-CdwzIKP1.js.map +1 -0
- package/dist/client/chunks/chart-charttooltip-CqtjUW2V.js +26 -0
- package/dist/client/chunks/chart-charttooltip-CqtjUW2V.js.map +1 -0
- package/dist/client/chunks/chart-datatable-config-D7mojhYA.js +22 -0
- package/dist/client/chunks/chart-datatable-config-D7mojhYA.js.map +1 -0
- package/dist/client/chunks/chart-datatable-uFzkh18f.js +57 -0
- package/dist/client/chunks/chart-datatable-uFzkh18f.js.map +1 -0
- package/dist/client/chunks/chart-kpidelta-B1zg2dTx.js +434 -0
- package/dist/client/chunks/chart-kpidelta-B1zg2dTx.js.map +1 -0
- package/dist/client/chunks/chart-kpidelta-config-icJXuFxe.js +99 -0
- package/dist/client/chunks/chart-kpidelta-config-icJXuFxe.js.map +1 -0
- package/dist/client/chunks/chart-kpinumber-CHcSqthc.js +398 -0
- package/dist/client/chunks/chart-kpinumber-CHcSqthc.js.map +1 -0
- package/dist/client/chunks/chart-kpinumber-config-T39g03ud.js +77 -0
- package/dist/client/chunks/chart-kpinumber-config-T39g03ud.js.map +1 -0
- package/dist/client/chunks/chart-kpitext-BrapZkRe.js +165 -0
- package/dist/client/chunks/chart-kpitext-BrapZkRe.js.map +1 -0
- package/dist/client/chunks/chart-kpitext-config-BbJGXAVk.js +49 -0
- package/dist/client/chunks/chart-kpitext-config-BbJGXAVk.js.map +1 -0
- package/dist/client/chunks/chart-linechart-DqZU4vH8.js +155 -0
- package/dist/client/chunks/chart-linechart-DqZU4vH8.js.map +1 -0
- package/dist/client/chunks/chart-linechart-config-BS1qVC8K.js +54 -0
- package/dist/client/chunks/chart-linechart-config-BS1qVC8K.js.map +1 -0
- package/dist/client/chunks/chart-markdownchart-C3FAQFuO.js +254 -0
- package/dist/client/chunks/chart-markdownchart-C3FAQFuO.js.map +1 -0
- package/dist/client/chunks/chart-markdownchart-config-DMCD8phf.js +62 -0
- package/dist/client/chunks/chart-markdownchart-config-DMCD8phf.js.map +1 -0
- package/dist/client/chunks/chart-piechart-Dsxs70px.js +121 -0
- package/dist/client/chunks/chart-piechart-Dsxs70px.js.map +1 -0
- package/dist/client/chunks/chart-piechart-config-6ZK8XaSX.js +32 -0
- package/dist/client/chunks/chart-piechart-config-6ZK8XaSX.js.map +1 -0
- package/dist/client/chunks/chart-radarchart-2qnrlYCv.js +124 -0
- package/dist/client/chunks/chart-radarchart-2qnrlYCv.js.map +1 -0
- package/dist/client/chunks/chart-radarchart-config-CCWOkkwO.js +38 -0
- package/dist/client/chunks/chart-radarchart-config-CCWOkkwO.js.map +1 -0
- package/dist/client/chunks/chart-radialbarchart-DPi9fYc7.js +109 -0
- package/dist/client/chunks/chart-radialbarchart-DPi9fYc7.js.map +1 -0
- package/dist/client/chunks/chart-radialbarchart-config-DicXYrMW.js +31 -0
- package/dist/client/chunks/chart-radialbarchart-config-DicXYrMW.js.map +1 -0
- package/dist/client/chunks/chart-scatterchart-DNleJCr4.js +201 -0
- package/dist/client/chunks/chart-scatterchart-DNleJCr4.js.map +1 -0
- package/dist/client/chunks/chart-scatterchart-config-DgYa-5vm.js +41 -0
- package/dist/client/chunks/chart-scatterchart-config-DgYa-5vm.js.map +1 -0
- package/dist/client/chunks/chart-treemapchart-B2-Qr28e.js +253 -0
- package/dist/client/chunks/chart-treemapchart-B2-Qr28e.js.map +1 -0
- package/dist/client/chunks/chart-treemapchart-config-DGhteyBe.js +40 -0
- package/dist/client/chunks/chart-treemapchart-config-DGhteyBe.js.map +1 -0
- package/dist/client/chunks/charts-BmpuCBGG.js +286 -0
- package/dist/client/chunks/charts-BmpuCBGG.js.map +1 -0
- package/dist/client/chunks/{icons-BWMWCuY7.js → icons-D-n_woAP.js} +614 -614
- package/dist/client/chunks/icons-D-n_woAP.js.map +1 -0
- package/dist/client/chunks/index-EfJ-vN-5.js +8707 -0
- package/dist/client/chunks/index-EfJ-vN-5.js.map +1 -0
- package/dist/client/components.js +11 -11
- package/dist/client/hooks.js +8 -8
- package/dist/client/index.d.ts +18 -1
- package/dist/client/index.js +9135 -39
- package/dist/client/index.js.map +1 -1
- package/dist/client/providers.d.ts +1 -0
- package/dist/client/providers.js +8 -4
- package/dist/client/providers.js.map +1 -1
- package/dist/client/styles.css +1 -1
- package/dist/client-bundle-stats.html +1 -1
- package/dist/server/index.cjs +16 -16
- package/dist/server/index.d.ts +0 -286
- package/dist/server/index.js +767 -881
- package/package.json +7 -2
- package/dist/client/chunks/charts-jwgcWeFt.js +0 -2580
- package/dist/client/chunks/charts-jwgcWeFt.js.map +0 -1
- package/dist/client/chunks/components-DALzorPs.js +0 -22432
- package/dist/client/chunks/components-DALzorPs.js.map +0 -1
- package/dist/client/chunks/icons-BWMWCuY7.js.map +0 -1
- package/dist/client/chunks/providers-D7zRgZrO.js +0 -308
- package/dist/client/chunks/providers-D7zRgZrO.js.map +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { I as s, o as i } from "./icons-D-n_woAP.js";
|
|
3
|
+
const a = {
|
|
4
|
+
icon: ({ className: e }) => /* @__PURE__ */ o(s, { icon: i, className: e }),
|
|
5
|
+
description: "Reveal correlations between variables",
|
|
6
|
+
useCase: "Best for identifying patterns, correlations, outliers, and relationships between two measures",
|
|
7
|
+
dropZones: [
|
|
8
|
+
{
|
|
9
|
+
key: "xAxis",
|
|
10
|
+
label: "X-Axis",
|
|
11
|
+
description: "Measure or dimension for X position",
|
|
12
|
+
mandatory: !0,
|
|
13
|
+
maxItems: 1,
|
|
14
|
+
acceptTypes: ["dimension", "timeDimension", "measure"],
|
|
15
|
+
emptyText: "Drop a field for X-axis"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
key: "yAxis",
|
|
19
|
+
label: "Y-Axis",
|
|
20
|
+
description: "Measure for Y position",
|
|
21
|
+
mandatory: !0,
|
|
22
|
+
maxItems: 1,
|
|
23
|
+
acceptTypes: ["measure"],
|
|
24
|
+
emptyText: "Drop a measure for Y-axis"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: "series",
|
|
28
|
+
label: "Series (Color Groups)",
|
|
29
|
+
description: "Dimension to color points by category",
|
|
30
|
+
mandatory: !1,
|
|
31
|
+
maxItems: 1,
|
|
32
|
+
acceptTypes: ["dimension"],
|
|
33
|
+
emptyText: "Drop a dimension to color points"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
displayOptions: ["showLegend", "showGrid", "showTooltip", "hideHeader"]
|
|
37
|
+
};
|
|
38
|
+
export {
|
|
39
|
+
a as scatterChartConfig
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=chart-scatterchart-config-DgYa-5vm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-scatterchart-config-DgYa-5vm.js","sources":["../../../src/client/components/charts/ScatterChart.config.tsx"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\nimport { Icon } from '@iconify/react'\nimport chartDots2Icon from '@iconify-icons/tabler/chart-dots-2'\n\n/**\n * Configuration for the scatter chart type\n */\nexport const scatterChartConfig: ChartTypeConfig = {\n icon: ({ className }) => <Icon icon={chartDots2Icon} className={className} />,\n description: 'Reveal correlations between variables',\n useCase: 'Best for identifying patterns, correlations, outliers, and relationships between two measures',\n dropZones: [\n {\n key: 'xAxis',\n label: 'X-Axis',\n description: 'Measure or dimension for X position',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['dimension', 'timeDimension', 'measure'],\n emptyText: 'Drop a field for X-axis'\n },\n {\n key: 'yAxis',\n label: 'Y-Axis',\n description: 'Measure for Y position',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['measure'],\n emptyText: 'Drop a measure for Y-axis'\n },\n {\n key: 'series',\n label: 'Series (Color Groups)',\n description: 'Dimension to color points by category',\n mandatory: false,\n maxItems: 1,\n acceptTypes: ['dimension'],\n emptyText: 'Drop a dimension to color points'\n }\n ],\n displayOptions: ['showLegend', 'showGrid', 'showTooltip', 'hideHeader']\n}"],"names":["scatterChartConfig","className","jsx","Icon","chartDots2Icon"],"mappings":";;AAOO,MAAMA,IAAsC;AAAA,EACjD,MAAM,CAAC,EAAE,WAAAC,EAAA,MAAgB,gBAAAC,EAACC,GAAA,EAAK,MAAMC,GAAgB,WAAAH,GAAsB;AAAA,EAC3E,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,aAAa,iBAAiB,SAAS;AAAA,MACrD,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,SAAS;AAAA,MACvB,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,gBAAgB,CAAC,cAAc,YAAY,eAAe,YAAY;AACxE;"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { jsx as r, jsxs as p } from "react/jsx-runtime";
|
|
2
|
+
import { useState as V } from "react";
|
|
3
|
+
import { Treemap as O } from "recharts";
|
|
4
|
+
import { C as R } from "./chart-chartcontainer-CdwzIKP1.js";
|
|
5
|
+
import { C as D } from "./chart-charttooltip-CqtjUW2V.js";
|
|
6
|
+
import { u as E, b as I, q as H, h as N, c as b, o as q, a as h } from "./chart-activitygridchart-B5OqLgbD.js";
|
|
7
|
+
function J({
|
|
8
|
+
data: c,
|
|
9
|
+
chartConfig: m,
|
|
10
|
+
displayConfig: S = {},
|
|
11
|
+
queryObject: L,
|
|
12
|
+
height: x = "100%",
|
|
13
|
+
colorPalette: u
|
|
14
|
+
}) {
|
|
15
|
+
const [A, F] = V(null), { getFieldLabel: M } = E();
|
|
16
|
+
try {
|
|
17
|
+
const y = {
|
|
18
|
+
showTooltip: S?.showTooltip ?? !0,
|
|
19
|
+
showLegend: S?.showLegend ?? !0
|
|
20
|
+
};
|
|
21
|
+
if (!c || c.length === 0)
|
|
22
|
+
return /* @__PURE__ */ r("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height: x }, children: /* @__PURE__ */ p("div", { className: "text-center", children: [
|
|
23
|
+
/* @__PURE__ */ r("div", { className: "text-sm font-semibold mb-1", children: "No data available" }),
|
|
24
|
+
/* @__PURE__ */ r("div", { className: "text-xs text-dc-text-secondary", children: "No data points to display in treemap chart" })
|
|
25
|
+
] }) });
|
|
26
|
+
let f, g = !1, i;
|
|
27
|
+
if (m?.xAxis && m?.yAxis) {
|
|
28
|
+
const s = Array.isArray(m.xAxis) ? m.xAxis[0] : m.xAxis, n = Array.isArray(m.yAxis) ? m.yAxis[0] : m.yAxis;
|
|
29
|
+
i = Array.isArray(m.series) ? m.series[0] : m.series;
|
|
30
|
+
const o = I(L, s);
|
|
31
|
+
if (i) {
|
|
32
|
+
const t = c.map((e) => {
|
|
33
|
+
const a = e[i];
|
|
34
|
+
return typeof a == "string" ? parseFloat(a) : a;
|
|
35
|
+
}).filter((e) => !isNaN(e));
|
|
36
|
+
if (g = t.length === c.length && t.every((e) => typeof e == "number"), g) {
|
|
37
|
+
const e = Math.min(...t), a = Math.max(...t), l = H().domain([e, a]).range(N);
|
|
38
|
+
f = c.map((d) => {
|
|
39
|
+
const T = typeof d[i] == "string" ? parseFloat(d[i]) : d[i], k = l(T);
|
|
40
|
+
return {
|
|
41
|
+
name: b(d[s], o) || String(d[s]) || "Unknown",
|
|
42
|
+
size: typeof d[n] == "string" ? parseFloat(d[n]) : d[n] || 0,
|
|
43
|
+
fill: k,
|
|
44
|
+
series: String(d[i])
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
} else {
|
|
48
|
+
const e = [...new Set(c.map((l) => String(l[i])))], a = q().domain(e).range(u?.colors || h);
|
|
49
|
+
f = c.map((l) => ({
|
|
50
|
+
name: b(l[s], o) || String(l[s]) || "Unknown",
|
|
51
|
+
size: typeof l[n] == "string" ? parseFloat(l[n]) : l[n] || 0,
|
|
52
|
+
fill: a(String(l[i])),
|
|
53
|
+
series: String(l[i])
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
} else
|
|
57
|
+
f = c.map((t, e) => ({
|
|
58
|
+
name: b(t[s], o) || String(t[s]) || "Unknown",
|
|
59
|
+
size: typeof t[n] == "string" ? parseFloat(t[n]) : t[n] || 0,
|
|
60
|
+
fill: u?.colors && u.colors[e % u.colors.length] || h[e % h.length]
|
|
61
|
+
}));
|
|
62
|
+
} else {
|
|
63
|
+
const s = c[0], n = Object.keys(s), o = n.find(
|
|
64
|
+
(e) => typeof s[e] == "string" || e.toLowerCase().includes("name") || e.toLowerCase().includes("label") || e.toLowerCase().includes("category")
|
|
65
|
+
) || n[0], t = n.find((e) => e.toLowerCase().includes("size")) || n.find(
|
|
66
|
+
(e) => typeof s[e] == "number" && e !== o
|
|
67
|
+
) || n[1];
|
|
68
|
+
if (!t)
|
|
69
|
+
return /* @__PURE__ */ r("div", { className: "flex items-center justify-center w-full text-yellow-600", style: { height: x }, children: /* @__PURE__ */ p("div", { className: "text-center", children: [
|
|
70
|
+
/* @__PURE__ */ r("div", { className: "text-sm font-semibold mb-1", children: "Configuration Error" }),
|
|
71
|
+
/* @__PURE__ */ r("div", { className: "text-xs", children: "No numeric field found for treemap chart size" })
|
|
72
|
+
] }) });
|
|
73
|
+
f = c.map((e, a) => {
|
|
74
|
+
let l = e[o];
|
|
75
|
+
return typeof l == "boolean" ? l = l ? "Active" : "Inactive" : l === "true" || l === "false" ? l = l === "true" ? "Active" : "Inactive" : l = String(l), {
|
|
76
|
+
name: l,
|
|
77
|
+
size: typeof e[t] == "string" ? parseFloat(e[t]) : e[t] || 0,
|
|
78
|
+
fill: u?.colors && u.colors[a % u.colors.length] || h[a % h.length]
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (f = f.filter((s) => s.size != null && s.size > 0), f.length === 0)
|
|
83
|
+
return /* @__PURE__ */ r("div", { className: "flex items-center justify-center w-full text-dc-text-muted", style: { height: x }, children: /* @__PURE__ */ p("div", { className: "text-center", children: [
|
|
84
|
+
/* @__PURE__ */ r("div", { className: "text-sm font-semibold mb-1", children: "No valid data" }),
|
|
85
|
+
/* @__PURE__ */ r("div", { className: "text-xs text-dc-text-secondary", children: "No valid data points for treemap chart after transformation" })
|
|
86
|
+
] }) });
|
|
87
|
+
const j = (s) => {
|
|
88
|
+
const { x: n, y: o, width: t, height: e, index: a, name: l, size: d } = s;
|
|
89
|
+
return t < 20 || e < 20 ? null : /* @__PURE__ */ p("g", { children: [
|
|
90
|
+
/* @__PURE__ */ r(
|
|
91
|
+
"rect",
|
|
92
|
+
{
|
|
93
|
+
x: n,
|
|
94
|
+
y: o,
|
|
95
|
+
width: t,
|
|
96
|
+
height: e,
|
|
97
|
+
style: {
|
|
98
|
+
fill: f[a]?.fill || u?.colors && u.colors[a % u.colors.length] || h[a % h.length],
|
|
99
|
+
fillOpacity: A !== null ? A === a ? 1 : 0.6 : 0.8,
|
|
100
|
+
stroke: "#fff",
|
|
101
|
+
strokeWidth: 2,
|
|
102
|
+
cursor: "pointer"
|
|
103
|
+
},
|
|
104
|
+
onMouseEnter: () => F(a),
|
|
105
|
+
onMouseLeave: () => F(null)
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
/* @__PURE__ */ r(
|
|
109
|
+
"foreignObject",
|
|
110
|
+
{
|
|
111
|
+
x: n,
|
|
112
|
+
y: o,
|
|
113
|
+
width: t,
|
|
114
|
+
height: e,
|
|
115
|
+
style: { pointerEvents: "none", overflow: "visible" },
|
|
116
|
+
children: /* @__PURE__ */ p(
|
|
117
|
+
"div",
|
|
118
|
+
{
|
|
119
|
+
style: {
|
|
120
|
+
width: "100%",
|
|
121
|
+
height: "100%",
|
|
122
|
+
display: "flex",
|
|
123
|
+
flexDirection: "column",
|
|
124
|
+
alignItems: "center",
|
|
125
|
+
justifyContent: "center",
|
|
126
|
+
padding: "4px",
|
|
127
|
+
boxSizing: "border-box",
|
|
128
|
+
color: "#ffffff",
|
|
129
|
+
textShadow: "0 1px 2px rgba(0,0,0,0.8)",
|
|
130
|
+
fontFamily: "system-ui, -apple-system, sans-serif",
|
|
131
|
+
overflow: "hidden"
|
|
132
|
+
},
|
|
133
|
+
children: [
|
|
134
|
+
t > 40 && e > 30 && /* @__PURE__ */ r(
|
|
135
|
+
"div",
|
|
136
|
+
{
|
|
137
|
+
style: {
|
|
138
|
+
fontSize: `${Math.max(10, Math.min(t / 8, e / 8, 16))}px`,
|
|
139
|
+
fontWeight: "600",
|
|
140
|
+
textAlign: "center",
|
|
141
|
+
lineHeight: "1.2",
|
|
142
|
+
marginBottom: t > 60 && e > 45 ? "4px" : "0",
|
|
143
|
+
wordBreak: "break-word",
|
|
144
|
+
hyphens: "auto"
|
|
145
|
+
},
|
|
146
|
+
children: l
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
t > 60 && e > 45 && /* @__PURE__ */ r(
|
|
150
|
+
"div",
|
|
151
|
+
{
|
|
152
|
+
style: {
|
|
153
|
+
fontSize: `${Math.max(8, Math.min(t / 10, e / 10, 14))}px`,
|
|
154
|
+
textAlign: "center",
|
|
155
|
+
opacity: 0.9
|
|
156
|
+
},
|
|
157
|
+
children: typeof d == "number" ? d.toLocaleString() : d
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
] });
|
|
166
|
+
}, z = f.some((s) => "series" in s) ? [...new Set(f.map((s) => s.series).filter(Boolean))] : [];
|
|
167
|
+
let v = [];
|
|
168
|
+
if (y.showLegend && i)
|
|
169
|
+
if (g) {
|
|
170
|
+
const s = Math.min(...c.map((o) => {
|
|
171
|
+
const t = o[i];
|
|
172
|
+
return typeof t == "string" ? parseFloat(t) : t;
|
|
173
|
+
})), n = Math.max(...c.map((o) => {
|
|
174
|
+
const t = o[i];
|
|
175
|
+
return typeof t == "string" ? parseFloat(t) : t;
|
|
176
|
+
}));
|
|
177
|
+
v = N.map((o, t) => {
|
|
178
|
+
const e = t / (N.length - 1);
|
|
179
|
+
return {
|
|
180
|
+
value: (s + (n - s) * e).toFixed(2),
|
|
181
|
+
type: "rect",
|
|
182
|
+
color: o
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
} else z.length > 1 && (v = z.map((s, n) => ({
|
|
186
|
+
value: s,
|
|
187
|
+
type: "rect",
|
|
188
|
+
color: h[n % h.length]
|
|
189
|
+
})));
|
|
190
|
+
const w = y.showLegend && v.length > 0, C = w ? typeof x == "string" && x.includes("%") ? x : typeof x == "number" ? x + 60 : `calc(${x} + 60px)` : x;
|
|
191
|
+
return /* @__PURE__ */ p("div", { className: "w-full", style: { height: C }, children: [
|
|
192
|
+
/* @__PURE__ */ r(R, { height: w ? "calc(100% - 50px)" : "100%", children: /* @__PURE__ */ r(
|
|
193
|
+
O,
|
|
194
|
+
{
|
|
195
|
+
data: f,
|
|
196
|
+
dataKey: "size",
|
|
197
|
+
aspectRatio: 4 / 3,
|
|
198
|
+
stroke: "#fff",
|
|
199
|
+
content: /* @__PURE__ */ r(j, {}),
|
|
200
|
+
children: y.showTooltip && /* @__PURE__ */ r(D, {})
|
|
201
|
+
}
|
|
202
|
+
) }),
|
|
203
|
+
w && /* @__PURE__ */ r("div", { className: "flex justify-center items-center mt-4 pb-2", children: g ? (
|
|
204
|
+
// Gradient legend for numeric series
|
|
205
|
+
/* @__PURE__ */ p("div", { className: "flex flex-col items-center", children: [
|
|
206
|
+
/* @__PURE__ */ r("div", { className: "text-xs font-semibold text-dc-text-primary mb-2", children: i ? M(i) : "" }),
|
|
207
|
+
/* @__PURE__ */ p("div", { className: "flex items-center gap-2", children: [
|
|
208
|
+
/* @__PURE__ */ r("span", { className: "text-xs text-dc-text-muted", children: Math.min(...c.map((s) => {
|
|
209
|
+
const n = s[i];
|
|
210
|
+
return typeof n == "string" ? parseFloat(n) : n;
|
|
211
|
+
})).toFixed(2) }),
|
|
212
|
+
/* @__PURE__ */ r(
|
|
213
|
+
"div",
|
|
214
|
+
{
|
|
215
|
+
className: "h-4 rounded-sm",
|
|
216
|
+
style: {
|
|
217
|
+
width: "200px",
|
|
218
|
+
background: `linear-gradient(to right, ${N.join(", ")})`
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
),
|
|
222
|
+
/* @__PURE__ */ r("span", { className: "text-xs text-dc-text-muted", children: Math.max(...c.map((s) => {
|
|
223
|
+
const n = s[i];
|
|
224
|
+
return typeof n == "string" ? parseFloat(n) : n;
|
|
225
|
+
})).toFixed(2) })
|
|
226
|
+
] })
|
|
227
|
+
] })
|
|
228
|
+
) : (
|
|
229
|
+
// Discrete legend for categorical series
|
|
230
|
+
/* @__PURE__ */ r("div", { className: "flex flex-wrap justify-center gap-4", children: v.map((s, n) => /* @__PURE__ */ p("div", { className: "flex items-center gap-2", children: [
|
|
231
|
+
/* @__PURE__ */ r(
|
|
232
|
+
"div",
|
|
233
|
+
{
|
|
234
|
+
className: "w-3 h-3 rounded-xs",
|
|
235
|
+
style: { backgroundColor: s.color }
|
|
236
|
+
}
|
|
237
|
+
),
|
|
238
|
+
/* @__PURE__ */ r("span", { className: "text-xs text-dc-text-muted", children: s.value })
|
|
239
|
+
] }, n)) })
|
|
240
|
+
) })
|
|
241
|
+
] });
|
|
242
|
+
} catch (y) {
|
|
243
|
+
return /* @__PURE__ */ r("div", { className: "flex flex-col items-center justify-center w-full text-red-500 p-4", style: { height: x }, children: /* @__PURE__ */ p("div", { className: "text-center", children: [
|
|
244
|
+
/* @__PURE__ */ r("div", { className: "text-sm font-semibold mb-1", children: "TreeMap Chart Error" }),
|
|
245
|
+
/* @__PURE__ */ r("div", { className: "text-xs mb-2", children: y instanceof Error ? y.message : "Unknown rendering error" }),
|
|
246
|
+
/* @__PURE__ */ r("div", { className: "text-xs text-dc-text-muted", children: "Check the data and configuration" })
|
|
247
|
+
] }) });
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
export {
|
|
251
|
+
J as default
|
|
252
|
+
};
|
|
253
|
+
//# sourceMappingURL=chart-treemapchart-B2-Qr28e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-treemapchart-B2-Qr28e.js","sources":["../../../src/client/components/charts/TreeMapChart.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { Treemap } from 'recharts'\nimport { scaleQuantize, scaleOrdinal } from 'd3'\nimport ChartContainer from './ChartContainer'\nimport ChartTooltip from './ChartTooltip'\nimport { CHART_COLORS, CHART_COLORS_GRADIENT } from '../../utils/chartConstants'\nimport { formatTimeValue, getFieldGranularity } from '../../utils/chartUtils'\nimport { useCubeContext } from '../../providers/CubeProvider'\nimport type { ChartProps } from '../../types'\n\nexport default function TreeMapChart({ \n data, \n chartConfig,\n displayConfig = {},\n queryObject,\n height = \"100%\",\n colorPalette\n}: ChartProps) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n const { getFieldLabel } = useCubeContext()\n \n try {\n const safeDisplayConfig = {\n showTooltip: displayConfig?.showTooltip ?? true,\n showLegend: displayConfig?.showLegend ?? true\n }\n\n if (!data || data.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No data available</div>\n <div className=\"text-xs text-dc-text-secondary\">No data points to display in treemap chart</div>\n </div>\n </div>\n )\n }\n\n let treemapData: Array<{name: string, size: number, fill?: string, series?: string}>\n let isNumericSeries = false\n let seriesField: string | undefined\n\n if (chartConfig?.xAxis && chartConfig?.yAxis) {\n // New format - use chart config\n const xAxisField = Array.isArray(chartConfig.xAxis) ? chartConfig.xAxis[0] : chartConfig.xAxis // Name/category field\n const yAxisField = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis[0] : chartConfig.yAxis // Size field\n seriesField = Array.isArray(chartConfig.series) ? chartConfig.series[0] : chartConfig.series // Color grouping field\n\n const granularity = getFieldGranularity(queryObject, xAxisField)\n \n if (seriesField) {\n // Check if series field is numeric for color scaling\n const seriesValues = data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }).filter(val => !isNaN(val))\n \n isNumericSeries = seriesValues.length === data.length && seriesValues.every(val => typeof val === 'number')\n \n \n if (isNumericSeries) {\n // Use D3 quantize scale for better color distribution with small ranges\n const minValue = Math.min(...seriesValues)\n const maxValue = Math.max(...seriesValues)\n \n // Create D3 quantize color scale - maps continuous data to discrete color bands\n const colorScale = scaleQuantize<string>()\n .domain([minValue, maxValue])\n .range(CHART_COLORS_GRADIENT)\n \n treemapData = data.map((item) => {\n const seriesValue = typeof item[seriesField!] === 'string' \n ? parseFloat(item[seriesField!]) \n : item[seriesField!]\n \n const color = colorScale(seriesValue)\n \n return {\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: color,\n series: String(item[seriesField!])\n }\n })\n } else {\n // Use D3 ordinal color scale for categorical series\n const uniqueSeriesValues = [...new Set(data.map(item => String(item[seriesField!])))]\n const colorScale = scaleOrdinal<string>()\n .domain(uniqueSeriesValues)\n .range(colorPalette?.colors || CHART_COLORS)\n \n treemapData = data.map((item) => ({\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: colorScale(String(item[seriesField!])),\n series: String(item[seriesField!])\n }))\n }\n } else {\n // No series grouping - use index-based colors\n treemapData = data.map((item, index) => ({\n name: formatTimeValue(item[xAxisField], granularity) || String(item[xAxisField]) || 'Unknown',\n size: typeof item[yAxisField] === 'string' \n ? parseFloat(item[yAxisField]) \n : (item[yAxisField] || 0),\n fill: (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]\n }))\n }\n } else {\n // Legacy format or auto-detection\n const firstRow = data[0]\n const keys = Object.keys(firstRow)\n \n // Try to find name/label field\n const nameField = keys.find(key => \n typeof firstRow[key] === 'string' ||\n key.toLowerCase().includes('name') ||\n key.toLowerCase().includes('label') ||\n key.toLowerCase().includes('category')\n ) || keys[0]\n\n // Find a numeric field for size - look for 'size' field first, then any numeric\n const sizeField = keys.find(key => key.toLowerCase().includes('size')) ||\n keys.find(key => \n typeof firstRow[key] === 'number' && key !== nameField\n ) || keys[1]\n\n if (!sizeField) {\n return (\n <div className=\"flex items-center justify-center w-full text-yellow-600\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">Configuration Error</div>\n <div className=\"text-xs\">No numeric field found for treemap chart size</div>\n </div>\n </div>\n )\n }\n\n // Transform data for treemap chart\n treemapData = data.map((item, index) => {\n let name = item[nameField]\n // Handle boolean values with better labels\n if (typeof name === 'boolean') {\n name = name ? 'Active' : 'Inactive'\n } else if (name === 'true' || name === 'false') {\n name = name === 'true' ? 'Active' : 'Inactive'\n } else {\n name = String(name)\n }\n return {\n name,\n size: typeof item[sizeField] === 'string' \n ? parseFloat(item[sizeField]) \n : (item[sizeField] || 0),\n fill: (colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]\n }\n })\n }\n\n // Filter out zero/null values and ensure positive sizes\n treemapData = treemapData.filter(item => item.size != null && item.size > 0)\n \n if (treemapData.length === 0) {\n return (\n <div className=\"flex items-center justify-center w-full text-dc-text-muted\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">No valid data</div>\n <div className=\"text-xs text-dc-text-secondary\">No valid data points for treemap chart after transformation</div>\n </div>\n </div>\n )\n }\n\n // Custom content renderer for treemap cells with HTML overlays\n const CustomizedContent = (props: any) => {\n const { x, y, width, height, index, name, size } = props\n \n if (width < 20 || height < 20) return null // Don't render content for very small cells\n \n return (\n <g>\n <rect\n x={x}\n y={y}\n width={width}\n height={height}\n style={{\n fill: treemapData[index]?.fill || ((colorPalette?.colors && colorPalette.colors[index % colorPalette.colors.length]) || CHART_COLORS[index % CHART_COLORS.length]),\n fillOpacity: hoveredIndex !== null ? (hoveredIndex === index ? 1 : 0.6) : 0.8,\n stroke: '#fff',\n strokeWidth: 2,\n cursor: 'pointer'\n }}\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n />\n <foreignObject \n x={x} \n y={y} \n width={width} \n height={height}\n style={{ pointerEvents: 'none', overflow: 'visible' }}\n >\n <div \n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '4px',\n boxSizing: 'border-box',\n color: '#ffffff',\n textShadow: '0 1px 2px rgba(0,0,0,0.8)',\n fontFamily: 'system-ui, -apple-system, sans-serif',\n overflow: 'hidden'\n }}\n >\n {width > 40 && height > 30 && (\n <div \n style={{\n fontSize: `${Math.max(10, Math.min(width / 8, height / 8, 16))}px`,\n fontWeight: '600',\n textAlign: 'center',\n lineHeight: '1.2',\n marginBottom: width > 60 && height > 45 ? '4px' : '0',\n wordBreak: 'break-word',\n hyphens: 'auto'\n }}\n >\n {name}\n </div>\n )}\n {width > 60 && height > 45 && (\n <div \n style={{\n fontSize: `${Math.max(8, Math.min(width / 10, height / 10, 14))}px`,\n textAlign: 'center',\n opacity: 0.9\n }}\n >\n {typeof size === 'number' ? size.toLocaleString() : size}\n </div>\n )}\n </div>\n </foreignObject>\n </g>\n )\n }\n\n // Check if we have series data for legend\n const hasSeriesData = treemapData.some(item => 'series' in item)\n const uniqueSeries = hasSeriesData \n ? [...new Set(treemapData.map(item => item.series).filter(Boolean))]\n : []\n \n // For numeric series, create a legend showing the color scale\n let legendPayload: any[] = []\n if (safeDisplayConfig.showLegend && seriesField) {\n \n if (isNumericSeries) {\n // Create color scale legend for numeric values\n const minValue = Math.min(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }))\n const maxValue = Math.max(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n }))\n \n \n // Create legend entries showing color scale\n legendPayload = CHART_COLORS_GRADIENT.map((color, index) => {\n const ratio = index / (CHART_COLORS_GRADIENT.length - 1)\n const value = minValue + (maxValue - minValue) * ratio\n return {\n value: value.toFixed(2),\n type: 'rect',\n color: color\n }\n })\n } else if (uniqueSeries.length > 1) {\n // Use categorical legend for non-numeric series\n legendPayload = uniqueSeries.map((series, index) => ({\n value: series,\n type: 'rect',\n color: CHART_COLORS[index % CHART_COLORS.length]\n }))\n }\n \n }\n\n // Calculate height adjustment for legend\n const hasLegend = safeDisplayConfig.showLegend && legendPayload.length > 0\n const adjustedHeight = hasLegend \n ? (typeof height === 'string' && height.includes('%') \n ? height \n : typeof height === 'number' \n ? height + 60 \n : `calc(${height} + 60px)`)\n : height\n\n return (\n <div className=\"w-full\" style={{ height: adjustedHeight }}>\n <ChartContainer height={hasLegend ? `calc(100% - 50px)` : \"100%\"}>\n <Treemap\n data={treemapData}\n dataKey=\"size\"\n aspectRatio={4/3}\n stroke=\"#fff\"\n content={<CustomizedContent />}\n >\n {safeDisplayConfig.showTooltip && (\n <ChartTooltip />\n )}\n </Treemap>\n </ChartContainer>\n \n {/* Custom Legend outside ChartContainer */}\n {hasLegend && (\n <div className=\"flex justify-center items-center mt-4 pb-2\">\n {isNumericSeries ? (\n // Gradient legend for numeric series\n <div className=\"flex flex-col items-center\">\n <div className=\"text-xs font-semibold text-dc-text-primary mb-2\">\n {seriesField ? getFieldLabel(seriesField) : ''}\n </div>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-dc-text-muted\">\n {Math.min(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n })).toFixed(2)}\n </span>\n <div\n className=\"h-4 rounded-sm\"\n style={{\n width: '200px',\n background: `linear-gradient(to right, ${CHART_COLORS_GRADIENT.join(', ')})`\n }}\n />\n <span className=\"text-xs text-dc-text-muted\">\n {Math.max(...data.map(item => {\n const value = item[seriesField!]\n return typeof value === 'string' ? parseFloat(value) : value\n })).toFixed(2)}\n </span>\n </div>\n </div>\n ) : (\n // Discrete legend for categorical series\n <div className=\"flex flex-wrap justify-center gap-4\">\n {legendPayload.map((item, index) => (\n <div key={index} className=\"flex items-center gap-2\">\n <div\n className=\"w-3 h-3 rounded-xs\"\n style={{ backgroundColor: item.color }}\n />\n <span className=\"text-xs text-dc-text-muted\">\n {item.value}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n )\n } catch (error) {\n // 'TreeMapChart rendering error\n return (\n <div className=\"flex flex-col items-center justify-center w-full text-red-500 p-4\" style={{ height }}>\n <div className=\"text-center\">\n <div className=\"text-sm font-semibold mb-1\">TreeMap Chart Error</div>\n <div className=\"text-xs mb-2\">{error instanceof Error ? error.message : 'Unknown rendering error'}</div>\n <div className=\"text-xs text-dc-text-muted\">Check the data and configuration</div>\n </div>\n </div>\n )\n }\n}"],"names":["TreeMapChart","data","chartConfig","displayConfig","queryObject","height","colorPalette","hoveredIndex","setHoveredIndex","useState","getFieldLabel","useCubeContext","safeDisplayConfig","jsx","jsxs","treemapData","isNumericSeries","seriesField","xAxisField","yAxisField","granularity","getFieldGranularity","seriesValues","item","value","val","minValue","maxValue","colorScale","scaleQuantize","CHART_COLORS_GRADIENT","seriesValue","color","formatTimeValue","uniqueSeriesValues","scaleOrdinal","CHART_COLORS","index","firstRow","keys","nameField","key","sizeField","name","CustomizedContent","props","x","y","width","size","uniqueSeries","legendPayload","ratio","series","hasLegend","adjustedHeight","ChartContainer","Treemap","ChartTooltip","error"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { I as s, p as a } from "./icons-D-n_woAP.js";
|
|
3
|
+
const t = {
|
|
4
|
+
icon: ({ className: e }) => /* @__PURE__ */ o(s, { icon: a, className: e }),
|
|
5
|
+
description: "Visualize hierarchical data with nested rectangles",
|
|
6
|
+
useCase: "Best for showing part-to-whole relationships in hierarchical data, disk usage, budget allocation",
|
|
7
|
+
dropZones: [
|
|
8
|
+
{
|
|
9
|
+
key: "xAxis",
|
|
10
|
+
label: "Categories",
|
|
11
|
+
description: "Dimensions for treemap rectangles",
|
|
12
|
+
mandatory: !0,
|
|
13
|
+
acceptTypes: ["dimension"],
|
|
14
|
+
emptyText: "Drop dimensions for categories"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
key: "yAxis",
|
|
18
|
+
label: "Size",
|
|
19
|
+
description: "Measure for rectangle sizes",
|
|
20
|
+
mandatory: !0,
|
|
21
|
+
maxItems: 1,
|
|
22
|
+
acceptTypes: ["measure"],
|
|
23
|
+
emptyText: "Drop a measure for size"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
key: "series",
|
|
27
|
+
label: "Color Groups",
|
|
28
|
+
description: "Dimension to color rectangles by category",
|
|
29
|
+
mandatory: !1,
|
|
30
|
+
maxItems: 1,
|
|
31
|
+
acceptTypes: ["dimension"],
|
|
32
|
+
emptyText: "Drop a dimension for color grouping"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
displayOptions: ["showLegend", "showTooltip", "hideHeader"]
|
|
36
|
+
};
|
|
37
|
+
export {
|
|
38
|
+
t as treemapChartConfig
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=chart-treemapchart-config-DGhteyBe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-treemapchart-config-DGhteyBe.js","sources":["../../../src/client/components/charts/TreeMapChart.config.tsx"],"sourcesContent":["import type { ChartTypeConfig } from '../../charts/chartConfigs'\nimport { Icon } from '@iconify/react'\nimport chartTreemapIcon from '@iconify-icons/tabler/chart-treemap'\n\n/**\n * Configuration for the treemap chart type\n */\nexport const treemapChartConfig: ChartTypeConfig = {\n icon: ({ className }) => <Icon icon={chartTreemapIcon} className={className} />,\n description: 'Visualize hierarchical data with nested rectangles',\n useCase: 'Best for showing part-to-whole relationships in hierarchical data, disk usage, budget allocation',\n dropZones: [\n {\n key: 'xAxis',\n label: 'Categories',\n description: 'Dimensions for treemap rectangles',\n mandatory: true,\n acceptTypes: ['dimension'],\n emptyText: 'Drop dimensions for categories'\n },\n {\n key: 'yAxis',\n label: 'Size',\n description: 'Measure for rectangle sizes',\n mandatory: true,\n maxItems: 1,\n acceptTypes: ['measure'],\n emptyText: 'Drop a measure for size'\n },\n {\n key: 'series',\n label: 'Color Groups',\n description: 'Dimension to color rectangles by category',\n mandatory: false,\n maxItems: 1,\n acceptTypes: ['dimension'],\n emptyText: 'Drop a dimension for color grouping'\n }\n ],\n displayOptions: ['showLegend', 'showTooltip', 'hideHeader']\n}"],"names":["treemapChartConfig","className","jsx","Icon","chartTreemapIcon"],"mappings":";;AAOO,MAAMA,IAAsC;AAAA,EACjD,MAAM,CAAC,EAAE,WAAAC,EAAA,MAAgB,gBAAAC,EAACC,GAAA,EAAK,MAAMC,GAAkB,WAAAH,GAAsB;AAAA,EAC7E,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,IACT;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,SAAS;AAAA,MACvB,WAAW;AAAA,IAAA;AAAA,IAEb;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,MACV,aAAa,CAAC,WAAW;AAAA,MACzB,WAAW;AAAA,IAAA;AAAA,EACb;AAAA,EAEF,gBAAgB,CAAC,cAAc,eAAe,YAAY;AAC5D;"}
|