@actionexec/dashboards 0.14.1 → 0.15.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,92 +1,91 @@
1
- import { jsxs as _, jsx as r, Fragment as oe } from "react/jsx-runtime";
2
- import { useState as A, useRef as R, useEffect as W, useCallback as T, useMemo as ce } from "react";
3
- import { M as Y, f as Ne, a as Se, c as Q, b as Z, d as ke, e as de, i as J, g as j, p as Ce, h as X, j as ue, k as me, l as z, m as Re, D, S as he, n as $e, o as xe, C as Ae, q as Ie, r as ge, s as Te, t as Fe, u as Ee, G as Me, v as ee, w as Le, x as Oe, y as Pe, z as We, A as De } from "./ColorPaletteSelector-CZP3HDNJ.js";
4
- import { B as qt } from "./ColorPaletteSelector-CZP3HDNJ.js";
5
- import { LineChart as He, Line as ze, AreaChart as Ge, Area as Ye, BarChart as fe, Bar as V, CartesianGrid as _e, XAxis as pe, YAxis as be, Tooltip as K, Legend as je, Cell as te, PieChart as Ve, Pie as Ke } from "recharts";
6
- const re = "__window";
7
- function U(e, t = {}) {
8
- const a = {};
9
- for (const [n, l] of Object.entries(e))
1
+ import { jsxs as _, jsx as r, Fragment as ce } from "react/jsx-runtime";
2
+ import { useState as A, useRef as R, useEffect as W, useCallback as F, useMemo as oe } from "react";
3
+ import { M as G, f as ye, a as Se, c as q, b as Q, d as ke, e as de, i as Z, g as Y, p as Ce, h as U, j as ue, k as me, l as H, m as Re, D as J, n as $e, o as Ae, S as he, C as xe, q as Fe, r as ge, s as Me, t as Te, u as Ee, G as Le, v as ee, w as Ie, x as Oe, y as Pe, z as We, A as De } from "./ColorPaletteSelector-CZP3HDNJ.js";
4
+ import { B as Qt } from "./ColorPaletteSelector-CZP3HDNJ.js";
5
+ import { LineChart as He, Line as ze, AreaChart as Ge, Area as Ye, BarChart as fe, Bar as j, CartesianGrid as _e, XAxis as pe, YAxis as be, Tooltip as V, Legend as je, Cell as te, PieChart as Ve, Pie as Ke } from "recharts";
6
+ function K(e, t = {}) {
7
+ const n = {};
8
+ for (const [a, l] of Object.entries(e))
10
9
  if (l.includes("|")) {
11
- const [s, o] = l.split("|");
12
- s && (a.f_date_start = s), o && (a.f_date_end = o);
10
+ const [s, c] = l.split("|");
11
+ s && (n.f_date_start = s), c && (n.f_date_end = c);
13
12
  } else
14
- a[`f_${n}`] = l;
15
- for (const [n, l] of Object.entries(t))
16
- a[`v_${n}`] = String(l);
17
- return a;
13
+ n[`f_${a}`] = l;
14
+ for (const [a, l] of Object.entries(t))
15
+ n[`v_${a}`] = String(l);
16
+ return n;
18
17
  }
19
18
  function ve(e) {
20
19
  const t = {};
21
- for (const [a, n] of Object.entries(e))
22
- if (n && typeof n == "object" && "start" in n) {
23
- const l = n;
24
- t[a] = `${l.start || ""}|${l.end || ""}`;
25
- } else Array.isArray(n) ? t[a] = n.join(Y) : typeof n == "string" && (t[a] = n);
20
+ for (const [n, a] of Object.entries(e))
21
+ if (a && typeof a == "object" && "start" in a) {
22
+ const l = a;
23
+ t[n] = `${l.start || ""}|${l.end || ""}`;
24
+ } else Array.isArray(a) ? t[n] = a.join(G) : typeof a == "string" && (t[n] = a);
26
25
  return t;
27
26
  }
28
27
  const Ue = 300;
29
28
  function Xe(e) {
30
- const [t, a] = A(null), [n, l] = A(null), [s, o] = A({}), [i, m] = A({}), [d, f] = A(null), [h, u] = A(!0), [g, p] = A(null), N = R(), C = R(!1);
29
+ const [t, n] = A(null), [a, l] = A(null), [s, c] = A({}), [i, u] = A({}), [o, g] = A(null), [m, d] = A(!0), [h, b] = A(null), S = R(), C = R(!1);
31
30
  W(() => {
32
31
  let k = !1;
33
- return Ne(e).then((S) => {
34
- k || a(S);
35
- }).catch((S) => {
36
- k || p(S.message);
32
+ return ye(e).then((f) => {
33
+ k || n(f);
34
+ }).catch((f) => {
35
+ k || b(f.message);
37
36
  }), () => {
38
37
  k = !0;
39
38
  };
40
39
  }, [e]), W(() => {
41
40
  if (t)
42
- return N.current && clearTimeout(N.current), N.current = setTimeout(() => {
43
- const k = U(s, i);
44
- u(!0), Se(e, k).then((S) => {
45
- l(S), !C.current && S.applied && (C.current = !0, o((c) => ({ ...ve(S.applied), ...c }))), p(null);
46
- }).catch((S) => p(S.message)).finally(() => u(!1));
41
+ return S.current && clearTimeout(S.current), S.current = setTimeout(() => {
42
+ const k = K(s, i);
43
+ d(!0), Se(e, k).then((f) => {
44
+ l(f), !C.current && f.applied && (C.current = !0, c((p) => ({ ...ve(f.applied), ...p }))), b(null);
45
+ }).catch((f) => b(f.message)).finally(() => d(!1));
47
46
  }, Ue), () => {
48
- N.current && clearTimeout(N.current);
47
+ S.current && clearTimeout(S.current);
49
48
  };
50
49
  }, [e, t, s, i]);
51
- const y = T((k, S) => {
52
- o((c) => ({ ...c, [k]: S }));
53
- }, []), w = T((k, S) => {
54
- m((c) => ({ ...c, [k]: S }));
55
- }, []), $ = T((k) => {
56
- f(k);
57
- }, []), x = ce(
58
- () => d ?? (t == null ? void 0 : t.palette) ?? [],
59
- [d, t]
50
+ const v = F((k, f) => {
51
+ c((p) => ({ ...p, [k]: f }));
52
+ }, []), N = F((k, f) => {
53
+ u((p) => ({ ...p, [k]: f }));
54
+ }, []), M = F((k) => {
55
+ g(k);
56
+ }, []), $ = oe(
57
+ () => o ?? (t == null ? void 0 : t.palette) ?? [],
58
+ [o, t]
60
59
  );
61
60
  return {
62
61
  layout: t,
63
- renderData: n,
64
- loading: h,
65
- error: g,
62
+ renderData: a,
63
+ loading: m,
64
+ error: h,
66
65
  filters: s,
67
66
  variables: i,
68
- palette: x,
69
- setFilter: y,
70
- setVariable: w,
71
- setPalette: $
67
+ palette: $,
68
+ setFilter: v,
69
+ setVariable: N,
70
+ setPalette: M
72
71
  };
73
72
  }
74
73
  const Be = (e) => {
75
- var t, a;
76
- return ((a = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : a.inlineSize) ?? e.target.offsetWidth;
74
+ var t, n;
75
+ return ((n = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : n.inlineSize) ?? e.target.offsetWidth;
77
76
  }, qe = (e) => {
78
- var t, a;
79
- return ((a = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : a.blockSize) ?? e.target.offsetHeight;
77
+ var t, n;
78
+ return ((n = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : n.blockSize) ?? e.target.offsetHeight;
80
79
  };
81
- function Qe(e, t, a) {
82
- return e === void 0 ? 0 : e === "auto" ? ke(t, a) : Math.max(0, e);
80
+ function Qe(e, t, n) {
81
+ return e === void 0 ? 0 : e === "auto" ? ke(t, n) : Math.max(0, e);
83
82
  }
84
83
  function Ze(e) {
85
84
  let t = e.parentElement;
86
85
  for (; t && t !== document.body && t !== document.documentElement; ) {
87
- const { overflowY: a } = getComputedStyle(t);
88
- if (a !== "visible")
89
- return a === "hidden" || a === "clip" ? t : null;
86
+ const { overflowY: n } = getComputedStyle(t);
87
+ if (n !== "visible")
88
+ return n === "hidden" || n === "clip" ? t : null;
90
89
  t = t.parentElement;
91
90
  }
92
91
  return null;
@@ -94,64 +93,64 @@ function Ze(e) {
94
93
  function Je(e) {
95
94
  const t = R(e);
96
95
  t.current = e;
97
- const a = R(null), n = R(null), l = R(null), s = R(null), o = R(null), i = R(0), m = R(0), d = R(!1), f = R(!1), h = R(-1), [u, g] = A(!1), p = T((c) => {
98
- const b = n.current;
99
- if (f.current || t.current.silenceWarnings || !b) return;
100
- const I = Ze(b);
101
- !I || I.clientHeight >= c.gridHeight || (f.current = !0, console.warn(
102
- `[@actionexec/dashboards] O dashboard esta sendo cortado: o container precisa de ${Math.ceil(c.gridHeight)}px de altura, mas o ancestral com overflow oculto tem ${I.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 = R(null), a = R(null), l = R(null), s = R(null), c = R(null), i = R(0), u = R(0), o = R(!1), g = R(!1), m = R(-1), [d, h] = A(!1), b = F((p) => {
97
+ const y = a.current;
98
+ if (g.current || t.current.silenceWarnings || !y) return;
99
+ const x = Ze(y);
100
+ !x || x.clientHeight >= p.gridHeight || (g.current = !0, console.warn(
101
+ `[@actionexec/dashboards] O dashboard esta sendo cortado: o container precisa de ${Math.ceil(p.gridHeight)}px de altura, mas o ancestral com overflow oculto tem ${x.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.`
103
102
  ));
104
- }, []), N = T(() => {
105
- var P, M;
106
- if (!a.current) return;
107
- const { columns: c, cellAspect: b } = t.current, I = i.current, O = Z(I, c), v = {
108
- containerWidth: I,
103
+ }, []), S = F(() => {
104
+ var P, L;
105
+ if (!n.current) return;
106
+ const { columns: p, cellAspect: y } = t.current, x = i.current, O = Q(x, p), w = {
107
+ containerWidth: x,
109
108
  cellWidth: O,
110
- cellHeight: Q(O, b),
111
- gridHeight: m.current,
112
- stacked: d.current
113
- }, F = o.current;
114
- F && F.containerWidth === v.containerWidth && F.cellWidth === v.cellWidth && F.cellHeight === v.cellHeight && F.gridHeight === v.gridHeight && F.stacked === v.stacked || (o.current = v, (M = (P = t.current).onGeometryChange) == null || M.call(P, v), p(v));
115
- }, [p]), C = T((c = !1) => {
116
- const b = a.current;
117
- if (!b) return;
118
- const I = i.current;
119
- if (!c && I === h.current) return;
120
- h.current = I;
121
- const { columns: O, cellAspect: v, stackBelow: F } = t.current, E = Z(I, O);
122
- b.style.setProperty("--dash-cell-h", `${Q(E, v)}px`);
123
- const P = Qe(F, O, v), M = P > 0 && I > 0 && I < P;
124
- M !== d.current && (d.current = M, g(M));
125
- }, []), y = T(() => {
109
+ cellHeight: q(O, y),
110
+ gridHeight: u.current,
111
+ stacked: o.current
112
+ }, T = c.current;
113
+ T && T.containerWidth === w.containerWidth && T.cellWidth === w.cellWidth && T.cellHeight === w.cellHeight && T.gridHeight === w.gridHeight && T.stacked === w.stacked || (c.current = w, (L = (P = t.current).onGeometryChange) == null || L.call(P, w), b(w));
114
+ }, [b]), C = F((p = !1) => {
115
+ const y = n.current;
116
+ if (!y) return;
117
+ const x = i.current;
118
+ if (!p && x === m.current) return;
119
+ m.current = x;
120
+ const { columns: O, cellAspect: w, stackBelow: T } = t.current, E = Q(x, O);
121
+ y.style.setProperty("--dash-cell-h", `${q(E, w)}px`);
122
+ const P = Qe(T, O, w), L = P > 0 && x > 0 && x < P;
123
+ L !== o.current && (o.current = L, h(L));
124
+ }, []), v = F(() => {
126
125
  s.current !== null && (cancelAnimationFrame(s.current), s.current = null);
127
- }, []), w = T(() => {
126
+ }, []), N = F(() => {
128
127
  s.current === null && (s.current = requestAnimationFrame(() => {
129
- s.current = null, C(), N();
128
+ s.current = null, C(), S();
130
129
  }));
131
- }, [C, N]), $ = T((c) => {
132
- for (const b of c)
133
- b.target === a.current ? i.current = Math.round(Be(b)) : b.target === n.current && (m.current = qe(b));
134
- w();
135
- }, [w]), x = T(() => l.current ? l.current : typeof ResizeObserver > "u" ? null : (l.current = new ResizeObserver($), l.current), [$]), k = T((c) => {
136
- const b = x();
137
- a.current && (b == null || b.unobserve(a.current)), a.current = c, c && (b == null || b.observe(c), i.current = Math.round(c.getBoundingClientRect().width), C(!0), w());
138
- }, [C, x, w]), S = T((c) => {
139
- const b = x();
140
- if (n.current && (b == null || b.unobserve(n.current)), n.current = c, !c) {
141
- m.current = 0;
130
+ }, [C, S]), M = F((p) => {
131
+ for (const y of p)
132
+ y.target === n.current ? i.current = Math.round(Be(y)) : y.target === a.current && (u.current = qe(y));
133
+ N();
134
+ }, [N]), $ = F(() => l.current ? l.current : typeof ResizeObserver > "u" ? null : (l.current = new ResizeObserver(M), l.current), [M]), k = F((p) => {
135
+ const y = $();
136
+ n.current && (y == null || y.unobserve(n.current)), n.current = p, p && (y == null || y.observe(p), i.current = Math.round(p.getBoundingClientRect().width), C(!0), N());
137
+ }, [C, $, N]), f = F((p) => {
138
+ const y = $();
139
+ if (a.current && (y == null || y.unobserve(a.current)), a.current = p, !p) {
140
+ u.current = 0;
142
141
  return;
143
142
  }
144
- b == null || b.observe(c), m.current = c.getBoundingClientRect().height, w();
145
- }, [x, w]);
143
+ y == null || y.observe(p), u.current = p.getBoundingClientRect().height, N();
144
+ }, [$, N]);
146
145
  return W(() => {
147
- const c = x();
148
- return a.current && (c == null || c.observe(a.current)), n.current && (c == null || c.observe(n.current)), () => {
149
- var b;
150
- (b = l.current) == null || b.disconnect(), l.current = null, y();
146
+ const p = $();
147
+ return n.current && (p == null || p.observe(n.current)), a.current && (p == null || p.observe(a.current)), () => {
148
+ var y;
149
+ (y = l.current) == null || y.disconnect(), l.current = null, v();
151
150
  };
152
- }, [x, y]), W(() => {
153
- a.current && (C(!0), w());
154
- }, [e.columns, e.cellAspect, e.stackBelow, C, w]), { rootRef: k, gridRef: S, stacked: u };
151
+ }, [$, v]), W(() => {
152
+ n.current && (C(!0), N());
153
+ }, [e.columns, e.cellAspect, e.stackBelow, C, N]), { rootRef: k, gridRef: f, stacked: d };
155
154
  }
156
155
  const et = {
157
156
  empty: "Sem dados",
@@ -159,14 +158,14 @@ const et = {
159
158
  loading: "Carregando...",
160
159
  unconfigured: "Widget não configurado"
161
160
  };
162
- function B({ kind: e, message: t }) {
161
+ function X({ kind: e, message: t }) {
163
162
  return /* @__PURE__ */ r("div", { className: `widget__state widget__state--${e}`, role: e === "error" ? "alert" : void 0, children: t || et[e] });
164
163
  }
165
- function L({ name: e, title: t, state: a, stateMessage: n, toolbar: l, children: s }) {
164
+ function I({ name: e, title: t, state: n, stateMessage: a, toolbar: l, children: s }) {
166
165
  return /* @__PURE__ */ _("div", { className: `widget widget-${e}`, children: [
167
166
  t && /* @__PURE__ */ r("span", { className: "widget__title", children: t }),
168
167
  l,
169
- a ? /* @__PURE__ */ r(B, { kind: a, message: n }) : s
168
+ n ? /* @__PURE__ */ r(X, { kind: n, message: a }) : s
170
169
  ] });
171
170
  }
172
171
  const tt = { up: "↑", down: "↓" };
@@ -176,167 +175,167 @@ function we(e) {
176
175
  ) : [];
177
176
  }
178
177
  function rt({ comparison: e, primary: t }) {
179
- const a = e.sentiment ?? "neutral", n = tt[e.trend ?? ""] ?? "";
180
- return /* @__PURE__ */ _("div", { className: `widget-kpi__trend widget-kpi__trend--${a}${t ? "" : " widget-kpi__trend--muted"}`, children: [
178
+ const n = e.sentiment ?? "neutral", a = tt[e.trend ?? ""] ?? "";
179
+ return /* @__PURE__ */ _("div", { className: `widget-kpi__trend widget-kpi__trend--${n}${t ? "" : " widget-kpi__trend--muted"}`, children: [
181
180
  /* @__PURE__ */ _("span", { className: "widget-kpi__variance", children: [
182
- n,
181
+ a,
183
182
  " ",
184
183
  e.formatted
185
184
  ] }),
186
185
  e.label && /* @__PURE__ */ r("span", { className: "widget-kpi__trend-label", children: e.label })
187
186
  ] });
188
187
  }
189
- function at({ data: e, label: t }) {
190
- const a = t || String(e.label || ""), n = String(e.formatted || "-"), l = we(e.comparisons);
191
- return /* @__PURE__ */ _(L, { name: "kpi", title: a, children: [
192
- /* @__PURE__ */ r("span", { className: "widget-kpi__value", children: n }),
193
- l.map((s, o) => /* @__PURE__ */ r(rt, { comparison: s, primary: o === 0 }, s.id || o))
188
+ function nt({ data: e, label: t }) {
189
+ const n = t || String(e.label || ""), a = String(e.formatted || "-"), l = we(e.comparisons);
190
+ return /* @__PURE__ */ _(I, { name: "kpi", title: n, children: [
191
+ /* @__PURE__ */ r("span", { className: "widget-kpi__value", children: a }),
192
+ l.map((s, c) => /* @__PURE__ */ r(rt, { comparison: s, primary: c === 0 }, s.id || c))
194
193
  ] });
195
194
  }
196
- const nt = "var(--bg-elevated)", lt = [
195
+ const at = "var(--bg-elevated)", lt = [
197
196
  [1, "var(--color-success)"],
198
197
  [0.7, ""],
199
198
  // vazio = cor da serie 1 (destaque do dashboard)
200
199
  [0.4, "var(--color-warning)"],
201
200
  [0, "var(--color-error)"]
202
201
  ];
203
- function ae(e, t, a, n) {
204
- if (n <= 0) return "";
205
- if (n >= 1)
206
- return `M ${e - a} ${t} A ${a} ${a} 0 0 1 ${e} ${t - a} A ${a} ${a} 0 0 1 ${e + a} ${t}`;
207
- const l = n * Math.PI;
208
- return `M ${e - a} ${t} A ${a} ${a} 0 0 1 ${e - a * Math.cos(l)} ${t - a * Math.sin(l)}`;
202
+ function re(e, t, n, a) {
203
+ if (a <= 0) return "";
204
+ if (a >= 1)
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
+ const l = a * Math.PI;
207
+ return `M ${e - n} ${t} A ${n} ${n} 0 0 1 ${e - n * Math.cos(l)} ${t - n * Math.sin(l)}`;
209
208
  }
210
- function st({ data: e, palette: t, label: a }) {
211
- const n = a || String(e.label || ""), l = typeof e.ratio == "number" ? e.ratio : 0, s = typeof e.format == "string" ? e.format : void 0, o = String(e.value_formatted || de(e.value, s)), i = String(e.formatted || "-"), m = we(e.comparisons), [d, ...f] = m, h = String((d == null ? void 0 : d.baseline_formatted) || "-"), u = (d == null ? void 0 : d.label) ?? null, g = l >= 1, p = Math.min(Math.max(l, 0), 1), N = lt.find(([k]) => l >= k), C = (N == null ? void 0 : N[1]) || t[0] || "var(--color-info)", y = 50, w = 50, $ = 44, x = 10;
212
- return /* @__PURE__ */ r(L, { name: "gauge", title: n, children: /* @__PURE__ */ _("div", { className: "widget-gauge__chart", children: [
209
+ function st({ data: e, palette: t, label: n }) {
210
+ const a = n || String(e.label || ""), l = typeof e.ratio == "number" ? e.ratio : 0, s = typeof e.format == "string" ? e.format : void 0, c = String(e.value_formatted || de(e.value, s)), i = String(e.formatted || "-"), u = we(e.comparisons), [o, ...g] = u, m = String((o == null ? void 0 : o.baseline_formatted) || "-"), d = (o == null ? void 0 : o.label) ?? null, h = l >= 1, b = Math.min(Math.max(l, 0), 1), S = lt.find(([k]) => l >= k), C = (S == null ? void 0 : S[1]) || t[0] || "var(--color-info)", v = 50, N = 50, M = 44, $ = 10;
211
+ return /* @__PURE__ */ r(I, { name: "gauge", title: a, children: /* @__PURE__ */ _("div", { className: "widget-gauge__chart", children: [
213
212
  /* @__PURE__ */ _("svg", { viewBox: "0 0 100 56", preserveAspectRatio: "xMidYMax meet", role: "img", "aria-label": `${i} da meta`, children: [
214
- /* @__PURE__ */ r("path", { d: ae(y, w, $, 1), fill: "none", stroke: nt, strokeWidth: x, strokeLinecap: "butt" }),
215
- p > 0 && /* @__PURE__ */ r("path", { d: ae(y, w, $, p), fill: "none", stroke: C, strokeWidth: x, strokeLinecap: "butt" })
213
+ /* @__PURE__ */ r("path", { d: re(v, N, M, 1), fill: "none", stroke: at, strokeWidth: $, strokeLinecap: "butt" }),
214
+ b > 0 && /* @__PURE__ */ r("path", { d: re(v, N, M, b), fill: "none", stroke: C, strokeWidth: $, strokeLinecap: "butt" })
216
215
  ] }),
217
216
  /* @__PURE__ */ _("div", { className: "widget-gauge__center", children: [
218
217
  /* @__PURE__ */ r("span", { className: "widget-gauge__percent", children: i }),
219
218
  /* @__PURE__ */ _("span", { className: "widget-gauge__comparison", children: [
220
- o,
219
+ c,
221
220
  " / ",
222
- h
221
+ m
223
222
  ] }),
224
- g && /* @__PURE__ */ r("span", { className: "widget-gauge__badge", children: u || "Meta batida" }),
225
- !g && u && /* @__PURE__ */ r("span", { className: "widget-gauge__comparison", children: u }),
226
- f.map((k, S) => /* @__PURE__ */ _("span", { className: "widget-gauge__comparison", children: [
223
+ h && /* @__PURE__ */ r("span", { className: "widget-gauge__badge", children: d || "Meta batida" }),
224
+ !h && d && /* @__PURE__ */ r("span", { className: "widget-gauge__comparison", children: d }),
225
+ g.map((k, f) => /* @__PURE__ */ _("span", { className: "widget-gauge__comparison", children: [
227
226
  k.formatted,
228
227
  " ",
229
228
  k.label
230
- ] }, k.id || S))
229
+ ] }, k.id || f))
231
230
  ] })
232
231
  ] }) });
233
232
  }
234
- function q(e) {
235
- const [t, a] = A({ width: 0, height: 0 });
233
+ function B(e) {
234
+ const [t, n] = A({ width: 0, height: 0 });
236
235
  return W(() => {
237
- const n = e.current;
238
- if (!n) return;
236
+ const a = e.current;
237
+ if (!a) return;
239
238
  const l = new ResizeObserver(([s]) => {
240
- const { width: o, height: i } = s.contentRect;
241
- a(
242
- (m) => m.width !== Math.floor(o) || m.height !== Math.floor(i) ? { width: Math.floor(o), height: Math.floor(i) } : m
239
+ const { width: c, height: i } = s.contentRect;
240
+ n(
241
+ (u) => u.width !== Math.floor(c) || u.height !== Math.floor(i) ? { width: Math.floor(c), height: Math.floor(i) } : u
243
242
  );
244
243
  });
245
- return l.observe(n), () => l.disconnect();
244
+ return l.observe(a), () => l.disconnect();
246
245
  }, [e]), t;
247
246
  }
248
- const ne = { fontSize: 10, fill: "var(--text-muted)" }, it = "var(--bg-elevated)", ot = {
247
+ const ne = { fontSize: 10, fill: "var(--text-muted)" }, it = "var(--bg-elevated)", ct = {
249
248
  backgroundColor: "var(--bg-elevated)",
250
249
  border: "1px solid var(--bg-paper)",
251
250
  borderRadius: "6px",
252
251
  color: "var(--text-primary)"
253
- }, ct = {
252
+ }, ot = {
254
253
  color: "var(--text-primary)",
255
254
  fontWeight: 600
256
255
  };
257
256
  function dt(e, t) {
258
257
  var l;
259
- const a = Array.isArray(t) ? t[0] : void 0, n = (l = a == null ? void 0 : a.payload) == null ? void 0 : l.tooltipLabel;
260
- return typeof n == "string" && n ? n : String(e ?? "");
258
+ const n = Array.isArray(t) ? t[0] : void 0, a = (l = n == null ? void 0 : n.payload) == null ? void 0 : l.tooltipLabel;
259
+ return typeof a == "string" && a ? a : String(e ?? "");
261
260
  }
262
- function G({ Chart: e, chartData: t, xKey: a, series: n, palette: l, renderSeries: s, width: o, height: i }) {
263
- return /* @__PURE__ */ _(e, { data: t, width: o, height: i, children: [
261
+ function z({ Chart: e, chartData: t, xKey: n, series: a, palette: l, renderSeries: s, width: c, height: i }) {
262
+ return /* @__PURE__ */ _(e, { data: t, width: c, height: i, children: [
264
263
  /* @__PURE__ */ r(_e, { strokeDasharray: "3 3", stroke: it }),
265
- /* @__PURE__ */ r(pe, { dataKey: a, tick: ne }),
264
+ /* @__PURE__ */ r(pe, { dataKey: n, tick: ne }),
266
265
  /* @__PURE__ */ r(be, { tick: ne }),
267
266
  /* @__PURE__ */ r(
268
- K,
267
+ V,
269
268
  {
270
- contentStyle: ot,
271
- labelStyle: ct,
269
+ contentStyle: ct,
270
+ labelStyle: ot,
272
271
  labelFormatter: dt,
273
272
  cursor: { fill: "var(--bg-paper)", opacity: 0.3 }
274
273
  }
275
274
  ),
276
- n.length > 1 && /* @__PURE__ */ r(je, {}),
277
- n.map((m, d) => s(m, l[d % l.length], d))
275
+ a.length > 1 && /* @__PURE__ */ r(je, {}),
276
+ a.map((u, o) => s(u, l[o % l.length], o))
278
277
  ] });
279
278
  }
280
- function ut({ data: e, palette: t, label: a }) {
281
- const n = String(e.chartType || "bar"), l = a || String(e.label || ""), s = String(e.xKey || "label"), o = e.series || [], i = e.data || [], m = R(null), { width: d, height: f } = q(m), h = () => {
282
- if (d <= 0 || f <= 0) return null;
283
- const u = { chartData: i, xKey: s, series: o, palette: t, width: d, height: f };
284
- return n === "line" ? /* @__PURE__ */ r(G, { ...u, Chart: He, renderSeries: (g, p) => /* @__PURE__ */ r(
279
+ function ut({ data: e, palette: t, label: n }) {
280
+ const a = String(e.chartType || "bar"), l = n || String(e.label || ""), s = String(e.xKey || "label"), c = e.series || [], i = e.data || [], u = R(null), { width: o, height: g } = B(u), m = () => {
281
+ if (o <= 0 || g <= 0) return null;
282
+ const d = { chartData: i, xKey: s, series: c, palette: t, width: o, height: g };
283
+ return a === "line" ? /* @__PURE__ */ r(z, { ...d, Chart: He, renderSeries: (h, b) => /* @__PURE__ */ r(
285
284
  ze,
286
285
  {
287
286
  type: "monotone",
288
- dataKey: g.key,
289
- name: g.label,
290
- stroke: p,
287
+ dataKey: h.key,
288
+ name: h.label,
289
+ stroke: b,
291
290
  strokeWidth: 2,
292
291
  dot: i.length <= 31
293
292
  },
294
- g.key
295
- ) }) : n === "area" ? /* @__PURE__ */ r(G, { ...u, Chart: Ge, renderSeries: (g, p) => /* @__PURE__ */ r(
293
+ h.key
294
+ ) }) : a === "area" ? /* @__PURE__ */ r(z, { ...d, Chart: Ge, renderSeries: (h, b) => /* @__PURE__ */ r(
296
295
  Ye,
297
296
  {
298
297
  type: "monotone",
299
- dataKey: g.key,
300
- name: g.label,
301
- fill: p,
302
- stroke: p,
298
+ dataKey: h.key,
299
+ name: h.label,
300
+ fill: b,
301
+ stroke: b,
303
302
  fillOpacity: 0.3
304
303
  },
305
- g.key
306
- ) }) : /* @__PURE__ */ r(G, { ...u, Chart: fe, renderSeries: (g, p) => /* @__PURE__ */ r(
307
- V,
304
+ h.key
305
+ ) }) : /* @__PURE__ */ r(z, { ...d, Chart: fe, renderSeries: (h, b) => /* @__PURE__ */ r(
306
+ j,
308
307
  {
309
- dataKey: g.key,
310
- name: g.label,
311
- fill: p,
308
+ dataKey: h.key,
309
+ name: h.label,
310
+ fill: b,
312
311
  radius: [3, 3, 0, 0]
313
312
  },
314
- g.key
313
+ h.key
315
314
  ) });
316
315
  };
317
- return /* @__PURE__ */ r(L, { name: "chart", title: l, children: /* @__PURE__ */ r("div", { ref: m, className: "widget-chart__container", children: i.length === 0 ? /* @__PURE__ */ r(B, { kind: "empty" }) : h() }) });
316
+ return /* @__PURE__ */ r(I, { name: "chart", title: l, children: /* @__PURE__ */ r("div", { ref: u, className: "widget-chart__container", children: i.length === 0 ? /* @__PURE__ */ r(X, { kind: "empty" }) : m() }) });
318
317
  }
319
- const le = { fontSize: 10, fill: "var(--text-muted)" }, mt = "var(--bg-elevated)", ht = { fill: "var(--bg-paper)", opacity: 0.3 };
318
+ const ae = { fontSize: 10, fill: "var(--text-muted)" }, mt = "var(--bg-elevated)", ht = { fill: "var(--bg-paper)", opacity: 0.3 };
320
319
  function gt(e) {
321
320
  return e.kind === "anchor" ? "var(--color-accent)" : e.kind === "residual" ? "var(--color-warning)" : e.value < 0 ? "var(--color-error)" : "var(--color-success)";
322
321
  }
323
- function se({ active: e, payload: t }) {
324
- var n;
325
- const a = e ? (n = t == null ? void 0 : t[0]) == null ? void 0 : n.payload : void 0;
326
- return a ? /* @__PURE__ */ _("div", { className: "widget-composition__tooltip", children: [
327
- /* @__PURE__ */ r("span", { className: "widget-composition__tooltip-label", children: a.label }),
328
- /* @__PURE__ */ r("span", { className: "widget-composition__tooltip-value", children: a.formatted })
322
+ function le({ active: e, payload: t }) {
323
+ var a;
324
+ const n = e ? (a = t == null ? void 0 : t[0]) == null ? void 0 : a.payload : void 0;
325
+ return n ? /* @__PURE__ */ _("div", { className: "widget-composition__tooltip", children: [
326
+ /* @__PURE__ */ r("span", { className: "widget-composition__tooltip-label", children: n.label }),
327
+ /* @__PURE__ */ r("span", { className: "widget-composition__tooltip-value", children: n.formatted })
329
328
  ] }) : null;
330
329
  }
331
- function ft({ data: e, palette: t, label: a }) {
332
- const n = a || String(e.label || ""), l = String(e.display || "pie"), s = e.data || [], o = typeof e.format == "string" ? e.format : void 0, i = R(null), { width: m, height: d } = q(i), f = () => /* @__PURE__ */ _(fe, { data: s, width: m, height: d, children: [
330
+ function ft({ data: e, palette: t, label: n }) {
331
+ const a = n || String(e.label || ""), l = String(e.display || "pie"), s = e.data || [], c = typeof e.format == "string" ? e.format : void 0, i = R(null), { width: u, height: o } = B(i), g = () => /* @__PURE__ */ _(fe, { data: s, width: u, height: o, children: [
333
332
  /* @__PURE__ */ r(_e, { strokeDasharray: "3 3", stroke: mt }),
334
- /* @__PURE__ */ r(pe, { dataKey: "label", tick: le, interval: 0 }),
335
- /* @__PURE__ */ r(be, { tick: le, tickFormatter: (u) => de(u, o) }),
336
- /* @__PURE__ */ r(K, { content: /* @__PURE__ */ r(se, {}), cursor: ht }),
337
- /* @__PURE__ */ r(V, { dataKey: "base", stackId: "bridge", fill: "none", fillOpacity: 0, isAnimationActive: !1 }),
338
- /* @__PURE__ */ r(V, { dataKey: "span", stackId: "bridge", radius: [3, 3, 0, 0], children: s.map((u, g) => /* @__PURE__ */ r(te, { fill: gt(u) }, g)) })
339
- ] }), h = () => /* @__PURE__ */ _(Ve, { width: m, height: d, children: [
333
+ /* @__PURE__ */ r(pe, { dataKey: "label", tick: ae, interval: 0 }),
334
+ /* @__PURE__ */ r(be, { tick: ae, tickFormatter: (d) => de(d, c) }),
335
+ /* @__PURE__ */ r(V, { content: /* @__PURE__ */ r(le, {}), cursor: ht }),
336
+ /* @__PURE__ */ r(j, { dataKey: "base", stackId: "bridge", fill: "none", fillOpacity: 0, isAnimationActive: !1 }),
337
+ /* @__PURE__ */ r(j, { dataKey: "span", stackId: "bridge", radius: [3, 3, 0, 0], children: s.map((d, h) => /* @__PURE__ */ r(te, { fill: gt(d) }, h)) })
338
+ ] }), m = () => /* @__PURE__ */ _(Ve, { width: u, height: o, children: [
340
339
  /* @__PURE__ */ r(
341
340
  Ke,
342
341
  {
@@ -346,43 +345,43 @@ function ft({ data: e, palette: t, label: a }) {
346
345
  cx: "50%",
347
346
  cy: "50%",
348
347
  outerRadius: "75%",
349
- label: ({ name: u, percent: g }) => `${u}: ${(g * 100).toFixed(0)}%`,
348
+ label: ({ name: d, percent: h }) => `${d}: ${(h * 100).toFixed(0)}%`,
350
349
  labelLine: !1,
351
- children: s.map((u, g) => /* @__PURE__ */ r(te, { fill: t[g % t.length] }, g))
350
+ children: s.map((d, h) => /* @__PURE__ */ r(te, { fill: t[h % t.length] }, h))
352
351
  }
353
352
  ),
354
- /* @__PURE__ */ r(K, { content: /* @__PURE__ */ r(se, {}) })
353
+ /* @__PURE__ */ r(V, { content: /* @__PURE__ */ r(le, {}) })
355
354
  ] });
356
- return /* @__PURE__ */ r(L, { name: "composition", title: n, children: /* @__PURE__ */ r("div", { ref: i, className: "widget-composition__container", children: s.length === 0 || m <= 0 || d <= 0 ? /* @__PURE__ */ r(B, { kind: "empty" }) : l === "bridge" ? f() : h() }) });
355
+ return /* @__PURE__ */ r(I, { name: "composition", title: a, children: /* @__PURE__ */ r("div", { ref: i, className: "widget-composition__container", children: s.length === 0 || u <= 0 || o <= 0 ? /* @__PURE__ */ r(X, { kind: "empty" }) : l === "bridge" ? g() : m() }) });
357
356
  }
358
357
  function _t(e, t) {
359
358
  if (t !== "percentage") return "";
360
- const a = Number(e);
361
- return Number.isNaN(a) || a === 0 ? "" : a > 0 ? " widget-table__td--up" : " widget-table__td--down";
359
+ const n = Number(e);
360
+ return Number.isNaN(n) || n === 0 ? "" : n > 0 ? " widget-table__td--up" : " widget-table__td--down";
362
361
  }
363
- function pt(e, t, a, n) {
364
- const l = (n == null ? void 0 : n.offsetHeight) ?? 0;
362
+ function pt(e, t, n, a) {
363
+ const l = (a == null ? void 0 : a.offsetHeight) ?? 0;
365
364
  if (e === 0 || t <= 0 || l <= 0) return e;
366
- const s = Math.floor((t - ((a == null ? void 0 : a.offsetHeight) ?? 0)) / l);
365
+ const s = Math.floor((t - ((n == null ? void 0 : n.offsetHeight) ?? 0)) / l);
367
366
  return Math.max(0, Math.min(e, s));
368
367
  }
369
368
  function bt({ data: e, label: t }) {
370
- var u;
371
- const a = e.columns || [], n = e.rows || [], l = e.overflow === "clip", s = e.indexColumn === !0, o = t || String(e.label || ""), i = R(null), m = R(null), d = R(null), { height: f } = q(i), h = l ? n.slice(0, pt(
372
- n.length,
373
- f,
374
- m.current,
375
- ((u = d.current) == null ? void 0 : u.firstElementChild) ?? null
376
- )) : n;
377
- return a.length === 0 ? /* @__PURE__ */ r(
378
- L,
369
+ var d;
370
+ const n = e.columns || [], a = e.rows || [], l = e.overflow === "clip", s = e.indexColumn === !0, c = t || String(e.label || ""), i = R(null), u = R(null), o = R(null), { height: g } = B(i), m = l ? a.slice(0, pt(
371
+ a.length,
372
+ g,
373
+ u.current,
374
+ ((d = o.current) == null ? void 0 : d.firstElementChild) ?? null
375
+ )) : a;
376
+ return n.length === 0 ? /* @__PURE__ */ r(
377
+ I,
379
378
  {
380
379
  name: "table",
381
- title: o,
380
+ title: c,
382
381
  state: "unconfigured",
383
382
  stateMessage: "Configure as colunas da tabela."
384
383
  }
385
- ) : /* @__PURE__ */ r(L, { name: "table", title: o, children: /* @__PURE__ */ r(
384
+ ) : /* @__PURE__ */ r(I, { name: "table", title: c, children: /* @__PURE__ */ r(
386
385
  "div",
387
386
  {
388
387
  ref: i,
@@ -390,105 +389,92 @@ function bt({ data: e, label: t }) {
390
389
  children: /* @__PURE__ */ _(
391
390
  "table",
392
391
  {
393
- className: `widget-table__table${l && h.length < n.length ? "" : " widget-table__table--fill"}`,
392
+ className: `widget-table__table${l && m.length < a.length ? "" : " widget-table__table--fill"}`,
394
393
  children: [
395
- /* @__PURE__ */ r("thead", { ref: m, children: /* @__PURE__ */ _("tr", { children: [
394
+ /* @__PURE__ */ r("thead", { ref: u, children: /* @__PURE__ */ _("tr", { children: [
396
395
  s && /* @__PURE__ */ r("th", { className: "widget-table__th widget-table__th--index", children: "#" }),
397
- a.map((g) => /* @__PURE__ */ r(
396
+ n.map((h) => /* @__PURE__ */ r(
398
397
  "th",
399
398
  {
400
- className: `widget-table__th${J(g.format) ? " widget-table__th--num" : ""}`,
401
- children: g.label || g.key
399
+ className: `widget-table__th${Z(h.format) ? " widget-table__th--num" : ""}`,
400
+ children: h.label || h.key
402
401
  },
403
- g.key
402
+ h.key
404
403
  ))
405
404
  ] }) }),
406
- /* @__PURE__ */ r("tbody", { ref: d, children: h.length === 0 ? /* @__PURE__ */ r("tr", { children: /* @__PURE__ */ r(
405
+ /* @__PURE__ */ r("tbody", { ref: o, children: m.length === 0 ? /* @__PURE__ */ r("tr", { children: /* @__PURE__ */ r(
407
406
  "td",
408
407
  {
409
408
  className: "widget-table__td widget-table__td--placeholder",
410
- colSpan: a.length + (s ? 1 : 0),
409
+ colSpan: n.length + (s ? 1 : 0),
411
410
  children: "Sem dados"
412
411
  }
413
- ) }) : h.map((g, p) => /* @__PURE__ */ _("tr", { children: [
414
- s && /* @__PURE__ */ r("td", { className: "widget-table__td widget-table__td--index", children: p + 1 }),
415
- a.map((N) => {
416
- const C = g[N.key], y = J(N.format) ? " widget-table__td--num" : "";
417
- return /* @__PURE__ */ r("td", { className: `widget-table__td${y}${_t(C, N.format)}`, children: j(C, N.format) }, N.key);
412
+ ) }) : m.map((h, b) => /* @__PURE__ */ _("tr", { children: [
413
+ s && /* @__PURE__ */ r("td", { className: "widget-table__td widget-table__td--index", children: b + 1 }),
414
+ n.map((S) => {
415
+ const C = h[S.key], v = Z(S.format) ? " widget-table__td--num" : "";
416
+ return /* @__PURE__ */ r("td", { className: `widget-table__td${v}${_t(C, S.format)}`, children: Y(C, S.format) }, S.key);
418
417
  })
419
- ] }, p)) })
418
+ ] }, b)) })
420
419
  ]
421
420
  }
422
421
  )
423
422
  }
424
423
  ) });
425
424
  }
426
- function vt({ config: e, value: t, options: a = [], dateBounds: n, onChange: l }) {
427
- const s = e.filterType || "select", o = e.label || "Filtro", i = e.dateFilterMode || "range";
428
- return /* @__PURE__ */ _("div", { className: "widget-filter", children: [
429
- /* @__PURE__ */ r("label", { className: "widget-filter__label", children: o }),
430
- s === "date_range" ? i === "yearly" ? /* @__PURE__ */ r(yt, { value: t, dateBounds: n, onChange: l }) : i === "monthly" ? /* @__PURE__ */ r(Nt, { value: t, dateBounds: n, onChange: l }) : i === "weekly" ? /* @__PURE__ */ r(St, { value: t, dateBounds: n, onChange: l }) : /* @__PURE__ */ r(wt, { value: t, dateBounds: n, onChange: l }) : /* @__PURE__ */ r(
431
- kt,
432
- {
433
- value: t,
434
- options: a,
435
- multi: s === "multi_select",
436
- searchable: e.searchable || !1,
437
- onChange: l
438
- }
439
- )
440
- ] });
425
+ function Ne({ mode: e, value: t, dateBounds: n, onChange: a }) {
426
+ return e === "yearly" ? /* @__PURE__ */ r(wt, { value: t, dateBounds: n, onChange: a }) : e === "monthly" ? /* @__PURE__ */ r(Nt, { value: t, dateBounds: n, onChange: a }) : e === "weekly" ? /* @__PURE__ */ r(yt, { value: t, dateBounds: n, onChange: a }) : /* @__PURE__ */ r(vt, { value: t, dateBounds: n, onChange: a });
441
427
  }
442
- function wt({ value: e, dateBounds: t, onChange: a }) {
443
- const [n, l] = e ? e.split("|") : ["", ""];
428
+ function vt({ value: e, dateBounds: t, onChange: n }) {
429
+ const [a, l] = e ? e.split("|") : ["", ""];
444
430
  return /* @__PURE__ */ _("div", { className: "widget-filter__date-range widget-filter__date-range--stacked", children: [
445
431
  /* @__PURE__ */ r(
446
- D,
432
+ J,
447
433
  {
448
- value: n,
434
+ value: a,
449
435
  minIso: t == null ? void 0 : t.min,
450
436
  maxIso: l || (t == null ? void 0 : t.max),
451
437
  selectsStart: !0,
452
- startIso: n,
438
+ startIso: a,
453
439
  endIso: l,
454
440
  placeholder: "Data inicial",
455
- onChange: (s) => a(`${s}|${l}`)
441
+ onChange: (s) => n(`${s}|${l}`)
456
442
  }
457
443
  ),
458
444
  /* @__PURE__ */ r(
459
- D,
445
+ J,
460
446
  {
461
447
  value: l,
462
- minIso: n || (t == null ? void 0 : t.min),
448
+ minIso: a || (t == null ? void 0 : t.min),
463
449
  maxIso: t == null ? void 0 : t.max,
464
450
  selectsEnd: !0,
465
- startIso: n,
451
+ startIso: a,
466
452
  endIso: l,
467
453
  placeholder: "Data final",
468
- onChange: (s) => a(`${n}|${s}`)
454
+ onChange: (s) => n(`${a}|${s}`)
469
455
  }
470
456
  )
471
457
  ] });
472
458
  }
473
- function yt({ value: e, dateBounds: t, onChange: a }) {
474
- const [n] = e ? e.split("|") : [""], l = Ce(n), s = /* @__PURE__ */ new Date(), o = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = X(t), m = (d) => {
475
- const f = xe(d);
476
- a(`${f.start}|${f.end}`);
459
+ function wt({ value: e, dateBounds: t, onChange: n }) {
460
+ const [a] = e ? e.split("|") : [""], l = Ce(a), s = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = U(t), u = (o) => {
461
+ const g = Ae(o);
462
+ n(`${g.start}|${g.end}`);
477
463
  };
478
464
  return /* @__PURE__ */ r("div", { className: "widget-filter__date-range widget-filter__date-range--year", children: /* @__PURE__ */ r(
479
465
  "select",
480
466
  {
481
467
  className: "widget-filter__select",
482
- value: o,
483
- onChange: (d) => m(parseInt(d.target.value)),
484
- children: i.map((d) => /* @__PURE__ */ r("option", { value: d, children: d }, d))
468
+ value: c,
469
+ onChange: (o) => u(parseInt(o.target.value)),
470
+ children: i.map((o) => /* @__PURE__ */ r("option", { value: o, children: o }, o))
485
471
  }
486
472
  ) });
487
473
  }
488
- function Nt({ value: e, dateBounds: t, onChange: a }) {
489
- const [n] = e ? e.split("|") : [""], l = ue(n), s = /* @__PURE__ */ new Date(), o = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = (l == null ? void 0 : l.month) ?? s.getMonth() + 1, m = X(t), d = (f, h) => {
490
- const u = $e(f, h);
491
- a(`${u.start}|${u.end}`);
474
+ function Nt({ value: e, dateBounds: t, onChange: n }) {
475
+ const [a] = e ? e.split("|") : [""], l = ue(a), s = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = (l == null ? void 0 : l.month) ?? s.getMonth() + 1, u = U(t), o = (g, m) => {
476
+ const d = $e(g, m);
477
+ n(`${d.start}|${d.end}`);
492
478
  };
493
479
  return /* @__PURE__ */ _("div", { className: "widget-filter__date-range widget-filter__date-range--month", children: [
494
480
  /* @__PURE__ */ r(
@@ -496,34 +482,34 @@ function Nt({ value: e, dateBounds: t, onChange: a }) {
496
482
  {
497
483
  className: "widget-filter__select",
498
484
  value: i,
499
- onChange: (f) => d(o, parseInt(f.target.value)),
500
- children: me.map((f, h) => /* @__PURE__ */ r("option", { value: h + 1, children: f }, h + 1))
485
+ onChange: (g) => o(c, parseInt(g.target.value)),
486
+ children: me.map((g, m) => /* @__PURE__ */ r("option", { value: m + 1, children: g }, m + 1))
501
487
  }
502
488
  ),
503
489
  /* @__PURE__ */ r(
504
490
  "select",
505
491
  {
506
492
  className: "widget-filter__select",
507
- value: o,
508
- onChange: (f) => d(parseInt(f.target.value), i),
509
- children: m.map((f) => /* @__PURE__ */ r("option", { value: f, children: f }, f))
493
+ value: c,
494
+ onChange: (g) => o(parseInt(g.target.value), i),
495
+ children: u.map((g) => /* @__PURE__ */ r("option", { value: g, children: g }, g))
510
496
  }
511
497
  )
512
498
  ] });
513
499
  }
514
- function St({ value: e, dateBounds: t, onChange: a }) {
515
- const [n] = e ? e.split("|") : [""], l = ue(n), s = /* @__PURE__ */ new Date(), o = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = (l == null ? void 0 : l.month) ?? s.getMonth() + 1, m = X(t), d = z(o, i), f = Re(n, o, i) || 1;
500
+ function yt({ value: e, dateBounds: t, onChange: n }) {
501
+ const [a] = e ? e.split("|") : [""], l = ue(a), s = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = (l == null ? void 0 : l.month) ?? s.getMonth() + 1, u = U(t), o = H(c, i), g = Re(a, c, i) || 1;
516
502
  return /* @__PURE__ */ _("div", { className: "widget-filter__date-range widget-filter__date-range--week", children: [
517
503
  /* @__PURE__ */ r(
518
504
  "select",
519
505
  {
520
506
  className: "widget-filter__select",
521
- value: o,
522
- onChange: (h) => {
523
- const u = parseInt(h.target.value), p = z(u, i)[0];
524
- p && a(`${p.start}|${p.end}`);
507
+ value: c,
508
+ onChange: (m) => {
509
+ const d = parseInt(m.target.value), b = H(d, i)[0];
510
+ b && n(`${b.start}|${b.end}`);
525
511
  },
526
- children: m.map((h) => /* @__PURE__ */ r("option", { value: h, children: h }, h))
512
+ children: u.map((m) => /* @__PURE__ */ r("option", { value: m, children: m }, m))
527
513
  }
528
514
  ),
529
515
  /* @__PURE__ */ r(
@@ -531,42 +517,66 @@ function St({ value: e, dateBounds: t, onChange: a }) {
531
517
  {
532
518
  className: "widget-filter__select",
533
519
  value: i,
534
- onChange: (h) => {
535
- const u = parseInt(h.target.value), p = z(o, u)[0];
536
- p && a(`${p.start}|${p.end}`);
520
+ onChange: (m) => {
521
+ const d = parseInt(m.target.value), b = H(c, d)[0];
522
+ b && n(`${b.start}|${b.end}`);
537
523
  },
538
- children: me.map((h, u) => /* @__PURE__ */ r("option", { value: u + 1, children: h }, u + 1))
524
+ children: me.map((m, d) => /* @__PURE__ */ r("option", { value: d + 1, children: m }, d + 1))
539
525
  }
540
526
  ),
541
527
  /* @__PURE__ */ r(
542
528
  "select",
543
529
  {
544
530
  className: "widget-filter__select",
545
- value: f,
546
- onChange: (h) => {
547
- const u = d[parseInt(h.target.value) - 1];
548
- u && a(`${u.start}|${u.end}`);
531
+ value: g,
532
+ onChange: (m) => {
533
+ const d = o[parseInt(m.target.value) - 1];
534
+ d && n(`${d.start}|${d.end}`);
549
535
  },
550
- children: d.map((h) => /* @__PURE__ */ r("option", { value: h.index, children: h.label }, h.index))
536
+ children: o.map((m) => /* @__PURE__ */ r("option", { value: m.index, children: m.label }, m.index))
537
+ }
538
+ )
539
+ ] });
540
+ }
541
+ function St({ config: e, value: t, options: n = [], dateBounds: a, onChange: l }) {
542
+ const s = e.filterType || "select", c = e.label || "Filtro", i = e.dateFilterMode || "range";
543
+ return /* @__PURE__ */ _("div", { className: "widget-filter", children: [
544
+ /* @__PURE__ */ r("label", { className: "widget-filter__label", children: c }),
545
+ s === "date_range" ? /* @__PURE__ */ r(
546
+ Ne,
547
+ {
548
+ mode: i,
549
+ value: t,
550
+ dateBounds: a,
551
+ onChange: l
552
+ }
553
+ ) : /* @__PURE__ */ r(
554
+ kt,
555
+ {
556
+ value: t,
557
+ options: n,
558
+ multi: s === "multi_select",
559
+ searchable: e.searchable || !1,
560
+ onChange: l
551
561
  }
552
562
  )
553
563
  ] });
554
564
  }
555
- function kt({ value: e, options: t, multi: a, searchable: n, onChange: l }) {
556
- if (n)
565
+ function kt({ value: e, options: t, multi: n, searchable: a, onChange: l }) {
566
+ if (a)
557
567
  return /* @__PURE__ */ r(
558
568
  he,
559
569
  {
560
570
  value: e,
561
571
  options: t,
562
- multi: a,
572
+ multi: n,
563
573
  onChange: l
564
574
  }
565
575
  );
566
- if (a) {
567
- const s = e ? e.split(Y) : [], o = (i) => {
568
- const m = s.includes(i) ? s.filter((d) => d !== i) : [...s, i];
569
- l(m.join(Y));
576
+ if (n) {
577
+ const s = e ? e.split(G) : [], c = (i) => {
578
+ const u = s.includes(i) ? s.filter((o) => o !== i) : [...s, i];
579
+ l(u.join(G));
570
580
  };
571
581
  return /* @__PURE__ */ _("div", { className: "widget-filter__multi", children: [
572
582
  s.length > 0 && /* @__PURE__ */ r(
@@ -584,7 +594,7 @@ function kt({ value: e, options: t, multi: a, searchable: n, onChange: l }) {
584
594
  {
585
595
  type: "checkbox",
586
596
  checked: s.includes(i),
587
- onChange: () => o(i)
597
+ onChange: () => c(i)
588
598
  }
589
599
  ),
590
600
  i
@@ -608,10 +618,10 @@ const Ct = {
608
618
  currency: "R$",
609
619
  percentage: "%"
610
620
  };
611
- function Rt({ config: e, value: t, onChange: a }) {
612
- const n = e.label || "Variavel", l = e.locked || !1, s = e.variableFormat || "number", o = Ct[s] || "";
621
+ function Rt({ config: e, value: t, onChange: n }) {
622
+ const a = e.label || "Variavel", l = e.locked || !1, s = e.variableFormat || "number", c = Ct[s] || "";
613
623
  return /* @__PURE__ */ _("div", { className: `widget-variable ${l ? "widget-variable--locked" : ""}`, children: [
614
- /* @__PURE__ */ r("label", { className: "widget-variable__label", children: n }),
624
+ /* @__PURE__ */ r("label", { className: "widget-variable__label", children: a }),
615
625
  /* @__PURE__ */ _("div", { className: "widget-variable__input-wrapper", children: [
616
626
  /* @__PURE__ */ r(
617
627
  "input",
@@ -619,308 +629,288 @@ function Rt({ config: e, value: t, onChange: a }) {
619
629
  className: "widget-variable__input",
620
630
  type: "number",
621
631
  value: t,
622
- onChange: (i) => a(parseFloat(i.target.value) || 0),
632
+ onChange: (i) => n(parseFloat(i.target.value) || 0),
623
633
  disabled: l,
624
634
  step: s === "integer" ? 1 : 0.01
625
635
  }
626
636
  ),
627
- o && /* @__PURE__ */ r("span", { className: "widget-variable__suffix", children: o })
637
+ c && /* @__PURE__ */ r("span", { className: "widget-variable__suffix", children: c })
628
638
  ] }),
629
639
  l && /* @__PURE__ */ r("span", { className: "widget-variable__lock-icon", title: "Bloqueado", children: "🔒" })
630
640
  ] });
631
641
  }
632
- function $t({ config: e, palette: t, onChange: a }) {
633
- const n = e.label || "Cores", l = e.locked || !1;
642
+ function $t({ config: e, palette: t, onChange: n }) {
643
+ const a = e.label || "Cores", l = e.locked || !1;
634
644
  return /* @__PURE__ */ _("div", { className: `widget-palette ${l ? "widget-palette--locked" : ""}`, children: [
635
- /* @__PURE__ */ r("label", { className: "widget-palette__label", children: n }),
636
- /* @__PURE__ */ r(Ae, { selected: t, onSelect: a, customMode: !0, disabled: l }),
645
+ /* @__PURE__ */ r("label", { className: "widget-palette__label", children: a }),
646
+ /* @__PURE__ */ r(xe, { selected: t, onSelect: n, customMode: !0, disabled: l }),
637
647
  l && /* @__PURE__ */ r("span", { className: "widget-palette__lock-icon", title: "Bloqueado", children: "🔒" })
638
648
  ] });
639
649
  }
640
- const xt = {
650
+ const At = {
641
651
  failed_to_compute: "Não foi possível calcular este widget"
642
652
  };
643
- function At({
653
+ function xt({
644
654
  type: e,
645
655
  computed: t,
646
- palette: a,
647
- config: n,
656
+ palette: n,
657
+ config: a,
648
658
  filterValue: l,
649
659
  filterOptions: s,
650
- dateBounds: o,
660
+ dateBounds: c,
651
661
  onFilterChange: i,
652
- variableValue: m,
653
- onVariableChange: d,
654
- onPaletteChange: f
662
+ variableValue: u,
663
+ onVariableChange: o,
664
+ onPaletteChange: g
655
665
  }) {
656
666
  if (t.error)
657
667
  return /* @__PURE__ */ r(
658
- L,
668
+ I,
659
669
  {
660
670
  name: e.replace("_", "-"),
661
- title: n == null ? void 0 : n.label,
671
+ title: a == null ? void 0 : a.label,
662
672
  state: "error",
663
- stateMessage: xt[String(t.error)]
673
+ stateMessage: At[String(t.error)]
664
674
  }
665
675
  );
666
- const h = Ie(a);
676
+ const m = Fe(n);
667
677
  switch (e) {
668
678
  case "kpi_card":
669
- return /* @__PURE__ */ r(at, { data: t, label: n == null ? void 0 : n.label });
679
+ return /* @__PURE__ */ r(nt, { data: t, label: a == null ? void 0 : a.label });
670
680
  case "gauge":
671
- return /* @__PURE__ */ r(st, { data: t, palette: h, label: n == null ? void 0 : n.label });
681
+ return /* @__PURE__ */ r(st, { data: t, palette: m, label: a == null ? void 0 : a.label });
672
682
  case "chart":
673
- return /* @__PURE__ */ r(ut, { data: t, palette: h, label: n == null ? void 0 : n.label });
683
+ return /* @__PURE__ */ r(ut, { data: t, palette: m, label: a == null ? void 0 : a.label });
674
684
  case "composition":
675
- return /* @__PURE__ */ r(ft, { data: t, palette: h, label: n == null ? void 0 : n.label });
685
+ return /* @__PURE__ */ r(ft, { data: t, palette: m, label: a == null ? void 0 : a.label });
676
686
  case "table":
677
- return /* @__PURE__ */ r(bt, { data: t, label: n == null ? void 0 : n.label });
687
+ return /* @__PURE__ */ r(bt, { data: t, label: a == null ? void 0 : a.label });
678
688
  case "filter":
679
- return n && i ? /* @__PURE__ */ r(
680
- vt,
689
+ return a && i ? /* @__PURE__ */ r(
690
+ St,
681
691
  {
682
- config: n,
692
+ config: a,
683
693
  value: l || "",
684
694
  options: s,
685
- dateBounds: o,
695
+ dateBounds: c,
686
696
  onChange: i
687
697
  }
688
698
  ) : null;
689
699
  case "variable": {
690
- const u = n;
691
- return u && d ? /* @__PURE__ */ r(
700
+ const d = a;
701
+ return d && o ? /* @__PURE__ */ r(
692
702
  Rt,
693
703
  {
694
- config: u,
695
- value: m ?? u.variableValue ?? 0,
696
- onChange: d
704
+ config: d,
705
+ value: u ?? d.variableValue ?? 0,
706
+ onChange: o
697
707
  }
698
708
  ) : null;
699
709
  }
700
710
  case "color_palette":
701
- return n && f ? /* @__PURE__ */ r(
711
+ return a && g ? /* @__PURE__ */ r(
702
712
  $t,
703
713
  {
704
- config: n,
705
- palette: a,
706
- onChange: f
714
+ config: a,
715
+ palette: n,
716
+ onChange: g
707
717
  }
708
718
  ) : null;
709
719
  default:
710
- return /* @__PURE__ */ r(L, { name: "unknown", state: "unconfigured" });
720
+ return /* @__PURE__ */ r(I, { name: "unknown", state: "unconfigured" });
711
721
  }
712
722
  }
713
- const It = (e, t) => e.grid.y - t.grid.y || e.grid.x - t.grid.x;
714
- function Kt({
723
+ const Ft = (e, t) => e.grid.y - t.grid.y || e.grid.x - t.grid.x;
724
+ function Ut({
715
725
  token: e,
716
- cellAspect: t = Le,
717
- stackBelow: a,
718
- onGeometryChange: n,
726
+ cellAspect: t = Ie,
727
+ stackBelow: n,
728
+ onGeometryChange: a,
719
729
  silenceWarnings: l,
720
730
  className: s
721
731
  }) {
722
732
  const {
723
- layout: o,
733
+ layout: c,
724
734
  renderData: i,
725
- loading: m,
726
- error: d,
727
- filters: f,
728
- variables: h,
729
- palette: u,
730
- setFilter: g,
731
- setVariable: p,
732
- setPalette: N
733
- } = Xe(e), { rootRef: C, gridRef: y, stacked: w } = Je({
734
- columns: (o == null ? void 0 : o.gridColumns) ?? 0,
735
+ loading: u,
736
+ error: o,
737
+ filters: g,
738
+ variables: m,
739
+ palette: d,
740
+ setFilter: h,
741
+ setVariable: b,
742
+ setPalette: S
743
+ } = Xe(e), { rootRef: C, gridRef: v, stacked: N } = Je({
744
+ columns: (c == null ? void 0 : c.gridColumns) ?? 0,
735
745
  cellAspect: t,
736
- stackBelow: a,
737
- onGeometryChange: n,
746
+ stackBelow: n,
747
+ onGeometryChange: a,
738
748
  silenceWarnings: l
739
- }), $ = ce(() => {
740
- const c = (o == null ? void 0 : o.widgets) ?? [];
741
- return w ? [...c].sort(It) : c;
742
- }, [o == null ? void 0 : o.widgets, w]), x = {
749
+ }), M = oe(() => {
750
+ const p = (c == null ? void 0 : c.widgets) ?? [];
751
+ return N ? [...p].sort(Ft) : p;
752
+ }, [c == null ? void 0 : c.widgets, N]), $ = {
743
753
  "--dash-gap": `${ee}px`,
744
- "--dash-pad": `${Me}px`
754
+ "--dash-pad": `${Le}px`
745
755
  }, k = ["preview-tab", s].filter(Boolean).join(" ");
746
- let S;
747
- if (d && !o)
748
- S = /* @__PURE__ */ r("div", { className: "preview-tab__error", children: d });
749
- else if (!o)
750
- S = /* @__PURE__ */ r("div", { className: "preview-tab__loading", children: "Carregando dashboard..." });
751
- else if (o.widgets.length === 0)
752
- S = /* @__PURE__ */ r("div", { className: "preview-tab__empty", children: "Este dashboard nao possui widgets." });
756
+ let f;
757
+ if (o && !c)
758
+ f = /* @__PURE__ */ r("div", { className: "preview-tab__error", children: o });
759
+ else if (!c)
760
+ f = /* @__PURE__ */ r("div", { className: "preview-tab__loading", children: "Carregando dashboard..." });
761
+ else if (c.widgets.length === 0)
762
+ f = /* @__PURE__ */ r("div", { className: "preview-tab__empty", children: "Este dashboard nao possui widgets." });
753
763
  else {
754
- const c = (i == null ? void 0 : i.widgets) ?? {}, b = (i == null ? void 0 : i.date_bounds) ?? null, I = {
755
- "--dash-cols": o.gridColumns,
756
- "--dash-rows": o.gridRows,
757
- ...ge(u)
758
- }, O = ["preview-tab__grid", w && "preview-tab__grid--stacked"].filter(Boolean).join(" ");
759
- S = /* @__PURE__ */ _(oe, { children: [
760
- d && !i && /* @__PURE__ */ r("div", { className: "preview-tab__error", children: d }),
761
- i && /* @__PURE__ */ r("div", { className: O, style: I, ref: y, children: $.map((v) => {
762
- const F = Te.has(v.type), E = c[v.id], P = w ? {
764
+ const p = (i == null ? void 0 : i.widgets) ?? {}, y = (i == null ? void 0 : i.date_bounds) ?? null, x = {
765
+ "--dash-cols": c.gridColumns,
766
+ "--dash-rows": c.gridRows,
767
+ ...ge(d)
768
+ }, O = ["preview-tab__grid", N && "preview-tab__grid--stacked"].filter(Boolean).join(" ");
769
+ f = /* @__PURE__ */ _(ce, { children: [
770
+ o && !i && /* @__PURE__ */ r("div", { className: "preview-tab__error", children: o }),
771
+ i && /* @__PURE__ */ r("div", { className: O, style: x, ref: v, children: M.map((w) => {
772
+ const T = Me.has(w.type), E = p[w.id], P = N ? {
763
773
  gridColumn: 1,
764
- aspectRatio: `${Ee(v.grid.w, v.grid.h, t)}`,
765
- minHeight: `${Fe(v.grid.h, Oe, ee, 0)}px`
774
+ aspectRatio: `${Ee(w.grid.w, w.grid.h, t)}`,
775
+ minHeight: `${Te(w.grid.h, Oe, ee, 0)}px`
766
776
  } : {
767
- gridColumn: `${v.grid.x + 1} / span ${v.grid.w}`,
768
- gridRow: `${v.grid.y + 1} / span ${v.grid.h}`
769
- }, M = v.type === "variable" ? h[v.id] ?? (E == null ? void 0 : E.value) ?? v.config.variableValue ?? 0 : void 0;
777
+ gridColumn: `${w.grid.x + 1} / span ${w.grid.w}`,
778
+ gridRow: `${w.grid.y + 1} / span ${w.grid.h}`
779
+ }, L = w.type === "variable" ? m[w.id] ?? (E == null ? void 0 : E.value) ?? w.config.variableValue ?? 0 : void 0;
770
780
  return /* @__PURE__ */ r(
771
781
  "div",
772
782
  {
773
- className: `preview-tab__widget ${F ? "preview-tab__widget--control" : ""}`,
783
+ className: `preview-tab__widget ${T ? "preview-tab__widget--control" : ""}`,
774
784
  style: P,
775
- children: F || E ? /* @__PURE__ */ r(
776
- At,
785
+ children: T || E ? /* @__PURE__ */ r(
786
+ xt,
777
787
  {
778
- type: v.type,
788
+ type: w.type,
779
789
  computed: E || {},
780
- palette: u,
781
- config: v.config,
782
- filterValue: f[v.id] || "",
790
+ palette: d,
791
+ config: w.config,
792
+ filterValue: g[w.id] || "",
783
793
  filterOptions: (
784
794
  // Estruturais: vem do /layout (cacheavel), nao do /render —
785
795
  // recalcula-los a cada render custaria um DISTINCT por filtro.
786
- v.type === "filter" ? v.config.availableValues ?? [] : []
796
+ w.type === "filter" ? w.config.availableValues ?? [] : []
787
797
  ),
788
- dateBounds: b,
789
- onFilterChange: (H) => g(v.id, H),
790
- variableValue: M,
791
- onVariableChange: (H) => p(v.id, H),
792
- onPaletteChange: N
798
+ dateBounds: y,
799
+ onFilterChange: (D) => h(w.id, D),
800
+ variableValue: L,
801
+ onVariableChange: (D) => b(w.id, D),
802
+ onPaletteChange: S
793
803
  }
794
- ) : /* @__PURE__ */ r("div", { className: "preview-tab__widget-loading", children: m ? "Carregando..." : "Sem dados" })
804
+ ) : /* @__PURE__ */ r("div", { className: "preview-tab__widget-loading", children: u ? "Carregando..." : "Sem dados" })
795
805
  },
796
- v.id
806
+ w.id
797
807
  );
798
808
  }) }),
799
- m && i && /* @__PURE__ */ r("div", { className: "preview-tab__recalculating", children: "Atualizando..." })
809
+ u && i && /* @__PURE__ */ r("div", { className: "preview-tab__recalculating", children: "Atualizando..." })
800
810
  ] });
801
811
  }
802
- return /* @__PURE__ */ r("div", { className: k, style: x, ref: C, children: S });
812
+ return /* @__PURE__ */ r("div", { className: k, style: $, ref: C, children: f });
803
813
  }
804
- function Tt(e, t) {
805
- const a = URL.createObjectURL(e), n = document.createElement("a");
806
- n.href = a, n.download = t, document.body.appendChild(n), n.click(), n.remove(), setTimeout(() => URL.revokeObjectURL(a), 0);
814
+ function Mt(e, t) {
815
+ const n = URL.createObjectURL(e), a = document.createElement("a");
816
+ a.href = n, a.download = t, document.body.appendChild(a), a.click(), a.remove(), setTimeout(() => URL.revokeObjectURL(n), 0);
807
817
  }
808
- const Ft = 768, Et = 879;
809
- function Mt(e) {
818
+ const Tt = 768, Et = 879;
819
+ function Lt(e) {
810
820
  return Array.from(e.normalize("NFD")).filter((t) => {
811
- const a = t.codePointAt(0) ?? 0;
812
- return a < Ft || a > Et;
821
+ const n = t.codePointAt(0) ?? 0;
822
+ return n < Tt || n > Et;
813
823
  }).join("");
814
824
  }
815
- function Lt(e, t) {
816
- return `${Mt(e).replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase() || "documento"}.${t}`;
825
+ function It(e, t) {
826
+ return `${Lt(e).replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase() || "documento"}.${t}`;
817
827
  }
818
828
  const Ot = 300;
819
829
  function Pt(e) {
820
- const [t, a] = A(null), [n, l] = A(null), [s, o] = A({}), [i, m] = A(!0), [d, f] = A(null), [h, u] = A(!1), g = R(), p = R(!1);
830
+ const [t, n] = A(null), [a, l] = A(null), [s, c] = A({}), [i, u] = A(!0), [o, g] = A(null), [m, d] = A(!1), h = R(), b = R(!1);
821
831
  W(() => {
822
- let y = !1;
823
- return Pe(e).then((w) => {
824
- y || a(w);
825
- }).catch((w) => {
826
- y || f(w.message);
832
+ let v = !1;
833
+ return Pe(e).then((N) => {
834
+ v || n(N);
835
+ }).catch((N) => {
836
+ v || g(N.message);
827
837
  }), () => {
828
- y = !0;
838
+ v = !0;
829
839
  };
830
840
  }, [e]), W(() => {
831
841
  if (t)
832
- return g.current && clearTimeout(g.current), g.current = setTimeout(() => {
833
- m(!0), We(e, U(s)).then((y) => {
834
- l(y), !p.current && y.applied && (p.current = !0, o((w) => ({ ...ve(y.applied), ...w }))), f(null);
835
- }).catch((y) => f(y.message)).finally(() => m(!1));
842
+ return h.current && clearTimeout(h.current), h.current = setTimeout(() => {
843
+ u(!0), We(e, K(s)).then((v) => {
844
+ l(v), !b.current && v.applied && (b.current = !0, c((N) => ({ ...ve(v.applied), ...N }))), g(null);
845
+ }).catch((v) => g(v.message)).finally(() => u(!1));
836
846
  }, Ot), () => {
837
- g.current && clearTimeout(g.current);
847
+ h.current && clearTimeout(h.current);
838
848
  };
839
849
  }, [e, t, s]);
840
- const N = T((y, w) => {
841
- o(($) => ({ ...$, [y]: w }));
842
- }, []), C = T(() => {
843
- u(!0), De(e, U(s)).then((y) => {
844
- Tt(y, Lt((t == null ? void 0 : t.name) ?? "demonstrativo", "pdf")), f(null);
845
- }).catch((y) => f(y.message)).finally(() => u(!1));
850
+ const S = F((v, N) => {
851
+ c((M) => ({ ...M, [v]: N }));
852
+ }, []), C = F(() => {
853
+ d(!0), De(e, K(s)).then((v) => {
854
+ Mt(v, It((t == null ? void 0 : t.name) ?? "demonstrativo", "pdf")), g(null);
855
+ }).catch((v) => g(v.message)).finally(() => d(!1));
846
856
  }, [e, s, t == null ? void 0 : t.name]);
847
857
  return {
848
858
  layout: t,
849
- renderData: n,
859
+ renderData: a,
850
860
  loading: i,
851
- error: d,
861
+ error: o,
852
862
  filters: s,
853
- setFilter: N,
863
+ setFilter: S,
854
864
  downloadPdf: C,
855
- downloading: h
865
+ downloading: m
856
866
  };
857
867
  }
858
868
  const Wt = 8, Dt = 14;
859
- function ie(e) {
869
+ function se(e) {
860
870
  return { paddingLeft: `${Wt + e * Dt}px` };
861
871
  }
862
- function ye({ label: e, value: t, bounds: a, onChange: n }) {
863
- const [l, s] = t ? t.split("|") : ["", ""];
864
- return /* @__PURE__ */ _("div", { className: "stmt__filter stmt__filter--range", children: [
865
- /* @__PURE__ */ r("span", { className: "stmt__filter-label", children: e }),
866
- /* @__PURE__ */ _("div", { className: "stmt__filter-range", children: [
867
- /* @__PURE__ */ r(
868
- D,
869
- {
870
- value: l,
871
- minIso: a.min,
872
- maxIso: s || a.max,
873
- selectsStart: !0,
874
- startIso: l,
875
- endIso: s,
876
- placeholder: "Início",
877
- onChange: (o) => n(`${o}|${s}`)
878
- }
879
- ),
872
+ function Ht(e) {
873
+ const t = {};
874
+ return e != null && e.accent && (t["--stmt-accent"] = e.accent), e != null && e.positive && (t["--stmt-positive"] = e.positive), e != null && e.negative && (t["--stmt-negative"] = e.negative), t;
875
+ }
876
+ function ie(e) {
877
+ return e == null || e === 0 ? "stmt__number" : `stmt__number stmt__number--${e > 0 ? "pos" : "neg"}`;
878
+ }
879
+ function zt({ definition: e, value: t, options: n, bounds: a, onChange: l }) {
880
+ if (e.type === "date_range") {
881
+ const s = e.dateFilterMode ?? "range";
882
+ return /* @__PURE__ */ _("div", { className: `stmt__filter stmt__filter--date stmt__filter--${s}`, children: [
883
+ /* @__PURE__ */ r("span", { className: "stmt__filter-label", children: e.label }),
880
884
  /* @__PURE__ */ r(
881
- D,
885
+ Ne,
882
886
  {
883
- value: s,
884
- minIso: l || a.min,
885
- maxIso: a.max,
886
- selectsEnd: !0,
887
- startIso: l,
888
- endIso: s,
889
- placeholder: "Fim",
890
- onChange: (o) => n(`${l}|${o}`)
887
+ mode: s,
888
+ value: t,
889
+ dateBounds: a,
890
+ onChange: l
891
891
  }
892
892
  )
893
- ] })
894
- ] });
895
- }
896
- function Ht({ definition: e, value: t, options: a, bounds: n, onChange: l }) {
897
- return e.type === "date_range" ? /* @__PURE__ */ r(
898
- ye,
899
- {
900
- label: e.label,
901
- value: t,
902
- bounds: n,
903
- onChange: l
904
- }
905
- ) : /* @__PURE__ */ _("div", { className: "stmt__filter", children: [
893
+ ] });
894
+ }
895
+ return /* @__PURE__ */ _("div", { className: "stmt__filter", children: [
906
896
  /* @__PURE__ */ r("span", { className: "stmt__filter-label", children: e.label }),
907
897
  /* @__PURE__ */ r(
908
898
  he,
909
899
  {
910
900
  value: t,
911
- options: a,
901
+ options: n,
912
902
  multi: e.type === "multi_select",
913
903
  onChange: l
914
904
  }
915
905
  )
916
906
  ] });
917
907
  }
918
- function zt({ line: e, columnCount: t, showTotal: a, showVertical: n, showHorizontal: l }) {
908
+ function Gt({ line: e, columnCount: t, showTotal: n, showVertical: a, showHorizontal: l }) {
919
909
  if (e.type === "separator")
920
910
  return /* @__PURE__ */ r("tr", { className: "stmt__row stmt__row--separator", children: /* @__PURE__ */ r("td", { colSpan: t }) });
921
911
  if (e.type === "header" && e.formatted.length === 0)
922
912
  return /* @__PURE__ */ _("tr", { className: "stmt__row stmt__row--header", children: [
923
- /* @__PURE__ */ r("th", { scope: "row", style: ie(e.style.indent), children: e.label }),
913
+ /* @__PURE__ */ r("th", { scope: "row", style: se(e.style.indent), children: e.label }),
924
914
  /* @__PURE__ */ r("td", { colSpan: t - 1 })
925
915
  ] });
926
916
  const s = [
@@ -929,81 +919,75 @@ function zt({ line: e, columnCount: t, showTotal: a, showVertical: n, showHorizo
929
919
  e.style.bold && "stmt__row--bold"
930
920
  ].filter(Boolean).join(" ");
931
921
  return /* @__PURE__ */ _("tr", { className: s, children: [
932
- /* @__PURE__ */ r("th", { scope: "row", style: ie(e.style.indent), children: e.label }),
933
- e.formatted.map((o, i) => {
934
- const m = e.horizontalAnalysis[i];
922
+ /* @__PURE__ */ r("th", { scope: "row", style: se(e.style.indent), children: e.label }),
923
+ e.formatted.map((c, i) => {
924
+ const u = e.horizontalAnalysis[i];
935
925
  return /* @__PURE__ */ _("td", { className: "stmt__value", children: [
936
- /* @__PURE__ */ r("span", { className: "stmt__number", children: o }),
937
- n && e.verticalAnalysis[i] != null && /* @__PURE__ */ r("span", { className: "stmt__aux", title: "Análise vertical", children: j(e.verticalAnalysis[i], "percentage") }),
938
- l && m != null && /* @__PURE__ */ r(
926
+ /* @__PURE__ */ r("span", { className: ie(e.values[i]), children: c }),
927
+ a && e.verticalAnalysis[i] != null && /* @__PURE__ */ r("span", { className: "stmt__aux", title: "Análise vertical", children: Y(e.verticalAnalysis[i], "percentage") }),
928
+ l && u != null && /* @__PURE__ */ r(
939
929
  "span",
940
930
  {
941
- className: `stmt__aux stmt__aux--${m < 0 ? "down" : "up"}`,
931
+ className: `stmt__aux stmt__aux--${u < 0 ? "down" : "up"}`,
942
932
  title: "Variação sobre o período anterior",
943
- children: j(m, "percentage")
933
+ children: Y(u, "percentage")
944
934
  }
945
935
  )
946
936
  ] }, i);
947
937
  }),
948
- a && /* @__PURE__ */ r("td", { className: "stmt__value stmt__value--total", children: /* @__PURE__ */ r("span", { className: "stmt__number", children: e.totalFormatted ?? "-" }) })
938
+ n && /* @__PURE__ */ r("td", { className: "stmt__value stmt__value--total", children: /* @__PURE__ */ r("span", { className: ie(e.total), children: e.totalFormatted ?? "-" }) })
949
939
  ] });
950
940
  }
951
- function Ut({ token: e, palette: t, showDownload: a = !0, className: n }) {
941
+ function Xt({ token: e, palette: t, showDownload: n = !0, className: a }) {
952
942
  const {
953
943
  layout: l,
954
944
  renderData: s,
955
- loading: o,
945
+ loading: c,
956
946
  error: i,
957
- filters: m,
958
- setFilter: d,
959
- downloadPdf: f,
960
- downloading: h
961
- } = Pt(e), u = ["stmt", n].filter(Boolean).join(" "), g = ge(t);
962
- let p;
947
+ filters: u,
948
+ setFilter: o,
949
+ downloadPdf: g,
950
+ downloading: m
951
+ } = Pt(e), d = ["stmt", a].filter(Boolean).join(" "), h = {
952
+ ...ge(t),
953
+ ...Ht(l == null ? void 0 : l.colors)
954
+ };
955
+ let b;
963
956
  if (i && !l)
964
- p = /* @__PURE__ */ r("div", { className: "stmt__error", children: i });
957
+ b = /* @__PURE__ */ r("div", { className: "stmt__error", children: i });
965
958
  else if (!l)
966
- p = /* @__PURE__ */ r("div", { className: "stmt__state", children: "Carregando demonstrativo..." });
959
+ b = /* @__PURE__ */ r("div", { className: "stmt__state", children: "Carregando demonstrativo..." });
967
960
  else {
968
- const N = (s == null ? void 0 : s.dateBounds) ?? l.dateBounds, C = l.periods.showTotal, y = l.filters.some((c) => c.type === "date_range"), w = (s == null ? void 0 : s.columns) ?? [], $ = (s == null ? void 0 : s.lines) ?? [], x = 1 + w.length + (C ? 1 : 0), k = $.some((c) => c.verticalAnalysis.length > 0), S = $.some((c) => c.horizontalAnalysis.length > 0);
969
- p = /* @__PURE__ */ _(oe, { children: [
961
+ const S = (s == null ? void 0 : s.dateBounds) ?? l.dateBounds, C = l.periods.showTotal, v = (s == null ? void 0 : s.columns) ?? [], N = (s == null ? void 0 : s.lines) ?? [], M = 1 + v.length + (C ? 1 : 0), $ = N.some((f) => f.verticalAnalysis.length > 0), k = N.some((f) => f.horizontalAnalysis.length > 0);
962
+ b = /* @__PURE__ */ _(ce, { children: [
970
963
  /* @__PURE__ */ _("div", { className: "stmt__toolbar", children: [
971
- !y && /* @__PURE__ */ r(
972
- ye,
973
- {
974
- label: "Período",
975
- value: m[re] ?? "",
976
- bounds: N,
977
- onChange: (c) => d(re, c)
978
- }
979
- ),
980
- l.filters.map((c) => /* @__PURE__ */ r(
981
- Ht,
964
+ l.filters.map((f) => /* @__PURE__ */ r(
965
+ zt,
982
966
  {
983
- definition: c,
984
- value: m[c.id] ?? "",
985
- options: l.filterOptions[c.id] ?? [],
986
- bounds: N,
987
- onChange: (b) => d(c.id, b)
967
+ definition: f,
968
+ value: u[f.id] ?? "",
969
+ options: l.filterOptions[f.id] ?? [],
970
+ bounds: S,
971
+ onChange: (p) => o(f.id, p)
988
972
  },
989
- c.id
973
+ f.id
990
974
  )),
991
975
  /* @__PURE__ */ _("div", { className: "stmt__toolbar-end", children: [
992
976
  /* @__PURE__ */ _("span", { className: "stmt__bounds", children: [
993
977
  "Base: ",
994
- N.min,
978
+ S.min,
995
979
  " a ",
996
- N.max
980
+ S.max
997
981
  ] }),
998
- a && /* @__PURE__ */ r(
982
+ n && /* @__PURE__ */ r(
999
983
  "button",
1000
984
  {
1001
985
  type: "button",
1002
986
  className: "stmt__download",
1003
- onClick: f,
1004
- disabled: h || !s,
987
+ onClick: g,
988
+ disabled: m || !s,
1005
989
  title: "Baixar o documento em PDF",
1006
- children: h ? "Gerando..." : "Baixar PDF"
990
+ children: m ? "Gerando..." : "Baixar PDF"
1007
991
  }
1008
992
  )
1009
993
  ] })
@@ -1011,35 +995,35 @@ function Ut({ token: e, palette: t, showDownload: a = !0, className: n }) {
1011
995
  i && /* @__PURE__ */ r("div", { className: "stmt__error", children: i }),
1012
996
  (s == null ? void 0 : s.truncated) && /* @__PURE__ */ _("div", { className: "stmt__warning", children: [
1013
997
  "A janela pedida excede o limite de colunas: o documento mostra as primeiras ",
1014
- w.length,
998
+ v.length,
1015
999
  ". Escolha um período menor ou uma coluna mais larga."
1016
1000
  ] }),
1017
- s ? w.length === 0 ? /* @__PURE__ */ r("div", { className: "stmt__state", children: "Nenhum período na janela selecionada." }) : $.length === 0 ? /* @__PURE__ */ r("div", { className: "stmt__state", children: "Este demonstrativo não possui linhas." }) : /* @__PURE__ */ r("div", { className: "stmt__scroll", children: /* @__PURE__ */ _("table", { className: "stmt__table", children: [
1001
+ s ? v.length === 0 ? /* @__PURE__ */ r("div", { className: "stmt__state", children: "Nenhum período na janela selecionada." }) : N.length === 0 ? /* @__PURE__ */ r("div", { className: "stmt__state", children: "Este demonstrativo não possui linhas." }) : /* @__PURE__ */ r("div", { className: "stmt__scroll", children: /* @__PURE__ */ _("table", { className: "stmt__table", children: [
1018
1002
  /* @__PURE__ */ r("thead", { children: /* @__PURE__ */ _("tr", { children: [
1019
1003
  /* @__PURE__ */ r("th", { className: "stmt__corner", scope: "col", children: s.name }),
1020
- w.map((c) => /* @__PURE__ */ r("th", { scope: "col", title: `${c.start} a ${c.end}`, children: c.label }, c.key)),
1004
+ v.map((f) => /* @__PURE__ */ r("th", { scope: "col", title: `${f.start} a ${f.end}`, children: f.label }, f.key)),
1021
1005
  C && /* @__PURE__ */ r("th", { scope: "col", className: "stmt__total-head", children: l.periods.totalLabel })
1022
1006
  ] }) }),
1023
- /* @__PURE__ */ r("tbody", { children: $.map((c) => /* @__PURE__ */ r(
1024
- zt,
1007
+ /* @__PURE__ */ r("tbody", { children: N.map((f) => /* @__PURE__ */ r(
1008
+ Gt,
1025
1009
  {
1026
- line: c,
1027
- columnCount: x,
1010
+ line: f,
1011
+ columnCount: M,
1028
1012
  showTotal: C,
1029
- showVertical: k,
1030
- showHorizontal: S
1013
+ showVertical: $,
1014
+ showHorizontal: k
1031
1015
  },
1032
- c.id
1016
+ f.id
1033
1017
  )) })
1034
1018
  ] }) }) : /* @__PURE__ */ r("div", { className: "stmt__state", children: "Calculando..." }),
1035
- o && s && /* @__PURE__ */ r("div", { className: "stmt__recalculating", children: "Atualizando..." })
1019
+ c && s && /* @__PURE__ */ r("div", { className: "stmt__recalculating", children: "Atualizando..." })
1036
1020
  ] });
1037
1021
  }
1038
- return /* @__PURE__ */ r("div", { className: u, style: g, children: p });
1022
+ return /* @__PURE__ */ r("div", { className: d, style: h, children: b });
1039
1023
  }
1040
1024
  export {
1041
- qt as ApiError,
1042
- Kt as Dashboard,
1043
- Ut as Statement
1025
+ Qt as ApiError,
1026
+ Ut as Dashboard,
1027
+ Xt as Statement
1044
1028
  };
1045
1029
  //# sourceMappingURL=index.js.map