@carto/ps-react-ui 4.4.3 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{download-config-Dqu78h2a.js → download-config-DemuQ3Jm.js} +9 -10
- package/dist/{download-config-Dqu78h2a.js.map → download-config-DemuQ3Jm.js.map} +1 -1
- package/dist/error-Cj8eUMrl.js +40 -0
- package/dist/error-Cj8eUMrl.js.map +1 -0
- package/dist/no-data-DkIt7Qt1.js +61 -0
- package/dist/no-data-DkIt7Qt1.js.map +1 -0
- package/dist/row-D4VOhcNI.js +34 -0
- package/dist/row-D4VOhcNI.js.map +1 -0
- package/dist/series-Bola3CmD.js +90 -0
- package/dist/series-Bola3CmD.js.map +1 -0
- package/dist/types/widgets/echart/shared-resize-observer.d.ts +12 -0
- package/dist/types/widgets/stores/index.d.ts +2 -1
- package/dist/types/widgets/stores/use-widget-selector.d.ts +35 -0
- package/dist/types/widgets/stores/widget-store-performance.test.d.ts +1 -0
- package/dist/types/widgets/stores/widget-store.d.ts +49 -27
- package/dist/types/widgets/table/types.d.ts +1 -1
- package/dist/use-widget-ref-BFazQvJK.js +22 -0
- package/dist/use-widget-ref-BFazQvJK.js.map +1 -0
- package/dist/use-widget-selector-DqRmWQ1K.js +12 -0
- package/dist/use-widget-selector-DqRmWQ1K.js.map +1 -0
- package/dist/widget-store-CIrb9RKP.js +263 -0
- package/dist/widget-store-CIrb9RKP.js.map +1 -0
- package/dist/widgets/actions.js +783 -817
- package/dist/widgets/actions.js.map +1 -1
- package/dist/widgets/bar.js +2 -2
- package/dist/widgets/category.js +254 -257
- package/dist/widgets/category.js.map +1 -1
- package/dist/widgets/echart.js +109 -99
- package/dist/widgets/echart.js.map +1 -1
- package/dist/widgets/error.js +1 -1
- package/dist/widgets/formula.js +71 -63
- package/dist/widgets/formula.js.map +1 -1
- package/dist/widgets/histogram.js +7 -8
- package/dist/widgets/histogram.js.map +1 -1
- package/dist/widgets/loader.js +53 -60
- package/dist/widgets/loader.js.map +1 -1
- package/dist/widgets/markdown.js +51 -50
- package/dist/widgets/markdown.js.map +1 -1
- package/dist/widgets/no-data.js +1 -1
- package/dist/widgets/pie.js +2 -2
- package/dist/widgets/range.js +146 -144
- package/dist/widgets/range.js.map +1 -1
- package/dist/widgets/scatterplot.js +2 -2
- package/dist/widgets/skeleton-loader.js +18 -17
- package/dist/widgets/skeleton-loader.js.map +1 -1
- package/dist/widgets/spread.js +110 -94
- package/dist/widgets/spread.js.map +1 -1
- package/dist/widgets/stores.js +5 -2
- package/dist/widgets/stores.js.map +1 -1
- package/dist/widgets/table.js +422 -436
- package/dist/widgets/table.js.map +1 -1
- package/dist/widgets/timeseries.js +2 -2
- package/dist/widgets/utils.js +1 -1
- package/dist/widgets/wrapper.js +156 -158
- package/dist/widgets/wrapper.js.map +1 -1
- package/dist/widgets.js +4 -4
- package/package.json +1 -1
- package/src/hooks/use-widget-ref.ts +3 -4
- package/src/widgets/actions/brush-toggle/brush-toggle.tsx +18 -32
- package/src/widgets/actions/change-column/change-column.tsx +15 -15
- package/src/widgets/actions/change-column/sortable-column-item.tsx +3 -1
- package/src/widgets/actions/download/download.tsx +4 -3
- package/src/widgets/actions/fullscreen/fullscreen.tsx +7 -11
- package/src/widgets/actions/lock-selection/lock-selection.tsx +12 -15
- package/src/widgets/actions/relative-data/relative-data.tsx +22 -26
- package/src/widgets/actions/searcher/searcher-toggle.tsx +11 -12
- package/src/widgets/actions/searcher/searcher.tsx +20 -21
- package/src/widgets/actions/stack-toggle/stack-toggle.tsx +15 -21
- package/src/widgets/actions/zoom-toggle/zoom-toggle.tsx +27 -43
- package/src/widgets/category/category-ui.tsx +27 -31
- package/src/widgets/echart/echart-ui.test.tsx +20 -16
- package/src/widgets/echart/echart-ui.tsx +6 -12
- package/src/widgets/echart/echart.tsx +13 -27
- package/src/widgets/echart/shared-resize-observer.ts +45 -0
- package/src/widgets/error/error.tsx +7 -9
- package/src/widgets/formula/components/prefix.tsx +4 -6
- package/src/widgets/formula/components/row.tsx +4 -4
- package/src/widgets/formula/components/series.tsx +4 -6
- package/src/widgets/formula/components/suffix.tsx +4 -6
- package/src/widgets/formula/components/value.tsx +9 -16
- package/src/widgets/loader/loader.tsx +31 -44
- package/src/widgets/markdown/markdown.tsx +4 -7
- package/src/widgets/no-data/no-data.tsx +7 -10
- package/src/widgets/range/components/range-item.tsx +20 -18
- package/src/widgets/skeleton-loader/skeleton-loader.tsx +2 -5
- package/src/widgets/spread/components/max-value.tsx +14 -16
- package/src/widgets/spread/components/min-value.tsx +14 -16
- package/src/widgets/stores/index.ts +2 -1
- package/src/widgets/stores/use-widget-selector.ts +47 -0
- package/src/widgets/stores/widget-store-performance.test.ts +750 -0
- package/src/widgets/stores/widget-store.test.ts +81 -0
- package/src/widgets/stores/widget-store.ts +225 -44
- package/src/widgets/table/config.ts +0 -1
- package/src/widgets/table/hooks/use-pagination.ts +28 -52
- package/src/widgets/table/hooks/use-selection.ts +20 -24
- package/src/widgets/table/hooks/use-sort.ts +22 -39
- package/src/widgets/table/types.ts +1 -1
- package/src/widgets/wrapper/wrapper-ui.tsx +12 -13
- package/src/widgets/wrapper/wrapper.tsx +4 -6
- package/dist/error-CEkRPccv.js +0 -39
- package/dist/error-CEkRPccv.js.map +0 -1
- package/dist/no-data-hR3KcJ-_.js +0 -60
- package/dist/no-data-hR3KcJ-_.js.map +0 -1
- package/dist/row-DTCV0Ocm.js +0 -35
- package/dist/row-DTCV0Ocm.js.map +0 -1
- package/dist/series-CYNOu2Ju.js +0 -91
- package/dist/series-CYNOu2Ju.js.map +0 -1
- package/dist/use-widget-ref-wtFLDFCD.js +0 -25
- package/dist/use-widget-ref-wtFLDFCD.js.map +0 -1
- package/dist/widget-store-CzDt8oSK.js +0 -163
- package/dist/widget-store-CzDt8oSK.js.map +0 -1
package/dist/widgets/wrapper.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { c as
|
|
3
|
-
import { Box as
|
|
4
|
-
import { MoreVert as
|
|
5
|
-
import { useState as
|
|
1
|
+
import { jsx as p, jsxs as A, Fragment as P } from "react/jsx-runtime";
|
|
2
|
+
import { c as w } from "react/compiler-runtime";
|
|
3
|
+
import { Box as E, IconButton as _, MenuItem as W, ListItemIcon as $, ListItemText as B, Menu as L, Typography as N, LinearProgress as j, AccordionSummary as z, AccordionDetails as F, Accordion as Y } from "@mui/material";
|
|
4
|
+
import { MoreVert as D } from "@mui/icons-material";
|
|
5
|
+
import { useState as H, useLayoutEffect as G } from "react";
|
|
6
6
|
import "../lasso-tool-BYbxrJ-7.js";
|
|
7
7
|
import "../cjs-D4KH3azB.js";
|
|
8
|
-
import { S as
|
|
9
|
-
import { u as
|
|
10
|
-
import {
|
|
11
|
-
const
|
|
8
|
+
import { S as U } from "../smart-tooltip-D4vwQpFf.js";
|
|
9
|
+
import { u as V } from "../use-widget-selector-DqRmWQ1K.js";
|
|
10
|
+
import { w as M } from "../widget-store-CIrb9RKP.js";
|
|
11
|
+
const k = {
|
|
12
12
|
root: {
|
|
13
13
|
".Mui-disabled .MuiAccordionSummary-expandIconWrapper": {
|
|
14
14
|
display: "none"
|
|
@@ -108,178 +108,176 @@ const T = {
|
|
|
108
108
|
spacing: t
|
|
109
109
|
}) => t(0.5)
|
|
110
110
|
}
|
|
111
|
-
},
|
|
112
|
-
function
|
|
113
|
-
const e =
|
|
114
|
-
actions:
|
|
115
|
-
} = t,
|
|
116
|
-
let
|
|
117
|
-
e[0] !==
|
|
118
|
-
let
|
|
119
|
-
return e[2] !==
|
|
111
|
+
}, q = [];
|
|
112
|
+
function J(t) {
|
|
113
|
+
const e = w(4), {
|
|
114
|
+
actions: i
|
|
115
|
+
} = t, l = i === void 0 ? q : i;
|
|
116
|
+
let n;
|
|
117
|
+
e[0] !== l ? (n = l.map(K), e[0] = l, e[1] = n) : n = e[1];
|
|
118
|
+
let o;
|
|
119
|
+
return e[2] !== n ? (o = /* @__PURE__ */ p(E, { sx: k.actions, className: "widget-wrapper-actions", children: n }), e[2] = n, e[3] = o) : o = e[3], o;
|
|
120
120
|
}
|
|
121
|
-
function
|
|
122
|
-
const
|
|
123
|
-
return /* @__PURE__ */
|
|
121
|
+
function K(t, e) {
|
|
122
|
+
const i = t && typeof t == "object" && "key" in t && t.key != null ? t.key : e;
|
|
123
|
+
return /* @__PURE__ */ p(E, { onClick: Q, children: t }, i);
|
|
124
124
|
}
|
|
125
|
-
function
|
|
125
|
+
function Q(t) {
|
|
126
126
|
t.stopPropagation();
|
|
127
127
|
}
|
|
128
|
-
const
|
|
129
|
-
function
|
|
130
|
-
const e =
|
|
131
|
-
labels:
|
|
132
|
-
options:
|
|
133
|
-
} = t,
|
|
128
|
+
const R = [];
|
|
129
|
+
function X(t) {
|
|
130
|
+
const e = w(19), {
|
|
131
|
+
labels: i,
|
|
132
|
+
options: l
|
|
133
|
+
} = t, n = l === void 0 ? R : l, [o, s] = H(null);
|
|
134
|
+
let f;
|
|
135
|
+
e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (f = (c, d) => {
|
|
136
|
+
c.stopPropagation(), d.onClick(), s(null);
|
|
137
|
+
}, e[0] = f) : f = e[0];
|
|
138
|
+
const v = f, x = i?.title ?? "Options";
|
|
139
|
+
let h, b;
|
|
140
|
+
e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (h = (c) => {
|
|
141
|
+
c.stopPropagation(), s(c.currentTarget);
|
|
142
|
+
}, b = /* @__PURE__ */ p(D, {}), e[1] = h, e[2] = b) : (h = e[1], b = e[2]);
|
|
134
143
|
let m;
|
|
135
|
-
e[
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const S = m, x = n?.title ?? "Options";
|
|
139
|
-
let f, g;
|
|
140
|
-
e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (f = (y) => {
|
|
141
|
-
y.stopPropagation(), r(y.currentTarget);
|
|
142
|
-
}, g = /* @__PURE__ */ a(J, {}), e[1] = f, e[2] = g) : (f = e[1], g = e[2]);
|
|
143
|
-
let s;
|
|
144
|
-
e[3] !== x ? (s = /* @__PURE__ */ a(j, { sx: T.options.trigger, size: "small", "aria-label": x, "aria-controls": "options-menu", "aria-haspopup": "true", onClick: f, children: g }), e[3] = x, e[4] = s) : s = e[4];
|
|
145
|
-
let d, b;
|
|
146
|
-
e[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (d = {
|
|
144
|
+
e[3] !== x ? (m = /* @__PURE__ */ p(_, { sx: k.options.trigger, size: "small", "aria-label": x, "aria-controls": "options-menu", "aria-haspopup": "true", onClick: h, children: b }), e[3] = x, e[4] = m) : m = e[4];
|
|
145
|
+
let u, g;
|
|
146
|
+
e[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (u = {
|
|
147
147
|
vertical: "top",
|
|
148
148
|
horizontal: "right"
|
|
149
|
-
},
|
|
149
|
+
}, g = {
|
|
150
150
|
vertical: "top",
|
|
151
151
|
horizontal: "right"
|
|
152
|
-
}, e[5] =
|
|
153
|
-
const
|
|
154
|
-
let
|
|
155
|
-
e[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (
|
|
152
|
+
}, e[5] = u, e[6] = g) : (u = e[5], g = e[6]);
|
|
153
|
+
const C = !!o;
|
|
154
|
+
let r, I;
|
|
155
|
+
e[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (r = () => s(null), I = {
|
|
156
156
|
sx: {
|
|
157
157
|
paddingBottom: 0
|
|
158
158
|
}
|
|
159
|
-
}, e[7] =
|
|
160
|
-
let
|
|
161
|
-
if (e[9] !==
|
|
162
|
-
let
|
|
163
|
-
e[11] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (
|
|
164
|
-
|
|
165
|
-
/* @__PURE__ */
|
|
166
|
-
] },
|
|
159
|
+
}, e[7] = r, e[8] = I) : (r = e[7], I = e[8]);
|
|
160
|
+
let a;
|
|
161
|
+
if (e[9] !== n) {
|
|
162
|
+
let c;
|
|
163
|
+
e[11] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (c = (d) => /* @__PURE__ */ A(W, { disabled: d.disabled, onClick: (T) => v(T, d), children: [
|
|
164
|
+
d.icon && /* @__PURE__ */ p($, { children: d.icon }),
|
|
165
|
+
/* @__PURE__ */ p(B, { children: d.label })
|
|
166
|
+
] }, d.label), e[11] = c) : c = e[11], a = n.map(c), e[9] = n, e[10] = a;
|
|
167
167
|
} else
|
|
168
|
-
|
|
169
|
-
let
|
|
170
|
-
e[12] !==
|
|
171
|
-
let
|
|
172
|
-
return e[16] !==
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
] }), e[16] =
|
|
168
|
+
a = e[10];
|
|
169
|
+
let y;
|
|
170
|
+
e[12] !== o || e[13] !== a || e[14] !== C ? (y = /* @__PURE__ */ p(L, { variant: "menu", elevation: 8, anchorOrigin: u, transformOrigin: g, anchorEl: o, open: C, onClose: r, MenuListProps: I, children: a }), e[12] = o, e[13] = a, e[14] = C, e[15] = y) : y = e[15];
|
|
171
|
+
let S;
|
|
172
|
+
return e[16] !== y || e[17] !== m ? (S = /* @__PURE__ */ A(P, { children: [
|
|
173
|
+
m,
|
|
174
|
+
y
|
|
175
|
+
] }), e[16] = y, e[17] = m, e[18] = S) : S = e[18], S;
|
|
176
176
|
}
|
|
177
|
-
function
|
|
178
|
-
const e =
|
|
179
|
-
label:
|
|
180
|
-
children:
|
|
181
|
-
} = t,
|
|
182
|
-
let
|
|
183
|
-
e[0] !==
|
|
177
|
+
function Z(t) {
|
|
178
|
+
const e = w(5), {
|
|
179
|
+
label: i,
|
|
180
|
+
children: l
|
|
181
|
+
} = t, n = i ?? (typeof l == "string" ? l : "");
|
|
182
|
+
let o;
|
|
183
|
+
e[0] !== l ? (o = (f) => {
|
|
184
184
|
const {
|
|
185
|
-
ref:
|
|
186
|
-
} =
|
|
187
|
-
return /* @__PURE__ */
|
|
188
|
-
}, e[0] =
|
|
189
|
-
let
|
|
190
|
-
return e[2] !==
|
|
185
|
+
ref: v
|
|
186
|
+
} = f;
|
|
187
|
+
return /* @__PURE__ */ p(E, { sx: k.title.container, children: /* @__PURE__ */ p(N, { sx: k.title.text, ref: v, variant: "subtitle1", textTransform: "none", children: l }) });
|
|
188
|
+
}, e[0] = l, e[1] = o) : o = e[1];
|
|
189
|
+
let s;
|
|
190
|
+
return e[2] !== n || e[3] !== o ? (s = /* @__PURE__ */ p(U, { title: n, children: o }), e[2] = n, e[3] = o, e[4] = s) : s = e[4], s;
|
|
191
191
|
}
|
|
192
|
-
const
|
|
193
|
-
function
|
|
194
|
-
const e =
|
|
195
|
-
children:
|
|
196
|
-
id:
|
|
197
|
-
actions:
|
|
198
|
-
sx:
|
|
199
|
-
labels:
|
|
200
|
-
options:
|
|
201
|
-
onChangeCollapsed:
|
|
202
|
-
} = t, x =
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}, e[
|
|
220
|
-
const y = !b;
|
|
192
|
+
const ee = [], te = [];
|
|
193
|
+
function oe(t) {
|
|
194
|
+
const e = w(26), {
|
|
195
|
+
children: i,
|
|
196
|
+
id: l,
|
|
197
|
+
actions: n,
|
|
198
|
+
sx: o,
|
|
199
|
+
labels: s,
|
|
200
|
+
options: f,
|
|
201
|
+
onChangeCollapsed: v
|
|
202
|
+
} = t, x = n === void 0 ? ee : n, h = f === void 0 ? te : f, {
|
|
203
|
+
title: b,
|
|
204
|
+
collapsed: m,
|
|
205
|
+
disabled: u,
|
|
206
|
+
isFetching: g
|
|
207
|
+
} = V(l, ie), C = m ? "collapsed" : "";
|
|
208
|
+
let r;
|
|
209
|
+
e[0] !== o ? (r = {
|
|
210
|
+
...k.root,
|
|
211
|
+
...o
|
|
212
|
+
}, e[0] = o, e[1] = r) : r = e[1];
|
|
213
|
+
const I = !m;
|
|
214
|
+
let a;
|
|
215
|
+
e[2] !== g ? (a = g && /* @__PURE__ */ p(j, { sx: k.loading, color: "primary" }), e[2] = g, e[3] = a) : a = e[3];
|
|
216
|
+
let y;
|
|
217
|
+
e[4] !== b ? (y = /* @__PURE__ */ p(Z, { children: b }), e[4] = b, e[5] = y) : y = e[5];
|
|
218
|
+
let S;
|
|
219
|
+
e[6] !== x ? (S = !!x.length && /* @__PURE__ */ p(J, { actions: x }), e[6] = x, e[7] = S) : S = e[7];
|
|
221
220
|
let c;
|
|
222
|
-
e[
|
|
223
|
-
let
|
|
224
|
-
e[12] !==
|
|
221
|
+
e[8] !== s?.options || e[9] !== h ? (c = !!h.length && /* @__PURE__ */ p(X, { labels: s?.options, options: h }), e[8] = s?.options, e[9] = h, e[10] = c) : c = e[10];
|
|
222
|
+
let d;
|
|
223
|
+
e[11] !== a || e[12] !== y || e[13] !== S || e[14] !== c ? (d = /* @__PURE__ */ A(z, { sx: k.summary, children: [
|
|
224
|
+
a,
|
|
225
|
+
y,
|
|
226
|
+
S,
|
|
227
|
+
c
|
|
228
|
+
] }), e[11] = a, e[12] = y, e[13] = S, e[14] = c, e[15] = d) : d = e[15];
|
|
229
|
+
let T;
|
|
230
|
+
e[16] !== i ? (T = /* @__PURE__ */ p(F, { sx: k.detail, children: i }), e[16] = i, e[17] = T) : T = e[17];
|
|
225
231
|
let O;
|
|
226
|
-
e[
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
let A;
|
|
239
|
-
return e[26] !== v || e[27] !== S || e[28] !== E || e[29] !== M || e[30] !== u || e[31] !== I || e[32] !== y ? (A = /* @__PURE__ */ B(q, { className: u, sx: I, expanded: y, onChange: S, disabled: v, children: [
|
|
240
|
-
E,
|
|
241
|
-
M
|
|
242
|
-
] }), e[26] = v, e[27] = S, e[28] = E, e[29] = M, e[30] = u, e[31] = I, e[32] = y, e[33] = A) : A = e[33], A;
|
|
232
|
+
return e[18] !== u || e[19] !== v || e[20] !== d || e[21] !== T || e[22] !== C || e[23] !== r || e[24] !== I ? (O = /* @__PURE__ */ A(Y, { className: C, sx: r, expanded: I, onChange: v, disabled: u, children: [
|
|
233
|
+
d,
|
|
234
|
+
T
|
|
235
|
+
] }), e[18] = u, e[19] = v, e[20] = d, e[21] = T, e[22] = C, e[23] = r, e[24] = I, e[25] = O) : O = e[25], O;
|
|
236
|
+
}
|
|
237
|
+
function ie(t) {
|
|
238
|
+
return {
|
|
239
|
+
title: t?.title,
|
|
240
|
+
collapsed: t?.collapsed,
|
|
241
|
+
disabled: t?.disabled,
|
|
242
|
+
isFetching: t?.isFetching
|
|
243
|
+
};
|
|
243
244
|
}
|
|
244
|
-
function
|
|
245
|
-
const e =
|
|
246
|
-
id:
|
|
247
|
-
title:
|
|
248
|
-
defaultCollapsed:
|
|
249
|
-
disabled:
|
|
250
|
-
sx:
|
|
251
|
-
actions:
|
|
252
|
-
options:
|
|
245
|
+
function he(t) {
|
|
246
|
+
const e = w(17), {
|
|
247
|
+
id: i,
|
|
248
|
+
title: l,
|
|
249
|
+
defaultCollapsed: n,
|
|
250
|
+
disabled: o,
|
|
251
|
+
sx: s,
|
|
252
|
+
actions: f,
|
|
253
|
+
options: v,
|
|
253
254
|
labels: x,
|
|
254
|
-
children:
|
|
255
|
-
onChangeCollapsed:
|
|
256
|
-
} = t
|
|
257
|
-
let
|
|
258
|
-
e[0] !==
|
|
259
|
-
|
|
260
|
-
collapsed:
|
|
261
|
-
disabled:
|
|
262
|
-
title:
|
|
255
|
+
children: h,
|
|
256
|
+
onChangeCollapsed: b
|
|
257
|
+
} = t;
|
|
258
|
+
let m, u;
|
|
259
|
+
e[0] !== n || e[1] !== o || e[2] !== i || e[3] !== l ? (m = () => {
|
|
260
|
+
M.setWidget(i, {
|
|
261
|
+
collapsed: n,
|
|
262
|
+
disabled: o,
|
|
263
|
+
title: l
|
|
263
264
|
});
|
|
264
|
-
},
|
|
265
|
-
let
|
|
266
|
-
e[
|
|
267
|
-
|
|
268
|
-
collapsed: !
|
|
265
|
+
}, u = [n, o, l, i], e[0] = n, e[1] = o, e[2] = i, e[3] = l, e[4] = m, e[5] = u) : (m = e[4], u = e[5]), G(m, u);
|
|
266
|
+
let g;
|
|
267
|
+
e[6] !== i || e[7] !== b ? (g = (I, a) => {
|
|
268
|
+
b?.(I, a), M.setWidget(i, {
|
|
269
|
+
collapsed: !a
|
|
269
270
|
});
|
|
270
|
-
}, e[
|
|
271
|
-
const
|
|
272
|
-
let
|
|
273
|
-
return e[
|
|
274
|
-
}
|
|
275
|
-
function ae(t) {
|
|
276
|
-
return t.setWidget;
|
|
271
|
+
}, e[6] = i, e[7] = b, e[8] = g) : g = e[8];
|
|
272
|
+
const C = g;
|
|
273
|
+
let r;
|
|
274
|
+
return e[9] !== f || e[10] !== h || e[11] !== C || e[12] !== i || e[13] !== x || e[14] !== v || e[15] !== s ? (r = /* @__PURE__ */ p(oe, { id: i, labels: x, actions: f, options: v, sx: s, onChangeCollapsed: C, children: h }), e[9] = f, e[10] = h, e[11] = C, e[12] = i, e[13] = x, e[14] = v, e[15] = s, e[16] = r) : r = e[16], r;
|
|
277
275
|
}
|
|
278
276
|
export {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
277
|
+
J as Actions,
|
|
278
|
+
X as Options,
|
|
279
|
+
Z as Title,
|
|
280
|
+
he as WidgetWrapper,
|
|
281
|
+
oe as WrapperUI
|
|
284
282
|
};
|
|
285
283
|
//# sourceMappingURL=wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper.js","sources":["../../src/widgets/wrapper/styles.ts","../../src/widgets/wrapper/components/actions.tsx","../../src/widgets/wrapper/components/options.tsx","../../src/widgets/wrapper/components/title.tsx","../../src/widgets/wrapper/wrapper-ui.tsx","../../src/widgets/wrapper/wrapper.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n '.Mui-disabled .MuiAccordionSummary-expandIconWrapper': {\n display: 'none',\n },\n '.widget-wrapper-actions > *': {\n opacity: 1,\n transition: ({ transitions }) =>\n transitions.create('opacity', {\n duration: transitions.duration.standard,\n easing: transitions.easing.easeInOut,\n }),\n\n '@media (hover: hover)': {\n opacity: 0,\n },\n\n '&:has(.active)': {\n opacity: 1,\n },\n },\n '&:hover': {\n '& .widget-wrapper-actions > *': {\n opacity: 1,\n },\n },\n\n '&.collapsed .widget-wrapper-actions > *': {\n opacity: 0,\n pointerEvents: 'none',\n\n '&:has(.active)': {\n opacity: 1,\n },\n },\n },\n summary: {\n minHeight: ({ spacing }) => spacing(7),\n '& .MuiAccordionSummary-content': {\n gap: ({ spacing }) => spacing(0.5),\n paddingInlineEnd: ({ spacing }) => spacing(0.75),\n },\n },\n loading: {\n height: ({ spacing }) => spacing(0.35),\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%',\n zIndex: 1,\n },\n title: {\n wrapper: {\n flexGrow: 1,\n flexShrink: 1,\n minWidth: 0,\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n },\n container: {\n display: 'flex',\n alignItems: 'center',\n flexGrow: 1,\n minHeight: ({ spacing }) => spacing(3),\n },\n text: {\n wordBreak: 'break-word',\n overflow: 'hidden',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n },\n },\n actions: {\n display: 'flex',\n gap: ({ spacing }) => spacing(0.5),\n alignItems: 'center',\n flexShrink: 0,\n justifyContent: 'flex-end',\n '& > div': {\n pointerEvents: 'auto',\n },\n },\n options: {\n trigger: {\n pointerEvents: 'auto',\n },\n },\n detail: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(1),\n paddingTop: ({ spacing }) => spacing(0.5),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport type { WrapperActionsProps } from '../types'\nimport { styles } from '../styles'\n\nconst EMPTY_ACTIONS: NonNullable<WrapperActionsProps['actions']> = []\n\n/**\n * Renders action buttons in the widget wrapper header. Each action click event is stopped from propagating to the accordion.\n */\nexport function Actions({ actions = EMPTY_ACTIONS }: WrapperActionsProps) {\n return (\n <Box sx={styles.actions} className='widget-wrapper-actions'>\n {actions.map((action, index) => {\n // Prefer action.key if present (React elements), else fallback to index\n const key =\n action &&\n typeof action === 'object' &&\n 'key' in action &&\n action.key != null\n ? action.key\n : index\n return (\n <Box\n key={key}\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n {action}\n </Box>\n )\n })}\n </Box>\n )\n}\n","import { MoreVert } from '@mui/icons-material'\nimport {\n IconButton,\n Menu,\n MenuItem,\n ListItemIcon,\n ListItemText,\n} from '@mui/material'\nimport type { WrapperOptionsProps } from '../types'\nimport { useState } from 'react'\nimport { styles } from '../styles'\n\nconst EMPTY_OPTIONS: NonNullable<WrapperOptionsProps['options']> = []\n\n/**\n * Renders a dropdown options menu in the widget wrapper header, triggered by a vertical ellipsis icon button.\n */\nexport function Options({\n labels,\n options = EMPTY_OPTIONS,\n}: WrapperOptionsProps) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\n const handleOptionAction = (\n e: React.MouseEvent<HTMLElement>,\n option: NonNullable<WrapperOptionsProps['options']>[number],\n ) => {\n e.stopPropagation()\n option.onClick()\n setAnchorEl(null)\n }\n\n return (\n <>\n <IconButton\n sx={styles.options.trigger}\n size='small'\n aria-label={labels?.title ?? 'Options'}\n aria-controls='options-menu'\n aria-haspopup='true'\n onClick={(e) => {\n e.stopPropagation()\n setAnchorEl(e.currentTarget)\n }}\n >\n <MoreVert />\n </IconButton>\n <Menu\n variant='menu'\n elevation={8}\n anchorOrigin={{\n vertical: 'top',\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 {options.map((option) => (\n <MenuItem\n key={option.label}\n disabled={option.disabled}\n onClick={(e) => handleOptionAction(e, option)}\n >\n {option.icon && <ListItemIcon>{option.icon}</ListItemIcon>}\n <ListItemText>{option.label}</ListItemText>\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../styles'\nimport { SmartTooltip } from '../../../components'\nimport type { ReactNode } from 'react'\nimport type { WrapperOptionsProps } from '../types'\n\n/**\n * Renders the widget title text inside the wrapper header with smart tooltip support for truncated titles.\n */\nexport function Title({\n label,\n children,\n}: {\n children: ReactNode\n label?: NonNullable<WrapperOptionsProps['labels']>['title']\n}) {\n return (\n <SmartTooltip\n title={label ?? (typeof children === 'string' ? children : '')}\n >\n {({ ref }) => (\n <Box sx={styles.title.container}>\n <Typography\n sx={styles.title.text}\n ref={ref}\n variant='subtitle1'\n textTransform='none'\n >\n {children}\n </Typography>\n </Box>\n )}\n </SmartTooltip>\n )\n}\n","import {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n LinearProgress,\n} from '@mui/material'\nimport { styles } from './styles'\nimport { Title } from './components/title'\nimport type { WrapperState, WrapperUIProps } from './types'\nimport { Options } from './components/options'\nimport { Actions } from './components/actions'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { useShallow } from 'zustand/shallow'\n\nconst EMPTY_ACTIONS: NonNullable<WrapperUIProps['actions']> = []\nconst EMPTY_OPTIONS: NonNullable<WrapperUIProps['options']> = []\n\n/**\n * Presentational wrapper component that renders the widget accordion UI with title, actions, options menu, and loading indicator. For uncontrolled usage without automatic widget store synchronization, use this instead of WidgetWrapper.\n *\n * @example\n * ```tsx\n * <WrapperUI\n * id=\"my-widget\"\n * actions={[<Download key=\"download\" id=\"my-widget\" />]}\n * onChangeCollapsed={(e, collapsed) => console.log(collapsed)}\n * >\n * <div>Content</div>\n * </WrapperUI>\n * ```\n */\nexport function WrapperUI({\n children,\n id,\n actions = EMPTY_ACTIONS,\n sx,\n labels,\n options = EMPTY_OPTIONS,\n onChangeCollapsed,\n}: WrapperUIProps) {\n const title = useWidgetStore(\n useShallow((state) => state.getWidget<WrapperState>(id)?.title),\n )\n const collapsed = useWidgetStore(\n useShallow((state) => state.getWidget<WrapperState>(id)?.collapsed),\n )\n const disabled = useWidgetStore(\n useShallow((state) => state.getWidget<WrapperState>(id)?.disabled),\n )\n const isFetching = useWidgetStore(\n useShallow((state) => state.getWidget<WrapperState>(id)?.isFetching),\n )\n\n return (\n <Accordion\n className={collapsed ? 'collapsed' : ''}\n sx={{ ...styles.root, ...sx }}\n expanded={!collapsed}\n onChange={onChangeCollapsed}\n disabled={disabled}\n >\n <AccordionSummary sx={styles.summary}>\n {isFetching && <LinearProgress sx={styles.loading} color='primary' />}\n <Title>{title}</Title>\n {!!actions.length && <Actions actions={actions} />}\n {!!options.length && (\n <Options labels={labels?.options} options={options} />\n )}\n </AccordionSummary>\n <AccordionDetails sx={styles.detail}>{children}</AccordionDetails>\n </Accordion>\n )\n}\n","import type { WrapperProps, WrapperState } from './types'\nimport { WrapperUI } from './wrapper-ui'\nimport { useWidgetStore } from '../stores/widget-store'\nimport { useLayoutEffect } from 'react'\n\n/**\n * Container component providing a collapsible header with title, action buttons, and options menu for widgets. Syncs collapse, disabled, and title state with the widget store.\n *\n * @example\n * ```tsx\n * <WidgetWrapper\n * id=\"my-widget\"\n * title=\"Sales Overview\"\n * actions={[<Download key=\"download\" id=\"my-widget\" items={downloads} />]}\n * >\n * {children}\n * </WidgetWrapper>\n * ```\n */\nexport function WidgetWrapper({\n id,\n title,\n defaultCollapsed,\n disabled,\n sx,\n actions,\n options,\n labels,\n children,\n onChangeCollapsed,\n}: WrapperProps) {\n const setWidget = useWidgetStore((state) => state.setWidget)\n\n useLayoutEffect(() => {\n setWidget<WrapperState>(id, {\n collapsed: defaultCollapsed,\n disabled,\n title,\n })\n }, [defaultCollapsed, disabled, title, id, setWidget])\n\n const handleChangeCollapsed = (\n event: React.SyntheticEvent<Element, Event>,\n expanded: boolean,\n ) => {\n onChangeCollapsed?.(event, expanded)\n setWidget<WrapperState>(id, { collapsed: !expanded })\n }\n\n return (\n <WrapperUI\n id={id}\n labels={labels}\n actions={actions}\n options={options}\n sx={sx}\n onChangeCollapsed={handleChangeCollapsed}\n >\n {children}\n </WrapperUI>\n )\n}\n"],"names":["styles","root","display","opacity","transition","transitions","create","duration","standard","easing","easeInOut","pointerEvents","summary","minHeight","spacing","gap","paddingInlineEnd","loading","height","left","position","top","width","zIndex","title","container","alignItems","flexGrow","text","wordBreak","overflow","WebkitLineClamp","WebkitBoxOrient","actions","flexShrink","justifyContent","options","trigger","detail","flexDirection","paddingTop","EMPTY_ACTIONS","Actions","t0","$","_c","t1","undefined","t2","map","_temp2","t3","Box","action","index","key","jsx","_temp","e","stopPropagation","EMPTY_OPTIONS","Options","labels","anchorEl","setAnchorEl","useState","Symbol","for","option","onClick","handleOptionAction","t4","t5","e_0","currentTarget","MoreVert","t6","IconButton","t7","t8","vertical","horizontal","t9","Boolean","t10","t11","sx","paddingBottom","t12","t13","option_0","jsxs","MenuItem","disabled","e_1","icon","ListItemIcon","ListItemText","label","Menu","t14","Title","children","ref","Typography","SmartTooltip","WrapperUI","id","onChangeCollapsed","state","getWidget","useWidgetStore","useShallow","state_0","collapsed","state_1","state_2","isFetching","LinearProgress","length","AccordionSummary","t15","AccordionDetails","t16","Accordion","WidgetWrapper","defaultCollapsed","setWidget","useLayoutEffect","event","expanded","handleChangeCollapsed"],"mappings":";;;;;;;;;;AAEO,MAAMA,IAAS;AAAA,EACpBC,MAAM;AAAA,IACJ,wDAAwD;AAAA,MACtDC,SAAS;AAAA,IAAA;AAAA,IAEX,+BAA+B;AAAA,MAC7BC,SAAS;AAAA,MACTC,YAAYA,CAAC;AAAA,QAAEC,aAAAA;AAAAA,MAAAA,MACbA,EAAYC,OAAO,WAAW;AAAA,QAC5BC,UAAUF,EAAYE,SAASC;AAAAA,QAC/BC,QAAQJ,EAAYI,OAAOC;AAAAA,MAAAA,CAC5B;AAAA,MAEH,yBAAyB;AAAA,QACvBP,SAAS;AAAA,MAAA;AAAA,MAGX,kBAAkB;AAAA,QAChBA,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,WAAW;AAAA,MACT,iCAAiC;AAAA,QAC/BA,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAGF,2CAA2C;AAAA,MACzCA,SAAS;AAAA,MACTQ,eAAe;AAAA,MAEf,kBAAkB;AAAA,QAChBR,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,EACF;AAAA,EAEFS,SAAS;AAAA,IACPC,WAAWA,CAAC;AAAA,MAAEC,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,IACrC,kCAAkC;AAAA,MAChCC,KAAKA,CAAC;AAAA,QAAED,SAAAA;AAAAA,MAAAA,MAAcA,EAAQ,GAAG;AAAA,MACjCE,kBAAkBA,CAAC;AAAA,QAAEF,SAAAA;AAAAA,MAAAA,MAAcA,EAAQ,IAAI;AAAA,IAAA;AAAA,EACjD;AAAA,EAEFG,SAAS;AAAA,IACPC,QAAQA,CAAC;AAAA,MAAEJ,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,IAAI;AAAA,IACrCK,MAAM;AAAA,IACNC,UAAU;AAAA,IACVC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPC,QAAQ;AAAA,EAAA;AAAA,EAEVC,OAAO;AAAA,IASLC,WAAW;AAAA,MACTvB,SAAS;AAAA,MACTwB,YAAY;AAAA,MACZC,UAAU;AAAA,MACVd,WAAWA,CAAC;AAAA,QAAEC,SAAAA;AAAAA,MAAAA,MAAcA,EAAQ,CAAC;AAAA,IAAA;AAAA,IAEvCc,MAAM;AAAA,MACJC,WAAW;AAAA,MACXC,UAAU;AAAA,MACV5B,SAAS;AAAA,MACT6B,iBAAiB;AAAA,MACjBC,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAAA,EAEFC,SAAS;AAAA,IACP/B,SAAS;AAAA,IACTa,KAAKA,CAAC;AAAA,MAAED,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,GAAG;AAAA,IACjCY,YAAY;AAAA,IACZQ,YAAY;AAAA,IACZC,gBAAgB;AAAA,IAChB,WAAW;AAAA,MACTxB,eAAe;AAAA,IAAA;AAAA,EACjB;AAAA,EAEFyB,SAAS;AAAA,IACPC,SAAS;AAAA,MACP1B,eAAe;AAAA,IAAA;AAAA,EACjB;AAAA,EAEF2B,QAAQ;AAAA,IACNpC,SAAS;AAAA,IACTqC,eAAe;AAAA,IACfxB,KAAKA,CAAC;AAAA,MAAED,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,CAAC;AAAA,IAC/B0B,YAAYA,CAAC;AAAA,MAAE1B,SAAAA;AAAAA,IAAAA,MAAcA,EAAQ,GAAG;AAAA,EAAA;AAE5C,GC7FM2B,IAA6D,CAAA;AAK5D,SAAAC,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAiB;AAAA,IAAAZ,SAAAa;AAAAA,EAAAA,IAAAH,GAAEV,IAAAa,MAAAC,SAAAN,IAAAK;AAAuB,MAAAE;AAAA,EAAAJ,SAAAX,KAG1Ce,IAAAf,EAAOgB,IAAKC,EAmBZ,GAACN,OAAAX,GAAAW,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAA,MAAAO;AAAA,SAAAP,SAAAI,KApBJG,sBAACC,GAAA,EAAQ,IAAApD,EAAMiC,SAAoB,WAAA,0BAChCe,UAAAA,EAAAA,CAoBH,GAAMJ,OAAAI,GAAAJ,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GArBNO;AAqBM;AAvBH,SAAAD,GAAAG,GAAAC,GAAA;AAKC,QAAAC,IACEF,KACA,OAAOA,KAAW,YAClB,SAASA,KACTA,EAAME,OAAQ,OACVF,EAAME,MAJVD;AAKS,SAET,gBAAAE,EAACJ,GAAA,EAEU,SAAAK,mBADJF,CAMP;AAAM;AApBT,SAAAE,GAAAC,GAAA;AAgBOA,EAAAA,EAACC,gBAAAA;AAAkB;ACbjC,MAAMC,KAA6D,CAAA;AAK5D,SAAAC,GAAAlB,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAiB;AAAA,IAAAiB,QAAAA;AAAAA,IAAA1B,SAAAU;AAAAA,EAAAA,IAAAH,GAEtBP,IAAAU,MAAAC,SAAAa,KAAAd,GAEA,CAAAiB,GAAAC,CAAA,IAAgCC,EAA6B,IAAI;AAAC,MAAAjB;AAAA,EAAAJ,EAAA,CAAA,MAAAsB,uBAAAC,IAAA,2BAAA,KAEvCnB,IAAAA,CAAAU,GAAAU,MAAA;AAIzBV,IAAAA,EAACC,gBAAAA,GACDS,EAAMC,QAAAA,GACNL,EAAY,IAAI;AAAA,EAAC,GAClBpB,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAPD,QAAA0B,IAA2BtB,GAcTG,IAAAW,GAAMtC,SAAN;AAA0B,MAAA+C,GAAAC;AAAA,EAAA5B,EAAA,CAAA,MAAAsB,uBAAAC,IAAA,2BAAA,KAG7BI,IAAAE,CAAAA,MAAA;AACPf,IAAAA,EAACC,gBAAAA,GACDK,EAAYN,EAACgB,aAAc;AAAA,EAAC,GAG9BF,sBAACG,GAAA,EAAQ,GAAG/B,OAAA2B,GAAA3B,OAAA4B,MAAAD,IAAA3B,EAAA,CAAA,GAAA4B,IAAA5B,EAAA,CAAA;AAAA,MAAAgC;AAAA,EAAAhC,SAAAO,KAXdyB,sBAACC,GAAA,EACK,IAAA7E,EAAMoC,QAAQC,SACb,MAAA,SACO,cAAAc,GACE,iBAAA,gBACA,iBAAA,QACL,SAAAoB,GAKTC,UAAAA,GACF,GAAa5B,OAAAO,GAAAP,OAAAgC,KAAAA,IAAAhC,EAAA,CAAA;AAAA,MAAAkC,GAAAC;AAAA,EAAAnC,EAAA,CAAA,MAAAsB,uBAAAC,IAAA,2BAAA,KAIGW,IAAA;AAAA,IAAAE,UACF;AAAA,IAAKC,YACH;AAAA,EAAA,GAEGF,IAAA;AAAA,IAAAC,UACL;AAAA,IAAKC,YACH;AAAA,EAAA,GACbrC,OAAAkC,GAAAlC,OAAAmC,MAAAD,IAAAlC,EAAA,CAAA,GAAAmC,IAAAnC,EAAA,CAAA;AAEK,QAAAsC,IAAAC,EAAQpB;AAAS,MAAAqB,GAAAC;AAAA,EAAAzC,EAAA,CAAA,MAAAsB,uBAAAC,IAAA,2BAAA,KACdiB,IAAAA,MAAMpB,EAAY,IAAI,GAChBqB,IAAA;AAAA,IAAAC,IACT;AAAA,MAAAC,eACa;AAAA,IAAA;AAAA,EACjB,GACD3C,OAAAwC,GAAAxC,OAAAyC,MAAAD,IAAAxC,EAAA,CAAA,GAAAyC,IAAAzC,EAAA,CAAA;AAAA,MAAA4C;AAAA,MAAA5C,SAAAR,GAAA;AAAA,QAAAqD;AAAA,IAAA7C,EAAA,EAAA,MAAAsB,uBAAAC,IAAA,2BAAA,KAEYsB,IAAAC,CAAAA,MACX,gBAAAC,EAACC,GAAA,EAEW,UAAAxB,EAAMyB,UACP,SAAAC,CAAAA,MAAOxB,EAAmBZ,GAAGU,CAAM,GAE3CA,UAAAA;AAAAA,MAAAA,EAAM2B,QAAS,gBAAAvC,EAACwC,GAAA,EAAc5B,UAAAA,EAAM2B,MAAM;AAAA,MAC3C,gBAAAvC,EAACyC,GAAA,EAAc7B,UAAAA,EAAM8B,MAAAA,CAAO;AAAA,IAAA,EAAA,GALvB9B,EAAM8B,KAMb,GACDtD,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA,GATA4C,IAAApD,EAAOa,IAAKwC,CASZ,GAAC7C,OAAAR,GAAAQ,QAAA4C;AAAAA,EAAA;AAAAA,IAAAA,IAAA5C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,EAAA,EAAA,MAAAmB,KAAAnB,UAAA4C,KAAA5C,EAAA,EAAA,MAAAsC,KA7BJO,sBAACU,GAAA,EACS,SAAA,QACG,WAAA,GACG,cAAArB,GAIG,iBAAAC,GAIPhB,UAAAA,GACJ,MAAAmB,GACG,SAAAE,GACM,eAAAC,GAMdG,UAAAA,GAUH,GAAO5C,QAAAmB,GAAAnB,QAAA4C,GAAA5C,QAAAsC,GAAAtC,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAAwD;AAAA,SAAAxD,EAAA,EAAA,MAAA6C,KAAA7C,UAAAgC,KA5CTwB,2BACExB,UAAAA;AAAAA,IAAAA;AAAAA,IAaAa;AAAAA,EAAAA,GA8BO,GACN7C,QAAA6C,GAAA7C,QAAAgC,GAAAhC,QAAAwD,KAAAA,IAAAxD,EAAA,EAAA,GA7CHwD;AA6CG;ACrEA,SAAAC,GAAA1D,GAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAe;AAAA,IAAAqD,OAAAA;AAAAA,IAAAI,UAAAA;AAAAA,EAAAA,IAAA3D,GASTG,IAAAoD,MAAU,OAAOI,KAAa,WAApBA,IAAA;AAA6C,MAAAtD;AAAA,EAAAJ,SAAA0D,KAE7DtD,IAAAG,CAAAA,MAAA;AAAC,UAAA;AAAA,MAAAoD,KAAAA;AAAAA,IAAAA,IAAApD;AAAO,6BACNC,GAAA,EAAQ,IAAApD,EAAMwB,MAAMC,WACnB,4BAAC+E,GAAA,EACK,IAAAxG,EAAMwB,MAAMI,MACX2E,KAAAA,GACG,SAAA,aACM,eAAA,QAEbD,UAAAA,GACH,GACF;AAAA,EAAM,GACP1D,OAAA0D,GAAA1D,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAA,MAAAO;AAAA,SAAAP,EAAA,CAAA,MAAAE,KAAAF,SAAAI,KAdHG,IAAA,gBAAAK,EAACiD,GAAA,EACQ,OAAA3D,GAENE,UAAAA,GAYH,GAAeJ,OAAAE,GAAAF,OAAAI,GAAAJ,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAffO;AAee;AClBnB,MAAMV,KAAwD,CAAA,GACxDmB,KAAwD,CAAA;AAgBvD,SAAA8C,GAAA/D,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAmB;AAAA,IAAAyD,UAAAA;AAAAA,IAAAK,IAAAA;AAAAA,IAAA1E,SAAAa;AAAAA,IAAAwC,IAAAA;AAAAA,IAAAxB,QAAAA;AAAAA,IAAA1B,SAAAY;AAAAA,IAAA4D,mBAAAA;AAAAA,EAAAA,IAAAjE,GAGxBV,IAAAa,MAAAC,SAAAN,KAAAK,GAGAV,IAAAY,MAAAD,SAAAa,KAAAZ;AAAuB,MAAAG;AAAA,EAAAP,SAAA+D,KAIVxD,IAAA0D,CAAAA,MAAWA,EAAKC,UAAyBH,CAAS,GAACnF,OAAAoB,OAAA+D,GAAA/D,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AADhE,QAAApB,IAAcuF,EACZC,EAAW7D,CAAmD,CAChE;AAAC,MAAAoB;AAAA,EAAA3B,SAAA+D,KAEYpC,IAAA0C,CAAAA,MAAWJ,EAAKC,UAAyBH,CAAa,GAACO,WAAAtE,OAAA+D,GAAA/D,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AADpE,QAAAsE,IAAkBH,EAChBC,EAAWzC,CAAuD,CACpE;AAAC,MAAAC;AAAA,EAAA5B,SAAA+D,KAEYnC,IAAA2C,CAAAA,MAAWN,EAAKC,UAAyBH,CAAY,GAACd,UAAAjD,OAAA+D,GAAA/D,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA;AADnE,QAAAiD,IAAiBkB,EACfC,EAAWxC,CAAsD,CACnE;AAAC,MAAAI;AAAA,EAAAhC,SAAA+D,KAEY/B,IAAAwC,CAAAA,MAAWP,EAAKC,UAAyBH,CAAc,GAACU,YAAAzE,OAAA+D,GAAA/D,OAAAgC,KAAAA,IAAAhC,EAAA,CAAA;AADrE,QAAAyE,IAAmBN,EACjBC,EAAWpC,CAAwD,CACrE,GAIeE,IAAAoC,IAAA,cAAA;AAA4B,MAAAnC;AAAA,EAAAnC,SAAA0C,KACnCP,IAAA;AAAA,IAAA,GAAK/E,EAAMC;AAAAA,IAAK,GAAKqF;AAAAA,EAAAA,GAAI1C,OAAA0C,GAAA1C,OAAAmC,KAAAA,IAAAnC,EAAA,CAAA;AACnB,QAAAsC,KAACgC;AAAS,MAAA9B;AAAA,EAAAxC,UAAAyE,KAKjBjC,IAAAiC,KAAc,gBAAA7D,EAAC8D,GAAA,EAAmB,IAAAtH,EAAMiB,SAAgB,OAAA,WAAS,GAAG2B,QAAAyE,GAAAzE,QAAAwC,KAAAA,IAAAxC,EAAA,EAAA;AAAA,MAAAyC;AAAA,EAAAzC,UAAApB,KACrE6D,sBAACgB,mBAAa,GAAQzD,QAAApB,GAAAoB,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAAA,MAAA4C;AAAA,EAAA5C,UAAAX,KACrBuD,IAAA,CAAC,CAACvD,EAAOsF,UAAW,gBAAA/D,EAACd,KAAiBT,SAAAA,GAAO,GAAIW,QAAAX,GAAAW,QAAA4C,KAAAA,IAAA5C,EAAA,EAAA;AAAA,MAAA6C;AAAA,EAAA7C,UAAAkB,GAAA1B,WAAAQ,UAAAR,KACjDqD,IAAA,CAAC,CAACrD,EAAOmF,4BACP1D,IAAA,EAAgB,QAAAC,GAAM1B,SAAoBA,SAAAA,EAAAA,CAAO,GACnDQ,EAAA,EAAA,IAAAkB,GAAA1B,SAAAQ,QAAAR,GAAAQ,QAAA6C,KAAAA,IAAA7C,EAAA,EAAA;AAAA,MAAAwD;AAAA,EAAAxD,EAAA,EAAA,MAAAwC,KAAAxC,EAAA,EAAA,MAAAyC,KAAAzC,EAAA,EAAA,MAAA4C,KAAA5C,UAAA6C,KANHW,IAAA,gBAAAT,EAAC6B,GAAA,EAAqB,IAAAxH,EAAMY,SACzBwE,UAAAA;AAAAA,IAAAA;AAAAA,IACDC;AAAAA,IACCG;AAAAA,IACAC;AAAAA,EAAAA,GAGH,GAAmB7C,QAAAwC,GAAAxC,QAAAyC,GAAAzC,QAAA4C,GAAA5C,QAAA6C,GAAA7C,QAAAwD,KAAAA,IAAAxD,EAAA,EAAA;AAAA,MAAA6E;AAAA,EAAA7E,UAAA0D,KACnBmB,IAAA,gBAAAjE,EAACkE,GAAA,EAAqB,IAAA1H,EAAMsC,QAAUgE,UAAAA,GAAS,GAAmB1D,QAAA0D,GAAA1D,QAAA6E,KAAAA,IAAA7E,EAAA,EAAA;AAAA,MAAA+E;AAAA,SAAA/E,EAAA,EAAA,MAAAiD,KAAAjD,EAAA,EAAA,MAAAgE,KAAAhE,EAAA,EAAA,MAAAwD,KAAAxD,UAAA6E,KAAA7E,EAAA,EAAA,MAAAkC,KAAAlC,EAAA,EAAA,MAAAmC,KAAAnC,EAAA,EAAA,MAAAsC,KAfpEyC,sBAACC,GAAA,EACY,WAAA9C,GACP,IAAAC,GACM,UAAAG,GACA0B,UAAAA,GACAf,UAAAA,GAEVO,UAAAA;AAAAA,IAAAA;AAAAA,IAQAqB;AAAAA,EAAAA,GACF,GAAY7E,QAAAiD,GAAAjD,QAAAgE,GAAAhE,QAAAwD,GAAAxD,QAAA6E,GAAA7E,QAAAkC,GAAAlC,QAAAmC,GAAAnC,QAAAsC,GAAAtC,QAAA+E,KAAAA,IAAA/E,EAAA,EAAA,GAhBZ+E;AAgBY;ACnDT,SAAAE,GAAAlF,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAuB;AAAA,IAAA8D,IAAAA;AAAAA,IAAAnF,OAAAA;AAAAA,IAAAsG,kBAAAA;AAAAA,IAAAjC,UAAAA;AAAAA,IAAAP,IAAAA;AAAAA,IAAArD,SAAAA;AAAAA,IAAAG,SAAAA;AAAAA,IAAA0B,QAAAA;AAAAA,IAAAwC,UAAAA;AAAAA,IAAAM,mBAAAA;AAAAA,EAAAA,IAAAjE,GAY5BoF,IAAkBhB,EAAetD,EAA0B;AAAC,MAAAX,GAAAE;AAAA,EAAAJ,EAAA,CAAA,MAAAkF,KAAAlF,EAAA,CAAA,MAAAiD,KAAAjD,EAAA,CAAA,MAAA+D,KAAA/D,EAAA,CAAA,MAAAmF,KAAAnF,SAAApB,KAE5CsB,IAAAA,MAAA;AACdiF,IAAAA,EAAwBpB,GAAI;AAAA,MAAAO,WACfY;AAAAA,MAAgBjC,UAAAA;AAAAA,MAAArE,OAAAA;AAAAA,IAAAA,CAG5B;AAAA,EAAC,GACDwB,IAAA,CAAC8E,GAAkBjC,GAAUrE,GAAOmF,GAAIoB,CAAS,GAACnF,OAAAkF,GAAAlF,OAAAiD,GAAAjD,OAAA+D,GAAA/D,OAAAmF,GAAAnF,OAAApB,GAAAoB,OAAAE,GAAAF,OAAAI,MAAAF,IAAAF,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,IANrDoF,EAAgBlF,GAMbE,CAAkD;AAAC,MAAAG;AAAA,EAAAP,EAAA,CAAA,MAAA+D,KAAA/D,SAAAgE,KAAAhE,EAAA,CAAA,MAAAmF,KAExB5E,IAAAA,CAAA8E,GAAAC,MAAA;AAI5BtB,IAAAA,IAAoBqB,GAAOC,CAAQ,GACnCH,EAAwBpB,GAAI;AAAA,MAAAO,WAAa,CAACgB;AAAAA,IAAAA,CAAU;AAAA,EAAC,GACtDtF,OAAA+D,GAAA/D,OAAAgE,GAAAhE,OAAAmF,GAAAnF,QAAAO,KAAAA,IAAAP,EAAA,EAAA;AAND,QAAAuF,IAA8BhF;AAM7B,MAAAoB;AAAA,SAAA3B,EAAA,EAAA,MAAAX,KAAAW,EAAA,EAAA,MAAA0D,KAAA1D,EAAA,EAAA,MAAAuF,KAAAvF,UAAA+D,KAAA/D,EAAA,EAAA,MAAAkB,KAAAlB,EAAA,EAAA,MAAAR,KAAAQ,EAAA,EAAA,MAAA0C,KAGCf,sBAACmC,MACKC,IAAAA,GACI7C,QAAAA,GACC7B,SAAAA,GACAG,SAAAA,GACLkD,IAAAA,GACe6C,mCAGrB,GAAYvF,QAAAX,GAAAW,QAAA0D,GAAA1D,QAAAuF,GAAAvF,QAAA+D,GAAA/D,QAAAkB,GAAAlB,QAAAR,GAAAQ,QAAA0C,GAAA1C,QAAA2B,KAAAA,IAAA3B,EAAA,EAAA,GATZ2B;AASY;AAxCT,SAAAd,GAAAoD,GAAA;AAAA,SAYuCA,EAAKkB;AAAU;"}
|
|
1
|
+
{"version":3,"file":"wrapper.js","sources":["../../src/widgets/wrapper/styles.ts","../../src/widgets/wrapper/components/actions.tsx","../../src/widgets/wrapper/components/options.tsx","../../src/widgets/wrapper/components/title.tsx","../../src/widgets/wrapper/wrapper-ui.tsx","../../src/widgets/wrapper/wrapper.tsx"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material'\n\nexport const styles = {\n root: {\n '.Mui-disabled .MuiAccordionSummary-expandIconWrapper': {\n display: 'none',\n },\n '.widget-wrapper-actions > *': {\n opacity: 1,\n transition: ({ transitions }) =>\n transitions.create('opacity', {\n duration: transitions.duration.standard,\n easing: transitions.easing.easeInOut,\n }),\n\n '@media (hover: hover)': {\n opacity: 0,\n },\n\n '&:has(.active)': {\n opacity: 1,\n },\n },\n '&:hover': {\n '& .widget-wrapper-actions > *': {\n opacity: 1,\n },\n },\n\n '&.collapsed .widget-wrapper-actions > *': {\n opacity: 0,\n pointerEvents: 'none',\n\n '&:has(.active)': {\n opacity: 1,\n },\n },\n },\n summary: {\n minHeight: ({ spacing }) => spacing(7),\n '& .MuiAccordionSummary-content': {\n gap: ({ spacing }) => spacing(0.5),\n paddingInlineEnd: ({ spacing }) => spacing(0.75),\n },\n },\n loading: {\n height: ({ spacing }) => spacing(0.35),\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%',\n zIndex: 1,\n },\n title: {\n wrapper: {\n flexGrow: 1,\n flexShrink: 1,\n minWidth: 0,\n display: 'flex',\n justifyContent: 'center',\n flexDirection: 'column',\n },\n container: {\n display: 'flex',\n alignItems: 'center',\n flexGrow: 1,\n minHeight: ({ spacing }) => spacing(3),\n },\n text: {\n wordBreak: 'break-word',\n overflow: 'hidden',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n },\n },\n actions: {\n display: 'flex',\n gap: ({ spacing }) => spacing(0.5),\n alignItems: 'center',\n flexShrink: 0,\n justifyContent: 'flex-end',\n '& > div': {\n pointerEvents: 'auto',\n },\n },\n options: {\n trigger: {\n pointerEvents: 'auto',\n },\n },\n detail: {\n display: 'flex',\n flexDirection: 'column',\n gap: ({ spacing }) => spacing(1),\n paddingTop: ({ spacing }) => spacing(0.5),\n },\n} satisfies Record<string, SxProps<Theme>>\n","import { Box } from '@mui/material'\nimport type { WrapperActionsProps } from '../types'\nimport { styles } from '../styles'\n\nconst EMPTY_ACTIONS: NonNullable<WrapperActionsProps['actions']> = []\n\n/**\n * Renders action buttons in the widget wrapper header. Each action click event is stopped from propagating to the accordion.\n */\nexport function Actions({ actions = EMPTY_ACTIONS }: WrapperActionsProps) {\n return (\n <Box sx={styles.actions} className='widget-wrapper-actions'>\n {actions.map((action, index) => {\n // Prefer action.key if present (React elements), else fallback to index\n const key =\n action &&\n typeof action === 'object' &&\n 'key' in action &&\n action.key != null\n ? action.key\n : index\n return (\n <Box\n key={key}\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n {action}\n </Box>\n )\n })}\n </Box>\n )\n}\n","import { MoreVert } from '@mui/icons-material'\nimport {\n IconButton,\n Menu,\n MenuItem,\n ListItemIcon,\n ListItemText,\n} from '@mui/material'\nimport type { WrapperOptionsProps } from '../types'\nimport { useState } from 'react'\nimport { styles } from '../styles'\n\nconst EMPTY_OPTIONS: NonNullable<WrapperOptionsProps['options']> = []\n\n/**\n * Renders a dropdown options menu in the widget wrapper header, triggered by a vertical ellipsis icon button.\n */\nexport function Options({\n labels,\n options = EMPTY_OPTIONS,\n}: WrapperOptionsProps) {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n\n const handleOptionAction = (\n e: React.MouseEvent<HTMLElement>,\n option: NonNullable<WrapperOptionsProps['options']>[number],\n ) => {\n e.stopPropagation()\n option.onClick()\n setAnchorEl(null)\n }\n\n return (\n <>\n <IconButton\n sx={styles.options.trigger}\n size='small'\n aria-label={labels?.title ?? 'Options'}\n aria-controls='options-menu'\n aria-haspopup='true'\n onClick={(e) => {\n e.stopPropagation()\n setAnchorEl(e.currentTarget)\n }}\n >\n <MoreVert />\n </IconButton>\n <Menu\n variant='menu'\n elevation={8}\n anchorOrigin={{\n vertical: 'top',\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 {options.map((option) => (\n <MenuItem\n key={option.label}\n disabled={option.disabled}\n onClick={(e) => handleOptionAction(e, option)}\n >\n {option.icon && <ListItemIcon>{option.icon}</ListItemIcon>}\n <ListItemText>{option.label}</ListItemText>\n </MenuItem>\n ))}\n </Menu>\n </>\n )\n}\n","import { Box, Typography } from '@mui/material'\nimport { styles } from '../styles'\nimport { SmartTooltip } from '../../../components'\nimport type { ReactNode } from 'react'\nimport type { WrapperOptionsProps } from '../types'\n\n/**\n * Renders the widget title text inside the wrapper header with smart tooltip support for truncated titles.\n */\nexport function Title({\n label,\n children,\n}: {\n children: ReactNode\n label?: NonNullable<WrapperOptionsProps['labels']>['title']\n}) {\n return (\n <SmartTooltip\n title={label ?? (typeof children === 'string' ? children : '')}\n >\n {({ ref }) => (\n <Box sx={styles.title.container}>\n <Typography\n sx={styles.title.text}\n ref={ref}\n variant='subtitle1'\n textTransform='none'\n >\n {children}\n </Typography>\n </Box>\n )}\n </SmartTooltip>\n )\n}\n","import {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n LinearProgress,\n} from '@mui/material'\nimport { styles } from './styles'\nimport { Title } from './components/title'\nimport type { WrapperState, WrapperUIProps } from './types'\nimport { Options } from './components/options'\nimport { Actions } from './components/actions'\nimport { useWidgetSelector } from '../stores/use-widget-selector'\n\nconst EMPTY_ACTIONS: NonNullable<WrapperUIProps['actions']> = []\nconst EMPTY_OPTIONS: NonNullable<WrapperUIProps['options']> = []\n\n/**\n * Presentational wrapper component that renders the widget accordion UI with title, actions, options menu, and loading indicator. For uncontrolled usage without automatic widget store synchronization, use this instead of WidgetWrapper.\n *\n * @example\n * ```tsx\n * <WrapperUI\n * id=\"my-widget\"\n * actions={[<Download key=\"download\" id=\"my-widget\" />]}\n * onChangeCollapsed={(e, collapsed) => console.log(collapsed)}\n * >\n * <div>Content</div>\n * </WrapperUI>\n * ```\n */\nexport function WrapperUI({\n children,\n id,\n actions = EMPTY_ACTIONS,\n sx,\n labels,\n options = EMPTY_OPTIONS,\n onChangeCollapsed,\n}: WrapperUIProps) {\n // Single consolidated subscription instead of 4 separate ones.\n const { title, collapsed, disabled, isFetching } = useWidgetSelector(\n id,\n (w) => {\n return {\n title: (w as WrapperState | undefined)?.title,\n collapsed: (w as WrapperState | undefined)?.collapsed,\n disabled: (w as WrapperState | undefined)?.disabled,\n isFetching: w?.isFetching,\n }\n },\n )\n\n return (\n <Accordion\n className={collapsed ? 'collapsed' : ''}\n sx={{ ...styles.root, ...sx }}\n expanded={!collapsed}\n onChange={onChangeCollapsed}\n disabled={disabled}\n >\n <AccordionSummary sx={styles.summary}>\n {isFetching && <LinearProgress sx={styles.loading} color='primary' />}\n <Title>{title}</Title>\n {!!actions.length && <Actions actions={actions} />}\n {!!options.length && (\n <Options labels={labels?.options} options={options} />\n )}\n </AccordionSummary>\n <AccordionDetails sx={styles.detail}>{children}</AccordionDetails>\n </Accordion>\n )\n}\n","import type { WrapperProps, WrapperState } from './types'\nimport { WrapperUI } from './wrapper-ui'\nimport { widgetStoreActions } from '../stores/widget-store'\nimport { useLayoutEffect } from 'react'\n\n/**\n * Container component providing a collapsible header with title, action buttons, and options menu for widgets. Syncs collapse, disabled, and title state with the widget store.\n *\n * @example\n * ```tsx\n * <WidgetWrapper\n * id=\"my-widget\"\n * title=\"Sales Overview\"\n * actions={[<Download key=\"download\" id=\"my-widget\" items={downloads} />]}\n * >\n * {children}\n * </WidgetWrapper>\n * ```\n */\nexport function WidgetWrapper({\n id,\n title,\n defaultCollapsed,\n disabled,\n sx,\n actions,\n options,\n labels,\n children,\n onChangeCollapsed,\n}: WrapperProps) {\n useLayoutEffect(() => {\n widgetStoreActions.setWidget<WrapperState>(id, {\n collapsed: defaultCollapsed,\n disabled,\n title,\n })\n }, [defaultCollapsed, disabled, title, id])\n\n const handleChangeCollapsed = (\n event: React.SyntheticEvent<Element, Event>,\n expanded: boolean,\n ) => {\n onChangeCollapsed?.(event, expanded)\n widgetStoreActions.setWidget<WrapperState>(id, { collapsed: !expanded })\n }\n\n return (\n <WrapperUI\n id={id}\n labels={labels}\n actions={actions}\n options={options}\n sx={sx}\n onChangeCollapsed={handleChangeCollapsed}\n >\n {children}\n </WrapperUI>\n )\n}\n"],"names":["styles","root","display","opacity","transition","transitions","create","duration","standard","easing","easeInOut","pointerEvents","summary","minHeight","spacing","gap","paddingInlineEnd","loading","height","left","position","top","width","zIndex","title","container","alignItems","flexGrow","text","wordBreak","overflow","WebkitLineClamp","WebkitBoxOrient","actions","flexShrink","justifyContent","options","trigger","detail","flexDirection","paddingTop","EMPTY_ACTIONS","Actions","t0","$","_c","t1","undefined","t2","map","_temp2","t3","Box","action","index","key","jsx","_temp","e","stopPropagation","EMPTY_OPTIONS","Options","labels","anchorEl","setAnchorEl","useState","Symbol","for","option","onClick","handleOptionAction","t4","t5","e_0","currentTarget","MoreVert","t6","IconButton","t7","t8","vertical","horizontal","t9","Boolean","t10","t11","sx","paddingBottom","t12","t13","option_0","jsxs","MenuItem","disabled","e_1","icon","ListItemIcon","ListItemText","label","Menu","t14","Title","children","ref","Typography","SmartTooltip","WrapperUI","id","onChangeCollapsed","collapsed","isFetching","useWidgetSelector","LinearProgress","length","AccordionSummary","AccordionDetails","Accordion","w","WidgetWrapper","defaultCollapsed","widgetStoreActions","setWidget","useLayoutEffect","event","expanded","handleChangeCollapsed"],"mappings":"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"}
|
package/dist/widgets.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { u as r } from "./widget-store-
|
|
2
|
-
import { u as W } from "./use-widget-ref-
|
|
3
|
-
import { W as s } from "./no-data-
|
|
4
|
-
import { W as d } from "./error-
|
|
1
|
+
import { u as r } from "./widget-store-CIrb9RKP.js";
|
|
2
|
+
import { u as W } from "./use-widget-ref-BFazQvJK.js";
|
|
3
|
+
import { W as s } from "./no-data-DkIt7Qt1.js";
|
|
4
|
+
import { W as d } from "./error-Cj8eUMrl.js";
|
|
5
5
|
import { W as i } from "./note-t51drNe0.js";
|
|
6
6
|
export {
|
|
7
7
|
d as WidgetError,
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react'
|
|
2
|
-
import {
|
|
2
|
+
import { widgetStoreActions } from '../widgets/stores/widget-store'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Registers a DOM element ref and an ECharts instance ref with the widget store.
|
|
@@ -22,13 +22,12 @@ export function useWidgetRef<T extends HTMLElement = HTMLElement>(
|
|
|
22
22
|
) {
|
|
23
23
|
const ref = useRef<T | null>(null)
|
|
24
24
|
const instance = useRef<echarts.ECharts | null>(null)
|
|
25
|
-
const setWidget = useWidgetStore((store) => store.setWidget)
|
|
26
25
|
|
|
27
26
|
useEffect(() => {
|
|
28
27
|
if (ref.current) {
|
|
29
|
-
setWidget(widgetId, { refUI: ref, instance: instance })
|
|
28
|
+
widgetStoreActions.setWidget(widgetId, { refUI: ref, instance: instance })
|
|
30
29
|
}
|
|
31
|
-
}, [widgetId
|
|
30
|
+
}, [widgetId])
|
|
32
31
|
|
|
33
32
|
return { ref, instance }
|
|
34
33
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Box, IconButton } from '@mui/material'
|
|
2
2
|
import { HighlightAltOutlined } from '@mui/icons-material'
|
|
3
3
|
import { useEffect, useCallback, useRef } from 'react'
|
|
4
|
-
import {
|
|
4
|
+
import { widgetStoreActions } from '../../stores/widget-store'
|
|
5
5
|
import type { BrushSelectedItems, BrushToggleProps } from './types'
|
|
6
6
|
import { styles } from './style'
|
|
7
7
|
import { Tooltip } from '../../../components'
|
|
8
8
|
import { getEChartBrushConfig } from '../../echart/utils'
|
|
9
9
|
import type { EchartOptionsProps, EchartWidgetState } from '../../echart/types'
|
|
10
|
-
import {
|
|
10
|
+
import { useWidgetSelector } from '../../stores/use-widget-selector'
|
|
11
11
|
|
|
12
12
|
export const BRUSH_TOGGLE_TOOL_ID = 'brush-toggle'
|
|
13
13
|
|
|
@@ -36,26 +36,18 @@ export function BrushToggle({
|
|
|
36
36
|
Icon,
|
|
37
37
|
IconButtonProps,
|
|
38
38
|
}: BrushToggleProps) {
|
|
39
|
-
const getWidget = useWidgetStore((state) => state.getWidget)
|
|
40
|
-
const registerTool = useWidgetStore((state) => state.registerTool)
|
|
41
|
-
const unregisterTool = useWidgetStore((state) => state.unregisterTool)
|
|
42
|
-
const setToolEnabled = useWidgetStore((state) => state.setToolEnabled)
|
|
43
39
|
const selected = useRef<BrushSelectedItems>({ dataIndex: [], seriesIndex: 0 })
|
|
44
40
|
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}),
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
const brush = brushTool?.enabled
|
|
41
|
+
const { brush } = useWidgetSelector(id, (w) => ({
|
|
42
|
+
brush: w?.registeredTools?.find((tool) => tool.id === BRUSH_TOGGLE_TOOL_ID)
|
|
43
|
+
?.enabled,
|
|
44
|
+
}))
|
|
53
45
|
|
|
54
46
|
const toggleTool = useCallback(
|
|
55
47
|
(value: boolean) => {
|
|
56
|
-
setToolEnabled(id, BRUSH_TOGGLE_TOOL_ID, value)
|
|
48
|
+
widgetStoreActions.setToolEnabled(id, BRUSH_TOGGLE_TOOL_ID, value)
|
|
57
49
|
},
|
|
58
|
-
[id
|
|
50
|
+
[id],
|
|
59
51
|
)
|
|
60
52
|
|
|
61
53
|
const handleToggle = useCallback(() => {
|
|
@@ -71,7 +63,8 @@ export function BrushToggle({
|
|
|
71
63
|
useEffect(() => {
|
|
72
64
|
if (!brush) return
|
|
73
65
|
|
|
74
|
-
const instance =
|
|
66
|
+
const instance =
|
|
67
|
+
widgetStoreActions.getWidget<EchartWidgetState>(id)?.instance?.current
|
|
75
68
|
if (!instance) return
|
|
76
69
|
|
|
77
70
|
const handleRendered = () => {
|
|
@@ -95,7 +88,7 @@ export function BrushToggle({
|
|
|
95
88
|
return () => {
|
|
96
89
|
instance.off('rendered', handleRendered)
|
|
97
90
|
}
|
|
98
|
-
}, [brush,
|
|
91
|
+
}, [brush, id])
|
|
99
92
|
|
|
100
93
|
// Handle brushSelected event to capture selected bar indices
|
|
101
94
|
const handleBrushSelected = useCallback((event: unknown) => {
|
|
@@ -145,15 +138,15 @@ export function BrushToggle({
|
|
|
145
138
|
toggleTool(false) // Disable brush after selection is made
|
|
146
139
|
}, [onBrushSelected, toggleTool])
|
|
147
140
|
|
|
148
|
-
// Register config tool
|
|
141
|
+
// Register config tool with all reactive deps — store's no-op detection handles performance
|
|
149
142
|
useEffect(() => {
|
|
150
|
-
const existingTool =
|
|
151
|
-
(
|
|
152
|
-
|
|
143
|
+
const existingTool = widgetStoreActions
|
|
144
|
+
.getWidget(id)
|
|
145
|
+
?.registeredTools?.find((tool) => tool.id === BRUSH_TOGGLE_TOOL_ID)
|
|
153
146
|
|
|
154
147
|
const initialEnabled = existingTool?.enabled ?? false
|
|
155
148
|
|
|
156
|
-
registerTool(id, {
|
|
149
|
+
widgetStoreActions.registerTool(id, {
|
|
157
150
|
id: BRUSH_TOGGLE_TOOL_ID,
|
|
158
151
|
type: 'config',
|
|
159
152
|
order: 25,
|
|
@@ -182,15 +175,8 @@ export function BrushToggle({
|
|
|
182
175
|
}
|
|
183
176
|
},
|
|
184
177
|
})
|
|
185
|
-
return () => unregisterTool(id, BRUSH_TOGGLE_TOOL_ID)
|
|
186
|
-
}, [
|
|
187
|
-
getWidget,
|
|
188
|
-
handleBrushEnd,
|
|
189
|
-
handleBrushSelected,
|
|
190
|
-
id,
|
|
191
|
-
registerTool,
|
|
192
|
-
unregisterTool,
|
|
193
|
-
])
|
|
178
|
+
return () => widgetStoreActions.unregisterTool(id, BRUSH_TOGGLE_TOOL_ID)
|
|
179
|
+
}, [id, handleBrushSelected, handleBrushEnd])
|
|
194
180
|
|
|
195
181
|
const enableLabel = labels?.enable ?? 'Enable brush selection'
|
|
196
182
|
const disableLabel = labels?.disable ?? 'Disable brush selection'
|