@carto/ps-react-ui 5.0.0-widgets.11 → 5.0.0-widgets.13
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/{cjs-D9ro6BXv.js → cjs-D4KH3azB.js} +2 -2
- package/dist/{cjs-D9ro6BXv.js.map → cjs-D4KH3azB.js.map} +1 -1
- package/dist/components.js +26 -26
- package/dist/components.js.map +1 -1
- package/dist/{lasso-tool-CYn3ivf-.js → lasso-tool-BwRzEW7k.js} +10 -10
- package/dist/{lasso-tool-CYn3ivf-.js.map → lasso-tool-BwRzEW7k.js.map} +1 -1
- package/dist/{note-Clng2ej6.js → note-t51drNe0.js} +3 -3
- package/dist/{note-Clng2ej6.js.map → note-t51drNe0.js.map} +1 -1
- package/dist/{series-Do02NQUF.js → series-D3Pc-kYX.js} +2 -2
- package/dist/{series-Do02NQUF.js.map → series-D3Pc-kYX.js.map} +1 -1
- package/dist/types/components/basemaps/group-wrapper.d.ts +1 -1
- package/dist/types/widgets/error/error.d.ts +1 -1
- package/dist/types/widgets/no-data/no-data.d.ts +1 -1
- package/dist/types/widgets/skeleton-loader/skeleton-loader.d.ts +1 -1
- package/dist/{utils-Dv5Z47UQ.js → utils-D3-eQyDR.js} +2 -2
- package/dist/{utils-Dv5Z47UQ.js.map → utils-D3-eQyDR.js.map} +1 -1
- package/dist/widgets/actions.js +19 -17
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +5 -5
- package/dist/widgets/bar.js.map +1 -1
- package/dist/widgets/category.js +88 -87
- package/dist/widgets/category.js.map +1 -1
- package/dist/widgets/echart.js +3 -3
- package/dist/widgets/echart.js.map +1 -1
- package/dist/widgets/formula.js +4 -4
- package/dist/widgets/formula.js.map +1 -1
- package/dist/widgets/histogram.js +5 -5
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/loader.js +1 -1
- package/dist/widgets/markdown.js +5 -5
- package/dist/widgets/markdown.js.map +1 -1
- package/dist/widgets/note.js +1 -1
- package/dist/widgets/pie.js +7 -7
- package/dist/widgets/pie.js.map +1 -1
- package/dist/widgets/range.js +6 -6
- package/dist/widgets/range.js.map +1 -1
- package/dist/widgets/scatterplot.js +5 -5
- package/dist/widgets/scatterplot.js.map +1 -1
- package/dist/widgets/spread.js +4 -4
- package/dist/widgets/spread.js.map +1 -1
- package/dist/widgets/table.js +8 -8
- package/dist/widgets/table.js.map +1 -1
- package/dist/widgets/timeseries.js +5 -5
- package/dist/widgets/timeseries.js.map +1 -1
- package/dist/widgets/toolbar-actions.js +1866 -1465
- package/dist/widgets/toolbar-actions.js.map +1 -1
- package/dist/widgets/wrapper.js +7 -7
- package/dist/widgets/wrapper.js.map +1 -1
- package/dist/widgets.js +1 -1
- package/package.json +4 -4
package/dist/widgets/actions.js
CHANGED
|
@@ -7,10 +7,10 @@ import { useShallow as ee } from "zustand/shallow";
|
|
|
7
7
|
import { useState as re, useRef as se, useEffect as j } from "react";
|
|
8
8
|
import "react-markdown";
|
|
9
9
|
import { a as il, d as rl } from "../exports-Cr43OCul.js";
|
|
10
|
-
import "../lasso-tool-
|
|
11
|
-
import "../cjs-
|
|
10
|
+
import "../lasso-tool-BwRzEW7k.js";
|
|
11
|
+
import "../cjs-D4KH3azB.js";
|
|
12
12
|
import { T as X } from "../tooltip-BDnrRKrp.js";
|
|
13
|
-
import { b as Pe, a as Be, D as Fe } from "../utils-
|
|
13
|
+
import { b as Pe, a as Be, D as Fe } from "../utils-D3-eQyDR.js";
|
|
14
14
|
import { useSensors as Ae, useSensor as de, PointerSensor as Ve, KeyboardSensor as Ze, DndContext as Me, closestCenter as He } from "@dnd-kit/core";
|
|
15
15
|
import { useSortable as je, sortableKeyboardCoordinates as Ge, arrayMove as Ne, SortableContext as Ue, verticalListSortingStrategy as Ke } from "@dnd-kit/sortable";
|
|
16
16
|
import { CSS as Ye } from "@dnd-kit/utilities";
|
|
@@ -87,7 +87,7 @@ function Yt(l) {
|
|
|
87
87
|
isFullScreen: !1
|
|
88
88
|
}), e[22] = n, e[23] = C) : C = e[23];
|
|
89
89
|
let $;
|
|
90
|
-
e[24] === Symbol.for("react.memo_cache_sentinel") ? ($ = /* @__PURE__ */ m(we, {}), e[24] = $) : $ = e[24];
|
|
90
|
+
e[24] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? ($ = /* @__PURE__ */ m(we, {}), e[24] = $) : $ = e[24];
|
|
91
91
|
let f;
|
|
92
92
|
e[25] !== C ? (f = /* @__PURE__ */ m(q, { onClick: C, children: $ }), e[25] = C, e[26] = f) : f = e[26];
|
|
93
93
|
let I;
|
|
@@ -131,7 +131,7 @@ function qt(l) {
|
|
|
131
131
|
e[2] !== t ? (d = (D) => D.getWidget(t)?.data, e[2] = t, e[3] = d) : d = e[3];
|
|
132
132
|
const b = R(ee(d)), [s, r] = re(!1), [T, g] = re(null);
|
|
133
133
|
let o;
|
|
134
|
-
e[4] === Symbol.for("react.memo_cache_sentinel") ? (o = (D) => {
|
|
134
|
+
e[4] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = (D) => {
|
|
135
135
|
D.stopPropagation(), g(D.currentTarget);
|
|
136
136
|
}, e[4] = o) : o = e[4];
|
|
137
137
|
const n = o;
|
|
@@ -157,7 +157,7 @@ function qt(l) {
|
|
|
157
157
|
let C;
|
|
158
158
|
e[13] !== p || e[14] !== x || e[15] !== w || e[16] !== k || e[17] !== E ? (C = /* @__PURE__ */ m(q, { size: "small", "aria-label": w, "aria-controls": "options-menu", "aria-haspopup": "true", onClick: n, ...p, disabled: k, className: E, children: x }), e[13] = p, e[14] = x, e[15] = w, e[16] = k, e[17] = E, e[18] = C) : C = e[18];
|
|
159
159
|
let $, f;
|
|
160
|
-
e[19] === Symbol.for("react.memo_cache_sentinel") ? ($ = {
|
|
160
|
+
e[19] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? ($ = {
|
|
161
161
|
vertical: "bottom",
|
|
162
162
|
horizontal: "right"
|
|
163
163
|
}, f = {
|
|
@@ -166,7 +166,7 @@ function qt(l) {
|
|
|
166
166
|
}, e[19] = $, e[20] = f) : ($ = e[19], f = e[20]);
|
|
167
167
|
const I = !!T;
|
|
168
168
|
let L, z;
|
|
169
|
-
e[21] === Symbol.for("react.memo_cache_sentinel") ? (L = () => g(null), z = {
|
|
169
|
+
e[21] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (L = () => g(null), z = {
|
|
170
170
|
sx: {
|
|
171
171
|
paddingBottom: 0
|
|
172
172
|
}
|
|
@@ -174,7 +174,9 @@ function qt(l) {
|
|
|
174
174
|
let W;
|
|
175
175
|
if (e[23] !== S || e[24] !== _) {
|
|
176
176
|
let D;
|
|
177
|
-
e[26] !== S ? (D = (P) => /* @__PURE__ */ Q(me, { disabled: P.disabled, onClick: (A) =>
|
|
177
|
+
e[26] !== S ? (D = (P) => /* @__PURE__ */ Q(me, { disabled: P.disabled, onClick: (A) => {
|
|
178
|
+
S(A, P);
|
|
179
|
+
}, children: [
|
|
178
180
|
P.icon && /* @__PURE__ */ m(Te, { sx: {
|
|
179
181
|
color: "text.primary"
|
|
180
182
|
}, children: P.icon }),
|
|
@@ -386,7 +388,7 @@ function it(l) {
|
|
|
386
388
|
const rt = () => {
|
|
387
389
|
const l = U(1);
|
|
388
390
|
let e;
|
|
389
|
-
return l[0] === Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ m("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ m("path", { d: "M4 20V8H8V20H4ZM9 20V13H13V20H9ZM16 20V4H20V20H16Z", fill: "currentColor" }) }), l[0] = e) : e = l[0], e;
|
|
391
|
+
return l[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ m("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ m("path", { d: "M4 20V8H8V20H4ZM9 20V13H13V20H9ZM16 20V4H20V20H16Z", fill: "currentColor" }) }), l[0] = e) : e = l[0], e;
|
|
390
392
|
};
|
|
391
393
|
function Xt(l) {
|
|
392
394
|
const e = U(30), {
|
|
@@ -594,7 +596,7 @@ function tl(l) {
|
|
|
594
596
|
o && !u.current && s.current && s.current.focus(), u.current = o;
|
|
595
597
|
}, F = [o], e[23] = o, e[24] = O, e[25] = F) : (O = e[24], F = e[25]), j(O, F);
|
|
596
598
|
let D, P;
|
|
597
|
-
e[26] === Symbol.for("react.memo_cache_sentinel") ? (D = () => () => {
|
|
599
|
+
e[26] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (D = () => () => {
|
|
598
600
|
r.current && clearTimeout(r.current);
|
|
599
601
|
}, P = [], e[26] = D, e[27] = P) : (D = e[26], P = e[27]), j(D, P);
|
|
600
602
|
let A;
|
|
@@ -614,7 +616,7 @@ function tl(l) {
|
|
|
614
616
|
return null;
|
|
615
617
|
const G = v?.placeholder ?? "Search...", K = v?.clearAriaLabel ?? "Clear search";
|
|
616
618
|
let B;
|
|
617
|
-
e[35] === Symbol.for("react.memo_cache_sentinel") ? (B = /* @__PURE__ */ m(ae, { position: "start", children: /* @__PURE__ */ m(he, {}) }), e[35] = B) : B = e[35];
|
|
619
|
+
e[35] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (B = /* @__PURE__ */ m(ae, { position: "start", children: /* @__PURE__ */ m(he, {}) }), e[35] = B) : B = e[35];
|
|
618
620
|
let Z;
|
|
619
621
|
e[36] !== y || e[37] !== K || e[38] !== H || e[39] !== n ? (Z = n ? /* @__PURE__ */ m(ae, { position: "end", children: /* @__PURE__ */ m(q, { size: "small", "aria-label": K, onClick: H, edge: "end", children: y ?? /* @__PURE__ */ m(Re, { fontSize: "small" }) }) }) : null, e[36] = y, e[37] = K, e[38] = H, e[39] = n, e[40] = Z) : Z = e[40];
|
|
620
622
|
let N;
|
|
@@ -685,7 +687,7 @@ function yt(l) {
|
|
|
685
687
|
const Et = () => {
|
|
686
688
|
const l = U(1);
|
|
687
689
|
let e;
|
|
688
|
-
return l[0] === Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ m("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 18 18", children: /* @__PURE__ */ m("path", { fill: "currentColor", fillRule: "evenodd", d: "M14.25 2.25H3.75c-.825 0-1.5.675-1.5 1.5v10.5c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5V3.75c0-.825-.675-1.5-1.5-1.5m-3.75 12h-3V3.75h3zM3.75 3.75H6v10.5H3.75zM12 14.25V3.75h2.25v10.5z", clipRule: "evenodd" }) }), l[0] = e) : e = l[0], e;
|
|
690
|
+
return l[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (e = /* @__PURE__ */ m("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 18 18", children: /* @__PURE__ */ m("path", { fill: "currentColor", fillRule: "evenodd", d: "M14.25 2.25H3.75c-.825 0-1.5.675-1.5 1.5v10.5c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5V3.75c0-.825-.675-1.5-1.5-1.5m-3.75 12h-3V3.75h3zM3.75 3.75H6v10.5H3.75zM12 14.25V3.75h2.25v10.5z", clipRule: "evenodd" }) }), l[0] = e) : e = l[0], e;
|
|
689
691
|
};
|
|
690
692
|
function Lt(l) {
|
|
691
693
|
const e = U(18), {
|
|
@@ -715,7 +717,7 @@ function Lt(l) {
|
|
|
715
717
|
}, e[4] = b, e[5] = s, e[6] = r, e[7] = a, e[8] = T) : T = e[8];
|
|
716
718
|
const g = T;
|
|
717
719
|
let o;
|
|
718
|
-
e[9] === Symbol.for("react.memo_cache_sentinel") ? (o = {
|
|
720
|
+
e[9] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (o = {
|
|
719
721
|
"&:focus-visible": {
|
|
720
722
|
outline: wt,
|
|
721
723
|
outlineOffset: -2
|
|
@@ -741,7 +743,7 @@ function nl(l) {
|
|
|
741
743
|
e[0] !== t ? (b = (V) => V.getWidget(t)?.columns, e[0] = t, e[1] = b) : b = e[1];
|
|
742
744
|
const s = R(ee(b));
|
|
743
745
|
let r;
|
|
744
|
-
e[2] === Symbol.for("react.memo_cache_sentinel") ? (r = {
|
|
746
|
+
e[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (r = {
|
|
745
747
|
coordinateGetter: Ge
|
|
746
748
|
}, e[2] = r) : r = e[2];
|
|
747
749
|
const T = Ae(de(Ve), de(Ze, r));
|
|
@@ -749,12 +751,12 @@ function nl(l) {
|
|
|
749
751
|
e[3] !== s ? (g = s?.map($t) ?? [], e[3] = s, e[4] = g) : g = e[4];
|
|
750
752
|
const o = g;
|
|
751
753
|
let n;
|
|
752
|
-
e[5] === Symbol.for("react.memo_cache_sentinel") ? (n = (V) => {
|
|
754
|
+
e[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (n = (V) => {
|
|
753
755
|
V.stopPropagation(), a(V.currentTarget);
|
|
754
756
|
}, e[5] = n) : n = e[5];
|
|
755
757
|
const u = n;
|
|
756
758
|
let i;
|
|
757
|
-
e[6] === Symbol.for("react.memo_cache_sentinel") ? (i = () => {
|
|
759
|
+
e[6] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = () => {
|
|
758
760
|
a(null);
|
|
759
761
|
}, e[6] = i) : i = e[6];
|
|
760
762
|
const c = i;
|
|
@@ -785,7 +787,7 @@ function nl(l) {
|
|
|
785
787
|
let L;
|
|
786
788
|
e[20] !== I || e[21] !== k ? (L = /* @__PURE__ */ m(X, { title: k, children: I }), e[20] = I, e[21] = k, e[22] = L) : L = e[22];
|
|
787
789
|
let z, W;
|
|
788
|
-
e[23] === Symbol.for("react.memo_cache_sentinel") ? (z = {
|
|
790
|
+
e[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (z = {
|
|
789
791
|
vertical: "bottom",
|
|
790
792
|
horizontal: "right"
|
|
791
793
|
}, W = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sources":["../../src/widgets/actions/fullscreen/styles.ts","../../src/widgets/actions/fullscreen/fullscreen.tsx","../../src/widgets/actions/download/download.tsx","../../src/widgets/actions/shared/styles.ts","../../src/widgets/actions/relative-data/utils.ts","../../src/widgets/actions/relative-data/relative-data.tsx","../../src/widgets/actions/zoom-toggle/style.ts","../../src/widgets/actions/zoom-toggle/zoom-toggle.tsx","../../src/widgets/actions/stack-toggle/grouped-bar-chart-icon.tsx","../../src/widgets/actions/stack-toggle/stack-toggle.tsx","../../src/widgets/actions/lock-selection/lock-selection.tsx","../../src/widgets/actions/searcher/searcher.tsx","../../src/widgets/actions/searcher/searcher-toggle.tsx","../../src/widgets/actions/change-column/change-column-icon.tsx","../../src/widgets/actions/change-column/sortable-column-item.tsx","../../src/widgets/actions/change-column/change-column.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n title: {\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n },\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(1),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from '@mui/material'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Close, FullscreenOutlined } from '@mui/icons-material'\nimport type {\n FullScreenConfig,\n FullScreenProps,\n FullScreenState,\n} from './types'\nimport { styles } from './styles'\nimport { useShallow } from 'zustand/shallow'\n\nexport function FullScreen({\n id,\n labels,\n children,\n Icon,\n IconButtonProps,\n DialogContentProps: { sx, ...DialogContentProps } = {},\n}: FullScreenProps) {\n const { isFullScreen, title } = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<FullScreenState>(id)\n return {\n isFullScreen: widget?.isFullScreen,\n title: widget?.title,\n }\n }),\n )\n const setWidget = useWidgetStore((state) => state.setWidget)\n\n const updateFullScreenConfig = (updates: Partial<FullScreenConfig>) => {\n setWidget<FullScreenState>(id, {\n isFullScreen: updates.isFullScreen,\n })\n }\n\n return (\n <>\n <IconButton\n {...IconButtonProps}\n onClick={() => updateFullScreenConfig({ isFullScreen: true })}\n >\n {Icon ?? <FullscreenOutlined />}\n </IconButton>\n <Dialog\n maxWidth={false}\n open={!!isFullScreen}\n aria-labelledby={labels?.ariaLabel ?? `fullscreen-dialog-title-${id}`}\n onClose={() => updateFullScreenConfig({ isFullScreen: false })}\n >\n <DialogTitle\n id={`fullscreen-dialog-title-${id}`}\n sx={styles.title.container}\n >\n <Typography variant='subtitle1' component='span'>\n {title}\n </Typography>\n <IconButton\n onClick={() => updateFullScreenConfig({ isFullScreen: false })}\n >\n <Close />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n ...styles.content,\n ...sx,\n }}\n {...DialogContentProps}\n >\n {children}\n </DialogContent>\n </Dialog>\n </>\n )\n}\n","import {\n CircularProgress,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material'\nimport type { DownloadItem, DownloadProps } from './types'\nimport { FileDownloadOutlined } from '@mui/icons-material'\nimport { useState, type MouseEvent } from 'react'\nimport { useWidgetStore } from '../../../widgets'\nimport { useShallow } from 'zustand/shallow'\n\nexport function Download({\n id,\n items,\n labels = {},\n Icon,\n IconButtonProps,\n}: DownloadProps) {\n const data = useWidgetStore(useShallow((state) => state.getWidget(id)?.data))\n\n const [isDownloading, setIsDownloading] = useState(false)\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\n const handleToggle = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }\n\n const handleDownload = (data: string, option: DownloadItem) => {\n const link = document.createElement('a')\n link.href = data\n link.download = option.filename ?? id\n link.style.display = 'none'\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n option.callback?.(link.href)\n }\n\n const handleClick = async (\n event: MouseEvent<HTMLElement>,\n option: DownloadItem,\n ) => {\n event.stopPropagation()\n\n setIsDownloading(true)\n setAnchorEl(null)\n\n const result = await option.modifier(data)\n\n if (!result) {\n setIsDownloading(false)\n return\n }\n\n handleDownload(result, option)\n setIsDownloading(false)\n }\n\n return (\n <>\n <IconButton\n size='small'\n aria-label={labels.ariaLabel ?? 'download options'}\n aria-controls='options-menu'\n aria-haspopup='true'\n onClick={handleToggle}\n {...IconButtonProps}\n disabled={isDownloading || items.length === 0}\n className={isDownloading || anchorEl ? 'active' : ''}\n >\n {isDownloading ? (\n <CircularProgress size={18} color='inherit' />\n ) : (\n (Icon ?? <FileDownloadOutlined />)\n )}\n </IconButton>\n <Menu\n variant='menu'\n elevation={8}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n sx: {\n paddingBottom: 0,\n },\n }}\n >\n {items.map((option) => (\n <MenuItem\n key={option.id}\n disabled={option.disabled}\n onClick={(e) => void handleClick(e, option)}\n >\n {option.icon && (\n <ListItemIcon sx={{ color: 'text.primary' }}>\n {option.icon}\n </ListItemIcon>\n )}\n <ListItemText>{option.label}</ListItemText>\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\n/**\n * Shared styles for widget action buttons\n */\nexport const actionButtonStyles = {\n trigger: {\n '&[data-active=\"true\"]': {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import type { EchartWidgetData } from '../../echart/types'\n\n/**\n * Calculates the sum of all numeric values in the data\n */\nexport function calculateTotal(data: EchartWidgetData): number {\n return data.reduce((total, series) => {\n return series.reduce((seriesTotal, item) => {\n return Object.values(item).reduce((itemTotal: number, value) => {\n return typeof value === 'number' ? itemTotal + value : itemTotal\n }, seriesTotal)\n }, total)\n }, 0)\n}\n\n/**\n * Transforms data to relative (percentage) values\n */\nexport function toRelativeData(\n data: EchartWidgetData,\n total: number,\n): EchartWidgetData {\n if (total === 0) return data\n\n return data.map((series) =>\n series.map((item) => {\n const transformed: Record<string, string | number> = {}\n\n for (const [key, value] of Object.entries(item)) {\n transformed[key] =\n typeof value === 'number' ? (value / total) * 100 : value\n }\n\n return transformed\n }),\n )\n}\n","import { IconButton } from '@mui/material'\nimport { PercentOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect, useRef } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { RelativeDataProps, RelativeDataState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { calculateTotal, toRelativeData } from './utils'\nimport type { EchartWidgetData } from '../../../widgets/echart'\n\nexport const RELATIVE_DATA_TOOL_ID = 'relative-data'\n\n/**\n * Widget action to toggle between relative (percentage) and absolute data display.\n *\n * Registers a transformation tool in the widget pipeline when mounted.\n * When relative mode is active, transforms data to percentages via the pipeline.\n *\n * @example\n * ```tsx\n * <RelativeData\n * id=\"my-widget\"\n * order={20}\n * defaultIsRelative={false}\n * />\n * ```\n */\nexport function RelativeData({\n id,\n order = 10,\n defaultIsRelative = false,\n labels,\n Icon,\n IconButtonProps,\n}: RelativeDataProps) {\n const previousMaxValue = useRef<number | undefined>(undefined)\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n\n const storeIsRelative = useWidgetStore(\n (state) => state.getWidget<RelativeDataState>(id)?.isRelative,\n )\n\n const isRelative = storeIsRelative ?? defaultIsRelative\n\n // Initialize store with default value on mount\n useEffect(() => {\n const currentValue = getWidget<RelativeDataState>(id)?.isRelative\n if (currentValue === undefined) {\n setWidget(id, { isRelative: defaultIsRelative })\n }\n }, [defaultIsRelative, getWidget, id, setWidget])\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: RELATIVE_DATA_TOOL_ID,\n order,\n enabled: isRelative,\n fn: (data) => {\n const echartData = data as EchartWidgetData\n const total = calculateTotal(echartData)\n return toRelativeData(echartData, total)\n },\n })\n\n return () => unregisterTool(id, RELATIVE_DATA_TOOL_ID)\n }, [id, order, registerTool, unregisterTool, isRelative])\n\n // Update enabled flag when toggle changes\n useEffect(() => {\n setToolEnabled(id, RELATIVE_DATA_TOOL_ID, isRelative)\n }, [id, isRelative, setToolEnabled])\n\n const handleToggle = useCallback(() => {\n const newIsRelative = !isRelative\n let max = previousMaxValue.current\n\n if (newIsRelative) {\n // Save current max value before setting to 100\n const currentMax = (getWidget(id) as { max?: number })?.max\n previousMaxValue.current = currentMax\n max = 100\n }\n\n setWidget(id, {\n isRelative: newIsRelative,\n max,\n })\n }, [isRelative, setWidget, id, getWidget])\n\n const tooltipLabel = isRelative\n ? (labels?.absolute ?? 'Show absolute values')\n : (labels?.relative ?? 'Show relative values')\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isRelative}\n {...IconButtonProps}\n >\n {Icon ?? <PercentOutlined />}\n </IconButton>\n </Tooltip>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.25),\n },\n trigger: {\n '&[data-active=\"true\"]': {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, IconButton, useTheme } from '@mui/material'\nimport {\n SubdirectoryArrowLeftOutlined,\n ZoomInOutlined,\n} from '@mui/icons-material'\nimport { useEffect, useCallback } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { ZoomToggleProps, ZoomState } from './types'\nimport { styles } from './style'\nimport { Tooltip } from '../../../components'\nimport { getEChartZoomConfig } from '../../echart/utils'\nimport type { EchartWidgetState } from '../../echart/types'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to toggle EChart zoom functionality.\n *\n * When zoom is active, displays an inline reset button to disable zoom.\n * Only intended for use in fullscreen ToolbarActions for bar and histogram widgets.\n *\n * @example\n * ```tsx\n * <ZoomToggle\n * id=\"my-widget\"\n * defaultZoom={false}\n * zoomStart={0}\n * zoomEnd={100}\n * />\n * ```\n */\nexport function ZoomToggle({\n id,\n defaultZoom = false,\n defaultZoomStart = 0,\n defaultZoomEnd = 100,\n labels,\n Icon,\n ResetIcon,\n IconButtonProps,\n}: ZoomToggleProps) {\n const theme = useTheme()\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n\n const zoom = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<ZoomState>(id)\n return widget?.zoom ?? false\n }),\n )\n\n const updateZoomOption = useCallback(\n (enabled: boolean, start: number, end: number) => {\n const zoomConfig = getEChartZoomConfig(\n enabled,\n { start, end },\n { inside: true, xSlider: true, ySlider: false },\n theme,\n )\n const currentOption = getWidget<EchartWidgetState>(id)?.option\n\n setWidget<EchartWidgetState & ZoomState>(id, {\n zoom: enabled,\n zoomStart: start,\n zoomEnd: end,\n option: {\n ...currentOption,\n ...zoomConfig,\n },\n })\n },\n [getWidget, id, setWidget, theme],\n )\n\n // Initialize zoom state from defaults only if not already set\n useEffect(() => {\n const existingState = getWidget<ZoomState>(id)\n\n if (existingState?.zoom) return\n\n // Apply initial zoom config\n updateZoomOption(\n existingState?.zoom ?? defaultZoom,\n existingState?.zoomStart ?? defaultZoomStart,\n existingState?.zoomEnd ?? defaultZoomEnd,\n )\n }, [\n defaultZoom,\n defaultZoomEnd,\n defaultZoomStart,\n getWidget,\n id,\n updateZoomOption,\n ])\n\n // Cleanup: reset zoom when component unmounts\n useEffect(() => {\n return () => {\n const existingState = getWidget<ZoomState>(id)\n updateZoomOption(\n false,\n existingState?.zoomStart ?? 0,\n existingState?.zoomEnd ?? 100,\n )\n }\n }, [getWidget, id, updateZoomOption])\n\n const handleToggle = () => {\n const newZoom = !zoom\n\n const existingState = getWidget<ZoomState>(id)\n\n updateZoomOption(\n newZoom,\n newZoom ? (existingState?.zoomStart ?? defaultZoomStart) : 0,\n newZoom ? (existingState?.zoomEnd ?? defaultZoomEnd) : 100,\n )\n }\n\n const handleReset = () => {\n updateZoomOption(true, defaultZoomStart, defaultZoomEnd)\n }\n\n // Handle dataZoom event to update zoom range in store\n const handleDataZoom = useCallback(\n (event: unknown) => {\n const zoomEvent = event as {\n start: number\n end: number\n }\n\n const start = zoomEvent.start\n const end = zoomEvent.end\n\n if (start !== undefined && end !== undefined) {\n updateZoomOption(true, start, end)\n }\n },\n [updateZoomOption],\n )\n\n // Register dataZoom event handler when zoom is enabled\n useEffect(() => {\n if (zoom) {\n setWidget<EchartWidgetState>(id, {\n onEvents: {\n dataZoom: handleDataZoom,\n },\n })\n }\n }, [id, zoom, handleDataZoom, setWidget])\n\n const enableLabel = labels?.enable ?? 'Enable zoom'\n const disableLabel = labels?.disable ?? 'Disable zoom'\n const resetLabel = labels?.reset ?? 'Reset zoom'\n const tooltipLabel = zoom ? disableLabel : enableLabel\n\n return (\n <Box sx={styles.container}>\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={styles.trigger}\n data-active={zoom}\n {...IconButtonProps}\n >\n {Icon ?? <ZoomInOutlined />}\n </IconButton>\n </Tooltip>\n {zoom && (\n <Tooltip title={resetLabel}>\n <IconButton\n size='small'\n aria-label={resetLabel}\n onClick={handleReset}\n {...IconButtonProps}\n >\n {ResetIcon ?? <SubdirectoryArrowLeftOutlined />}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n )\n}\n","export const GroupedBarChartIcon = () => (\n <svg\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n d='M4 20V8H8V20H4ZM9 20V13H13V20H9ZM16 20V4H20V20H16Z'\n fill='currentColor'\n />\n </svg>\n)\n","import { IconButton } from '@mui/material'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { StackToggleProps, StackToggleState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { GroupedBarChartIcon } from './grouped-bar-chart-icon'\nimport { getEChartStackConfig } from '../../echart/utils'\nimport { DEFAULT_STACK_GROUP } from '../../echart/const'\nimport type { EchartWidgetState } from '../../echart/types'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to toggle stacking behavior in ECharts bar and histogram widgets.\n *\n * Stores the stack state in the widget store and updates the ECharts option\n * using getEChartStackConfig to apply stacking to all series.\n *\n * @example\n * ```tsx\n * <StackToggle\n * id=\"my-widget\"\n * defaultIsStacked={false}\n * />\n * ```\n */\nexport function StackToggle({\n id,\n defaultIsStacked = false,\n labels,\n Icon,\n IconButtonProps,\n}: StackToggleProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const storeIsStacked = useWidgetStore(\n useShallow((state) => state.getWidget<StackToggleState>(id)?.isStacked),\n )\n\n const getWidget = useWidgetStore((state) => state.getWidget)\n\n /**\n * Checks if any series in the option has a stack property defined\n */\n const hasStackInSeries = useMemo(() => {\n const option = getWidget<EchartWidgetState>(id)?.option\n if (!option) return false\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n return series.some((s) => (s as { stack?: string })?.stack)\n }, [getWidget, id])\n\n // If series already has stack defined, default to stacked=true\n const effectiveDefaultIsStacked = hasStackInSeries || defaultIsStacked\n const isStacked = storeIsStacked ?? effectiveDefaultIsStacked\n\n /**\n * Updates the ECharts option with the stack configuration\n * Preserves existing stack group names from series, falling back to DEFAULT_STACK_GROUP\n */\n const updateOptions = useCallback(\n (stacked: boolean) => {\n const option = getWidget<EchartWidgetState>(id)?.option\n\n if (!option) return\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n const updatedSeries = series.map((s) => {\n // Extract existing stack group from series, fallback to default\n const existingStack = (s as { stack?: string })?.stack\n const stackGroup =\n typeof existingStack === 'string'\n ? existingStack\n : DEFAULT_STACK_GROUP\n\n return {\n ...s,\n ...getEChartStackConfig(stacked, stackGroup),\n }\n })\n\n setWidget(id, {\n option: {\n ...option,\n series: updatedSeries,\n },\n })\n },\n [getWidget, id, setWidget],\n )\n\n // Initialize store with default value only if not already configured\n useEffect(() => {\n setWidget(id, { isStacked: effectiveDefaultIsStacked })\n }, [effectiveDefaultIsStacked, id, setWidget])\n\n const handleToggle = useCallback(() => {\n const newIsStacked = !isStacked\n\n setWidget(id, { isStacked: newIsStacked })\n updateOptions(newIsStacked)\n }, [isStacked, id, setWidget, updateOptions])\n\n const tooltipLabel = isStacked\n ? (labels?.unstacked ?? 'Disable stacking')\n : (labels?.stacked ?? 'Enable stacking')\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isStacked}\n {...IconButtonProps}\n >\n {Icon ?? <GroupedBarChartIcon />}\n </IconButton>\n </Tooltip>\n )\n}\n","import { IconButton } from '@mui/material'\nimport { CheckBoxOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport type { LockSelectionProps, LockSelectionState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport type { EchartWidgetData } from '../../echart/types'\n\nexport const LOCK_SELECTION_TOOL_ID = 'lock-selection'\n\n/**\n * Widget action button to lock the current selection.\n *\n * When locked, the widget data is filtered to only show the selected items.\n * The button is only visible when there are selected items.\n * Registers a transformation tool in the widget pipeline when mounted.\n *\n * @example\n * ```tsx\n * <LockSelection\n * id=\"my-widget\"\n * order={30}\n * selectedItems={selectedItems}\n * />\n * ```\n */\nexport function LockSelection({\n id,\n selectedItems,\n order = 30,\n labels,\n Icon,\n IconButtonProps,\n}: LockSelectionProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n const updateToolConfig = useWidgetStore((state) => state.updateToolConfig)\n\n const storeIsLocked = useWidgetStore(\n useShallow((state) => state.getWidget<LockSelectionState>(id)?.isLocked),\n )\n\n const isLocked = storeIsLocked ?? false\n const lockedItems = useMemo(\n () => (isLocked ? selectedItems : []),\n [isLocked, selectedItems],\n )\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: LOCK_SELECTION_TOOL_ID,\n order,\n enabled: isLocked,\n fn: (data, config) => {\n const items = (config?.lockedItems as string[]) || []\n if (items.length === 0) return data\n\n return filterDataByLockedItems(data as EchartWidgetData, items)\n },\n config: { lockedItems },\n })\n\n return () => unregisterTool(id, LOCK_SELECTION_TOOL_ID)\n }, [id, order, registerTool, unregisterTool, isLocked, lockedItems])\n\n // Update enabled flag and config when they change\n useEffect(() => {\n setToolEnabled(id, LOCK_SELECTION_TOOL_ID, isLocked)\n updateToolConfig(id, LOCK_SELECTION_TOOL_ID, { lockedItems })\n }, [id, isLocked, lockedItems, setToolEnabled, updateToolConfig])\n\n const handleToggle = useCallback(() => {\n if (isLocked) {\n // Unlock: clear locked items and disable tool\n setWidget(id, {\n isLocked: false,\n lockedItems: [],\n })\n } else {\n // Lock: save selected items and enable tool\n setWidget(id, {\n isLocked: true,\n lockedItems: selectedItems,\n })\n }\n }, [id, isLocked, selectedItems, setWidget])\n\n // Don't render if no selections\n if (selectedItems.length === 0) {\n return null\n }\n\n const tooltipLabel = isLocked\n ? (labels?.unlock ?? 'Unlock selection')\n : (labels?.lock ?? 'Lock selection')\n\n const ariaLabel = labels?.ariaLabel ?? tooltipLabel\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={ariaLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isLocked}\n {...IconButtonProps}\n >\n {Icon ?? <CheckBoxOutlined fontSize='small' />}\n </IconButton>\n </Tooltip>\n )\n}\n\n/**\n * Filters widget data to only include items with names matching the locked items.\n */\nfunction filterDataByLockedItems(\n data: EchartWidgetData,\n lockedItems: string[],\n): EchartWidgetData {\n return data.map((series) =>\n series.filter((item) => {\n const name = item.name\n return typeof name === 'string' && lockedItems.includes(name)\n }),\n )\n}\n","import { TextField, InputAdornment, IconButton } from '@mui/material'\nimport { ClearOutlined, SearchOutlined } from '@mui/icons-material'\nimport { useEffect, useRef, useCallback } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { SearcherProps, SearcherFilterFn, SearcherState } from './types'\nimport type { EchartWidgetData } from '../../echart/types'\nimport { LOCK_SELECTION_TOOL_ID } from '../lock-selection/lock-selection'\n\nexport const SEARCHER_TOOL_ID = 'searcher'\n\nconst DEBOUNCE_DELAY = 300\n\n/**\n * Search input component that works with SearcherToggle.\n *\n * Registers a transformation tool in the widget pipeline when mounted.\n * Reads the enabled state from the widget store using the provided id.\n * Uses a debounced search to filter data via the transformation pipeline.\n * Auto-focuses when enabled becomes true.\n *\n * @example\n * ```tsx\n * <SearcherToggle id=\"my-widget\" />\n * <Searcher\n * id=\"my-widget\"\n * order={10}\n * labels={{ placeholder: 'Search categories...' }}\n * />\n * ```\n */\nexport function Searcher({\n id,\n filterFn,\n order = 20,\n labels,\n TextFieldProps,\n ClearIcon,\n debounceDelay = DEBOUNCE_DELAY,\n}: SearcherProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n const debounceTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // Read enabled state and search text from widget store\n const widgetState = useWidgetStore((state) =>\n state.getWidget<SearcherState>(id),\n )\n const enabled = widgetState?.isSearchEnabled ?? false\n const searchText = widgetState?.searchText ?? ''\n const prevEnabledRef = useRef(enabled)\n\n const filter = filterFn ?? defaultFilterFn\n\n const setWidget = useWidgetStore((state) => state.setWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n const updateToolConfig = useWidgetStore((state) => state.updateToolConfig)\n\n const setSearchText = useCallback(\n (text: string) => {\n setWidget(id, { searchText: text })\n },\n [id, setWidget],\n )\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: SEARCHER_TOOL_ID,\n order,\n enabled,\n fn: async (data, config) => {\n const searchTextFromConfig = (config?.searchText as string) || ''\n\n // Execute filter (can be sync or async)\n const result = filter(data as EchartWidgetData, searchTextFromConfig)\n\n // Return result directly (pipeline will handle Promise)\n return result\n },\n config: { searchText },\n disables: [LOCK_SELECTION_TOOL_ID],\n })\n\n return () => unregisterTool(id, SEARCHER_TOOL_ID)\n }, [id, order, filter, registerTool, unregisterTool, enabled, searchText])\n\n // Update enabled flag when it changes\n useEffect(() => {\n setToolEnabled(id, SEARCHER_TOOL_ID, enabled)\n }, [id, enabled, setToolEnabled])\n\n // Update config when search text changes (debounced)\n const debouncedUpdateConfig = useCallback(\n (text: string) => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current)\n }\n debounceTimeoutRef.current = setTimeout(() => {\n updateToolConfig(id, SEARCHER_TOOL_ID, { searchText: text })\n }, debounceDelay)\n },\n [id, updateToolConfig, debounceDelay],\n )\n\n // Auto-focus when enabled becomes true\n useEffect(() => {\n // Transition from disabled to enabled - focus input\n if (enabled && !prevEnabledRef.current && inputRef.current) {\n inputRef.current.focus()\n }\n\n prevEnabledRef.current = enabled\n }, [enabled])\n\n // Cleanup debounce timeout on unmount\n useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current)\n }\n }\n }, [])\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n setSearchText(newValue)\n debouncedUpdateConfig(newValue)\n },\n [debouncedUpdateConfig, setSearchText],\n )\n\n const handleClear = useCallback(() => {\n setSearchText('')\n updateToolConfig(id, SEARCHER_TOOL_ID, { searchText: '' })\n if (inputRef.current) {\n inputRef.current.focus()\n }\n }, [id, setSearchText, updateToolConfig])\n\n if (!enabled) {\n return null\n }\n\n const placeholder = labels?.placeholder ?? 'Search...'\n const clearAriaLabel = labels?.clearAriaLabel ?? 'Clear search'\n\n return (\n <TextField\n inputRef={inputRef}\n size='small'\n fullWidth\n variant='filled'\n placeholder={placeholder}\n value={searchText}\n onChange={handleChange}\n InputProps={{\n startAdornment: (\n <InputAdornment position='start'>\n <SearchOutlined />\n </InputAdornment>\n ),\n endAdornment: searchText ? (\n <InputAdornment position='end'>\n <IconButton\n size='small'\n aria-label={clearAriaLabel}\n onClick={handleClear}\n edge='end'\n >\n {ClearIcon ?? <ClearOutlined fontSize='small' />}\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n {...TextFieldProps}\n />\n )\n}\n\n/**\n * Default filter function that searches all string fields case-insensitively.\n * Note: Should be synchronous for the new pipeline architecture.\n */\nconst defaultFilterFn: SearcherFilterFn = (\n data: EchartWidgetData,\n searchText: string,\n) => {\n if (!searchText.trim()) return Promise.resolve(data)\n\n const lowerSearch = searchText.toLowerCase()\n\n return Promise.resolve(\n data.map((series) =>\n series.filter((item) =>\n Object.values(item).some(\n (value) =>\n typeof value === 'string' &&\n value.toLowerCase().includes(lowerSearch),\n ),\n ),\n ),\n )\n}\n","import { IconButton } from '@mui/material'\nimport { SearchOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect } from 'react'\nimport type { SearcherToggleProps, SearcherState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action button to toggle search functionality.\n *\n * Stores the enabled state in the widget store using the provided id.\n * When search is active, the button shows an active state with a light background.\n * Use in conjunction with the Searcher component to display the search input.\n *\n * @example\n * ```tsx\n * <SearcherToggle id=\"my-widget\" />\n * <Searcher\n * id=\"my-widget\"\n * data={widgetData}\n * />\n * ```\n */\nexport function SearcherToggle({\n id,\n defaultEnabled = false,\n labels,\n Icon,\n IconButtonProps,\n}: SearcherToggleProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const storeIsEnabled = useWidgetStore(\n useShallow((state) => state.getWidget<SearcherState>(id)?.isSearchEnabled),\n )\n\n const isEnabled = storeIsEnabled ?? defaultEnabled\n\n // Initialize store with default value on mount\n useEffect(() => {\n const currentValue = getWidget<SearcherState>(id)?.isSearchEnabled\n if (currentValue === undefined) {\n setWidget(id, { isSearchEnabled: defaultEnabled })\n }\n }, [defaultEnabled, getWidget, id, setWidget])\n\n const handleToggle = useCallback(() => {\n setWidget(id, { isSearchEnabled: !isEnabled })\n }, [id, isEnabled, setWidget])\n\n const tooltipLabel = isEnabled\n ? (labels?.disable ?? 'Disable search')\n : (labels?.enable ?? 'Enable search')\n\n const ariaLabel = labels?.ariaLabel ?? tooltipLabel\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={ariaLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isEnabled}\n {...IconButtonProps}\n >\n {Icon ?? <SearchOutlined fontSize='small' />}\n </IconButton>\n </Tooltip>\n )\n}\n","export const ChangeColumnIcon = () => (\n <svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 18 18'>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M14.25 2.25H3.75c-.825 0-1.5.675-1.5 1.5v10.5c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5V3.75c0-.825-.675-1.5-1.5-1.5m-3.75 12h-3V3.75h3zM3.75 3.75H6v10.5H3.75zM12 14.25V3.75h2.25v10.5z'\n clipRule='evenodd'\n />\n </svg>\n)\n","import { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { ListItemText, MenuItem } from '@mui/material'\nimport type { TableColumn } from '../../table/types'\n\nexport interface SortableColumnItemProps {\n column: TableColumn\n}\n\n/**\n * A draggable menu item for column reordering.\n * Uses @dnd-kit/sortable for drag-and-drop functionality.\n */\nexport function SortableColumnItem({ column }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: column.id })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n cursor: isDragging ? 'grabbing' : 'grab',\n }\n\n return (\n <MenuItem\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n role='menuitem'\n tabIndex={0}\n sx={{\n '&:focus-visible': {\n outline: (theme) => `2px solid ${theme.palette.primary.main}`,\n outlineOffset: -2,\n },\n }}\n >\n <ListItemText>{column.label}</ListItemText>\n </MenuItem>\n )\n}\n","import {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { IconButton, Menu, SvgIcon } from '@mui/material'\nimport { useCallback, useMemo, useState, type MouseEvent } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { ChangeColumnProps } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport type { TableWidgetState } from '../../table/types'\nimport { ChangeColumnIcon } from './change-column-icon'\nimport { SortableColumnItem } from './sortable-column-item'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to reorder columns in a table widget via drag-and-drop.\n *\n * This action reads the columns from the widget store and allows users to\n * drag and drop columns to reorder them. All columns are displayed and\n * can be reordered.\n *\n * Returns null if there are fewer than 2 columns.\n *\n * @example\n * ```tsx\n * <ChangeColumn id=\"my-table-widget\" />\n * ```\n */\nexport function ChangeColumn({\n id,\n labels,\n Icon,\n IconButtonProps,\n MenuProps,\n}: ChangeColumnProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n const setWidget = useWidgetStore((state) => state.setWidget)\n const columns = useWidgetStore(\n useShallow((state) => state.getWidget<TableWidgetState>(id)?.columns),\n )\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const columnIds = useMemo(\n () => columns?.map((col) => col.id) ?? [],\n [columns],\n )\n\n const handleToggle = useCallback((event: MouseEvent<HTMLElement>) => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }, [])\n\n const handleClose = useCallback(() => {\n setAnchorEl(null)\n }, [])\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id || !columns) return\n const oldIndex = columns.findIndex((col) => col.id === active.id)\n const newIndex = columns.findIndex((col) => col.id === over.id)\n if (oldIndex !== -1 && newIndex !== -1) {\n const newColumns = arrayMove(columns, oldIndex, newIndex)\n setWidget(id, { columns: newColumns })\n }\n }\n\n // Return null if there are fewer than 2 columns\n if (!columns || columns.length < 2) {\n return null\n }\n\n const tooltipLabel = labels?.tooltip ?? 'Change column'\n const isOpen = Boolean(anchorEl)\n\n return (\n <>\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n aria-controls={isOpen ? 'change-column-menu' : undefined}\n aria-haspopup='true'\n aria-expanded={isOpen ? 'true' : undefined}\n onClick={handleToggle}\n data-active={isOpen}\n sx={actionButtonStyles.trigger}\n {...IconButtonProps}\n >\n {Icon ?? (\n <SvgIcon>\n <ChangeColumnIcon />\n </SvgIcon>\n )}\n </IconButton>\n </Tooltip>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <Menu\n id='change-column-menu'\n anchorEl={anchorEl}\n open={isOpen}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n {...MenuProps}\n >\n <SortableContext\n items={columnIds}\n strategy={verticalListSortingStrategy}\n >\n {columns.map((column) => (\n <SortableColumnItem key={column.id} column={column} />\n ))}\n </SortableContext>\n </Menu>\n </DndContext>\n </>\n )\n}\n"],"names":["styles","title","container","display","alignItems","justifyContent","gap","content","flexDirection","spacing","FullScreen","t0","$","_c","id","labels","children","Icon","IconButtonProps","DialogContentProps","t1","t2","undefined","sx","t3","state","widget","getWidget","isFullScreen","useWidgetStore","useShallow","setWidget","_temp","t4","updates","updateFullScreenConfig","t5","t6","FullscreenOutlined","t7","IconButton","t8","t9","ariaLabel","t10","t11","t12","Typography","t13","t14","Symbol","for","Close","t15","jsx","t16","DialogTitle","t17","t18","DialogContent","t19","jsxs","Dialog","t20","state_0","Download","items","data","isDownloading","setIsDownloading","useState","anchorEl","setAnchorEl","event","stopPropagation","currentTarget","handleToggle","data_0","option","link","document","createElement","href","download","filename","style","body","appendChild","click","removeChild","callback","handleDownload","event_0","option_0","result","modifier","handleClick","length","CircularProgress","FileDownloadOutlined","vertical","horizontal","Boolean","paddingBottom","option_1","MenuItem","disabled","e","icon","ListItemIcon","color","ListItemText","label","map","Menu","actionButtonStyles","trigger","background","theme","palette","primary","relatedLight","calculateTotal","reduce","total","series","seriesTotal","item","Object","values","itemTotal","value","toRelativeData","transformed","key","entries","RELATIVE_DATA_TOOL_ID","RelativeData","order","defaultIsRelative","previousMaxValue","useRef","_temp2","registerTool","_temp3","unregisterTool","_temp4","setToolEnabled","_temp5","state_4","isRelative","useEffect","enabled","fn","_temp6","newIsRelative","max","current","currentMax","tooltipLabel","absolute","relative","PercentOutlined","Tooltip","echartData","state_3","state_2","state_1","ZoomToggle","defaultZoom","defaultZoomStart","defaultZoomEnd","ResetIcon","useTheme","zoom","start","end","zoomConfig","getEChartZoomConfig","inside","xSlider","ySlider","currentOption","zoomStart","zoomEnd","updateZoomOption","existingState","existingState_0","newZoom","existingState_1","handleReset","zoomEvent","start_0","end_0","handleDataZoom","onEvents","dataZoom","enableLabel","enable","disableLabel","disable","resetLabel","reset","ZoomInOutlined","SubdirectoryArrowLeftOutlined","Box","GroupedBarChartIcon","StackToggle","defaultIsStacked","isStacked","storeIsStacked","bb0","Array","isArray","some","effectiveDefaultIsStacked","stacked","updatedSeries","s_0","existingStack","s","stack","getEChartStackConfig","DEFAULT_STACK_GROUP","updateOptions","newIsStacked","unstacked","LOCK_SELECTION_TOOL_ID","LockSelection","selectedItems","updateToolConfig","isLocked","lockedItems","config","unlock","lock","CheckBoxOutlined","filterDataByLockedItems","filter","name","includes","SEARCHER_TOOL_ID","DEBOUNCE_DELAY","Searcher","filterFn","TextFieldProps","ClearIcon","debounceDelay","inputRef","debounceTimeoutRef","widgetState","isSearchEnabled","searchText","prevEnabledRef","defaultFilterFn","text","setSearchText","searchTextFromConfig","disables","text_0","clearTimeout","setTimeout","debouncedUpdateConfig","focus","newValue","target","handleChange","handleClear","placeholder","clearAriaLabel","InputAdornment","SearchOutlined","ClearOutlined","startAdornment","endAdornment","TextField","trim","Promise","resolve","lowerSearch","toLowerCase","SearcherToggle","defaultEnabled","isEnabled","ChangeColumnIcon","SortableColumnItem","column","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Transform","toString","opacity","cursor","outline","outlineOffset","main","ChangeColumn","MenuProps","columns","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","columnIds","handleClose","active","over","oldIndex","findIndex","col_0","col","newIndex","col_1","newColumns","arrayMove","handleDragEnd","tooltip","isOpen","SvgIcon","SortableContext","verticalListSortingStrategy","DndContext","closestCenter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"actions.js","sources":["../../src/widgets/actions/fullscreen/styles.ts","../../src/widgets/actions/fullscreen/fullscreen.tsx","../../src/widgets/actions/download/download.tsx","../../src/widgets/actions/shared/styles.ts","../../src/widgets/actions/relative-data/utils.ts","../../src/widgets/actions/relative-data/relative-data.tsx","../../src/widgets/actions/zoom-toggle/style.ts","../../src/widgets/actions/zoom-toggle/zoom-toggle.tsx","../../src/widgets/actions/stack-toggle/grouped-bar-chart-icon.tsx","../../src/widgets/actions/stack-toggle/stack-toggle.tsx","../../src/widgets/actions/lock-selection/lock-selection.tsx","../../src/widgets/actions/searcher/searcher.tsx","../../src/widgets/actions/searcher/searcher-toggle.tsx","../../src/widgets/actions/change-column/change-column-icon.tsx","../../src/widgets/actions/change-column/sortable-column-item.tsx","../../src/widgets/actions/change-column/change-column.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n title: {\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n },\n },\n content: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(1),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import {\n Dialog,\n DialogContent,\n DialogTitle,\n IconButton,\n Typography,\n} from '@mui/material'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { Close, FullscreenOutlined } from '@mui/icons-material'\nimport type {\n FullScreenConfig,\n FullScreenProps,\n FullScreenState,\n} from './types'\nimport { styles } from './styles'\nimport { useShallow } from 'zustand/shallow'\n\nexport function FullScreen({\n id,\n labels,\n children,\n Icon,\n IconButtonProps,\n DialogContentProps: { sx, ...DialogContentProps } = {},\n}: FullScreenProps) {\n const { isFullScreen, title } = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<FullScreenState>(id)\n return {\n isFullScreen: widget?.isFullScreen,\n title: widget?.title,\n }\n }),\n )\n const setWidget = useWidgetStore((state) => state.setWidget)\n\n const updateFullScreenConfig = (updates: Partial<FullScreenConfig>) => {\n setWidget<FullScreenState>(id, {\n isFullScreen: updates.isFullScreen,\n })\n }\n\n return (\n <>\n <IconButton\n {...IconButtonProps}\n onClick={() => updateFullScreenConfig({ isFullScreen: true })}\n >\n {Icon ?? <FullscreenOutlined />}\n </IconButton>\n <Dialog\n maxWidth={false}\n open={!!isFullScreen}\n aria-labelledby={labels?.ariaLabel ?? `fullscreen-dialog-title-${id}`}\n onClose={() => updateFullScreenConfig({ isFullScreen: false })}\n >\n <DialogTitle\n id={`fullscreen-dialog-title-${id}`}\n sx={styles.title.container}\n >\n <Typography variant='subtitle1' component='span'>\n {title}\n </Typography>\n <IconButton\n onClick={() => updateFullScreenConfig({ isFullScreen: false })}\n >\n <Close />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n ...styles.content,\n ...sx,\n }}\n {...DialogContentProps}\n >\n {children}\n </DialogContent>\n </Dialog>\n </>\n )\n}\n","import {\n CircularProgress,\n IconButton,\n ListItemIcon,\n ListItemText,\n Menu,\n MenuItem,\n} from '@mui/material'\nimport type { DownloadItem, DownloadProps } from './types'\nimport { FileDownloadOutlined } from '@mui/icons-material'\nimport { useState, type MouseEvent } from 'react'\nimport { useWidgetStore } from '../../../widgets'\nimport { useShallow } from 'zustand/shallow'\n\nexport function Download({\n id,\n items,\n labels = {},\n Icon,\n IconButtonProps,\n}: DownloadProps) {\n const data = useWidgetStore(useShallow((state) => state.getWidget(id)?.data))\n\n const [isDownloading, setIsDownloading] = useState(false)\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\n const handleToggle = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }\n\n const handleDownload = (data: string, option: DownloadItem) => {\n const link = document.createElement('a')\n link.href = data\n link.download = option.filename ?? id\n link.style.display = 'none'\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n option.callback?.(link.href)\n }\n\n const handleClick = async (\n event: MouseEvent<HTMLElement>,\n option: DownloadItem,\n ) => {\n event.stopPropagation()\n\n setIsDownloading(true)\n setAnchorEl(null)\n\n const result = await option.modifier(data)\n\n if (!result) {\n setIsDownloading(false)\n return\n }\n\n handleDownload(result, option)\n setIsDownloading(false)\n }\n\n return (\n <>\n <IconButton\n size='small'\n aria-label={labels.ariaLabel ?? 'download options'}\n aria-controls='options-menu'\n aria-haspopup='true'\n onClick={handleToggle}\n {...IconButtonProps}\n disabled={isDownloading || items.length === 0}\n className={isDownloading || anchorEl ? 'active' : ''}\n >\n {isDownloading ? (\n <CircularProgress size={18} color='inherit' />\n ) : (\n (Icon ?? <FileDownloadOutlined />)\n )}\n </IconButton>\n <Menu\n variant='menu'\n elevation={8}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n anchorEl={anchorEl}\n open={Boolean(anchorEl)}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n sx: {\n paddingBottom: 0,\n },\n }}\n >\n {items.map((option) => (\n <MenuItem\n key={option.id}\n disabled={option.disabled}\n onClick={(e) => void handleClick(e, option)}\n >\n {option.icon && (\n <ListItemIcon sx={{ color: 'text.primary' }}>\n {option.icon}\n </ListItemIcon>\n )}\n <ListItemText>{option.label}</ListItemText>\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\n/**\n * Shared styles for widget action buttons\n */\nexport const actionButtonStyles = {\n trigger: {\n '&[data-active=\"true\"]': {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import type { EchartWidgetData } from '../../echart/types'\n\n/**\n * Calculates the sum of all numeric values in the data\n */\nexport function calculateTotal(data: EchartWidgetData): number {\n return data.reduce((total, series) => {\n return series.reduce((seriesTotal, item) => {\n return Object.values(item).reduce((itemTotal: number, value) => {\n return typeof value === 'number' ? itemTotal + value : itemTotal\n }, seriesTotal)\n }, total)\n }, 0)\n}\n\n/**\n * Transforms data to relative (percentage) values\n */\nexport function toRelativeData(\n data: EchartWidgetData,\n total: number,\n): EchartWidgetData {\n if (total === 0) return data\n\n return data.map((series) =>\n series.map((item) => {\n const transformed: Record<string, string | number> = {}\n\n for (const [key, value] of Object.entries(item)) {\n transformed[key] =\n typeof value === 'number' ? (value / total) * 100 : value\n }\n\n return transformed\n }),\n )\n}\n","import { IconButton } from '@mui/material'\nimport { PercentOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect, useRef } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { RelativeDataProps, RelativeDataState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { calculateTotal, toRelativeData } from './utils'\nimport type { EchartWidgetData } from '../../../widgets/echart'\n\nexport const RELATIVE_DATA_TOOL_ID = 'relative-data'\n\n/**\n * Widget action to toggle between relative (percentage) and absolute data display.\n *\n * Registers a transformation tool in the widget pipeline when mounted.\n * When relative mode is active, transforms data to percentages via the pipeline.\n *\n * @example\n * ```tsx\n * <RelativeData\n * id=\"my-widget\"\n * order={20}\n * defaultIsRelative={false}\n * />\n * ```\n */\nexport function RelativeData({\n id,\n order = 10,\n defaultIsRelative = false,\n labels,\n Icon,\n IconButtonProps,\n}: RelativeDataProps) {\n const previousMaxValue = useRef<number | undefined>(undefined)\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n\n const storeIsRelative = useWidgetStore(\n (state) => state.getWidget<RelativeDataState>(id)?.isRelative,\n )\n\n const isRelative = storeIsRelative ?? defaultIsRelative\n\n // Initialize store with default value on mount\n useEffect(() => {\n const currentValue = getWidget<RelativeDataState>(id)?.isRelative\n if (currentValue === undefined) {\n setWidget(id, { isRelative: defaultIsRelative })\n }\n }, [defaultIsRelative, getWidget, id, setWidget])\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: RELATIVE_DATA_TOOL_ID,\n order,\n enabled: isRelative,\n fn: (data) => {\n const echartData = data as EchartWidgetData\n const total = calculateTotal(echartData)\n return toRelativeData(echartData, total)\n },\n })\n\n return () => unregisterTool(id, RELATIVE_DATA_TOOL_ID)\n }, [id, order, registerTool, unregisterTool, isRelative])\n\n // Update enabled flag when toggle changes\n useEffect(() => {\n setToolEnabled(id, RELATIVE_DATA_TOOL_ID, isRelative)\n }, [id, isRelative, setToolEnabled])\n\n const handleToggle = useCallback(() => {\n const newIsRelative = !isRelative\n let max = previousMaxValue.current\n\n if (newIsRelative) {\n // Save current max value before setting to 100\n const currentMax = (getWidget(id) as { max?: number })?.max\n previousMaxValue.current = currentMax\n max = 100\n }\n\n setWidget(id, {\n isRelative: newIsRelative,\n max,\n })\n }, [isRelative, setWidget, id, getWidget])\n\n const tooltipLabel = isRelative\n ? (labels?.absolute ?? 'Show absolute values')\n : (labels?.relative ?? 'Show relative values')\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isRelative}\n {...IconButtonProps}\n >\n {Icon ?? <PercentOutlined />}\n </IconButton>\n </Tooltip>\n )\n}\n","import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n container: {\n display: 'flex',\n alignItems: 'center',\n gap: ({ spacing }) => spacing(0.25),\n },\n trigger: {\n '&[data-active=\"true\"]': {\n background: (theme: Theme) => theme.palette.primary.relatedLight,\n },\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box, IconButton, useTheme } from '@mui/material'\nimport {\n SubdirectoryArrowLeftOutlined,\n ZoomInOutlined,\n} from '@mui/icons-material'\nimport { useEffect, useCallback } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { ZoomToggleProps, ZoomState } from './types'\nimport { styles } from './style'\nimport { Tooltip } from '../../../components'\nimport { getEChartZoomConfig } from '../../echart/utils'\nimport type { EchartWidgetState } from '../../echart/types'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to toggle EChart zoom functionality.\n *\n * When zoom is active, displays an inline reset button to disable zoom.\n * Only intended for use in fullscreen ToolbarActions for bar and histogram widgets.\n *\n * @example\n * ```tsx\n * <ZoomToggle\n * id=\"my-widget\"\n * defaultZoom={false}\n * zoomStart={0}\n * zoomEnd={100}\n * />\n * ```\n */\nexport function ZoomToggle({\n id,\n defaultZoom = false,\n defaultZoomStart = 0,\n defaultZoomEnd = 100,\n labels,\n Icon,\n ResetIcon,\n IconButtonProps,\n}: ZoomToggleProps) {\n const theme = useTheme()\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n\n const zoom = useWidgetStore(\n useShallow((state) => {\n const widget = state.getWidget<ZoomState>(id)\n return widget?.zoom ?? false\n }),\n )\n\n const updateZoomOption = useCallback(\n (enabled: boolean, start: number, end: number) => {\n const zoomConfig = getEChartZoomConfig(\n enabled,\n { start, end },\n { inside: true, xSlider: true, ySlider: false },\n theme,\n )\n const currentOption = getWidget<EchartWidgetState>(id)?.option\n\n setWidget<EchartWidgetState & ZoomState>(id, {\n zoom: enabled,\n zoomStart: start,\n zoomEnd: end,\n option: {\n ...currentOption,\n ...zoomConfig,\n },\n })\n },\n [getWidget, id, setWidget, theme],\n )\n\n // Initialize zoom state from defaults only if not already set\n useEffect(() => {\n const existingState = getWidget<ZoomState>(id)\n\n if (existingState?.zoom) return\n\n // Apply initial zoom config\n updateZoomOption(\n existingState?.zoom ?? defaultZoom,\n existingState?.zoomStart ?? defaultZoomStart,\n existingState?.zoomEnd ?? defaultZoomEnd,\n )\n }, [\n defaultZoom,\n defaultZoomEnd,\n defaultZoomStart,\n getWidget,\n id,\n updateZoomOption,\n ])\n\n // Cleanup: reset zoom when component unmounts\n useEffect(() => {\n return () => {\n const existingState = getWidget<ZoomState>(id)\n updateZoomOption(\n false,\n existingState?.zoomStart ?? 0,\n existingState?.zoomEnd ?? 100,\n )\n }\n }, [getWidget, id, updateZoomOption])\n\n const handleToggle = () => {\n const newZoom = !zoom\n\n const existingState = getWidget<ZoomState>(id)\n\n updateZoomOption(\n newZoom,\n newZoom ? (existingState?.zoomStart ?? defaultZoomStart) : 0,\n newZoom ? (existingState?.zoomEnd ?? defaultZoomEnd) : 100,\n )\n }\n\n const handleReset = () => {\n updateZoomOption(true, defaultZoomStart, defaultZoomEnd)\n }\n\n // Handle dataZoom event to update zoom range in store\n const handleDataZoom = useCallback(\n (event: unknown) => {\n const zoomEvent = event as {\n start: number\n end: number\n }\n\n const start = zoomEvent.start\n const end = zoomEvent.end\n\n if (start !== undefined && end !== undefined) {\n updateZoomOption(true, start, end)\n }\n },\n [updateZoomOption],\n )\n\n // Register dataZoom event handler when zoom is enabled\n useEffect(() => {\n if (zoom) {\n setWidget<EchartWidgetState>(id, {\n onEvents: {\n dataZoom: handleDataZoom,\n },\n })\n }\n }, [id, zoom, handleDataZoom, setWidget])\n\n const enableLabel = labels?.enable ?? 'Enable zoom'\n const disableLabel = labels?.disable ?? 'Disable zoom'\n const resetLabel = labels?.reset ?? 'Reset zoom'\n const tooltipLabel = zoom ? disableLabel : enableLabel\n\n return (\n <Box sx={styles.container}>\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={styles.trigger}\n data-active={zoom}\n {...IconButtonProps}\n >\n {Icon ?? <ZoomInOutlined />}\n </IconButton>\n </Tooltip>\n {zoom && (\n <Tooltip title={resetLabel}>\n <IconButton\n size='small'\n aria-label={resetLabel}\n onClick={handleReset}\n {...IconButtonProps}\n >\n {ResetIcon ?? <SubdirectoryArrowLeftOutlined />}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n )\n}\n","export const GroupedBarChartIcon = () => (\n <svg\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <path\n d='M4 20V8H8V20H4ZM9 20V13H13V20H9ZM16 20V4H20V20H16Z'\n fill='currentColor'\n />\n </svg>\n)\n","import { IconButton } from '@mui/material'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { StackToggleProps, StackToggleState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { GroupedBarChartIcon } from './grouped-bar-chart-icon'\nimport { getEChartStackConfig } from '../../echart/utils'\nimport { DEFAULT_STACK_GROUP } from '../../echart/const'\nimport type { EchartWidgetState } from '../../echart/types'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to toggle stacking behavior in ECharts bar and histogram widgets.\n *\n * Stores the stack state in the widget store and updates the ECharts option\n * using getEChartStackConfig to apply stacking to all series.\n *\n * @example\n * ```tsx\n * <StackToggle\n * id=\"my-widget\"\n * defaultIsStacked={false}\n * />\n * ```\n */\nexport function StackToggle({\n id,\n defaultIsStacked = false,\n labels,\n Icon,\n IconButtonProps,\n}: StackToggleProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const storeIsStacked = useWidgetStore(\n useShallow((state) => state.getWidget<StackToggleState>(id)?.isStacked),\n )\n\n const getWidget = useWidgetStore((state) => state.getWidget)\n\n /**\n * Checks if any series in the option has a stack property defined\n */\n const hasStackInSeries = useMemo(() => {\n const option = getWidget<EchartWidgetState>(id)?.option\n if (!option) return false\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n return series.some((s) => (s as { stack?: string })?.stack)\n }, [getWidget, id])\n\n // If series already has stack defined, default to stacked=true\n const effectiveDefaultIsStacked = hasStackInSeries || defaultIsStacked\n const isStacked = storeIsStacked ?? effectiveDefaultIsStacked\n\n /**\n * Updates the ECharts option with the stack configuration\n * Preserves existing stack group names from series, falling back to DEFAULT_STACK_GROUP\n */\n const updateOptions = useCallback(\n (stacked: boolean) => {\n const option = getWidget<EchartWidgetState>(id)?.option\n\n if (!option) return\n\n const series = Array.isArray(option.series)\n ? option.series\n : [option.series]\n\n const updatedSeries = series.map((s) => {\n // Extract existing stack group from series, fallback to default\n const existingStack = (s as { stack?: string })?.stack\n const stackGroup =\n typeof existingStack === 'string'\n ? existingStack\n : DEFAULT_STACK_GROUP\n\n return {\n ...s,\n ...getEChartStackConfig(stacked, stackGroup),\n }\n })\n\n setWidget(id, {\n option: {\n ...option,\n series: updatedSeries,\n },\n })\n },\n [getWidget, id, setWidget],\n )\n\n // Initialize store with default value only if not already configured\n useEffect(() => {\n setWidget(id, { isStacked: effectiveDefaultIsStacked })\n }, [effectiveDefaultIsStacked, id, setWidget])\n\n const handleToggle = useCallback(() => {\n const newIsStacked = !isStacked\n\n setWidget(id, { isStacked: newIsStacked })\n updateOptions(newIsStacked)\n }, [isStacked, id, setWidget, updateOptions])\n\n const tooltipLabel = isStacked\n ? (labels?.unstacked ?? 'Disable stacking')\n : (labels?.stacked ?? 'Enable stacking')\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isStacked}\n {...IconButtonProps}\n >\n {Icon ?? <GroupedBarChartIcon />}\n </IconButton>\n </Tooltip>\n )\n}\n","import { IconButton } from '@mui/material'\nimport { CheckBoxOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect, useMemo } from 'react'\nimport type { LockSelectionProps, LockSelectionState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\nimport type { EchartWidgetData } from '../../echart/types'\n\nexport const LOCK_SELECTION_TOOL_ID = 'lock-selection'\n\n/**\n * Widget action button to lock the current selection.\n *\n * When locked, the widget data is filtered to only show the selected items.\n * The button is only visible when there are selected items.\n * Registers a transformation tool in the widget pipeline when mounted.\n *\n * @example\n * ```tsx\n * <LockSelection\n * id=\"my-widget\"\n * order={30}\n * selectedItems={selectedItems}\n * />\n * ```\n */\nexport function LockSelection({\n id,\n selectedItems,\n order = 30,\n labels,\n Icon,\n IconButtonProps,\n}: LockSelectionProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n const updateToolConfig = useWidgetStore((state) => state.updateToolConfig)\n\n const storeIsLocked = useWidgetStore(\n useShallow((state) => state.getWidget<LockSelectionState>(id)?.isLocked),\n )\n\n const isLocked = storeIsLocked ?? false\n const lockedItems = useMemo(\n () => (isLocked ? selectedItems : []),\n [isLocked, selectedItems],\n )\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: LOCK_SELECTION_TOOL_ID,\n order,\n enabled: isLocked,\n fn: (data, config) => {\n const items = (config?.lockedItems as string[]) || []\n if (items.length === 0) return data\n\n return filterDataByLockedItems(data as EchartWidgetData, items)\n },\n config: { lockedItems },\n })\n\n return () => unregisterTool(id, LOCK_SELECTION_TOOL_ID)\n }, [id, order, registerTool, unregisterTool, isLocked, lockedItems])\n\n // Update enabled flag and config when they change\n useEffect(() => {\n setToolEnabled(id, LOCK_SELECTION_TOOL_ID, isLocked)\n updateToolConfig(id, LOCK_SELECTION_TOOL_ID, { lockedItems })\n }, [id, isLocked, lockedItems, setToolEnabled, updateToolConfig])\n\n const handleToggle = useCallback(() => {\n if (isLocked) {\n // Unlock: clear locked items and disable tool\n setWidget(id, {\n isLocked: false,\n lockedItems: [],\n })\n } else {\n // Lock: save selected items and enable tool\n setWidget(id, {\n isLocked: true,\n lockedItems: selectedItems,\n })\n }\n }, [id, isLocked, selectedItems, setWidget])\n\n // Don't render if no selections\n if (selectedItems.length === 0) {\n return null\n }\n\n const tooltipLabel = isLocked\n ? (labels?.unlock ?? 'Unlock selection')\n : (labels?.lock ?? 'Lock selection')\n\n const ariaLabel = labels?.ariaLabel ?? tooltipLabel\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={ariaLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isLocked}\n {...IconButtonProps}\n >\n {Icon ?? <CheckBoxOutlined fontSize='small' />}\n </IconButton>\n </Tooltip>\n )\n}\n\n/**\n * Filters widget data to only include items with names matching the locked items.\n */\nfunction filterDataByLockedItems(\n data: EchartWidgetData,\n lockedItems: string[],\n): EchartWidgetData {\n return data.map((series) =>\n series.filter((item) => {\n const name = item.name\n return typeof name === 'string' && lockedItems.includes(name)\n }),\n )\n}\n","import { TextField, InputAdornment, IconButton } from '@mui/material'\nimport { ClearOutlined, SearchOutlined } from '@mui/icons-material'\nimport { useEffect, useRef, useCallback } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { SearcherProps, SearcherFilterFn, SearcherState } from './types'\nimport type { EchartWidgetData } from '../../echart/types'\nimport { LOCK_SELECTION_TOOL_ID } from '../lock-selection/lock-selection'\n\nexport const SEARCHER_TOOL_ID = 'searcher'\n\nconst DEBOUNCE_DELAY = 300\n\n/**\n * Search input component that works with SearcherToggle.\n *\n * Registers a transformation tool in the widget pipeline when mounted.\n * Reads the enabled state from the widget store using the provided id.\n * Uses a debounced search to filter data via the transformation pipeline.\n * Auto-focuses when enabled becomes true.\n *\n * @example\n * ```tsx\n * <SearcherToggle id=\"my-widget\" />\n * <Searcher\n * id=\"my-widget\"\n * order={10}\n * labels={{ placeholder: 'Search categories...' }}\n * />\n * ```\n */\nexport function Searcher({\n id,\n filterFn,\n order = 20,\n labels,\n TextFieldProps,\n ClearIcon,\n debounceDelay = DEBOUNCE_DELAY,\n}: SearcherProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n const debounceTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // Read enabled state and search text from widget store\n const widgetState = useWidgetStore((state) =>\n state.getWidget<SearcherState>(id),\n )\n const enabled = widgetState?.isSearchEnabled ?? false\n const searchText = widgetState?.searchText ?? ''\n const prevEnabledRef = useRef(enabled)\n\n const filter = filterFn ?? defaultFilterFn\n\n const setWidget = useWidgetStore((state) => state.setWidget)\n const registerTool = useWidgetStore((state) => state.registerTool)\n const unregisterTool = useWidgetStore((state) => state.unregisterTool)\n const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)\n const updateToolConfig = useWidgetStore((state) => state.updateToolConfig)\n\n const setSearchText = useCallback(\n (text: string) => {\n setWidget(id, { searchText: text })\n },\n [id, setWidget],\n )\n\n // Register tool on mount\n useEffect(() => {\n registerTool(id, {\n id: SEARCHER_TOOL_ID,\n order,\n enabled,\n fn: async (data, config) => {\n const searchTextFromConfig = (config?.searchText as string) || ''\n\n // Execute filter (can be sync or async)\n const result = filter(data as EchartWidgetData, searchTextFromConfig)\n\n // Return result directly (pipeline will handle Promise)\n return result\n },\n config: { searchText },\n disables: [LOCK_SELECTION_TOOL_ID],\n })\n\n return () => unregisterTool(id, SEARCHER_TOOL_ID)\n }, [id, order, filter, registerTool, unregisterTool, enabled, searchText])\n\n // Update enabled flag when it changes\n useEffect(() => {\n setToolEnabled(id, SEARCHER_TOOL_ID, enabled)\n }, [id, enabled, setToolEnabled])\n\n // Update config when search text changes (debounced)\n const debouncedUpdateConfig = useCallback(\n (text: string) => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current)\n }\n debounceTimeoutRef.current = setTimeout(() => {\n updateToolConfig(id, SEARCHER_TOOL_ID, { searchText: text })\n }, debounceDelay)\n },\n [id, updateToolConfig, debounceDelay],\n )\n\n // Auto-focus when enabled becomes true\n useEffect(() => {\n // Transition from disabled to enabled - focus input\n if (enabled && !prevEnabledRef.current && inputRef.current) {\n inputRef.current.focus()\n }\n\n prevEnabledRef.current = enabled\n }, [enabled])\n\n // Cleanup debounce timeout on unmount\n useEffect(() => {\n return () => {\n if (debounceTimeoutRef.current) {\n clearTimeout(debounceTimeoutRef.current)\n }\n }\n }, [])\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n setSearchText(newValue)\n debouncedUpdateConfig(newValue)\n },\n [debouncedUpdateConfig, setSearchText],\n )\n\n const handleClear = useCallback(() => {\n setSearchText('')\n updateToolConfig(id, SEARCHER_TOOL_ID, { searchText: '' })\n if (inputRef.current) {\n inputRef.current.focus()\n }\n }, [id, setSearchText, updateToolConfig])\n\n if (!enabled) {\n return null\n }\n\n const placeholder = labels?.placeholder ?? 'Search...'\n const clearAriaLabel = labels?.clearAriaLabel ?? 'Clear search'\n\n return (\n <TextField\n inputRef={inputRef}\n size='small'\n fullWidth\n variant='filled'\n placeholder={placeholder}\n value={searchText}\n onChange={handleChange}\n InputProps={{\n startAdornment: (\n <InputAdornment position='start'>\n <SearchOutlined />\n </InputAdornment>\n ),\n endAdornment: searchText ? (\n <InputAdornment position='end'>\n <IconButton\n size='small'\n aria-label={clearAriaLabel}\n onClick={handleClear}\n edge='end'\n >\n {ClearIcon ?? <ClearOutlined fontSize='small' />}\n </IconButton>\n </InputAdornment>\n ) : null,\n }}\n {...TextFieldProps}\n />\n )\n}\n\n/**\n * Default filter function that searches all string fields case-insensitively.\n * Note: Should be synchronous for the new pipeline architecture.\n */\nconst defaultFilterFn: SearcherFilterFn = (\n data: EchartWidgetData,\n searchText: string,\n) => {\n if (!searchText.trim()) return Promise.resolve(data)\n\n const lowerSearch = searchText.toLowerCase()\n\n return Promise.resolve(\n data.map((series) =>\n series.filter((item) =>\n Object.values(item).some(\n (value) =>\n typeof value === 'string' &&\n value.toLowerCase().includes(lowerSearch),\n ),\n ),\n ),\n )\n}\n","import { IconButton } from '@mui/material'\nimport { SearchOutlined } from '@mui/icons-material'\nimport { useCallback, useEffect } from 'react'\nimport type { SearcherToggleProps, SearcherState } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action button to toggle search functionality.\n *\n * Stores the enabled state in the widget store using the provided id.\n * When search is active, the button shows an active state with a light background.\n * Use in conjunction with the Searcher component to display the search input.\n *\n * @example\n * ```tsx\n * <SearcherToggle id=\"my-widget\" />\n * <Searcher\n * id=\"my-widget\"\n * data={widgetData}\n * />\n * ```\n */\nexport function SearcherToggle({\n id,\n defaultEnabled = false,\n labels,\n Icon,\n IconButtonProps,\n}: SearcherToggleProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n const getWidget = useWidgetStore((state) => state.getWidget)\n const storeIsEnabled = useWidgetStore(\n useShallow((state) => state.getWidget<SearcherState>(id)?.isSearchEnabled),\n )\n\n const isEnabled = storeIsEnabled ?? defaultEnabled\n\n // Initialize store with default value on mount\n useEffect(() => {\n const currentValue = getWidget<SearcherState>(id)?.isSearchEnabled\n if (currentValue === undefined) {\n setWidget(id, { isSearchEnabled: defaultEnabled })\n }\n }, [defaultEnabled, getWidget, id, setWidget])\n\n const handleToggle = useCallback(() => {\n setWidget(id, { isSearchEnabled: !isEnabled })\n }, [id, isEnabled, setWidget])\n\n const tooltipLabel = isEnabled\n ? (labels?.disable ?? 'Disable search')\n : (labels?.enable ?? 'Enable search')\n\n const ariaLabel = labels?.ariaLabel ?? tooltipLabel\n\n return (\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={ariaLabel}\n onClick={handleToggle}\n sx={actionButtonStyles.trigger}\n data-active={isEnabled}\n {...IconButtonProps}\n >\n {Icon ?? <SearchOutlined fontSize='small' />}\n </IconButton>\n </Tooltip>\n )\n}\n","export const ChangeColumnIcon = () => (\n <svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 18 18'>\n <path\n fill='currentColor'\n fillRule='evenodd'\n d='M14.25 2.25H3.75c-.825 0-1.5.675-1.5 1.5v10.5c0 .825.675 1.5 1.5 1.5h10.5c.825 0 1.5-.675 1.5-1.5V3.75c0-.825-.675-1.5-1.5-1.5m-3.75 12h-3V3.75h3zM3.75 3.75H6v10.5H3.75zM12 14.25V3.75h2.25v10.5z'\n clipRule='evenodd'\n />\n </svg>\n)\n","import { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { ListItemText, MenuItem } from '@mui/material'\nimport type { TableColumn } from '../../table/types'\n\nexport interface SortableColumnItemProps {\n column: TableColumn\n}\n\n/**\n * A draggable menu item for column reordering.\n * Uses @dnd-kit/sortable for drag-and-drop functionality.\n */\nexport function SortableColumnItem({ column }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: column.id })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n cursor: isDragging ? 'grabbing' : 'grab',\n }\n\n return (\n <MenuItem\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n role='menuitem'\n tabIndex={0}\n sx={{\n '&:focus-visible': {\n outline: (theme) => `2px solid ${theme.palette.primary.main}`,\n outlineOffset: -2,\n },\n }}\n >\n <ListItemText>{column.label}</ListItemText>\n </MenuItem>\n )\n}\n","import {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n type DragEndEvent,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable'\nimport { IconButton, Menu, SvgIcon } from '@mui/material'\nimport { useCallback, useMemo, useState, type MouseEvent } from 'react'\nimport { useWidgetStore } from '../../stores/widget-store'\nimport type { ChangeColumnProps } from './types'\nimport { actionButtonStyles } from '../shared/styles'\nimport { Tooltip } from '../../../components'\nimport type { TableWidgetState } from '../../table/types'\nimport { ChangeColumnIcon } from './change-column-icon'\nimport { SortableColumnItem } from './sortable-column-item'\nimport { useShallow } from 'zustand/shallow'\n\n/**\n * Widget action to reorder columns in a table widget via drag-and-drop.\n *\n * This action reads the columns from the widget store and allows users to\n * drag and drop columns to reorder them. All columns are displayed and\n * can be reordered.\n *\n * Returns null if there are fewer than 2 columns.\n *\n * @example\n * ```tsx\n * <ChangeColumn id=\"my-table-widget\" />\n * ```\n */\nexport function ChangeColumn({\n id,\n labels,\n Icon,\n IconButtonProps,\n MenuProps,\n}: ChangeColumnProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)\n const setWidget = useWidgetStore((state) => state.setWidget)\n const columns = useWidgetStore(\n useShallow((state) => state.getWidget<TableWidgetState>(id)?.columns),\n )\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const columnIds = useMemo(\n () => columns?.map((col) => col.id) ?? [],\n [columns],\n )\n\n const handleToggle = useCallback((event: MouseEvent<HTMLElement>) => {\n event.stopPropagation()\n setAnchorEl(event.currentTarget)\n }, [])\n\n const handleClose = useCallback(() => {\n setAnchorEl(null)\n }, [])\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id || !columns) return\n const oldIndex = columns.findIndex((col) => col.id === active.id)\n const newIndex = columns.findIndex((col) => col.id === over.id)\n if (oldIndex !== -1 && newIndex !== -1) {\n const newColumns = arrayMove(columns, oldIndex, newIndex)\n setWidget(id, { columns: newColumns })\n }\n }\n\n // Return null if there are fewer than 2 columns\n if (!columns || columns.length < 2) {\n return null\n }\n\n const tooltipLabel = labels?.tooltip ?? 'Change column'\n const isOpen = Boolean(anchorEl)\n\n return (\n <>\n <Tooltip title={tooltipLabel}>\n <IconButton\n size='small'\n aria-label={labels?.ariaLabel ?? tooltipLabel}\n aria-controls={isOpen ? 'change-column-menu' : undefined}\n aria-haspopup='true'\n aria-expanded={isOpen ? 'true' : undefined}\n onClick={handleToggle}\n data-active={isOpen}\n sx={actionButtonStyles.trigger}\n {...IconButtonProps}\n >\n {Icon ?? (\n <SvgIcon>\n <ChangeColumnIcon />\n </SvgIcon>\n )}\n </IconButton>\n </Tooltip>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <Menu\n id='change-column-menu'\n anchorEl={anchorEl}\n open={isOpen}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n {...MenuProps}\n >\n <SortableContext\n items={columnIds}\n strategy={verticalListSortingStrategy}\n >\n {columns.map((column) => (\n <SortableColumnItem key={column.id} column={column} />\n ))}\n </SortableContext>\n </Menu>\n </DndContext>\n </>\n )\n}\n"],"names":["styles","title","container","display","alignItems","justifyContent","gap","content","flexDirection","spacing","FullScreen","t0","$","_c","id","labels","children","Icon","IconButtonProps","DialogContentProps","t1","t2","undefined","sx","t3","state","widget","getWidget","isFullScreen","useWidgetStore","useShallow","setWidget","_temp","t4","updates","updateFullScreenConfig","t5","t6","FullscreenOutlined","t7","IconButton","t8","t9","ariaLabel","t10","t11","t12","Typography","t13","t14","Symbol","for","Close","t15","jsx","t16","DialogTitle","t17","t18","DialogContent","t19","jsxs","Dialog","t20","state_0","Download","items","data","isDownloading","setIsDownloading","useState","anchorEl","setAnchorEl","event","stopPropagation","currentTarget","handleToggle","data_0","option","link","document","createElement","href","download","filename","style","body","appendChild","click","removeChild","callback","handleDownload","event_0","option_0","result","modifier","handleClick","length","CircularProgress","FileDownloadOutlined","vertical","horizontal","Boolean","paddingBottom","option_1","MenuItem","disabled","e","icon","ListItemIcon","color","ListItemText","label","map","Menu","actionButtonStyles","trigger","background","theme","palette","primary","relatedLight","calculateTotal","reduce","total","series","seriesTotal","item","Object","values","itemTotal","value","toRelativeData","transformed","key","entries","RELATIVE_DATA_TOOL_ID","RelativeData","order","defaultIsRelative","previousMaxValue","useRef","_temp2","registerTool","_temp3","unregisterTool","_temp4","setToolEnabled","_temp5","state_4","isRelative","useEffect","enabled","fn","_temp6","newIsRelative","max","current","currentMax","tooltipLabel","absolute","relative","PercentOutlined","Tooltip","echartData","state_3","state_2","state_1","ZoomToggle","defaultZoom","defaultZoomStart","defaultZoomEnd","ResetIcon","useTheme","zoom","start","end","zoomConfig","getEChartZoomConfig","inside","xSlider","ySlider","currentOption","zoomStart","zoomEnd","updateZoomOption","existingState","existingState_0","newZoom","existingState_1","handleReset","zoomEvent","start_0","end_0","handleDataZoom","onEvents","dataZoom","enableLabel","enable","disableLabel","disable","resetLabel","reset","ZoomInOutlined","SubdirectoryArrowLeftOutlined","Box","GroupedBarChartIcon","StackToggle","defaultIsStacked","isStacked","storeIsStacked","bb0","Array","isArray","some","effectiveDefaultIsStacked","stacked","updatedSeries","s_0","existingStack","s","stack","getEChartStackConfig","DEFAULT_STACK_GROUP","updateOptions","newIsStacked","unstacked","LOCK_SELECTION_TOOL_ID","LockSelection","selectedItems","updateToolConfig","isLocked","lockedItems","config","unlock","lock","CheckBoxOutlined","filterDataByLockedItems","filter","name","includes","SEARCHER_TOOL_ID","DEBOUNCE_DELAY","Searcher","filterFn","TextFieldProps","ClearIcon","debounceDelay","inputRef","debounceTimeoutRef","widgetState","isSearchEnabled","searchText","prevEnabledRef","defaultFilterFn","text","setSearchText","searchTextFromConfig","disables","text_0","clearTimeout","setTimeout","debouncedUpdateConfig","focus","newValue","target","handleChange","handleClear","placeholder","clearAriaLabel","InputAdornment","SearchOutlined","ClearOutlined","startAdornment","endAdornment","TextField","trim","Promise","resolve","lowerSearch","toLowerCase","SearcherToggle","defaultEnabled","isEnabled","ChangeColumnIcon","SortableColumnItem","column","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","CSS","Transform","toString","opacity","cursor","outline","outlineOffset","main","ChangeColumn","MenuProps","columns","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","columnIds","handleClose","active","over","oldIndex","findIndex","col_0","col","newIndex","col_1","newColumns","arrayMove","handleDragEnd","tooltip","isOpen","SvgIcon","SortableContext","verticalListSortingStrategy","DndContext","closestCenter"],"mappings":"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"}
|
package/dist/widgets/bar.js
CHANGED
|
@@ -5,14 +5,14 @@ import "echarts";
|
|
|
5
5
|
import "../widget-store-CB6Trp_0.js";
|
|
6
6
|
import "zustand/shallow";
|
|
7
7
|
import { g } from "../options-D9wflre6.js";
|
|
8
|
-
import { m as f } from "../utils-
|
|
8
|
+
import { m as f } from "../utils-D3-eQyDR.js";
|
|
9
9
|
import { f as h, c as d, b as u, a as x, d as y } from "../styles-dOu_pRNb.js";
|
|
10
10
|
import { Box as a, Skeleton as o } from "@mui/material";
|
|
11
11
|
import "@mui/icons-material";
|
|
12
12
|
import "react-markdown";
|
|
13
13
|
import { d as l, a as p } from "../exports-Cr43OCul.js";
|
|
14
|
-
import "../lasso-tool-
|
|
15
|
-
import "../cjs-
|
|
14
|
+
import "../lasso-tool-BwRzEW7k.js";
|
|
15
|
+
import "../cjs-D4KH3azB.js";
|
|
16
16
|
import "@dnd-kit/core";
|
|
17
17
|
import "@dnd-kit/sortable";
|
|
18
18
|
import "@dnd-kit/utilities";
|
|
@@ -139,7 +139,7 @@ const r = {
|
|
|
139
139
|
function H() {
|
|
140
140
|
const e = m(2);
|
|
141
141
|
let t;
|
|
142
|
-
e[0] === Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.grid, children: [
|
|
142
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (t = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.grid, children: [
|
|
143
143
|
/* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "20%" }),
|
|
144
144
|
/* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "40%" }),
|
|
145
145
|
/* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "60%" }),
|
|
@@ -147,7 +147,7 @@ function H() {
|
|
|
147
147
|
/* @__PURE__ */ n(o, { sx: r.skeleton.item, variant: "rectangular", height: "80%" })
|
|
148
148
|
] }), e[0] = t) : t = e[0];
|
|
149
149
|
let i;
|
|
150
|
-
return e[1] === Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.container, children: [
|
|
150
|
+
return e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ s(a, { sx: r.skeleton.graph.container, children: [
|
|
151
151
|
t,
|
|
152
152
|
/* @__PURE__ */ n(a, { sx: {
|
|
153
153
|
display: "flex",
|