@actionexec/dashboards 0.16.2 → 0.17.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,677 +1,677 @@
1
- import { jsxs as b, jsx as r, Fragment as he } from "react/jsx-runtime";
2
- import { useState as M, useRef as $, useEffect as W, useCallback as E, useMemo as Y, memo as Ae } from "react";
3
- import { M as V, f as Fe, a as Te, c as J, b as ee, d as Me, e as fe, i as te, g as z, p as xe, h as q, j as ge, k as _e, l as j, m as Ee, r as Le, D as re, n as Oe, o as Pe, S as pe, C as Ie, q as We, s as be, t as De, u as ze, v as He, G as je, w as ne, x as Ge, y as Ye, z as Ve, A as Ke, B as Ue } from "./ColorPaletteSelector-nBO_fbbj.js";
4
- import { E as ur } from "./ColorPaletteSelector-nBO_fbbj.js";
5
- import { LineChart as qe, Line as Be, AreaChart as Xe, Area as Qe, BarChart as ve, Bar as K, CartesianGrid as we, XAxis as ye, YAxis as Ne, Tooltip as U, Legend as Ze, Cell as ae, PieChart as Je, Pie as et } from "recharts";
6
- function D(e, t = {}) {
7
- const n = {};
8
- for (const [a, l] of Object.entries(e))
9
- if (l.includes("|")) {
10
- const [s, c] = l.split("|");
11
- s && (n.f_date_start = s), c && (n.f_date_end = c);
1
+ import { jsxs as _, jsx as a, Fragment as Y } from "react/jsx-runtime";
2
+ import { useState as F, useRef as $, useEffect as H, useCallback as I, useMemo as O, memo as xe } from "react";
3
+ import { M as Z, f as Me, a as Fe, c as ae, b as se, d as Ee, e as _e, i as le, g as U, p as Ie, h as te, j as be, k as ve, l as X, m as Pe, r as Le, D as ie, n as Oe, o as We, S as we, C as je, q as ze, s as ye, t as De, u as He, v as Ge, G as Ve, w as oe, x as Ye, y as Ke, z as Ue, A as Be, B as qe } from "./ColorPaletteSelector-nBO_fbbj.js";
4
+ import { E as yr } from "./ColorPaletteSelector-nBO_fbbj.js";
5
+ import { LineChart as Xe, Line as Qe, AreaChart as Ze, Area as Je, BarChart as Ne, Bar as J, CartesianGrid as Se, XAxis as ke, YAxis as Ce, Tooltip as ee, Legend as et, Cell as ce, PieChart as tt, Pie as rt } from "recharts";
6
+ function K(e, t = {}) {
7
+ const r = {};
8
+ for (const [n, s] of Object.entries(e))
9
+ if (s.includes("|")) {
10
+ const [l, i] = s.split("|");
11
+ l && (r.f_date_start = l), i && (r.f_date_end = i);
12
12
  } else
13
- n[`f_${a}`] = l;
14
- for (const [a, l] of Object.entries(t))
15
- n[`v_${a}`] = String(l);
16
- return n;
13
+ r[`f_${n}`] = s;
14
+ for (const [n, s] of Object.entries(t))
15
+ r[`v_${n}`] = String(s);
16
+ return r;
17
17
  }
18
- function H(e) {
18
+ function B(e) {
19
19
  return Object.keys(e).sort().map((t) => `${t}=${e[t]}`).join("&");
20
20
  }
21
- function Se(e, t) {
22
- const n = Object.keys(e);
23
- return n.length !== Object.keys(t).length ? !1 : n.every((a) => e[a] === t[a]);
21
+ function Re(e, t) {
22
+ const r = Object.keys(e);
23
+ return r.length !== Object.keys(t).length ? !1 : r.every((n) => e[n] === t[n]);
24
24
  }
25
- function ke(e) {
25
+ function $e(e) {
26
26
  const t = {};
27
- for (const [n, a] of Object.entries(e))
28
- if (a && typeof a == "object" && "start" in a) {
29
- const l = a;
30
- t[n] = `${l.start || ""}|${l.end || ""}`;
31
- } else Array.isArray(a) ? t[n] = a.join(V) : typeof a == "string" && (t[n] = a);
27
+ for (const [r, n] of Object.entries(e))
28
+ if (n && typeof n == "object" && "start" in n) {
29
+ const s = n;
30
+ t[r] = `${s.start || ""}|${s.end || ""}`;
31
+ } else Array.isArray(n) ? t[r] = n.join(Z) : typeof n == "string" && (t[r] = n);
32
32
  return t;
33
33
  }
34
- const tt = 300;
35
- function rt(e) {
36
- const [t, n] = M(null), [a, l] = M(null), [s, c] = M({}), [i, m] = M({}), [o, h] = M(null), [d, f] = M(!0), [p, v] = M(null), S = $(), k = $(!1), A = $(null), y = $(!1);
37
- W(() => {
38
- let _ = !1;
39
- return k.current = !1, A.current = null, y.current = !1, Fe(e).then((u) => {
40
- _ || n(u);
41
- }).catch((u) => {
42
- _ || v(u.message);
34
+ const nt = 300;
35
+ function at(e) {
36
+ const [t, r] = F(null), [n, s] = F(null), [l, i] = F({}), [o, p] = F({}), [c, h] = F(null), [d, u] = F(!0), [m, b] = F(null), y = $(), N = $(!1), A = $(null), k = $(!1);
37
+ H(() => {
38
+ let g = !1;
39
+ return N.current = !1, A.current = null, k.current = !1, Me(e).then((f) => {
40
+ g || r(f);
41
+ }).catch((f) => {
42
+ g || b(f.message);
43
43
  }), () => {
44
- _ = !0;
44
+ g = !0;
45
45
  };
46
- }, [e]), W(() => {
46
+ }, [e]), H(() => {
47
47
  if (!t) return;
48
48
  if (t.widgets.length === 0) {
49
- f(!1);
49
+ u(!1);
50
50
  return;
51
51
  }
52
- const _ = D(s, i), u = H(_);
53
- if (u === A.current) return;
54
- S.current && clearTimeout(S.current);
55
- const R = y.current ? tt : 0;
56
- return S.current = setTimeout(() => {
57
- f(!0), Te(e, _).then((C) => {
58
- A.current = u, y.current = !0, l(C), !k.current && C.applied && (k.current = !0, c((F) => {
59
- const g = { ...ke(C.applied), ...F };
60
- return Se(g, F) ? F : (A.current = H(D(g, i)), g);
61
- })), v(null);
62
- }).catch((C) => v(C.message)).finally(() => f(!1));
52
+ const g = K(l, o), f = B(g);
53
+ if (f === A.current) return;
54
+ y.current && clearTimeout(y.current);
55
+ const R = k.current ? nt : 0;
56
+ return y.current = setTimeout(() => {
57
+ u(!0), Fe(e, g).then((T) => {
58
+ A.current = f, k.current = !0, s(T), !N.current && T.applied && (N.current = !0, i((x) => {
59
+ const w = { ...$e(T.applied), ...x };
60
+ return Re(w, x) ? x : (A.current = B(K(w, o)), w);
61
+ })), b(null);
62
+ }).catch((T) => b(T.message)).finally(() => u(!1));
63
63
  }, R), () => {
64
- S.current && clearTimeout(S.current);
64
+ y.current && clearTimeout(y.current);
65
65
  };
66
- }, [e, t, s, i]);
67
- const w = E((_, u) => {
68
- c((R) => ({ ...R, [_]: u }));
69
- }, []), N = E((_, u) => {
70
- m((R) => ({ ...R, [_]: u }));
71
- }, []), T = E((_) => {
72
- h(_);
73
- }, []), x = Y(
74
- () => o ?? (t == null ? void 0 : t.palette) ?? [],
75
- [o, t]
66
+ }, [e, t, l, o]);
67
+ const S = I((g, f) => {
68
+ i((R) => ({ ...R, [g]: f }));
69
+ }, []), C = I((g, f) => {
70
+ p((R) => ({ ...R, [g]: f }));
71
+ }, []), M = I((g) => {
72
+ h(g);
73
+ }, []), E = O(
74
+ () => c ?? (t == null ? void 0 : t.palette) ?? [],
75
+ [c, t]
76
76
  );
77
77
  return {
78
78
  layout: t,
79
- renderData: a,
79
+ renderData: n,
80
80
  loading: d,
81
- error: p,
82
- filters: s,
83
- variables: i,
84
- palette: x,
85
- setFilter: w,
86
- setVariable: N,
87
- setPalette: T
81
+ error: m,
82
+ filters: l,
83
+ variables: o,
84
+ palette: E,
85
+ setFilter: S,
86
+ setVariable: C,
87
+ setPalette: M
88
88
  };
89
89
  }
90
- const nt = (e) => {
91
- var t, n;
92
- return ((n = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : n.inlineSize) ?? e.target.offsetWidth;
93
- }, at = (e) => {
94
- var t, n;
95
- return ((n = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : n.blockSize) ?? e.target.offsetHeight;
90
+ const st = (e) => {
91
+ var t, r;
92
+ return ((r = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : r.inlineSize) ?? e.target.offsetWidth;
93
+ }, lt = (e) => {
94
+ var t, r;
95
+ return ((r = (t = e.borderBoxSize) == null ? void 0 : t[0]) == null ? void 0 : r.blockSize) ?? e.target.offsetHeight;
96
96
  };
97
- function lt(e, t, n) {
98
- return e === void 0 ? 0 : e === "auto" ? Me(t, n) : Math.max(0, e);
97
+ function it(e, t, r) {
98
+ return e === void 0 ? 0 : e === "auto" ? Ee(t, r) : Math.max(0, e);
99
99
  }
100
- function st(e) {
100
+ function ot(e) {
101
101
  let t = e.parentElement;
102
102
  for (; t && t !== document.body && t !== document.documentElement; ) {
103
- const { overflowY: n } = getComputedStyle(t);
104
- if (n !== "visible")
105
- return n === "hidden" || n === "clip" ? t : null;
103
+ const { overflowY: r } = getComputedStyle(t);
104
+ if (r !== "visible")
105
+ return r === "hidden" || r === "clip" ? t : null;
106
106
  t = t.parentElement;
107
107
  }
108
108
  return null;
109
109
  }
110
- function it(e) {
110
+ function ct(e) {
111
111
  const t = $(e);
112
112
  t.current = e;
113
- const n = $(null), a = $(null), l = $(null), s = $(null), c = $(null), i = $(0), m = $(0), o = $(!1), h = $(!1), d = $(-1), [f, p] = M(!1), v = E((_) => {
114
- const u = a.current;
115
- if (h.current || t.current.silenceWarnings || !u) return;
116
- const R = st(u);
117
- !R || R.clientHeight >= _.gridHeight || (h.current = !0, console.warn(
118
- `[@actionexec/dashboards] O dashboard esta sendo cortado: o container precisa de ${Math.ceil(_.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.`
113
+ const r = $(null), n = $(null), s = $(null), l = $(null), i = $(null), o = $(0), p = $(0), c = $(!1), h = $(!1), d = $(-1), [u, m] = F(!1), b = I((g) => {
114
+ const f = n.current;
115
+ if (h.current || t.current.silenceWarnings || !f) return;
116
+ const R = ot(f);
117
+ !R || R.clientHeight >= g.gridHeight || (h.current = !0, console.warn(
118
+ `[@actionexec/dashboards] O dashboard esta sendo cortado: o container precisa de ${Math.ceil(g.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.`
119
119
  ));
120
- }, []), S = E(() => {
121
- var L, O;
122
- if (!n.current) return;
123
- const { columns: _, cellAspect: u } = t.current, R = i.current, C = ee(R, _), F = {
120
+ }, []), y = I(() => {
121
+ var P, L;
122
+ if (!r.current) return;
123
+ const { columns: g, cellAspect: f } = t.current, R = o.current, T = se(R, g), x = {
124
124
  containerWidth: R,
125
- cellWidth: C,
126
- cellHeight: J(C, u),
127
- gridHeight: m.current,
128
- stacked: o.current
129
- }, g = c.current;
130
- g && g.containerWidth === F.containerWidth && g.cellWidth === F.cellWidth && g.cellHeight === F.cellHeight && g.gridHeight === F.gridHeight && g.stacked === F.stacked || (c.current = F, (O = (L = t.current).onGeometryChange) == null || O.call(L, F), v(F));
131
- }, [v]), k = E((_ = !1) => {
132
- const u = n.current;
133
- if (!u) return;
134
- const R = i.current;
135
- if (!_ && R === d.current) return;
125
+ cellWidth: T,
126
+ cellHeight: ae(T, f),
127
+ gridHeight: p.current,
128
+ stacked: c.current
129
+ }, w = i.current;
130
+ w && w.containerWidth === x.containerWidth && w.cellWidth === x.cellWidth && w.cellHeight === x.cellHeight && w.gridHeight === x.gridHeight && w.stacked === x.stacked || (i.current = x, (L = (P = t.current).onGeometryChange) == null || L.call(P, x), b(x));
131
+ }, [b]), N = I((g = !1) => {
132
+ const f = r.current;
133
+ if (!f) return;
134
+ const R = o.current;
135
+ if (!g && R === d.current) return;
136
136
  d.current = R;
137
- const { columns: C, cellAspect: F, stackBelow: g } = t.current, I = ee(R, C);
138
- u.style.setProperty("--dash-cell-h", `${J(I, F)}px`);
139
- const L = lt(g, C, F), O = L > 0 && R > 0 && R < L;
140
- O !== o.current && (o.current = O, p(O));
141
- }, []), A = E(() => {
142
- s.current !== null && (cancelAnimationFrame(s.current), s.current = null);
143
- }, []), y = E(() => {
144
- s.current === null && (s.current = requestAnimationFrame(() => {
145
- s.current = null, k(), S();
137
+ const { columns: T, cellAspect: x, stackBelow: w } = t.current, D = se(R, T);
138
+ f.style.setProperty("--dash-cell-h", `${ae(D, x)}px`);
139
+ const P = it(w, T, x), L = P > 0 && R > 0 && R < P;
140
+ L !== c.current && (c.current = L, m(L));
141
+ }, []), A = I(() => {
142
+ l.current !== null && (cancelAnimationFrame(l.current), l.current = null);
143
+ }, []), k = I(() => {
144
+ l.current === null && (l.current = requestAnimationFrame(() => {
145
+ l.current = null, N(), y();
146
146
  }));
147
- }, [k, S]), w = E((_) => {
148
- for (const u of _)
149
- u.target === n.current ? i.current = Math.round(nt(u)) : u.target === a.current && (m.current = at(u));
150
- y();
151
- }, [y]), N = E(() => l.current ? l.current : typeof ResizeObserver > "u" ? null : (l.current = new ResizeObserver(w), l.current), [w]), T = E((_) => {
152
- const u = N();
153
- n.current && (u == null || u.unobserve(n.current)), n.current = _, _ && (u == null || u.observe(_), i.current = Math.round(_.getBoundingClientRect().width), k(!0), y());
154
- }, [k, N, y]), x = E((_) => {
155
- const u = N();
156
- if (a.current && (u == null || u.unobserve(a.current)), a.current = _, !_) {
157
- m.current = 0;
147
+ }, [N, y]), S = I((g) => {
148
+ for (const f of g)
149
+ f.target === r.current ? o.current = Math.round(st(f)) : f.target === n.current && (p.current = lt(f));
150
+ k();
151
+ }, [k]), C = I(() => s.current ? s.current : typeof ResizeObserver > "u" ? null : (s.current = new ResizeObserver(S), s.current), [S]), M = I((g) => {
152
+ const f = C();
153
+ r.current && (f == null || f.unobserve(r.current)), r.current = g, g && (f == null || f.observe(g), o.current = Math.round(g.getBoundingClientRect().width), N(!0), k());
154
+ }, [N, C, k]), E = I((g) => {
155
+ const f = C();
156
+ if (n.current && (f == null || f.unobserve(n.current)), n.current = g, !g) {
157
+ p.current = 0;
158
158
  return;
159
159
  }
160
- u == null || u.observe(_), m.current = _.getBoundingClientRect().height, y();
161
- }, [N, y]);
162
- return W(() => {
163
- const _ = N();
164
- return n.current && (_ == null || _.observe(n.current)), a.current && (_ == null || _.observe(a.current)), () => {
165
- var u;
166
- (u = l.current) == null || u.disconnect(), l.current = null, A();
160
+ f == null || f.observe(g), p.current = g.getBoundingClientRect().height, k();
161
+ }, [C, k]);
162
+ return H(() => {
163
+ const g = C();
164
+ return r.current && (g == null || g.observe(r.current)), n.current && (g == null || g.observe(n.current)), () => {
165
+ var f;
166
+ (f = s.current) == null || f.disconnect(), s.current = null, A();
167
167
  };
168
- }, [N, A]), W(() => {
169
- n.current && (k(!0), y());
170
- }, [e.columns, e.cellAspect, e.stackBelow, k, y]), { rootRef: T, gridRef: x, stacked: f };
168
+ }, [C, A]), H(() => {
169
+ r.current && (N(!0), k());
170
+ }, [e.columns, e.cellAspect, e.stackBelow, N, k]), { rootRef: M, gridRef: E, stacked: u };
171
171
  }
172
- const ot = {
172
+ const dt = {
173
173
  empty: "Sem dados",
174
174
  error: "Não foi possível carregar",
175
175
  loading: "Carregando...",
176
176
  unconfigured: "Widget não configurado"
177
177
  };
178
- function B({ kind: e, message: t }) {
179
- return /* @__PURE__ */ r("div", { className: `widget__state widget__state--${e}`, role: e === "error" ? "alert" : void 0, children: t || ot[e] });
178
+ function re({ kind: e, message: t }) {
179
+ return /* @__PURE__ */ a("div", { className: `widget__state widget__state--${e}`, role: e === "error" ? "alert" : void 0, children: t || dt[e] });
180
180
  }
181
- function P({ name: e, title: t, state: n, stateMessage: a, toolbar: l, children: s }) {
182
- return /* @__PURE__ */ b("div", { className: `widget widget-${e}`, children: [
183
- t && /* @__PURE__ */ r("span", { className: "widget__title", children: t }),
184
- l,
185
- n ? /* @__PURE__ */ r(B, { kind: n, message: a }) : s
181
+ function z({ name: e, title: t, state: r, stateMessage: n, toolbar: s, children: l }) {
182
+ return /* @__PURE__ */ _("div", { className: `widget widget-${e}`, children: [
183
+ t && /* @__PURE__ */ a("span", { className: "widget__title", children: t }),
184
+ s,
185
+ r ? /* @__PURE__ */ a(re, { kind: r, message: n }) : l
186
186
  ] });
187
187
  }
188
- const ct = { up: "↑", down: "↓" };
189
- function Re(e) {
188
+ const ut = { up: "↑", down: "↓" };
189
+ function Ae(e) {
190
190
  return Array.isArray(e) ? e.filter(
191
191
  (t) => t && t.status === "ok" && t.formatted && t.formatted !== "-"
192
192
  ) : [];
193
193
  }
194
- function dt({ comparison: e, primary: t }) {
195
- const n = e.sentiment ?? "neutral", a = ct[e.trend ?? ""] ?? "";
196
- return /* @__PURE__ */ b("div", { className: `widget-kpi__trend widget-kpi__trend--${n}${t ? "" : " widget-kpi__trend--muted"}`, children: [
197
- /* @__PURE__ */ b("span", { className: "widget-kpi__variance", children: [
198
- a,
194
+ function mt({ comparison: e, primary: t }) {
195
+ const r = e.sentiment ?? "neutral", n = ut[e.trend ?? ""] ?? "";
196
+ return /* @__PURE__ */ _("div", { className: `widget-kpi__trend widget-kpi__trend--${r}${t ? "" : " widget-kpi__trend--muted"}`, children: [
197
+ /* @__PURE__ */ _("span", { className: "widget-kpi__variance", children: [
198
+ n,
199
199
  " ",
200
200
  e.formatted
201
201
  ] }),
202
- e.label && /* @__PURE__ */ r("span", { className: "widget-kpi__trend-label", children: e.label })
202
+ e.label && /* @__PURE__ */ a("span", { className: "widget-kpi__trend-label", children: e.label })
203
203
  ] });
204
204
  }
205
- function ut({ data: e, label: t }) {
206
- const n = t || String(e.label || ""), a = String(e.formatted || "-"), l = Re(e.comparisons);
207
- return /* @__PURE__ */ b(P, { name: "kpi", title: n, children: [
208
- /* @__PURE__ */ r("span", { className: "widget-kpi__value", children: a }),
209
- l.map((s, c) => /* @__PURE__ */ r(dt, { comparison: s, primary: c === 0 }, s.id || c))
205
+ function ht({ data: e, label: t }) {
206
+ const r = t || String(e.label || ""), n = String(e.formatted || "-"), s = Ae(e.comparisons);
207
+ return /* @__PURE__ */ _(z, { name: "kpi", title: r, children: [
208
+ /* @__PURE__ */ a("span", { className: "widget-kpi__value", children: n }),
209
+ s.map((l, i) => /* @__PURE__ */ a(mt, { comparison: l, primary: i === 0 }, l.id || i))
210
210
  ] });
211
211
  }
212
- const mt = "var(--bg-elevated)", ht = [
212
+ const ft = "var(--bg-elevated)", gt = [
213
213
  [1, "var(--color-success)"],
214
214
  [0.7, ""],
215
215
  // vazio = cor da serie 1 (destaque do dashboard)
216
216
  [0.4, "var(--color-warning)"],
217
217
  [0, "var(--color-error)"]
218
218
  ];
219
- function le(e, t, n, a) {
220
- if (a <= 0) return "";
221
- if (a >= 1)
222
- return `M ${e - n} ${t} A ${n} ${n} 0 0 1 ${e} ${t - n} A ${n} ${n} 0 0 1 ${e + n} ${t}`;
223
- const l = a * Math.PI;
224
- return `M ${e - n} ${t} A ${n} ${n} 0 0 1 ${e - n * Math.cos(l)} ${t - n * Math.sin(l)}`;
219
+ function de(e, t, r, n) {
220
+ if (n <= 0) return "";
221
+ if (n >= 1)
222
+ return `M ${e - r} ${t} A ${r} ${r} 0 0 1 ${e} ${t - r} A ${r} ${r} 0 0 1 ${e + r} ${t}`;
223
+ const s = n * Math.PI;
224
+ return `M ${e - r} ${t} A ${r} ${r} 0 0 1 ${e - r * Math.cos(s)} ${t - r * Math.sin(s)}`;
225
225
  }
226
- function ft({ data: e, palette: t, label: n }) {
227
- 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 || fe(e.value, s)), i = String(e.formatted || "-"), m = Re(e.comparisons), [o, ...h] = m, d = String((o == null ? void 0 : o.baseline_formatted) || "-"), f = (o == null ? void 0 : o.label) ?? null, p = l >= 1, v = Math.min(Math.max(l, 0), 1), S = ht.find(([T]) => l >= T), k = (S == null ? void 0 : S[1]) || t[0] || "var(--color-info)", A = 50, y = 50, w = 44, N = 10;
228
- return /* @__PURE__ */ r(P, { name: "gauge", title: a, children: /* @__PURE__ */ b("div", { className: "widget-gauge__chart", children: [
229
- /* @__PURE__ */ b("svg", { viewBox: "0 0 100 56", preserveAspectRatio: "xMidYMax meet", role: "img", "aria-label": `${i} da meta`, children: [
230
- /* @__PURE__ */ r("path", { d: le(A, y, w, 1), fill: "none", stroke: mt, strokeWidth: N, strokeLinecap: "butt" }),
231
- v > 0 && /* @__PURE__ */ r("path", { d: le(A, y, w, v), fill: "none", stroke: k, strokeWidth: N, strokeLinecap: "butt" })
226
+ function pt({ data: e, palette: t, label: r }) {
227
+ const n = r || String(e.label || ""), s = typeof e.ratio == "number" ? e.ratio : 0, l = typeof e.format == "string" ? e.format : void 0, i = String(e.value_formatted || _e(e.value, l)), o = String(e.formatted || "-"), p = Ae(e.comparisons), [c, ...h] = p, d = String((c == null ? void 0 : c.baseline_formatted) || "-"), u = (c == null ? void 0 : c.label) ?? null, m = s >= 1, b = Math.min(Math.max(s, 0), 1), y = gt.find(([M]) => s >= M), N = (y == null ? void 0 : y[1]) || t[0] || "var(--color-info)", A = 50, k = 50, S = 44, C = 10;
228
+ return /* @__PURE__ */ a(z, { name: "gauge", title: n, children: /* @__PURE__ */ _("div", { className: "widget-gauge__chart", children: [
229
+ /* @__PURE__ */ _("svg", { viewBox: "0 0 100 56", preserveAspectRatio: "xMidYMax meet", role: "img", "aria-label": `${o} da meta`, children: [
230
+ /* @__PURE__ */ a("path", { d: de(A, k, S, 1), fill: "none", stroke: ft, strokeWidth: C, strokeLinecap: "butt" }),
231
+ b > 0 && /* @__PURE__ */ a("path", { d: de(A, k, S, b), fill: "none", stroke: N, strokeWidth: C, strokeLinecap: "butt" })
232
232
  ] }),
233
- /* @__PURE__ */ b("div", { className: "widget-gauge__center", children: [
234
- /* @__PURE__ */ r("span", { className: "widget-gauge__percent", children: i }),
235
- /* @__PURE__ */ b("span", { className: "widget-gauge__comparison", children: [
236
- c,
233
+ /* @__PURE__ */ _("div", { className: "widget-gauge__center", children: [
234
+ /* @__PURE__ */ a("span", { className: "widget-gauge__percent", children: o }),
235
+ /* @__PURE__ */ _("span", { className: "widget-gauge__comparison", children: [
236
+ i,
237
237
  " / ",
238
238
  d
239
239
  ] }),
240
- p && /* @__PURE__ */ r("span", { className: "widget-gauge__badge", children: f || "Meta batida" }),
241
- !p && f && /* @__PURE__ */ r("span", { className: "widget-gauge__comparison", children: f }),
242
- h.map((T, x) => /* @__PURE__ */ b("span", { className: "widget-gauge__comparison", children: [
243
- T.formatted,
240
+ m && /* @__PURE__ */ a("span", { className: "widget-gauge__badge", children: u || "Meta batida" }),
241
+ !m && u && /* @__PURE__ */ a("span", { className: "widget-gauge__comparison", children: u }),
242
+ h.map((M, E) => /* @__PURE__ */ _("span", { className: "widget-gauge__comparison", children: [
243
+ M.formatted,
244
244
  " ",
245
- T.label
246
- ] }, T.id || x))
245
+ M.label
246
+ ] }, M.id || E))
247
247
  ] })
248
248
  ] }) });
249
249
  }
250
- function X(e) {
251
- const [t, n] = M({ width: 0, height: 0 });
252
- return W(() => {
253
- const a = e.current;
254
- if (!a) return;
255
- const l = new ResizeObserver(([s]) => {
256
- const { width: c, height: i } = s.contentRect;
257
- n(
258
- (m) => m.width !== Math.floor(c) || m.height !== Math.floor(i) ? { width: Math.floor(c), height: Math.floor(i) } : m
250
+ function ne(e) {
251
+ const [t, r] = F({ width: 0, height: 0 });
252
+ return H(() => {
253
+ const n = e.current;
254
+ if (!n) return;
255
+ const s = new ResizeObserver(([l]) => {
256
+ const { width: i, height: o } = l.contentRect;
257
+ r(
258
+ (p) => p.width !== Math.floor(i) || p.height !== Math.floor(o) ? { width: Math.floor(i), height: Math.floor(o) } : p
259
259
  );
260
260
  });
261
- return l.observe(a), () => l.disconnect();
261
+ return s.observe(n), () => s.disconnect();
262
262
  }, [e]), t;
263
263
  }
264
- const se = { fontSize: 10, fill: "var(--text-muted)" }, gt = "var(--bg-elevated)", _t = {
264
+ const ue = { fontSize: 10, fill: "var(--text-muted)" }, _t = "var(--bg-elevated)", bt = {
265
265
  backgroundColor: "var(--bg-elevated)",
266
266
  border: "1px solid var(--bg-paper)",
267
267
  borderRadius: "6px",
268
268
  color: "var(--text-primary)"
269
- }, pt = {
269
+ }, vt = {
270
270
  color: "var(--text-primary)",
271
271
  fontWeight: 600
272
272
  };
273
- function bt(e, t) {
274
- var l;
275
- const n = Array.isArray(t) ? t[0] : void 0, a = (l = n == null ? void 0 : n.payload) == null ? void 0 : l.tooltipLabel;
276
- return typeof a == "string" && a ? a : String(e ?? "");
273
+ function wt(e, t) {
274
+ var s;
275
+ const r = Array.isArray(t) ? t[0] : void 0, n = (s = r == null ? void 0 : r.payload) == null ? void 0 : s.tooltipLabel;
276
+ return typeof n == "string" && n ? n : String(e ?? "");
277
277
  }
278
- function G({ Chart: e, chartData: t, xKey: n, series: a, palette: l, renderSeries: s, width: c, height: i }) {
279
- return /* @__PURE__ */ b(e, { data: t, width: c, height: i, children: [
280
- /* @__PURE__ */ r(we, { strokeDasharray: "3 3", stroke: gt }),
281
- /* @__PURE__ */ r(ye, { dataKey: n, tick: se }),
282
- /* @__PURE__ */ r(Ne, { tick: se }),
283
- /* @__PURE__ */ r(
284
- U,
278
+ function Q({ Chart: e, chartData: t, xKey: r, series: n, palette: s, renderSeries: l, width: i, height: o }) {
279
+ return /* @__PURE__ */ _(e, { data: t, width: i, height: o, children: [
280
+ /* @__PURE__ */ a(Se, { strokeDasharray: "3 3", stroke: _t }),
281
+ /* @__PURE__ */ a(ke, { dataKey: r, tick: ue }),
282
+ /* @__PURE__ */ a(Ce, { tick: ue }),
283
+ /* @__PURE__ */ a(
284
+ ee,
285
285
  {
286
- contentStyle: _t,
287
- labelStyle: pt,
288
- labelFormatter: bt,
286
+ contentStyle: bt,
287
+ labelStyle: vt,
288
+ labelFormatter: wt,
289
289
  cursor: { fill: "var(--bg-paper)", opacity: 0.3 }
290
290
  }
291
291
  ),
292
- a.length > 1 && /* @__PURE__ */ r(Ze, {}),
293
- a.map((m, o) => s(m, l[o % l.length], o))
292
+ n.length > 1 && /* @__PURE__ */ a(et, {}),
293
+ n.map((p, c) => l(p, s[c % s.length], c))
294
294
  ] });
295
295
  }
296
- function vt({ data: e, palette: t, label: n }) {
297
- const a = String(e.chartType || "bar"), l = n || String(e.label || ""), s = String(e.xKey || "label"), c = e.series || [], i = e.data || [], m = $(null), { width: o, height: h } = X(m), d = () => {
298
- if (o <= 0 || h <= 0) return null;
299
- const f = { chartData: i, xKey: s, series: c, palette: t, width: o, height: h };
300
- return a === "line" ? /* @__PURE__ */ r(G, { ...f, Chart: qe, renderSeries: (p, v) => /* @__PURE__ */ r(
301
- Be,
296
+ function yt({ data: e, palette: t, label: r }) {
297
+ const n = String(e.chartType || "bar"), s = r || String(e.label || ""), l = String(e.xKey || "label"), i = e.series || [], o = e.data || [], p = $(null), { width: c, height: h } = ne(p), d = () => {
298
+ if (c <= 0 || h <= 0) return null;
299
+ const u = { chartData: o, xKey: l, series: i, palette: t, width: c, height: h };
300
+ return n === "line" ? /* @__PURE__ */ a(Q, { ...u, Chart: Xe, renderSeries: (m, b) => /* @__PURE__ */ a(
301
+ Qe,
302
302
  {
303
303
  type: "monotone",
304
- dataKey: p.key,
305
- name: p.label,
306
- stroke: v,
304
+ dataKey: m.key,
305
+ name: m.label,
306
+ stroke: b,
307
307
  strokeWidth: 2,
308
- dot: i.length <= 31
308
+ dot: o.length <= 31
309
309
  },
310
- p.key
311
- ) }) : a === "area" ? /* @__PURE__ */ r(G, { ...f, Chart: Xe, renderSeries: (p, v) => /* @__PURE__ */ r(
312
- Qe,
310
+ m.key
311
+ ) }) : n === "area" ? /* @__PURE__ */ a(Q, { ...u, Chart: Ze, renderSeries: (m, b) => /* @__PURE__ */ a(
312
+ Je,
313
313
  {
314
314
  type: "monotone",
315
- dataKey: p.key,
316
- name: p.label,
317
- fill: v,
318
- stroke: v,
315
+ dataKey: m.key,
316
+ name: m.label,
317
+ fill: b,
318
+ stroke: b,
319
319
  fillOpacity: 0.3
320
320
  },
321
- p.key
322
- ) }) : /* @__PURE__ */ r(G, { ...f, Chart: ve, renderSeries: (p, v) => /* @__PURE__ */ r(
323
- K,
321
+ m.key
322
+ ) }) : /* @__PURE__ */ a(Q, { ...u, Chart: Ne, renderSeries: (m, b) => /* @__PURE__ */ a(
323
+ J,
324
324
  {
325
- dataKey: p.key,
326
- name: p.label,
327
- fill: v,
325
+ dataKey: m.key,
326
+ name: m.label,
327
+ fill: b,
328
328
  radius: [3, 3, 0, 0]
329
329
  },
330
- p.key
330
+ m.key
331
331
  ) });
332
332
  };
333
- return /* @__PURE__ */ r(P, { name: "chart", title: l, children: /* @__PURE__ */ r("div", { ref: m, className: "widget-chart__container", children: i.length === 0 ? /* @__PURE__ */ r(B, { kind: "empty" }) : d() }) });
333
+ return /* @__PURE__ */ a(z, { name: "chart", title: s, children: /* @__PURE__ */ a("div", { ref: p, className: "widget-chart__container", children: o.length === 0 ? /* @__PURE__ */ a(re, { kind: "empty" }) : d() }) });
334
334
  }
335
- const ie = { fontSize: 10, fill: "var(--text-muted)" }, wt = "var(--bg-elevated)", yt = { fill: "var(--bg-paper)", opacity: 0.3 };
336
- function Nt(e) {
335
+ const me = { fontSize: 10, fill: "var(--text-muted)" }, Nt = "var(--bg-elevated)", St = { fill: "var(--bg-paper)", opacity: 0.3 };
336
+ function kt(e) {
337
337
  return e.kind === "anchor" ? "var(--color-accent)" : e.kind === "residual" ? "var(--color-warning)" : e.value < 0 ? "var(--color-error)" : "var(--color-success)";
338
338
  }
339
- function oe({ active: e, payload: t }) {
340
- var a;
341
- const n = e ? (a = t == null ? void 0 : t[0]) == null ? void 0 : a.payload : void 0;
342
- return n ? /* @__PURE__ */ b("div", { className: "widget-composition__tooltip", children: [
343
- /* @__PURE__ */ r("span", { className: "widget-composition__tooltip-label", children: n.label }),
344
- /* @__PURE__ */ r("span", { className: "widget-composition__tooltip-value", children: n.formatted })
339
+ function he({ active: e, payload: t }) {
340
+ var n;
341
+ const r = e ? (n = t == null ? void 0 : t[0]) == null ? void 0 : n.payload : void 0;
342
+ return r ? /* @__PURE__ */ _("div", { className: "widget-composition__tooltip", children: [
343
+ /* @__PURE__ */ a("span", { className: "widget-composition__tooltip-label", children: r.label }),
344
+ /* @__PURE__ */ a("span", { className: "widget-composition__tooltip-value", children: r.formatted })
345
345
  ] }) : null;
346
346
  }
347
- function St({ data: e, palette: t, label: n }) {
348
- const a = n || String(e.label || ""), l = String(e.display || "pie"), s = e.data || [], c = typeof e.format == "string" ? e.format : void 0, i = $(null), { width: m, height: o } = X(i), h = () => /* @__PURE__ */ b(ve, { data: s, width: m, height: o, children: [
349
- /* @__PURE__ */ r(we, { strokeDasharray: "3 3", stroke: wt }),
350
- /* @__PURE__ */ r(ye, { dataKey: "label", tick: ie, interval: 0 }),
351
- /* @__PURE__ */ r(Ne, { tick: ie, tickFormatter: (f) => fe(f, c) }),
352
- /* @__PURE__ */ r(U, { content: /* @__PURE__ */ r(oe, {}), cursor: yt }),
353
- /* @__PURE__ */ r(K, { dataKey: "base", stackId: "bridge", fill: "none", fillOpacity: 0, isAnimationActive: !1 }),
354
- /* @__PURE__ */ r(K, { dataKey: "span", stackId: "bridge", radius: [3, 3, 0, 0], children: s.map((f, p) => /* @__PURE__ */ r(ae, { fill: Nt(f) }, p)) })
355
- ] }), d = () => /* @__PURE__ */ b(Je, { width: m, height: o, children: [
356
- /* @__PURE__ */ r(
357
- et,
347
+ function Ct({ data: e, palette: t, label: r }) {
348
+ const n = r || String(e.label || ""), s = String(e.display || "pie"), l = e.data || [], i = typeof e.format == "string" ? e.format : void 0, o = $(null), { width: p, height: c } = ne(o), h = () => /* @__PURE__ */ _(Ne, { data: l, width: p, height: c, children: [
349
+ /* @__PURE__ */ a(Se, { strokeDasharray: "3 3", stroke: Nt }),
350
+ /* @__PURE__ */ a(ke, { dataKey: "label", tick: me, interval: 0 }),
351
+ /* @__PURE__ */ a(Ce, { tick: me, tickFormatter: (u) => _e(u, i) }),
352
+ /* @__PURE__ */ a(ee, { content: /* @__PURE__ */ a(he, {}), cursor: St }),
353
+ /* @__PURE__ */ a(J, { dataKey: "base", stackId: "bridge", fill: "none", fillOpacity: 0, isAnimationActive: !1 }),
354
+ /* @__PURE__ */ a(J, { dataKey: "span", stackId: "bridge", radius: [3, 3, 0, 0], children: l.map((u, m) => /* @__PURE__ */ a(ce, { fill: kt(u) }, m)) })
355
+ ] }), d = () => /* @__PURE__ */ _(tt, { width: p, height: c, children: [
356
+ /* @__PURE__ */ a(
357
+ rt,
358
358
  {
359
- data: s,
359
+ data: l,
360
360
  dataKey: "value",
361
361
  nameKey: "label",
362
362
  cx: "50%",
363
363
  cy: "50%",
364
364
  outerRadius: "75%",
365
- label: ({ name: f, percent: p }) => `${f}: ${(p * 100).toFixed(0)}%`,
365
+ label: ({ name: u, percent: m }) => `${u}: ${(m * 100).toFixed(0)}%`,
366
366
  labelLine: !1,
367
- children: s.map((f, p) => /* @__PURE__ */ r(ae, { fill: t[p % t.length] }, p))
367
+ children: l.map((u, m) => /* @__PURE__ */ a(ce, { fill: t[m % t.length] }, m))
368
368
  }
369
369
  ),
370
- /* @__PURE__ */ r(U, { content: /* @__PURE__ */ r(oe, {}) })
370
+ /* @__PURE__ */ a(ee, { content: /* @__PURE__ */ a(he, {}) })
371
371
  ] });
372
- return /* @__PURE__ */ r(P, { name: "composition", title: a, children: /* @__PURE__ */ r("div", { ref: i, className: "widget-composition__container", children: s.length === 0 || m <= 0 || o <= 0 ? /* @__PURE__ */ r(B, { kind: "empty" }) : l === "bridge" ? h() : d() }) });
372
+ return /* @__PURE__ */ a(z, { name: "composition", title: n, children: /* @__PURE__ */ a("div", { ref: o, className: "widget-composition__container", children: l.length === 0 || p <= 0 || c <= 0 ? /* @__PURE__ */ a(re, { kind: "empty" }) : s === "bridge" ? h() : d() }) });
373
373
  }
374
- function kt(e, t) {
374
+ function Rt(e, t) {
375
375
  if (t !== "percentage") return "";
376
- const n = Number(e);
377
- return Number.isNaN(n) || n === 0 ? "" : n > 0 ? " widget-table__td--up" : " widget-table__td--down";
376
+ const r = Number(e);
377
+ return Number.isNaN(r) || r === 0 ? "" : r > 0 ? " widget-table__td--up" : " widget-table__td--down";
378
378
  }
379
- function Rt(e, t, n, a) {
380
- const l = (a == null ? void 0 : a.offsetHeight) ?? 0;
381
- if (e === 0 || t <= 0 || l <= 0) return e;
382
- const s = Math.floor((t - ((n == null ? void 0 : n.offsetHeight) ?? 0)) / l);
383
- return Math.max(0, Math.min(e, s));
379
+ function $t(e, t, r, n) {
380
+ const s = (n == null ? void 0 : n.offsetHeight) ?? 0;
381
+ if (e === 0 || t <= 0 || s <= 0) return e;
382
+ const l = Math.floor((t - ((r == null ? void 0 : r.offsetHeight) ?? 0)) / s);
383
+ return Math.max(0, Math.min(e, l));
384
384
  }
385
- function $t({ data: e, label: t }) {
386
- var f;
387
- const n = e.columns || [], a = e.rows || [], l = e.overflow === "clip", s = e.indexColumn === !0, c = t || String(e.label || ""), i = $(null), m = $(null), o = $(null), { height: h } = X(i), d = l ? a.slice(0, Rt(
388
- a.length,
385
+ function At({ data: e, label: t }) {
386
+ var u;
387
+ const r = e.columns || [], n = e.rows || [], s = e.overflow === "clip", l = e.indexColumn === !0, i = t || String(e.label || ""), o = $(null), p = $(null), c = $(null), { height: h } = ne(o), d = s ? n.slice(0, $t(
388
+ n.length,
389
389
  h,
390
- m.current,
391
- ((f = o.current) == null ? void 0 : f.firstElementChild) ?? null
392
- )) : a;
393
- return n.length === 0 ? /* @__PURE__ */ r(
394
- P,
390
+ p.current,
391
+ ((u = c.current) == null ? void 0 : u.firstElementChild) ?? null
392
+ )) : n;
393
+ return r.length === 0 ? /* @__PURE__ */ a(
394
+ z,
395
395
  {
396
396
  name: "table",
397
- title: c,
397
+ title: i,
398
398
  state: "unconfigured",
399
399
  stateMessage: "Configure as colunas da tabela."
400
400
  }
401
- ) : /* @__PURE__ */ r(P, { name: "table", title: c, children: /* @__PURE__ */ r(
401
+ ) : /* @__PURE__ */ a(z, { name: "table", title: i, children: /* @__PURE__ */ a(
402
402
  "div",
403
403
  {
404
- ref: i,
405
- className: `widget-table__scroll${l ? " widget-table__scroll--clip" : ""}`,
406
- children: /* @__PURE__ */ b(
404
+ ref: o,
405
+ className: `widget-table__scroll${s ? " widget-table__scroll--clip" : ""}`,
406
+ children: /* @__PURE__ */ _(
407
407
  "table",
408
408
  {
409
- className: `widget-table__table${l && d.length < a.length ? "" : " widget-table__table--fill"}`,
409
+ className: `widget-table__table${s && d.length < n.length ? "" : " widget-table__table--fill"}`,
410
410
  children: [
411
- /* @__PURE__ */ r("thead", { ref: m, children: /* @__PURE__ */ b("tr", { children: [
412
- s && /* @__PURE__ */ r("th", { className: "widget-table__th widget-table__th--index", children: "#" }),
413
- n.map((p) => /* @__PURE__ */ r(
411
+ /* @__PURE__ */ a("thead", { ref: p, children: /* @__PURE__ */ _("tr", { children: [
412
+ l && /* @__PURE__ */ a("th", { className: "widget-table__th widget-table__th--index", children: "#" }),
413
+ r.map((m) => /* @__PURE__ */ a(
414
414
  "th",
415
415
  {
416
- className: `widget-table__th${te(p.format) ? " widget-table__th--num" : ""}`,
417
- children: p.label || p.key
416
+ className: `widget-table__th${le(m.format) ? " widget-table__th--num" : ""}`,
417
+ children: m.label || m.key
418
418
  },
419
- p.key
419
+ m.key
420
420
  ))
421
421
  ] }) }),
422
- /* @__PURE__ */ r("tbody", { ref: o, children: d.length === 0 ? /* @__PURE__ */ r("tr", { children: /* @__PURE__ */ r(
422
+ /* @__PURE__ */ a("tbody", { ref: c, children: d.length === 0 ? /* @__PURE__ */ a("tr", { children: /* @__PURE__ */ a(
423
423
  "td",
424
424
  {
425
425
  className: "widget-table__td widget-table__td--placeholder",
426
- colSpan: n.length + (s ? 1 : 0),
426
+ colSpan: r.length + (l ? 1 : 0),
427
427
  children: "Sem dados"
428
428
  }
429
- ) }) : d.map((p, v) => /* @__PURE__ */ b("tr", { children: [
430
- s && /* @__PURE__ */ r("td", { className: "widget-table__td widget-table__td--index", children: v + 1 }),
431
- n.map((S) => {
432
- const k = p[S.key], A = te(S.format) ? " widget-table__td--num" : "";
433
- return /* @__PURE__ */ r("td", { className: `widget-table__td${A}${kt(k, S.format)}`, children: z(k, S.format) }, S.key);
429
+ ) }) : d.map((m, b) => /* @__PURE__ */ _("tr", { children: [
430
+ l && /* @__PURE__ */ a("td", { className: "widget-table__td widget-table__td--index", children: b + 1 }),
431
+ r.map((y) => {
432
+ const N = m[y.key], A = le(y.format) ? " widget-table__td--num" : "";
433
+ return /* @__PURE__ */ a("td", { className: `widget-table__td${A}${Rt(N, y.format)}`, children: U(N, y.format) }, y.key);
434
434
  })
435
- ] }, v)) })
435
+ ] }, b)) })
436
436
  ]
437
437
  }
438
438
  )
439
439
  }
440
440
  ) });
441
441
  }
442
- function $e({ mode: e, value: t, dateBounds: n, rangeUnit: a, onChange: l }) {
443
- return e === "yearly" ? /* @__PURE__ */ r(Ft, { value: t, dateBounds: n, onChange: l }) : e === "monthly" ? /* @__PURE__ */ r(Tt, { value: t, dateBounds: n, onChange: l }) : e === "weekly" ? /* @__PURE__ */ r(Mt, { value: t, dateBounds: n, onChange: l }) : a && a !== "day" ? /* @__PURE__ */ r(
444
- Ct,
442
+ function Te({ mode: e, value: t, dateBounds: r, rangeUnit: n, onChange: s }) {
443
+ return e === "yearly" ? /* @__PURE__ */ a(Mt, { value: t, dateBounds: r, onChange: s }) : e === "monthly" ? /* @__PURE__ */ a(Ft, { value: t, dateBounds: r, onChange: s }) : e === "weekly" ? /* @__PURE__ */ a(Et, { value: t, dateBounds: r, onChange: s }) : n && n !== "day" ? /* @__PURE__ */ a(
444
+ Tt,
445
445
  {
446
446
  value: t,
447
- dateBounds: n,
448
- unit: a,
449
- onChange: l
447
+ dateBounds: r,
448
+ unit: n,
449
+ onChange: s
450
450
  }
451
- ) : /* @__PURE__ */ r(At, { value: t, dateBounds: n, onChange: l });
451
+ ) : /* @__PURE__ */ a(xt, { value: t, dateBounds: r, onChange: s });
452
452
  }
453
- function Ct({ value: e, dateBounds: t, unit: n, onChange: a }) {
454
- const [l, s] = e ? e.split("|") : ["", ""], c = Le(n, t), i = (o) => {
453
+ function Tt({ value: e, dateBounds: t, unit: r, onChange: n }) {
454
+ const [s, l] = e ? e.split("|") : ["", ""], i = Le(r, t), o = (c) => {
455
455
  var h;
456
- return ((h = c.find((d) => o >= d.start && o <= d.end)) == null ? void 0 : h.key) ?? "";
457
- }, m = (o, h) => {
458
- const d = c.find((f) => f.key === h);
459
- d && a(o === "start" ? `${d.start}|${!s || s < d.end ? d.end : s}` : `${!l || l > d.start ? d.start : l}|${d.end}`);
456
+ return ((h = i.find((d) => c >= d.start && c <= d.end)) == null ? void 0 : h.key) ?? "";
457
+ }, p = (c, h) => {
458
+ const d = i.find((u) => u.key === h);
459
+ d && n(c === "start" ? `${d.start}|${!l || l < d.end ? d.end : l}` : `${!s || s > d.start ? d.start : s}|${d.end}`);
460
460
  };
461
- return /* @__PURE__ */ b("div", { className: "widget-filter__date-range widget-filter__date-range--period", children: [
462
- /* @__PURE__ */ b(
461
+ return /* @__PURE__ */ _("div", { className: "widget-filter__date-range widget-filter__date-range--period", children: [
462
+ /* @__PURE__ */ _(
463
463
  "select",
464
464
  {
465
465
  className: "widget-filter__select",
466
466
  "aria-label": "Período inicial",
467
- value: i(l),
468
- onChange: (o) => m("start", o.target.value),
467
+ value: o(s),
468
+ onChange: (c) => p("start", c.target.value),
469
469
  children: [
470
- !i(l) && /* @__PURE__ */ r("option", { value: "", children: "De..." }),
471
- c.map((o) => /* @__PURE__ */ r("option", { value: o.key, children: o.label }, o.key))
470
+ !o(s) && /* @__PURE__ */ a("option", { value: "", children: "De..." }),
471
+ i.map((c) => /* @__PURE__ */ a("option", { value: c.key, children: c.label }, c.key))
472
472
  ]
473
473
  }
474
474
  ),
475
- /* @__PURE__ */ b(
475
+ /* @__PURE__ */ _(
476
476
  "select",
477
477
  {
478
478
  className: "widget-filter__select",
479
479
  "aria-label": "Período final",
480
- value: i(s),
481
- onChange: (o) => m("end", o.target.value),
480
+ value: o(l),
481
+ onChange: (c) => p("end", c.target.value),
482
482
  children: [
483
- !i(s) && /* @__PURE__ */ r("option", { value: "", children: "Até..." }),
484
- c.map((o) => /* @__PURE__ */ r("option", { value: o.key, children: o.label }, o.key))
483
+ !o(l) && /* @__PURE__ */ a("option", { value: "", children: "Até..." }),
484
+ i.map((c) => /* @__PURE__ */ a("option", { value: c.key, children: c.label }, c.key))
485
485
  ]
486
486
  }
487
487
  )
488
488
  ] });
489
489
  }
490
- function At({ value: e, dateBounds: t, onChange: n }) {
491
- const [a, l] = e ? e.split("|") : ["", ""];
492
- return /* @__PURE__ */ b("div", { className: "widget-filter__date-range widget-filter__date-range--stacked", children: [
493
- /* @__PURE__ */ r(
494
- re,
490
+ function xt({ value: e, dateBounds: t, onChange: r }) {
491
+ const [n, s] = e ? e.split("|") : ["", ""];
492
+ return /* @__PURE__ */ _("div", { className: "widget-filter__date-range widget-filter__date-range--stacked", children: [
493
+ /* @__PURE__ */ a(
494
+ ie,
495
495
  {
496
- value: a,
496
+ value: n,
497
497
  minIso: t == null ? void 0 : t.min,
498
- maxIso: l || (t == null ? void 0 : t.max),
498
+ maxIso: s || (t == null ? void 0 : t.max),
499
499
  selectsStart: !0,
500
- startIso: a,
501
- endIso: l,
500
+ startIso: n,
501
+ endIso: s,
502
502
  placeholder: "Data inicial",
503
- onChange: (s) => n(`${s}|${l}`)
503
+ onChange: (l) => r(`${l}|${s}`)
504
504
  }
505
505
  ),
506
- /* @__PURE__ */ r(
507
- re,
506
+ /* @__PURE__ */ a(
507
+ ie,
508
508
  {
509
- value: l,
510
- minIso: a || (t == null ? void 0 : t.min),
509
+ value: s,
510
+ minIso: n || (t == null ? void 0 : t.min),
511
511
  maxIso: t == null ? void 0 : t.max,
512
512
  selectsEnd: !0,
513
- startIso: a,
514
- endIso: l,
513
+ startIso: n,
514
+ endIso: s,
515
515
  placeholder: "Data final",
516
- onChange: (s) => n(`${a}|${s}`)
516
+ onChange: (l) => r(`${n}|${l}`)
517
517
  }
518
518
  )
519
519
  ] });
520
520
  }
521
- function Ft({ value: e, dateBounds: t, onChange: n }) {
522
- const [a] = e ? e.split("|") : [""], l = xe(a), s = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = q(t), m = (o) => {
523
- const h = Pe(o);
524
- n(`${h.start}|${h.end}`);
521
+ function Mt({ value: e, dateBounds: t, onChange: r }) {
522
+ const [n] = e ? e.split("|") : [""], s = Ie(n), l = /* @__PURE__ */ new Date(), i = (s == null ? void 0 : s.year) ?? l.getFullYear(), o = te(t), p = (c) => {
523
+ const h = We(c);
524
+ r(`${h.start}|${h.end}`);
525
525
  };
526
- return /* @__PURE__ */ r("div", { className: "widget-filter__date-range widget-filter__date-range--year", children: /* @__PURE__ */ r(
526
+ return /* @__PURE__ */ a("div", { className: "widget-filter__date-range widget-filter__date-range--year", children: /* @__PURE__ */ a(
527
527
  "select",
528
528
  {
529
529
  className: "widget-filter__select",
530
- value: c,
531
- onChange: (o) => m(parseInt(o.target.value)),
532
- children: i.map((o) => /* @__PURE__ */ r("option", { value: o, children: o }, o))
530
+ value: i,
531
+ onChange: (c) => p(parseInt(c.target.value)),
532
+ children: o.map((c) => /* @__PURE__ */ a("option", { value: c, children: c }, c))
533
533
  }
534
534
  ) });
535
535
  }
536
- function Tt({ value: e, dateBounds: t, onChange: n }) {
537
- const [a] = e ? e.split("|") : [""], l = ge(a), s = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = (l == null ? void 0 : l.month) ?? s.getMonth() + 1, m = q(t), o = (h, d) => {
538
- const f = Oe(h, d);
539
- n(`${f.start}|${f.end}`);
536
+ function Ft({ value: e, dateBounds: t, onChange: r }) {
537
+ const [n] = e ? e.split("|") : [""], s = be(n), l = /* @__PURE__ */ new Date(), i = (s == null ? void 0 : s.year) ?? l.getFullYear(), o = (s == null ? void 0 : s.month) ?? l.getMonth() + 1, p = te(t), c = (h, d) => {
538
+ const u = Oe(h, d);
539
+ r(`${u.start}|${u.end}`);
540
540
  };
541
- return /* @__PURE__ */ b("div", { className: "widget-filter__date-range widget-filter__date-range--month", children: [
542
- /* @__PURE__ */ r(
541
+ return /* @__PURE__ */ _("div", { className: "widget-filter__date-range widget-filter__date-range--month", children: [
542
+ /* @__PURE__ */ a(
543
543
  "select",
544
544
  {
545
545
  className: "widget-filter__select",
546
- value: i,
547
- onChange: (h) => o(c, parseInt(h.target.value)),
548
- children: _e.map((h, d) => /* @__PURE__ */ r("option", { value: d + 1, children: h }, d + 1))
546
+ value: o,
547
+ onChange: (h) => c(i, parseInt(h.target.value)),
548
+ children: ve.map((h, d) => /* @__PURE__ */ a("option", { value: d + 1, children: h }, d + 1))
549
549
  }
550
550
  ),
551
- /* @__PURE__ */ r(
551
+ /* @__PURE__ */ a(
552
552
  "select",
553
553
  {
554
554
  className: "widget-filter__select",
555
- value: c,
556
- onChange: (h) => o(parseInt(h.target.value), i),
557
- children: m.map((h) => /* @__PURE__ */ r("option", { value: h, children: h }, h))
555
+ value: i,
556
+ onChange: (h) => c(parseInt(h.target.value), o),
557
+ children: p.map((h) => /* @__PURE__ */ a("option", { value: h, children: h }, h))
558
558
  }
559
559
  )
560
560
  ] });
561
561
  }
562
- function Mt({ value: e, dateBounds: t, onChange: n }) {
563
- const [a] = e ? e.split("|") : [""], l = ge(a), s = /* @__PURE__ */ new Date(), c = (l == null ? void 0 : l.year) ?? s.getFullYear(), i = (l == null ? void 0 : l.month) ?? s.getMonth() + 1, m = q(t), o = j(c, i), h = Ee(a, c, i) || 1;
564
- return /* @__PURE__ */ b("div", { className: "widget-filter__date-range widget-filter__date-range--week", children: [
565
- /* @__PURE__ */ r(
562
+ function Et({ value: e, dateBounds: t, onChange: r }) {
563
+ const [n] = e ? e.split("|") : [""], s = be(n), l = /* @__PURE__ */ new Date(), i = (s == null ? void 0 : s.year) ?? l.getFullYear(), o = (s == null ? void 0 : s.month) ?? l.getMonth() + 1, p = te(t), c = X(i, o), h = Pe(n, i, o) || 1;
564
+ return /* @__PURE__ */ _("div", { className: "widget-filter__date-range widget-filter__date-range--week", children: [
565
+ /* @__PURE__ */ a(
566
566
  "select",
567
567
  {
568
568
  className: "widget-filter__select",
569
- value: c,
569
+ value: i,
570
570
  onChange: (d) => {
571
- const f = parseInt(d.target.value), v = j(f, i)[0];
572
- v && n(`${v.start}|${v.end}`);
571
+ const u = parseInt(d.target.value), b = X(u, o)[0];
572
+ b && r(`${b.start}|${b.end}`);
573
573
  },
574
- children: m.map((d) => /* @__PURE__ */ r("option", { value: d, children: d }, d))
574
+ children: p.map((d) => /* @__PURE__ */ a("option", { value: d, children: d }, d))
575
575
  }
576
576
  ),
577
- /* @__PURE__ */ r(
577
+ /* @__PURE__ */ a(
578
578
  "select",
579
579
  {
580
580
  className: "widget-filter__select",
581
- value: i,
581
+ value: o,
582
582
  onChange: (d) => {
583
- const f = parseInt(d.target.value), v = j(c, f)[0];
584
- v && n(`${v.start}|${v.end}`);
583
+ const u = parseInt(d.target.value), b = X(i, u)[0];
584
+ b && r(`${b.start}|${b.end}`);
585
585
  },
586
- children: _e.map((d, f) => /* @__PURE__ */ r("option", { value: f + 1, children: d }, f + 1))
586
+ children: ve.map((d, u) => /* @__PURE__ */ a("option", { value: u + 1, children: d }, u + 1))
587
587
  }
588
588
  ),
589
- /* @__PURE__ */ r(
589
+ /* @__PURE__ */ a(
590
590
  "select",
591
591
  {
592
592
  className: "widget-filter__select",
593
593
  value: h,
594
594
  onChange: (d) => {
595
- const f = o[parseInt(d.target.value) - 1];
596
- f && n(`${f.start}|${f.end}`);
595
+ const u = c[parseInt(d.target.value) - 1];
596
+ u && r(`${u.start}|${u.end}`);
597
597
  },
598
- children: o.map((d) => /* @__PURE__ */ r("option", { value: d.index, children: d.label }, d.index))
598
+ children: c.map((d) => /* @__PURE__ */ a("option", { value: d.index, children: d.label }, d.index))
599
599
  }
600
600
  )
601
601
  ] });
602
602
  }
603
- function xt({ config: e, value: t, options: n = [], dateBounds: a, onChange: l }) {
604
- const s = e.filterType || "select", c = e.label || "Filtro", i = e.dateFilterMode || "range";
605
- return /* @__PURE__ */ b("div", { className: "widget-filter", children: [
606
- /* @__PURE__ */ r("label", { className: "widget-filter__label", children: c }),
607
- s === "date_range" ? /* @__PURE__ */ r(
608
- $e,
603
+ function It({ config: e, value: t, options: r = [], dateBounds: n, onChange: s }) {
604
+ const l = e.filterType || "select", i = e.label || "Filtro", o = e.dateFilterMode || "range";
605
+ return /* @__PURE__ */ _("div", { className: "widget-filter", children: [
606
+ /* @__PURE__ */ a("label", { className: "widget-filter__label", children: i }),
607
+ l === "date_range" ? /* @__PURE__ */ a(
608
+ Te,
609
609
  {
610
- mode: i,
610
+ mode: o,
611
611
  value: t,
612
- dateBounds: a,
613
- onChange: l
612
+ dateBounds: n,
613
+ onChange: s
614
614
  }
615
- ) : /* @__PURE__ */ r(
616
- Et,
615
+ ) : /* @__PURE__ */ a(
616
+ Pt,
617
617
  {
618
618
  value: t,
619
- options: n,
620
- multi: s === "multi_select",
619
+ options: r,
620
+ multi: l === "multi_select",
621
621
  searchable: e.searchable || !1,
622
- onChange: l
622
+ onChange: s
623
623
  }
624
624
  )
625
625
  ] });
626
626
  }
627
- function Et({ value: e, options: t, multi: n, searchable: a, onChange: l }) {
628
- if (a)
629
- return /* @__PURE__ */ r(
630
- pe,
627
+ function Pt({ value: e, options: t, multi: r, searchable: n, onChange: s }) {
628
+ if (n)
629
+ return /* @__PURE__ */ a(
630
+ we,
631
631
  {
632
632
  value: e,
633
633
  options: t,
634
- multi: n,
635
- onChange: l
634
+ multi: r,
635
+ onChange: s
636
636
  }
637
637
  );
638
- if (n) {
639
- const s = e ? e.split(V) : [], c = (i) => {
640
- const m = s.includes(i) ? s.filter((o) => o !== i) : [...s, i];
641
- l(m.join(V));
638
+ if (r) {
639
+ const l = e ? e.split(Z) : [], i = (o) => {
640
+ const p = l.includes(o) ? l.filter((c) => c !== o) : [...l, o];
641
+ s(p.join(Z));
642
642
  };
643
- return /* @__PURE__ */ b("div", { className: "widget-filter__multi", children: [
644
- s.length > 0 && /* @__PURE__ */ r(
643
+ return /* @__PURE__ */ _("div", { className: "widget-filter__multi", children: [
644
+ l.length > 0 && /* @__PURE__ */ a(
645
645
  "button",
646
646
  {
647
647
  type: "button",
648
648
  className: "widget-filter__multi-clear",
649
- onClick: () => l(""),
649
+ onClick: () => s(""),
650
650
  children: "Limpar filtro"
651
651
  }
652
652
  ),
653
- t.map((i) => /* @__PURE__ */ b("label", { className: "widget-filter__multi-option", children: [
654
- /* @__PURE__ */ r(
653
+ t.map((o) => /* @__PURE__ */ _("label", { className: "widget-filter__multi-option", children: [
654
+ /* @__PURE__ */ a(
655
655
  "input",
656
656
  {
657
657
  type: "checkbox",
658
- checked: s.includes(i),
659
- onChange: () => c(i)
658
+ checked: l.includes(o),
659
+ onChange: () => i(o)
660
660
  }
661
661
  ),
662
- i
663
- ] }, i))
662
+ o
663
+ ] }, o))
664
664
  ] });
665
665
  }
666
- return /* @__PURE__ */ b(
666
+ return /* @__PURE__ */ _(
667
667
  "select",
668
668
  {
669
669
  className: "widget-filter__select",
670
670
  value: e,
671
- onChange: (s) => l(s.target.value),
671
+ onChange: (l) => s(l.target.value),
672
672
  children: [
673
- /* @__PURE__ */ r("option", { value: "", children: "Todos" }),
674
- t.map((s) => /* @__PURE__ */ r("option", { value: s, children: s }, s))
673
+ /* @__PURE__ */ a("option", { value: "", children: "Todos" }),
674
+ t.map((l) => /* @__PURE__ */ a("option", { value: l, children: l }, l))
675
675
  ]
676
676
  }
677
677
  );
@@ -680,281 +680,336 @@ const Lt = {
680
680
  currency: "R$",
681
681
  percentage: "%"
682
682
  };
683
- function Ot({ config: e, value: t, onChange: n }) {
684
- const a = e.label || "Variavel", l = e.locked || !1, s = e.variableFormat || "number", c = Lt[s] || "";
685
- return /* @__PURE__ */ b("div", { className: `widget-variable ${l ? "widget-variable--locked" : ""}`, children: [
686
- /* @__PURE__ */ r("label", { className: "widget-variable__label", children: a }),
687
- /* @__PURE__ */ b("div", { className: "widget-variable__input-wrapper", children: [
688
- /* @__PURE__ */ r(
683
+ function Ot({ config: e, value: t, onChange: r }) {
684
+ const n = e.label || "Variavel", s = e.locked || !1, l = e.variableFormat || "number", i = Lt[l] || "";
685
+ return /* @__PURE__ */ _("div", { className: `widget-variable ${s ? "widget-variable--locked" : ""}`, children: [
686
+ /* @__PURE__ */ a("label", { className: "widget-variable__label", children: n }),
687
+ /* @__PURE__ */ _("div", { className: "widget-variable__input-wrapper", children: [
688
+ /* @__PURE__ */ a(
689
689
  "input",
690
690
  {
691
691
  className: "widget-variable__input",
692
692
  type: "number",
693
693
  value: t,
694
- onChange: (i) => n(parseFloat(i.target.value) || 0),
695
- disabled: l,
696
- step: s === "integer" ? 1 : 0.01
694
+ onChange: (o) => r(parseFloat(o.target.value) || 0),
695
+ disabled: s,
696
+ step: l === "integer" ? 1 : 0.01
697
697
  }
698
698
  ),
699
- c && /* @__PURE__ */ r("span", { className: "widget-variable__suffix", children: c })
699
+ i && /* @__PURE__ */ a("span", { className: "widget-variable__suffix", children: i })
700
700
  ] }),
701
- l && /* @__PURE__ */ r("span", { className: "widget-variable__lock-icon", title: "Bloqueado", children: "🔒" })
701
+ s && /* @__PURE__ */ a("span", { className: "widget-variable__lock-icon", title: "Bloqueado", children: "🔒" })
702
702
  ] });
703
703
  }
704
- function Pt({ config: e, palette: t, onChange: n }) {
705
- const a = e.label || "Cores", l = e.locked || !1;
706
- return /* @__PURE__ */ b("div", { className: `widget-palette ${l ? "widget-palette--locked" : ""}`, children: [
707
- /* @__PURE__ */ r("label", { className: "widget-palette__label", children: a }),
708
- /* @__PURE__ */ r(Ie, { selected: t, onSelect: n, customMode: !0, disabled: l }),
709
- l && /* @__PURE__ */ r("span", { className: "widget-palette__lock-icon", title: "Bloqueado", children: "🔒" })
704
+ function Wt({ config: e, palette: t, onChange: r }) {
705
+ const n = e.label || "Cores", s = e.locked || !1;
706
+ return /* @__PURE__ */ _("div", { className: `widget-palette ${s ? "widget-palette--locked" : ""}`, children: [
707
+ /* @__PURE__ */ a("label", { className: "widget-palette__label", children: n }),
708
+ /* @__PURE__ */ a(je, { selected: t, onSelect: r, customMode: !0, disabled: s }),
709
+ s && /* @__PURE__ */ a("span", { className: "widget-palette__lock-icon", title: "Bloqueado", children: "🔒" })
710
710
  ] });
711
711
  }
712
- const It = {
712
+ const jt = {
713
713
  failed_to_compute: "Não foi possível calcular este widget"
714
714
  };
715
- function Wt({
715
+ function zt({
716
716
  type: e,
717
717
  computed: t,
718
- palette: n,
719
- config: a,
720
- filterValue: l,
721
- filterOptions: s,
722
- dateBounds: c,
723
- onFilterChange: i,
724
- variableValue: m,
725
- onVariableChange: o,
718
+ palette: r,
719
+ config: n,
720
+ filterValue: s,
721
+ filterOptions: l,
722
+ dateBounds: i,
723
+ onFilterChange: o,
724
+ variableValue: p,
725
+ onVariableChange: c,
726
726
  onPaletteChange: h
727
727
  }) {
728
728
  if (t.error)
729
- return /* @__PURE__ */ r(
730
- P,
729
+ return /* @__PURE__ */ a(
730
+ z,
731
731
  {
732
732
  name: e.replace("_", "-"),
733
- title: a == null ? void 0 : a.label,
733
+ title: n == null ? void 0 : n.label,
734
734
  state: "error",
735
- stateMessage: It[String(t.error)]
735
+ stateMessage: jt[String(t.error)]
736
736
  }
737
737
  );
738
- const d = We(n);
738
+ const d = ze(r);
739
739
  switch (e) {
740
740
  case "kpi_card":
741
- return /* @__PURE__ */ r(ut, { data: t, label: a == null ? void 0 : a.label });
741
+ return /* @__PURE__ */ a(ht, { data: t, label: n == null ? void 0 : n.label });
742
742
  case "gauge":
743
- return /* @__PURE__ */ r(ft, { data: t, palette: d, label: a == null ? void 0 : a.label });
743
+ return /* @__PURE__ */ a(pt, { data: t, palette: d, label: n == null ? void 0 : n.label });
744
744
  case "chart":
745
- return /* @__PURE__ */ r(vt, { data: t, palette: d, label: a == null ? void 0 : a.label });
745
+ return /* @__PURE__ */ a(yt, { data: t, palette: d, label: n == null ? void 0 : n.label });
746
746
  case "composition":
747
- return /* @__PURE__ */ r(St, { data: t, palette: d, label: a == null ? void 0 : a.label });
747
+ return /* @__PURE__ */ a(Ct, { data: t, palette: d, label: n == null ? void 0 : n.label });
748
748
  case "table":
749
- return /* @__PURE__ */ r($t, { data: t, label: a == null ? void 0 : a.label });
749
+ return /* @__PURE__ */ a(At, { data: t, label: n == null ? void 0 : n.label });
750
750
  case "filter":
751
- return a && i ? /* @__PURE__ */ r(
752
- xt,
751
+ return n && o ? /* @__PURE__ */ a(
752
+ It,
753
753
  {
754
- config: a,
755
- value: l || "",
756
- options: s,
757
- dateBounds: c,
758
- onChange: i
754
+ config: n,
755
+ value: s || "",
756
+ options: l,
757
+ dateBounds: i,
758
+ onChange: o
759
759
  }
760
760
  ) : null;
761
761
  case "variable": {
762
- const f = a;
763
- return f && o ? /* @__PURE__ */ r(
762
+ const u = n;
763
+ return u && c ? /* @__PURE__ */ a(
764
764
  Ot,
765
765
  {
766
- config: f,
767
- value: m ?? f.variableValue ?? 0,
768
- onChange: o
766
+ config: u,
767
+ value: p ?? u.variableValue ?? 0,
768
+ onChange: c
769
769
  }
770
770
  ) : null;
771
771
  }
772
772
  case "color_palette":
773
- return a && h ? /* @__PURE__ */ r(
774
- Pt,
773
+ return n && h ? /* @__PURE__ */ a(
774
+ Wt,
775
775
  {
776
- config: a,
777
- palette: n,
776
+ config: n,
777
+ palette: r,
778
778
  onChange: h
779
779
  }
780
780
  ) : null;
781
781
  default:
782
- return /* @__PURE__ */ r(P, { name: "unknown", state: "unconfigured" });
782
+ return /* @__PURE__ */ a(z, { name: "unknown", state: "unconfigured" });
783
783
  }
784
784
  }
785
- const Dt = Ae(Wt), zt = (e, t) => e.grid.y - t.grid.y || e.grid.x - t.grid.x, Ht = {}, ce = [];
786
- function ir({
785
+ const Dt = xe(zt), Ht = (e, t) => e.grid.y - t.grid.y || e.grid.x - t.grid.x, Gt = {}, fe = [];
786
+ function _r({
787
787
  token: e,
788
- cellAspect: t = Ge,
789
- stackBelow: n,
790
- onGeometryChange: a,
791
- silenceWarnings: l,
792
- className: s
788
+ cellAspect: t = Ye,
789
+ stackBelow: r,
790
+ onGeometryChange: n,
791
+ silenceWarnings: s,
792
+ className: l
793
793
  }) {
794
794
  const {
795
- layout: c,
796
- renderData: i,
797
- loading: m,
798
- error: o,
795
+ layout: i,
796
+ renderData: o,
797
+ loading: p,
798
+ error: c,
799
799
  filters: h,
800
800
  variables: d,
801
- palette: f,
802
- setFilter: p,
803
- setVariable: v,
804
- setPalette: S
805
- } = rt(e), { rootRef: k, gridRef: A, stacked: y } = it({
806
- columns: (c == null ? void 0 : c.gridColumns) ?? 0,
801
+ palette: u,
802
+ setFilter: m,
803
+ setVariable: b,
804
+ setPalette: y
805
+ } = at(e), { rootRef: N, gridRef: A, stacked: k } = ct({
806
+ columns: (i == null ? void 0 : i.gridColumns) ?? 0,
807
807
  cellAspect: t,
808
- stackBelow: n,
809
- onGeometryChange: a,
810
- silenceWarnings: l
811
- }), w = Y(() => {
812
- const u = (c == null ? void 0 : c.widgets) ?? [];
813
- return y ? [...u].sort(zt) : u;
814
- }, [c == null ? void 0 : c.widgets, y]), N = Y(() => {
815
- const u = {};
816
- for (const R of w)
817
- u[R.id] = {
818
- onFilter: (C) => p(R.id, C),
819
- onVariable: (C) => v(R.id, C)
808
+ stackBelow: r,
809
+ onGeometryChange: n,
810
+ silenceWarnings: s
811
+ }), S = O(() => {
812
+ const f = (i == null ? void 0 : i.widgets) ?? [];
813
+ return k ? [...f].sort(Ht) : f;
814
+ }, [i == null ? void 0 : i.widgets, k]), C = O(() => {
815
+ const f = {};
816
+ for (const R of S)
817
+ f[R.id] = {
818
+ onFilter: (T) => m(R.id, T),
819
+ onVariable: (T) => b(R.id, T)
820
820
  };
821
- return u;
822
- }, [w, p, v]), T = {
823
- "--dash-gap": `${ne}px`,
824
- "--dash-pad": `${je}px`
825
- }, x = ["preview-tab", s].filter(Boolean).join(" ");
826
- let _;
827
- if (o && !c)
828
- _ = /* @__PURE__ */ r("div", { className: "preview-tab__error", children: o });
829
- else if (!c)
830
- _ = /* @__PURE__ */ r("div", { className: "preview-tab__loading", children: "Carregando dashboard..." });
831
- else if (c.widgets.length === 0)
832
- _ = /* @__PURE__ */ r("div", { className: "preview-tab__empty", children: "Este dashboard nao possui widgets." });
821
+ return f;
822
+ }, [S, m, b]), M = {
823
+ "--dash-gap": `${oe}px`,
824
+ "--dash-pad": `${Ve}px`
825
+ }, E = ["preview-tab", l].filter(Boolean).join(" ");
826
+ let g;
827
+ if (c && !i)
828
+ g = /* @__PURE__ */ a("div", { className: "preview-tab__error", children: c });
829
+ else if (!i)
830
+ g = /* @__PURE__ */ a("div", { className: "preview-tab__loading", children: "Carregando dashboard..." });
831
+ else if (i.widgets.length === 0)
832
+ g = /* @__PURE__ */ a("div", { className: "preview-tab__empty", children: "Este dashboard nao possui widgets." });
833
833
  else {
834
- const u = (i == null ? void 0 : i.widgets) ?? {}, R = (i == null ? void 0 : i.date_bounds) ?? null, C = {
835
- "--dash-cols": c.gridColumns,
836
- "--dash-rows": c.gridRows,
837
- ...be(f)
838
- }, F = ["preview-tab__grid", y && "preview-tab__grid--stacked"].filter(Boolean).join(" ");
839
- _ = /* @__PURE__ */ b(he, { children: [
840
- o && !i && /* @__PURE__ */ r("div", { className: "preview-tab__error", children: o }),
841
- i && /* @__PURE__ */ r("div", { className: F, style: C, ref: A, children: w.map((g) => {
842
- var Q, Z;
843
- const I = De.has(g.type), L = u[g.id], O = y ? {
834
+ const f = (o == null ? void 0 : o.widgets) ?? {}, R = (o == null ? void 0 : o.date_bounds) ?? null, T = {
835
+ "--dash-cols": i.gridColumns,
836
+ "--dash-rows": i.gridRows,
837
+ ...ye(u)
838
+ }, x = ["preview-tab__grid", k && "preview-tab__grid--stacked"].filter(Boolean).join(" ");
839
+ g = /* @__PURE__ */ _(Y, { children: [
840
+ c && !o && /* @__PURE__ */ a("div", { className: "preview-tab__error", children: c }),
841
+ o && /* @__PURE__ */ a("div", { className: x, style: T, ref: A, children: S.map((w) => {
842
+ var V, v;
843
+ const D = De.has(w.type), P = f[w.id], L = k ? {
844
844
  gridColumn: 1,
845
- aspectRatio: `${He(g.grid.w, g.grid.h, t)}`,
846
- minHeight: `${ze(g.grid.h, Ye, ne, 0)}px`
845
+ aspectRatio: `${Ge(w.grid.w, w.grid.h, t)}`,
846
+ minHeight: `${He(w.grid.h, Ke, oe, 0)}px`
847
847
  } : {
848
- gridColumn: `${g.grid.x + 1} / span ${g.grid.w}`,
849
- gridRow: `${g.grid.y + 1} / span ${g.grid.h}`
850
- }, Ce = g.type === "variable" ? d[g.id] ?? (L == null ? void 0 : L.value) ?? g.config.variableValue ?? 0 : void 0;
851
- return /* @__PURE__ */ r(
848
+ gridColumn: `${w.grid.x + 1} / span ${w.grid.w}`,
849
+ gridRow: `${w.grid.y + 1} / span ${w.grid.h}`
850
+ }, G = w.type === "variable" ? d[w.id] ?? (P == null ? void 0 : P.value) ?? w.config.variableValue ?? 0 : void 0;
851
+ return /* @__PURE__ */ a(
852
852
  "div",
853
853
  {
854
- className: `preview-tab__widget ${I ? "preview-tab__widget--control" : ""}`,
855
- style: O,
856
- children: I || L ? /* @__PURE__ */ r(
854
+ className: `preview-tab__widget ${D ? "preview-tab__widget--control" : ""}`,
855
+ style: L,
856
+ children: D || P ? /* @__PURE__ */ a(
857
857
  Dt,
858
858
  {
859
- type: g.type,
860
- computed: L || Ht,
861
- palette: f,
862
- config: g.config,
863
- filterValue: h[g.id] || "",
859
+ type: w.type,
860
+ computed: P || Gt,
861
+ palette: u,
862
+ config: w.config,
863
+ filterValue: h[w.id] || "",
864
864
  filterOptions: (
865
865
  // Estruturais: vem do /layout (cacheavel), nao do /render —
866
866
  // recalcula-los a cada render custaria um DISTINCT por filtro.
867
- g.type === "filter" ? g.config.availableValues ?? ce : ce
867
+ w.type === "filter" ? w.config.availableValues ?? fe : fe
868
868
  ),
869
869
  dateBounds: R,
870
- onFilterChange: (Q = N[g.id]) == null ? void 0 : Q.onFilter,
871
- variableValue: Ce,
872
- onVariableChange: (Z = N[g.id]) == null ? void 0 : Z.onVariable,
873
- onPaletteChange: S
870
+ onFilterChange: (V = C[w.id]) == null ? void 0 : V.onFilter,
871
+ variableValue: G,
872
+ onVariableChange: (v = C[w.id]) == null ? void 0 : v.onVariable,
873
+ onPaletteChange: y
874
874
  }
875
- ) : /* @__PURE__ */ r("div", { className: "preview-tab__widget-loading", children: m ? "Carregando..." : "Sem dados" })
875
+ ) : /* @__PURE__ */ a("div", { className: "preview-tab__widget-loading", children: p ? "Carregando..." : "Sem dados" })
876
876
  },
877
- g.id
877
+ w.id
878
878
  );
879
879
  }) }),
880
- m && i && /* @__PURE__ */ r("div", { className: "preview-tab__recalculating", children: "Atualizando..." })
880
+ p && o && /* @__PURE__ */ a("div", { className: "preview-tab__recalculating", children: "Atualizando..." })
881
881
  ] });
882
882
  }
883
- return /* @__PURE__ */ r("div", { className: x, style: T, ref: k, children: _ });
883
+ return /* @__PURE__ */ a("div", { className: E, style: M, ref: N, children: g });
884
884
  }
885
- function jt(e, t) {
886
- const n = URL.createObjectURL(e), a = document.createElement("a");
887
- a.href = n, a.download = t, document.body.appendChild(a), a.click(), a.remove(), setTimeout(() => URL.revokeObjectURL(n), 0);
885
+ function Vt(e, t) {
886
+ const r = URL.createObjectURL(e), n = document.createElement("a");
887
+ n.href = r, n.download = t, document.body.appendChild(n), n.click(), n.remove(), setTimeout(() => URL.revokeObjectURL(r), 0);
888
888
  }
889
- const Gt = 768, Yt = 879;
890
- function Vt(e) {
889
+ const Yt = 768, Kt = 879;
890
+ function Ut(e) {
891
891
  return Array.from(e.normalize("NFD")).filter((t) => {
892
- const n = t.codePointAt(0) ?? 0;
893
- return n < Gt || n > Yt;
892
+ const r = t.codePointAt(0) ?? 0;
893
+ return r < Yt || r > Kt;
894
894
  }).join("");
895
895
  }
896
- function Kt(e, t) {
897
- return `${Vt(e).replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase() || "documento"}.${t}`;
896
+ function Bt(e, t) {
897
+ return `${Ut(e).replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase() || "documento"}.${t}`;
898
898
  }
899
- const Ut = 300;
900
- function qt(e) {
901
- const [t, n] = M(null), [a, l] = M(null), [s, c] = M({}), [i, m] = M(!0), [o, h] = M(null), [d, f] = M(!1), p = $(), v = $(!1), S = $(null), k = $(!1);
902
- W(() => {
903
- let w = !1;
904
- return v.current = !1, S.current = null, k.current = !1, Ve(e).then((N) => {
905
- w || n(N);
906
- }).catch((N) => {
907
- w || h(N.message);
899
+ const qt = 300;
900
+ function Xt(e) {
901
+ const [t, r] = F(null), [n, s] = F(null), [l, i] = F({}), [o, p] = F(!0), [c, h] = F(null), [d, u] = F(!1), m = $(), b = $(!1), y = $(null), N = $(!1);
902
+ H(() => {
903
+ let S = !1;
904
+ return b.current = !1, y.current = null, N.current = !1, Ue(e).then((C) => {
905
+ S || r(C);
906
+ }).catch((C) => {
907
+ S || h(C.message);
908
908
  }), () => {
909
- w = !0;
909
+ S = !0;
910
910
  };
911
- }, [e]), W(() => {
911
+ }, [e]), H(() => {
912
912
  if (!t) return;
913
- const w = D(s), N = H(w);
914
- if (N === S.current) return;
915
- p.current && clearTimeout(p.current);
916
- const T = k.current ? Ut : 0;
917
- return p.current = setTimeout(() => {
918
- m(!0), Ke(e, w).then((x) => {
919
- S.current = N, k.current = !0, l(x), !v.current && x.applied && (v.current = !0, c((_) => {
920
- const u = { ...ke(x.applied), ..._ };
921
- return Se(u, _) ? _ : (S.current = H(D(u)), u);
913
+ const S = K(l), C = B(S);
914
+ if (C === y.current) return;
915
+ m.current && clearTimeout(m.current);
916
+ const M = N.current ? qt : 0;
917
+ return m.current = setTimeout(() => {
918
+ p(!0), Be(e, S).then((E) => {
919
+ y.current = C, N.current = !0, s(E), !b.current && E.applied && (b.current = !0, i((g) => {
920
+ const f = { ...$e(E.applied), ...g };
921
+ return Re(f, g) ? g : (y.current = B(K(f)), f);
922
922
  })), h(null);
923
- }).catch((x) => h(x.message)).finally(() => m(!1));
924
- }, T), () => {
925
- p.current && clearTimeout(p.current);
923
+ }).catch((E) => h(E.message)).finally(() => p(!1));
924
+ }, M), () => {
925
+ m.current && clearTimeout(m.current);
926
926
  };
927
- }, [e, t, s]);
928
- const A = E((w, N) => {
929
- c((T) => ({ ...T, [w]: N }));
930
- }, []), y = E(() => {
931
- f(!0), Ue(e, D(s)).then((w) => {
932
- jt(w, Kt((t == null ? void 0 : t.name) ?? "demonstrativo", "pdf")), h(null);
933
- }).catch((w) => h(w.message)).finally(() => f(!1));
934
- }, [e, s, t == null ? void 0 : t.name]);
927
+ }, [e, t, l]);
928
+ const A = I((S, C) => {
929
+ i((M) => ({ ...M, [S]: C }));
930
+ }, []), k = I(() => {
931
+ u(!0), qe(e, K(l)).then((S) => {
932
+ Vt(S, Bt((t == null ? void 0 : t.name) ?? "demonstrativo", "pdf")), h(null);
933
+ }).catch((S) => h(S.message)).finally(() => u(!1));
934
+ }, [e, l, t == null ? void 0 : t.name]);
935
935
  return {
936
936
  layout: t,
937
- renderData: a,
938
- loading: i,
939
- error: o,
940
- filters: s,
937
+ renderData: n,
938
+ loading: o,
939
+ error: c,
940
+ filters: l,
941
941
  setFilter: A,
942
- downloadPdf: y,
942
+ downloadPdf: k,
943
943
  downloading: d
944
944
  };
945
945
  }
946
- const Bt = 8, Xt = 14;
947
- function de(e) {
948
- return { paddingLeft: `${Bt + e * Xt}px` };
946
+ function Qt(e, t) {
947
+ return e.type === "separator" || e.indent > t.indent ? !1 : !(t.type === "header" && e.type === "data" && e.indent === t.indent);
948
+ }
949
+ function q(e, t) {
950
+ const r = e[t];
951
+ if (!r || r.type === "separator") return null;
952
+ let n = t + 1;
953
+ for (; n < e.length && !Qt(e[n], r); )
954
+ n += 1;
955
+ return n === t + 1 || !e.slice(t + 1, n).some((l) => l.type !== "separator") ? null : { from: t + 1, to: n };
949
956
  }
950
- function Qt(e) {
957
+ function Zt(e) {
958
+ const t = [];
959
+ for (let r = 0; r < e.length; r += 1)
960
+ q(e, r) && t.push(e[r].id);
961
+ return t;
962
+ }
963
+ function Jt(e) {
964
+ const t = /* @__PURE__ */ new Map();
965
+ e.forEach((n, s) => {
966
+ const l = q(e, s);
967
+ l && t.set(s, l);
968
+ });
969
+ const r = [];
970
+ for (const [n, s] of t) {
971
+ let l = !0;
972
+ for (const i of t.keys())
973
+ if (i >= s.from && i < s.to) {
974
+ l = !1;
975
+ break;
976
+ }
977
+ l && r.push(e[n].id);
978
+ }
979
+ return r;
980
+ }
981
+ function er(e, t) {
982
+ const r = q(e, t);
983
+ if (!r) return 0;
984
+ let n = 0;
985
+ for (let s = r.from; s < r.to; s += 1)
986
+ e[s].type === "data" && (n += 1);
987
+ return n;
988
+ }
989
+ function tr(e, t) {
990
+ const r = /* @__PURE__ */ new Set();
991
+ for (const n of t) {
992
+ const s = e.findIndex((i) => i.id === n);
993
+ if (s < 0) continue;
994
+ const l = q(e, s);
995
+ if (l)
996
+ for (let i = l.from; i < l.to; i += 1)
997
+ r.add(e[i].id);
998
+ }
999
+ return r;
1000
+ }
1001
+ const rr = 8, nr = 14;
1002
+ function ar(e) {
1003
+ return { paddingLeft: `${rr + e * nr}px` };
1004
+ }
1005
+ function sr(e) {
951
1006
  const t = {};
952
1007
  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;
953
1008
  }
954
- function ue(e) {
1009
+ function ge(e) {
955
1010
  return e == null || e === 0 ? "stmt__number" : `stmt__number stmt__number--${e > 0 ? "pos" : "neg"}`;
956
1011
  }
957
- const Zt = {
1012
+ const lr = {
958
1013
  day: "day",
959
1014
  week: "week",
960
1015
  month: "month",
@@ -962,37 +1017,37 @@ const Zt = {
962
1017
  year: "year",
963
1018
  total: "month"
964
1019
  };
965
- function Jt({ definition: e, value: t, options: n, bounds: a, rangeUnit: l, onChange: s }) {
1020
+ function ir({ definition: e, value: t, options: r, bounds: n, rangeUnit: s, onChange: l }) {
966
1021
  if (e.type === "date_range") {
967
- const c = e.dateFilterMode ?? "range";
968
- return /* @__PURE__ */ b("div", { className: `stmt__filter stmt__filter--date stmt__filter--${c}`, children: [
969
- /* @__PURE__ */ r("span", { className: "stmt__filter-label", children: e.label }),
970
- /* @__PURE__ */ r(
971
- $e,
1022
+ const i = e.dateFilterMode ?? "range";
1023
+ return /* @__PURE__ */ _("div", { className: `stmt__filter stmt__filter--date stmt__filter--${i}`, children: [
1024
+ /* @__PURE__ */ a("span", { className: "stmt__filter-label", children: e.label }),
1025
+ /* @__PURE__ */ a(
1026
+ Te,
972
1027
  {
973
- mode: c,
1028
+ mode: i,
974
1029
  value: t,
975
- dateBounds: a,
976
- rangeUnit: l,
977
- onChange: s
1030
+ dateBounds: n,
1031
+ rangeUnit: s,
1032
+ onChange: l
978
1033
  }
979
1034
  )
980
1035
  ] });
981
1036
  }
982
- return /* @__PURE__ */ b("div", { className: "stmt__filter", children: [
983
- /* @__PURE__ */ r("span", { className: "stmt__filter-label", children: e.label }),
984
- /* @__PURE__ */ r(
985
- pe,
1037
+ return /* @__PURE__ */ _("div", { className: "stmt__filter", children: [
1038
+ /* @__PURE__ */ a("span", { className: "stmt__filter-label", children: e.label }),
1039
+ /* @__PURE__ */ a(
1040
+ we,
986
1041
  {
987
1042
  value: t,
988
- options: n,
1043
+ options: r,
989
1044
  multi: e.type === "multi_select",
990
- onChange: s
1045
+ onChange: l
991
1046
  }
992
1047
  )
993
1048
  ] });
994
1049
  }
995
- const er = 13, me = {
1050
+ const or = 13, pe = {
996
1051
  day: ["dia", "dias"],
997
1052
  week: ["semana", "semanas"],
998
1053
  month: ["mês", "meses"],
@@ -1000,167 +1055,297 @@ const er = 13, me = {
1000
1055
  year: ["ano", "anos"],
1001
1056
  total: ["período", "períodos"]
1002
1057
  };
1003
- function tr(e, t) {
1004
- const [n, a] = me[t] ?? me.total;
1005
- return `Variação sobre ${e} ${e === 1 ? n : a} atrás`;
1058
+ function cr(e, t) {
1059
+ const [r, n] = pe[t] ?? pe.total;
1060
+ return `Variação sobre ${e} ${e === 1 ? r : n} atrás`;
1006
1061
  }
1007
- function rr({
1062
+ function dr({
1063
+ label: e,
1064
+ collapsed: t,
1065
+ onToggle: r
1066
+ }) {
1067
+ return /* @__PURE__ */ a(
1068
+ "button",
1069
+ {
1070
+ type: "button",
1071
+ className: "stmt__toggle",
1072
+ "aria-expanded": !t,
1073
+ "aria-label": t ? `Expandir ${e}` : `Recolher ${e}`,
1074
+ onClick: (n) => {
1075
+ n.stopPropagation(), r();
1076
+ },
1077
+ children: /* @__PURE__ */ a("span", { className: "stmt__caret", "aria-hidden": "true" })
1078
+ }
1079
+ );
1080
+ }
1081
+ function ur({
1008
1082
  line: e,
1009
1083
  columnCount: t,
1010
- showTotal: n,
1011
- showVertical: a,
1012
- showHorizontal: l,
1013
- comparisonLabel: s
1084
+ showTotal: r,
1085
+ showVertical: n,
1086
+ showHorizontal: s,
1087
+ comparisonLabel: l,
1088
+ collapsible: i,
1089
+ collapsed: o,
1090
+ onToggle: p,
1091
+ hiddenCount: c
1014
1092
  }) {
1093
+ const h = /* @__PURE__ */ _(Y, { children: [
1094
+ i && /* @__PURE__ */ a(dr, { label: e.label, collapsed: o, onToggle: p }),
1095
+ e.label,
1096
+ i && o && c > 0 && /* @__PURE__ */ _("span", { className: "stmt__count", children: [
1097
+ c,
1098
+ " ",
1099
+ c === 1 ? "conta" : "contas"
1100
+ ] })
1101
+ ] }), d = /* @__PURE__ */ a(
1102
+ "th",
1103
+ {
1104
+ scope: "row",
1105
+ style: ar(e.style.indent),
1106
+ onClick: i ? p : void 0,
1107
+ children: h
1108
+ }
1109
+ ), u = [
1110
+ i && "stmt__row--section",
1111
+ o && "stmt__row--collapsed"
1112
+ ];
1015
1113
  if (e.type === "separator")
1016
- return /* @__PURE__ */ r("tr", { className: "stmt__row stmt__row--separator", children: /* @__PURE__ */ r("td", { colSpan: t }) });
1017
- if (e.type === "header" && e.formatted.length === 0)
1018
- return /* @__PURE__ */ b("tr", { className: "stmt__row stmt__row--header", children: [
1019
- /* @__PURE__ */ r("th", { scope: "row", style: de(e.style.indent), children: e.label }),
1020
- /* @__PURE__ */ r("td", { colSpan: t - 1 })
1114
+ return /* @__PURE__ */ a("tr", { className: "stmt__row stmt__row--separator", children: /* @__PURE__ */ a("td", { colSpan: t }) });
1115
+ if (e.type === "header" && e.formatted.length === 0) {
1116
+ const b = ["stmt__row", "stmt__row--header", ...u].filter(Boolean).join(" ");
1117
+ return /* @__PURE__ */ _("tr", { className: b, children: [
1118
+ d,
1119
+ /* @__PURE__ */ a("td", { colSpan: t - 1 })
1021
1120
  ] });
1022
- const c = [
1121
+ }
1122
+ const m = [
1023
1123
  "stmt__row",
1024
1124
  `stmt__row--${e.type}`,
1025
- e.style.bold && "stmt__row--bold"
1125
+ e.style.bold && "stmt__row--bold",
1126
+ ...u
1026
1127
  ].filter(Boolean).join(" ");
1027
- return /* @__PURE__ */ b("tr", { className: c, children: [
1028
- /* @__PURE__ */ r("th", { scope: "row", style: de(e.style.indent), children: e.label }),
1029
- e.formatted.map((i, m) => {
1030
- var d;
1031
- const o = e.horizontalAnalysis[m], h = (d = e.comparison) == null ? void 0 : d[m];
1032
- return /* @__PURE__ */ b("td", { className: "stmt__value", children: [
1033
- /* @__PURE__ */ r("span", { className: ue(e.values[m]), children: i }),
1034
- a && e.verticalAnalysis[m] != null && /* @__PURE__ */ r("span", { className: "stmt__aux", title: "Análise vertical", children: z(e.verticalAnalysis[m], "percentage") }),
1035
- l && o != null && /* @__PURE__ */ r(
1128
+ return /* @__PURE__ */ _("tr", { className: m, children: [
1129
+ d,
1130
+ e.formatted.map((b, y) => {
1131
+ var k;
1132
+ const N = e.horizontalAnalysis[y], A = (k = e.comparison) == null ? void 0 : k[y];
1133
+ return /* @__PURE__ */ _("td", { className: "stmt__value", children: [
1134
+ /* @__PURE__ */ a("span", { className: ge(e.values[y]), children: b }),
1135
+ n && e.verticalAnalysis[y] != null && /* @__PURE__ */ a("span", { className: "stmt__aux", title: "Análise vertical", children: U(e.verticalAnalysis[y], "percentage") }),
1136
+ s && N != null && /* @__PURE__ */ a(
1036
1137
  "span",
1037
1138
  {
1038
- className: `stmt__aux stmt__aux--${o < 0 ? "down" : "up"}`,
1139
+ className: `stmt__aux stmt__aux--${N < 0 ? "down" : "up"}`,
1039
1140
  title: "Variação sobre o período anterior",
1040
- children: z(o, "percentage")
1141
+ children: U(N, "percentage")
1041
1142
  }
1042
1143
  ),
1043
- s && h != null && /* @__PURE__ */ b(
1144
+ l && A != null && /* @__PURE__ */ _(
1044
1145
  "span",
1045
1146
  {
1046
- className: `stmt__aux stmt__aux--${h < 0 ? "down" : "up"}`,
1047
- title: s,
1147
+ className: `stmt__aux stmt__aux--${A < 0 ? "down" : "up"}`,
1148
+ title: l,
1048
1149
  children: [
1049
1150
  "vs ",
1050
- z(h, "percentage")
1151
+ U(A, "percentage")
1051
1152
  ]
1052
1153
  }
1053
1154
  )
1054
- ] }, m);
1155
+ ] }, y);
1055
1156
  }),
1056
- n && /* @__PURE__ */ r("td", { className: "stmt__value stmt__value--total", children: /* @__PURE__ */ r("span", { className: ue(e.total), children: e.totalFormatted ?? "-" }) })
1157
+ r && /* @__PURE__ */ a("td", { className: "stmt__value stmt__value--total", children: /* @__PURE__ */ a("span", { className: ge(e.total), children: e.totalFormatted ?? "-" }) })
1057
1158
  ] });
1058
1159
  }
1059
- function or({ token: e, palette: t, showDownload: n = !0, className: a }) {
1060
- const {
1061
- layout: l,
1062
- renderData: s,
1063
- loading: c,
1064
- error: i,
1065
- filters: m,
1066
- setFilter: o,
1067
- downloadPdf: h,
1068
- downloading: d
1069
- } = qt(e), [f, p] = M(!1), v = ["stmt", a].filter(Boolean).join(" "), S = {
1070
- ...be(t),
1071
- ...Qt(l == null ? void 0 : l.colors)
1072
- };
1073
- let k;
1074
- if (i && !l)
1075
- k = /* @__PURE__ */ r("div", { className: "stmt__error", children: i });
1076
- else if (!l)
1077
- k = /* @__PURE__ */ r("div", { className: "stmt__state", children: "Carregando demonstrativo..." });
1078
- else {
1079
- const A = (s == null ? void 0 : s.dateBounds) ?? l.dateBounds, y = l.periods.showTotal, w = (s == null ? void 0 : s.columns) ?? [], N = (s == null ? void 0 : s.lines) ?? [], T = 1 + w.length + (y ? 1 : 0), x = N.some((g) => g.verticalAnalysis.length > 0), _ = N.some((g) => g.horizontalAnalysis.length > 0), u = l.periods.comparisonOffset, R = u ? tr(u, l.periods.granularity) : void 0, C = er - (y ? 1 : 0), F = Math.max(0, w.length - C);
1080
- k = /* @__PURE__ */ b(he, { children: [
1081
- /* @__PURE__ */ b("div", { className: "stmt__toolbar", children: [
1082
- l.filters.map((g) => /* @__PURE__ */ r(
1083
- Jt,
1084
- {
1085
- definition: g,
1086
- value: m[g.id] ?? "",
1087
- options: l.filterOptions[g.id] ?? [],
1088
- bounds: A,
1089
- rangeUnit: Zt[l.periods.granularity] ?? "day",
1090
- onChange: (I) => o(g.id, I)
1091
- },
1092
- g.id
1093
- )),
1094
- /* @__PURE__ */ b("div", { className: "stmt__toolbar-end", children: [
1095
- /* @__PURE__ */ b("span", { className: "stmt__bounds", children: [
1096
- "Base: ",
1097
- A.min,
1098
- " a ",
1099
- A.max
1100
- ] }),
1101
- n && /* @__PURE__ */ r(
1160
+ function mr({
1161
+ layout: e,
1162
+ renderData: t,
1163
+ loading: r,
1164
+ error: n,
1165
+ filters: s,
1166
+ setFilter: l,
1167
+ downloadPdf: i,
1168
+ downloading: o,
1169
+ showDownload: p
1170
+ }) {
1171
+ const c = (t == null ? void 0 : t.dateBounds) ?? e.dateBounds, h = e.periods.showTotal, d = (t == null ? void 0 : t.columns) ?? [], u = (t == null ? void 0 : t.lines) ?? [], m = O(
1172
+ () => u.map((v) => ({ id: v.id, type: v.type, indent: v.style.indent })),
1173
+ [u]
1174
+ ), b = O(() => Zt(m), [m]), y = O(() => new Set(b), [b]), N = O(
1175
+ () => new Set(Jt(m)),
1176
+ [m]
1177
+ ), A = O(
1178
+ () => new Map(m.map((v, W) => [v.id, er(m, W)])),
1179
+ [m]
1180
+ ), [k, S] = F(null), C = k ?? N, [M, E] = F(!1), g = $(null), f = O(() => tr(m, C), [m, C]), R = I((v) => {
1181
+ S((W) => {
1182
+ const j = new Set(W ?? N);
1183
+ return j.has(v) ? j.delete(v) : j.add(v), j;
1184
+ });
1185
+ }, [N]), T = I((v) => {
1186
+ const W = g.current;
1187
+ if (!W) return;
1188
+ const j = W.querySelector(`[data-period="${CSS.escape(v)}"]`);
1189
+ j == null || j.scrollIntoView({ inline: "center", block: "nearest", behavior: "smooth" });
1190
+ }, []), x = 1 + d.length + (h ? 1 : 0), w = u.some((v) => v.verticalAnalysis.length > 0), D = u.some((v) => v.horizontalAnalysis.length > 0), P = e.periods.comparisonOffset, L = P ? cr(P, e.periods.granularity) : void 0, G = or - (h ? 1 : 0), V = Math.max(0, d.length - G);
1191
+ return /* @__PURE__ */ _(Y, { children: [
1192
+ /* @__PURE__ */ _("div", { className: "stmt__toolbar", children: [
1193
+ e.filters.map((v) => /* @__PURE__ */ a(
1194
+ ir,
1195
+ {
1196
+ definition: v,
1197
+ value: s[v.id] ?? "",
1198
+ options: e.filterOptions[v.id] ?? [],
1199
+ bounds: c,
1200
+ rangeUnit: lr[e.periods.granularity] ?? "day",
1201
+ onChange: (W) => l(v.id, W)
1202
+ },
1203
+ v.id
1204
+ )),
1205
+ /* @__PURE__ */ _("div", { className: "stmt__toolbar-end", children: [
1206
+ /* @__PURE__ */ _("span", { className: "stmt__bounds", children: [
1207
+ "Base: ",
1208
+ c.min,
1209
+ " a ",
1210
+ c.max
1211
+ ] }),
1212
+ b.length > 0 && /* @__PURE__ */ _(Y, { children: [
1213
+ /* @__PURE__ */ a(
1214
+ "button",
1215
+ {
1216
+ type: "button",
1217
+ className: "stmt__outline",
1218
+ onClick: () => S(N),
1219
+ children: "Recolher seções"
1220
+ }
1221
+ ),
1222
+ /* @__PURE__ */ a(
1102
1223
  "button",
1103
1224
  {
1104
1225
  type: "button",
1105
- className: "stmt__download",
1106
- onClick: () => {
1107
- if (F > 0 && !f) {
1108
- p(!0);
1109
- return;
1110
- }
1111
- p(!1), h();
1112
- },
1113
- disabled: d || !s,
1114
- title: "Baixar o documento em PDF",
1115
- children: d ? "Gerando..." : "Baixar PDF"
1226
+ className: "stmt__outline",
1227
+ onClick: () => S(/* @__PURE__ */ new Set()),
1228
+ children: "Expandir tudo"
1116
1229
  }
1117
1230
  )
1118
- ] })
1119
- ] }),
1120
- i && /* @__PURE__ */ r("div", { className: "stmt__error", children: i }),
1121
- f && F > 0 && /* @__PURE__ */ b("div", { className: "stmt__warning", children: [
1122
- "O PDF cabe ",
1123
- C,
1124
- " períodos e este documento tem ",
1125
- w.length,
1126
- ": o arquivo sairá com os ",
1127
- C,
1128
- " mais recentes",
1129
- y && ", e a coluna de total seguirá cobrindo a janela inteira",
1130
- '. Clique em "Baixar PDF" de novo para gerar assim, ou reduza o período.'
1131
- ] }),
1132
- (s == null ? void 0 : s.truncated) && /* @__PURE__ */ b("div", { className: "stmt__warning", children: [
1133
- "A janela pedida excede o limite de colunas: o documento mostra as primeiras ",
1134
- w.length,
1135
- ". Escolha um período menor ou uma coluna mais larga."
1136
- ] }),
1137
- s ? w.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__ */ b("table", { className: "stmt__table", children: [
1138
- /* @__PURE__ */ r("thead", { children: /* @__PURE__ */ b("tr", { children: [
1139
- /* @__PURE__ */ r("th", { className: "stmt__corner", scope: "col", children: s.name }),
1140
- w.map((g) => /* @__PURE__ */ r("th", { scope: "col", title: `${g.start} a ${g.end}`, children: g.label }, g.key)),
1141
- y && /* @__PURE__ */ r("th", { scope: "col", className: "stmt__total-head", children: l.periods.totalLabel })
1231
+ ] }),
1232
+ p && /* @__PURE__ */ a(
1233
+ "button",
1234
+ {
1235
+ type: "button",
1236
+ className: "stmt__download",
1237
+ onClick: () => {
1238
+ if (V > 0 && !M) {
1239
+ E(!0);
1240
+ return;
1241
+ }
1242
+ E(!1), i();
1243
+ },
1244
+ disabled: o || !t,
1245
+ title: "Baixar o documento em PDF",
1246
+ children: o ? "Gerando..." : "Baixar PDF"
1247
+ }
1248
+ )
1249
+ ] })
1250
+ ] }),
1251
+ n && /* @__PURE__ */ a("div", { className: "stmt__error", children: n }),
1252
+ M && V > 0 && /* @__PURE__ */ _("div", { className: "stmt__warning", children: [
1253
+ "O PDF cabe ",
1254
+ G,
1255
+ " períodos e este documento tem ",
1256
+ d.length,
1257
+ ": o arquivo sairá com os ",
1258
+ G,
1259
+ " mais recentes",
1260
+ h && ", e a coluna de total seguirá cobrindo a janela inteira",
1261
+ '. Clique em "Baixar PDF" de novo para gerar assim, ou reduza o período.'
1262
+ ] }),
1263
+ (t == null ? void 0 : t.truncated) && /* @__PURE__ */ _("div", { className: "stmt__warning", children: [
1264
+ "A janela pedida excede o limite de colunas: o documento mostra as primeiras ",
1265
+ d.length,
1266
+ ". Escolha um período menor ou uma coluna mais larga."
1267
+ ] }),
1268
+ t ? d.length === 0 ? /* @__PURE__ */ a("div", { className: "stmt__state", children: "Nenhum período na janela selecionada." }) : u.length === 0 ? /* @__PURE__ */ a("div", { className: "stmt__state", children: "Este demonstrativo não possui linhas." }) : /* @__PURE__ */ _(Y, { children: [
1269
+ d.length > 1 && /* @__PURE__ */ a("nav", { className: "stmt__periods", "aria-label": "Períodos", children: d.map((v) => /* @__PURE__ */ a(
1270
+ "button",
1271
+ {
1272
+ type: "button",
1273
+ className: "stmt__period",
1274
+ title: `${v.start} a ${v.end}`,
1275
+ onClick: () => T(v.key),
1276
+ children: v.label
1277
+ },
1278
+ v.key
1279
+ )) }),
1280
+ /* @__PURE__ */ a("div", { className: "stmt__scroll", ref: g, children: /* @__PURE__ */ _("table", { className: "stmt__table", children: [
1281
+ /* @__PURE__ */ a("thead", { children: /* @__PURE__ */ _("tr", { children: [
1282
+ /* @__PURE__ */ a("th", { className: "stmt__corner", scope: "col", children: t.name }),
1283
+ d.map((v) => /* @__PURE__ */ a(
1284
+ "th",
1285
+ {
1286
+ scope: "col",
1287
+ "data-period": v.key,
1288
+ title: `${v.start} a ${v.end}`,
1289
+ children: v.label
1290
+ },
1291
+ v.key
1292
+ )),
1293
+ h && /* @__PURE__ */ a("th", { scope: "col", className: "stmt__total-head", children: e.periods.totalLabel })
1142
1294
  ] }) }),
1143
- /* @__PURE__ */ r("tbody", { children: N.map((g) => /* @__PURE__ */ r(
1144
- rr,
1295
+ /* @__PURE__ */ a("tbody", { children: u.map((v) => f.has(v.id) ? null : /* @__PURE__ */ a(
1296
+ ur,
1145
1297
  {
1146
- line: g,
1147
- columnCount: T,
1148
- showTotal: y,
1149
- showVertical: x,
1150
- showHorizontal: _,
1151
- comparisonLabel: R
1298
+ line: v,
1299
+ columnCount: x,
1300
+ showTotal: h,
1301
+ showVertical: w,
1302
+ showHorizontal: D,
1303
+ comparisonLabel: L,
1304
+ collapsible: y.has(v.id),
1305
+ collapsed: C.has(v.id),
1306
+ onToggle: () => R(v.id),
1307
+ hiddenCount: A.get(v.id) ?? 0
1152
1308
  },
1153
- g.id
1309
+ v.id
1154
1310
  )) })
1155
- ] }) }) : /* @__PURE__ */ r("div", { className: "stmt__state", children: "Calculando..." }),
1156
- c && s && /* @__PURE__ */ r("div", { className: "stmt__recalculating", children: "Atualizando..." })
1157
- ] });
1158
- }
1159
- return /* @__PURE__ */ r("div", { className: v, style: S, children: k });
1311
+ ] }) })
1312
+ ] }) : /* @__PURE__ */ a("div", { className: "stmt__state", children: "Calculando..." }),
1313
+ r && t && /* @__PURE__ */ a("div", { className: "stmt__recalculating", children: "Atualizando..." })
1314
+ ] });
1315
+ }
1316
+ function br({ token: e, palette: t, showDownload: r = !0, className: n }) {
1317
+ const {
1318
+ layout: s,
1319
+ renderData: l,
1320
+ loading: i,
1321
+ error: o,
1322
+ filters: p,
1323
+ setFilter: c,
1324
+ downloadPdf: h,
1325
+ downloading: d
1326
+ } = Xt(e), u = ["stmt", n].filter(Boolean).join(" "), m = {
1327
+ ...t ? ye(t) : {},
1328
+ ...sr(s == null ? void 0 : s.colors)
1329
+ };
1330
+ let b;
1331
+ return o && !s ? b = /* @__PURE__ */ a("div", { className: "stmt__error", children: o }) : s ? b = /* @__PURE__ */ a(
1332
+ mr,
1333
+ {
1334
+ layout: s,
1335
+ renderData: l,
1336
+ loading: i,
1337
+ error: o,
1338
+ filters: p,
1339
+ setFilter: c,
1340
+ downloadPdf: h,
1341
+ downloading: d,
1342
+ showDownload: r
1343
+ }
1344
+ ) : b = /* @__PURE__ */ a("div", { className: "stmt__state", children: "Carregando demonstrativo..." }), /* @__PURE__ */ a("div", { className: u, style: m, children: b });
1160
1345
  }
1161
1346
  export {
1162
- ur as ApiError,
1163
- ir as Dashboard,
1164
- or as Statement
1347
+ yr as ApiError,
1348
+ _r as Dashboard,
1349
+ br as Statement
1165
1350
  };
1166
1351
  //# sourceMappingURL=index.js.map