@aspprev/versi-ds 0.1.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/README.md +463 -0
- package/dist/DocumentItem-BU0J2QGP.d.ts +21 -0
- package/dist/charts.d.ts +82 -0
- package/dist/charts.js +31 -0
- package/dist/charts.js.map +1 -0
- package/dist/chunk-2ACDV5D5.js +560 -0
- package/dist/chunk-2ACDV5D5.js.map +1 -0
- package/dist/chunk-2NMEKWO5.js +38 -0
- package/dist/chunk-2NMEKWO5.js.map +1 -0
- package/dist/chunk-6MXHE5MD.js +769 -0
- package/dist/chunk-6MXHE5MD.js.map +1 -0
- package/dist/chunk-A3PA5H7L.js +3099 -0
- package/dist/chunk-A3PA5H7L.js.map +1 -0
- package/dist/chunk-BY4HJZFJ.js +3308 -0
- package/dist/chunk-BY4HJZFJ.js.map +1 -0
- package/dist/chunk-CWIPMGCA.js +314 -0
- package/dist/chunk-CWIPMGCA.js.map +1 -0
- package/dist/chunk-OPUUOVCL.js +3226 -0
- package/dist/chunk-OPUUOVCL.js.map +1 -0
- package/dist/chunk-OWXG2A4N.js +77 -0
- package/dist/chunk-OWXG2A4N.js.map +1 -0
- package/dist/chunk-XGWGBD7X.js +45 -0
- package/dist/chunk-XGWGBD7X.js.map +1 -0
- package/dist/core.d.ts +471 -0
- package/dist/core.js +86 -0
- package/dist/core.js.map +1 -0
- package/dist/countries.d.ts +52 -0
- package/dist/countries.js +18 -0
- package/dist/countries.js.map +1 -0
- package/dist/documents.d.ts +9 -0
- package/dist/documents.js +13 -0
- package/dist/documents.js.map +1 -0
- package/dist/flags/ad.svg +1 -0
- package/dist/flags/ae.svg +1 -0
- package/dist/flags/af.svg +5 -0
- package/dist/flags/ag.svg +1 -0
- package/dist/flags/ai.svg +1 -0
- package/dist/flags/al.svg +1 -0
- package/dist/flags/am.svg +1 -0
- package/dist/flags/ao.svg +1 -0
- package/dist/flags/aq.svg +1 -0
- package/dist/flags/ar.svg +1 -0
- package/dist/flags/as.svg +1 -0
- package/dist/flags/at.svg +1 -0
- package/dist/flags/au.svg +1 -0
- package/dist/flags/aw.svg +1 -0
- package/dist/flags/ax.svg +1 -0
- package/dist/flags/az.svg +1 -0
- package/dist/flags/ba.svg +1 -0
- package/dist/flags/bb.svg +1 -0
- package/dist/flags/bd.svg +1 -0
- package/dist/flags/be.svg +1 -0
- package/dist/flags/bf.svg +1 -0
- package/dist/flags/bg.svg +1 -0
- package/dist/flags/bh.svg +1 -0
- package/dist/flags/bi.svg +1 -0
- package/dist/flags/bj.svg +1 -0
- package/dist/flags/bl.svg +1 -0
- package/dist/flags/bm.svg +1 -0
- package/dist/flags/bn.svg +1 -0
- package/dist/flags/bo.svg +1 -0
- package/dist/flags/bq.svg +1 -0
- package/dist/flags/br.svg +1 -0
- package/dist/flags/bs.svg +1 -0
- package/dist/flags/bt.svg +1 -0
- package/dist/flags/bv.svg +1 -0
- package/dist/flags/bw.svg +1 -0
- package/dist/flags/by.svg +1 -0
- package/dist/flags/bz.svg +1 -0
- package/dist/flags/ca.svg +1 -0
- package/dist/flags/cc.svg +1 -0
- package/dist/flags/cd.svg +1 -0
- package/dist/flags/cf.svg +1 -0
- package/dist/flags/cg.svg +1 -0
- package/dist/flags/ch.svg +1 -0
- package/dist/flags/ci.svg +1 -0
- package/dist/flags/ck.svg +1 -0
- package/dist/flags/cl.svg +1 -0
- package/dist/flags/cm.svg +1 -0
- package/dist/flags/cn.svg +1 -0
- package/dist/flags/co.svg +1 -0
- package/dist/flags/cr.svg +1 -0
- package/dist/flags/cu.svg +1 -0
- package/dist/flags/cv.svg +1 -0
- package/dist/flags/cw.svg +1 -0
- package/dist/flags/cx.svg +1 -0
- package/dist/flags/cy.svg +1 -0
- package/dist/flags/cz.svg +1 -0
- package/dist/flags/de.svg +1 -0
- package/dist/flags/dj.svg +1 -0
- package/dist/flags/dk.svg +1 -0
- package/dist/flags/dm.svg +1 -0
- package/dist/flags/do.svg +1 -0
- package/dist/flags/dz.svg +1 -0
- package/dist/flags/ec.svg +1 -0
- package/dist/flags/ee.svg +1 -0
- package/dist/flags/eg.svg +1 -0
- package/dist/flags/eh.svg +1 -0
- package/dist/flags/er.svg +1 -0
- package/dist/flags/es.svg +1 -0
- package/dist/flags/et.svg +1 -0
- package/dist/flags/fi.svg +1 -0
- package/dist/flags/fj.svg +1 -0
- package/dist/flags/fk.svg +1 -0
- package/dist/flags/fm.svg +1 -0
- package/dist/flags/fo.svg +1 -0
- package/dist/flags/fr.svg +1 -0
- package/dist/flags/ga.svg +1 -0
- package/dist/flags/gb.svg +1 -0
- package/dist/flags/gd.svg +1 -0
- package/dist/flags/ge.svg +1 -0
- package/dist/flags/gf.svg +1 -0
- package/dist/flags/gg.svg +1 -0
- package/dist/flags/gh.svg +1 -0
- package/dist/flags/gi.svg +1 -0
- package/dist/flags/gl.svg +1 -0
- package/dist/flags/gm.svg +1 -0
- package/dist/flags/gn.svg +1 -0
- package/dist/flags/gp.svg +1 -0
- package/dist/flags/gq.svg +1 -0
- package/dist/flags/gr.svg +1 -0
- package/dist/flags/gs.svg +1 -0
- package/dist/flags/gt.svg +1 -0
- package/dist/flags/gu.svg +1 -0
- package/dist/flags/gw.svg +1 -0
- package/dist/flags/gy.svg +1 -0
- package/dist/flags/hk.svg +1 -0
- package/dist/flags/hm.svg +1 -0
- package/dist/flags/hn.svg +1 -0
- package/dist/flags/hr.svg +1 -0
- package/dist/flags/ht.svg +1 -0
- package/dist/flags/hu.svg +1 -0
- package/dist/flags/id.svg +1 -0
- package/dist/flags/ie.svg +1 -0
- package/dist/flags/il.svg +1 -0
- package/dist/flags/im.svg +1 -0
- package/dist/flags/in.svg +1 -0
- package/dist/flags/io.svg +1 -0
- package/dist/flags/iq.svg +1 -0
- package/dist/flags/ir.svg +1 -0
- package/dist/flags/is.svg +1 -0
- package/dist/flags/it.svg +1 -0
- package/dist/flags/je.svg +1 -0
- package/dist/flags/jm.svg +1 -0
- package/dist/flags/jo.svg +1 -0
- package/dist/flags/jp.svg +1 -0
- package/dist/flags/ke.svg +1 -0
- package/dist/flags/kg.svg +1 -0
- package/dist/flags/kh.svg +1 -0
- package/dist/flags/ki.svg +1 -0
- package/dist/flags/km.svg +1 -0
- package/dist/flags/kn.svg +1 -0
- package/dist/flags/kp.svg +1 -0
- package/dist/flags/kr.svg +1 -0
- package/dist/flags/kw.svg +1 -0
- package/dist/flags/ky.svg +1 -0
- package/dist/flags/kz.svg +1 -0
- package/dist/flags/la.svg +1 -0
- package/dist/flags/lb.svg +1 -0
- package/dist/flags/lc.svg +1 -0
- package/dist/flags/li.svg +1 -0
- package/dist/flags/lk.svg +1 -0
- package/dist/flags/lr.svg +1 -0
- package/dist/flags/ls.svg +1 -0
- package/dist/flags/lt.svg +1 -0
- package/dist/flags/lu.svg +1 -0
- package/dist/flags/lv.svg +1 -0
- package/dist/flags/ly.svg +1 -0
- package/dist/flags/ma.svg +1 -0
- package/dist/flags/mc.svg +1 -0
- package/dist/flags/md.svg +1 -0
- package/dist/flags/me.svg +1 -0
- package/dist/flags/mf.svg +1 -0
- package/dist/flags/mg.svg +1 -0
- package/dist/flags/mh.svg +1 -0
- package/dist/flags/mk.svg +1 -0
- package/dist/flags/ml.svg +1 -0
- package/dist/flags/mm.svg +1 -0
- package/dist/flags/mn.svg +1 -0
- package/dist/flags/mo.svg +1 -0
- package/dist/flags/mp.svg +1 -0
- package/dist/flags/mq.svg +1 -0
- package/dist/flags/mr.svg +1 -0
- package/dist/flags/ms.svg +1 -0
- package/dist/flags/mt.svg +1 -0
- package/dist/flags/mu.svg +1 -0
- package/dist/flags/mv.svg +1 -0
- package/dist/flags/mw.svg +1 -0
- package/dist/flags/mx.svg +1 -0
- package/dist/flags/my.svg +1 -0
- package/dist/flags/mz.svg +1 -0
- package/dist/flags/na.svg +1 -0
- package/dist/flags/nc.svg +1 -0
- package/dist/flags/ne.svg +1 -0
- package/dist/flags/nf.svg +1 -0
- package/dist/flags/ng.svg +1 -0
- package/dist/flags/ni.svg +1 -0
- package/dist/flags/nl.svg +1 -0
- package/dist/flags/no.svg +1 -0
- package/dist/flags/np.svg +1 -0
- package/dist/flags/nr.svg +1 -0
- package/dist/flags/nu.svg +1 -0
- package/dist/flags/nz.svg +1 -0
- package/dist/flags/om.svg +1 -0
- package/dist/flags/pa.svg +1 -0
- package/dist/flags/pe.svg +1 -0
- package/dist/flags/pf.svg +1 -0
- package/dist/flags/pg.svg +1 -0
- package/dist/flags/ph.svg +1 -0
- package/dist/flags/pk.svg +1 -0
- package/dist/flags/pl.svg +1 -0
- package/dist/flags/pm.svg +1 -0
- package/dist/flags/pn.svg +1 -0
- package/dist/flags/pr.svg +1 -0
- package/dist/flags/ps.svg +1 -0
- package/dist/flags/pt.svg +1 -0
- package/dist/flags/pw.svg +1 -0
- package/dist/flags/py.svg +1 -0
- package/dist/flags/qa.svg +1 -0
- package/dist/flags/re.svg +1 -0
- package/dist/flags/ro.svg +1 -0
- package/dist/flags/rs.svg +1 -0
- package/dist/flags/ru.svg +1 -0
- package/dist/flags/rw.svg +1 -0
- package/dist/flags/sa.svg +1 -0
- package/dist/flags/sb.svg +1 -0
- package/dist/flags/sc.svg +1 -0
- package/dist/flags/sd.svg +1 -0
- package/dist/flags/se.svg +1 -0
- package/dist/flags/sg.svg +1 -0
- package/dist/flags/sh.svg +1 -0
- package/dist/flags/si.svg +1 -0
- package/dist/flags/sj.svg +1 -0
- package/dist/flags/sk.svg +1 -0
- package/dist/flags/sl.svg +1 -0
- package/dist/flags/sm.svg +1 -0
- package/dist/flags/sn.svg +1 -0
- package/dist/flags/so.svg +1 -0
- package/dist/flags/sr.svg +1 -0
- package/dist/flags/ss.svg +1 -0
- package/dist/flags/st.svg +1 -0
- package/dist/flags/sv.svg +1 -0
- package/dist/flags/sx.svg +1 -0
- package/dist/flags/sy.svg +1 -0
- package/dist/flags/sz.svg +1 -0
- package/dist/flags/tc.svg +1 -0
- package/dist/flags/td.svg +1 -0
- package/dist/flags/tf.svg +1 -0
- package/dist/flags/tg.svg +1 -0
- package/dist/flags/th.svg +1 -0
- package/dist/flags/tj.svg +1 -0
- package/dist/flags/tk.svg +1 -0
- package/dist/flags/tl.svg +1 -0
- package/dist/flags/tm.svg +1 -0
- package/dist/flags/tn.svg +1 -0
- package/dist/flags/to.svg +1 -0
- package/dist/flags/tr.svg +1 -0
- package/dist/flags/tt.svg +1 -0
- package/dist/flags/tv.svg +1 -0
- package/dist/flags/tw.svg +1 -0
- package/dist/flags/tz.svg +1 -0
- package/dist/flags/ua.svg +1 -0
- package/dist/flags/ug.svg +1 -0
- package/dist/flags/um.svg +1 -0
- package/dist/flags/us.svg +1 -0
- package/dist/flags/uy.svg +1 -0
- package/dist/flags/uz.svg +1 -0
- package/dist/flags/va.svg +1 -0
- package/dist/flags/vc.svg +1 -0
- package/dist/flags/ve.svg +1 -0
- package/dist/flags/vg.svg +1 -0
- package/dist/flags/vi.svg +1 -0
- package/dist/flags/vn.svg +1 -0
- package/dist/flags/vu.svg +1 -0
- package/dist/flags/wf.svg +1 -0
- package/dist/flags/ws.svg +1 -0
- package/dist/flags/xk.svg +1 -0
- package/dist/flags/ye.svg +1 -0
- package/dist/flags/yt.svg +1 -0
- package/dist/flags/za.svg +1 -0
- package/dist/flags/zm.svg +1 -0
- package/dist/flags/zw.svg +1 -0
- package/dist/forms.d.ts +242 -0
- package/dist/forms.js +41 -0
- package/dist/forms.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +163 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.json +33 -0
- package/dist/overlays.d.ts +75 -0
- package/dist/overlays.js +17 -0
- package/dist/overlays.js.map +1 -0
- package/dist/styles.css +3 -0
- package/dist/themes.css +125 -0
- package/package.json +156 -0
|
@@ -0,0 +1,769 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__objRest,
|
|
3
|
+
__spreadProps,
|
|
4
|
+
__spreadValues
|
|
5
|
+
} from "./chunk-2NMEKWO5.js";
|
|
6
|
+
|
|
7
|
+
// src/components/chart/LazyApexChart.tsx
|
|
8
|
+
import { useEffect, useState } from "react";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
function LazyApexChart(props) {
|
|
11
|
+
const [ApexChart, setApexChart] = useState(null);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
let active = true;
|
|
14
|
+
import("react-apexcharts").then(({ default: component }) => {
|
|
15
|
+
if (active) setApexChart(() => component);
|
|
16
|
+
});
|
|
17
|
+
return () => {
|
|
18
|
+
active = false;
|
|
19
|
+
};
|
|
20
|
+
}, []);
|
|
21
|
+
if (!ApexChart) {
|
|
22
|
+
return /* @__PURE__ */ jsx(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
className: "flex min-h-40 items-center justify-center text-sm text-content-muted",
|
|
26
|
+
role: "status",
|
|
27
|
+
"aria-label": "Carregando grafico",
|
|
28
|
+
children: "Carregando grafico..."
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
return /* @__PURE__ */ jsx(ApexChart, __spreadValues({}, props));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// src/utils/chart-theme.ts
|
|
36
|
+
var SERIES_FALLBACKS = [
|
|
37
|
+
"#0f62c1",
|
|
38
|
+
"#16d39a",
|
|
39
|
+
"#feb019",
|
|
40
|
+
"#ff4560",
|
|
41
|
+
"#775dd0",
|
|
42
|
+
"#00b8d9",
|
|
43
|
+
"#ff8f00",
|
|
44
|
+
"#26a69a",
|
|
45
|
+
"#ec407a",
|
|
46
|
+
"#7cb342",
|
|
47
|
+
"#5c6bc0",
|
|
48
|
+
"#8d6e63"
|
|
49
|
+
];
|
|
50
|
+
var DONUT_SERIES_FALLBACKS = [
|
|
51
|
+
"#66d288",
|
|
52
|
+
"#3182f6",
|
|
53
|
+
"#ffc25c",
|
|
54
|
+
"#7c58e8",
|
|
55
|
+
"#ff6b6b",
|
|
56
|
+
...SERIES_FALLBACKS.slice(5)
|
|
57
|
+
];
|
|
58
|
+
var MUTED_SERIES_FALLBACKS = [
|
|
59
|
+
"#c5cad0",
|
|
60
|
+
"#d9dde1",
|
|
61
|
+
"#eceef0",
|
|
62
|
+
"#aeb5bd"
|
|
63
|
+
];
|
|
64
|
+
var readColorToken = (token, fallback) => {
|
|
65
|
+
var _a;
|
|
66
|
+
if (typeof window === "undefined") return fallback;
|
|
67
|
+
const value = window.getComputedStyle((_a = document.body) != null ? _a : document.documentElement).getPropertyValue(token).trim();
|
|
68
|
+
return value ? `rgb(${value})` : fallback;
|
|
69
|
+
};
|
|
70
|
+
var getChartTheme = () => ({
|
|
71
|
+
series: SERIES_FALLBACKS.map(
|
|
72
|
+
(fallback, index) => readColorToken(`--chart-${index + 1}`, fallback)
|
|
73
|
+
),
|
|
74
|
+
donutSeries: DONUT_SERIES_FALLBACKS.map(
|
|
75
|
+
(fallback, index) => readColorToken(`--chart-donut-${index + 1}`, fallback)
|
|
76
|
+
),
|
|
77
|
+
mutedSeries: MUTED_SERIES_FALLBACKS.map(
|
|
78
|
+
(fallback, index) => readColorToken(`--chart-muted-${index + 1}`, fallback)
|
|
79
|
+
),
|
|
80
|
+
balance: readColorToken("--chart-balance", "#00a76f"),
|
|
81
|
+
invested: readColorToken("--chart-invested", "#1e90ff"),
|
|
82
|
+
grid: readColorToken("--chart-grid", "#e5e7eb"),
|
|
83
|
+
axis: readColorToken("--chart-axis", "#6b7280"),
|
|
84
|
+
axisBorder: readColorToken("--chart-axis-border", "#d1d5db"),
|
|
85
|
+
tooltipText: readColorToken("--chart-tooltip-text", "#111827"),
|
|
86
|
+
neutralLine: readColorToken("--chart-line-neutral", "#181818"),
|
|
87
|
+
surface: readColorToken("--surface-card", "#ffffff")
|
|
88
|
+
});
|
|
89
|
+
var getChartSeriesRecord = (backendColors, count = 5) => {
|
|
90
|
+
const { series } = getChartTheme();
|
|
91
|
+
const fallbackColors = Object.fromEntries(
|
|
92
|
+
Array.from({ length: count }, (_, index) => [index + 1, series[index]])
|
|
93
|
+
);
|
|
94
|
+
const isDarkSchemeActive = typeof document !== "undefined" && document.documentElement.dataset.colorScheme === "dark";
|
|
95
|
+
const highContrastActive = typeof document !== "undefined" && document.documentElement.dataset.contrast === "high";
|
|
96
|
+
return highContrastActive || isDarkSchemeActive ? fallbackColors : __spreadValues(__spreadValues({}, fallbackColors), backendColors);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// src/components/chart/interactive-donut-utils.ts
|
|
100
|
+
function resolveInteractiveDonutColors({
|
|
101
|
+
count,
|
|
102
|
+
colors,
|
|
103
|
+
mutedColors,
|
|
104
|
+
selectedIndex
|
|
105
|
+
}) {
|
|
106
|
+
if (colors.length === 0 || mutedColors.length === 0) return [];
|
|
107
|
+
return Array.from({ length: count }, (_, index) => {
|
|
108
|
+
const color = colors[index % colors.length];
|
|
109
|
+
if (selectedIndex === null || index === selectedIndex) return color;
|
|
110
|
+
return mutedColors[index % mutedColors.length];
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
function resolveRelativeDonutSelection({
|
|
114
|
+
currentIndex,
|
|
115
|
+
direction,
|
|
116
|
+
count
|
|
117
|
+
}) {
|
|
118
|
+
if (count <= 0) return null;
|
|
119
|
+
if (currentIndex === null) return direction > 0 ? 0 : count - 1;
|
|
120
|
+
return (currentIndex + direction + count) % count;
|
|
121
|
+
}
|
|
122
|
+
var TOOLTIP_ENTITIES = {
|
|
123
|
+
"&": "&",
|
|
124
|
+
"<": "<",
|
|
125
|
+
">": ">",
|
|
126
|
+
'"': """,
|
|
127
|
+
"'": "'"
|
|
128
|
+
};
|
|
129
|
+
function escapeDonutTooltipText(value) {
|
|
130
|
+
return String(value != null ? value : "").replace(
|
|
131
|
+
/[&<>"']/g,
|
|
132
|
+
(character) => TOOLTIP_ENTITIES[character]
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// src/hooks/useHighContrastPreference.ts
|
|
137
|
+
import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
138
|
+
function useHighContrastPreference() {
|
|
139
|
+
const [highContrast, setHighContrast] = useState2(false);
|
|
140
|
+
useEffect2(() => {
|
|
141
|
+
const root = document.documentElement;
|
|
142
|
+
const read = () => setHighContrast(root.dataset.contrast === "high");
|
|
143
|
+
read();
|
|
144
|
+
const observer = new MutationObserver(read);
|
|
145
|
+
observer.observe(root, {
|
|
146
|
+
attributes: true,
|
|
147
|
+
attributeFilter: ["data-contrast"]
|
|
148
|
+
});
|
|
149
|
+
return () => observer.disconnect();
|
|
150
|
+
}, []);
|
|
151
|
+
return highContrast;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// src/components/chart/InteractiveDonutChart.tsx
|
|
155
|
+
import {
|
|
156
|
+
useEffect as useEffect3,
|
|
157
|
+
useId,
|
|
158
|
+
useMemo,
|
|
159
|
+
useRef,
|
|
160
|
+
useState as useState3
|
|
161
|
+
} from "react";
|
|
162
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
163
|
+
function InteractiveDonutChart(_a) {
|
|
164
|
+
var _b = _a, {
|
|
165
|
+
options = {},
|
|
166
|
+
series,
|
|
167
|
+
colors,
|
|
168
|
+
mutedColors,
|
|
169
|
+
valueFormatter = (value) => new Intl.NumberFormat("pt-BR", {
|
|
170
|
+
style: "currency",
|
|
171
|
+
currency: "BRL"
|
|
172
|
+
}).format(value),
|
|
173
|
+
ariaLabel = "Gr\xE1fico de distribui\xE7\xE3o",
|
|
174
|
+
className,
|
|
175
|
+
chartClassName,
|
|
176
|
+
responsiveHeight = false,
|
|
177
|
+
highContrastOverride
|
|
178
|
+
} = _b, rest = __objRest(_b, [
|
|
179
|
+
"options",
|
|
180
|
+
"series",
|
|
181
|
+
"colors",
|
|
182
|
+
"mutedColors",
|
|
183
|
+
"valueFormatter",
|
|
184
|
+
"ariaLabel",
|
|
185
|
+
"className",
|
|
186
|
+
"chartClassName",
|
|
187
|
+
"responsiveHeight",
|
|
188
|
+
"highContrastOverride"
|
|
189
|
+
]);
|
|
190
|
+
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
|
|
191
|
+
const storedHighContrast = useHighContrastPreference();
|
|
192
|
+
const highContrast = highContrastOverride != null ? highContrastOverride : storedHighContrast;
|
|
193
|
+
const [selectedIndex, setSelectedIndex] = useState3(null);
|
|
194
|
+
const [legendSelectedIndex, setLegendSelectedIndex] = useState3(
|
|
195
|
+
null
|
|
196
|
+
);
|
|
197
|
+
const containerRef = useRef(null);
|
|
198
|
+
const instructionsId = useId();
|
|
199
|
+
const chartTheme = getChartTheme();
|
|
200
|
+
const baseColors = !highContrast && (colors == null ? void 0 : colors.length) ? colors : chartTheme.donutSeries;
|
|
201
|
+
const neutralColors = !highContrast && (mutedColors == null ? void 0 : mutedColors.length) ? mutedColors : chartTheme.mutedSeries;
|
|
202
|
+
const labels = useMemo(() => {
|
|
203
|
+
var _a3;
|
|
204
|
+
return (_a3 = options.labels) != null ? _a3 : [];
|
|
205
|
+
}, [options.labels]);
|
|
206
|
+
useEffect3(() => {
|
|
207
|
+
setSelectedIndex(
|
|
208
|
+
(current) => current !== null && current >= series.length ? null : current
|
|
209
|
+
);
|
|
210
|
+
setLegendSelectedIndex(
|
|
211
|
+
(current) => current !== null && current >= series.length ? null : current
|
|
212
|
+
);
|
|
213
|
+
}, [series.length]);
|
|
214
|
+
useEffect3(() => {
|
|
215
|
+
const resetOnOutsideClick = (event) => {
|
|
216
|
+
var _a3;
|
|
217
|
+
if ((_a3 = containerRef.current) == null ? void 0 : _a3.contains(event.target)) return;
|
|
218
|
+
setSelectedIndex(null);
|
|
219
|
+
setLegendSelectedIndex(null);
|
|
220
|
+
};
|
|
221
|
+
document.addEventListener("pointerdown", resetOnOutsideClick);
|
|
222
|
+
return () => document.removeEventListener("pointerdown", resetOnOutsideClick);
|
|
223
|
+
}, []);
|
|
224
|
+
const [pieCircle, setPieCircle] = useState3(null);
|
|
225
|
+
const [measuredChartHeight, setMeasuredChartHeight] = useState3(
|
|
226
|
+
null
|
|
227
|
+
);
|
|
228
|
+
useEffect3(() => {
|
|
229
|
+
const container = containerRef.current;
|
|
230
|
+
if (!container) return;
|
|
231
|
+
const measure = () => {
|
|
232
|
+
const containerRect = container.getBoundingClientRect();
|
|
233
|
+
if (responsiveHeight) {
|
|
234
|
+
const fallbackHeight = typeof rest.height === "number" ? rest.height : 0;
|
|
235
|
+
const nextHeight = Math.max(
|
|
236
|
+
fallbackHeight,
|
|
237
|
+
Math.floor(containerRect.height)
|
|
238
|
+
);
|
|
239
|
+
if (nextHeight > 0) {
|
|
240
|
+
setMeasuredChartHeight(
|
|
241
|
+
(current) => current === nextHeight ? current : nextHeight
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
const areas = container.querySelectorAll(
|
|
246
|
+
".apexcharts-pie-area"
|
|
247
|
+
);
|
|
248
|
+
if (!areas.length) return;
|
|
249
|
+
let minX = Infinity;
|
|
250
|
+
let minY = Infinity;
|
|
251
|
+
let maxX = -Infinity;
|
|
252
|
+
let maxY = -Infinity;
|
|
253
|
+
areas.forEach((area) => {
|
|
254
|
+
const rect = area.getBoundingClientRect();
|
|
255
|
+
minX = Math.min(minX, rect.left);
|
|
256
|
+
minY = Math.min(minY, rect.top);
|
|
257
|
+
maxX = Math.max(maxX, rect.right);
|
|
258
|
+
maxY = Math.max(maxY, rect.bottom);
|
|
259
|
+
});
|
|
260
|
+
setPieCircle({
|
|
261
|
+
cx: (minX + maxX) / 2 - containerRect.left,
|
|
262
|
+
cy: (minY + maxY) / 2 - containerRect.top,
|
|
263
|
+
diameter: Math.min(maxX - minX, maxY - minY)
|
|
264
|
+
});
|
|
265
|
+
};
|
|
266
|
+
measure();
|
|
267
|
+
const resizeObserver = new ResizeObserver(measure);
|
|
268
|
+
resizeObserver.observe(container);
|
|
269
|
+
const mutationObserver = new MutationObserver(measure);
|
|
270
|
+
mutationObserver.observe(container, {
|
|
271
|
+
childList: true,
|
|
272
|
+
subtree: true,
|
|
273
|
+
attributes: true,
|
|
274
|
+
attributeFilter: ["d"]
|
|
275
|
+
});
|
|
276
|
+
return () => {
|
|
277
|
+
resizeObserver.disconnect();
|
|
278
|
+
mutationObserver.disconnect();
|
|
279
|
+
};
|
|
280
|
+
}, [responsiveHeight, rest.height, series.length]);
|
|
281
|
+
const donutSizeRatio = useMemo(() => {
|
|
282
|
+
var _a3, _b3, _c2, _d2;
|
|
283
|
+
const size = (_d2 = (_c2 = (_b3 = (_a3 = options.plotOptions) == null ? void 0 : _a3.pie) == null ? void 0 : _b3.donut) == null ? void 0 : _c2.size) != null ? _d2 : "65%";
|
|
284
|
+
const parsed = parseFloat(String(size));
|
|
285
|
+
return Number.isFinite(parsed) ? parsed / 100 : 0.65;
|
|
286
|
+
}, [(_c = (_b2 = (_a2 = options.plotOptions) == null ? void 0 : _a2.pie) == null ? void 0 : _b2.donut) == null ? void 0 : _c.size]);
|
|
287
|
+
const displayColors = resolveInteractiveDonutColors({
|
|
288
|
+
count: series.length,
|
|
289
|
+
colors: baseColors,
|
|
290
|
+
mutedColors: neutralColors,
|
|
291
|
+
selectedIndex
|
|
292
|
+
});
|
|
293
|
+
const legendValue = legendSelectedIndex !== null ? {
|
|
294
|
+
label: (_d = labels[legendSelectedIndex]) != null ? _d : `Categoria ${legendSelectedIndex + 1}`,
|
|
295
|
+
value: Number((_e = series[legendSelectedIndex]) != null ? _e : 0)
|
|
296
|
+
} : null;
|
|
297
|
+
const interactiveOptions = useMemo(() => {
|
|
298
|
+
var _a3, _b3, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j, _k, _l, _m;
|
|
299
|
+
const originalSelection = (_b3 = (_a3 = options.chart) == null ? void 0 : _a3.events) == null ? void 0 : _b3.dataPointSelection;
|
|
300
|
+
const originalLegendClick = (_d2 = (_c2 = options.chart) == null ? void 0 : _c2.events) == null ? void 0 : _d2.legendClick;
|
|
301
|
+
return __spreadProps(__spreadValues({}, options), {
|
|
302
|
+
colors: displayColors,
|
|
303
|
+
fill: highContrast ? {
|
|
304
|
+
type: "pattern",
|
|
305
|
+
pattern: {
|
|
306
|
+
style: [
|
|
307
|
+
"verticalLines",
|
|
308
|
+
"horizontalLines",
|
|
309
|
+
"slantedLines",
|
|
310
|
+
"squares",
|
|
311
|
+
"circles"
|
|
312
|
+
],
|
|
313
|
+
width: 6,
|
|
314
|
+
height: 6,
|
|
315
|
+
strokeWidth: 2
|
|
316
|
+
}
|
|
317
|
+
} : __spreadProps(__spreadValues({}, options.fill), {
|
|
318
|
+
type: (_f2 = (_e2 = options.fill) == null ? void 0 : _e2.type) != null ? _f2 : "solid",
|
|
319
|
+
opacity: (_h2 = (_g2 = options.fill) == null ? void 0 : _g2.opacity) != null ? _h2 : 1
|
|
320
|
+
}),
|
|
321
|
+
stroke: highContrast ? __spreadProps(__spreadValues({}, options.stroke), { colors: ["#ffffff"], width: 2 }) : options.stroke,
|
|
322
|
+
chart: __spreadProps(__spreadValues({}, options.chart), {
|
|
323
|
+
events: __spreadProps(__spreadValues({}, (_i2 = options.chart) == null ? void 0 : _i2.events), {
|
|
324
|
+
dataPointSelection(event, chart, config) {
|
|
325
|
+
originalSelection == null ? void 0 : originalSelection(event, chart, config);
|
|
326
|
+
const nextIndex = Number(config == null ? void 0 : config.dataPointIndex);
|
|
327
|
+
if (!Number.isInteger(nextIndex) || nextIndex < 0) return;
|
|
328
|
+
setSelectedIndex(
|
|
329
|
+
(current) => current === nextIndex ? null : nextIndex
|
|
330
|
+
);
|
|
331
|
+
},
|
|
332
|
+
legendClick(chartContext, seriesIndex, config) {
|
|
333
|
+
originalLegendClick == null ? void 0 : originalLegendClick(chartContext, seriesIndex, config);
|
|
334
|
+
if (typeof seriesIndex !== "number" || seriesIndex < 0) return;
|
|
335
|
+
setLegendSelectedIndex(
|
|
336
|
+
(current) => current === seriesIndex ? null : seriesIndex
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
})
|
|
340
|
+
}),
|
|
341
|
+
legend: __spreadProps(__spreadValues({}, options.legend), {
|
|
342
|
+
labels: __spreadProps(__spreadValues({}, (_j = options.legend) == null ? void 0 : _j.labels), {
|
|
343
|
+
colors: chartTheme.axis
|
|
344
|
+
}),
|
|
345
|
+
onItemClick: __spreadProps(__spreadValues({}, (_k = options.legend) == null ? void 0 : _k.onItemClick), {
|
|
346
|
+
toggleDataSeries: false
|
|
347
|
+
})
|
|
348
|
+
}),
|
|
349
|
+
states: __spreadProps(__spreadValues({}, options.states), {
|
|
350
|
+
hover: __spreadProps(__spreadValues({}, (_l = options.states) == null ? void 0 : _l.hover), {
|
|
351
|
+
filter: { type: "none" }
|
|
352
|
+
}),
|
|
353
|
+
active: __spreadProps(__spreadValues({}, (_m = options.states) == null ? void 0 : _m.active), {
|
|
354
|
+
allowMultipleDataPointsSelection: false,
|
|
355
|
+
filter: { type: "none" }
|
|
356
|
+
})
|
|
357
|
+
}),
|
|
358
|
+
tooltip: __spreadProps(__spreadValues({}, options.tooltip), {
|
|
359
|
+
enabled: true,
|
|
360
|
+
followCursor: true,
|
|
361
|
+
custom({ series: tooltipSeries, seriesIndex }) {
|
|
362
|
+
var _a4, _b4;
|
|
363
|
+
const value = Number((_a4 = tooltipSeries == null ? void 0 : tooltipSeries[seriesIndex]) != null ? _a4 : 0);
|
|
364
|
+
const label = escapeDonutTooltipText(
|
|
365
|
+
(_b4 = labels[seriesIndex]) != null ? _b4 : `Categoria ${seriesIndex + 1}`
|
|
366
|
+
);
|
|
367
|
+
const formattedValue = escapeDonutTooltipText(valueFormatter(value));
|
|
368
|
+
return `<div class="donut-chart-tooltip"><span class="donut-chart-tooltip-label">${label}</span><strong class="donut-chart-tooltip-value">${formattedValue}</strong></div>`;
|
|
369
|
+
}
|
|
370
|
+
})
|
|
371
|
+
});
|
|
372
|
+
}, [
|
|
373
|
+
chartTheme.axis,
|
|
374
|
+
displayColors,
|
|
375
|
+
highContrast,
|
|
376
|
+
labels,
|
|
377
|
+
options,
|
|
378
|
+
valueFormatter
|
|
379
|
+
]);
|
|
380
|
+
const selectedLabel = selectedIndex === null ? "Nenhuma categoria selecionada" : `${(_f = labels[selectedIndex]) != null ? _f : `Categoria ${selectedIndex + 1}`}: ${valueFormatter(
|
|
381
|
+
Number((_g = series[selectedIndex]) != null ? _g : 0)
|
|
382
|
+
)}`;
|
|
383
|
+
const legendValueLabel = legendSelectedIndex === null ? "" : `Valor em destaque: ${(_h = labels[legendSelectedIndex]) != null ? _h : `Categoria ${legendSelectedIndex + 1}`}: ${valueFormatter(Number((_i = series[legendSelectedIndex]) != null ? _i : 0))}`;
|
|
384
|
+
const handleKeyDown = (event) => {
|
|
385
|
+
if (["ArrowRight", "ArrowDown", "ArrowLeft", "ArrowUp"].includes(event.key)) {
|
|
386
|
+
event.preventDefault();
|
|
387
|
+
const direction = event.key === "ArrowRight" || event.key === "ArrowDown" ? 1 : -1;
|
|
388
|
+
setSelectedIndex(
|
|
389
|
+
(current) => resolveRelativeDonutSelection({
|
|
390
|
+
currentIndex: current,
|
|
391
|
+
direction,
|
|
392
|
+
count: series.length
|
|
393
|
+
})
|
|
394
|
+
);
|
|
395
|
+
}
|
|
396
|
+
if (event.key === "Escape") {
|
|
397
|
+
setSelectedIndex(null);
|
|
398
|
+
setLegendSelectedIndex(null);
|
|
399
|
+
}
|
|
400
|
+
};
|
|
401
|
+
return /* @__PURE__ */ jsxs(
|
|
402
|
+
"div",
|
|
403
|
+
{
|
|
404
|
+
ref: containerRef,
|
|
405
|
+
role: "group",
|
|
406
|
+
tabIndex: 0,
|
|
407
|
+
"aria-label": ariaLabel,
|
|
408
|
+
"aria-describedby": instructionsId,
|
|
409
|
+
onKeyDown: handleKeyDown,
|
|
410
|
+
className: `chart-keyboard-focus-ring relative min-w-0 rounded-sm ${className != null ? className : ""}`.trim(),
|
|
411
|
+
children: [
|
|
412
|
+
/* @__PURE__ */ jsx2(
|
|
413
|
+
LazyApexChart,
|
|
414
|
+
__spreadProps(__spreadValues({}, rest), {
|
|
415
|
+
className: chartClassName,
|
|
416
|
+
height: responsiveHeight && measuredChartHeight ? measuredChartHeight : rest.height,
|
|
417
|
+
options: interactiveOptions,
|
|
418
|
+
series,
|
|
419
|
+
type: "donut"
|
|
420
|
+
}),
|
|
421
|
+
highContrast ? "donut-high-contrast" : "donut-standard"
|
|
422
|
+
),
|
|
423
|
+
legendValue && pieCircle && /* @__PURE__ */ jsxs(
|
|
424
|
+
"div",
|
|
425
|
+
{
|
|
426
|
+
"aria-hidden": "true",
|
|
427
|
+
className: "pointer-events-none absolute flex flex-col items-center justify-center text-center",
|
|
428
|
+
style: {
|
|
429
|
+
left: pieCircle.cx,
|
|
430
|
+
top: pieCircle.cy,
|
|
431
|
+
width: pieCircle.diameter * donutSizeRatio * 0.94,
|
|
432
|
+
transform: "translate(-50%, -50%)"
|
|
433
|
+
},
|
|
434
|
+
children: [
|
|
435
|
+
/* @__PURE__ */ jsx2("span", { className: "w-full truncate text-xs leading-tight text-content-secondary", children: legendValue.label }),
|
|
436
|
+
/* @__PURE__ */ jsx2("span", { className: "w-full break-words text-md font-bold leading-tight text-content-primary", children: valueFormatter(legendValue.value) })
|
|
437
|
+
]
|
|
438
|
+
}
|
|
439
|
+
),
|
|
440
|
+
/* @__PURE__ */ jsx2("span", { className: "sr-only", "aria-live": "polite", children: selectedLabel }),
|
|
441
|
+
/* @__PURE__ */ jsx2("span", { className: "sr-only", "aria-live": "polite", children: legendValueLabel }),
|
|
442
|
+
/* @__PURE__ */ jsx2("span", { id: instructionsId, className: "sr-only", children: "Use as setas para navegar pelas categorias e Escape para limpar a sele\xE7\xE3o." })
|
|
443
|
+
]
|
|
444
|
+
}
|
|
445
|
+
);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// src/components/chart/TimeSeriesChart.tsx
|
|
449
|
+
import { useEffect as useEffect4, useRef as useRef2, useState as useState4 } from "react";
|
|
450
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
451
|
+
function TimeSeriesChart(_a) {
|
|
452
|
+
var _b = _a, {
|
|
453
|
+
options,
|
|
454
|
+
ariaLabel,
|
|
455
|
+
className,
|
|
456
|
+
chartClassName,
|
|
457
|
+
responsiveHeight = false,
|
|
458
|
+
highContrastOverride
|
|
459
|
+
} = _b, chartProps = __objRest(_b, [
|
|
460
|
+
"options",
|
|
461
|
+
"ariaLabel",
|
|
462
|
+
"className",
|
|
463
|
+
"chartClassName",
|
|
464
|
+
"responsiveHeight",
|
|
465
|
+
"highContrastOverride"
|
|
466
|
+
]);
|
|
467
|
+
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
|
|
468
|
+
const storedHighContrast = useHighContrastPreference();
|
|
469
|
+
const highContrast = highContrastOverride != null ? highContrastOverride : storedHighContrast;
|
|
470
|
+
const theme = getChartTheme();
|
|
471
|
+
const containerRef = useRef2(null);
|
|
472
|
+
const [measuredHeight, setMeasuredHeight] = useState4(null);
|
|
473
|
+
const [measuredWidth, setMeasuredWidth] = useState4(null);
|
|
474
|
+
const themeKey = [
|
|
475
|
+
highContrast ? "high-contrast" : "standard",
|
|
476
|
+
theme.axis,
|
|
477
|
+
theme.axisBorder,
|
|
478
|
+
theme.grid,
|
|
479
|
+
theme.surface,
|
|
480
|
+
...theme.series
|
|
481
|
+
].join("|");
|
|
482
|
+
useEffect4(() => {
|
|
483
|
+
if (!responsiveHeight) {
|
|
484
|
+
setMeasuredHeight(null);
|
|
485
|
+
setMeasuredWidth(null);
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
const container = containerRef.current;
|
|
489
|
+
if (!container || typeof ResizeObserver === "undefined") return;
|
|
490
|
+
const fallbackHeight = typeof chartProps.height === "number" ? chartProps.height : 0;
|
|
491
|
+
let frame = 0;
|
|
492
|
+
const measure = () => {
|
|
493
|
+
cancelAnimationFrame(frame);
|
|
494
|
+
frame = requestAnimationFrame(() => {
|
|
495
|
+
const bounds = container.getBoundingClientRect();
|
|
496
|
+
const nextWidth = Math.floor(bounds.width);
|
|
497
|
+
const nextHeight = Math.max(
|
|
498
|
+
fallbackHeight,
|
|
499
|
+
Math.floor(bounds.height)
|
|
500
|
+
);
|
|
501
|
+
if (nextWidth > 0) {
|
|
502
|
+
setMeasuredWidth(
|
|
503
|
+
(current) => current === nextWidth ? current : nextWidth
|
|
504
|
+
);
|
|
505
|
+
}
|
|
506
|
+
if (nextHeight > 0) {
|
|
507
|
+
setMeasuredHeight(
|
|
508
|
+
(current) => current === nextHeight ? current : nextHeight
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
};
|
|
513
|
+
measure();
|
|
514
|
+
const resizeObserver = new ResizeObserver(measure);
|
|
515
|
+
resizeObserver.observe(container);
|
|
516
|
+
return () => {
|
|
517
|
+
cancelAnimationFrame(frame);
|
|
518
|
+
resizeObserver.disconnect();
|
|
519
|
+
};
|
|
520
|
+
}, [chartProps.height, responsiveHeight]);
|
|
521
|
+
const renderedHeight = responsiveHeight && measuredHeight ? measuredHeight : chartProps.height;
|
|
522
|
+
const renderedWidth = responsiveHeight && measuredWidth ? measuredWidth : chartProps.width;
|
|
523
|
+
const xAxis = options.xaxis;
|
|
524
|
+
const xAxisCategories = Array.isArray(xAxis == null ? void 0 : xAxis.categories) ? xAxis.categories : [];
|
|
525
|
+
const availableWidth = typeof renderedWidth === "number" ? renderedWidth : 720;
|
|
526
|
+
const maxVisibleXAxisLabels = Math.max(
|
|
527
|
+
4,
|
|
528
|
+
Math.min(12, Math.floor(availableWidth / 88))
|
|
529
|
+
);
|
|
530
|
+
const xAxisLabelStep = Math.max(
|
|
531
|
+
1,
|
|
532
|
+
Math.ceil(xAxisCategories.length / maxVisibleXAxisLabels)
|
|
533
|
+
);
|
|
534
|
+
const hasDenseXAxis = xAxisCategories.length > maxVisibleXAxisLabels;
|
|
535
|
+
const xAxisCategoriesKey = JSON.stringify(xAxisCategories);
|
|
536
|
+
const responsiveXAxisFormatter = xAxisCategories.length ? (value, _timestamp, opts) => {
|
|
537
|
+
var _a3, _b3;
|
|
538
|
+
const fallbackIndex = xAxisCategories.findIndex(
|
|
539
|
+
(category) => String(category) === String(value)
|
|
540
|
+
);
|
|
541
|
+
const index = (_a3 = opts == null ? void 0 : opts.dataPointIndex) != null ? _a3 : fallbackIndex >= 0 ? fallbackIndex : 0;
|
|
542
|
+
const isLast = index === xAxisCategories.length - 1;
|
|
543
|
+
return index % xAxisLabelStep === 0 || isLast ? String((_b3 = xAxisCategories[index]) != null ? _b3 : value) : "";
|
|
544
|
+
} : (_a2 = xAxis == null ? void 0 : xAxis.labels) == null ? void 0 : _a2.formatter;
|
|
545
|
+
const renderKey = [
|
|
546
|
+
themeKey,
|
|
547
|
+
renderedWidth != null ? renderedWidth : "auto-width",
|
|
548
|
+
renderedHeight != null ? renderedHeight : "auto-height",
|
|
549
|
+
xAxisCategoriesKey
|
|
550
|
+
].join("|");
|
|
551
|
+
const yAxis = Array.isArray(options.yaxis) ? options.yaxis.map((axis) => {
|
|
552
|
+
var _a3;
|
|
553
|
+
return __spreadProps(__spreadValues({}, axis), {
|
|
554
|
+
labels: __spreadProps(__spreadValues({}, axis.labels), {
|
|
555
|
+
show: true,
|
|
556
|
+
style: __spreadProps(__spreadValues({
|
|
557
|
+
fontSize: "11px",
|
|
558
|
+
fontWeight: 500
|
|
559
|
+
}, (_a3 = axis.labels) == null ? void 0 : _a3.style), {
|
|
560
|
+
colors: theme.axis
|
|
561
|
+
})
|
|
562
|
+
})
|
|
563
|
+
});
|
|
564
|
+
}) : __spreadProps(__spreadValues({}, options.yaxis), {
|
|
565
|
+
labels: __spreadProps(__spreadValues({}, (_b2 = options.yaxis) == null ? void 0 : _b2.labels), {
|
|
566
|
+
show: true,
|
|
567
|
+
style: __spreadProps(__spreadValues({
|
|
568
|
+
fontSize: "11px",
|
|
569
|
+
fontWeight: 500
|
|
570
|
+
}, (_d = (_c = options.yaxis) == null ? void 0 : _c.labels) == null ? void 0 : _d.style), {
|
|
571
|
+
colors: theme.axis
|
|
572
|
+
})
|
|
573
|
+
})
|
|
574
|
+
});
|
|
575
|
+
const sharedOptions = __spreadProps(__spreadValues({}, options), {
|
|
576
|
+
colors: highContrast ? [...theme.series] : options.colors,
|
|
577
|
+
chart: __spreadProps(__spreadValues({
|
|
578
|
+
toolbar: { show: false },
|
|
579
|
+
zoom: { enabled: false },
|
|
580
|
+
parentHeightOffset: 0,
|
|
581
|
+
redrawOnParentResize: true,
|
|
582
|
+
redrawOnWindowResize: true
|
|
583
|
+
}, options.chart), {
|
|
584
|
+
foreColor: theme.axis
|
|
585
|
+
}),
|
|
586
|
+
dataLabels: __spreadValues({
|
|
587
|
+
enabled: false
|
|
588
|
+
}, options.dataLabels),
|
|
589
|
+
grid: __spreadProps(__spreadValues({
|
|
590
|
+
show: true,
|
|
591
|
+
borderColor: theme.grid,
|
|
592
|
+
strokeDashArray: 0
|
|
593
|
+
}, options.grid), {
|
|
594
|
+
xaxis: {
|
|
595
|
+
lines: __spreadProps(__spreadValues({}, (_f = (_e = options.grid) == null ? void 0 : _e.xaxis) == null ? void 0 : _f.lines), {
|
|
596
|
+
show: hasDenseXAxis ? false : (_j = (_i = (_h = (_g = options.grid) == null ? void 0 : _g.xaxis) == null ? void 0 : _h.lines) == null ? void 0 : _i.show) != null ? _j : true
|
|
597
|
+
})
|
|
598
|
+
},
|
|
599
|
+
yaxis: {
|
|
600
|
+
lines: __spreadValues({ show: true }, (_l = (_k = options.grid) == null ? void 0 : _k.yaxis) == null ? void 0 : _l.lines)
|
|
601
|
+
},
|
|
602
|
+
padding: __spreadValues({
|
|
603
|
+
top: 0,
|
|
604
|
+
right: 8,
|
|
605
|
+
bottom: 8,
|
|
606
|
+
left: 8
|
|
607
|
+
}, (_m = options.grid) == null ? void 0 : _m.padding)
|
|
608
|
+
}),
|
|
609
|
+
stroke: __spreadProps(__spreadValues({
|
|
610
|
+
width: 2,
|
|
611
|
+
curve: "straight"
|
|
612
|
+
}, options.stroke), {
|
|
613
|
+
colors: highContrast ? [...theme.series] : (_n = options.stroke) == null ? void 0 : _n.colors,
|
|
614
|
+
dashArray: highContrast ? [0, 6, 2, 8, 4, 10, 1, 7, 3, 9, 5, 11] : (_p = (_o = options.stroke) == null ? void 0 : _o.dashArray) != null ? _p : 0
|
|
615
|
+
}),
|
|
616
|
+
markers: __spreadProps(__spreadValues({
|
|
617
|
+
strokeWidth: 1,
|
|
618
|
+
strokeColors: [theme.surface]
|
|
619
|
+
}, options.markers), {
|
|
620
|
+
size: highContrast ? 4 : (_r = (_q = options.markers) == null ? void 0 : _q.size) != null ? _r : 3,
|
|
621
|
+
hover: __spreadValues({ size: 4 }, (_s = options.markers) == null ? void 0 : _s.hover)
|
|
622
|
+
}),
|
|
623
|
+
annotations: highContrast ? __spreadProps(__spreadValues({}, options.annotations), {
|
|
624
|
+
xaxis: (_u = (_t = options.annotations) == null ? void 0 : _t.xaxis) == null ? void 0 : _u.map((annotation, index) => __spreadProps(__spreadValues({}, annotation), {
|
|
625
|
+
fillColor: theme.series[index % theme.series.length],
|
|
626
|
+
opacity: 0.28
|
|
627
|
+
}))
|
|
628
|
+
}) : options.annotations,
|
|
629
|
+
xaxis: __spreadProps(__spreadValues({
|
|
630
|
+
tooltip: { enabled: false },
|
|
631
|
+
axisBorder: { color: theme.axisBorder }
|
|
632
|
+
}, xAxis), {
|
|
633
|
+
tickAmount: xAxisCategories.length ? void 0 : xAxis == null ? void 0 : xAxis.tickAmount,
|
|
634
|
+
axisTicks: __spreadProps(__spreadValues({
|
|
635
|
+
color: theme.axisBorder
|
|
636
|
+
}, xAxis == null ? void 0 : xAxis.axisTicks), {
|
|
637
|
+
show: hasDenseXAxis ? false : (_w = (_v = xAxis == null ? void 0 : xAxis.axisTicks) == null ? void 0 : _v.show) != null ? _w : true
|
|
638
|
+
}),
|
|
639
|
+
labels: __spreadProps(__spreadValues({}, xAxis == null ? void 0 : xAxis.labels), {
|
|
640
|
+
show: true,
|
|
641
|
+
formatter: responsiveXAxisFormatter,
|
|
642
|
+
style: __spreadProps(__spreadValues({
|
|
643
|
+
fontSize: "11px",
|
|
644
|
+
fontWeight: 500
|
|
645
|
+
}, (_x = xAxis == null ? void 0 : xAxis.labels) == null ? void 0 : _x.style), {
|
|
646
|
+
colors: theme.axis
|
|
647
|
+
})
|
|
648
|
+
})
|
|
649
|
+
}),
|
|
650
|
+
yaxis: yAxis,
|
|
651
|
+
tooltip: __spreadValues({
|
|
652
|
+
shared: true,
|
|
653
|
+
intersect: false,
|
|
654
|
+
followCursor: true
|
|
655
|
+
}, options.tooltip),
|
|
656
|
+
legend: __spreadProps(__spreadValues({}, options.legend), {
|
|
657
|
+
labels: __spreadProps(__spreadValues({}, (_y = options.legend) == null ? void 0 : _y.labels), {
|
|
658
|
+
colors: theme.axis
|
|
659
|
+
})
|
|
660
|
+
}),
|
|
661
|
+
noData: __spreadProps(__spreadValues({
|
|
662
|
+
text: "Nenhum dado dispon\xEDvel no per\xEDodo selecionado"
|
|
663
|
+
}, options.noData), {
|
|
664
|
+
style: __spreadProps(__spreadValues({
|
|
665
|
+
fontSize: "15px"
|
|
666
|
+
}, (_z = options.noData) == null ? void 0 : _z.style), {
|
|
667
|
+
color: theme.axis
|
|
668
|
+
})
|
|
669
|
+
})
|
|
670
|
+
});
|
|
671
|
+
return /* @__PURE__ */ jsx3(
|
|
672
|
+
"div",
|
|
673
|
+
{
|
|
674
|
+
ref: containerRef,
|
|
675
|
+
role: "img",
|
|
676
|
+
"aria-label": ariaLabel,
|
|
677
|
+
className,
|
|
678
|
+
children: /* @__PURE__ */ jsx3(
|
|
679
|
+
LazyApexChart,
|
|
680
|
+
__spreadProps(__spreadValues({}, chartProps), {
|
|
681
|
+
className: chartClassName,
|
|
682
|
+
width: renderedWidth,
|
|
683
|
+
height: renderedHeight,
|
|
684
|
+
options: sharedOptions
|
|
685
|
+
}),
|
|
686
|
+
renderKey
|
|
687
|
+
)
|
|
688
|
+
}
|
|
689
|
+
);
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
// src/components/chart/TimeRangeSelector.tsx
|
|
693
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
694
|
+
function TimeRangeSelector({
|
|
695
|
+
options,
|
|
696
|
+
selected,
|
|
697
|
+
onSelect,
|
|
698
|
+
ariaLabel = "Per\xEDodo do gr\xE1fico",
|
|
699
|
+
className
|
|
700
|
+
}) {
|
|
701
|
+
return /* @__PURE__ */ jsx4(
|
|
702
|
+
"div",
|
|
703
|
+
{
|
|
704
|
+
role: "group",
|
|
705
|
+
"aria-label": ariaLabel,
|
|
706
|
+
className: `flex min-w-0 flex-wrap justify-start gap-1.5 ${className != null ? className : ""}`.trim(),
|
|
707
|
+
children: options.map((range) => {
|
|
708
|
+
const isSelected = selected === range;
|
|
709
|
+
return /* @__PURE__ */ jsx4(
|
|
710
|
+
"button",
|
|
711
|
+
{
|
|
712
|
+
type: "button",
|
|
713
|
+
"aria-pressed": isSelected,
|
|
714
|
+
onClick: () => onSelect(range),
|
|
715
|
+
className: `shrink-0 whitespace-nowrap rounded-sm border px-2.5 py-1 text-sm font-semibold transition-colors ${isSelected ? "border-selection-border bg-selection-background text-selection-content" : "border-primary-1 text-primary-1 hover:bg-primary-5"}`,
|
|
716
|
+
children: range
|
|
717
|
+
},
|
|
718
|
+
range
|
|
719
|
+
);
|
|
720
|
+
})
|
|
721
|
+
}
|
|
722
|
+
);
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
// src/components/chart/time-series-chart-utils.ts
|
|
726
|
+
var TOOLTIP_ENTITIES2 = {
|
|
727
|
+
"&": "&",
|
|
728
|
+
"<": "<",
|
|
729
|
+
">": ">",
|
|
730
|
+
'"': """,
|
|
731
|
+
"'": "'"
|
|
732
|
+
};
|
|
733
|
+
function escapeTimeSeriesTooltipText(value) {
|
|
734
|
+
return String(value != null ? value : "").replace(
|
|
735
|
+
/[&<>"']/g,
|
|
736
|
+
(character) => TOOLTIP_ENTITIES2[character]
|
|
737
|
+
);
|
|
738
|
+
}
|
|
739
|
+
var SAFE_TOOLTIP_COLOR = /^(?:#[\da-f]{3,8}|rgba?\([\d\s.,%]+\)|hsla?\([\d\s.,%]+\)|var\(--[\w-]+\)|[a-z]+)$/i;
|
|
740
|
+
function normalizeTimeSeriesTooltipColor(value) {
|
|
741
|
+
const color = String(value != null ? value : "").trim();
|
|
742
|
+
return SAFE_TOOLTIP_COLOR.test(color) ? color : "currentColor";
|
|
743
|
+
}
|
|
744
|
+
function buildTimeSeriesTooltip({
|
|
745
|
+
reference,
|
|
746
|
+
rows
|
|
747
|
+
}) {
|
|
748
|
+
const content = rows.map(({ label, value, color }) => {
|
|
749
|
+
const marker = color ? `<span class="time-series-chart-tooltip-marker" style="background-color:${normalizeTimeSeriesTooltipColor(color)}"></span>` : "";
|
|
750
|
+
return `<div class="time-series-chart-tooltip-row"><span class="time-series-chart-tooltip-name">${marker}${escapeTimeSeriesTooltipText(label)}</span><strong>${escapeTimeSeriesTooltipText(value)}</strong></div>`;
|
|
751
|
+
}).join("");
|
|
752
|
+
return `<div class="time-series-chart-tooltip"><div class="time-series-chart-tooltip-reference">${escapeTimeSeriesTooltipText(reference)}</div>${content}</div>`;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
export {
|
|
756
|
+
LazyApexChart,
|
|
757
|
+
getChartTheme,
|
|
758
|
+
getChartSeriesRecord,
|
|
759
|
+
resolveInteractiveDonutColors,
|
|
760
|
+
resolveRelativeDonutSelection,
|
|
761
|
+
escapeDonutTooltipText,
|
|
762
|
+
InteractiveDonutChart,
|
|
763
|
+
TimeSeriesChart,
|
|
764
|
+
TimeRangeSelector,
|
|
765
|
+
escapeTimeSeriesTooltipText,
|
|
766
|
+
normalizeTimeSeriesTooltipColor,
|
|
767
|
+
buildTimeSeriesTooltip
|
|
768
|
+
};
|
|
769
|
+
//# sourceMappingURL=chunk-6MXHE5MD.js.map
|