@actionexec/dashboards 0.9.0 → 0.11.0

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/index.js CHANGED
@@ -1,67 +1,67 @@
1
- import { jsxs as v, jsx as a, Fragment as fe } from "react/jsx-runtime";
2
- import { useState as M, useRef as N, useEffect as P, useCallback as x, useMemo as le } from "react";
3
- import { f as pe, a as be, M as G, c as X, b as q, d as _e, e as ie, i as U, g as ve, p as we, h as V, j as se, k as oe, l as H, m as ye, D as Q, S as ke, n as Se, o as Ne, C as Ce, q as Re, r as $e, s as xe, t as Te, u as Me, G as Ae, v as J, w as Ee, x as Fe } from "./ColorPaletteSelector-Ddcuobr5.js";
4
- import { A as Et } from "./ColorPaletteSelector-Ddcuobr5.js";
5
- import { LineChart as Le, Line as Ie, AreaChart as We, Area as Oe, BarChart as ce, Bar as z, CartesianGrid as de, XAxis as ue, YAxis as he, Tooltip as K, Legend as Pe, Cell as Z, PieChart as De, Pie as He } from "recharts";
6
- const Ye = 300;
7
- function Ge(e) {
8
- const [t, n] = M(null), [r, l] = M(null), [i, o] = M({}), [s, h] = M({}), [c, g] = M(null), [u, d] = M(!0), [f, _] = M(null), S = N(), R = N(!1);
1
+ import { jsxs as v, jsx as a, Fragment as ge } from "react/jsx-runtime";
2
+ import { useState as E, useRef as N, useEffect as P, useCallback as x, useMemo as ae } from "react";
3
+ import { f as me, a as fe, M as G, c as q, b as U, d as pe, e as le, i as Q, g as _e, p as be, h as V, j as ie, k as se, l as H, m as ve, D as J, S as we, n as ye, o as ke, C as Se, q as Ne, r as Ce, s as Re, t as $e, u as xe, G as Me, v as Z, w as Ae, x as Te } from "./ColorPaletteSelector-DJge9VhO.js";
4
+ import { A as Et } from "./ColorPaletteSelector-DJge9VhO.js";
5
+ import { LineChart as Ee, Line as Fe, AreaChart as Ie, Area as We, BarChart as ce, Bar as z, CartesianGrid as oe, XAxis as de, YAxis as ue, Tooltip as K, Legend as Le, Cell as B, PieChart as Oe, Pie as Pe } from "recharts";
6
+ const De = 300;
7
+ function He(e) {
8
+ const [t, n] = E(null), [r, l] = E(null), [i, c] = E({}), [s, h] = E({}), [o, f] = E(null), [u, d] = E(!0), [g, b] = E(null), k = N(), C = N(!1);
9
9
  P(() => {
10
10
  let y = !1;
11
- return pe(e).then((w) => {
11
+ return me(e).then((w) => {
12
12
  y || n(w);
13
13
  }).catch((w) => {
14
- y || _(w.message);
14
+ y || b(w.message);
15
15
  }), () => {
16
16
  y = !0;
17
17
  };
18
18
  }, [e]), P(() => {
19
19
  if (t)
20
- return S.current && clearTimeout(S.current), S.current = setTimeout(() => {
21
- const y = ze(i, s);
22
- d(!0), be(e, y).then((w) => {
23
- l(w), !R.current && w.applied && (R.current = !0, o((m) => ({ ...Ke(w.applied), ...m }))), _(null);
24
- }).catch((w) => _(w.message)).finally(() => d(!1));
25
- }, Ye), () => {
26
- S.current && clearTimeout(S.current);
20
+ return k.current && clearTimeout(k.current), k.current = setTimeout(() => {
21
+ const y = Ye(i, s);
22
+ d(!0), fe(e, y).then((w) => {
23
+ l(w), !C.current && w.applied && (C.current = !0, c((m) => ({ ...Ge(w.applied), ...m }))), b(null);
24
+ }).catch((w) => b(w.message)).finally(() => d(!1));
25
+ }, De), () => {
26
+ k.current && clearTimeout(k.current);
27
27
  };
28
28
  }, [e, t, i, s]);
29
- const A = x((y, w) => {
30
- o((m) => ({ ...m, [y]: w }));
31
- }, []), k = x((y, w) => {
29
+ const M = x((y, w) => {
30
+ c((m) => ({ ...m, [y]: w }));
31
+ }, []), S = x((y, w) => {
32
32
  h((m) => ({ ...m, [y]: w }));
33
- }, []), E = x((y) => {
34
- g(y);
35
- }, []), $ = le(
36
- () => c ?? (t == null ? void 0 : t.palette) ?? [],
37
- [c, t]
33
+ }, []), T = x((y) => {
34
+ f(y);
35
+ }, []), $ = ae(
36
+ () => o ?? (t == null ? void 0 : t.palette) ?? [],
37
+ [o, t]
38
38
  );
39
39
  return {
40
40
  layout: t,
41
41
  renderData: r,
42
42
  loading: u,
43
- error: f,
43
+ error: g,
44
44
  filters: i,
45
45
  variables: s,
46
46
  palette: $,
47
- setFilter: A,
48
- setVariable: k,
49
- setPalette: E
47
+ setFilter: M,
48
+ setVariable: S,
49
+ setPalette: T
50
50
  };
51
51
  }
52
- function ze(e, t) {
52
+ function Ye(e, t) {
53
53
  const n = {};
54
54
  for (const [r, l] of Object.entries(e))
55
55
  if (l.includes("|")) {
56
- const [i, o] = l.split("|");
57
- i && (n.f_date_start = i), o && (n.f_date_end = o);
56
+ const [i, c] = l.split("|");
57
+ i && (n.f_date_start = i), c && (n.f_date_end = c);
58
58
  } else
59
59
  n[`f_${r}`] = l;
60
60
  for (const [r, l] of Object.entries(t))
61
61
  n[`v_${r}`] = String(l);
62
62
  return n;
63
63
  }
64
- function Ke(e) {
64
+ function Ge(e) {
65
65
  const t = {};
66
66
  for (const [n, r] of Object.entries(e))
67
67
  if (r && typeof r == "object" && "start" in r) {
@@ -70,17 +70,17 @@ function Ke(e) {
70
70
  } else Array.isArray(r) ? t[n] = r.join(G) : typeof r == "string" && (t[n] = r);
71
71
  return t;
72
72
  }
73
- const Ve = (e) => {
73
+ const ze = (e) => {
74
74
  var t, n;
75
75
  return ((n = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : n.inlineSize) ?? e.target.offsetWidth;
76
- }, je = (e) => {
76
+ }, Ke = (e) => {
77
77
  var t, n;
78
78
  return ((n = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : n.blockSize) ?? e.target.offsetHeight;
79
79
  };
80
- function Xe(e, t, n) {
81
- return e === void 0 ? 0 : e === "auto" ? _e(t, n) : Math.max(0, e);
80
+ function Ve(e, t, n) {
81
+ return e === void 0 ? 0 : e === "auto" ? pe(t, n) : Math.max(0, e);
82
82
  }
83
- function qe(e) {
83
+ function je(e) {
84
84
  let t = e.parentElement;
85
85
  for (; t && t !== document.body && t !== document.documentElement; ) {
86
86
  const { overflowY: n } = getComputedStyle(t);
@@ -90,92 +90,92 @@ function qe(e) {
90
90
  }
91
91
  return null;
92
92
  }
93
- function Ue(e) {
93
+ function Xe(e) {
94
94
  const t = N(e);
95
95
  t.current = e;
96
- const n = N(null), r = N(null), l = N(null), i = N(null), o = N(null), s = N(0), h = N(0), c = N(!1), g = N(!1), u = N(-1), [d, f] = M(!1), _ = x((m) => {
97
- const b = r.current;
98
- if (g.current || t.current.silenceWarnings || !b) return;
99
- const C = qe(b);
100
- !C || C.clientHeight >= m.gridHeight || (g.current = !0, console.warn(
101
- `[@actionexec/dashboards] O dashboard esta sendo cortado: o container precisa de ${Math.ceil(m.gridHeight)}px de altura, mas o ancestral com overflow oculto tem ${C.clientHeight}px. A altura do dashboard varia com a largura — use a prop onGeometryChange para dimensionar o container, ou troque o overflow para auto. Passe silenceWarnings para desligar este aviso.`
96
+ const n = N(null), r = N(null), l = N(null), i = N(null), c = N(null), s = N(0), h = N(0), o = N(!1), f = N(!1), u = N(-1), [d, g] = E(!1), b = x((m) => {
97
+ const _ = r.current;
98
+ if (f.current || t.current.silenceWarnings || !_) return;
99
+ const R = je(_);
100
+ !R || R.clientHeight >= m.gridHeight || (f.current = !0, console.warn(
101
+ `[@actionexec/dashboards] O dashboard esta sendo cortado: o container precisa de ${Math.ceil(m.gridHeight)}px de altura, mas o ancestral com overflow oculto tem ${R.clientHeight}px. A altura do dashboard varia com a largura — use a prop onGeometryChange para dimensionar o container, ou troque o overflow para auto. Passe silenceWarnings para desligar este aviso.`
102
102
  ));
103
- }, []), S = x(() => {
104
- var O, L;
103
+ }, []), k = x(() => {
104
+ var O, I;
105
105
  if (!n.current) return;
106
- const { columns: m, cellAspect: b } = t.current, C = s.current, W = q(C, m), p = {
107
- containerWidth: C,
108
- cellWidth: W,
109
- cellHeight: X(W, b),
106
+ const { columns: m, cellAspect: _ } = t.current, R = s.current, L = U(R, m), p = {
107
+ containerWidth: R,
108
+ cellWidth: L,
109
+ cellHeight: q(L, _),
110
110
  gridHeight: h.current,
111
- stacked: c.current
112
- }, T = o.current;
113
- T && T.containerWidth === p.containerWidth && T.cellWidth === p.cellWidth && T.cellHeight === p.cellHeight && T.gridHeight === p.gridHeight && T.stacked === p.stacked || (o.current = p, (L = (O = t.current).onGeometryChange) == null || L.call(O, p), _(p));
114
- }, [_]), R = x((m = !1) => {
115
- const b = n.current;
116
- if (!b) return;
117
- const C = s.current;
118
- if (!m && C === u.current) return;
119
- u.current = C;
120
- const { columns: W, cellAspect: p, stackBelow: T } = t.current, F = q(C, W);
121
- b.style.setProperty("--dash-cell-h", `${X(F, p)}px`);
122
- const O = Xe(T, W, p), L = O > 0 && C > 0 && C < O;
123
- L !== c.current && (c.current = L, f(L));
124
- }, []), A = x(() => {
111
+ stacked: o.current
112
+ }, A = c.current;
113
+ A && A.containerWidth === p.containerWidth && A.cellWidth === p.cellWidth && A.cellHeight === p.cellHeight && A.gridHeight === p.gridHeight && A.stacked === p.stacked || (c.current = p, (I = (O = t.current).onGeometryChange) == null || I.call(O, p), b(p));
114
+ }, [b]), C = x((m = !1) => {
115
+ const _ = n.current;
116
+ if (!_) return;
117
+ const R = s.current;
118
+ if (!m && R === u.current) return;
119
+ u.current = R;
120
+ const { columns: L, cellAspect: p, stackBelow: A } = t.current, F = U(R, L);
121
+ _.style.setProperty("--dash-cell-h", `${q(F, p)}px`);
122
+ const O = Ve(A, L, p), I = O > 0 && R > 0 && R < O;
123
+ I !== o.current && (o.current = I, g(I));
124
+ }, []), M = x(() => {
125
125
  i.current !== null && (cancelAnimationFrame(i.current), i.current = null);
126
- }, []), k = x(() => {
126
+ }, []), S = x(() => {
127
127
  i.current === null && (i.current = requestAnimationFrame(() => {
128
- i.current = null, R(), S();
128
+ i.current = null, C(), k();
129
129
  }));
130
- }, [R, S]), E = x((m) => {
131
- for (const b of m)
132
- b.target === n.current ? s.current = Math.round(Ve(b)) : b.target === r.current && (h.current = je(b));
133
- k();
134
- }, [k]), $ = x(() => l.current ? l.current : typeof ResizeObserver > "u" ? null : (l.current = new ResizeObserver(E), l.current), [E]), y = x((m) => {
135
- const b = $();
136
- n.current && (b == null || b.unobserve(n.current)), n.current = m, m && (b == null || b.observe(m), s.current = Math.round(m.getBoundingClientRect().width), R(!0), k());
137
- }, [R, $, k]), w = x((m) => {
138
- const b = $();
139
- if (r.current && (b == null || b.unobserve(r.current)), r.current = m, !m) {
130
+ }, [C, k]), T = x((m) => {
131
+ for (const _ of m)
132
+ _.target === n.current ? s.current = Math.round(ze(_)) : _.target === r.current && (h.current = Ke(_));
133
+ S();
134
+ }, [S]), $ = x(() => l.current ? l.current : typeof ResizeObserver > "u" ? null : (l.current = new ResizeObserver(T), l.current), [T]), y = x((m) => {
135
+ const _ = $();
136
+ n.current && (_ == null || _.unobserve(n.current)), n.current = m, m && (_ == null || _.observe(m), s.current = Math.round(m.getBoundingClientRect().width), C(!0), S());
137
+ }, [C, $, S]), w = x((m) => {
138
+ const _ = $();
139
+ if (r.current && (_ == null || _.unobserve(r.current)), r.current = m, !m) {
140
140
  h.current = 0;
141
141
  return;
142
142
  }
143
- b == null || b.observe(m), h.current = m.getBoundingClientRect().height, k();
144
- }, [$, k]);
143
+ _ == null || _.observe(m), h.current = m.getBoundingClientRect().height, S();
144
+ }, [$, S]);
145
145
  return P(() => {
146
146
  const m = $();
147
147
  return n.current && (m == null || m.observe(n.current)), r.current && (m == null || m.observe(r.current)), () => {
148
- var b;
149
- (b = l.current) == null || b.disconnect(), l.current = null, A();
148
+ var _;
149
+ (_ = l.current) == null || _.disconnect(), l.current = null, M();
150
150
  };
151
- }, [$, A]), P(() => {
152
- n.current && (R(!0), k());
153
- }, [e.columns, e.cellAspect, e.stackBelow, R, k]), { rootRef: y, gridRef: w, stacked: d };
151
+ }, [$, M]), P(() => {
152
+ n.current && (C(!0), S());
153
+ }, [e.columns, e.cellAspect, e.stackBelow, C, S]), { rootRef: y, gridRef: w, stacked: d };
154
154
  }
155
- const Qe = {
155
+ const qe = {
156
156
  empty: "Sem dados",
157
157
  error: "Não foi possível carregar",
158
158
  loading: "Carregando...",
159
159
  unconfigured: "Widget não configurado"
160
160
  };
161
161
  function j({ kind: e, message: t }) {
162
- return /* @__PURE__ */ a("div", { className: `widget__state widget__state--${e}`, role: e === "error" ? "alert" : void 0, children: t || Qe[e] });
162
+ return /* @__PURE__ */ a("div", { className: `widget__state widget__state--${e}`, role: e === "error" ? "alert" : void 0, children: t || qe[e] });
163
163
  }
164
- function I({ name: e, title: t, state: n, stateMessage: r, toolbar: l, children: i }) {
164
+ function W({ name: e, title: t, state: n, stateMessage: r, toolbar: l, children: i }) {
165
165
  return /* @__PURE__ */ v("div", { className: `widget widget-${e}`, children: [
166
166
  t && /* @__PURE__ */ a("span", { className: "widget__title", children: t }),
167
167
  l,
168
168
  n ? /* @__PURE__ */ a(j, { kind: n, message: r }) : i
169
169
  ] });
170
170
  }
171
- const Je = { up: "↑", down: "↓" };
172
- function ge(e) {
171
+ const Ue = { up: "↑", down: "↓" };
172
+ function he(e) {
173
173
  return Array.isArray(e) ? e.filter(
174
174
  (t) => t && t.status === "ok" && t.formatted && t.formatted !== "-"
175
175
  ) : [];
176
176
  }
177
- function Ze({ comparison: e, primary: t }) {
178
- const n = e.sentiment ?? "neutral", r = Je[e.trend ?? ""] ?? "";
177
+ function Qe({ comparison: e, primary: t }) {
178
+ const n = e.sentiment ?? "neutral", r = Ue[e.trend ?? ""] ?? "";
179
179
  return /* @__PURE__ */ v("div", { className: `widget-kpi__trend widget-kpi__trend--${n}${t ? "" : " widget-kpi__trend--muted"}`, children: [
180
180
  /* @__PURE__ */ v("span", { className: "widget-kpi__variance", children: [
181
181
  r,
@@ -185,44 +185,44 @@ function Ze({ comparison: e, primary: t }) {
185
185
  e.label && /* @__PURE__ */ a("span", { className: "widget-kpi__trend-label", children: e.label })
186
186
  ] });
187
187
  }
188
- function Be({ data: e, label: t }) {
189
- const n = t || String(e.label || ""), r = String(e.formatted || "-"), l = ge(e.comparisons);
190
- return /* @__PURE__ */ v(I, { name: "kpi", title: n, children: [
188
+ function Je({ data: e, label: t }) {
189
+ const n = t || String(e.label || ""), r = String(e.formatted || "-"), l = he(e.comparisons);
190
+ return /* @__PURE__ */ v(W, { name: "kpi", title: n, children: [
191
191
  /* @__PURE__ */ a("span", { className: "widget-kpi__value", children: r }),
192
- l.map((i, o) => /* @__PURE__ */ a(Ze, { comparison: i, primary: o === 0 }, i.id || o))
192
+ l.map((i, c) => /* @__PURE__ */ a(Qe, { comparison: i, primary: c === 0 }, i.id || c))
193
193
  ] });
194
194
  }
195
- const et = "var(--bg-elevated)", tt = [
195
+ const Ze = "var(--bg-elevated)", Be = [
196
196
  [1, "var(--color-success)"],
197
197
  [0.7, ""],
198
198
  // vazio = cor da serie 1 (destaque do dashboard)
199
199
  [0.4, "var(--color-warning)"],
200
200
  [0, "var(--color-error)"]
201
201
  ];
202
- function B(e, t, n, r) {
202
+ function ee(e, t, n, r) {
203
203
  if (r <= 0) return "";
204
204
  if (r >= 1)
205
205
  return `M ${e - n} ${t} A ${n} ${n} 0 0 1 ${e} ${t - n} A ${n} ${n} 0 0 1 ${e + n} ${t}`;
206
206
  const l = r * Math.PI;
207
207
  return `M ${e - n} ${t} A ${n} ${n} 0 0 1 ${e - n * Math.cos(l)} ${t - n * Math.sin(l)}`;
208
208
  }
209
- function rt({ data: e, palette: t, label: n }) {
210
- const r = n || String(e.label || ""), l = typeof e.ratio == "number" ? e.ratio : 0, i = typeof e.format == "string" ? e.format : void 0, o = String(e.value_formatted || ie(e.value, i)), s = String(e.formatted || "-"), h = ge(e.comparisons), [c, ...g] = h, u = String((c == null ? void 0 : c.baseline_formatted) || "-"), d = (c == null ? void 0 : c.label) ?? null, f = l >= 1, _ = Math.min(Math.max(l, 0), 1), S = tt.find(([y]) => l >= y), R = (S == null ? void 0 : S[1]) || t[0] || "var(--color-info)", A = 50, k = 50, E = 44, $ = 10;
211
- return /* @__PURE__ */ a(I, { name: "gauge", title: r, children: /* @__PURE__ */ v("div", { className: "widget-gauge__chart", children: [
209
+ function et({ data: e, palette: t, label: n }) {
210
+ const r = n || String(e.label || ""), l = typeof e.ratio == "number" ? e.ratio : 0, i = typeof e.format == "string" ? e.format : void 0, c = String(e.value_formatted || le(e.value, i)), s = String(e.formatted || "-"), h = he(e.comparisons), [o, ...f] = h, u = String((o == null ? void 0 : o.baseline_formatted) || "-"), d = (o == null ? void 0 : o.label) ?? null, g = l >= 1, b = Math.min(Math.max(l, 0), 1), k = Be.find(([y]) => l >= y), C = (k == null ? void 0 : k[1]) || t[0] || "var(--color-info)", M = 50, S = 50, T = 44, $ = 10;
211
+ return /* @__PURE__ */ a(W, { name: "gauge", title: r, children: /* @__PURE__ */ v("div", { className: "widget-gauge__chart", children: [
212
212
  /* @__PURE__ */ v("svg", { viewBox: "0 0 100 56", preserveAspectRatio: "xMidYMax meet", role: "img", "aria-label": `${s} da meta`, children: [
213
- /* @__PURE__ */ a("path", { d: B(A, k, E, 1), fill: "none", stroke: et, strokeWidth: $, strokeLinecap: "butt" }),
214
- _ > 0 && /* @__PURE__ */ a("path", { d: B(A, k, E, _), fill: "none", stroke: R, strokeWidth: $, strokeLinecap: "butt" })
213
+ /* @__PURE__ */ a("path", { d: ee(M, S, T, 1), fill: "none", stroke: Ze, strokeWidth: $, strokeLinecap: "butt" }),
214
+ b > 0 && /* @__PURE__ */ a("path", { d: ee(M, S, T, b), fill: "none", stroke: C, strokeWidth: $, strokeLinecap: "butt" })
215
215
  ] }),
216
216
  /* @__PURE__ */ v("div", { className: "widget-gauge__center", children: [
217
217
  /* @__PURE__ */ a("span", { className: "widget-gauge__percent", children: s }),
218
218
  /* @__PURE__ */ v("span", { className: "widget-gauge__comparison", children: [
219
- o,
219
+ c,
220
220
  " / ",
221
221
  u
222
222
  ] }),
223
- f && /* @__PURE__ */ a("span", { className: "widget-gauge__badge", children: d || "Meta batida" }),
224
- !f && d && /* @__PURE__ */ a("span", { className: "widget-gauge__comparison", children: d }),
225
- g.map((y, w) => /* @__PURE__ */ v("span", { className: "widget-gauge__comparison", children: [
223
+ g && /* @__PURE__ */ a("span", { className: "widget-gauge__badge", children: d || "Meta batida" }),
224
+ !g && d && /* @__PURE__ */ a("span", { className: "widget-gauge__comparison", children: d }),
225
+ f.map((y, w) => /* @__PURE__ */ v("span", { className: "widget-gauge__comparison", children: [
226
226
  y.formatted,
227
227
  " ",
228
228
  y.label
@@ -230,126 +230,114 @@ function rt({ data: e, palette: t, label: n }) {
230
230
  ] })
231
231
  ] }) });
232
232
  }
233
- function me(e) {
234
- const [t, n] = M({ width: 0, height: 0 });
233
+ function X(e) {
234
+ const [t, n] = E({ width: 0, height: 0 });
235
235
  return P(() => {
236
236
  const r = e.current;
237
237
  if (!r) return;
238
238
  const l = new ResizeObserver(([i]) => {
239
- const { width: o, height: s } = i.contentRect;
239
+ const { width: c, height: s } = i.contentRect;
240
240
  n(
241
- (h) => h.width !== Math.floor(o) || h.height !== Math.floor(s) ? { width: Math.floor(o), height: Math.floor(s) } : h
241
+ (h) => h.width !== Math.floor(c) || h.height !== Math.floor(s) ? { width: Math.floor(c), height: Math.floor(s) } : h
242
242
  );
243
243
  });
244
244
  return l.observe(r), () => l.disconnect();
245
245
  }, [e]), t;
246
246
  }
247
- const ee = { fontSize: 10, fill: "var(--text-muted)" }, at = "var(--bg-elevated)", nt = {
247
+ const te = { fontSize: 10, fill: "var(--text-muted)" }, tt = "var(--bg-elevated)", rt = {
248
248
  backgroundColor: "var(--bg-elevated)",
249
249
  border: "1px solid var(--bg-paper)",
250
250
  borderRadius: "6px",
251
251
  color: "var(--text-primary)"
252
- }, lt = {
252
+ }, nt = {
253
253
  color: "var(--text-primary)",
254
254
  fontWeight: 600
255
255
  };
256
- function it(e, t) {
256
+ function at(e, t) {
257
257
  var l;
258
258
  const n = Array.isArray(t) ? t[0] : void 0, r = (l = n == null ? void 0 : n.payload) == null ? void 0 : l.tooltipLabel;
259
259
  return typeof r == "string" && r ? r : String(e ?? "");
260
260
  }
261
- function Y({ Chart: e, chartData: t, xKey: n, series: r, palette: l, renderSeries: i, width: o, height: s }) {
262
- return /* @__PURE__ */ v(e, { data: t, width: o, height: s, children: [
263
- /* @__PURE__ */ a(de, { strokeDasharray: "3 3", stroke: at }),
264
- /* @__PURE__ */ a(ue, { dataKey: n, tick: ee }),
265
- /* @__PURE__ */ a(he, { tick: ee }),
261
+ function Y({ Chart: e, chartData: t, xKey: n, series: r, palette: l, renderSeries: i, width: c, height: s }) {
262
+ return /* @__PURE__ */ v(e, { data: t, width: c, height: s, children: [
263
+ /* @__PURE__ */ a(oe, { strokeDasharray: "3 3", stroke: tt }),
264
+ /* @__PURE__ */ a(de, { dataKey: n, tick: te }),
265
+ /* @__PURE__ */ a(ue, { tick: te }),
266
266
  /* @__PURE__ */ a(
267
267
  K,
268
268
  {
269
- contentStyle: nt,
270
- labelStyle: lt,
271
- labelFormatter: it,
269
+ contentStyle: rt,
270
+ labelStyle: nt,
271
+ labelFormatter: at,
272
272
  cursor: { fill: "var(--bg-paper)", opacity: 0.3 }
273
273
  }
274
274
  ),
275
- r.length > 1 && /* @__PURE__ */ a(Pe, {}),
276
- r.map((h, c) => i(h, l[c % l.length], c))
275
+ r.length > 1 && /* @__PURE__ */ a(Le, {}),
276
+ r.map((h, o) => i(h, l[o % l.length], o))
277
277
  ] });
278
278
  }
279
- function st({ data: e, palette: t, label: n }) {
280
- const r = String(e.chartType || "bar"), l = n || String(e.label || ""), i = String(e.xKey || "label"), o = e.series || [], s = e.data || [], h = N(null), { width: c, height: g } = me(h), u = () => {
281
- if (c <= 0 || g <= 0) return null;
282
- const d = { chartData: s, xKey: i, series: o, palette: t, width: c, height: g };
283
- return r === "line" ? /* @__PURE__ */ a(Y, { ...d, Chart: Le, renderSeries: (f, _) => /* @__PURE__ */ a(
284
- Ie,
279
+ function lt({ data: e, palette: t, label: n }) {
280
+ const r = String(e.chartType || "bar"), l = n || String(e.label || ""), i = String(e.xKey || "label"), c = e.series || [], s = e.data || [], h = N(null), { width: o, height: f } = X(h), u = () => {
281
+ if (o <= 0 || f <= 0) return null;
282
+ const d = { chartData: s, xKey: i, series: c, palette: t, width: o, height: f };
283
+ return r === "line" ? /* @__PURE__ */ a(Y, { ...d, Chart: Ee, renderSeries: (g, b) => /* @__PURE__ */ a(
284
+ Fe,
285
285
  {
286
286
  type: "monotone",
287
- dataKey: f.key,
288
- name: f.label,
289
- stroke: _,
287
+ dataKey: g.key,
288
+ name: g.label,
289
+ stroke: b,
290
290
  strokeWidth: 2,
291
291
  dot: s.length <= 31
292
292
  },
293
- f.key
294
- ) }) : r === "area" ? /* @__PURE__ */ a(Y, { ...d, Chart: We, renderSeries: (f, _) => /* @__PURE__ */ a(
295
- Oe,
293
+ g.key
294
+ ) }) : r === "area" ? /* @__PURE__ */ a(Y, { ...d, Chart: Ie, renderSeries: (g, b) => /* @__PURE__ */ a(
295
+ We,
296
296
  {
297
297
  type: "monotone",
298
- dataKey: f.key,
299
- name: f.label,
300
- fill: _,
301
- stroke: _,
298
+ dataKey: g.key,
299
+ name: g.label,
300
+ fill: b,
301
+ stroke: b,
302
302
  fillOpacity: 0.3
303
303
  },
304
- f.key
305
- ) }) : /* @__PURE__ */ a(Y, { ...d, Chart: ce, renderSeries: (f, _) => /* @__PURE__ */ a(
304
+ g.key
305
+ ) }) : /* @__PURE__ */ a(Y, { ...d, Chart: ce, renderSeries: (g, b) => /* @__PURE__ */ a(
306
306
  z,
307
307
  {
308
- dataKey: f.key,
309
- name: f.label,
310
- fill: _,
308
+ dataKey: g.key,
309
+ name: g.label,
310
+ fill: b,
311
311
  radius: [3, 3, 0, 0]
312
312
  },
313
- f.key
313
+ g.key
314
314
  ) });
315
315
  };
316
- return /* @__PURE__ */ a(I, { name: "chart", title: l, children: /* @__PURE__ */ a("div", { ref: h, className: "widget-chart__container", children: s.length === 0 ? /* @__PURE__ */ a(j, { kind: "empty" }) : u() }) });
316
+ return /* @__PURE__ */ a(W, { name: "chart", title: l, children: /* @__PURE__ */ a("div", { ref: h, className: "widget-chart__container", children: s.length === 0 ? /* @__PURE__ */ a(j, { kind: "empty" }) : u() }) });
317
317
  }
318
- const te = { fontSize: 10, fill: "var(--text-muted)" }, ot = "var(--bg-elevated)", re = {
319
- backgroundColor: "var(--bg-elevated)",
320
- border: "1px solid var(--bg-paper)",
321
- borderRadius: "6px",
322
- color: "var(--text-primary)"
323
- }, ae = {
324
- color: "var(--text-primary)",
325
- fontWeight: 600
326
- };
318
+ const re = { fontSize: 10, fill: "var(--text-muted)" }, it = "var(--bg-elevated)", st = { fill: "var(--bg-paper)", opacity: 0.3 };
327
319
  function ct(e) {
328
320
  return e.kind === "anchor" ? "var(--color-accent)" : e.kind === "residual" ? "var(--color-warning)" : e.value < 0 ? "var(--color-error)" : "var(--color-success)";
329
321
  }
330
- function ne(e, t, n) {
331
- const r = n == null ? void 0 : n.payload;
332
- return [(r == null ? void 0 : r.formatted) ?? "-", (r == null ? void 0 : r.label) ?? ""];
333
- }
334
- function dt({ data: e, palette: t, label: n }) {
335
- const r = n || String(e.label || ""), l = String(e.display || "pie"), i = e.data || [], o = typeof e.format == "string" ? e.format : void 0, s = N(null), { width: h, height: c } = me(s), g = () => /* @__PURE__ */ v(ce, { data: i, width: h, height: c, children: [
336
- /* @__PURE__ */ a(de, { strokeDasharray: "3 3", stroke: ot }),
337
- /* @__PURE__ */ a(ue, { dataKey: "label", tick: te, interval: 0 }),
338
- /* @__PURE__ */ a(he, { tick: te, tickFormatter: (d) => ie(d, o) }),
339
- /* @__PURE__ */ a(
340
- K,
341
- {
342
- contentStyle: re,
343
- labelStyle: ae,
344
- formatter: ne,
345
- cursor: { fill: "var(--bg-paper)", opacity: 0.3 }
346
- }
347
- ),
322
+ function ne({ active: e, payload: t }) {
323
+ var r;
324
+ const n = e ? (r = t == null ? void 0 : t[0]) == null ? void 0 : r.payload : void 0;
325
+ return n ? /* @__PURE__ */ v("div", { className: "widget-composition__tooltip", children: [
326
+ /* @__PURE__ */ a("span", { className: "widget-composition__tooltip-label", children: n.label }),
327
+ /* @__PURE__ */ a("span", { className: "widget-composition__tooltip-value", children: n.formatted })
328
+ ] }) : null;
329
+ }
330
+ function ot({ data: e, palette: t, label: n }) {
331
+ const r = n || String(e.label || ""), l = String(e.display || "pie"), i = e.data || [], c = typeof e.format == "string" ? e.format : void 0, s = N(null), { width: h, height: o } = X(s), f = () => /* @__PURE__ */ v(ce, { data: i, width: h, height: o, children: [
332
+ /* @__PURE__ */ a(oe, { strokeDasharray: "3 3", stroke: it }),
333
+ /* @__PURE__ */ a(de, { dataKey: "label", tick: re, interval: 0 }),
334
+ /* @__PURE__ */ a(ue, { tick: re, tickFormatter: (d) => le(d, c) }),
335
+ /* @__PURE__ */ a(K, { content: /* @__PURE__ */ a(ne, {}), cursor: st }),
348
336
  /* @__PURE__ */ a(z, { dataKey: "base", stackId: "bridge", fill: "none", fillOpacity: 0, isAnimationActive: !1 }),
349
- /* @__PURE__ */ a(z, { dataKey: "span", stackId: "bridge", radius: [3, 3, 0, 0], children: i.map((d, f) => /* @__PURE__ */ a(Z, { fill: ct(d) }, f)) })
350
- ] }), u = () => /* @__PURE__ */ v(De, { width: h, height: c, children: [
337
+ /* @__PURE__ */ a(z, { dataKey: "span", stackId: "bridge", radius: [3, 3, 0, 0], children: i.map((d, g) => /* @__PURE__ */ a(B, { fill: ct(d) }, g)) })
338
+ ] }), u = () => /* @__PURE__ */ v(Oe, { width: h, height: o, children: [
351
339
  /* @__PURE__ */ a(
352
- He,
340
+ Pe,
353
341
  {
354
342
  data: i,
355
343
  dataKey: "value",
@@ -357,73 +345,89 @@ function dt({ data: e, palette: t, label: n }) {
357
345
  cx: "50%",
358
346
  cy: "50%",
359
347
  outerRadius: "75%",
360
- label: ({ name: d, percent: f }) => `${d}: ${(f * 100).toFixed(0)}%`,
348
+ label: ({ name: d, percent: g }) => `${d}: ${(g * 100).toFixed(0)}%`,
361
349
  labelLine: !1,
362
- children: i.map((d, f) => /* @__PURE__ */ a(Z, { fill: t[f % t.length] }, f))
350
+ children: i.map((d, g) => /* @__PURE__ */ a(B, { fill: t[g % t.length] }, g))
363
351
  }
364
352
  ),
365
- /* @__PURE__ */ a(
366
- K,
367
- {
368
- contentStyle: re,
369
- labelStyle: ae,
370
- formatter: ne
371
- }
372
- )
353
+ /* @__PURE__ */ a(K, { content: /* @__PURE__ */ a(ne, {}) })
373
354
  ] });
374
- return /* @__PURE__ */ a(I, { name: "composition", title: r, children: /* @__PURE__ */ a("div", { ref: s, className: "widget-composition__container", children: i.length === 0 || h <= 0 || c <= 0 ? /* @__PURE__ */ a(j, { kind: "empty" }) : l === "bridge" ? g() : u() }) });
355
+ return /* @__PURE__ */ a(W, { name: "composition", title: r, children: /* @__PURE__ */ a("div", { ref: s, className: "widget-composition__container", children: i.length === 0 || h <= 0 || o <= 0 ? /* @__PURE__ */ a(j, { kind: "empty" }) : l === "bridge" ? f() : u() }) });
375
356
  }
376
- function ut(e, t) {
357
+ function dt(e, t) {
377
358
  if (t !== "percentage") return "";
378
359
  const n = Number(e);
379
360
  return Number.isNaN(n) || n === 0 ? "" : n > 0 ? " widget-table__td--up" : " widget-table__td--down";
380
361
  }
362
+ function ut(e, t, n, r) {
363
+ const l = (r == null ? void 0 : r.offsetHeight) ?? 0;
364
+ if (e === 0 || t <= 0 || l <= 0) return e;
365
+ const i = Math.floor((t - ((n == null ? void 0 : n.offsetHeight) ?? 0)) / l);
366
+ return Math.max(0, Math.min(e, i));
367
+ }
381
368
  function ht({ data: e, label: t }) {
382
- var g;
383
- const [n, r] = M(0), l = e.columns || [], i = e.tabs || [], o = i.length > 0, s = o ? ((g = i[Math.min(n, i.length - 1)]) == null ? void 0 : g.rows) || [] : e.rows || [], h = t || String(e.label || "");
384
- if (l.length === 0)
385
- return /* @__PURE__ */ a(
386
- I,
387
- {
388
- name: "table",
389
- title: h,
390
- state: "unconfigured",
391
- stateMessage: "Configure as colunas da tabela."
392
- }
393
- );
394
- const c = o ? /* @__PURE__ */ a("div", { className: "widget-table__tabs", role: "tablist", children: i.map((u, d) => /* @__PURE__ */ a(
395
- "button",
369
+ var d;
370
+ const n = e.columns || [], r = e.rows || [], l = e.overflow === "clip", i = e.indexColumn === !0, c = t || String(e.label || ""), s = N(null), h = N(null), o = N(null), { height: f } = X(s), u = l ? r.slice(0, ut(
371
+ r.length,
372
+ f,
373
+ h.current,
374
+ ((d = o.current) == null ? void 0 : d.firstElementChild) ?? null
375
+ )) : r;
376
+ return n.length === 0 ? /* @__PURE__ */ a(
377
+ W,
396
378
  {
397
- type: "button",
398
- role: "tab",
399
- "aria-selected": d === n,
400
- className: `widget-table__tab${d === n ? " widget-table__tab--active" : ""}`,
401
- onClick: () => r(d),
402
- children: u.label
403
- },
404
- d
405
- )) }) : void 0;
406
- return /* @__PURE__ */ a(I, { name: "table", title: h, toolbar: c, children: /* @__PURE__ */ a("div", { className: "widget-table__scroll", children: /* @__PURE__ */ v("table", { className: "widget-table__table", children: [
407
- /* @__PURE__ */ a("thead", { children: /* @__PURE__ */ a("tr", { children: l.map((u) => /* @__PURE__ */ a(
408
- "th",
409
- {
410
- className: `widget-table__th${U(u.format) ? " widget-table__th--num" : ""}`,
411
- children: u.label || u.key
412
- },
413
- u.key
414
- )) }) }),
415
- /* @__PURE__ */ a("tbody", { children: s.length === 0 ? /* @__PURE__ */ a("tr", { children: /* @__PURE__ */ a("td", { className: "widget-table__td widget-table__td--placeholder", colSpan: l.length, children: "Sem dados" }) }) : s.map((u, d) => /* @__PURE__ */ a("tr", { children: l.map((f) => {
416
- const _ = u[f.key], S = U(f.format) ? " widget-table__td--num" : "";
417
- return /* @__PURE__ */ a("td", { className: `widget-table__td${S}${ut(_, f.format)}`, children: ve(_, f.format) }, f.key);
418
- }) }, d)) })
419
- ] }) }) });
379
+ name: "table",
380
+ title: c,
381
+ state: "unconfigured",
382
+ stateMessage: "Configure as colunas da tabela."
383
+ }
384
+ ) : /* @__PURE__ */ a(W, { name: "table", title: c, children: /* @__PURE__ */ a(
385
+ "div",
386
+ {
387
+ ref: s,
388
+ className: `widget-table__scroll${l ? " widget-table__scroll--clip" : ""}`,
389
+ children: /* @__PURE__ */ v(
390
+ "table",
391
+ {
392
+ className: `widget-table__table${l && u.length < r.length ? "" : " widget-table__table--fill"}`,
393
+ children: [
394
+ /* @__PURE__ */ a("thead", { ref: h, children: /* @__PURE__ */ v("tr", { children: [
395
+ i && /* @__PURE__ */ a("th", { className: "widget-table__th widget-table__th--index", children: "#" }),
396
+ n.map((g) => /* @__PURE__ */ a(
397
+ "th",
398
+ {
399
+ className: `widget-table__th${Q(g.format) ? " widget-table__th--num" : ""}`,
400
+ children: g.label || g.key
401
+ },
402
+ g.key
403
+ ))
404
+ ] }) }),
405
+ /* @__PURE__ */ a("tbody", { ref: o, children: u.length === 0 ? /* @__PURE__ */ a("tr", { children: /* @__PURE__ */ a(
406
+ "td",
407
+ {
408
+ className: "widget-table__td widget-table__td--placeholder",
409
+ colSpan: n.length + (i ? 1 : 0),
410
+ children: "Sem dados"
411
+ }
412
+ ) }) : u.map((g, b) => /* @__PURE__ */ v("tr", { children: [
413
+ i && /* @__PURE__ */ a("td", { className: "widget-table__td widget-table__td--index", children: b + 1 }),
414
+ n.map((k) => {
415
+ const C = g[k.key], M = Q(k.format) ? " widget-table__td--num" : "";
416
+ return /* @__PURE__ */ a("td", { className: `widget-table__td${M}${dt(C, k.format)}`, children: _e(C, k.format) }, k.key);
417
+ })
418
+ ] }, b)) })
419
+ ]
420
+ }
421
+ )
422
+ }
423
+ ) });
420
424
  }
421
425
  function gt({ config: e, value: t, options: n = [], dateBounds: r, onChange: l }) {
422
- const i = e.filterType || "select", o = e.label || "Filtro", s = e.dateFilterMode || "range";
426
+ const i = e.filterType || "select", c = e.label || "Filtro", s = e.dateFilterMode || "range";
423
427
  return /* @__PURE__ */ v("div", { className: "widget-filter", children: [
424
- /* @__PURE__ */ a("label", { className: "widget-filter__label", children: o }),
425
- i === "date_range" ? s === "yearly" ? /* @__PURE__ */ a(ft, { value: t, dateBounds: r, onChange: l }) : s === "monthly" ? /* @__PURE__ */ a(pt, { value: t, dateBounds: r, onChange: l }) : s === "weekly" ? /* @__PURE__ */ a(bt, { value: t, dateBounds: r, onChange: l }) : /* @__PURE__ */ a(mt, { value: t, dateBounds: r, onChange: l }) : /* @__PURE__ */ a(
426
- _t,
428
+ /* @__PURE__ */ a("label", { className: "widget-filter__label", children: c }),
429
+ i === "date_range" ? s === "yearly" ? /* @__PURE__ */ a(ft, { value: t, dateBounds: r, onChange: l }) : s === "monthly" ? /* @__PURE__ */ a(pt, { value: t, dateBounds: r, onChange: l }) : s === "weekly" ? /* @__PURE__ */ a(_t, { value: t, dateBounds: r, onChange: l }) : /* @__PURE__ */ a(mt, { value: t, dateBounds: r, onChange: l }) : /* @__PURE__ */ a(
430
+ bt,
427
431
  {
428
432
  value: t,
429
433
  options: n,
@@ -438,7 +442,7 @@ function mt({ value: e, dateBounds: t, onChange: n }) {
438
442
  const [r, l] = e ? e.split("|") : ["", ""];
439
443
  return /* @__PURE__ */ v("div", { className: "widget-filter__date-range widget-filter__date-range--stacked", children: [
440
444
  /* @__PURE__ */ a(
441
- Q,
445
+ J,
442
446
  {
443
447
  value: r,
444
448
  minIso: t == null ? void 0 : t.min,
@@ -451,7 +455,7 @@ function mt({ value: e, dateBounds: t, onChange: n }) {
451
455
  }
452
456
  ),
453
457
  /* @__PURE__ */ a(
454
- Q,
458
+ J,
455
459
  {
456
460
  value: l,
457
461
  minIso: r || (t == null ? void 0 : t.min),
@@ -466,23 +470,23 @@ function mt({ value: e, dateBounds: t, onChange: n }) {
466
470
  ] });
467
471
  }
468
472
  function ft({ value: e, dateBounds: t, onChange: n }) {
469
- const [r] = e ? e.split("|") : [""], l = we(r), i = /* @__PURE__ */ new Date(), o = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = V(t), h = (c) => {
470
- const g = Ne(c);
471
- n(`${g.start}|${g.end}`);
473
+ const [r] = e ? e.split("|") : [""], l = be(r), i = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = V(t), h = (o) => {
474
+ const f = ke(o);
475
+ n(`${f.start}|${f.end}`);
472
476
  };
473
477
  return /* @__PURE__ */ a("div", { className: "widget-filter__date-range widget-filter__date-range--year", children: /* @__PURE__ */ a(
474
478
  "select",
475
479
  {
476
480
  className: "widget-filter__select",
477
- value: o,
478
- onChange: (c) => h(parseInt(c.target.value)),
479
- children: s.map((c) => /* @__PURE__ */ a("option", { value: c, children: c }, c))
481
+ value: c,
482
+ onChange: (o) => h(parseInt(o.target.value)),
483
+ children: s.map((o) => /* @__PURE__ */ a("option", { value: o, children: o }, o))
480
484
  }
481
485
  ) });
482
486
  }
483
487
  function pt({ value: e, dateBounds: t, onChange: n }) {
484
- const [r] = e ? e.split("|") : [""], l = se(r), i = /* @__PURE__ */ new Date(), o = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = (l == null ? void 0 : l.month) ?? i.getMonth() + 1, h = V(t), c = (g, u) => {
485
- const d = Se(g, u);
488
+ const [r] = e ? e.split("|") : [""], l = ie(r), i = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = (l == null ? void 0 : l.month) ?? i.getMonth() + 1, h = V(t), o = (f, u) => {
489
+ const d = ye(f, u);
486
490
  n(`${d.start}|${d.end}`);
487
491
  };
488
492
  return /* @__PURE__ */ v("div", { className: "widget-filter__date-range widget-filter__date-range--month", children: [
@@ -491,32 +495,32 @@ function pt({ value: e, dateBounds: t, onChange: n }) {
491
495
  {
492
496
  className: "widget-filter__select",
493
497
  value: s,
494
- onChange: (g) => c(o, parseInt(g.target.value)),
495
- children: oe.map((g, u) => /* @__PURE__ */ a("option", { value: u + 1, children: g }, u + 1))
498
+ onChange: (f) => o(c, parseInt(f.target.value)),
499
+ children: se.map((f, u) => /* @__PURE__ */ a("option", { value: u + 1, children: f }, u + 1))
496
500
  }
497
501
  ),
498
502
  /* @__PURE__ */ a(
499
503
  "select",
500
504
  {
501
505
  className: "widget-filter__select",
502
- value: o,
503
- onChange: (g) => c(parseInt(g.target.value), s),
504
- children: h.map((g) => /* @__PURE__ */ a("option", { value: g, children: g }, g))
506
+ value: c,
507
+ onChange: (f) => o(parseInt(f.target.value), s),
508
+ children: h.map((f) => /* @__PURE__ */ a("option", { value: f, children: f }, f))
505
509
  }
506
510
  )
507
511
  ] });
508
512
  }
509
- function bt({ value: e, dateBounds: t, onChange: n }) {
510
- const [r] = e ? e.split("|") : [""], l = se(r), i = /* @__PURE__ */ new Date(), o = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = (l == null ? void 0 : l.month) ?? i.getMonth() + 1, h = V(t), c = H(o, s), g = ye(r, o, s) || 1;
513
+ function _t({ value: e, dateBounds: t, onChange: n }) {
514
+ const [r] = e ? e.split("|") : [""], l = ie(r), i = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? i.getFullYear(), s = (l == null ? void 0 : l.month) ?? i.getMonth() + 1, h = V(t), o = H(c, s), f = ve(r, c, s) || 1;
511
515
  return /* @__PURE__ */ v("div", { className: "widget-filter__date-range widget-filter__date-range--week", children: [
512
516
  /* @__PURE__ */ a(
513
517
  "select",
514
518
  {
515
519
  className: "widget-filter__select",
516
- value: o,
520
+ value: c,
517
521
  onChange: (u) => {
518
- const d = parseInt(u.target.value), _ = H(d, s)[0];
519
- _ && n(`${_.start}|${_.end}`);
522
+ const d = parseInt(u.target.value), b = H(d, s)[0];
523
+ b && n(`${b.start}|${b.end}`);
520
524
  },
521
525
  children: h.map((u) => /* @__PURE__ */ a("option", { value: u, children: u }, u))
522
526
  }
@@ -527,30 +531,30 @@ function bt({ value: e, dateBounds: t, onChange: n }) {
527
531
  className: "widget-filter__select",
528
532
  value: s,
529
533
  onChange: (u) => {
530
- const d = parseInt(u.target.value), _ = H(o, d)[0];
531
- _ && n(`${_.start}|${_.end}`);
534
+ const d = parseInt(u.target.value), b = H(c, d)[0];
535
+ b && n(`${b.start}|${b.end}`);
532
536
  },
533
- children: oe.map((u, d) => /* @__PURE__ */ a("option", { value: d + 1, children: u }, d + 1))
537
+ children: se.map((u, d) => /* @__PURE__ */ a("option", { value: d + 1, children: u }, d + 1))
534
538
  }
535
539
  ),
536
540
  /* @__PURE__ */ a(
537
541
  "select",
538
542
  {
539
543
  className: "widget-filter__select",
540
- value: g,
544
+ value: f,
541
545
  onChange: (u) => {
542
- const d = c[parseInt(u.target.value) - 1];
546
+ const d = o[parseInt(u.target.value) - 1];
543
547
  d && n(`${d.start}|${d.end}`);
544
548
  },
545
- children: c.map((u) => /* @__PURE__ */ a("option", { value: u.index, children: u.label }, u.index))
549
+ children: o.map((u) => /* @__PURE__ */ a("option", { value: u.index, children: u.label }, u.index))
546
550
  }
547
551
  )
548
552
  ] });
549
553
  }
550
- function _t({ value: e, options: t, multi: n, searchable: r, onChange: l }) {
554
+ function bt({ value: e, options: t, multi: n, searchable: r, onChange: l }) {
551
555
  if (r)
552
556
  return /* @__PURE__ */ a(
553
- ke,
557
+ we,
554
558
  {
555
559
  value: e,
556
560
  options: t,
@@ -559,8 +563,8 @@ function _t({ value: e, options: t, multi: n, searchable: r, onChange: l }) {
559
563
  }
560
564
  );
561
565
  if (n) {
562
- const i = e ? e.split(G) : [], o = (s) => {
563
- const h = i.includes(s) ? i.filter((c) => c !== s) : [...i, s];
566
+ const i = e ? e.split(G) : [], c = (s) => {
567
+ const h = i.includes(s) ? i.filter((o) => o !== s) : [...i, s];
564
568
  l(h.join(G));
565
569
  };
566
570
  return /* @__PURE__ */ v("div", { className: "widget-filter__multi", children: [
@@ -579,7 +583,7 @@ function _t({ value: e, options: t, multi: n, searchable: r, onChange: l }) {
579
583
  {
580
584
  type: "checkbox",
581
585
  checked: i.includes(s),
582
- onChange: () => o(s)
586
+ onChange: () => c(s)
583
587
  }
584
588
  ),
585
589
  s
@@ -604,7 +608,7 @@ const vt = {
604
608
  percentage: "%"
605
609
  };
606
610
  function wt({ config: e, value: t, onChange: n }) {
607
- const r = e.label || "Variavel", l = e.locked || !1, i = e.variableFormat || "number", o = vt[i] || "";
611
+ const r = e.label || "Variavel", l = e.locked || !1, i = e.variableFormat || "number", c = vt[i] || "";
608
612
  return /* @__PURE__ */ v("div", { className: `widget-variable ${l ? "widget-variable--locked" : ""}`, children: [
609
613
  /* @__PURE__ */ a("label", { className: "widget-variable__label", children: r }),
610
614
  /* @__PURE__ */ v("div", { className: "widget-variable__input-wrapper", children: [
@@ -619,7 +623,7 @@ function wt({ config: e, value: t, onChange: n }) {
619
623
  step: i === "integer" ? 1 : 0.01
620
624
  }
621
625
  ),
622
- o && /* @__PURE__ */ a("span", { className: "widget-variable__suffix", children: o })
626
+ c && /* @__PURE__ */ a("span", { className: "widget-variable__suffix", children: c })
623
627
  ] }),
624
628
  l && /* @__PURE__ */ a("span", { className: "widget-variable__lock-icon", title: "Bloqueado", children: "🔒" })
625
629
  ] });
@@ -628,7 +632,7 @@ function yt({ config: e, palette: t, onChange: n }) {
628
632
  const r = e.label || "Cores", l = e.locked || !1;
629
633
  return /* @__PURE__ */ v("div", { className: `widget-palette ${l ? "widget-palette--locked" : ""}`, children: [
630
634
  /* @__PURE__ */ a("label", { className: "widget-palette__label", children: r }),
631
- /* @__PURE__ */ a(Ce, { selected: t, onSelect: n, customMode: !0, disabled: l }),
635
+ /* @__PURE__ */ a(Se, { selected: t, onSelect: n, customMode: !0, disabled: l }),
632
636
  l && /* @__PURE__ */ a("span", { className: "widget-palette__lock-icon", title: "Bloqueado", children: "🔒" })
633
637
  ] });
634
638
  }
@@ -642,15 +646,15 @@ function St({
642
646
  config: r,
643
647
  filterValue: l,
644
648
  filterOptions: i,
645
- dateBounds: o,
649
+ dateBounds: c,
646
650
  onFilterChange: s,
647
651
  variableValue: h,
648
- onVariableChange: c,
649
- onPaletteChange: g
652
+ onVariableChange: o,
653
+ onPaletteChange: f
650
654
  }) {
651
655
  if (t.error)
652
656
  return /* @__PURE__ */ a(
653
- I,
657
+ W,
654
658
  {
655
659
  name: e.replace("_", "-"),
656
660
  title: r == null ? void 0 : r.label,
@@ -658,16 +662,16 @@ function St({
658
662
  stateMessage: kt[String(t.error)]
659
663
  }
660
664
  );
661
- const u = Re(n);
665
+ const u = Ne(n);
662
666
  switch (e) {
663
667
  case "kpi_card":
664
- return /* @__PURE__ */ a(Be, { data: t, label: r == null ? void 0 : r.label });
668
+ return /* @__PURE__ */ a(Je, { data: t, label: r == null ? void 0 : r.label });
665
669
  case "gauge":
666
- return /* @__PURE__ */ a(rt, { data: t, palette: u, label: r == null ? void 0 : r.label });
670
+ return /* @__PURE__ */ a(et, { data: t, palette: u, label: r == null ? void 0 : r.label });
667
671
  case "chart":
668
- return /* @__PURE__ */ a(st, { data: t, palette: u, label: r == null ? void 0 : r.label });
672
+ return /* @__PURE__ */ a(lt, { data: t, palette: u, label: r == null ? void 0 : r.label });
669
673
  case "composition":
670
- return /* @__PURE__ */ a(dt, { data: t, palette: u, label: r == null ? void 0 : r.label });
674
+ return /* @__PURE__ */ a(ot, { data: t, palette: u, label: r == null ? void 0 : r.label });
671
675
  case "table":
672
676
  return /* @__PURE__ */ a(ht, { data: t, label: r == null ? void 0 : r.label });
673
677
  case "filter":
@@ -677,114 +681,114 @@ function St({
677
681
  config: r,
678
682
  value: l || "",
679
683
  options: i,
680
- dateBounds: o,
684
+ dateBounds: c,
681
685
  onChange: s
682
686
  }
683
687
  ) : null;
684
688
  case "variable": {
685
689
  const d = r;
686
- return d && c ? /* @__PURE__ */ a(
690
+ return d && o ? /* @__PURE__ */ a(
687
691
  wt,
688
692
  {
689
693
  config: d,
690
694
  value: h ?? d.variableValue ?? 0,
691
- onChange: c
695
+ onChange: o
692
696
  }
693
697
  ) : null;
694
698
  }
695
699
  case "color_palette":
696
- return r && g ? /* @__PURE__ */ a(
700
+ return r && f ? /* @__PURE__ */ a(
697
701
  yt,
698
702
  {
699
703
  config: r,
700
704
  palette: n,
701
- onChange: g
705
+ onChange: f
702
706
  }
703
707
  ) : null;
704
708
  default:
705
- return /* @__PURE__ */ a(I, { name: "unknown", state: "unconfigured" });
709
+ return /* @__PURE__ */ a(W, { name: "unknown", state: "unconfigured" });
706
710
  }
707
711
  }
708
712
  const Nt = (e, t) => e.grid.y - t.grid.y || e.grid.x - t.grid.x;
709
- function Tt({
713
+ function Mt({
710
714
  token: e,
711
- cellAspect: t = Ee,
715
+ cellAspect: t = Ae,
712
716
  stackBelow: n,
713
717
  onGeometryChange: r,
714
718
  silenceWarnings: l,
715
719
  className: i
716
720
  }) {
717
721
  const {
718
- layout: o,
722
+ layout: c,
719
723
  renderData: s,
720
724
  loading: h,
721
- error: c,
722
- filters: g,
725
+ error: o,
726
+ filters: f,
723
727
  variables: u,
724
728
  palette: d,
725
- setFilter: f,
726
- setVariable: _,
727
- setPalette: S
728
- } = Ge(e), { rootRef: R, gridRef: A, stacked: k } = Ue({
729
- columns: (o == null ? void 0 : o.gridColumns) ?? 0,
729
+ setFilter: g,
730
+ setVariable: b,
731
+ setPalette: k
732
+ } = He(e), { rootRef: C, gridRef: M, stacked: S } = Xe({
733
+ columns: (c == null ? void 0 : c.gridColumns) ?? 0,
730
734
  cellAspect: t,
731
735
  stackBelow: n,
732
736
  onGeometryChange: r,
733
737
  silenceWarnings: l
734
- }), E = le(() => {
735
- const m = (o == null ? void 0 : o.widgets) ?? [];
736
- return k ? [...m].sort(Nt) : m;
737
- }, [o == null ? void 0 : o.widgets, k]), $ = {
738
- "--dash-gap": `${J}px`,
739
- "--dash-pad": `${Ae}px`
738
+ }), T = ae(() => {
739
+ const m = (c == null ? void 0 : c.widgets) ?? [];
740
+ return S ? [...m].sort(Nt) : m;
741
+ }, [c == null ? void 0 : c.widgets, S]), $ = {
742
+ "--dash-gap": `${Z}px`,
743
+ "--dash-pad": `${Me}px`
740
744
  }, y = ["preview-tab", i].filter(Boolean).join(" ");
741
745
  let w;
742
- if (c && !o)
743
- w = /* @__PURE__ */ a("div", { className: "preview-tab__error", children: c });
744
- else if (!o)
746
+ if (o && !c)
747
+ w = /* @__PURE__ */ a("div", { className: "preview-tab__error", children: o });
748
+ else if (!c)
745
749
  w = /* @__PURE__ */ a("div", { className: "preview-tab__loading", children: "Carregando dashboard..." });
746
- else if (o.widgets.length === 0)
750
+ else if (c.widgets.length === 0)
747
751
  w = /* @__PURE__ */ a("div", { className: "preview-tab__empty", children: "Este dashboard nao possui widgets." });
748
752
  else {
749
- const m = (s == null ? void 0 : s.widgets) ?? {}, b = (s == null ? void 0 : s.date_bounds) ?? null, C = {
750
- "--dash-cols": o.gridColumns,
751
- "--dash-rows": o.gridRows,
752
- ...$e(d)
753
- }, W = ["preview-tab__grid", k && "preview-tab__grid--stacked"].filter(Boolean).join(" ");
754
- w = /* @__PURE__ */ v(fe, { children: [
755
- c && !s && /* @__PURE__ */ a("div", { className: "preview-tab__error", children: c }),
756
- s && /* @__PURE__ */ a("div", { className: W, style: C, ref: A, children: E.map((p) => {
757
- const T = xe.has(p.type), F = m[p.id], O = k ? {
753
+ const m = (s == null ? void 0 : s.widgets) ?? {}, _ = (s == null ? void 0 : s.date_bounds) ?? null, R = {
754
+ "--dash-cols": c.gridColumns,
755
+ "--dash-rows": c.gridRows,
756
+ ...Ce(d)
757
+ }, L = ["preview-tab__grid", S && "preview-tab__grid--stacked"].filter(Boolean).join(" ");
758
+ w = /* @__PURE__ */ v(ge, { children: [
759
+ o && !s && /* @__PURE__ */ a("div", { className: "preview-tab__error", children: o }),
760
+ s && /* @__PURE__ */ a("div", { className: L, style: R, ref: M, children: T.map((p) => {
761
+ const A = Re.has(p.type), F = m[p.id], O = S ? {
758
762
  gridColumn: 1,
759
- aspectRatio: `${Me(p.grid.w, p.grid.h, t)}`,
760
- minHeight: `${Te(p.grid.h, Fe, J, 0)}px`
763
+ aspectRatio: `${xe(p.grid.w, p.grid.h, t)}`,
764
+ minHeight: `${$e(p.grid.h, Te, Z, 0)}px`
761
765
  } : {
762
766
  gridColumn: `${p.grid.x + 1} / span ${p.grid.w}`,
763
767
  gridRow: `${p.grid.y + 1} / span ${p.grid.h}`
764
- }, L = p.type === "variable" ? u[p.id] ?? (F == null ? void 0 : F.value) ?? p.config.variableValue ?? 0 : void 0;
768
+ }, I = p.type === "variable" ? u[p.id] ?? (F == null ? void 0 : F.value) ?? p.config.variableValue ?? 0 : void 0;
765
769
  return /* @__PURE__ */ a(
766
770
  "div",
767
771
  {
768
- className: `preview-tab__widget ${T ? "preview-tab__widget--control" : ""}`,
772
+ className: `preview-tab__widget ${A ? "preview-tab__widget--control" : ""}`,
769
773
  style: O,
770
- children: T || F ? /* @__PURE__ */ a(
774
+ children: A || F ? /* @__PURE__ */ a(
771
775
  St,
772
776
  {
773
777
  type: p.type,
774
778
  computed: F || {},
775
779
  palette: d,
776
780
  config: p.config,
777
- filterValue: g[p.id] || "",
781
+ filterValue: f[p.id] || "",
778
782
  filterOptions: (
779
783
  // Estruturais: vem do /layout (cacheavel), nao do /render —
780
784
  // recalcula-los a cada render custaria um DISTINCT por filtro.
781
785
  p.type === "filter" ? p.config.availableValues ?? [] : []
782
786
  ),
783
- dateBounds: b,
784
- onFilterChange: (D) => f(p.id, D),
785
- variableValue: L,
786
- onVariableChange: (D) => _(p.id, D),
787
- onPaletteChange: S
787
+ dateBounds: _,
788
+ onFilterChange: (D) => g(p.id, D),
789
+ variableValue: I,
790
+ onVariableChange: (D) => b(p.id, D),
791
+ onPaletteChange: k
788
792
  }
789
793
  ) : /* @__PURE__ */ a("div", { className: "preview-tab__widget-loading", children: h ? "Carregando..." : "Sem dados" })
790
794
  },
@@ -794,10 +798,10 @@ function Tt({
794
798
  h && s && /* @__PURE__ */ a("div", { className: "preview-tab__recalculating", children: "Atualizando..." })
795
799
  ] });
796
800
  }
797
- return /* @__PURE__ */ a("div", { className: y, style: $, ref: R, children: w });
801
+ return /* @__PURE__ */ a("div", { className: y, style: $, ref: C, children: w });
798
802
  }
799
803
  export {
800
804
  Et as ApiError,
801
- Tt as Dashboard
805
+ Mt as Dashboard
802
806
  };
803
807
  //# sourceMappingURL=index.js.map