@keenmate/web-multiselect 1.12.0-rc05 → 1.12.0-rc07
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -19
- package/dist/index.d.ts +237 -2
- package/dist/multiselect.js +1509 -944
- package/dist/multiselect.umd.js +16 -16
- package/dist/style.css +1 -1
- package/package.json +2 -1
- package/src/css/main.css +1 -0
- package/src/css/options.css +51 -2
- package/src/css/tree.css +42 -0
- package/src/css/variables.css +28 -3
package/dist/multiselect.js
CHANGED
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
const
|
|
1
|
+
var vt = Object.defineProperty;
|
|
2
|
+
var _t = (o, e, t) => e in o ? vt(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
|
|
3
|
+
var h = (o, e, t) => _t(o, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
+
const he = Math.min, X = Math.max, me = Math.round, ce = Math.floor, F = (o) => ({
|
|
5
5
|
x: o,
|
|
6
6
|
y: o
|
|
7
|
-
}),
|
|
7
|
+
}), kt = {
|
|
8
8
|
left: "right",
|
|
9
9
|
right: "left",
|
|
10
10
|
bottom: "top",
|
|
11
11
|
top: "bottom"
|
|
12
|
-
},
|
|
12
|
+
}, yt = {
|
|
13
13
|
start: "end",
|
|
14
14
|
end: "start"
|
|
15
15
|
};
|
|
16
|
-
function
|
|
17
|
-
return
|
|
16
|
+
function $e(o, e, t) {
|
|
17
|
+
return X(o, he(e, t));
|
|
18
18
|
}
|
|
19
|
-
function
|
|
19
|
+
function be(o, e) {
|
|
20
20
|
return typeof o == "function" ? o(e) : o;
|
|
21
21
|
}
|
|
22
|
-
function
|
|
22
|
+
function J(o) {
|
|
23
23
|
return o.split("-")[0];
|
|
24
24
|
}
|
|
25
|
-
function
|
|
25
|
+
function ge(o) {
|
|
26
26
|
return o.split("-")[1];
|
|
27
27
|
}
|
|
28
|
-
function
|
|
28
|
+
function Qe(o) {
|
|
29
29
|
return o === "x" ? "y" : "x";
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function et(o) {
|
|
32
32
|
return o === "y" ? "height" : "width";
|
|
33
33
|
}
|
|
34
|
-
const
|
|
35
|
-
function
|
|
36
|
-
return
|
|
34
|
+
const wt = /* @__PURE__ */ new Set(["top", "bottom"]);
|
|
35
|
+
function G(o) {
|
|
36
|
+
return wt.has(J(o)) ? "y" : "x";
|
|
37
37
|
}
|
|
38
|
-
function
|
|
39
|
-
return
|
|
38
|
+
function tt(o) {
|
|
39
|
+
return Qe(G(o));
|
|
40
40
|
}
|
|
41
|
-
function
|
|
41
|
+
function xt(o, e, t) {
|
|
42
42
|
t === void 0 && (t = !1);
|
|
43
|
-
const s =
|
|
44
|
-
let
|
|
45
|
-
return e.reference[r] > e.floating[r] && (
|
|
43
|
+
const s = ge(o), i = tt(o), r = et(i);
|
|
44
|
+
let a = i === "x" ? s === (t ? "end" : "start") ? "right" : "left" : s === "start" ? "bottom" : "top";
|
|
45
|
+
return e.reference[r] > e.floating[r] && (a = pe(a)), [a, pe(a)];
|
|
46
46
|
}
|
|
47
|
-
function
|
|
48
|
-
const e =
|
|
49
|
-
return [
|
|
47
|
+
function Ct(o) {
|
|
48
|
+
const e = pe(o);
|
|
49
|
+
return [xe(o), e, xe(e)];
|
|
50
50
|
}
|
|
51
|
-
function
|
|
52
|
-
return o.replace(/start|end/g, (e) =>
|
|
51
|
+
function xe(o) {
|
|
52
|
+
return o.replace(/start|end/g, (e) => yt[e]);
|
|
53
53
|
}
|
|
54
|
-
const
|
|
55
|
-
function
|
|
54
|
+
const Re = ["left", "right"], Fe = ["right", "left"], St = ["top", "bottom"], Tt = ["bottom", "top"];
|
|
55
|
+
function It(o, e, t) {
|
|
56
56
|
switch (o) {
|
|
57
57
|
case "top":
|
|
58
58
|
case "bottom":
|
|
59
|
-
return t ? e ?
|
|
59
|
+
return t ? e ? Fe : Re : e ? Re : Fe;
|
|
60
60
|
case "left":
|
|
61
61
|
case "right":
|
|
62
|
-
return e ?
|
|
62
|
+
return e ? St : Tt;
|
|
63
63
|
default:
|
|
64
64
|
return [];
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
function
|
|
68
|
-
const i =
|
|
69
|
-
let r =
|
|
70
|
-
return i && (r = r.map((
|
|
67
|
+
function Mt(o, e, t, s) {
|
|
68
|
+
const i = ge(o);
|
|
69
|
+
let r = It(J(o), t === "start", s);
|
|
70
|
+
return i && (r = r.map((a) => a + "-" + i), e && (r = r.concat(r.map(xe)))), r;
|
|
71
71
|
}
|
|
72
|
-
function
|
|
73
|
-
return o.replace(/left|right|bottom|top/g, (e) =>
|
|
72
|
+
function pe(o) {
|
|
73
|
+
return o.replace(/left|right|bottom|top/g, (e) => kt[e]);
|
|
74
74
|
}
|
|
75
|
-
function
|
|
75
|
+
function Ot(o) {
|
|
76
76
|
return {
|
|
77
77
|
top: 0,
|
|
78
78
|
right: 0,
|
|
@@ -81,15 +81,15 @@ function kt(o) {
|
|
|
81
81
|
...o
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
function
|
|
85
|
-
return typeof o != "number" ?
|
|
84
|
+
function At(o) {
|
|
85
|
+
return typeof o != "number" ? Ot(o) : {
|
|
86
86
|
top: o,
|
|
87
87
|
right: o,
|
|
88
88
|
bottom: o,
|
|
89
89
|
left: o
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
|
-
function
|
|
92
|
+
function ue(o) {
|
|
93
93
|
const {
|
|
94
94
|
x: e,
|
|
95
95
|
y: t,
|
|
@@ -107,23 +107,23 @@ function ae(o) {
|
|
|
107
107
|
y: t
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
|
-
function
|
|
110
|
+
function He(o, e, t) {
|
|
111
111
|
let {
|
|
112
112
|
reference: s,
|
|
113
113
|
floating: i
|
|
114
114
|
} = o;
|
|
115
|
-
const r =
|
|
115
|
+
const r = G(e), a = tt(e), n = et(a), l = J(e), c = r === "y", d = s.x + s.width / 2 - i.width / 2, p = s.y + s.height / 2 - i.height / 2, u = s[n] / 2 - i[n] / 2;
|
|
116
116
|
let m;
|
|
117
117
|
switch (l) {
|
|
118
118
|
case "top":
|
|
119
119
|
m = {
|
|
120
|
-
x:
|
|
120
|
+
x: d,
|
|
121
121
|
y: s.y - i.height
|
|
122
122
|
};
|
|
123
123
|
break;
|
|
124
124
|
case "bottom":
|
|
125
125
|
m = {
|
|
126
|
-
x:
|
|
126
|
+
x: d,
|
|
127
127
|
y: s.y + s.height
|
|
128
128
|
};
|
|
129
129
|
break;
|
|
@@ -145,123 +145,123 @@ function Be(o, e, t) {
|
|
|
145
145
|
y: s.y
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
|
-
switch (
|
|
148
|
+
switch (ge(e)) {
|
|
149
149
|
case "start":
|
|
150
|
-
m[
|
|
150
|
+
m[a] -= u * (t && c ? -1 : 1);
|
|
151
151
|
break;
|
|
152
152
|
case "end":
|
|
153
|
-
m[
|
|
153
|
+
m[a] += u * (t && c ? -1 : 1);
|
|
154
154
|
break;
|
|
155
155
|
}
|
|
156
156
|
return m;
|
|
157
157
|
}
|
|
158
|
-
const
|
|
158
|
+
const Pt = async (o, e, t) => {
|
|
159
159
|
const {
|
|
160
160
|
placement: s = "bottom",
|
|
161
161
|
strategy: i = "absolute",
|
|
162
162
|
middleware: r = [],
|
|
163
|
-
platform:
|
|
164
|
-
} = t,
|
|
165
|
-
let
|
|
163
|
+
platform: a
|
|
164
|
+
} = t, n = r.filter(Boolean), l = await (a.isRTL == null ? void 0 : a.isRTL(e));
|
|
165
|
+
let c = await a.getElementRects({
|
|
166
166
|
reference: o,
|
|
167
167
|
floating: e,
|
|
168
168
|
strategy: i
|
|
169
169
|
}), {
|
|
170
|
-
x:
|
|
170
|
+
x: d,
|
|
171
171
|
y: p
|
|
172
|
-
} =
|
|
173
|
-
for (let
|
|
172
|
+
} = He(c, s, l), u = s, m = {}, b = 0;
|
|
173
|
+
for (let v = 0; v < n.length; v++) {
|
|
174
174
|
const {
|
|
175
|
-
name:
|
|
176
|
-
fn:
|
|
177
|
-
} =
|
|
175
|
+
name: f,
|
|
176
|
+
fn: g
|
|
177
|
+
} = n[v], {
|
|
178
178
|
x: _,
|
|
179
|
-
y
|
|
180
|
-
data:
|
|
181
|
-
reset:
|
|
182
|
-
} = await
|
|
183
|
-
x:
|
|
179
|
+
y,
|
|
180
|
+
data: w,
|
|
181
|
+
reset: M
|
|
182
|
+
} = await g({
|
|
183
|
+
x: d,
|
|
184
184
|
y: p,
|
|
185
185
|
initialPlacement: s,
|
|
186
186
|
placement: u,
|
|
187
187
|
strategy: i,
|
|
188
188
|
middlewareData: m,
|
|
189
|
-
rects:
|
|
190
|
-
platform:
|
|
189
|
+
rects: c,
|
|
190
|
+
platform: a,
|
|
191
191
|
elements: {
|
|
192
192
|
reference: o,
|
|
193
193
|
floating: e
|
|
194
194
|
}
|
|
195
195
|
});
|
|
196
|
-
|
|
196
|
+
d = _ ?? d, p = y ?? p, m = {
|
|
197
197
|
...m,
|
|
198
|
-
[
|
|
199
|
-
...m[
|
|
200
|
-
...
|
|
198
|
+
[f]: {
|
|
199
|
+
...m[f],
|
|
200
|
+
...w
|
|
201
201
|
}
|
|
202
|
-
},
|
|
202
|
+
}, M && b <= 50 && (b++, typeof M == "object" && (M.placement && (u = M.placement), M.rects && (c = M.rects === !0 ? await a.getElementRects({
|
|
203
203
|
reference: o,
|
|
204
204
|
floating: e,
|
|
205
205
|
strategy: i
|
|
206
|
-
}) :
|
|
207
|
-
x:
|
|
206
|
+
}) : M.rects), {
|
|
207
|
+
x: d,
|
|
208
208
|
y: p
|
|
209
|
-
} =
|
|
209
|
+
} = He(c, u, l)), v = -1);
|
|
210
210
|
}
|
|
211
211
|
return {
|
|
212
|
-
x:
|
|
212
|
+
x: d,
|
|
213
213
|
y: p,
|
|
214
214
|
placement: u,
|
|
215
215
|
strategy: i,
|
|
216
216
|
middlewareData: m
|
|
217
217
|
};
|
|
218
218
|
};
|
|
219
|
-
async function
|
|
219
|
+
async function st(o, e) {
|
|
220
220
|
var t;
|
|
221
221
|
e === void 0 && (e = {});
|
|
222
222
|
const {
|
|
223
223
|
x: s,
|
|
224
224
|
y: i,
|
|
225
225
|
platform: r,
|
|
226
|
-
rects:
|
|
227
|
-
elements:
|
|
226
|
+
rects: a,
|
|
227
|
+
elements: n,
|
|
228
228
|
strategy: l
|
|
229
229
|
} = o, {
|
|
230
|
-
boundary:
|
|
231
|
-
rootBoundary:
|
|
230
|
+
boundary: c = "clippingAncestors",
|
|
231
|
+
rootBoundary: d = "viewport",
|
|
232
232
|
elementContext: p = "floating",
|
|
233
233
|
altBoundary: u = !1,
|
|
234
234
|
padding: m = 0
|
|
235
|
-
} =
|
|
236
|
-
element: (t = await (r.isElement == null ? void 0 : r.isElement(
|
|
237
|
-
boundary:
|
|
238
|
-
rootBoundary:
|
|
235
|
+
} = be(e, o), b = At(m), f = n[u ? p === "floating" ? "reference" : "floating" : p], g = ue(await r.getClippingRect({
|
|
236
|
+
element: (t = await (r.isElement == null ? void 0 : r.isElement(f))) == null || t ? f : f.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(n.floating)),
|
|
237
|
+
boundary: c,
|
|
238
|
+
rootBoundary: d,
|
|
239
239
|
strategy: l
|
|
240
240
|
})), _ = p === "floating" ? {
|
|
241
241
|
x: s,
|
|
242
242
|
y: i,
|
|
243
|
-
width:
|
|
244
|
-
height:
|
|
245
|
-
} :
|
|
243
|
+
width: a.floating.width,
|
|
244
|
+
height: a.floating.height
|
|
245
|
+
} : a.reference, y = await (r.getOffsetParent == null ? void 0 : r.getOffsetParent(n.floating)), w = await (r.isElement == null ? void 0 : r.isElement(y)) ? await (r.getScale == null ? void 0 : r.getScale(y)) || {
|
|
246
246
|
x: 1,
|
|
247
247
|
y: 1
|
|
248
248
|
} : {
|
|
249
249
|
x: 1,
|
|
250
250
|
y: 1
|
|
251
|
-
},
|
|
252
|
-
elements:
|
|
251
|
+
}, M = ue(r.convertOffsetParentRelativeRectToViewportRelativeRect ? await r.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
252
|
+
elements: n,
|
|
253
253
|
rect: _,
|
|
254
|
-
offsetParent:
|
|
254
|
+
offsetParent: y,
|
|
255
255
|
strategy: l
|
|
256
256
|
}) : _);
|
|
257
257
|
return {
|
|
258
|
-
top: (
|
|
259
|
-
bottom: (
|
|
260
|
-
left: (
|
|
261
|
-
right: (
|
|
258
|
+
top: (g.top - M.top + b.top) / w.y,
|
|
259
|
+
bottom: (M.bottom - g.bottom + b.bottom) / w.y,
|
|
260
|
+
left: (g.left - M.left + b.left) / w.x,
|
|
261
|
+
right: (M.right - g.right + b.right) / w.x
|
|
262
262
|
};
|
|
263
263
|
}
|
|
264
|
-
const
|
|
264
|
+
const Lt = function(o) {
|
|
265
265
|
return o === void 0 && (o = {}), {
|
|
266
266
|
name: "flip",
|
|
267
267
|
options: o,
|
|
@@ -270,85 +270,85 @@ const St = function(o) {
|
|
|
270
270
|
const {
|
|
271
271
|
placement: i,
|
|
272
272
|
middlewareData: r,
|
|
273
|
-
rects:
|
|
274
|
-
initialPlacement:
|
|
273
|
+
rects: a,
|
|
274
|
+
initialPlacement: n,
|
|
275
275
|
platform: l,
|
|
276
|
-
elements:
|
|
276
|
+
elements: c
|
|
277
277
|
} = e, {
|
|
278
|
-
mainAxis:
|
|
278
|
+
mainAxis: d = !0,
|
|
279
279
|
crossAxis: p = !0,
|
|
280
280
|
fallbackPlacements: u,
|
|
281
281
|
fallbackStrategy: m = "bestFit",
|
|
282
282
|
fallbackAxisSideDirection: b = "none",
|
|
283
|
-
flipAlignment:
|
|
284
|
-
...
|
|
285
|
-
} =
|
|
283
|
+
flipAlignment: v = !0,
|
|
284
|
+
...f
|
|
285
|
+
} = be(o, e);
|
|
286
286
|
if ((t = r.arrow) != null && t.alignmentOffset)
|
|
287
287
|
return {};
|
|
288
|
-
const
|
|
289
|
-
!u &&
|
|
290
|
-
const j = [
|
|
291
|
-
let
|
|
292
|
-
if (
|
|
293
|
-
const
|
|
294
|
-
|
|
288
|
+
const g = J(i), _ = G(n), y = J(n) === n, w = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), M = u || (y || !v ? [pe(n)] : Ct(n)), E = b !== "none";
|
|
289
|
+
!u && E && M.push(...Mt(n, v, b, w));
|
|
290
|
+
const j = [n, ...M], se = await st(e, f), I = [];
|
|
291
|
+
let C = ((s = r.flip) == null ? void 0 : s.overflows) || [];
|
|
292
|
+
if (d && I.push(se[g]), p) {
|
|
293
|
+
const k = xt(i, a, w);
|
|
294
|
+
I.push(se[k[0]], se[k[1]]);
|
|
295
295
|
}
|
|
296
|
-
if (
|
|
296
|
+
if (C = [...C, {
|
|
297
297
|
placement: i,
|
|
298
|
-
overflows:
|
|
299
|
-
}], !
|
|
300
|
-
var
|
|
301
|
-
const
|
|
302
|
-
if (
|
|
298
|
+
overflows: I
|
|
299
|
+
}], !I.every((k) => k <= 0)) {
|
|
300
|
+
var x, S;
|
|
301
|
+
const k = (((x = r.flip) == null ? void 0 : x.index) || 0) + 1, P = j[k];
|
|
302
|
+
if (P && (!(p === "alignment" ? _ !== G(P) : !1) || // We leave the current main axis only if every placement on that axis
|
|
303
303
|
// overflows the main axis.
|
|
304
|
-
|
|
304
|
+
C.every((D) => G(D.placement) === _ ? D.overflows[0] > 0 : !0)))
|
|
305
305
|
return {
|
|
306
306
|
data: {
|
|
307
|
-
index:
|
|
308
|
-
overflows:
|
|
307
|
+
index: k,
|
|
308
|
+
overflows: C
|
|
309
309
|
},
|
|
310
310
|
reset: {
|
|
311
|
-
placement:
|
|
311
|
+
placement: P
|
|
312
312
|
}
|
|
313
313
|
};
|
|
314
|
-
let
|
|
315
|
-
if (!
|
|
314
|
+
let oe = (S = C.filter((q) => q.overflows[0] <= 0).sort((q, D) => q.overflows[1] - D.overflows[1])[0]) == null ? void 0 : S.placement;
|
|
315
|
+
if (!oe)
|
|
316
316
|
switch (m) {
|
|
317
317
|
case "bestFit": {
|
|
318
|
-
var
|
|
319
|
-
const
|
|
320
|
-
if (
|
|
321
|
-
const
|
|
322
|
-
return
|
|
318
|
+
var A;
|
|
319
|
+
const q = (A = C.filter((D) => {
|
|
320
|
+
if (E) {
|
|
321
|
+
const W = G(D.placement);
|
|
322
|
+
return W === _ || // Create a bias to the `y` side axis due to horizontal
|
|
323
323
|
// reading directions favoring greater width.
|
|
324
|
-
|
|
324
|
+
W === "y";
|
|
325
325
|
}
|
|
326
326
|
return !0;
|
|
327
|
-
}).map((
|
|
328
|
-
|
|
327
|
+
}).map((D) => [D.placement, D.overflows.filter((W) => W > 0).reduce((W, ft) => W + ft, 0)]).sort((D, W) => D[1] - W[1])[0]) == null ? void 0 : A[0];
|
|
328
|
+
q && (oe = q);
|
|
329
329
|
break;
|
|
330
330
|
}
|
|
331
331
|
case "initialPlacement":
|
|
332
|
-
|
|
332
|
+
oe = n;
|
|
333
333
|
break;
|
|
334
334
|
}
|
|
335
|
-
if (i !==
|
|
335
|
+
if (i !== oe)
|
|
336
336
|
return {
|
|
337
337
|
reset: {
|
|
338
|
-
placement:
|
|
338
|
+
placement: oe
|
|
339
339
|
}
|
|
340
340
|
};
|
|
341
341
|
}
|
|
342
342
|
return {};
|
|
343
343
|
}
|
|
344
344
|
};
|
|
345
|
-
},
|
|
346
|
-
async function
|
|
345
|
+
}, Et = /* @__PURE__ */ new Set(["left", "top"]);
|
|
346
|
+
async function Vt(o, e) {
|
|
347
347
|
const {
|
|
348
348
|
placement: t,
|
|
349
349
|
platform: s,
|
|
350
350
|
elements: i
|
|
351
|
-
} = o, r = await (s.isRTL == null ? void 0 : s.isRTL(i.floating)),
|
|
351
|
+
} = o, r = await (s.isRTL == null ? void 0 : s.isRTL(i.floating)), a = J(t), n = ge(t), l = G(t) === "y", c = Et.has(a) ? -1 : 1, d = r && l ? -1 : 1, p = be(e, o);
|
|
352
352
|
let {
|
|
353
353
|
mainAxis: u,
|
|
354
354
|
crossAxis: m,
|
|
@@ -362,15 +362,15 @@ async function Ot(o, e) {
|
|
|
362
362
|
crossAxis: p.crossAxis || 0,
|
|
363
363
|
alignmentAxis: p.alignmentAxis
|
|
364
364
|
};
|
|
365
|
-
return
|
|
366
|
-
x: m *
|
|
367
|
-
y: u *
|
|
365
|
+
return n && typeof b == "number" && (m = n === "end" ? b * -1 : b), l ? {
|
|
366
|
+
x: m * d,
|
|
367
|
+
y: u * c
|
|
368
368
|
} : {
|
|
369
|
-
x: u *
|
|
370
|
-
y: m *
|
|
369
|
+
x: u * c,
|
|
370
|
+
y: m * d
|
|
371
371
|
};
|
|
372
372
|
}
|
|
373
|
-
const
|
|
373
|
+
const Dt = function(o) {
|
|
374
374
|
return o === void 0 && (o = 0), {
|
|
375
375
|
name: "offset",
|
|
376
376
|
options: o,
|
|
@@ -379,20 +379,20 @@ const It = function(o) {
|
|
|
379
379
|
const {
|
|
380
380
|
x: i,
|
|
381
381
|
y: r,
|
|
382
|
-
placement:
|
|
383
|
-
middlewareData:
|
|
384
|
-
} = e, l = await
|
|
385
|
-
return
|
|
382
|
+
placement: a,
|
|
383
|
+
middlewareData: n
|
|
384
|
+
} = e, l = await Vt(e, o);
|
|
385
|
+
return a === ((t = n.offset) == null ? void 0 : t.placement) && (s = n.arrow) != null && s.alignmentOffset ? {} : {
|
|
386
386
|
x: i + l.x,
|
|
387
387
|
y: r + l.y,
|
|
388
388
|
data: {
|
|
389
389
|
...l,
|
|
390
|
-
placement:
|
|
390
|
+
placement: a
|
|
391
391
|
}
|
|
392
392
|
};
|
|
393
393
|
}
|
|
394
394
|
};
|
|
395
|
-
},
|
|
395
|
+
}, zt = function(o) {
|
|
396
396
|
return o === void 0 && (o = {}), {
|
|
397
397
|
name: "shift",
|
|
398
398
|
options: o,
|
|
@@ -403,95 +403,95 @@ const It = function(o) {
|
|
|
403
403
|
placement: i
|
|
404
404
|
} = e, {
|
|
405
405
|
mainAxis: r = !0,
|
|
406
|
-
crossAxis:
|
|
407
|
-
limiter:
|
|
408
|
-
fn: (
|
|
406
|
+
crossAxis: a = !1,
|
|
407
|
+
limiter: n = {
|
|
408
|
+
fn: (f) => {
|
|
409
409
|
let {
|
|
410
|
-
x:
|
|
410
|
+
x: g,
|
|
411
411
|
y: _
|
|
412
|
-
} =
|
|
412
|
+
} = f;
|
|
413
413
|
return {
|
|
414
|
-
x:
|
|
414
|
+
x: g,
|
|
415
415
|
y: _
|
|
416
416
|
};
|
|
417
417
|
}
|
|
418
418
|
},
|
|
419
419
|
...l
|
|
420
|
-
} =
|
|
420
|
+
} = be(o, e), c = {
|
|
421
421
|
x: t,
|
|
422
422
|
y: s
|
|
423
|
-
},
|
|
424
|
-
let m =
|
|
423
|
+
}, d = await st(e, l), p = G(J(i)), u = Qe(p);
|
|
424
|
+
let m = c[u], b = c[p];
|
|
425
425
|
if (r) {
|
|
426
|
-
const
|
|
427
|
-
m =
|
|
426
|
+
const f = u === "y" ? "top" : "left", g = u === "y" ? "bottom" : "right", _ = m + d[f], y = m - d[g];
|
|
427
|
+
m = $e(_, m, y);
|
|
428
428
|
}
|
|
429
|
-
if (
|
|
430
|
-
const
|
|
431
|
-
b =
|
|
429
|
+
if (a) {
|
|
430
|
+
const f = p === "y" ? "top" : "left", g = p === "y" ? "bottom" : "right", _ = b + d[f], y = b - d[g];
|
|
431
|
+
b = $e(_, b, y);
|
|
432
432
|
}
|
|
433
|
-
const
|
|
433
|
+
const v = n.fn({
|
|
434
434
|
...e,
|
|
435
435
|
[u]: m,
|
|
436
436
|
[p]: b
|
|
437
437
|
});
|
|
438
438
|
return {
|
|
439
|
-
...
|
|
439
|
+
...v,
|
|
440
440
|
data: {
|
|
441
|
-
x:
|
|
442
|
-
y:
|
|
441
|
+
x: v.x - t,
|
|
442
|
+
y: v.y - s,
|
|
443
443
|
enabled: {
|
|
444
444
|
[u]: r,
|
|
445
|
-
[p]:
|
|
445
|
+
[p]: a
|
|
446
446
|
}
|
|
447
447
|
}
|
|
448
448
|
};
|
|
449
449
|
}
|
|
450
450
|
};
|
|
451
451
|
};
|
|
452
|
-
function
|
|
452
|
+
function fe() {
|
|
453
453
|
return typeof window < "u";
|
|
454
454
|
}
|
|
455
|
-
function
|
|
456
|
-
return
|
|
455
|
+
function te(o) {
|
|
456
|
+
return ot(o) ? (o.nodeName || "").toLowerCase() : "#document";
|
|
457
457
|
}
|
|
458
|
-
function
|
|
458
|
+
function V(o) {
|
|
459
459
|
var e;
|
|
460
460
|
return (o == null || (e = o.ownerDocument) == null ? void 0 : e.defaultView) || window;
|
|
461
461
|
}
|
|
462
|
-
function
|
|
462
|
+
function N(o) {
|
|
463
463
|
var e;
|
|
464
|
-
return (e = (
|
|
464
|
+
return (e = (ot(o) ? o.ownerDocument : o.document) || window.document) == null ? void 0 : e.documentElement;
|
|
465
465
|
}
|
|
466
|
-
function
|
|
467
|
-
return
|
|
466
|
+
function ot(o) {
|
|
467
|
+
return fe() ? o instanceof Node || o instanceof V(o).Node : !1;
|
|
468
468
|
}
|
|
469
|
-
function
|
|
470
|
-
return
|
|
469
|
+
function B(o) {
|
|
470
|
+
return fe() ? o instanceof Element || o instanceof V(o).Element : !1;
|
|
471
471
|
}
|
|
472
|
-
function
|
|
473
|
-
return
|
|
472
|
+
function H(o) {
|
|
473
|
+
return fe() ? o instanceof HTMLElement || o instanceof V(o).HTMLElement : !1;
|
|
474
474
|
}
|
|
475
|
-
function
|
|
476
|
-
return !
|
|
475
|
+
function Ne(o) {
|
|
476
|
+
return !fe() || typeof ShadowRoot > "u" ? !1 : o instanceof ShadowRoot || o instanceof V(o).ShadowRoot;
|
|
477
477
|
}
|
|
478
|
-
const
|
|
479
|
-
function
|
|
478
|
+
const Bt = /* @__PURE__ */ new Set(["inline", "contents"]);
|
|
479
|
+
function le(o) {
|
|
480
480
|
const {
|
|
481
481
|
overflow: e,
|
|
482
482
|
overflowX: t,
|
|
483
483
|
overflowY: s,
|
|
484
484
|
display: i
|
|
485
|
-
} =
|
|
486
|
-
return /auto|scroll|overlay|hidden|clip/.test(e + s + t) && !
|
|
485
|
+
} = $(o);
|
|
486
|
+
return /auto|scroll|overlay|hidden|clip/.test(e + s + t) && !Bt.has(i);
|
|
487
487
|
}
|
|
488
|
-
const
|
|
489
|
-
function
|
|
490
|
-
return
|
|
488
|
+
const $t = /* @__PURE__ */ new Set(["table", "td", "th"]);
|
|
489
|
+
function Rt(o) {
|
|
490
|
+
return $t.has(te(o));
|
|
491
491
|
}
|
|
492
|
-
const
|
|
493
|
-
function
|
|
494
|
-
return
|
|
492
|
+
const Ft = [":popover-open", ":modal"];
|
|
493
|
+
function ve(o) {
|
|
494
|
+
return Ft.some((e) => {
|
|
495
495
|
try {
|
|
496
496
|
return o.matches(e);
|
|
497
497
|
} catch {
|
|
@@ -499,34 +499,34 @@ function he(o) {
|
|
|
499
499
|
}
|
|
500
500
|
});
|
|
501
501
|
}
|
|
502
|
-
const
|
|
503
|
-
function
|
|
504
|
-
const e =
|
|
505
|
-
return
|
|
502
|
+
const Ht = ["transform", "translate", "scale", "rotate", "perspective"], Nt = ["transform", "translate", "scale", "rotate", "perspective", "filter"], jt = ["paint", "layout", "strict", "content"];
|
|
503
|
+
function Le(o) {
|
|
504
|
+
const e = Ee(), t = B(o) ? $(o) : o;
|
|
505
|
+
return Ht.some((s) => t[s] ? t[s] !== "none" : !1) || (t.containerType ? t.containerType !== "normal" : !1) || !e && (t.backdropFilter ? t.backdropFilter !== "none" : !1) || !e && (t.filter ? t.filter !== "none" : !1) || Nt.some((s) => (t.willChange || "").includes(s)) || jt.some((s) => (t.contain || "").includes(s));
|
|
506
506
|
}
|
|
507
|
-
function
|
|
508
|
-
let e =
|
|
509
|
-
for (;
|
|
510
|
-
if (
|
|
507
|
+
function Wt(o) {
|
|
508
|
+
let e = K(o);
|
|
509
|
+
for (; H(e) && !ee(e); ) {
|
|
510
|
+
if (Le(e))
|
|
511
511
|
return e;
|
|
512
|
-
if (
|
|
512
|
+
if (ve(e))
|
|
513
513
|
return null;
|
|
514
|
-
e =
|
|
514
|
+
e = K(e);
|
|
515
515
|
}
|
|
516
516
|
return null;
|
|
517
517
|
}
|
|
518
|
-
function
|
|
518
|
+
function Ee() {
|
|
519
519
|
return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none");
|
|
520
520
|
}
|
|
521
|
-
const
|
|
522
|
-
function
|
|
523
|
-
return
|
|
521
|
+
const Ut = /* @__PURE__ */ new Set(["html", "body", "#document"]);
|
|
522
|
+
function ee(o) {
|
|
523
|
+
return Ut.has(te(o));
|
|
524
524
|
}
|
|
525
|
-
function
|
|
526
|
-
return
|
|
525
|
+
function $(o) {
|
|
526
|
+
return V(o).getComputedStyle(o);
|
|
527
527
|
}
|
|
528
|
-
function
|
|
529
|
-
return
|
|
528
|
+
function _e(o) {
|
|
529
|
+
return B(o) ? {
|
|
530
530
|
scrollLeft: o.scrollLeft,
|
|
531
531
|
scrollTop: o.scrollTop
|
|
532
532
|
} : {
|
|
@@ -534,189 +534,189 @@ function me(o) {
|
|
|
534
534
|
scrollTop: o.scrollY
|
|
535
535
|
};
|
|
536
536
|
}
|
|
537
|
-
function
|
|
538
|
-
if (
|
|
537
|
+
function K(o) {
|
|
538
|
+
if (te(o) === "html")
|
|
539
539
|
return o;
|
|
540
540
|
const e = (
|
|
541
541
|
// Step into the shadow DOM of the parent of a slotted node.
|
|
542
542
|
o.assignedSlot || // DOM Element detected.
|
|
543
543
|
o.parentNode || // ShadowRoot detected.
|
|
544
|
-
|
|
545
|
-
|
|
544
|
+
Ne(o) && o.host || // Fallback.
|
|
545
|
+
N(o)
|
|
546
546
|
);
|
|
547
|
-
return
|
|
547
|
+
return Ne(e) ? e.host : e;
|
|
548
548
|
}
|
|
549
|
-
function
|
|
550
|
-
const e =
|
|
551
|
-
return
|
|
549
|
+
function it(o) {
|
|
550
|
+
const e = K(o);
|
|
551
|
+
return ee(e) ? o.ownerDocument ? o.ownerDocument.body : o.body : H(e) && le(e) ? e : it(e);
|
|
552
552
|
}
|
|
553
|
-
function
|
|
553
|
+
function ae(o, e, t) {
|
|
554
554
|
var s;
|
|
555
555
|
e === void 0 && (e = []), t === void 0 && (t = !0);
|
|
556
|
-
const i =
|
|
556
|
+
const i = it(o), r = i === ((s = o.ownerDocument) == null ? void 0 : s.body), a = V(i);
|
|
557
557
|
if (r) {
|
|
558
|
-
const
|
|
559
|
-
return e.concat(
|
|
558
|
+
const n = Ce(a);
|
|
559
|
+
return e.concat(a, a.visualViewport || [], le(i) ? i : [], n && t ? ae(n) : []);
|
|
560
560
|
}
|
|
561
|
-
return e.concat(i,
|
|
561
|
+
return e.concat(i, ae(i, [], t));
|
|
562
562
|
}
|
|
563
|
-
function
|
|
563
|
+
function Ce(o) {
|
|
564
564
|
return o.parent && Object.getPrototypeOf(o.parent) ? o.frameElement : null;
|
|
565
565
|
}
|
|
566
|
-
function
|
|
567
|
-
const e =
|
|
566
|
+
function rt(o) {
|
|
567
|
+
const e = $(o);
|
|
568
568
|
let t = parseFloat(e.width) || 0, s = parseFloat(e.height) || 0;
|
|
569
|
-
const i =
|
|
570
|
-
return
|
|
569
|
+
const i = H(o), r = i ? o.offsetWidth : t, a = i ? o.offsetHeight : s, n = me(t) !== r || me(s) !== a;
|
|
570
|
+
return n && (t = r, s = a), {
|
|
571
571
|
width: t,
|
|
572
572
|
height: s,
|
|
573
|
-
$:
|
|
573
|
+
$: n
|
|
574
574
|
};
|
|
575
575
|
}
|
|
576
|
-
function
|
|
577
|
-
return
|
|
576
|
+
function Ve(o) {
|
|
577
|
+
return B(o) ? o : o.contextElement;
|
|
578
578
|
}
|
|
579
|
-
function
|
|
580
|
-
const e =
|
|
581
|
-
if (!
|
|
582
|
-
return
|
|
579
|
+
function Q(o) {
|
|
580
|
+
const e = Ve(o);
|
|
581
|
+
if (!H(e))
|
|
582
|
+
return F(1);
|
|
583
583
|
const t = e.getBoundingClientRect(), {
|
|
584
584
|
width: s,
|
|
585
585
|
height: i,
|
|
586
586
|
$: r
|
|
587
|
-
} =
|
|
588
|
-
let
|
|
589
|
-
return (!
|
|
590
|
-
x:
|
|
591
|
-
y:
|
|
587
|
+
} = rt(e);
|
|
588
|
+
let a = (r ? me(t.width) : t.width) / s, n = (r ? me(t.height) : t.height) / i;
|
|
589
|
+
return (!a || !Number.isFinite(a)) && (a = 1), (!n || !Number.isFinite(n)) && (n = 1), {
|
|
590
|
+
x: a,
|
|
591
|
+
y: n
|
|
592
592
|
};
|
|
593
593
|
}
|
|
594
|
-
const
|
|
595
|
-
function
|
|
596
|
-
const e =
|
|
597
|
-
return !
|
|
594
|
+
const Gt = /* @__PURE__ */ F(0);
|
|
595
|
+
function at(o) {
|
|
596
|
+
const e = V(o);
|
|
597
|
+
return !Ee() || !e.visualViewport ? Gt : {
|
|
598
598
|
x: e.visualViewport.offsetLeft,
|
|
599
599
|
y: e.visualViewport.offsetTop
|
|
600
600
|
};
|
|
601
601
|
}
|
|
602
|
-
function
|
|
603
|
-
return e === void 0 && (e = !1), !t || e && t !==
|
|
602
|
+
function Kt(o, e, t) {
|
|
603
|
+
return e === void 0 && (e = !1), !t || e && t !== V(o) ? !1 : e;
|
|
604
604
|
}
|
|
605
|
-
function
|
|
605
|
+
function Z(o, e, t, s) {
|
|
606
606
|
e === void 0 && (e = !1), t === void 0 && (t = !1);
|
|
607
|
-
const i = o.getBoundingClientRect(), r =
|
|
608
|
-
let
|
|
609
|
-
e && (s ?
|
|
610
|
-
const
|
|
611
|
-
let l = (i.left +
|
|
607
|
+
const i = o.getBoundingClientRect(), r = Ve(o);
|
|
608
|
+
let a = F(1);
|
|
609
|
+
e && (s ? B(s) && (a = Q(s)) : a = Q(o));
|
|
610
|
+
const n = Kt(r, t, s) ? at(r) : F(0);
|
|
611
|
+
let l = (i.left + n.x) / a.x, c = (i.top + n.y) / a.y, d = i.width / a.x, p = i.height / a.y;
|
|
612
612
|
if (r) {
|
|
613
|
-
const u =
|
|
614
|
-
let b = u,
|
|
615
|
-
for (;
|
|
616
|
-
const
|
|
617
|
-
l *=
|
|
613
|
+
const u = V(r), m = s && B(s) ? V(s) : s;
|
|
614
|
+
let b = u, v = Ce(b);
|
|
615
|
+
for (; v && s && m !== b; ) {
|
|
616
|
+
const f = Q(v), g = v.getBoundingClientRect(), _ = $(v), y = g.left + (v.clientLeft + parseFloat(_.paddingLeft)) * f.x, w = g.top + (v.clientTop + parseFloat(_.paddingTop)) * f.y;
|
|
617
|
+
l *= f.x, c *= f.y, d *= f.x, p *= f.y, l += y, c += w, b = V(v), v = Ce(b);
|
|
618
618
|
}
|
|
619
619
|
}
|
|
620
|
-
return
|
|
621
|
-
width:
|
|
620
|
+
return ue({
|
|
621
|
+
width: d,
|
|
622
622
|
height: p,
|
|
623
623
|
x: l,
|
|
624
|
-
y:
|
|
624
|
+
y: c
|
|
625
625
|
});
|
|
626
626
|
}
|
|
627
|
-
function
|
|
628
|
-
const t =
|
|
629
|
-
return e ? e.left + t :
|
|
627
|
+
function ke(o, e) {
|
|
628
|
+
const t = _e(o).scrollLeft;
|
|
629
|
+
return e ? e.left + t : Z(N(o)).left + t;
|
|
630
630
|
}
|
|
631
|
-
function
|
|
632
|
-
const t = o.getBoundingClientRect(), s = t.left + e.scrollLeft -
|
|
631
|
+
function nt(o, e) {
|
|
632
|
+
const t = o.getBoundingClientRect(), s = t.left + e.scrollLeft - ke(o, t), i = t.top + e.scrollTop;
|
|
633
633
|
return {
|
|
634
634
|
x: s,
|
|
635
635
|
y: i
|
|
636
636
|
};
|
|
637
637
|
}
|
|
638
|
-
function
|
|
638
|
+
function qt(o) {
|
|
639
639
|
let {
|
|
640
640
|
elements: e,
|
|
641
641
|
rect: t,
|
|
642
642
|
offsetParent: s,
|
|
643
643
|
strategy: i
|
|
644
644
|
} = o;
|
|
645
|
-
const r = i === "fixed",
|
|
646
|
-
if (s ===
|
|
645
|
+
const r = i === "fixed", a = N(s), n = e ? ve(e.floating) : !1;
|
|
646
|
+
if (s === a || n && r)
|
|
647
647
|
return t;
|
|
648
648
|
let l = {
|
|
649
649
|
scrollLeft: 0,
|
|
650
650
|
scrollTop: 0
|
|
651
|
-
},
|
|
652
|
-
const
|
|
653
|
-
if ((p || !p && !r) && ((
|
|
654
|
-
const m =
|
|
655
|
-
|
|
651
|
+
}, c = F(1);
|
|
652
|
+
const d = F(0), p = H(s);
|
|
653
|
+
if ((p || !p && !r) && ((te(s) !== "body" || le(a)) && (l = _e(s)), H(s))) {
|
|
654
|
+
const m = Z(s);
|
|
655
|
+
c = Q(s), d.x = m.x + s.clientLeft, d.y = m.y + s.clientTop;
|
|
656
656
|
}
|
|
657
|
-
const u =
|
|
657
|
+
const u = a && !p && !r ? nt(a, l) : F(0);
|
|
658
658
|
return {
|
|
659
|
-
width: t.width *
|
|
660
|
-
height: t.height *
|
|
661
|
-
x: t.x *
|
|
662
|
-
y: t.y *
|
|
659
|
+
width: t.width * c.x,
|
|
660
|
+
height: t.height * c.y,
|
|
661
|
+
x: t.x * c.x - l.scrollLeft * c.x + d.x + u.x,
|
|
662
|
+
y: t.y * c.y - l.scrollTop * c.y + d.y + u.y
|
|
663
663
|
};
|
|
664
664
|
}
|
|
665
|
-
function
|
|
665
|
+
function Yt(o) {
|
|
666
666
|
return Array.from(o.getClientRects());
|
|
667
667
|
}
|
|
668
|
-
function
|
|
669
|
-
const e =
|
|
670
|
-
let
|
|
671
|
-
const
|
|
672
|
-
return
|
|
668
|
+
function Xt(o) {
|
|
669
|
+
const e = N(o), t = _e(o), s = o.ownerDocument.body, i = X(e.scrollWidth, e.clientWidth, s.scrollWidth, s.clientWidth), r = X(e.scrollHeight, e.clientHeight, s.scrollHeight, s.clientHeight);
|
|
670
|
+
let a = -t.scrollLeft + ke(o);
|
|
671
|
+
const n = -t.scrollTop;
|
|
672
|
+
return $(s).direction === "rtl" && (a += X(e.clientWidth, s.clientWidth) - i), {
|
|
673
673
|
width: i,
|
|
674
674
|
height: r,
|
|
675
|
-
x:
|
|
676
|
-
y:
|
|
675
|
+
x: a,
|
|
676
|
+
y: n
|
|
677
677
|
};
|
|
678
678
|
}
|
|
679
|
-
const
|
|
680
|
-
function
|
|
681
|
-
const t =
|
|
682
|
-
let r = s.clientWidth,
|
|
679
|
+
const je = 25;
|
|
680
|
+
function Jt(o, e) {
|
|
681
|
+
const t = V(o), s = N(o), i = t.visualViewport;
|
|
682
|
+
let r = s.clientWidth, a = s.clientHeight, n = 0, l = 0;
|
|
683
683
|
if (i) {
|
|
684
|
-
r = i.width,
|
|
685
|
-
const
|
|
686
|
-
(!
|
|
687
|
-
}
|
|
688
|
-
const
|
|
689
|
-
if (
|
|
690
|
-
const
|
|
691
|
-
b <=
|
|
692
|
-
} else
|
|
684
|
+
r = i.width, a = i.height;
|
|
685
|
+
const d = Ee();
|
|
686
|
+
(!d || d && e === "fixed") && (n = i.offsetLeft, l = i.offsetTop);
|
|
687
|
+
}
|
|
688
|
+
const c = ke(s);
|
|
689
|
+
if (c <= 0) {
|
|
690
|
+
const d = s.ownerDocument, p = d.body, u = getComputedStyle(p), m = d.compatMode === "CSS1Compat" && parseFloat(u.marginLeft) + parseFloat(u.marginRight) || 0, b = Math.abs(s.clientWidth - p.clientWidth - m);
|
|
691
|
+
b <= je && (r -= b);
|
|
692
|
+
} else c <= je && (r += c);
|
|
693
693
|
return {
|
|
694
694
|
width: r,
|
|
695
|
-
height:
|
|
696
|
-
x:
|
|
695
|
+
height: a,
|
|
696
|
+
x: n,
|
|
697
697
|
y: l
|
|
698
698
|
};
|
|
699
699
|
}
|
|
700
|
-
const
|
|
701
|
-
function
|
|
702
|
-
const t =
|
|
700
|
+
const Zt = /* @__PURE__ */ new Set(["absolute", "fixed"]);
|
|
701
|
+
function Qt(o, e) {
|
|
702
|
+
const t = Z(o, !0, e === "fixed"), s = t.top + o.clientTop, i = t.left + o.clientLeft, r = H(o) ? Q(o) : F(1), a = o.clientWidth * r.x, n = o.clientHeight * r.y, l = i * r.x, c = s * r.y;
|
|
703
703
|
return {
|
|
704
|
-
width:
|
|
705
|
-
height:
|
|
704
|
+
width: a,
|
|
705
|
+
height: n,
|
|
706
706
|
x: l,
|
|
707
|
-
y:
|
|
707
|
+
y: c
|
|
708
708
|
};
|
|
709
709
|
}
|
|
710
|
-
function
|
|
710
|
+
function We(o, e, t) {
|
|
711
711
|
let s;
|
|
712
712
|
if (e === "viewport")
|
|
713
|
-
s =
|
|
713
|
+
s = Jt(o, t);
|
|
714
714
|
else if (e === "document")
|
|
715
|
-
s =
|
|
716
|
-
else if (
|
|
717
|
-
s =
|
|
715
|
+
s = Xt(N(o));
|
|
716
|
+
else if (B(e))
|
|
717
|
+
s = Qt(e, t);
|
|
718
718
|
else {
|
|
719
|
-
const i =
|
|
719
|
+
const i = at(o);
|
|
720
720
|
s = {
|
|
721
721
|
x: e.x - i.x,
|
|
722
722
|
y: e.y - i.y,
|
|
@@ -724,36 +724,36 @@ function He(o, e, t) {
|
|
|
724
724
|
height: e.height
|
|
725
725
|
};
|
|
726
726
|
}
|
|
727
|
-
return
|
|
727
|
+
return ue(s);
|
|
728
728
|
}
|
|
729
|
-
function
|
|
730
|
-
const t =
|
|
731
|
-
return t === e || !
|
|
729
|
+
function lt(o, e) {
|
|
730
|
+
const t = K(o);
|
|
731
|
+
return t === e || !B(t) || ee(t) ? !1 : $(t).position === "fixed" || lt(t, e);
|
|
732
732
|
}
|
|
733
|
-
function
|
|
733
|
+
function es(o, e) {
|
|
734
734
|
const t = e.get(o);
|
|
735
735
|
if (t)
|
|
736
736
|
return t;
|
|
737
|
-
let s =
|
|
738
|
-
const r =
|
|
739
|
-
let
|
|
740
|
-
for (;
|
|
741
|
-
const
|
|
742
|
-
!l &&
|
|
737
|
+
let s = ae(o, [], !1).filter((n) => B(n) && te(n) !== "body"), i = null;
|
|
738
|
+
const r = $(o).position === "fixed";
|
|
739
|
+
let a = r ? K(o) : o;
|
|
740
|
+
for (; B(a) && !ee(a); ) {
|
|
741
|
+
const n = $(a), l = Le(a);
|
|
742
|
+
!l && n.position === "fixed" && (i = null), (r ? !l && !i : !l && n.position === "static" && !!i && Zt.has(i.position) || le(a) && !l && lt(o, a)) ? s = s.filter((d) => d !== a) : i = n, a = K(a);
|
|
743
743
|
}
|
|
744
744
|
return e.set(o, s), s;
|
|
745
745
|
}
|
|
746
|
-
function
|
|
746
|
+
function ts(o) {
|
|
747
747
|
let {
|
|
748
748
|
element: e,
|
|
749
749
|
boundary: t,
|
|
750
750
|
rootBoundary: s,
|
|
751
751
|
strategy: i
|
|
752
752
|
} = o;
|
|
753
|
-
const
|
|
754
|
-
const p =
|
|
755
|
-
return
|
|
756
|
-
},
|
|
753
|
+
const a = [...t === "clippingAncestors" ? ve(e) ? [] : es(e, this._c) : [].concat(t), s], n = a[0], l = a.reduce((c, d) => {
|
|
754
|
+
const p = We(e, d, i);
|
|
755
|
+
return c.top = X(p.top, c.top), c.right = he(p.right, c.right), c.bottom = he(p.bottom, c.bottom), c.left = X(p.left, c.left), c;
|
|
756
|
+
}, We(e, n, i));
|
|
757
757
|
return {
|
|
758
758
|
width: l.right - l.left,
|
|
759
759
|
height: l.bottom - l.top,
|
|
@@ -761,73 +761,73 @@ function qt(o) {
|
|
|
761
761
|
y: l.top
|
|
762
762
|
};
|
|
763
763
|
}
|
|
764
|
-
function
|
|
764
|
+
function ss(o) {
|
|
765
765
|
const {
|
|
766
766
|
width: e,
|
|
767
767
|
height: t
|
|
768
|
-
} =
|
|
768
|
+
} = rt(o);
|
|
769
769
|
return {
|
|
770
770
|
width: e,
|
|
771
771
|
height: t
|
|
772
772
|
};
|
|
773
773
|
}
|
|
774
|
-
function
|
|
775
|
-
const s =
|
|
776
|
-
let
|
|
774
|
+
function os(o, e, t) {
|
|
775
|
+
const s = H(e), i = N(e), r = t === "fixed", a = Z(o, !0, r, e);
|
|
776
|
+
let n = {
|
|
777
777
|
scrollLeft: 0,
|
|
778
778
|
scrollTop: 0
|
|
779
779
|
};
|
|
780
|
-
const l =
|
|
781
|
-
function
|
|
782
|
-
l.x =
|
|
780
|
+
const l = F(0);
|
|
781
|
+
function c() {
|
|
782
|
+
l.x = ke(i);
|
|
783
783
|
}
|
|
784
784
|
if (s || !s && !r)
|
|
785
|
-
if ((
|
|
786
|
-
const m =
|
|
785
|
+
if ((te(e) !== "body" || le(i)) && (n = _e(e)), s) {
|
|
786
|
+
const m = Z(e, !0, r, e);
|
|
787
787
|
l.x = m.x + e.clientLeft, l.y = m.y + e.clientTop;
|
|
788
|
-
} else i &&
|
|
789
|
-
r && !s && i &&
|
|
790
|
-
const
|
|
788
|
+
} else i && c();
|
|
789
|
+
r && !s && i && c();
|
|
790
|
+
const d = i && !s && !r ? nt(i, n) : F(0), p = a.left + n.scrollLeft - l.x - d.x, u = a.top + n.scrollTop - l.y - d.y;
|
|
791
791
|
return {
|
|
792
792
|
x: p,
|
|
793
793
|
y: u,
|
|
794
|
-
width:
|
|
795
|
-
height:
|
|
794
|
+
width: a.width,
|
|
795
|
+
height: a.height
|
|
796
796
|
};
|
|
797
797
|
}
|
|
798
|
-
function
|
|
799
|
-
return
|
|
798
|
+
function ye(o) {
|
|
799
|
+
return $(o).position === "static";
|
|
800
800
|
}
|
|
801
|
-
function
|
|
802
|
-
if (!
|
|
801
|
+
function Ue(o, e) {
|
|
802
|
+
if (!H(o) || $(o).position === "fixed")
|
|
803
803
|
return null;
|
|
804
804
|
if (e)
|
|
805
805
|
return e(o);
|
|
806
806
|
let t = o.offsetParent;
|
|
807
|
-
return
|
|
807
|
+
return N(o) === t && (t = t.ownerDocument.body), t;
|
|
808
808
|
}
|
|
809
|
-
function
|
|
810
|
-
const t =
|
|
811
|
-
if (
|
|
809
|
+
function ct(o, e) {
|
|
810
|
+
const t = V(o);
|
|
811
|
+
if (ve(o))
|
|
812
812
|
return t;
|
|
813
|
-
if (!
|
|
814
|
-
let i =
|
|
815
|
-
for (; i && !
|
|
816
|
-
if (
|
|
813
|
+
if (!H(o)) {
|
|
814
|
+
let i = K(o);
|
|
815
|
+
for (; i && !ee(i); ) {
|
|
816
|
+
if (B(i) && !ye(i))
|
|
817
817
|
return i;
|
|
818
|
-
i =
|
|
818
|
+
i = K(i);
|
|
819
819
|
}
|
|
820
820
|
return t;
|
|
821
821
|
}
|
|
822
|
-
let s =
|
|
823
|
-
for (; s &&
|
|
824
|
-
s =
|
|
825
|
-
return s &&
|
|
822
|
+
let s = Ue(o, e);
|
|
823
|
+
for (; s && Rt(s) && ye(s); )
|
|
824
|
+
s = Ue(s, e);
|
|
825
|
+
return s && ee(s) && ye(s) && !Le(s) ? t : s || Wt(o) || t;
|
|
826
826
|
}
|
|
827
|
-
const
|
|
828
|
-
const e = this.getOffsetParent ||
|
|
827
|
+
const is = async function(o) {
|
|
828
|
+
const e = this.getOffsetParent || ct, t = this.getDimensions, s = await t(o.floating);
|
|
829
829
|
return {
|
|
830
|
-
reference:
|
|
830
|
+
reference: os(o.reference, await e(o.floating), o.strategy),
|
|
831
831
|
floating: {
|
|
832
832
|
x: 0,
|
|
833
833
|
y: 0,
|
|
@@ -836,128 +836,128 @@ const Jt = async function(o) {
|
|
|
836
836
|
}
|
|
837
837
|
};
|
|
838
838
|
};
|
|
839
|
-
function
|
|
840
|
-
return
|
|
841
|
-
}
|
|
842
|
-
const
|
|
843
|
-
convertOffsetParentRelativeRectToViewportRelativeRect:
|
|
844
|
-
getDocumentElement:
|
|
845
|
-
getClippingRect:
|
|
846
|
-
getOffsetParent:
|
|
847
|
-
getElementRects:
|
|
848
|
-
getClientRects:
|
|
849
|
-
getDimensions:
|
|
850
|
-
getScale:
|
|
851
|
-
isElement:
|
|
852
|
-
isRTL:
|
|
839
|
+
function rs(o) {
|
|
840
|
+
return $(o).direction === "rtl";
|
|
841
|
+
}
|
|
842
|
+
const dt = {
|
|
843
|
+
convertOffsetParentRelativeRectToViewportRelativeRect: qt,
|
|
844
|
+
getDocumentElement: N,
|
|
845
|
+
getClippingRect: ts,
|
|
846
|
+
getOffsetParent: ct,
|
|
847
|
+
getElementRects: is,
|
|
848
|
+
getClientRects: Yt,
|
|
849
|
+
getDimensions: ss,
|
|
850
|
+
getScale: Q,
|
|
851
|
+
isElement: B,
|
|
852
|
+
isRTL: rs
|
|
853
853
|
};
|
|
854
|
-
function
|
|
854
|
+
function ht(o, e) {
|
|
855
855
|
return o.x === e.x && o.y === e.y && o.width === e.width && o.height === e.height;
|
|
856
856
|
}
|
|
857
|
-
function
|
|
857
|
+
function as(o, e) {
|
|
858
858
|
let t = null, s;
|
|
859
|
-
const i =
|
|
859
|
+
const i = N(o);
|
|
860
860
|
function r() {
|
|
861
|
-
var
|
|
862
|
-
clearTimeout(s), (
|
|
861
|
+
var n;
|
|
862
|
+
clearTimeout(s), (n = t) == null || n.disconnect(), t = null;
|
|
863
863
|
}
|
|
864
|
-
function n
|
|
865
|
-
|
|
866
|
-
const
|
|
867
|
-
left:
|
|
864
|
+
function a(n, l) {
|
|
865
|
+
n === void 0 && (n = !1), l === void 0 && (l = 1), r();
|
|
866
|
+
const c = o.getBoundingClientRect(), {
|
|
867
|
+
left: d,
|
|
868
868
|
top: p,
|
|
869
869
|
width: u,
|
|
870
870
|
height: m
|
|
871
|
-
} =
|
|
872
|
-
if (
|
|
871
|
+
} = c;
|
|
872
|
+
if (n || e(), !u || !m)
|
|
873
873
|
return;
|
|
874
|
-
const b =
|
|
875
|
-
rootMargin: -b + "px " + -
|
|
876
|
-
threshold:
|
|
874
|
+
const b = ce(p), v = ce(i.clientWidth - (d + u)), f = ce(i.clientHeight - (p + m)), g = ce(d), y = {
|
|
875
|
+
rootMargin: -b + "px " + -v + "px " + -f + "px " + -g + "px",
|
|
876
|
+
threshold: X(0, he(1, l)) || 1
|
|
877
877
|
};
|
|
878
|
-
let
|
|
879
|
-
function
|
|
880
|
-
const j =
|
|
878
|
+
let w = !0;
|
|
879
|
+
function M(E) {
|
|
880
|
+
const j = E[0].intersectionRatio;
|
|
881
881
|
if (j !== l) {
|
|
882
|
-
if (!
|
|
883
|
-
return
|
|
884
|
-
j ?
|
|
885
|
-
|
|
882
|
+
if (!w)
|
|
883
|
+
return a();
|
|
884
|
+
j ? a(!1, j) : s = setTimeout(() => {
|
|
885
|
+
a(!1, 1e-7);
|
|
886
886
|
}, 1e3);
|
|
887
887
|
}
|
|
888
|
-
j === 1 && !
|
|
888
|
+
j === 1 && !ht(c, o.getBoundingClientRect()) && a(), w = !1;
|
|
889
889
|
}
|
|
890
890
|
try {
|
|
891
|
-
t = new IntersectionObserver(
|
|
892
|
-
...
|
|
891
|
+
t = new IntersectionObserver(M, {
|
|
892
|
+
...y,
|
|
893
893
|
// Handle <iframe>s
|
|
894
894
|
root: i.ownerDocument
|
|
895
895
|
});
|
|
896
896
|
} catch {
|
|
897
|
-
t = new IntersectionObserver(
|
|
897
|
+
t = new IntersectionObserver(M, y);
|
|
898
898
|
}
|
|
899
899
|
t.observe(o);
|
|
900
900
|
}
|
|
901
|
-
return
|
|
901
|
+
return a(!0), r;
|
|
902
902
|
}
|
|
903
|
-
function
|
|
903
|
+
function Se(o, e, t, s) {
|
|
904
904
|
s === void 0 && (s = {});
|
|
905
905
|
const {
|
|
906
906
|
ancestorScroll: i = !0,
|
|
907
907
|
ancestorResize: r = !0,
|
|
908
|
-
elementResize:
|
|
909
|
-
layoutShift:
|
|
908
|
+
elementResize: a = typeof ResizeObserver == "function",
|
|
909
|
+
layoutShift: n = typeof IntersectionObserver == "function",
|
|
910
910
|
animationFrame: l = !1
|
|
911
|
-
} = s,
|
|
912
|
-
|
|
913
|
-
i &&
|
|
911
|
+
} = s, c = Ve(o), d = i || r ? [...c ? ae(c) : [], ...ae(e)] : [];
|
|
912
|
+
d.forEach((g) => {
|
|
913
|
+
i && g.addEventListener("scroll", t, {
|
|
914
914
|
passive: !0
|
|
915
|
-
}), r &&
|
|
915
|
+
}), r && g.addEventListener("resize", t);
|
|
916
916
|
});
|
|
917
|
-
const p =
|
|
917
|
+
const p = c && n ? as(c, t) : null;
|
|
918
918
|
let u = -1, m = null;
|
|
919
|
-
|
|
920
|
-
let [_] =
|
|
921
|
-
_ && _.target ===
|
|
922
|
-
var
|
|
923
|
-
(
|
|
919
|
+
a && (m = new ResizeObserver((g) => {
|
|
920
|
+
let [_] = g;
|
|
921
|
+
_ && _.target === c && m && (m.unobserve(e), cancelAnimationFrame(u), u = requestAnimationFrame(() => {
|
|
922
|
+
var y;
|
|
923
|
+
(y = m) == null || y.observe(e);
|
|
924
924
|
})), t();
|
|
925
|
-
}),
|
|
926
|
-
let b,
|
|
927
|
-
l &&
|
|
928
|
-
function
|
|
929
|
-
const
|
|
930
|
-
|
|
925
|
+
}), c && !l && m.observe(c), m.observe(e));
|
|
926
|
+
let b, v = l ? Z(o) : null;
|
|
927
|
+
l && f();
|
|
928
|
+
function f() {
|
|
929
|
+
const g = Z(o);
|
|
930
|
+
v && !ht(v, g) && t(), v = g, b = requestAnimationFrame(f);
|
|
931
931
|
}
|
|
932
932
|
return t(), () => {
|
|
933
|
-
var
|
|
934
|
-
|
|
933
|
+
var g;
|
|
934
|
+
d.forEach((_) => {
|
|
935
935
|
i && _.removeEventListener("scroll", t), r && _.removeEventListener("resize", t);
|
|
936
|
-
}), p == null || p(), (
|
|
936
|
+
}), p == null || p(), (g = m) == null || g.disconnect(), m = null, l && cancelAnimationFrame(b);
|
|
937
937
|
};
|
|
938
938
|
}
|
|
939
|
-
const
|
|
939
|
+
const Te = Dt, Ie = zt, mt = Lt, Me = (o, e, t) => {
|
|
940
940
|
const s = /* @__PURE__ */ new Map(), i = {
|
|
941
|
-
platform:
|
|
941
|
+
platform: dt,
|
|
942
942
|
...t
|
|
943
943
|
}, r = {
|
|
944
944
|
...i.platform,
|
|
945
945
|
_c: s
|
|
946
946
|
};
|
|
947
|
-
return
|
|
947
|
+
return Pt(o, e, {
|
|
948
948
|
...i,
|
|
949
949
|
platform: r
|
|
950
950
|
});
|
|
951
951
|
};
|
|
952
|
-
var
|
|
953
|
-
},
|
|
952
|
+
var pt = function() {
|
|
953
|
+
}, z = "undefined", ns = typeof window !== z && typeof window.navigator !== z && /Trident\/|MSIE /.test(window.navigator.userAgent), Oe = [
|
|
954
954
|
"trace",
|
|
955
955
|
"debug",
|
|
956
956
|
"info",
|
|
957
957
|
"warn",
|
|
958
958
|
"error"
|
|
959
|
-
],
|
|
960
|
-
function
|
|
959
|
+
], ne = {}, T = null;
|
|
960
|
+
function Ge(o, e) {
|
|
961
961
|
var t = o[e];
|
|
962
962
|
if (typeof t.bind == "function")
|
|
963
963
|
return t.bind(o);
|
|
@@ -969,76 +969,76 @@ function Ne(o, e) {
|
|
|
969
969
|
};
|
|
970
970
|
}
|
|
971
971
|
}
|
|
972
|
-
function
|
|
972
|
+
function ls() {
|
|
973
973
|
console.log && (console.log.apply ? console.log.apply(console, arguments) : Function.prototype.apply.apply(console.log, [console, arguments])), console.trace && console.trace();
|
|
974
974
|
}
|
|
975
|
-
function
|
|
976
|
-
return o === "debug" && (o = "log"), typeof console ===
|
|
975
|
+
function cs(o) {
|
|
976
|
+
return o === "debug" && (o = "log"), typeof console === z ? !1 : o === "trace" && ns ? ls : console[o] !== void 0 ? Ge(console, o) : console.log !== void 0 ? Ge(console, "log") : pt;
|
|
977
977
|
}
|
|
978
|
-
function
|
|
979
|
-
for (var o = this.getLevel(), e = 0; e <
|
|
980
|
-
var t =
|
|
981
|
-
this[t] = e < o ?
|
|
978
|
+
function ie() {
|
|
979
|
+
for (var o = this.getLevel(), e = 0; e < Oe.length; e++) {
|
|
980
|
+
var t = Oe[e];
|
|
981
|
+
this[t] = e < o ? pt : this.methodFactory(t, o, this.name);
|
|
982
982
|
}
|
|
983
|
-
if (this.log = this.debug, typeof console ===
|
|
983
|
+
if (this.log = this.debug, typeof console === z && o < this.levels.SILENT)
|
|
984
984
|
return "No console available for logging";
|
|
985
985
|
}
|
|
986
|
-
function
|
|
986
|
+
function ds(o) {
|
|
987
987
|
return function() {
|
|
988
|
-
typeof console !==
|
|
988
|
+
typeof console !== z && (ie.call(this), this[o].apply(this, arguments));
|
|
989
989
|
};
|
|
990
990
|
}
|
|
991
|
-
function
|
|
992
|
-
return
|
|
991
|
+
function hs(o, e, t) {
|
|
992
|
+
return cs(o) || ds.apply(this, arguments);
|
|
993
993
|
}
|
|
994
|
-
function
|
|
995
|
-
var t = this, s, i, r,
|
|
996
|
-
typeof o == "string" ?
|
|
997
|
-
function
|
|
998
|
-
var m = (
|
|
999
|
-
if (!(typeof window ===
|
|
994
|
+
function ut(o, e) {
|
|
995
|
+
var t = this, s, i, r, a = "loglevel";
|
|
996
|
+
typeof o == "string" ? a += ":" + o : typeof o == "symbol" && (a = void 0);
|
|
997
|
+
function n(u) {
|
|
998
|
+
var m = (Oe[u] || "silent").toUpperCase();
|
|
999
|
+
if (!(typeof window === z || !a)) {
|
|
1000
1000
|
try {
|
|
1001
|
-
window.localStorage[
|
|
1001
|
+
window.localStorage[a] = m;
|
|
1002
1002
|
return;
|
|
1003
1003
|
} catch {
|
|
1004
1004
|
}
|
|
1005
1005
|
try {
|
|
1006
|
-
window.document.cookie = encodeURIComponent(
|
|
1006
|
+
window.document.cookie = encodeURIComponent(a) + "=" + m + ";";
|
|
1007
1007
|
} catch {
|
|
1008
1008
|
}
|
|
1009
1009
|
}
|
|
1010
1010
|
}
|
|
1011
1011
|
function l() {
|
|
1012
1012
|
var u;
|
|
1013
|
-
if (!(typeof window ===
|
|
1013
|
+
if (!(typeof window === z || !a)) {
|
|
1014
1014
|
try {
|
|
1015
|
-
u = window.localStorage[
|
|
1015
|
+
u = window.localStorage[a];
|
|
1016
1016
|
} catch {
|
|
1017
1017
|
}
|
|
1018
|
-
if (typeof u ===
|
|
1018
|
+
if (typeof u === z)
|
|
1019
1019
|
try {
|
|
1020
|
-
var m = window.document.cookie, b = encodeURIComponent(
|
|
1021
|
-
|
|
1022
|
-
m.slice(
|
|
1020
|
+
var m = window.document.cookie, b = encodeURIComponent(a), v = m.indexOf(b + "=");
|
|
1021
|
+
v !== -1 && (u = /^([^;]+)/.exec(
|
|
1022
|
+
m.slice(v + b.length + 1)
|
|
1023
1023
|
)[1]);
|
|
1024
1024
|
} catch {
|
|
1025
1025
|
}
|
|
1026
1026
|
return t.levels[u] === void 0 && (u = void 0), u;
|
|
1027
1027
|
}
|
|
1028
1028
|
}
|
|
1029
|
-
function
|
|
1030
|
-
if (!(typeof window ===
|
|
1029
|
+
function c() {
|
|
1030
|
+
if (!(typeof window === z || !a)) {
|
|
1031
1031
|
try {
|
|
1032
|
-
window.localStorage.removeItem(
|
|
1032
|
+
window.localStorage.removeItem(a);
|
|
1033
1033
|
} catch {
|
|
1034
1034
|
}
|
|
1035
1035
|
try {
|
|
1036
|
-
window.document.cookie = encodeURIComponent(
|
|
1036
|
+
window.document.cookie = encodeURIComponent(a) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
|
|
1037
1037
|
} catch {
|
|
1038
1038
|
}
|
|
1039
1039
|
}
|
|
1040
1040
|
}
|
|
1041
|
-
function
|
|
1041
|
+
function d(u) {
|
|
1042
1042
|
var m = u;
|
|
1043
1043
|
if (typeof m == "string" && t.levels[m.toUpperCase()] !== void 0 && (m = t.levels[m.toUpperCase()]), typeof m == "number" && m >= 0 && m <= t.levels.SILENT)
|
|
1044
1044
|
return m;
|
|
@@ -1051,52 +1051,52 @@ function at(o, e) {
|
|
|
1051
1051
|
WARN: 3,
|
|
1052
1052
|
ERROR: 4,
|
|
1053
1053
|
SILENT: 5
|
|
1054
|
-
}, t.methodFactory = e ||
|
|
1054
|
+
}, t.methodFactory = e || hs, t.getLevel = function() {
|
|
1055
1055
|
return r ?? i ?? s;
|
|
1056
1056
|
}, t.setLevel = function(u, m) {
|
|
1057
|
-
return r =
|
|
1057
|
+
return r = d(u), m !== !1 && n(r), ie.call(t);
|
|
1058
1058
|
}, t.setDefaultLevel = function(u) {
|
|
1059
|
-
i =
|
|
1059
|
+
i = d(u), l() || t.setLevel(u, !1);
|
|
1060
1060
|
}, t.resetLevel = function() {
|
|
1061
|
-
r = null,
|
|
1061
|
+
r = null, c(), ie.call(t);
|
|
1062
1062
|
}, t.enableAll = function(u) {
|
|
1063
1063
|
t.setLevel(t.levels.TRACE, u);
|
|
1064
1064
|
}, t.disableAll = function(u) {
|
|
1065
1065
|
t.setLevel(t.levels.SILENT, u);
|
|
1066
1066
|
}, t.rebuild = function() {
|
|
1067
|
-
if (
|
|
1068
|
-
for (var u in
|
|
1069
|
-
|
|
1070
|
-
}, s =
|
|
1071
|
-
|
|
1067
|
+
if (T !== t && (s = d(T.getLevel())), ie.call(t), T === t)
|
|
1068
|
+
for (var u in ne)
|
|
1069
|
+
ne[u].rebuild();
|
|
1070
|
+
}, s = d(
|
|
1071
|
+
T ? T.getLevel() : "WARN"
|
|
1072
1072
|
);
|
|
1073
1073
|
var p = l();
|
|
1074
|
-
p != null && (r =
|
|
1074
|
+
p != null && (r = d(p)), ie.call(t);
|
|
1075
1075
|
}
|
|
1076
|
-
|
|
1077
|
-
|
|
1076
|
+
T = new ut();
|
|
1077
|
+
T.getLogger = function(e) {
|
|
1078
1078
|
if (typeof e != "symbol" && typeof e != "string" || e === "")
|
|
1079
1079
|
throw new TypeError("You must supply a name when creating a logger.");
|
|
1080
|
-
var t =
|
|
1081
|
-
return t || (t =
|
|
1080
|
+
var t = ne[e];
|
|
1081
|
+
return t || (t = ne[e] = new ut(
|
|
1082
1082
|
e,
|
|
1083
|
-
|
|
1083
|
+
T.methodFactory
|
|
1084
1084
|
)), t;
|
|
1085
1085
|
};
|
|
1086
|
-
var
|
|
1087
|
-
|
|
1088
|
-
return typeof window !==
|
|
1086
|
+
var ms = typeof window !== z ? window.log : void 0;
|
|
1087
|
+
T.noConflict = function() {
|
|
1088
|
+
return typeof window !== z && window.log === T && (window.log = ms), T;
|
|
1089
1089
|
};
|
|
1090
|
-
|
|
1091
|
-
return
|
|
1090
|
+
T.getLoggers = function() {
|
|
1091
|
+
return ne;
|
|
1092
1092
|
};
|
|
1093
|
-
|
|
1094
|
-
var
|
|
1093
|
+
T.default = T;
|
|
1094
|
+
var ps = function(o) {
|
|
1095
1095
|
for (var e = 1, t = arguments.length, s; e < t; e++)
|
|
1096
1096
|
for (s in arguments[e])
|
|
1097
1097
|
Object.prototype.hasOwnProperty.call(arguments[e], s) && (o[s] = arguments[e][s]);
|
|
1098
1098
|
return o;
|
|
1099
|
-
},
|
|
1099
|
+
}, us = {
|
|
1100
1100
|
template: "[%t] %l:",
|
|
1101
1101
|
levelFormatter: function(o) {
|
|
1102
1102
|
return o.toUpperCase();
|
|
@@ -1108,34 +1108,34 @@ var ns = function(o) {
|
|
|
1108
1108
|
return o.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
|
|
1109
1109
|
},
|
|
1110
1110
|
format: void 0
|
|
1111
|
-
},
|
|
1111
|
+
}, bt, Y = {}, bs = function(o) {
|
|
1112
1112
|
if (!o || !o.getLogger)
|
|
1113
1113
|
throw new TypeError("Argument is not a root logger");
|
|
1114
|
-
|
|
1115
|
-
},
|
|
1114
|
+
bt = o;
|
|
1115
|
+
}, gs = function(o, e) {
|
|
1116
1116
|
if (!o || !o.setLevel)
|
|
1117
1117
|
throw new TypeError("Argument is not a logger");
|
|
1118
|
-
var t = o.methodFactory, s = o.name || "", i =
|
|
1119
|
-
function r(
|
|
1120
|
-
var
|
|
1118
|
+
var t = o.methodFactory, s = o.name || "", i = Y[s] || Y[""] || us;
|
|
1119
|
+
function r(a, n, l) {
|
|
1120
|
+
var c = t(a, n, l), d = Y[l] || Y[""], p = d.template.indexOf("%t") !== -1, u = d.template.indexOf("%l") !== -1, m = d.template.indexOf("%n") !== -1;
|
|
1121
1121
|
return function() {
|
|
1122
|
-
for (var b = "",
|
|
1123
|
-
g
|
|
1124
|
-
if (s || !
|
|
1125
|
-
var _ =
|
|
1126
|
-
|
|
1122
|
+
for (var b = "", v = arguments.length, f = Array(v), g = 0; g < v; g++)
|
|
1123
|
+
f[g] = arguments[g];
|
|
1124
|
+
if (s || !Y[l]) {
|
|
1125
|
+
var _ = d.timestampFormatter(/* @__PURE__ */ new Date()), y = d.levelFormatter(a), w = d.nameFormatter(l);
|
|
1126
|
+
d.format ? b += d.format(y, w, _) : (b += d.template, p && (b = b.replace(/%t/, _)), u && (b = b.replace(/%l/, y)), m && (b = b.replace(/%n/, w))), f.length && typeof f[0] == "string" ? f[0] = b + " " + f[0] : f.unshift(b);
|
|
1127
1127
|
}
|
|
1128
|
-
|
|
1128
|
+
c.apply(void 0, f);
|
|
1129
1129
|
};
|
|
1130
1130
|
}
|
|
1131
|
-
return
|
|
1131
|
+
return Y[s] || (o.methodFactory = r), e = e || {}, e.template && (e.format = void 0), Y[s] = ps({}, i, e), o.setLevel(o.getLevel()), bt || o.warn(
|
|
1132
1132
|
"It is necessary to call the function reg() of loglevel-plugin-prefix before calling apply. From the next release, it will throw an error. See more: https://github.com/kutuluk/loglevel-plugin-prefix/blob/master/README.md"
|
|
1133
1133
|
), o;
|
|
1134
|
-
},
|
|
1135
|
-
reg:
|
|
1136
|
-
apply:
|
|
1134
|
+
}, fs = {
|
|
1135
|
+
reg: bs,
|
|
1136
|
+
apply: gs
|
|
1137
1137
|
};
|
|
1138
|
-
const
|
|
1138
|
+
const vs = {
|
|
1139
1139
|
debug: "#0ea5e9",
|
|
1140
1140
|
// Blue
|
|
1141
1141
|
info: "#10b981",
|
|
@@ -1145,55 +1145,55 @@ const hs = {
|
|
|
1145
1145
|
error: "#ef4444"
|
|
1146
1146
|
// Red
|
|
1147
1147
|
};
|
|
1148
|
-
|
|
1149
|
-
const
|
|
1150
|
-
|
|
1151
|
-
const s =
|
|
1152
|
-
return function(...
|
|
1153
|
-
const l =
|
|
1154
|
-
s(
|
|
1148
|
+
fs.reg(T);
|
|
1149
|
+
const _s = (o) => o.toTimeString().split(" ")[0] + "." + o.getMilliseconds().toString().padStart(3, "0"), ks = T.methodFactory;
|
|
1150
|
+
T.methodFactory = function(o, e, t) {
|
|
1151
|
+
const s = ks(o, e, t), r = `color: ${vs[o] || "#666"}; font-weight: bold;`, a = "color: inherit;";
|
|
1152
|
+
return function(...n) {
|
|
1153
|
+
const l = _s(/* @__PURE__ */ new Date()), c = o.toUpperCase(), d = t ? `%c[${l}]%c %c[${c}]%c %c[${t}]%c` : `%c[${l}]%c %c[${c}]%c`;
|
|
1154
|
+
s(d, ...t ? [r, a, r, a, r, a] : [r, a, r, a], ...n);
|
|
1155
1155
|
};
|
|
1156
1156
|
};
|
|
1157
|
-
typeof
|
|
1158
|
-
const
|
|
1157
|
+
typeof T.setDefaultLevel == "function" ? T.setDefaultLevel("silent") : T.setLevel("silent", !1);
|
|
1158
|
+
const de = T.getLogger("MULTISELECT:INIT"), O = T.getLogger("MULTISELECT:DATA"), R = T.getLogger("MULTISELECT:UI"), L = T.getLogger("MULTISELECT:INTERACTION"), ys = [
|
|
1159
1159
|
"MULTISELECT:INIT",
|
|
1160
1160
|
"MULTISELECT:DATA",
|
|
1161
1161
|
"MULTISELECT:UI",
|
|
1162
1162
|
"MULTISELECT:INTERACTION"
|
|
1163
1163
|
];
|
|
1164
|
-
function
|
|
1165
|
-
typeof
|
|
1164
|
+
function De() {
|
|
1165
|
+
typeof T.rebuild == "function" && T.rebuild();
|
|
1166
1166
|
}
|
|
1167
|
-
function
|
|
1168
|
-
|
|
1167
|
+
function ws() {
|
|
1168
|
+
T.setLevel("debug"), De();
|
|
1169
1169
|
}
|
|
1170
|
-
function
|
|
1171
|
-
|
|
1170
|
+
function xs() {
|
|
1171
|
+
T.setLevel("silent"), De();
|
|
1172
1172
|
}
|
|
1173
|
-
function
|
|
1174
|
-
|
|
1173
|
+
function Cs(o) {
|
|
1174
|
+
T.setLevel(o), De();
|
|
1175
1175
|
}
|
|
1176
|
-
function
|
|
1176
|
+
function Ss(o, e) {
|
|
1177
1177
|
const t = o.includes(":") ? o : `MULTISELECT:${o}`;
|
|
1178
|
-
|
|
1178
|
+
T.getLogger(t).setLevel(e);
|
|
1179
1179
|
}
|
|
1180
|
-
class
|
|
1180
|
+
class Ke {
|
|
1181
1181
|
constructor(e) {
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1182
|
+
h(this, "container");
|
|
1183
|
+
h(this, "wrapper");
|
|
1184
|
+
h(this, "viewport");
|
|
1185
|
+
h(this, "itemHeight");
|
|
1186
|
+
h(this, "items");
|
|
1187
|
+
h(this, "renderItem");
|
|
1188
|
+
h(this, "bufferSize");
|
|
1189
|
+
h(this, "onVisibleRangeChange");
|
|
1190
|
+
h(this, "onScroll");
|
|
1191
|
+
h(this, "scrollTop", 0);
|
|
1192
|
+
h(this, "viewportHeight", 0);
|
|
1193
|
+
h(this, "visibleStart", 0);
|
|
1194
|
+
h(this, "visibleEnd", 0);
|
|
1195
|
+
h(this, "scrollHandler");
|
|
1196
|
+
h(this, "resizeObserver");
|
|
1197
1197
|
this.container = e.container, this.itemHeight = e.itemHeight, this.items = e.items, this.renderItem = e.renderItem, this.bufferSize = e.bufferSize ?? 10, this.onVisibleRangeChange = e.onVisibleRangeChange, this.onScroll = e.onScroll, this.scrollHandler = this.handleScroll.bind(this), this.init();
|
|
1198
1198
|
}
|
|
1199
1199
|
/**
|
|
@@ -1240,8 +1240,8 @@ class We {
|
|
|
1240
1240
|
this.visibleStart = e, this.visibleEnd = t, this.onVisibleRangeChange && this.onVisibleRangeChange(e, t);
|
|
1241
1241
|
let s = "";
|
|
1242
1242
|
for (let i = e; i < t; i++) {
|
|
1243
|
-
const r = this.items[i],
|
|
1244
|
-
s += `<div class="ms__virtual-item" style="position: absolute; top: ${
|
|
1243
|
+
const r = this.items[i], a = this.renderItem(r, i), n = i * this.itemHeight;
|
|
1244
|
+
s += `<div class="ms__virtual-item" style="position: absolute; top: ${n}px; left: 0; right: 0; height: ${this.itemHeight}px;" data-index="${i}">`, s += a, s += "</div>";
|
|
1245
1245
|
}
|
|
1246
1246
|
this.viewport.innerHTML = s;
|
|
1247
1247
|
}
|
|
@@ -1299,27 +1299,27 @@ class We {
|
|
|
1299
1299
|
this.container.removeEventListener("scroll", this.scrollHandler), this.resizeObserver && this.resizeObserver.disconnect(), this.container.innerHTML = "";
|
|
1300
1300
|
}
|
|
1301
1301
|
}
|
|
1302
|
-
class
|
|
1302
|
+
class Ts {
|
|
1303
1303
|
constructor(e) {
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1304
|
+
h(this, "element");
|
|
1305
|
+
h(this, "trigger");
|
|
1306
|
+
h(this, "container");
|
|
1307
|
+
h(this, "placement");
|
|
1308
|
+
h(this, "offsetDistance");
|
|
1309
|
+
h(this, "showDelay");
|
|
1310
|
+
h(this, "hideDelay");
|
|
1311
|
+
h(this, "visibleClass");
|
|
1312
|
+
h(this, "followCursor");
|
|
1313
|
+
h(this, "onBeforeShow");
|
|
1314
|
+
h(this, "showTimer", null);
|
|
1315
|
+
h(this, "hideTimer", null);
|
|
1316
|
+
h(this, "positionCleanup", null);
|
|
1317
|
+
h(this, "visible", !1);
|
|
1318
|
+
h(this, "cursorX", 0);
|
|
1319
|
+
h(this, "cursorY", 0);
|
|
1320
|
+
h(this, "handleMouseEnter");
|
|
1321
|
+
h(this, "handleMouseLeave");
|
|
1322
|
+
h(this, "handleMouseMove");
|
|
1323
1323
|
this.trigger = e.trigger, this.container = e.container, this.placement = e.placement ?? "top", this.offsetDistance = e.offsetDistance ?? 8, this.showDelay = e.showDelay ?? 100, this.hideDelay = e.hideDelay ?? 100, this.visibleClass = e.visibleClass ?? "ms__badge-tooltip--visible", this.followCursor = e.followCursor ?? !1, this.onBeforeShow = e.onBeforeShow, this.element = document.createElement("div"), this.element.className = e.cssClass ?? "ms__badge-tooltip", typeof e.content == "string" ? this.element.textContent = e.content : this.element.appendChild(e.content), this.container.appendChild(this.element), this.handleMouseEnter = (t) => {
|
|
1324
1324
|
this.followCursor && (this.cursorX = t.clientX, this.cursorY = t.clientY), this.scheduleShow();
|
|
1325
1325
|
}, this.handleMouseLeave = () => this.scheduleHide(), this.trigger.addEventListener("mouseenter", this.handleMouseEnter), this.trigger.addEventListener("mouseleave", this.handleMouseLeave), this.followCursor && (this.handleMouseMove = (t) => {
|
|
@@ -1338,17 +1338,17 @@ class _s {
|
|
|
1338
1338
|
}
|
|
1339
1339
|
show() {
|
|
1340
1340
|
var e;
|
|
1341
|
-
(e = this.onBeforeShow) == null || e.call(this), this.visible = !0, this.element.classList.add(this.visibleClass), this.positionCleanup && (this.positionCleanup(), this.positionCleanup = null), this.followCursor ? this.positionAtCursor() : this.positionCleanup =
|
|
1341
|
+
(e = this.onBeforeShow) == null || e.call(this), this.visible = !0, this.element.classList.add(this.visibleClass), this.positionCleanup && (this.positionCleanup(), this.positionCleanup = null), this.followCursor ? this.positionAtCursor() : this.positionCleanup = Se(this.trigger, this.element, () => this.computeAt(this.trigger));
|
|
1342
1342
|
}
|
|
1343
1343
|
/** Position the tooltip relative to a reference (the trigger element or a pointer virtual element). */
|
|
1344
1344
|
computeAt(e) {
|
|
1345
|
-
|
|
1345
|
+
Me(e, this.element, {
|
|
1346
1346
|
placement: this.placement,
|
|
1347
1347
|
strategy: "fixed",
|
|
1348
1348
|
middleware: [
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1349
|
+
Te(this.offsetDistance),
|
|
1350
|
+
mt(),
|
|
1351
|
+
Ie({ padding: 8 })
|
|
1352
1352
|
]
|
|
1353
1353
|
}).then(({ x: t, y: s }) => {
|
|
1354
1354
|
Object.assign(this.element.style, {
|
|
@@ -1384,7 +1384,190 @@ class _s {
|
|
|
1384
1384
|
this.showTimer !== null && clearTimeout(this.showTimer), this.hideTimer !== null && clearTimeout(this.hideTimer), this.showTimer = null, this.hideTimer = null, this.positionCleanup && (this.positionCleanup(), this.positionCleanup = null), this.trigger.removeEventListener("mouseenter", this.handleMouseEnter), this.trigger.removeEventListener("mouseleave", this.handleMouseLeave), this.handleMouseMove && this.trigger.removeEventListener("mousemove", this.handleMouseMove), this.element.remove();
|
|
1385
1385
|
}
|
|
1386
1386
|
}
|
|
1387
|
-
function
|
|
1387
|
+
function qe(o) {
|
|
1388
|
+
return {
|
|
1389
|
+
treeId: "",
|
|
1390
|
+
id: -1,
|
|
1391
|
+
path: "",
|
|
1392
|
+
pathSegment: "",
|
|
1393
|
+
parentPath: void 0,
|
|
1394
|
+
level: void 0,
|
|
1395
|
+
children: {},
|
|
1396
|
+
hasChildren: !1,
|
|
1397
|
+
isSelectable: !0,
|
|
1398
|
+
data: void 0,
|
|
1399
|
+
...o
|
|
1400
|
+
};
|
|
1401
|
+
}
|
|
1402
|
+
const re = (o) => !o || typeof o == "string" && o.trim() === "";
|
|
1403
|
+
function Is(o, e = ".") {
|
|
1404
|
+
if (!o || typeof o != "string") return null;
|
|
1405
|
+
const t = o.lastIndexOf(e);
|
|
1406
|
+
return t === -1 ? "" : o.substring(0, t);
|
|
1407
|
+
}
|
|
1408
|
+
function Ye(o, e, t = ".") {
|
|
1409
|
+
return re(e) ? o : o.startsWith(e + t) ? o.substring(e.length + t.length) : o;
|
|
1410
|
+
}
|
|
1411
|
+
function Xe(o, e = 0, t = 1, s = ".") {
|
|
1412
|
+
return o.split(s).slice(e, e + t).join(s);
|
|
1413
|
+
}
|
|
1414
|
+
function Ms(o, e) {
|
|
1415
|
+
return o.split(e).length;
|
|
1416
|
+
}
|
|
1417
|
+
function U(o, e) {
|
|
1418
|
+
return o[e];
|
|
1419
|
+
}
|
|
1420
|
+
function Os(o = {}) {
|
|
1421
|
+
const e = o.idMember, t = o.pathMember, s = o.getPathCallback, i = o.parentPathMember, r = o.levelMember, a = o.hasChildrenMember, n = o.isSelectableMember, l = o.getIsSelectableCallback, c = o.treeId || "multiselect-tree", d = o.orderMember, p = o.getDisplayValueCallback, u = re(i), m = re(r), b = re(a), v = re(n), f = "x", g = o.treePathSeparator || ".", _ = qe();
|
|
1422
|
+
let y = 0, w = null;
|
|
1423
|
+
const M = (I) => s ? s(I) : t ? U(I, t) : void 0, E = {
|
|
1424
|
+
treePathSeparator: g,
|
|
1425
|
+
root: _,
|
|
1426
|
+
get tree() {
|
|
1427
|
+
return Object.values(_.children);
|
|
1428
|
+
},
|
|
1429
|
+
/**
|
|
1430
|
+
* Every node in depth-first render order (a parent immediately precedes
|
|
1431
|
+
* its subtree). Computed once per `insertArray` and cached.
|
|
1432
|
+
*/
|
|
1433
|
+
get flatNodes() {
|
|
1434
|
+
if (w) return w;
|
|
1435
|
+
const I = [], C = o.isSorted ?? !1, x = o.sortCallback;
|
|
1436
|
+
function S(A) {
|
|
1437
|
+
let k = Object.values(A.children);
|
|
1438
|
+
C && x && k.length > 0 && (k = x(k));
|
|
1439
|
+
for (const P of k)
|
|
1440
|
+
I.push(P), P.hasChildren && S(P);
|
|
1441
|
+
}
|
|
1442
|
+
return S(_), w = I, I;
|
|
1443
|
+
},
|
|
1444
|
+
insertArray(I) {
|
|
1445
|
+
I = I || [], _.children = {}, y = 0, w = null;
|
|
1446
|
+
const C = [];
|
|
1447
|
+
let x = I.map((S, A) => {
|
|
1448
|
+
const k = qe();
|
|
1449
|
+
k.treeId = c, k.id = e ? U(S, e) : void 0;
|
|
1450
|
+
const P = M(S);
|
|
1451
|
+
return P == null || P === "" || typeof P != "string" ? (C.push(`index ${A}`), null) : (k.path = P, (k.id === void 0 || k.id === -1) && (k.id = P), u ? k.parentPath = Is(k.path, g) : k.parentPath = U(S, i), k.pathSegment = Xe(
|
|
1452
|
+
Ye(k.path, k.parentPath ?? "", g),
|
|
1453
|
+
0,
|
|
1454
|
+
1,
|
|
1455
|
+
g
|
|
1456
|
+
), m ? k.level = Ms(k.path, g) : k.level = U(S, r), b || (k.hasChildren = U(S, a)), k.data = S, k);
|
|
1457
|
+
}).filter((S) => S !== null);
|
|
1458
|
+
o.isSorted || (o.sortCallback ? x = o.sortCallback(x) : x = se(x));
|
|
1459
|
+
for (const S of x)
|
|
1460
|
+
j(S.parentPath ?? "", S);
|
|
1461
|
+
if (l || !v)
|
|
1462
|
+
for (const S of x)
|
|
1463
|
+
if (l)
|
|
1464
|
+
S.isSelectable = l(S) !== !1;
|
|
1465
|
+
else {
|
|
1466
|
+
const A = U(S.data, n);
|
|
1467
|
+
S.isSelectable = A == null ? !0 : !!A;
|
|
1468
|
+
}
|
|
1469
|
+
C.length > 0 && console.warn(
|
|
1470
|
+
`[ltree ${c}] ${C.length} option(s) had an invalid path and were skipped (pathMember="${t}"). Offending: ${C.slice(0, 5).join(", ")}` + (C.length > 5 ? ", …" : "")
|
|
1471
|
+
);
|
|
1472
|
+
},
|
|
1473
|
+
getNodeByPath(I, C) {
|
|
1474
|
+
let x = C || _;
|
|
1475
|
+
if (I) {
|
|
1476
|
+
const S = I.split(g);
|
|
1477
|
+
for (let A = 0; A < S.length; A++) {
|
|
1478
|
+
const k = f + S[A];
|
|
1479
|
+
if (!x.children.hasOwnProperty(k))
|
|
1480
|
+
return null;
|
|
1481
|
+
x = x.children[k];
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
return x;
|
|
1485
|
+
}
|
|
1486
|
+
};
|
|
1487
|
+
function j(I, C) {
|
|
1488
|
+
const x = E.getNodeByPath(I);
|
|
1489
|
+
if (!x)
|
|
1490
|
+
return `Node: ${C.path} - Could not find parent node: ${I}`;
|
|
1491
|
+
m && (C.level = (x.level || 0) + 1);
|
|
1492
|
+
const S = f + Xe(Ye(C.path, I, g), 0, 1, g);
|
|
1493
|
+
return x.children.hasOwnProperty(S) || (x.children[S] = C, b && !x.hasChildren && (x.hasChildren = !0), y = Math.max(y, C.level || 0)), null;
|
|
1494
|
+
}
|
|
1495
|
+
function se(I) {
|
|
1496
|
+
return I.sort((C, x) => {
|
|
1497
|
+
const S = C.level || 0, A = x.level || 0;
|
|
1498
|
+
if (S !== A) return S - A;
|
|
1499
|
+
if (C.parentPath !== x.parentPath)
|
|
1500
|
+
return C.parentPath ? x.parentPath ? C.parentPath.localeCompare(x.parentPath) : 1 : -1;
|
|
1501
|
+
if (d && C.data && x.data) {
|
|
1502
|
+
const k = U(C.data, d) ?? 0, P = U(x.data, d) ?? 0;
|
|
1503
|
+
if (k !== P) return k - P;
|
|
1504
|
+
}
|
|
1505
|
+
return p ? p(C).localeCompare(p(x)) : C.path.localeCompare(x.path);
|
|
1506
|
+
});
|
|
1507
|
+
}
|
|
1508
|
+
return E;
|
|
1509
|
+
}
|
|
1510
|
+
function As(o, e) {
|
|
1511
|
+
const t = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), r = (l) => String(e(l.data)), a = (l) => {
|
|
1512
|
+
t.set(r(l), l);
|
|
1513
|
+
const c = [];
|
|
1514
|
+
for (const p of Object.values(l.children))
|
|
1515
|
+
c.push(...a(p));
|
|
1516
|
+
let d;
|
|
1517
|
+
return c.length > 0 ? d = c : l.isSelectable !== !1 ? (d = [r(l)], i.add(l.path)) : d = [], s.set(l.path, d), d;
|
|
1518
|
+
}, n = o.tree;
|
|
1519
|
+
for (const l of n) a(l);
|
|
1520
|
+
return { nodeByValue: t, atomsUnder: s, atomPaths: i, roots: n };
|
|
1521
|
+
}
|
|
1522
|
+
function ze(o, e, t) {
|
|
1523
|
+
const s = o.atomsUnder.get(e.path);
|
|
1524
|
+
if (!s || s.length === 0) return "unchecked";
|
|
1525
|
+
let i = 0;
|
|
1526
|
+
for (const r of s) t.has(r) && i++;
|
|
1527
|
+
return i === 0 ? "unchecked" : i === s.length ? "checked" : "indeterminate";
|
|
1528
|
+
}
|
|
1529
|
+
function we(o, e) {
|
|
1530
|
+
const t = /* @__PURE__ */ new Set();
|
|
1531
|
+
for (const s of e) {
|
|
1532
|
+
const i = o.nodeByValue.get(String(s));
|
|
1533
|
+
if (i)
|
|
1534
|
+
for (const r of o.atomsUnder.get(i.path) ?? []) t.add(r);
|
|
1535
|
+
}
|
|
1536
|
+
return t;
|
|
1537
|
+
}
|
|
1538
|
+
function Ps(o, e, t) {
|
|
1539
|
+
const s = o.atomsUnder.get(e.path) ?? [], i = new Set(t), r = ze(o, e, t), a = [], n = [];
|
|
1540
|
+
if (r === "checked")
|
|
1541
|
+
for (const l of s) i.delete(l) && n.push(l);
|
|
1542
|
+
else
|
|
1543
|
+
for (const l of s) i.has(l) || (i.add(l), a.push(l));
|
|
1544
|
+
return { checkedAtoms: i, addedAtoms: a, removedAtoms: n };
|
|
1545
|
+
}
|
|
1546
|
+
function Ls(o, e, t, s) {
|
|
1547
|
+
const i = (n) => String(s(n.data)), r = [], a = (n) => {
|
|
1548
|
+
const l = ze(o, n, e);
|
|
1549
|
+
if (l === "unchecked") return;
|
|
1550
|
+
const c = n.isSelectable !== !1, d = Object.values(n.children);
|
|
1551
|
+
if (t === "leaves") {
|
|
1552
|
+
o.atomPaths.has(n.path) && l === "checked" && r.push(i(n));
|
|
1553
|
+
for (const p of d) a(p);
|
|
1554
|
+
return;
|
|
1555
|
+
}
|
|
1556
|
+
if (t === "all") {
|
|
1557
|
+
l === "checked" && c && r.push(i(n));
|
|
1558
|
+
for (const p of d) a(p);
|
|
1559
|
+
return;
|
|
1560
|
+
}
|
|
1561
|
+
if (l === "checked" && c) {
|
|
1562
|
+
r.push(i(n));
|
|
1563
|
+
return;
|
|
1564
|
+
}
|
|
1565
|
+
for (const p of d) a(p);
|
|
1566
|
+
};
|
|
1567
|
+
for (const n of o.roots) a(n);
|
|
1568
|
+
return r;
|
|
1569
|
+
}
|
|
1570
|
+
function Es(o) {
|
|
1388
1571
|
let e = o;
|
|
1389
1572
|
for (; e && !(e === document.body || e === document.documentElement); ) {
|
|
1390
1573
|
if (e instanceof Element) {
|
|
@@ -1398,7 +1581,7 @@ function ys(o) {
|
|
|
1398
1581
|
}
|
|
1399
1582
|
return window;
|
|
1400
1583
|
}
|
|
1401
|
-
function
|
|
1584
|
+
function Vs(o, e, t) {
|
|
1402
1585
|
let s = o;
|
|
1403
1586
|
for (; s && !(s === document.body || s === document.documentElement); ) {
|
|
1404
1587
|
if (s instanceof Element) {
|
|
@@ -1410,58 +1593,68 @@ function ws(o, e, t) {
|
|
|
1410
1593
|
}
|
|
1411
1594
|
return null;
|
|
1412
1595
|
}
|
|
1413
|
-
function
|
|
1596
|
+
function Ds(o) {
|
|
1414
1597
|
const e = getComputedStyle(o), t = [];
|
|
1415
1598
|
e.transform !== "none" && t.push(`transform: ${e.transform}`), e.perspective !== "none" && t.push(`perspective: ${e.perspective}`), e.filter !== "none" && t.push(`filter: ${e.filter}`);
|
|
1416
1599
|
const s = e.backdropFilter;
|
|
1417
1600
|
return s && s !== "none" && t.push(`backdrop-filter: ${s}`), e.willChange && /\b(transform|filter|perspective)\b/.test(e.willChange) && t.push(`will-change: ${e.willChange}`), e.contain && /\b(paint|layout|strict|content)\b/.test(e.contain) && t.push(`contain: ${e.contain}`), e.containerType && e.containerType !== "normal" && t.push(`container-type: ${e.containerType}`), t.join("; ");
|
|
1418
1601
|
}
|
|
1419
|
-
class
|
|
1602
|
+
class zs {
|
|
1420
1603
|
constructor(e, t = {}) {
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1604
|
+
h(this, "element");
|
|
1605
|
+
h(this, "instanceId");
|
|
1606
|
+
h(this, "options");
|
|
1607
|
+
h(this, "isOpen", !1);
|
|
1608
|
+
h(this, "selectedValues", /* @__PURE__ */ new Set());
|
|
1609
|
+
h(this, "selectedOptions", /* @__PURE__ */ new Map());
|
|
1610
|
+
h(this, "allOptions", []);
|
|
1611
|
+
h(this, "filteredOptions", []);
|
|
1612
|
+
// Tree mode: the hierarchy built from option paths, and the flat list of
|
|
1613
|
+
// nodes currently shown. `treeNodes` stays index-aligned with
|
|
1614
|
+
// `filteredOptions` so focus/keyboard/virtual-scroll keep working unchanged.
|
|
1615
|
+
h(this, "tree", null);
|
|
1616
|
+
h(this, "treeNodes", []);
|
|
1617
|
+
// Cascade checkbox mode (tree + multiple + checkbox-mode="cascade"): the index
|
|
1618
|
+
// is rebuilt with the tree; `cascadeCheckedAtoms` is the derived set of checked
|
|
1619
|
+
// leaf-level atoms, refreshed from `selectedValues` before each render.
|
|
1620
|
+
h(this, "cascadeIndex", null);
|
|
1621
|
+
h(this, "cascadeCheckedAtoms", /* @__PURE__ */ new Set());
|
|
1622
|
+
h(this, "hiddenInputs", []);
|
|
1623
|
+
h(this, "focusedIndex", -1);
|
|
1624
|
+
h(this, "matchingIndices", /* @__PURE__ */ new Set());
|
|
1625
|
+
h(this, "searchTerm", "");
|
|
1626
|
+
h(this, "isLoading", !1);
|
|
1627
|
+
h(this, "searchDebounceTimer");
|
|
1628
|
+
h(this, "searchAbortController");
|
|
1629
|
+
h(this, "showSelectedPopover", !1);
|
|
1630
|
+
h(this, "selectedPopoverPlacement", null);
|
|
1631
|
+
h(this, "dropdownPlacement", null);
|
|
1632
|
+
h(this, "isRTL", !1);
|
|
1633
|
+
h(this, "effectiveBadgesPosition", "bottom");
|
|
1634
|
+
h(this, "justClosedViaClick", !1);
|
|
1635
|
+
h(this, "positioningDriftWarned", !1);
|
|
1443
1636
|
// Floating UI cleanup functions
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1637
|
+
h(this, "dropdownCleanup", null);
|
|
1638
|
+
h(this, "hintCleanup", null);
|
|
1639
|
+
h(this, "selectedPopoverCleanup", null);
|
|
1447
1640
|
// All hover tooltips (badge text, badge-remove buttons, action buttons), keyed by id.
|
|
1448
|
-
|
|
1641
|
+
h(this, "tooltips", /* @__PURE__ */ new Map());
|
|
1449
1642
|
// Virtual scroll instance
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1643
|
+
h(this, "virtualScroll", null);
|
|
1644
|
+
h(this, "optionsContainer", null);
|
|
1645
|
+
h(this, "selectedPopoverVirtualScroll", null);
|
|
1646
|
+
h(this, "selectedPopoverContainer", null);
|
|
1454
1647
|
// DOM elements
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1648
|
+
h(this, "input");
|
|
1649
|
+
h(this, "dropdown");
|
|
1650
|
+
h(this, "dropdownInner");
|
|
1651
|
+
h(this, "badgesContainer");
|
|
1652
|
+
h(this, "counter");
|
|
1653
|
+
h(this, "hint");
|
|
1654
|
+
h(this, "selectedPopover");
|
|
1462
1655
|
// Document-level event handlers (stored for cleanup)
|
|
1463
|
-
|
|
1464
|
-
|
|
1656
|
+
h(this, "documentKeydownHandler", null);
|
|
1657
|
+
h(this, "documentClickHandler", null);
|
|
1465
1658
|
this.element = e, this.instanceId = `MS-${Math.random().toString(36).slice(2, 11)}`, this.options = {
|
|
1466
1659
|
// String options
|
|
1467
1660
|
searchHint: e.dataset.searchHint || "",
|
|
@@ -1555,7 +1748,25 @@ class xs {
|
|
|
1555
1748
|
* text independently. Doesn't fit the extractField shape (no tuple/member layer of its own).
|
|
1556
1749
|
*/
|
|
1557
1750
|
getItemBadgeDisplayValue(e) {
|
|
1558
|
-
|
|
1751
|
+
if (this.options.getBadgeDisplayCallback) return this.options.getBadgeDisplayCallback(e);
|
|
1752
|
+
if (this.options.isBadgeFullTitleShown) {
|
|
1753
|
+
const t = this.getItemFullTitle(e);
|
|
1754
|
+
if (t) return t;
|
|
1755
|
+
}
|
|
1756
|
+
return this.getItemDisplayValue(e);
|
|
1757
|
+
}
|
|
1758
|
+
/**
|
|
1759
|
+
* Full title — a fully-qualified label supplied with the data (never computed here). Used by
|
|
1760
|
+
* badges when `isBadgeFullTitleShown` is on. Returns undefined when the option has none.
|
|
1761
|
+
*/
|
|
1762
|
+
getItemFullTitle(e) {
|
|
1763
|
+
return this.extractField(e, {
|
|
1764
|
+
tupleSkip: !0,
|
|
1765
|
+
member: this.options.fullTitleMember,
|
|
1766
|
+
callback: this.options.getFullTitleCallback,
|
|
1767
|
+
transform: String,
|
|
1768
|
+
fallback: void 0
|
|
1769
|
+
});
|
|
1559
1770
|
}
|
|
1560
1771
|
getItemSearchValue(e) {
|
|
1561
1772
|
return this.extractField(e, {
|
|
@@ -1601,8 +1812,27 @@ class xs {
|
|
|
1601
1812
|
fallback: !1
|
|
1602
1813
|
});
|
|
1603
1814
|
}
|
|
1815
|
+
/**
|
|
1816
|
+
* Tree mode: whether the visible node at `index` may be selected. Non-selectable
|
|
1817
|
+
* nodes (see `isSelectableMember`/`getIsSelectableCallback`) still render — just
|
|
1818
|
+
* without a checkbox — but are skipped by focus and cannot be toggled. Always
|
|
1819
|
+
* true outside tree mode. `treeNodes` is index-aligned with `filteredOptions`.
|
|
1820
|
+
*/
|
|
1821
|
+
isIndexSelectable(e) {
|
|
1822
|
+
if (!this.isTreeMode()) return !0;
|
|
1823
|
+
const t = this.treeNodes[e];
|
|
1824
|
+
return t ? t.isSelectable !== !1 : !0;
|
|
1825
|
+
}
|
|
1826
|
+
/** Whether an option may be selected. Always true outside tree mode. */
|
|
1827
|
+
isOptionSelectable(e) {
|
|
1828
|
+
if (!this.isTreeMode()) return !0;
|
|
1829
|
+
const t = this.filteredOptions.indexOf(e);
|
|
1830
|
+
if (t >= 0) return this.isIndexSelectable(t);
|
|
1831
|
+
const s = String(this.getItemValue(e)), i = this.treeNodes.find((r) => String(this.getItemValue(r.data)) === s);
|
|
1832
|
+
return i ? i.isSelectable !== !1 : !0;
|
|
1833
|
+
}
|
|
1604
1834
|
init() {
|
|
1605
|
-
this.parseOptions(), this.buildHTML(), this.attachEvents(), this.parseInitialSelection(),
|
|
1835
|
+
this.parseOptions(), this.buildHTML(), this.attachEvents(), this.parseInitialSelection(), de.debug(`Initialized [${this.instanceId}] with options:`, {
|
|
1606
1836
|
placeholder: this.options.searchPlaceholder,
|
|
1607
1837
|
totalOptions: this.allOptions.length,
|
|
1608
1838
|
isCloseOnSelect: this.options.isCloseOnSelect,
|
|
@@ -1615,27 +1845,158 @@ class xs {
|
|
|
1615
1845
|
try {
|
|
1616
1846
|
this.allOptions = JSON.parse(e);
|
|
1617
1847
|
} catch (t) {
|
|
1618
|
-
|
|
1848
|
+
O.error(`[${this.instanceId}] Failed to parse data-options:`, t), this.allOptions = [];
|
|
1619
1849
|
}
|
|
1620
1850
|
else this.options.options && (this.allOptions = this.options.options);
|
|
1621
|
-
this.filteredOptions = [...this.allOptions];
|
|
1851
|
+
this.filteredOptions = [...this.allOptions], this.isTreeMode() && this.buildTree();
|
|
1852
|
+
}
|
|
1853
|
+
// ========================================================================
|
|
1854
|
+
// TREE MODE
|
|
1855
|
+
// ========================================================================
|
|
1856
|
+
/** Whether options should be rendered as an (always-expanded) tree. */
|
|
1857
|
+
isTreeMode() {
|
|
1858
|
+
return this.options.isTreeEnabled === !1 ? !1 : !!(this.options.isTreeEnabled || this.options.pathMember || this.options.getPathCallback);
|
|
1859
|
+
}
|
|
1860
|
+
/** (Re)build the ltree from `allOptions` and derive the visible flat list. */
|
|
1861
|
+
buildTree() {
|
|
1862
|
+
this.tree = Os({
|
|
1863
|
+
idMember: this.options.valueMember,
|
|
1864
|
+
pathMember: this.options.pathMember,
|
|
1865
|
+
getPathCallback: this.options.getPathCallback,
|
|
1866
|
+
parentPathMember: this.options.parentPathMember,
|
|
1867
|
+
levelMember: this.options.levelMember,
|
|
1868
|
+
hasChildrenMember: this.options.hasChildrenMember,
|
|
1869
|
+
isSelectableMember: this.options.isSelectableMember,
|
|
1870
|
+
getIsSelectableCallback: this.options.getIsSelectableCallback,
|
|
1871
|
+
treePathSeparator: this.options.treePathSeparator,
|
|
1872
|
+
treeId: this.instanceId,
|
|
1873
|
+
getDisplayValueCallback: (e) => this.getItemDisplayValue(e.data)
|
|
1874
|
+
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ? As(this.tree, (e) => String(this.getItemValue(e))) : null, this.rebuildTreeVisible();
|
|
1875
|
+
}
|
|
1876
|
+
/**
|
|
1877
|
+
* Whether cascade checkbox mode is active: a multi-select tree with
|
|
1878
|
+
* `checkbox-mode="cascade"`. Checking a node then toggles its whole subtree
|
|
1879
|
+
* and branches show a tristate box.
|
|
1880
|
+
*/
|
|
1881
|
+
isCascadeMode() {
|
|
1882
|
+
return this.isTreeMode() && this.options.isMultipleEnabled !== !1 && this.options.checkboxMode === "cascade";
|
|
1883
|
+
}
|
|
1884
|
+
cascadePolicy() {
|
|
1885
|
+
return this.options.cascadeSelectPolicy ?? "rolled-up";
|
|
1886
|
+
}
|
|
1887
|
+
/** Refresh the derived checked-atom set from the emitted `selectedValues`. */
|
|
1888
|
+
refreshCascadeAtoms() {
|
|
1889
|
+
this.isCascadeMode() && this.cascadeIndex && (this.cascadeCheckedAtoms = we(this.cascadeIndex, this.selectedValues));
|
|
1890
|
+
}
|
|
1891
|
+
/**
|
|
1892
|
+
* Toggle a tree node in cascade mode: flip its whole subtree, re-project the
|
|
1893
|
+
* checked atoms to emitted values under the active policy, and commit the diff
|
|
1894
|
+
* so badges / form / change events reflect the policy (rolled-up branches, etc.).
|
|
1895
|
+
*/
|
|
1896
|
+
toggleTreeCascade(e) {
|
|
1897
|
+
const t = this.cascadeIndex, s = we(t, this.selectedValues), { checkedAtoms: i } = Ps(t, e, s);
|
|
1898
|
+
this.commitCascadeAtoms(i);
|
|
1899
|
+
}
|
|
1900
|
+
/**
|
|
1901
|
+
* Given a checked-atom set, project it to emitted values under the active
|
|
1902
|
+
* policy, diff it against the current selection, and commit. Shared by every
|
|
1903
|
+
* cascade entry point (node toggle, Select All) so they all emit the same
|
|
1904
|
+
* policy-projected shape (e.g. a full subtree rolls up to one value).
|
|
1905
|
+
*/
|
|
1906
|
+
commitCascadeAtoms(e) {
|
|
1907
|
+
var l;
|
|
1908
|
+
const t = this.cascadeIndex, s = Ls(
|
|
1909
|
+
t,
|
|
1910
|
+
e,
|
|
1911
|
+
this.cascadePolicy(),
|
|
1912
|
+
(c) => String(this.getItemValue(c))
|
|
1913
|
+
), i = new Set(s), r = [], a = [];
|
|
1914
|
+
for (const [c, d] of this.selectedOptions)
|
|
1915
|
+
i.has(c) || a.push(d);
|
|
1916
|
+
const n = /* @__PURE__ */ new Map();
|
|
1917
|
+
for (const c of s) {
|
|
1918
|
+
const p = ((l = t.nodeByValue.get(c)) == null ? void 0 : l.data) ?? this.selectedOptions.get(c);
|
|
1919
|
+
p !== void 0 && (n.set(c, p), this.selectedValues.has(c) || r.push(p));
|
|
1920
|
+
}
|
|
1921
|
+
this.selectedValues = i, this.selectedOptions = n, this.cascadeCheckedAtoms = e, this.commit({ added: r, removed: a });
|
|
1922
|
+
}
|
|
1923
|
+
/**
|
|
1924
|
+
* Derive `treeNodes` + `filteredOptions` from the full tree, applying the
|
|
1925
|
+
* current search term. Matching nodes keep all their ancestors visible so
|
|
1926
|
+
* indentation stays coherent (the tree is always fully expanded).
|
|
1927
|
+
*/
|
|
1928
|
+
rebuildTreeVisible() {
|
|
1929
|
+
if (!this.tree) {
|
|
1930
|
+
this.treeNodes = [];
|
|
1931
|
+
return;
|
|
1932
|
+
}
|
|
1933
|
+
const e = this.tree.flatNodes, t = this.options.isSearchEnabled ? (this.searchTerm || "").trim().toLowerCase() : "";
|
|
1934
|
+
let s;
|
|
1935
|
+
if (!t)
|
|
1936
|
+
s = e;
|
|
1937
|
+
else {
|
|
1938
|
+
const i = this.tree.treePathSeparator, r = /* @__PURE__ */ new Set();
|
|
1939
|
+
for (const a of e)
|
|
1940
|
+
if (this.getItemSearchValue(a.data).toLowerCase().includes(t)) {
|
|
1941
|
+
const l = a.path.split(i);
|
|
1942
|
+
for (let c = 1; c <= l.length; c++)
|
|
1943
|
+
r.add(l.slice(0, c).join(i));
|
|
1944
|
+
}
|
|
1945
|
+
s = e.filter((a) => r.has(a.path));
|
|
1946
|
+
}
|
|
1947
|
+
this.treeNodes = s, this.filteredOptions = s.map((i) => i.data);
|
|
1948
|
+
}
|
|
1949
|
+
/**
|
|
1950
|
+
* Reset the visible list to "everything". **Tree-aware**: in tree mode it
|
|
1951
|
+
* rebuilds `treeNodes` (kept index-aligned with `filteredOptions`) from the
|
|
1952
|
+
* full tree, so the two never drift. A raw `filteredOptions = [...allOptions]`
|
|
1953
|
+
* would leave `treeNodes` stale after clearing a search — the virtual list
|
|
1954
|
+
* then reserves height for every option but renders blank rows because
|
|
1955
|
+
* `treeNodes[index]` is undefined. Always use this to clear the visible list.
|
|
1956
|
+
*/
|
|
1957
|
+
resetVisibleToAll() {
|
|
1958
|
+
this.isTreeMode() ? this.rebuildTreeVisible() : this.filteredOptions = [...this.allOptions];
|
|
1959
|
+
}
|
|
1960
|
+
/**
|
|
1961
|
+
* Tree mode: derive the visible list from an **external** set of matched
|
|
1962
|
+
* options — e.g. the results returned by `searchCallback` — keeping each
|
|
1963
|
+
* match's ancestors so indentation stays coherent. This is the async-search
|
|
1964
|
+
* analogue of `rebuildTreeVisible`: the matching is done by the caller (their
|
|
1965
|
+
* own index/engine) instead of a local substring test, but ancestor
|
|
1966
|
+
* preservation and `treeNodes`/`filteredOptions` index-alignment still happen
|
|
1967
|
+
* here. Pass all options to show the whole tree.
|
|
1968
|
+
*/
|
|
1969
|
+
rebuildTreeVisibleFromMatches(e) {
|
|
1970
|
+
if (!this.tree) {
|
|
1971
|
+
this.treeNodes = [], this.filteredOptions = [];
|
|
1972
|
+
return;
|
|
1973
|
+
}
|
|
1974
|
+
const t = this.tree.flatNodes, s = this.tree.treePathSeparator, i = new Set((e || []).map((n) => String(this.getItemValue(n)))), r = /* @__PURE__ */ new Set();
|
|
1975
|
+
for (const n of t)
|
|
1976
|
+
if (i.has(String(this.getItemValue(n.data)))) {
|
|
1977
|
+
const l = n.path.split(s);
|
|
1978
|
+
for (let c = 1; c <= l.length; c++)
|
|
1979
|
+
r.add(l.slice(0, c).join(s));
|
|
1980
|
+
}
|
|
1981
|
+
const a = t.filter((n) => r.has(n.path));
|
|
1982
|
+
this.treeNodes = a, this.filteredOptions = a.map((n) => n.data);
|
|
1622
1983
|
}
|
|
1623
1984
|
buildHTML() {
|
|
1624
1985
|
const e = this.options.container || document.body, t = this.element.getRootNode(), s = t instanceof ShadowRoot ? t.host : this.element, i = s.getAttribute("dir") === "rtl", r = s.closest('[dir="rtl"]') !== null;
|
|
1625
|
-
this.isRTL = i || r,
|
|
1986
|
+
this.isRTL = i || r, de.debug(`[${this.instanceId}] RTL Debug:`, {
|
|
1626
1987
|
isShadowRoot: t instanceof ShadowRoot,
|
|
1627
1988
|
hostElement: s,
|
|
1628
1989
|
elementDir: s.getAttribute("dir"),
|
|
1629
1990
|
hasElementDir: i,
|
|
1630
1991
|
hasAncestorDir: r,
|
|
1631
1992
|
isRTL: this.isRTL
|
|
1632
|
-
}), this.effectiveBadgesPosition = this.options.badgesPosition || "bottom", this.isRTL && (this.effectiveBadgesPosition === "left" ? this.effectiveBadgesPosition = "right" : this.effectiveBadgesPosition === "right" && (this.effectiveBadgesPosition = "left")), this.element.classList.add("ms"), this.isRTL && (this.element.classList.add("ms--rtl"),
|
|
1633
|
-
const
|
|
1634
|
-
|
|
1635
|
-
const
|
|
1636
|
-
|
|
1993
|
+
}), this.effectiveBadgesPosition = this.options.badgesPosition || "bottom", this.isRTL && (this.effectiveBadgesPosition === "left" ? this.effectiveBadgesPosition = "right" : this.effectiveBadgesPosition === "right" && (this.effectiveBadgesPosition = "left")), this.element.classList.add("ms"), this.isRTL && (this.element.classList.add("ms--rtl"), de.debug(`[${this.instanceId}] Added ms--rtl class to element`)), (!this.options.isCheckboxesShown || !this.options.isMultipleEnabled) && this.element.classList.add("ms--no-checkboxes");
|
|
1994
|
+
const a = document.createElement("div");
|
|
1995
|
+
a.className = "ms__input-wrapper", this.input = document.createElement("input"), this.input.type = "text", this.input.className = "ms__input", this.input.placeholder = this.getPlaceholderText(), this.input.autocomplete = "off", this.options.searchInputMode === "readonly" ? this.input.readOnly = !0 : this.options.searchInputMode === "hidden" && (this.input.style.display = "none");
|
|
1996
|
+
const n = document.createElement("span");
|
|
1997
|
+
n.className = "ms__toggle", n.innerHTML = "▼", this.counter = document.createElement("span"), this.counter.className = "ms__counter", this.counter.style.display = "none", a.appendChild(this.input), a.appendChild(this.counter), a.appendChild(n), this.badgesContainer = document.createElement("div"), this.badgesContainer.className = "ms__badges";
|
|
1637
1998
|
const l = document.createElement("div");
|
|
1638
|
-
l.className = "ms__wrapper", (this.effectiveBadgesPosition === "left" || this.effectiveBadgesPosition === "right") && l.classList.add("ms__wrapper--inline"), l.appendChild(
|
|
1999
|
+
l.className = "ms__wrapper", (this.effectiveBadgesPosition === "left" || this.effectiveBadgesPosition === "right") && l.classList.add("ms__wrapper--inline"), l.appendChild(a), l.appendChild(this.badgesContainer), this.element.appendChild(l), this.dropdown = document.createElement("div"), this.dropdown.className = "ms__dropdown", this.dropdownInner = document.createElement("div"), this.dropdownInner.className = "ms__dropdown-inner", this.dropdown.appendChild(this.dropdownInner), e.appendChild(this.dropdown), this.options.searchHint && (this.hint = document.createElement("div"), this.hint.className = "ms__hint", this.hint.textContent = this.options.searchHint, e.appendChild(this.hint)), this.selectedPopover = document.createElement("div"), this.selectedPopover.className = "ms__selected-popover", e.appendChild(this.selectedPopover), this.renderDropdown();
|
|
1639
2000
|
}
|
|
1640
2001
|
/**
|
|
1641
2002
|
* Check if virtual scroll should be used
|
|
@@ -1655,7 +2016,7 @@ class xs {
|
|
|
1655
2016
|
});
|
|
1656
2017
|
}
|
|
1657
2018
|
renderDropdown() {
|
|
1658
|
-
if (this.destroyAllActionButtonTooltips(), this.shouldUseVirtualScroll()) {
|
|
2019
|
+
if (this.destroyAllActionButtonTooltips(), this.refreshCascadeAtoms(), this.shouldUseVirtualScroll()) {
|
|
1659
2020
|
this.dropdown.classList.add("ms__dropdown--virtual"), this.renderDropdownVirtual();
|
|
1660
2021
|
return;
|
|
1661
2022
|
}
|
|
@@ -1666,23 +2027,32 @@ class xs {
|
|
|
1666
2027
|
return;
|
|
1667
2028
|
}
|
|
1668
2029
|
const t = this.renderActionsHTML(), s = this.options.actionsPosition === "bottom";
|
|
1669
|
-
if (s || (e += t),
|
|
2030
|
+
if (s || (e += t), this.options.isVirtualScrollEnabled) {
|
|
2031
|
+
const i = this.options.optionHeight ?? 50;
|
|
2032
|
+
e += `<div class="ms__options ms__options--fixed-height" style="--ms-option-height: ${i}px;">`;
|
|
2033
|
+
} else
|
|
2034
|
+
e += '<div class="ms__options">';
|
|
2035
|
+
if (this.filteredOptions.length === 0)
|
|
1670
2036
|
e += `<div class="ms__empty">${this.options.emptyMessage}</div>`;
|
|
2037
|
+
else if (this.isTreeMode())
|
|
2038
|
+
this.treeNodes.forEach((i, r) => {
|
|
2039
|
+
e += this.renderTreeNode(i, r);
|
|
2040
|
+
});
|
|
1671
2041
|
else if (this.options.isGroupsAllowed) {
|
|
1672
2042
|
const i = this.groupOptions(this.filteredOptions), r = /* @__PURE__ */ new Map();
|
|
1673
|
-
this.filteredOptions.forEach((
|
|
1674
|
-
if (e += '<div class="ms__group">',
|
|
2043
|
+
this.filteredOptions.forEach((a, n) => r.set(a, n)), Object.keys(i).forEach((a) => {
|
|
2044
|
+
if (e += '<div class="ms__group">', a !== "__ungrouped__")
|
|
1675
2045
|
if (this.options.renderGroupLabelContentCallback) {
|
|
1676
|
-
const
|
|
1677
|
-
if (
|
|
2046
|
+
const n = this.options.renderGroupLabelContentCallback(a);
|
|
2047
|
+
if (n instanceof HTMLElement) {
|
|
1678
2048
|
const l = document.createElement("div");
|
|
1679
|
-
l.className = "ms__group-label", l.appendChild(
|
|
2049
|
+
l.className = "ms__group-label", l.appendChild(n), e += l.outerHTML;
|
|
1680
2050
|
} else
|
|
1681
|
-
e += `<div class="ms__group-label">${
|
|
2051
|
+
e += `<div class="ms__group-label">${n}</div>`;
|
|
1682
2052
|
} else
|
|
1683
|
-
e += `<div class="ms__group-label">${
|
|
1684
|
-
i[
|
|
1685
|
-
e += this.renderOption(
|
|
2053
|
+
e += `<div class="ms__group-label">${a}</div>`;
|
|
2054
|
+
i[a].forEach((n) => {
|
|
2055
|
+
e += this.renderOption(n, r.get(n) ?? -1);
|
|
1686
2056
|
}), e += "</div>";
|
|
1687
2057
|
});
|
|
1688
2058
|
} else
|
|
@@ -1699,8 +2069,8 @@ class xs {
|
|
|
1699
2069
|
let s = "";
|
|
1700
2070
|
const i = this.renderActionsHTML(), r = this.options.actionsPosition === "bottom";
|
|
1701
2071
|
r || (s += i);
|
|
1702
|
-
const
|
|
1703
|
-
s += `<div class="ms__options ms__options--virtual" style="height: ${
|
|
2072
|
+
const a = this.options.maxHeight || "20rem", n = this.options.optionHeight ?? 50;
|
|
2073
|
+
s += `<div class="ms__options ms__options--virtual" style="height: ${a}; max-height: ${a}; overflow-y: auto; position: relative; --ms-option-height: ${n}px;"></div>`, r && (s += i), this.dropdownInner.innerHTML = s, this.optionsContainer = this.dropdownInner.querySelector(".ms__options");
|
|
1704
2074
|
}
|
|
1705
2075
|
if (this.filteredOptions.length === 0) {
|
|
1706
2076
|
this.virtualScroll && (this.virtualScroll.destroy(), this.virtualScroll = null), this.optionsContainer.innerHTML = `<div class="ms__empty">${this.options.emptyMessage}</div>`;
|
|
@@ -1708,11 +2078,11 @@ class xs {
|
|
|
1708
2078
|
}
|
|
1709
2079
|
const e = this.options.optionHeight ?? 50, t = this.options.virtualScrollBuffer ?? 10;
|
|
1710
2080
|
requestAnimationFrame(() => {
|
|
1711
|
-
this.optionsContainer && (this.virtualScroll ? this.virtualScroll.setItems(this.filteredOptions) : this.virtualScroll = new
|
|
2081
|
+
this.optionsContainer && (this.virtualScroll ? this.virtualScroll.setItems(this.filteredOptions) : this.virtualScroll = new Ke({
|
|
1712
2082
|
container: this.optionsContainer,
|
|
1713
2083
|
itemHeight: e,
|
|
1714
2084
|
items: this.filteredOptions,
|
|
1715
|
-
renderItem: (s, i) => this.renderOption(s, i),
|
|
2085
|
+
renderItem: (s, i) => this.isTreeMode() ? this.renderTreeNode(this.treeNodes[i], i) : this.renderOption(s, i),
|
|
1716
2086
|
bufferSize: t,
|
|
1717
2087
|
onVisibleRangeChange: () => {
|
|
1718
2088
|
this.attachOptionTooltips();
|
|
@@ -1737,41 +2107,66 @@ class xs {
|
|
|
1737
2107
|
renderActionsHTML() {
|
|
1738
2108
|
const e = this.options.actionButtons;
|
|
1739
2109
|
if (!this.options.isMultipleEnabled || !e || e.length === 0) return "";
|
|
1740
|
-
const t = this.options.actionsPosition === "bottom" ? "bottom" : "top", s = this.options.actionsAlign ?? "stretch", i = ` ms__actions--${t}`, r = this.options.isActionsSticky ? " ms__actions--sticky" : "",
|
|
1741
|
-
if (e.forEach((
|
|
1742
|
-
if (!(
|
|
2110
|
+
const t = this.options.actionsPosition === "bottom" ? "bottom" : "top", s = this.options.actionsAlign ?? "stretch", i = ` ms__actions--${t}`, r = this.options.isActionsSticky ? " ms__actions--sticky" : "", a = this.options.actionsLayout === "wrap" ? " ms__actions--wrap" : "", n = ` ms__actions--align-${s}`, l = /* @__PURE__ */ new Map();
|
|
2111
|
+
if (e.forEach((d, p) => {
|
|
2112
|
+
if (!(d.getIsVisibleCallback ? d.getIsVisibleCallback(this) : d.isVisible ?? !0)) return;
|
|
1743
2113
|
let m;
|
|
1744
|
-
|
|
1745
|
-
const b = m ? " disabled" : "",
|
|
1746
|
-
let
|
|
1747
|
-
if (
|
|
1748
|
-
const
|
|
1749
|
-
|
|
1750
|
-
} else
|
|
1751
|
-
const
|
|
1752
|
-
l.has(
|
|
2114
|
+
d.getIsDisabledCallback ? m = d.getIsDisabledCallback(this) : d.isDisabled !== void 0 ? m = d.isDisabled : m = this.getBuiltInActionDisabled(d.action);
|
|
2115
|
+
const b = m ? " disabled" : "", v = d.getTextCallback ? d.getTextCallback(this) : d.text;
|
|
2116
|
+
let f = "";
|
|
2117
|
+
if (d.getClassCallback) {
|
|
2118
|
+
const y = d.getClassCallback(this);
|
|
2119
|
+
f = Array.isArray(y) ? ` ${y.join(" ")}` : y ? ` ${y}` : "";
|
|
2120
|
+
} else d.cssClass && (f = ` ${d.cssClass}`);
|
|
2121
|
+
const g = Math.max(1, Math.floor(d.row ?? 1)), _ = `<button type="button"${b} class="ms__action-btn${f}" data-action="${d.action}" data-button-index="${p}">${v}</button>`;
|
|
2122
|
+
l.has(g) || l.set(g, []), l.get(g).push(_);
|
|
1753
2123
|
}), l.size === 0) return "";
|
|
1754
|
-
const
|
|
1755
|
-
return `<div class="ms__actions${i}${r}${
|
|
2124
|
+
const c = Array.from(l.keys()).sort((d, p) => d - p).map((d) => `<div class="ms__actions-row" data-row="${d}">${l.get(d).join("")}</div>`).join("");
|
|
2125
|
+
return `<div class="ms__actions${i}${r}${a}${n}">${c}</div>`;
|
|
1756
2126
|
}
|
|
1757
2127
|
renderOption(e, t) {
|
|
1758
|
-
const s = this.getItemValue(e), i = this.getItemDisplayValue(e), r = this.getItemIcon(e),
|
|
1759
|
-
l && p.push("ms__option--selected"),
|
|
2128
|
+
const s = this.getItemValue(e), i = this.getItemDisplayValue(e), r = this.getItemIcon(e), a = this.getItemSubtitle(e), n = this.getItemDisabled(e), l = this.selectedValues.has(String(s)), c = t === this.focusedIndex, d = this.matchingIndices.has(t), p = ["ms__option"];
|
|
2129
|
+
l && p.push("ms__option--selected"), c && p.push("ms__option--focused"), d && p.push("ms__option--matched"), n && p.push("ms__option--disabled");
|
|
1760
2130
|
const u = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "";
|
|
1761
2131
|
let m = `<div class="${p.join(" ")}" data-value="${s}" data-index="${t}"${u}>`;
|
|
1762
|
-
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && (m += `<input type="checkbox" class="ms__checkbox" ${l ? "checked" : ""} ${
|
|
2132
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && (m += `<input type="checkbox" class="ms__checkbox" ${l ? "checked" : ""} ${n ? "disabled" : ""}>`), m += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
1763
2133
|
const b = {
|
|
1764
2134
|
index: t,
|
|
1765
2135
|
isSelected: l,
|
|
1766
|
-
isFocused:
|
|
1767
|
-
isMatched:
|
|
1768
|
-
isDisabled:
|
|
1769
|
-
},
|
|
1770
|
-
typeof
|
|
2136
|
+
isFocused: c,
|
|
2137
|
+
isMatched: d,
|
|
2138
|
+
isDisabled: n
|
|
2139
|
+
}, v = this.options.renderOptionContentCallback(e, b);
|
|
2140
|
+
typeof v == "string" ? m += v : m += v.outerHTML;
|
|
1771
2141
|
} else
|
|
1772
|
-
r && (m += `<span class="ms__option-icon">${r}</span>`), m += '<div class="ms__option-text">', m += `<div class="ms__option-title">${this.highlightMatch(i, this.searchTerm)}</div>`,
|
|
2142
|
+
r && (m += `<span class="ms__option-icon">${r}</span>`), m += '<div class="ms__option-text">', m += `<div class="ms__option-title">${this.highlightMatch(i, this.searchTerm)}</div>`, a && (m += `<div class="ms__option-subtitle">${a}</div>`), m += "</div>";
|
|
1773
2143
|
return m += "</div>", m += "</div>", m;
|
|
1774
2144
|
}
|
|
2145
|
+
/**
|
|
2146
|
+
* Render a single tree-mode row. Separate from `renderOption`: a tree row is
|
|
2147
|
+
* indented by its depth (via the `--ms-tree-depth` custom property) and
|
|
2148
|
+
* tagged branch/leaf, but otherwise carries the same selection/checkbox/
|
|
2149
|
+
* icon/subtitle content. The tree is always fully expanded, so there is no
|
|
2150
|
+
* chevron/toggle — every node is just a normal, selectable option.
|
|
2151
|
+
*/
|
|
2152
|
+
renderTreeNode(e, t) {
|
|
2153
|
+
const s = e.data, i = this.getItemValue(s), r = this.getItemDisplayValue(s), a = this.getItemIcon(s), n = this.getItemSubtitle(s), l = this.getItemDisabled(s), c = this.isCascadeMode() && this.cascadeIndex, d = c ? ze(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, p = c ? d === "checked" : this.selectedValues.has(String(i)), u = d === "indeterminate", m = t === this.focusedIndex, b = e.isSelectable !== !1, v = e.level ?? 1, f = Math.max(0, v - 1), g = ["ms__option", "ms__option--tree"];
|
|
2154
|
+
g.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), p && g.push("ms__option--selected"), u && g.push("ms__option--indeterminate"), m && g.push("ms__option--focused"), l && g.push("ms__option--disabled"), b || g.push("ms__option--tree-unselectable");
|
|
2155
|
+
const _ = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", y = b ? "" : ' data-selectable="false"';
|
|
2156
|
+
let w = `<div class="${g.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${v}" style="--ms-tree-depth: ${f};"${_}${y}>`;
|
|
2157
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && b && (w += `<input type="checkbox" class="${u ? "ms__checkbox ms__checkbox--indeterminate" : "ms__checkbox"}" ${p ? "checked" : ""}${u ? ' aria-checked="mixed"' : ""} ${l ? "disabled" : ""}>`), w += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
2158
|
+
const M = {
|
|
2159
|
+
index: t,
|
|
2160
|
+
isSelected: p,
|
|
2161
|
+
isFocused: m,
|
|
2162
|
+
isMatched: !1,
|
|
2163
|
+
isDisabled: l
|
|
2164
|
+
}, E = this.options.renderOptionContentCallback(s, M);
|
|
2165
|
+
w += typeof E == "string" ? E : E.outerHTML;
|
|
2166
|
+
} else
|
|
2167
|
+
a && (w += `<span class="ms__option-icon">${a}</span>`), w += '<div class="ms__option-text">', w += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, n && (w += `<div class="ms__option-subtitle">${n}</div>`), w += "</div>";
|
|
2168
|
+
return w += "</div>", w += "</div>", w;
|
|
2169
|
+
}
|
|
1775
2170
|
highlightMatch(e, t) {
|
|
1776
2171
|
if (!t) return e;
|
|
1777
2172
|
const s = new RegExp(`(${t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`, "gi");
|
|
@@ -1820,21 +2215,21 @@ class xs {
|
|
|
1820
2215
|
this.badgesContainer.className = `ms__badges ms__badges--${this.effectiveBadgesPosition}`, this.badgesContainer.innerHTML = e.map((r) => this.renderBadgeHTML(r, { displayMode: "badges", isInPopover: !1 })).join("");
|
|
1821
2216
|
else if (s === "partial") {
|
|
1822
2217
|
this.badgesContainer.className = `ms__badges ms__badges--${this.effectiveBadgesPosition}`;
|
|
1823
|
-
const r = this.options.badgesMaxVisible || 3,
|
|
1824
|
-
let
|
|
1825
|
-
|
|
2218
|
+
const r = this.options.badgesMaxVisible || 3, a = e.slice(0, r), n = t - r, l = a.map((d) => this.renderBadgeHTML(d, { displayMode: "partial", isInPopover: !1 })).join("");
|
|
2219
|
+
let c = "";
|
|
2220
|
+
n > 0 && (c = `
|
|
1826
2221
|
<div class="ms__badge ms__badge--counter ms__badge--more" data-action="show-selected">
|
|
1827
|
-
<span class="ms__badge-text">${this.options.getCounterCallback ? this.options.getCounterCallback(t,
|
|
1828
|
-
<button type="button" class="ms__badge-remove" data-action="remove-hidden" aria-label="Remove ${
|
|
2222
|
+
<span class="ms__badge-text">${this.options.getCounterCallback ? this.options.getCounterCallback(t, n) : `+${n} more`}</span>
|
|
2223
|
+
<button type="button" class="ms__badge-remove" data-action="remove-hidden" aria-label="Remove ${n} hidden items"></button>
|
|
1829
2224
|
</div>
|
|
1830
|
-
`), this.badgesContainer.innerHTML = l +
|
|
2225
|
+
`), this.badgesContainer.innerHTML = l + c;
|
|
1831
2226
|
} else if (s === "compact")
|
|
1832
2227
|
if (this.badgesContainer.className = `ms__badges ms__badges--${this.effectiveBadgesPosition}`, t > 0) {
|
|
1833
|
-
const r = e[0],
|
|
1834
|
-
let l =
|
|
1835
|
-
if (
|
|
1836
|
-
const
|
|
1837
|
-
l = `${
|
|
2228
|
+
const r = e[0], a = this.getItemBadgeDisplayValue(r), n = t - 1;
|
|
2229
|
+
let l = a;
|
|
2230
|
+
if (n > 0) {
|
|
2231
|
+
const c = this.options.getCounterCallback ? this.options.getCounterCallback(t, n) : `+${n} more`;
|
|
2232
|
+
l = `${a} (${c})`;
|
|
1838
2233
|
}
|
|
1839
2234
|
this.badgesContainer.innerHTML = `
|
|
1840
2235
|
<div class="ms__badge" data-action="show-selected">
|
|
@@ -1890,14 +2285,14 @@ class xs {
|
|
|
1890
2285
|
if (this.options.beforeSearchCallback) {
|
|
1891
2286
|
const s = this.options.beforeSearchCallback(e);
|
|
1892
2287
|
if (s === null) {
|
|
1893
|
-
|
|
2288
|
+
O.debug(`[${this.instanceId}] beforeSearchCallback blocked search for term:`, e), this.abortInFlightSearch(), this.matchingIndices.clear(), this.isTreeMode() ? (this.searchTerm = "", this.rebuildTreeVisible()) : this.filteredOptions = [...this.allOptions], this.renderDropdown();
|
|
1894
2289
|
return;
|
|
1895
2290
|
}
|
|
1896
|
-
t = s, t !== e &&
|
|
2291
|
+
t = s, t !== e && O.debug(`[${this.instanceId}] beforeSearchCallback transformed: "${e}" -> "${t}"`);
|
|
1897
2292
|
}
|
|
1898
2293
|
if (this.options.searchCallback) {
|
|
1899
2294
|
if (t.length < this.options.minSearchLength) {
|
|
1900
|
-
this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.filteredOptions = [...this.allOptions],
|
|
2295
|
+
this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions], O.debug(`[${this.instanceId}] Search term below minimum, showing ${this.allOptions.length} initial options`)) : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
|
|
1901
2296
|
return;
|
|
1902
2297
|
}
|
|
1903
2298
|
this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0);
|
|
@@ -1906,18 +2301,22 @@ class xs {
|
|
|
1906
2301
|
this.searchDebounceTimer = void 0, this.searchTerm === e && this.performAsyncSearch(e, t);
|
|
1907
2302
|
}, s) : await this.performAsyncSearch(e, t);
|
|
1908
2303
|
} else {
|
|
2304
|
+
if (this.isTreeMode()) {
|
|
2305
|
+
this.rebuildTreeVisible(), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown();
|
|
2306
|
+
return;
|
|
2307
|
+
}
|
|
1909
2308
|
if (!t)
|
|
1910
2309
|
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1;
|
|
1911
2310
|
else {
|
|
1912
2311
|
const s = this.options.searchMode || "filter", i = t.toLowerCase();
|
|
1913
2312
|
if (s === "filter")
|
|
1914
|
-
this.filteredOptions = this.allOptions.filter((r) => this.getItemSearchValue(r).toLowerCase().includes(i)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1,
|
|
2313
|
+
this.filteredOptions = this.allOptions.filter((r) => this.getItemSearchValue(r).toLowerCase().includes(i)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, O.debug(`[${this.instanceId}] Filter mode: ${this.filteredOptions.length} matches for "${t}"`);
|
|
1915
2314
|
else {
|
|
1916
2315
|
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear();
|
|
1917
2316
|
let r = -1;
|
|
1918
|
-
this.allOptions.forEach((
|
|
1919
|
-
this.getItemSearchValue(
|
|
1920
|
-
}), r >= 0 ? (this.focusedIndex = r,
|
|
2317
|
+
this.allOptions.forEach((a, n) => {
|
|
2318
|
+
this.getItemSearchValue(a).toLowerCase().includes(i) && (this.matchingIndices.add(n), r === -1 && (r = n));
|
|
2319
|
+
}), r >= 0 ? (this.focusedIndex = r, O.debug(`[${this.instanceId}] Navigate mode: ${this.matchingIndices.size} matches, jumped to index ${r}`)) : O.debug(`[${this.instanceId}] Navigate mode: No matches found, keeping previous focus`);
|
|
1921
2320
|
}
|
|
1922
2321
|
}
|
|
1923
2322
|
this.renderDropdown(), this.options.searchMode === "navigate" && this.focusedIndex >= 0 && this.scrollToFocused();
|
|
@@ -1941,15 +2340,15 @@ class xs {
|
|
|
1941
2340
|
async performAsyncSearch(e, t) {
|
|
1942
2341
|
this.abortInFlightSearch();
|
|
1943
2342
|
const s = new AbortController();
|
|
1944
|
-
this.searchAbortController = s, this.isLoading = !0, this.renderDropdown(),
|
|
2343
|
+
this.searchAbortController = s, this.isLoading = !0, this.renderDropdown(), O.debug(`[${this.instanceId}] Loading data for search term:`, t);
|
|
1945
2344
|
try {
|
|
1946
2345
|
const i = await this.options.searchCallback(t, s.signal);
|
|
1947
2346
|
if (s.signal.aborted || this.searchTerm !== e) return;
|
|
1948
2347
|
const r = i || [];
|
|
1949
|
-
this.filteredOptions = [...r], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(),
|
|
2348
|
+
this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(r) : this.filteredOptions = [...r], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), O.debug(`[${this.instanceId}] Loaded ${r.length} results`);
|
|
1950
2349
|
} catch (i) {
|
|
1951
2350
|
if (s.signal.aborted) return;
|
|
1952
|
-
|
|
2351
|
+
O.error(`[${this.instanceId}] Error loading data:`, i), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions] : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
|
|
1953
2352
|
} finally {
|
|
1954
2353
|
this.searchAbortController === s && (this.searchAbortController = void 0);
|
|
1955
2354
|
}
|
|
@@ -1977,7 +2376,7 @@ class xs {
|
|
|
1977
2376
|
e.preventDefault(), this.focusedIndex >= 0 ? this.toggleOption(this.filteredOptions[this.focusedIndex]) : this.options.isAddNewAllowed && this.options.addNewCallback && this.input.value.trim() && this.handleAddNew(this.input.value.trim());
|
|
1978
2377
|
break;
|
|
1979
2378
|
case "Escape":
|
|
1980
|
-
e.preventDefault(), this.showSelectedPopover ? this.hideSelectedPopover() : this.input.value ? (this.input.value = "", this.searchTerm = "", this.
|
|
2379
|
+
e.preventDefault(), this.showSelectedPopover ? this.hideSelectedPopover() : this.input.value ? (this.input.value = "", this.searchTerm = "", this.resetVisibleToAll(), this.matchingIndices.clear(), this.focusedIndex = -1, this.renderDropdown()) : this.close();
|
|
1981
2380
|
break;
|
|
1982
2381
|
case "Tab":
|
|
1983
2382
|
this.close();
|
|
@@ -1998,36 +2397,36 @@ class xs {
|
|
|
1998
2397
|
}
|
|
1999
2398
|
handleDropdownClick(e) {
|
|
2000
2399
|
var i;
|
|
2001
|
-
|
|
2400
|
+
L.debug(`[${this.instanceId}] Dropdown clicked`, { target: e.target.className }), e.stopPropagation();
|
|
2002
2401
|
const t = e.target.closest("[data-action]");
|
|
2003
2402
|
if (t) {
|
|
2004
2403
|
e.preventDefault();
|
|
2005
2404
|
const r = t.dataset.action;
|
|
2006
|
-
if (
|
|
2405
|
+
if (L.debug(`[${this.instanceId}] Action button clicked:`, r), r === "select-all")
|
|
2007
2406
|
this.selectAll();
|
|
2008
2407
|
else if (r === "clear-all")
|
|
2009
2408
|
this.clearAll();
|
|
2010
2409
|
else if (r === "custom") {
|
|
2011
|
-
const
|
|
2012
|
-
|
|
2410
|
+
const a = parseInt(t.dataset.buttonIndex || "-1"), n = (i = this.options.actionButtons) == null ? void 0 : i[a];
|
|
2411
|
+
n != null && n.onClick && n.onClick(this);
|
|
2013
2412
|
}
|
|
2014
2413
|
return;
|
|
2015
2414
|
}
|
|
2016
2415
|
const s = e.target.closest(".ms__option");
|
|
2017
2416
|
if (s && !s.classList.contains("ms__option--disabled")) {
|
|
2018
2417
|
e.preventDefault();
|
|
2019
|
-
const r = s.dataset.value,
|
|
2020
|
-
|
|
2418
|
+
const r = s.dataset.value, a = this.filteredOptions.findIndex((n) => String(this.getItemValue(n)) === r);
|
|
2419
|
+
L.debug(`[${this.instanceId}] Option clicked:`, {
|
|
2021
2420
|
value: r,
|
|
2022
|
-
optionIndex:
|
|
2421
|
+
optionIndex: a,
|
|
2023
2422
|
closeOnSelect: this.options.isCloseOnSelect,
|
|
2024
2423
|
placeholder: this.options.searchPlaceholder
|
|
2025
|
-
}),
|
|
2424
|
+
}), a >= 0 && (this.focusedIndex = a, this.toggleOption(this.filteredOptions[a]), this.isOpen && this.input.focus());
|
|
2026
2425
|
}
|
|
2027
2426
|
}
|
|
2028
2427
|
handleBadgeClick(e) {
|
|
2029
2428
|
if (e.target.closest('[data-action="clear-count"]')) {
|
|
2030
|
-
e.preventDefault(), e.stopPropagation(),
|
|
2429
|
+
e.preventDefault(), e.stopPropagation(), L.debug(`[${this.instanceId}] Clear count button clicked`), this.clearAll();
|
|
2031
2430
|
return;
|
|
2032
2431
|
}
|
|
2033
2432
|
if (e.target.closest('[data-action="show-selected"]')) {
|
|
@@ -2037,17 +2436,17 @@ class xs {
|
|
|
2037
2436
|
const i = e.target.closest(".ms__badge-remove");
|
|
2038
2437
|
if (i) {
|
|
2039
2438
|
if (e.preventDefault(), e.stopPropagation(), i.dataset.action === "remove-hidden") {
|
|
2040
|
-
|
|
2439
|
+
L.debug(`[${this.instanceId}] Remove hidden items button clicked`);
|
|
2041
2440
|
const l = this.options.badgesMaxVisible || 3;
|
|
2042
2441
|
Array.from(this.selectedOptions.values()).slice(l).forEach((p) => this.interactiveDeselect(p));
|
|
2043
2442
|
return;
|
|
2044
2443
|
}
|
|
2045
|
-
const
|
|
2046
|
-
|
|
2444
|
+
const a = i.dataset.value, n = this.selectedOptions.get(a);
|
|
2445
|
+
n && this.interactiveDeselect(n);
|
|
2047
2446
|
return;
|
|
2048
2447
|
}
|
|
2049
2448
|
if (e.target.closest(".ms__badge--more") && !e.target.closest(".ms__badge-remove")) {
|
|
2050
|
-
e.preventDefault(), e.stopPropagation(),
|
|
2449
|
+
e.preventDefault(), e.stopPropagation(), L.debug(`[${this.instanceId}] '+X more' badge clicked, showing popover`), this.toggleSelectedPopover();
|
|
2051
2450
|
return;
|
|
2052
2451
|
}
|
|
2053
2452
|
}
|
|
@@ -2055,16 +2454,16 @@ class xs {
|
|
|
2055
2454
|
var i;
|
|
2056
2455
|
const t = e.composedPath();
|
|
2057
2456
|
if (this.showSelectedPopover && !t.some(
|
|
2058
|
-
(
|
|
2457
|
+
(a) => a instanceof Node && (this.selectedPopover.contains(a) || this.counter.contains(a) || a.closest && a.closest('[data-action="show-selected"]'))
|
|
2059
2458
|
)) {
|
|
2060
|
-
|
|
2459
|
+
R.debug(`[${this.instanceId}] Closing selected popover due to click outside`), this.hideSelectedPopover();
|
|
2061
2460
|
return;
|
|
2062
2461
|
}
|
|
2063
2462
|
if (!this.isOpen) return;
|
|
2064
2463
|
const s = t.some(
|
|
2065
2464
|
(r) => r instanceof Node && (this.element.contains(r) || this.dropdown.contains(r) || this.hint && this.hint.contains(r))
|
|
2066
2465
|
);
|
|
2067
|
-
|
|
2466
|
+
L.debug(`[${this.instanceId}] handleClickOutside`, {
|
|
2068
2467
|
target: e.target.className,
|
|
2069
2468
|
targetTag: e.target.tagName,
|
|
2070
2469
|
clickedInside: s,
|
|
@@ -2073,45 +2472,61 @@ class xs {
|
|
|
2073
2472
|
elementContains: t.some((r) => r instanceof Node && this.element.contains(r)),
|
|
2074
2473
|
dropdownContains: t.some((r) => r instanceof Node && this.dropdown.contains(r)),
|
|
2075
2474
|
isConnected: this.dropdown.isConnected
|
|
2076
|
-
}), s || (
|
|
2475
|
+
}), s || (L.warn(`[${this.instanceId}] Closing dropdown due to click outside`), this.close());
|
|
2077
2476
|
}
|
|
2078
2477
|
/**
|
|
2079
2478
|
* Move focus by computing a new index from (current, total).
|
|
2080
2479
|
* Returning -1 from `compute` is a no-op (used for empty list / no match).
|
|
2081
2480
|
*/
|
|
2082
|
-
focusBy(e) {
|
|
2083
|
-
const
|
|
2084
|
-
if (
|
|
2085
|
-
const
|
|
2086
|
-
|
|
2481
|
+
focusBy(e, t = 1) {
|
|
2482
|
+
const s = this.filteredOptions.length;
|
|
2483
|
+
if (s === 0) return;
|
|
2484
|
+
const i = e(this.focusedIndex, s);
|
|
2485
|
+
if (i < 0) return;
|
|
2486
|
+
const r = this.resolveSelectableIndex(i, t, s);
|
|
2487
|
+
r < 0 || (this.focusedIndex = r, this.renderDropdown(), this.scrollToFocused());
|
|
2488
|
+
}
|
|
2489
|
+
/**
|
|
2490
|
+
* Given a target index and a preferred direction, return the nearest index
|
|
2491
|
+
* whose node is selectable (skipping non-selectable tree nodes). Falls back to
|
|
2492
|
+
* the opposite direction, then to -1 if nothing is selectable. No-op outside
|
|
2493
|
+
* tree mode.
|
|
2494
|
+
*/
|
|
2495
|
+
resolveSelectableIndex(e, t, s) {
|
|
2496
|
+
if (!this.isTreeMode()) return e;
|
|
2497
|
+
let i = e;
|
|
2498
|
+
for (; i >= 0 && i < s && !this.isIndexSelectable(i); ) i += t;
|
|
2499
|
+
if (i < 0 || i >= s)
|
|
2500
|
+
for (i = e - t; i >= 0 && i < s && !this.isIndexSelectable(i); ) i -= t;
|
|
2501
|
+
return i >= 0 && i < s ? i : -1;
|
|
2087
2502
|
}
|
|
2088
2503
|
focusNext() {
|
|
2089
|
-
this.focusBy((e, t) => Math.min(t - 1, e + 1));
|
|
2504
|
+
this.focusBy((e, t) => Math.min(t - 1, e + 1), 1);
|
|
2090
2505
|
}
|
|
2091
2506
|
focusPrevious() {
|
|
2092
|
-
this.focusBy((e) => Math.max(0, e - 1));
|
|
2507
|
+
this.focusBy((e) => Math.max(0, e - 1), -1);
|
|
2093
2508
|
}
|
|
2094
2509
|
focusFirst() {
|
|
2095
|
-
this.focusBy(() => 0);
|
|
2510
|
+
this.focusBy(() => 0, 1);
|
|
2096
2511
|
}
|
|
2097
2512
|
focusLast() {
|
|
2098
|
-
this.focusBy((e, t) => t - 1);
|
|
2513
|
+
this.focusBy((e, t) => t - 1, -1);
|
|
2099
2514
|
}
|
|
2100
2515
|
focusPageUp() {
|
|
2101
|
-
this.focusBy((e) => Math.max(0, e - 10));
|
|
2516
|
+
this.focusBy((e) => Math.max(0, e - 10), -1);
|
|
2102
2517
|
}
|
|
2103
2518
|
focusPageDown() {
|
|
2104
|
-
this.focusBy((e, t) => Math.min(t - 1, e + 10));
|
|
2519
|
+
this.focusBy((e, t) => Math.min(t - 1, e + 10), 1);
|
|
2105
2520
|
}
|
|
2106
2521
|
focusNextMatch() {
|
|
2107
2522
|
if (this.matchingIndices.size === 0) return;
|
|
2108
2523
|
const e = Array.from(this.matchingIndices).sort((i, r) => i - r), t = e.findIndex((i) => i === this.focusedIndex), s = (t + 1) % e.length;
|
|
2109
|
-
this.focusBy(() => e[s]),
|
|
2524
|
+
this.focusBy(() => e[s]), L.debug(`[${this.instanceId}] Jumped to next match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
|
|
2110
2525
|
}
|
|
2111
2526
|
focusPreviousMatch() {
|
|
2112
2527
|
if (this.matchingIndices.size === 0) return;
|
|
2113
2528
|
const e = Array.from(this.matchingIndices).sort((i, r) => i - r), t = e.findIndex((i) => i === this.focusedIndex), s = t <= 0 ? e.length - 1 : t - 1;
|
|
2114
|
-
this.focusBy(() => e[s]),
|
|
2529
|
+
this.focusBy(() => e[s]), L.debug(`[${this.instanceId}] Jumped to previous match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
|
|
2115
2530
|
}
|
|
2116
2531
|
scrollToFocused() {
|
|
2117
2532
|
if (this.virtualScroll && this.focusedIndex >= 0)
|
|
@@ -2123,11 +2538,22 @@ class xs {
|
|
|
2123
2538
|
}
|
|
2124
2539
|
toggleOption(e) {
|
|
2125
2540
|
if (this.getItemDisabled(e)) {
|
|
2126
|
-
|
|
2541
|
+
L.debug(`[${this.instanceId}] toggleOption ignored — option is disabled`);
|
|
2542
|
+
return;
|
|
2543
|
+
}
|
|
2544
|
+
if (!this.isOptionSelectable(e)) {
|
|
2545
|
+
L.debug(`[${this.instanceId}] toggleOption ignored — node is not selectable`);
|
|
2127
2546
|
return;
|
|
2128
2547
|
}
|
|
2129
2548
|
const t = this.getItemValue(e), s = String(t);
|
|
2130
|
-
|
|
2549
|
+
if (L.debug(`[${this.instanceId}] toggleOption called`, { value: t, multiple: this.options.isMultipleEnabled }), this.isCascadeMode() && this.cascadeIndex) {
|
|
2550
|
+
const a = this.cascadeIndex.nodeByValue.get(s);
|
|
2551
|
+
if (a) {
|
|
2552
|
+
this.toggleTreeCascade(a), this.options.isCloseOnSelect && this.close();
|
|
2553
|
+
return;
|
|
2554
|
+
}
|
|
2555
|
+
}
|
|
2556
|
+
(this.selectedValues.has(s) ? this.interactiveDeselect(e) : this.interactiveSelect(e)) && (this.options.isMultipleEnabled ? this.options.isCloseOnSelect && this.close() : this.close());
|
|
2131
2557
|
}
|
|
2132
2558
|
/**
|
|
2133
2559
|
* The single funnel for an interactive (user-initiated) selection. Consults
|
|
@@ -2137,7 +2563,7 @@ class xs {
|
|
|
2137
2563
|
* Returns true if the option was selected, false if the veto blocked it.
|
|
2138
2564
|
*/
|
|
2139
2565
|
interactiveSelect(e) {
|
|
2140
|
-
return this.options.beforeSelectCallback && this.options.beforeSelectCallback(e, this.getSelected()) === !1 ? (
|
|
2566
|
+
return this.options.beforeSelectCallback && this.options.beforeSelectCallback(e, this.getSelected()) === !1 ? (L.debug(`[${this.instanceId}] Selection blocked by beforeSelectCallback`), !1) : (this.options.isMultipleEnabled || (this.selectedValues.clear(), this.selectedOptions.clear()), this.selectOption(e), !0);
|
|
2141
2567
|
}
|
|
2142
2568
|
/**
|
|
2143
2569
|
* The single funnel for an interactive (user-initiated) deselection. Every
|
|
@@ -2148,16 +2574,16 @@ class xs {
|
|
|
2148
2574
|
* Returns true if the option was deselected, false if the veto blocked it.
|
|
2149
2575
|
*/
|
|
2150
2576
|
interactiveDeselect(e) {
|
|
2151
|
-
return this.options.beforeDeselectCallback && this.options.beforeDeselectCallback(e, this.getSelected()) === !1 ? (
|
|
2577
|
+
return this.options.beforeDeselectCallback && this.options.beforeDeselectCallback(e, this.getSelected()) === !1 ? (L.debug(`[${this.instanceId}] Deselection blocked by beforeDeselectCallback`), !1) : (this.deselectOption(e), !0);
|
|
2152
2578
|
}
|
|
2153
2579
|
async handleAddNew(e) {
|
|
2154
2580
|
if (this.options.addNewCallback)
|
|
2155
2581
|
try {
|
|
2156
|
-
|
|
2582
|
+
O.debug(`[${this.instanceId}] Adding new option:`, e);
|
|
2157
2583
|
const t = await this.options.addNewCallback(e);
|
|
2158
2584
|
this.allOptions.push(t), this.filteredOptions.push(t), this.selectOption(t), this.input.value = "", this.renderDropdown(), this.renderBadges(), this.options.isCloseOnSelect && this.close();
|
|
2159
2585
|
} catch (t) {
|
|
2160
|
-
|
|
2586
|
+
O.error(`[${this.instanceId}] Error adding new option:`, t);
|
|
2161
2587
|
}
|
|
2162
2588
|
}
|
|
2163
2589
|
selectOption(e) {
|
|
@@ -2169,11 +2595,18 @@ class xs {
|
|
|
2169
2595
|
this.selectedValues.delete(s), this.selectedOptions.delete(s), this.commit({ removed: [e] });
|
|
2170
2596
|
}
|
|
2171
2597
|
selectAll() {
|
|
2598
|
+
if (this.isCascadeMode() && this.cascadeIndex) {
|
|
2599
|
+
const t = this.cascadeIndex, s = new Set(we(t, this.selectedValues));
|
|
2600
|
+
for (const i of this.treeNodes)
|
|
2601
|
+
t.atomPaths.has(i.path) && (this.getItemDisabled(i.data) || s.add(String(this.getItemValue(i.data))));
|
|
2602
|
+
this.commitCascadeAtoms(s);
|
|
2603
|
+
return;
|
|
2604
|
+
}
|
|
2172
2605
|
const e = [];
|
|
2173
|
-
this.filteredOptions.forEach((t) => {
|
|
2174
|
-
if (this.getItemDisabled(t)) return;
|
|
2175
|
-
const
|
|
2176
|
-
this.selectedValues.has(
|
|
2606
|
+
this.filteredOptions.forEach((t, s) => {
|
|
2607
|
+
if (this.getItemDisabled(t) || !this.isIndexSelectable(s)) return;
|
|
2608
|
+
const i = String(this.getItemValue(t));
|
|
2609
|
+
this.selectedValues.has(i) || (this.selectedValues.add(i), this.selectedOptions.set(i, t), e.push(t));
|
|
2177
2610
|
}), this.commit({ added: e });
|
|
2178
2611
|
}
|
|
2179
2612
|
clearAll() {
|
|
@@ -2191,10 +2624,10 @@ class xs {
|
|
|
2191
2624
|
this.options.onSelect && t.forEach((i) => this.options.onSelect(i)), this.options.onDeselect && s.forEach((i) => this.options.onDeselect(i)), (t.length > 0 || s.length > 0) && this.options.onChange && this.options.onChange(this.getSelected());
|
|
2192
2625
|
}
|
|
2193
2626
|
open() {
|
|
2194
|
-
|
|
2627
|
+
R.debug(`[${this.instanceId}] open() called`, { isOpen: this.isOpen }), !this.isOpen && (this.isOpen = !0, this.element.classList.add("ms--open"), this.dropdown.classList.add("ms__dropdown--visible"), R.info(`[${this.instanceId}] Dropdown opened`), this.input.placeholder = this.getPlaceholderText(), !this.options.isMultipleEnabled && this.options.isSearchEnabled && (this.input.value = this.searchTerm), this.options.searchCallback && this.options.isKeepOptionsOnSearch && !this.searchTerm && (this.filteredOptions = [...this.allOptions], R.debug(`[${this.instanceId}] Showing ${this.allOptions.length} initial options on open`)), this.renderDropdown(), this.positionDropdown(), this.hint && (this.hint.classList.add("ms__hint--visible"), this.positionHint()));
|
|
2195
2628
|
}
|
|
2196
2629
|
close() {
|
|
2197
|
-
|
|
2630
|
+
R.debug(`[${this.instanceId}] close() called`, { isOpen: this.isOpen }), this.isOpen && (this.isOpen = !1, this.element.classList.remove("ms--open"), this.dropdown.classList.remove("ms__dropdown--visible"), this.hint && this.hint.classList.remove("ms__hint--visible"), this.options.shouldKeepSearchOnClose || (this.searchTerm = "", (this.options.isMultipleEnabled || this.options.isSearchEnabled) && (this.input.value = ""), this.resetVisibleToAll()), this.focusedIndex = -1, this.destroyAllOptionTooltips(), this.renderBadges(), this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.hintCleanup && (this.hintCleanup(), this.hintCleanup = null), this.dropdownPlacement = null, R.debug(`[${this.instanceId}] Dropdown closed`));
|
|
2198
2631
|
}
|
|
2199
2632
|
/**
|
|
2200
2633
|
* Anchor a floating panel (dropdown or selected-items popover) below/above the input with
|
|
@@ -2205,24 +2638,24 @@ class xs {
|
|
|
2205
2638
|
*/
|
|
2206
2639
|
anchorFloatingPanel(e, t) {
|
|
2207
2640
|
const s = {
|
|
2208
|
-
...
|
|
2209
|
-
getOffsetParent: () =>
|
|
2641
|
+
...dt,
|
|
2642
|
+
getOffsetParent: () => Es(this.input)
|
|
2210
2643
|
};
|
|
2211
|
-
return
|
|
2644
|
+
return Se(this.input, e, () => {
|
|
2212
2645
|
var l;
|
|
2213
2646
|
e.style.width = `${this.input.offsetWidth}px`, this.options.dropdownMinWidth && (e.style.minWidth = this.options.dropdownMinWidth), t.applyMaxWidth && this.options.dropdownMaxWidth && (e.style.maxWidth = this.options.dropdownMaxWidth);
|
|
2214
|
-
const i = ((l = t.isLocked) == null ? void 0 : l.call(t)) ?? !0, r = t.getPlacement(),
|
|
2215
|
-
|
|
2216
|
-
...i && r ? [] : [
|
|
2217
|
-
|
|
2647
|
+
const i = ((l = t.isLocked) == null ? void 0 : l.call(t)) ?? !0, r = t.getPlacement(), a = i && r ? r : "bottom-start", n = [
|
|
2648
|
+
Te(4),
|
|
2649
|
+
...i && r ? [] : [mt()],
|
|
2650
|
+
Ie({ padding: 8 })
|
|
2218
2651
|
];
|
|
2219
|
-
|
|
2652
|
+
Me(this.input, e, { placement: a, strategy: "fixed", middleware: n, platform: s }).then(({ x: c, y: d, placement: p }) => {
|
|
2220
2653
|
var u;
|
|
2221
2654
|
r || t.setPlacement(p), Object.assign(e.style, {
|
|
2222
2655
|
position: "fixed",
|
|
2223
|
-
left: `${
|
|
2224
|
-
top: `${
|
|
2225
|
-
}), this.verifyPanelLanded(e,
|
|
2656
|
+
left: `${c}px`,
|
|
2657
|
+
top: `${d}px`
|
|
2658
|
+
}), this.verifyPanelLanded(e, c, d), (u = t.afterPosition) == null || u.call(t);
|
|
2226
2659
|
});
|
|
2227
2660
|
});
|
|
2228
2661
|
}
|
|
@@ -2239,19 +2672,19 @@ class xs {
|
|
|
2239
2672
|
*/
|
|
2240
2673
|
verifyPanelLanded(e, t, s) {
|
|
2241
2674
|
if (this.positioningDriftWarned) return;
|
|
2242
|
-
const i = e.getBoundingClientRect(), r = i.x - t,
|
|
2243
|
-
if (Math.abs(r) < 1 && Math.abs(
|
|
2675
|
+
const i = e.getBoundingClientRect(), r = i.x - t, a = i.y - s;
|
|
2676
|
+
if (Math.abs(r) < 1 && Math.abs(a) < 1) return;
|
|
2244
2677
|
this.positioningDriftWarned = !0;
|
|
2245
|
-
const
|
|
2678
|
+
const n = Vs(this.input, r, a), l = n ? `<${n.tagName.toLowerCase()}${n.id ? "#" + n.id : ""}${typeof n.className == "string" && n.className ? "." + n.className.split(/\s+/).filter(Boolean).slice(0, 2).join(".") : ""}>` : "an ancestor element (could not auto-identify)", c = n ? Ds(n) : "";
|
|
2246
2679
|
console.warn(
|
|
2247
|
-
`[@keenmate/web-multiselect] Dropdown panel rendered ${r.toFixed(0)}px / ${
|
|
2680
|
+
`[@keenmate/web-multiselect] Dropdown panel rendered ${r.toFixed(0)}px / ${a.toFixed(0)}px away from where the library positioned it. Most likely culprit: ${l}` + (c ? ` (has ${c})` : "") + ".\nAn ancestor of <web-multiselect> establishes a fixed-positioning containing block that the library's heuristic doesn't recognize. Fix on your side: replace the property with `transform: translateZ(0)` on that ancestor, OR move the trigger out of that ancestor's subtree. If neither is acceptable, please file an issue at https://github.com/keenmate/web-multiselect/issues with the ancestor's computed CSS."
|
|
2248
2681
|
);
|
|
2249
2682
|
}
|
|
2250
2683
|
positionDropdown() {
|
|
2251
2684
|
this.dropdownCleanup = this.anchorFloatingPanel(this.dropdown, {
|
|
2252
2685
|
getPlacement: () => this.dropdownPlacement,
|
|
2253
2686
|
setPlacement: (e) => {
|
|
2254
|
-
this.dropdownPlacement = e,
|
|
2687
|
+
this.dropdownPlacement = e, R.debug(`[${this.instanceId}] Locked dropdown placement:`, e);
|
|
2255
2688
|
},
|
|
2256
2689
|
isLocked: () => !!this.options.isPlacementLocked,
|
|
2257
2690
|
applyMaxWidth: !0,
|
|
@@ -2261,18 +2694,18 @@ class xs {
|
|
|
2261
2694
|
});
|
|
2262
2695
|
}
|
|
2263
2696
|
positionHint() {
|
|
2264
|
-
this.hint && (this.hintCleanup && this.hintCleanup(), this.hintCleanup =
|
|
2697
|
+
this.hint && (this.hintCleanup && this.hintCleanup(), this.hintCleanup = Se(
|
|
2265
2698
|
this.input,
|
|
2266
2699
|
this.hint,
|
|
2267
2700
|
() => {
|
|
2268
2701
|
let e = "top-start";
|
|
2269
|
-
this.dropdownPlacement && (this.dropdownPlacement.startsWith("bottom") ? e = this.dropdownPlacement.replace("bottom", "top") : this.dropdownPlacement.startsWith("top") && (e = this.dropdownPlacement.replace("top", "bottom"))),
|
|
2702
|
+
this.dropdownPlacement && (this.dropdownPlacement.startsWith("bottom") ? e = this.dropdownPlacement.replace("bottom", "top") : this.dropdownPlacement.startsWith("top") && (e = this.dropdownPlacement.replace("top", "bottom"))), Me(this.input, this.hint, {
|
|
2270
2703
|
placement: e,
|
|
2271
2704
|
strategy: "fixed",
|
|
2272
2705
|
middleware: [
|
|
2273
|
-
|
|
2706
|
+
Te(4),
|
|
2274
2707
|
// Don't use flip() - we want hint to stay opposite of dropdown
|
|
2275
|
-
|
|
2708
|
+
Ie({ padding: 8 })
|
|
2276
2709
|
]
|
|
2277
2710
|
}).then(({ x: t, y: s }) => {
|
|
2278
2711
|
Object.assign(this.hint.style, {
|
|
@@ -2292,7 +2725,7 @@ class xs {
|
|
|
2292
2725
|
this.selectedValues.add(String(s));
|
|
2293
2726
|
}), this.reconcileSelectedOptions(), this.renderBadges();
|
|
2294
2727
|
} catch (t) {
|
|
2295
|
-
|
|
2728
|
+
O.error(`[${this.instanceId}] Failed to parse initial values:`, t);
|
|
2296
2729
|
}
|
|
2297
2730
|
}
|
|
2298
2731
|
/**
|
|
@@ -2314,13 +2747,13 @@ class xs {
|
|
|
2314
2747
|
this.showSelectedPopover ? this.hideSelectedPopover() : this.showPopover();
|
|
2315
2748
|
}
|
|
2316
2749
|
showPopover() {
|
|
2317
|
-
|
|
2750
|
+
R.debug(`[${this.instanceId}] showPopover() called`), this.isOpen && this.close(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ms__selected-popover--visible");
|
|
2318
2751
|
const e = this.options.virtualScrollThreshold ?? 100;
|
|
2319
2752
|
this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.positionSelectedPopover();
|
|
2320
2753
|
}
|
|
2321
2754
|
hideSelectedPopover() {
|
|
2322
2755
|
var e;
|
|
2323
|
-
|
|
2756
|
+
R.debug(`[${this.instanceId}] hideSelectedPopover() called`), this.showSelectedPopover = !1, this.selectedPopover.classList.remove("ms__selected-popover--visible"), this.selectedPopover.classList.remove("ms__selected-popover--virtual"), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
|
|
2324
2757
|
for (const t of Array.from(this.tooltips.keys()))
|
|
2325
2758
|
t.startsWith("popover-") && ((e = this.tooltips.get(t)) == null || e.destroy(), this.tooltips.delete(t));
|
|
2326
2759
|
}
|
|
@@ -2342,27 +2775,27 @@ class xs {
|
|
|
2342
2775
|
}
|
|
2343
2776
|
renderSelectedPopoverVirtual(e, t) {
|
|
2344
2777
|
if (this.selectedPopoverVirtualScroll) {
|
|
2345
|
-
const
|
|
2346
|
-
|
|
2778
|
+
const n = this.selectedPopover.querySelector(".ms__selected-popover-header span");
|
|
2779
|
+
n && (n.textContent = `Selected Items (${t})`);
|
|
2347
2780
|
} else {
|
|
2348
|
-
const
|
|
2781
|
+
const n = this.options.badgeHeight ?? 36, l = `
|
|
2349
2782
|
<div class="ms__selected-popover-header">
|
|
2350
2783
|
<span>Selected Items (${t})</span>
|
|
2351
2784
|
<button type="button" class="ms__selected-popover-close" aria-label="Close"></button>
|
|
2352
2785
|
</div>
|
|
2353
|
-
<div class="ms__selected-popover-body ms__selected-popover-body--virtual" style="height: 18rem; overflow-y: auto; position: relative; --ms-badge-height-virtual: ${
|
|
2786
|
+
<div class="ms__selected-popover-body ms__selected-popover-body--virtual" style="height: 18rem; overflow-y: auto; position: relative; --ms-badge-height-virtual: ${n}px;"></div>
|
|
2354
2787
|
`;
|
|
2355
2788
|
this.selectedPopover.innerHTML = l, this.selectedPopoverContainer = this.selectedPopover.querySelector(".ms__selected-popover-body");
|
|
2356
2789
|
}
|
|
2357
2790
|
if (!this.selectedPopoverContainer) return;
|
|
2358
|
-
const r = (this.options.badgeHeight ?? 36) + 4,
|
|
2791
|
+
const r = (this.options.badgeHeight ?? 36) + 4, a = this.options.virtualScrollBuffer ?? 10;
|
|
2359
2792
|
requestAnimationFrame(() => {
|
|
2360
|
-
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new
|
|
2793
|
+
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new Ke({
|
|
2361
2794
|
container: this.selectedPopoverContainer,
|
|
2362
2795
|
itemHeight: r,
|
|
2363
2796
|
items: e,
|
|
2364
|
-
renderItem: (
|
|
2365
|
-
bufferSize:
|
|
2797
|
+
renderItem: (n) => this.renderBadgeHTML(n, { displayMode: this.options.badgesDisplayMode || "badges", isInPopover: !0 }),
|
|
2798
|
+
bufferSize: a,
|
|
2366
2799
|
onVisibleRangeChange: () => {
|
|
2367
2800
|
this.attachBadgeTooltips(this.selectedPopoverContainer);
|
|
2368
2801
|
}
|
|
@@ -2383,22 +2816,22 @@ class xs {
|
|
|
2383
2816
|
let i;
|
|
2384
2817
|
const r = t.isInPopover ? this.options.renderSelectedItemContentCallback : void 0;
|
|
2385
2818
|
if (r) {
|
|
2386
|
-
const
|
|
2387
|
-
i = typeof
|
|
2819
|
+
const c = r(e);
|
|
2820
|
+
i = typeof c == "string" ? c : c.outerHTML;
|
|
2388
2821
|
} else if (this.options.renderBadgeContentCallback) {
|
|
2389
|
-
const
|
|
2390
|
-
i = typeof
|
|
2822
|
+
const c = this.options.renderBadgeContentCallback(e, t);
|
|
2823
|
+
i = typeof c == "string" ? c : c.outerHTML;
|
|
2391
2824
|
} else
|
|
2392
2825
|
i = this.getItemBadgeDisplayValue(e);
|
|
2393
|
-
const
|
|
2394
|
-
let
|
|
2395
|
-
if (
|
|
2396
|
-
const
|
|
2397
|
-
|
|
2826
|
+
const a = t.isInPopover ? this.options.getSelectedItemClassCallback || this.options.getBadgeClassCallback : this.options.getBadgeClassCallback;
|
|
2827
|
+
let n = "ms__badge";
|
|
2828
|
+
if (a) {
|
|
2829
|
+
const c = a(e), d = Array.isArray(c) ? c : [c];
|
|
2830
|
+
n += " " + d.filter((p) => p).join(" ");
|
|
2398
2831
|
}
|
|
2399
2832
|
const l = this.getItemBadgeDisplayValue(e);
|
|
2400
2833
|
return `
|
|
2401
|
-
<div class="${
|
|
2834
|
+
<div class="${n}">
|
|
2402
2835
|
<span class="ms__badge-text">${i}</span>
|
|
2403
2836
|
<button type="button" class="ms__badge-remove" data-value="${s}" aria-label="Remove ${l}"></button>
|
|
2404
2837
|
</div>
|
|
@@ -2420,7 +2853,7 @@ class xs {
|
|
|
2420
2853
|
this.selectedPopoverCleanup = this.anchorFloatingPanel(this.selectedPopover, {
|
|
2421
2854
|
getPlacement: () => this.selectedPopoverPlacement,
|
|
2422
2855
|
setPlacement: (e) => {
|
|
2423
|
-
this.selectedPopoverPlacement = e,
|
|
2856
|
+
this.selectedPopoverPlacement = e, R.debug(`[${this.instanceId}] Locked popover placement:`, e);
|
|
2424
2857
|
}
|
|
2425
2858
|
});
|
|
2426
2859
|
}
|
|
@@ -2451,11 +2884,20 @@ class xs {
|
|
|
2451
2884
|
getSelected() {
|
|
2452
2885
|
return Array.from(this.selectedOptions.values());
|
|
2453
2886
|
}
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2887
|
+
/**
|
|
2888
|
+
* Set the selection programmatically. **Silent by default** — it does not fire
|
|
2889
|
+
* `select`/`deselect`/`change` (so restoring saved state, cascade resets, or a
|
|
2890
|
+
* server-authoritative correction can't loop back or trip "user changed it"
|
|
2891
|
+
* handlers). Pass `{ notify: true }` to announce the result as a **single
|
|
2892
|
+
* aggregate `change`** — for a deliberate user gesture (e.g. an action button)
|
|
2893
|
+
* that should reach the same listeners a manual pick does, without the per-item
|
|
2894
|
+
* `select`/`deselect` flood a bulk change would otherwise cause.
|
|
2895
|
+
*/
|
|
2896
|
+
setSelected(e, t = {}) {
|
|
2897
|
+
this.selectedValues = new Set(e.map((s) => String(s))), this.selectedOptions.clear(), e.forEach((s) => {
|
|
2898
|
+
const i = String(s), r = this.allOptions.find((a) => String(this.getItemValue(a)) === i);
|
|
2899
|
+
r && this.selectedOptions.set(i, r);
|
|
2900
|
+
}), this.renderDropdown(), this.renderBadges(), this.updateHiddenInput(), t.notify && this.options.onChange && this.options.onChange(this.getSelected());
|
|
2459
2901
|
}
|
|
2460
2902
|
/**
|
|
2461
2903
|
* Merge a partial config update into the live picker without tearing down the DOM.
|
|
@@ -2471,13 +2913,15 @@ class xs {
|
|
|
2471
2913
|
updateOptions(e) {
|
|
2472
2914
|
const t = !!this.hint, s = "searchHint" in e ? !!e.searchHint : t;
|
|
2473
2915
|
if (t !== s) return !1;
|
|
2474
|
-
|
|
2916
|
+
Object.assign(this.options, e);
|
|
2917
|
+
const i = "pathMember" in e || "getPathCallback" in e || "parentPathMember" in e || "levelMember" in e || "hasChildrenMember" in e || "treePathSeparator" in e || "isTreeEnabled" in e || "isSelectableMember" in e || "getIsSelectableCallback" in e;
|
|
2918
|
+
if ("options" in e && e.options !== void 0 ? (this.allOptions = e.options, this.reconcileSelectedOptions(), this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]) : i && (this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]), this.element.classList.toggle(
|
|
2475
2919
|
"ms--no-checkboxes",
|
|
2476
2920
|
!this.options.isCheckboxesShown || !this.options.isMultipleEnabled
|
|
2477
2921
|
), "badgesPosition" in e) {
|
|
2478
2922
|
this.effectiveBadgesPosition = this.options.badgesPosition || "bottom", this.isRTL && (this.effectiveBadgesPosition === "left" ? this.effectiveBadgesPosition = "right" : this.effectiveBadgesPosition === "right" && (this.effectiveBadgesPosition = "left"));
|
|
2479
|
-
const
|
|
2480
|
-
|
|
2923
|
+
const r = this.element.querySelector(".ms__wrapper");
|
|
2924
|
+
r == null || r.classList.toggle(
|
|
2481
2925
|
"ms__wrapper--inline",
|
|
2482
2926
|
this.effectiveBadgesPosition === "left" || this.effectiveBadgesPosition === "right"
|
|
2483
2927
|
);
|
|
@@ -2511,7 +2955,7 @@ class xs {
|
|
|
2511
2955
|
spawnTooltip(e) {
|
|
2512
2956
|
var r;
|
|
2513
2957
|
(r = this.tooltips.get(e.id)) == null || r.destroy();
|
|
2514
|
-
const t = this.element.getRootNode(), s = t instanceof ShadowRoot ? t : null, i = new
|
|
2958
|
+
const t = this.element.getRootNode(), s = t instanceof ShadowRoot ? t : null, i = new Ts({
|
|
2515
2959
|
trigger: e.trigger,
|
|
2516
2960
|
container: this.options.container ?? s ?? document.body,
|
|
2517
2961
|
content: e.content,
|
|
@@ -2542,36 +2986,36 @@ ${s}` : t;
|
|
|
2542
2986
|
attachBadgeTooltips(e) {
|
|
2543
2987
|
if (!this.options.isBadgeTooltipsEnabled) return;
|
|
2544
2988
|
const t = !!e, s = e || this.badgesContainer, i = t ? "popover-" : "";
|
|
2545
|
-
if (s.querySelectorAll(".ms__badge:not(.ms__badge--more)").forEach((
|
|
2546
|
-
const
|
|
2547
|
-
if (!
|
|
2548
|
-
const l =
|
|
2549
|
-
if (!
|
|
2550
|
-
const
|
|
2989
|
+
if (s.querySelectorAll(".ms__badge:not(.ms__badge--more)").forEach((a) => {
|
|
2990
|
+
const n = a.querySelector(".ms__badge-remove");
|
|
2991
|
+
if (!n) return;
|
|
2992
|
+
const l = n.dataset.value, c = this.selectedOptions.get(l);
|
|
2993
|
+
if (!c) return;
|
|
2994
|
+
const d = `${i}${l}`, p = `${i}${l}-remove`, u = a.querySelector(".ms__badge-text");
|
|
2551
2995
|
u && this.spawnTooltip({
|
|
2552
|
-
id:
|
|
2996
|
+
id: d,
|
|
2553
2997
|
trigger: u,
|
|
2554
|
-
content: this.buildBadgeTooltipContent(
|
|
2998
|
+
content: this.buildBadgeTooltipContent(c)
|
|
2555
2999
|
});
|
|
2556
|
-
const m = this.getItemBadgeDisplayValue(
|
|
3000
|
+
const m = this.getItemBadgeDisplayValue(c);
|
|
2557
3001
|
this.spawnTooltip({
|
|
2558
3002
|
id: p,
|
|
2559
|
-
trigger:
|
|
2560
|
-
content: this.buildRemoveButtonTooltipText(m,
|
|
3003
|
+
trigger: n,
|
|
3004
|
+
content: this.buildRemoveButtonTooltipText(m, c),
|
|
2561
3005
|
// Keep parent badge tooltip from overlapping the remove-button tooltip.
|
|
2562
3006
|
onBeforeShow: () => {
|
|
2563
3007
|
var b;
|
|
2564
|
-
return (b = this.tooltips.get(
|
|
3008
|
+
return (b = this.tooltips.get(d)) == null ? void 0 : b.hideImmediate();
|
|
2565
3009
|
}
|
|
2566
3010
|
});
|
|
2567
3011
|
}), !t) {
|
|
2568
|
-
const
|
|
2569
|
-
if (
|
|
2570
|
-
const l = this.options.badgesMaxVisible || 3,
|
|
3012
|
+
const a = this.badgesContainer.querySelector(".ms__badge--more"), n = a == null ? void 0 : a.querySelector(".ms__badge-remove");
|
|
3013
|
+
if (n && n.dataset.action === "remove-hidden") {
|
|
3014
|
+
const l = this.options.badgesMaxVisible || 3, c = this.selectedOptions.size - l;
|
|
2571
3015
|
this.spawnTooltip({
|
|
2572
3016
|
id: "more-badge-remove",
|
|
2573
|
-
trigger:
|
|
2574
|
-
content: this.buildRemoveButtonTooltipText(`${
|
|
3017
|
+
trigger: n,
|
|
3018
|
+
content: this.buildRemoveButtonTooltipText(`${c} hidden items`)
|
|
2575
3019
|
});
|
|
2576
3020
|
}
|
|
2577
3021
|
}
|
|
@@ -2596,11 +3040,11 @@ ${s}` : t;
|
|
|
2596
3040
|
if (i < 0) return;
|
|
2597
3041
|
const r = this.filteredOptions[i];
|
|
2598
3042
|
if (!r) return;
|
|
2599
|
-
const
|
|
2600
|
-
|
|
3043
|
+
const a = this.buildOptionTooltipContent(r);
|
|
3044
|
+
a && this.spawnTooltip({
|
|
2601
3045
|
id: `option-${i}`,
|
|
2602
3046
|
trigger: s,
|
|
2603
|
-
content:
|
|
3047
|
+
content: a,
|
|
2604
3048
|
// Default to `top-start` (anchored to the row's start edge) so the tooltip doesn't
|
|
2605
3049
|
// center on a full-width row. Falls through to the badge settings for delay/offset.
|
|
2606
3050
|
placement: this.options.optionTooltipPlacement ?? "top-start",
|
|
@@ -2623,15 +3067,15 @@ ${s}` : t;
|
|
|
2623
3067
|
}
|
|
2624
3068
|
attachActionButtonTooltips() {
|
|
2625
3069
|
this.dropdown.querySelectorAll(".ms__action-btn").forEach((t) => {
|
|
2626
|
-
var
|
|
3070
|
+
var c, d;
|
|
2627
3071
|
const s = t, i = s.dataset.action;
|
|
2628
3072
|
if (!i) return;
|
|
2629
|
-
const r = parseInt(s.dataset.buttonIndex || "-1"),
|
|
2630
|
-
if (!n) return;
|
|
2631
|
-
const a = n.getTooltipCallback ? n.getTooltipCallback(this) : n.tooltip;
|
|
3073
|
+
const r = parseInt(s.dataset.buttonIndex || "-1"), a = r >= 0 ? (c = this.options.actionButtons) == null ? void 0 : c[r] : (d = this.options.actionButtons) == null ? void 0 : d.find((p) => p.action === i);
|
|
2632
3074
|
if (!a) return;
|
|
3075
|
+
const n = a.getTooltipCallback ? a.getTooltipCallback(this) : a.tooltip;
|
|
3076
|
+
if (!n) return;
|
|
2633
3077
|
const l = `action-${r >= 0 ? r : i}`;
|
|
2634
|
-
this.spawnTooltip({ id: l, trigger: s, content:
|
|
3078
|
+
this.spawnTooltip({ id: l, trigger: s, content: n });
|
|
2635
3079
|
});
|
|
2636
3080
|
}
|
|
2637
3081
|
/**
|
|
@@ -2657,11 +3101,11 @@ ${s}` : t;
|
|
|
2657
3101
|
// PUBLIC API
|
|
2658
3102
|
// ========================================================================
|
|
2659
3103
|
destroy() {
|
|
2660
|
-
this.destroyAllTooltips(), this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0), this.abortInFlightSearch(), this.dropdownCleanup && this.dropdownCleanup(), this.hintCleanup && this.hintCleanup(), this.selectedPopoverCleanup && this.selectedPopoverCleanup(), this.documentClickHandler && (document.removeEventListener("click", this.documentClickHandler), this.documentClickHandler = null), this.documentKeydownHandler && (document.removeEventListener("keydown", this.documentKeydownHandler), this.documentKeydownHandler = null), this.virtualScroll && (this.virtualScroll.destroy(), this.virtualScroll = null), this.dropdown && this.dropdown.remove(), this.hint && this.hint.remove(), this.selectedPopover && this.selectedPopover.remove(), this.element.innerHTML = "", this.element.classList.remove("ms", "ms--open", "ms--no-checkboxes"),
|
|
3104
|
+
this.destroyAllTooltips(), this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0), this.abortInFlightSearch(), this.dropdownCleanup && this.dropdownCleanup(), this.hintCleanup && this.hintCleanup(), this.selectedPopoverCleanup && this.selectedPopoverCleanup(), this.documentClickHandler && (document.removeEventListener("click", this.documentClickHandler), this.documentClickHandler = null), this.documentKeydownHandler && (document.removeEventListener("keydown", this.documentKeydownHandler), this.documentKeydownHandler = null), this.virtualScroll && (this.virtualScroll.destroy(), this.virtualScroll = null), this.dropdown && this.dropdown.remove(), this.hint && this.hint.remove(), this.selectedPopover && this.selectedPopover.remove(), this.element.innerHTML = "", this.element.classList.remove("ms", "ms--open", "ms--no-checkboxes"), de.info(`[${this.instanceId}] Component destroyed`);
|
|
2661
3105
|
}
|
|
2662
3106
|
}
|
|
2663
|
-
const Cs = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: 10px;font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#e5e7eb, #3a3a3a));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: var(--base-hover-bg, var(--ms-input-bg));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-input-bg));--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: var(--ms-primary-bg-hover);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-remove-bg: var(--ms-text-color-3);--ms-badge-counter-remove-bg-hover: var(--ms-text-color-1);--ms-badge-counter-remove-color: var(--ms-text-color-on-accent);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-input-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-input-padding-right: calc(4 * var(--ms-rem));--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: rgba(107, 114, 128, .05);--ms-input-size-xs-font: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-input-size-xs-padding-v: calc(.4 * var(--ms-rem));--ms-input-size-xs-padding-h: calc(.8 * var(--ms-rem));--ms-input-size-xs-height: calc(var(--base-input-size-xs-height, 3.1) * var(--ms-rem));--ms-input-size-sm-font: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-size-sm-padding-v: calc(.5 * var(--ms-rem));--ms-input-size-sm-padding-h: calc(1 * var(--ms-rem));--ms-input-size-sm-height: calc(var(--base-input-size-sm-height, 3.3) * var(--ms-rem));--ms-input-size-md-font: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-size-md-padding-v: calc(.8 * var(--ms-rem));--ms-input-size-md-padding-h: calc(1.2 * var(--ms-rem));--ms-input-size-md-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-size-lg-font: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-input-size-lg-padding-v: calc(1 * var(--ms-rem));--ms-input-size-lg-padding-h: calc(1.4 * var(--ms-rem));--ms-input-size-lg-height: calc(var(--base-input-size-lg-height, 3.8) * var(--ms-rem));--ms-input-size-xl-font: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-input-size-xl-padding-v: calc(1.2 * var(--ms-rem));--ms-input-size-xl-padding-h: calc(1.6 * var(--ms-rem));--ms-input-size-xl-height: calc(var(--base-input-size-xl-height, 4.1) * var(--ms-rem));--ms-toggle-right: calc(1.2 * var(--ms-rem));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-center-y: translateY(-50%);--ms-transform-rotate-180: 180deg;--ms-counter-offset: calc(3.2 * var(--ms-rem));--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: calc(.2 * var(--ms-rem));--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border: var(--ms-border);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: 1px solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-border);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1 * var(--ms-rem));--ms-icon-remove: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 6L18 18M18 6L6 18' stroke='black' stroke-width='2.5' stroke-linecap='round' fill='none'/></svg>");--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-count-clear-color-hover: var(--ms-accent-color);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--ms-icon-remove);--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-z-index-popover: 10000;--ms-selected-popover-width: calc(32 * var(--ms-rem));--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-selected-popover-close-color-hover: var(--ms-accent-color);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{position:relative;display:flex;align-items:center}.ms__input{box-sizing:border-box;width:100%;font-family:inherit;height:var(--ms-input-height);padding:var(--ms-input-padding);padding-right:var(--ms-input-padding-right);font-size:var(--ms-input-font-size);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);background:var(--ms-input-bg);color:var(--ms-input-color);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input:hover:not(:focus):not(:disabled){border:var(--ms-input-border-hover)}.ms__input:focus{outline:none;border:var(--ms-input-border-focus)}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__input.ms__input--xs{font-size:var(--ms-input-size-xs-font);padding:var(--ms-input-size-xs-padding-v) var(--ms-input-size-xs-padding-h);padding-right:calc(var(--ms-input-size-xs-padding-h) * 2.5);height:var(--ms-input-size-xs-height)}.ms__input.ms__input--sm{font-size:var(--ms-input-size-sm-font);padding:var(--ms-input-size-sm-padding-v) var(--ms-input-size-sm-padding-h);padding-right:calc(var(--ms-input-size-sm-padding-h) * 2.5);height:var(--ms-input-size-sm-height)}.ms__input.ms__input--lg{font-size:var(--ms-input-size-lg-font);padding:var(--ms-input-size-lg-padding-v) var(--ms-input-size-lg-padding-h);padding-right:calc(var(--ms-input-size-lg-padding-h) * 2.5);height:var(--ms-input-size-lg-height)}.ms__input.ms__input--xl{font-size:var(--ms-input-size-xl-font);padding:var(--ms-input-size-xl-padding-v) var(--ms-input-size-xl-padding-h);padding-right:calc(var(--ms-input-size-xl-padding-h) * 2.5);height:var(--ms-input-size-xl-height)}.ms__toggle{position:absolute;right:var(--ms-toggle-right);top:50%;transform:var(--ms-transform-center-y);pointer-events:none;color:var(--ms-toggle-icon-color);transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{transform:var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));color:var(--ms-toggle-icon-color-open)}.ms__counter{position:absolute;right:var(--ms-counter-offset);top:50%;transform:var(--ms-transform-center-y);padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover))}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown-inner{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow-y:visible}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__selected-popover{display:none;position:fixed;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed)}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input{opacity:var(--ms-disabled-input-opacity);cursor:not-allowed;background:var(--ms-input-bg-disabled)}.ms--disabled .ms__toggle{opacity:var(--ms-disabled-input-opacity)}.ms--no-checkboxes .ms__option{gap:0;padding-left:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-left:0}}@layer component;@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-right:none;border-radius:var(--ms-badge-border-radius) 0 0 var(--ms-badge-border-radius);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-left:none;border-radius:0 var(--ms-badge-border-radius) var(--ms-badge-border-radius) 0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-right:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-left:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover)}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-right:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer}.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit);border-left:var(--ms-option-border-matched)}.ms__option--selected{background:var(--ms-option-bg-selected)}.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched);border-left:var(--ms-option-border-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-right:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-left:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;left:50%;top:40%;width:30%;height:55%;transform:translate(-50%,-50%) rotate(45deg);border:solid var(--ms-checkbox-checkmark-color);border-width:0 2px 2px 0}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed)}.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__input-wrapper{direction:rtl}.ms--rtl .ms__input{text-align:right;padding-left:var(--ms-input-padding-right);padding-right:var(--ms-input-padding-h)}.ms--rtl .ms__toggle{left:var(--ms-toggle-right)!important;right:auto!important}.ms--rtl .ms__counter{left:var(--ms-counter-offset)!important;right:auto!important}.ms--rtl .ms__dropdown{direction:rtl;text-align:right}.ms--rtl .ms__option{flex-direction:row-reverse}.ms--rtl .ms__checkbox{margin-left:var(--ms-spacing-sm);margin-right:0}.ms--rtl .ms__option-content{text-align:right}.ms--rtl .ms__option-icon{margin-left:var(--ms-spacing-xs);margin-right:0}.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__badge{flex-direction:row-reverse}.ms--rtl .ms__badge-remove{border-radius:var(--ms-badge-border-radius) 0 0 var(--ms-badge-border-radius);border-left:var(--ms-badge-remove-border);border-right:none}.ms--rtl .ms__badge-text{border-radius:0 var(--ms-badge-border-radius) var(--ms-badge-border-radius) 0;border-right:var(--ms-badge-text-border);border-left:none}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}.ms--rtl .ms__counter-wrapper{flex-direction:row-reverse}.ms--rtl .ms__selected-popover{direction:rtl;text-align:right}.ms--rtl .ms__actions{direction:rtl}.ms--rtl .ms__group-label,.ms--rtl .ms__empty{text-align:right}.ms--rtl .ms__hint{direction:rtl;text-align:right}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, Ss = typeof HTMLElement < "u" ? HTMLElement : class {
|
|
2664
|
-
},
|
|
3107
|
+
const Bs = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: 10px;font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#e5e7eb, #3a3a3a));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: var(--base-hover-bg, var(--ms-input-bg));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-input-bg));--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: var(--ms-primary-bg-hover);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-remove-bg: var(--ms-text-color-3);--ms-badge-counter-remove-bg-hover: var(--ms-text-color-1);--ms-badge-counter-remove-color: var(--ms-text-color-on-accent);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-input-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-input-padding-right: calc(4 * var(--ms-rem));--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: rgba(107, 114, 128, .05);--ms-input-size-xs-font: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-input-size-xs-padding-v: calc(.4 * var(--ms-rem));--ms-input-size-xs-padding-h: calc(.8 * var(--ms-rem));--ms-input-size-xs-height: calc(var(--base-input-size-xs-height, 3.1) * var(--ms-rem));--ms-input-size-sm-font: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-size-sm-padding-v: calc(.5 * var(--ms-rem));--ms-input-size-sm-padding-h: calc(1 * var(--ms-rem));--ms-input-size-sm-height: calc(var(--base-input-size-sm-height, 3.3) * var(--ms-rem));--ms-input-size-md-font: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-size-md-padding-v: calc(.8 * var(--ms-rem));--ms-input-size-md-padding-h: calc(1.2 * var(--ms-rem));--ms-input-size-md-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-size-lg-font: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-input-size-lg-padding-v: calc(1 * var(--ms-rem));--ms-input-size-lg-padding-h: calc(1.4 * var(--ms-rem));--ms-input-size-lg-height: calc(var(--base-input-size-lg-height, 3.8) * var(--ms-rem));--ms-input-size-xl-font: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-input-size-xl-padding-v: calc(1.2 * var(--ms-rem));--ms-input-size-xl-padding-h: calc(1.6 * var(--ms-rem));--ms-input-size-xl-height: calc(var(--base-input-size-xl-height, 4.1) * var(--ms-rem));--ms-toggle-right: calc(1.2 * var(--ms-rem));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-center-y: translateY(-50%);--ms-transform-rotate-180: 180deg;--ms-counter-offset: calc(3.2 * var(--ms-rem));--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: calc(.2 * var(--ms-rem));--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1 * var(--ms-rem));--ms-icon-remove: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 6L18 18M18 6L6 18' stroke='black' stroke-width='2.5' stroke-linecap='round' fill='none'/></svg>");--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-count-clear-color-hover: var(--ms-accent-color);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--ms-icon-remove);--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-z-index-popover: 10000;--ms-selected-popover-width: calc(32 * var(--ms-rem));--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-selected-popover-close-color-hover: var(--ms-accent-color);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{position:relative;display:flex;align-items:center}.ms__input{box-sizing:border-box;width:100%;font-family:inherit;height:var(--ms-input-height);padding:var(--ms-input-padding);padding-right:var(--ms-input-padding-right);font-size:var(--ms-input-font-size);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);background:var(--ms-input-bg);color:var(--ms-input-color);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input:hover:not(:focus):not(:disabled){border:var(--ms-input-border-hover)}.ms__input:focus{outline:none;border:var(--ms-input-border-focus)}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__input.ms__input--xs{font-size:var(--ms-input-size-xs-font);padding:var(--ms-input-size-xs-padding-v) var(--ms-input-size-xs-padding-h);padding-right:calc(var(--ms-input-size-xs-padding-h) * 2.5);height:var(--ms-input-size-xs-height)}.ms__input.ms__input--sm{font-size:var(--ms-input-size-sm-font);padding:var(--ms-input-size-sm-padding-v) var(--ms-input-size-sm-padding-h);padding-right:calc(var(--ms-input-size-sm-padding-h) * 2.5);height:var(--ms-input-size-sm-height)}.ms__input.ms__input--lg{font-size:var(--ms-input-size-lg-font);padding:var(--ms-input-size-lg-padding-v) var(--ms-input-size-lg-padding-h);padding-right:calc(var(--ms-input-size-lg-padding-h) * 2.5);height:var(--ms-input-size-lg-height)}.ms__input.ms__input--xl{font-size:var(--ms-input-size-xl-font);padding:var(--ms-input-size-xl-padding-v) var(--ms-input-size-xl-padding-h);padding-right:calc(var(--ms-input-size-xl-padding-h) * 2.5);height:var(--ms-input-size-xl-height)}.ms__toggle{position:absolute;right:var(--ms-toggle-right);top:50%;transform:var(--ms-transform-center-y);pointer-events:none;color:var(--ms-toggle-icon-color);transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{transform:var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));color:var(--ms-toggle-icon-color-open)}.ms__counter{position:absolute;right:var(--ms-counter-offset);top:50%;transform:var(--ms-transform-center-y);padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover))}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown-inner{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow-y:visible}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__selected-popover{display:none;position:fixed;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed)}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input{opacity:var(--ms-disabled-input-opacity);cursor:not-allowed;background:var(--ms-input-bg-disabled)}.ms--disabled .ms__toggle{opacity:var(--ms-disabled-input-opacity)}.ms--no-checkboxes .ms__option{gap:0;padding-left:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-left:0}}@layer component;@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-right:none;border-radius:var(--ms-badge-border-radius) 0 0 var(--ms-badge-border-radius);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-left:none;border-radius:0 var(--ms-badge-border-radius) var(--ms-badge-border-radius) 0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-right:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-left:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover)}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-right:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit);border-left:var(--ms-option-border-matched)}.ms__option--selected{background:var(--ms-option-bg-selected)}.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched);border-left:var(--ms-option-border-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-right:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-left:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;left:50%;top:40%;width:30%;height:55%;transform:translate(-50%,-50%) rotate(45deg);border:solid var(--ms-checkbox-checkmark-color);border-width:0 var(--ms-checkbox-checkmark-thickness, 2px) var(--ms-checkbox-checkmark-thickness, 2px) 0}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;top:50%;left:50%;width:55%;height:0;transform:translate(-50%,-50%);border:none;border-bottom:var(--ms-checkbox-checkmark-thickness, 2px) solid var(--ms-checkbox-checkmark-color)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__input-wrapper{direction:rtl}.ms--rtl .ms__input{text-align:right;padding-left:var(--ms-input-padding-right);padding-right:var(--ms-input-padding-h)}.ms--rtl .ms__toggle{left:var(--ms-toggle-right)!important;right:auto!important}.ms--rtl .ms__counter{left:var(--ms-counter-offset)!important;right:auto!important}.ms--rtl .ms__dropdown{direction:rtl;text-align:right}.ms--rtl .ms__option{flex-direction:row-reverse}.ms--rtl .ms__checkbox{margin-left:var(--ms-spacing-sm);margin-right:0}.ms--rtl .ms__option-content{text-align:right}.ms--rtl .ms__option-icon{margin-left:var(--ms-spacing-xs);margin-right:0}.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__badge{flex-direction:row-reverse}.ms--rtl .ms__badge-remove{border-radius:var(--ms-badge-border-radius) 0 0 var(--ms-badge-border-radius);border-left:var(--ms-badge-remove-border);border-right:none}.ms--rtl .ms__badge-text{border-radius:0 var(--ms-badge-border-radius) var(--ms-badge-border-radius) 0;border-right:var(--ms-badge-text-border);border-left:none}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}.ms--rtl .ms__counter-wrapper{flex-direction:row-reverse}.ms--rtl .ms__selected-popover{direction:rtl;text-align:right}.ms--rtl .ms__actions{direction:rtl}.ms--rtl .ms__group-label,.ms--rtl .ms__empty{text-align:right}.ms--rtl .ms__hint{direction:rtl;text-align:right}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, $s = typeof HTMLElement < "u" ? HTMLElement : class {
|
|
3108
|
+
}, Ae = [
|
|
2665
3109
|
// Strings
|
|
2666
3110
|
{ attr: "search-hint", key: "searchHint", parser: "string-or-undefined" },
|
|
2667
3111
|
{ attr: "search-placeholder", key: "searchPlaceholder", parser: "string", default: "Search..." },
|
|
@@ -2680,8 +3124,30 @@ const Cs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
2680
3124
|
{ attr: "search-value-member", key: "searchValueMember", parser: "string-or-undefined" },
|
|
2681
3125
|
{ attr: "icon-member", key: "iconMember", parser: "string-or-undefined" },
|
|
2682
3126
|
{ attr: "subtitle-member", key: "subtitleMember", parser: "string-or-undefined" },
|
|
3127
|
+
{ attr: "full-title-member", key: "fullTitleMember", parser: "string-or-undefined" },
|
|
2683
3128
|
{ attr: "group-member", key: "groupMember", parser: "string-or-undefined" },
|
|
2684
3129
|
{ attr: "disabled-member", key: "disabledMember", parser: "string-or-undefined" },
|
|
3130
|
+
// Tree of options (presence of path-member / getPathCallback auto-enables tree mode)
|
|
3131
|
+
{ attr: "path-member", key: "pathMember", parser: "string-or-undefined" },
|
|
3132
|
+
{ attr: "parent-path-member", key: "parentPathMember", parser: "string-or-undefined" },
|
|
3133
|
+
{ attr: "level-member", key: "levelMember", parser: "string-or-undefined" },
|
|
3134
|
+
{ attr: "has-children-member", key: "hasChildrenMember", parser: "string-or-undefined" },
|
|
3135
|
+
{ attr: "is-selectable-member", key: "isSelectableMember", parser: "string-or-undefined" },
|
|
3136
|
+
{ attr: "tree-path-separator", key: "treePathSeparator", parser: "string", default: "." },
|
|
3137
|
+
{
|
|
3138
|
+
attr: "checkbox-mode",
|
|
3139
|
+
key: "checkboxMode",
|
|
3140
|
+
parser: "enum",
|
|
3141
|
+
enumValues: ["independent", "cascade"],
|
|
3142
|
+
default: "independent"
|
|
3143
|
+
},
|
|
3144
|
+
{
|
|
3145
|
+
attr: "cascade-select-policy",
|
|
3146
|
+
key: "cascadeSelectPolicy",
|
|
3147
|
+
parser: "enum",
|
|
3148
|
+
enumValues: ["rolled-up", "leaves", "all"],
|
|
3149
|
+
default: "rolled-up"
|
|
3150
|
+
},
|
|
2685
3151
|
// Enums
|
|
2686
3152
|
{
|
|
2687
3153
|
attr: "badges-display-mode",
|
|
@@ -2793,11 +3259,12 @@ const Cs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
2793
3259
|
{ attr: "close-on-select", key: "isCloseOnSelect", parser: "bool-default-false" },
|
|
2794
3260
|
{ attr: "allow-add-new", key: "isAddNewAllowed", parser: "bool-default-false" },
|
|
2795
3261
|
{ attr: "show-counter", key: "isCounterShown", parser: "bool-default-false" },
|
|
3262
|
+
{ attr: "show-badge-full-title", key: "isBadgeFullTitleShown", parser: "bool-default-false" },
|
|
2796
3263
|
{ attr: "enable-virtual-scroll", key: "isVirtualScrollEnabled", parser: "bool-default-false" },
|
|
2797
3264
|
{ attr: "enable-badge-tooltips", key: "isBadgeTooltipsEnabled", parser: "bool-default-false" },
|
|
2798
3265
|
{ attr: "enable-option-tooltips", key: "isOptionTooltipsEnabled", parser: "bool-default-false" },
|
|
2799
3266
|
{ attr: "option-tooltip-follow-cursor", key: "isOptionTooltipFollowCursor", parser: "bool-default-false" }
|
|
2800
|
-
],
|
|
3267
|
+
], Rs = new Map(Ae.map((o) => [o.attr, o])), Je = [
|
|
2801
3268
|
{ key: "valueMember", field: "_valueMember" },
|
|
2802
3269
|
{ key: "displayValueMember", field: "_displayValueMember" },
|
|
2803
3270
|
{ key: "searchValueMember", field: "_searchValueMember" },
|
|
@@ -2805,7 +3272,7 @@ const Cs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
2805
3272
|
{ key: "subtitleMember", field: "_subtitleMember" },
|
|
2806
3273
|
{ key: "groupMember", field: "_groupMember" },
|
|
2807
3274
|
{ key: "disabledMember", field: "_disabledMember" }
|
|
2808
|
-
],
|
|
3275
|
+
], Fs = [
|
|
2809
3276
|
{ key: "valueMember", member: "value" },
|
|
2810
3277
|
{ key: "displayValueMember", member: "label" },
|
|
2811
3278
|
{ key: "groupMember", member: "group" },
|
|
@@ -2813,7 +3280,7 @@ const Cs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
2813
3280
|
{ key: "subtitleMember", member: "subtitle" },
|
|
2814
3281
|
{ key: "disabledMember", member: "disabled" }
|
|
2815
3282
|
];
|
|
2816
|
-
function
|
|
3283
|
+
function Ze(o, e) {
|
|
2817
3284
|
if (e === null || e === "")
|
|
2818
3285
|
switch (o.parser) {
|
|
2819
3286
|
case "bool-default-true":
|
|
@@ -2839,83 +3306,88 @@ function Ue(o, e) {
|
|
|
2839
3306
|
return e === "true";
|
|
2840
3307
|
}
|
|
2841
3308
|
}
|
|
2842
|
-
const
|
|
2843
|
-
function
|
|
2844
|
-
return Array.from(
|
|
3309
|
+
const Pe = /* @__PURE__ */ new Set();
|
|
3310
|
+
function gt() {
|
|
3311
|
+
return Array.from(Pe);
|
|
2845
3312
|
}
|
|
2846
|
-
class
|
|
3313
|
+
class Be extends $s {
|
|
2847
3314
|
constructor() {
|
|
2848
3315
|
super();
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
3316
|
+
h(this, "picker");
|
|
3317
|
+
h(this, "containerElement");
|
|
3318
|
+
h(this, "shadow");
|
|
3319
|
+
h(this, "internals");
|
|
2853
3320
|
// Properties for complex data (not attributes)
|
|
2854
|
-
|
|
2855
|
-
|
|
3321
|
+
h(this, "_options");
|
|
3322
|
+
h(this, "_hasDeclarativeOptions", !1);
|
|
2856
3323
|
// Member/Callback properties
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
3324
|
+
h(this, "_valueMember");
|
|
3325
|
+
h(this, "_getValueCallback");
|
|
3326
|
+
h(this, "_displayValueMember");
|
|
3327
|
+
h(this, "_getDisplayValueCallback");
|
|
3328
|
+
h(this, "_getBadgeDisplayCallback");
|
|
3329
|
+
h(this, "_getBadgeClassCallback");
|
|
3330
|
+
h(this, "_customStylesCallback");
|
|
3331
|
+
h(this, "_searchValueMember");
|
|
3332
|
+
h(this, "_getSearchValueCallback");
|
|
3333
|
+
h(this, "_iconMember");
|
|
3334
|
+
h(this, "_getIconCallback");
|
|
3335
|
+
h(this, "_subtitleMember");
|
|
3336
|
+
h(this, "_getSubtitleCallback");
|
|
3337
|
+
h(this, "_getFullTitleCallback");
|
|
3338
|
+
h(this, "_groupMember");
|
|
3339
|
+
h(this, "_getGroupCallback");
|
|
3340
|
+
h(this, "_renderGroupLabelContentCallback");
|
|
3341
|
+
h(this, "_disabledMember");
|
|
3342
|
+
h(this, "_getDisabledCallback");
|
|
3343
|
+
// Tree of options
|
|
3344
|
+
h(this, "_getPathCallback");
|
|
3345
|
+
h(this, "_isTreeEnabled");
|
|
3346
|
+
h(this, "_getIsSelectableCallback");
|
|
2875
3347
|
// Value formatting callbacks
|
|
2876
|
-
|
|
3348
|
+
h(this, "_getValueFormatCallback");
|
|
2877
3349
|
// Tooltip callbacks
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
3350
|
+
h(this, "_getBadgeTooltipCallback");
|
|
3351
|
+
h(this, "_getOptionTooltipCallback");
|
|
3352
|
+
h(this, "_getRemoveButtonTooltipCallback");
|
|
2881
3353
|
// Custom rendering callbacks
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
3354
|
+
h(this, "_renderOptionContentCallback");
|
|
3355
|
+
h(this, "_renderBadgeContentCallback");
|
|
3356
|
+
h(this, "_renderSelectedItemContentCallback");
|
|
3357
|
+
h(this, "_getSelectedItemClassCallback");
|
|
3358
|
+
h(this, "_renderSelectedContentCallback");
|
|
2887
3359
|
// Count badge callback
|
|
2888
|
-
|
|
3360
|
+
h(this, "_getCounterCallback");
|
|
2889
3361
|
// Action buttons
|
|
2890
|
-
|
|
3362
|
+
h(this, "_actionButtons");
|
|
2891
3363
|
// Batch-update state (setAttributes): collects per-attribute changes so a group of
|
|
2892
3364
|
// attribute writes applies as a single in-place update instead of one re-render each.
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
3365
|
+
h(this, "_batchDepth", 0);
|
|
3366
|
+
h(this, "_batchPartial", {});
|
|
3367
|
+
h(this, "_batchNeedsReinit", !1);
|
|
2896
3368
|
// Event callbacks
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
3369
|
+
h(this, "_beforeSearchCallback");
|
|
3370
|
+
h(this, "_beforeSelectCallback");
|
|
3371
|
+
h(this, "_beforeDeselectCallback");
|
|
3372
|
+
h(this, "_searchCallback");
|
|
3373
|
+
h(this, "_addNewCallback");
|
|
3374
|
+
h(this, "_onSelect");
|
|
3375
|
+
h(this, "_onDeselect");
|
|
3376
|
+
h(this, "_onChange");
|
|
3377
|
+
h(this, "_declarativeSelectedValues");
|
|
2906
3378
|
if (this.shadow = this.attachShadow({ mode: "open" }), typeof this.attachInternals == "function")
|
|
2907
3379
|
try {
|
|
2908
3380
|
this.internals = this.attachInternals();
|
|
2909
3381
|
} catch {
|
|
2910
3382
|
}
|
|
2911
3383
|
const t = document.createElement("style");
|
|
2912
|
-
t.textContent =
|
|
3384
|
+
t.textContent = Bs, this.shadow.appendChild(t), requestAnimationFrame(() => {
|
|
2913
3385
|
this.setAttribute("data-ready", "");
|
|
2914
3386
|
});
|
|
2915
3387
|
}
|
|
2916
3388
|
static get observedAttributes() {
|
|
2917
3389
|
return [
|
|
2918
|
-
...
|
|
3390
|
+
...Ae.map((t) => t.attr),
|
|
2919
3391
|
// Out-of-table attributes (handled by special-case logic in attributeChangedCallback)
|
|
2920
3392
|
"initial-values",
|
|
2921
3393
|
"show-debug-info"
|
|
@@ -2933,30 +3405,30 @@ class Me extends Ss {
|
|
|
2933
3405
|
(t = this.picker) == null || t.clearAll();
|
|
2934
3406
|
}
|
|
2935
3407
|
connectedCallback() {
|
|
2936
|
-
|
|
3408
|
+
Pe.add(this), this.render();
|
|
2937
3409
|
const t = this.parseDeclarativeOptions();
|
|
2938
|
-
t && (this._options && this._options.length > 0 &&
|
|
3410
|
+
t && (this._options && this._options.length > 0 && O.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), this._options = t, this._hasDeclarativeOptions = !0), this.initializePicker();
|
|
2939
3411
|
}
|
|
2940
3412
|
disconnectedCallback() {
|
|
2941
|
-
|
|
3413
|
+
Pe.delete(this), this.picker && this.picker.destroy();
|
|
2942
3414
|
}
|
|
2943
3415
|
attributeChangedCallback(t, s, i) {
|
|
2944
|
-
var
|
|
3416
|
+
var a;
|
|
2945
3417
|
if (s === i || !this.picker || t === "initial-values") return;
|
|
2946
3418
|
if (t === "show-debug-info") {
|
|
2947
|
-
const
|
|
2948
|
-
|
|
3419
|
+
const n = this.shadow.querySelector(".ms__debug-info");
|
|
3420
|
+
n && n.remove(), i === "true" && this.renderDebugInfo();
|
|
2949
3421
|
return;
|
|
2950
3422
|
}
|
|
2951
|
-
const r =
|
|
3423
|
+
const r = Rs.get(t);
|
|
2952
3424
|
if (r) {
|
|
2953
|
-
const
|
|
3425
|
+
const n = Ze(r, i), l = (a = Je.find((u) => u.key === r.key)) == null ? void 0 : a.field, c = n === void 0 && l ? this[l] : n;
|
|
2954
3426
|
if (this._batchDepth > 0) {
|
|
2955
|
-
this._batchPartial[r.key] =
|
|
3427
|
+
this._batchPartial[r.key] = c;
|
|
2956
3428
|
return;
|
|
2957
3429
|
}
|
|
2958
|
-
const
|
|
2959
|
-
if (this.picker.updateOptions(
|
|
3430
|
+
const d = { [r.key]: c };
|
|
3431
|
+
if (this.picker.updateOptions(d)) return;
|
|
2960
3432
|
}
|
|
2961
3433
|
if (this._batchDepth > 0) {
|
|
2962
3434
|
this._batchNeedsReinit = !0;
|
|
@@ -2980,8 +3452,8 @@ class Me extends Ss {
|
|
|
2980
3452
|
setAttributes(t) {
|
|
2981
3453
|
this._batchDepth++;
|
|
2982
3454
|
try {
|
|
2983
|
-
for (const [r,
|
|
2984
|
-
|
|
3455
|
+
for (const [r, a] of Object.entries(t))
|
|
3456
|
+
a == null || a === !1 ? this.removeAttribute(r) : this.setAttribute(r, a === !0 ? "" : String(a));
|
|
2985
3457
|
} finally {
|
|
2986
3458
|
this._batchDepth--;
|
|
2987
3459
|
}
|
|
@@ -3005,22 +3477,22 @@ class Me extends Ss {
|
|
|
3005
3477
|
s.className = "ms__debug-info";
|
|
3006
3478
|
const i = document.createElement("details"), r = document.createElement("summary");
|
|
3007
3479
|
r.textContent = "Debug Info";
|
|
3008
|
-
const
|
|
3009
|
-
|
|
3480
|
+
const a = document.createElement("div");
|
|
3481
|
+
a.className = "ms__debug-stats", i.appendChild(r), i.appendChild(a), s.appendChild(i), this.shadow.appendChild(s), this.updateDebugInfo();
|
|
3010
3482
|
}
|
|
3011
3483
|
updateDebugInfo() {
|
|
3012
3484
|
var m, b;
|
|
3013
3485
|
const t = this.shadow.querySelector(".ms__debug-stats");
|
|
3014
3486
|
if (!t || !this.picker) return;
|
|
3015
|
-
const s = "1.12.0-
|
|
3487
|
+
const s = "1.12.0-rc07", i = gt().length, a = this.picker.getSelected().length, n = ((m = this._options) == null ? void 0 : m.length) || 0, l = this.picker, c = l.isOpen || !1, d = l.searchTerm || "", p = l.isLoading || !1, u = ((b = l.filteredOptions) == null ? void 0 : b.length) || 0;
|
|
3016
3488
|
t.innerHTML = `
|
|
3017
3489
|
<span>Version: ${s}</span>
|
|
3018
3490
|
<span>Total Instances: ${i}</span>
|
|
3019
|
-
<span>Options: ${
|
|
3491
|
+
<span>Options: ${n}</span>
|
|
3020
3492
|
<span>Filtered: ${u}</span>
|
|
3021
|
-
<span>Selected: ${
|
|
3022
|
-
<span>Dropdown: ${
|
|
3023
|
-
<span>Search: ${
|
|
3493
|
+
<span>Selected: ${a}</span>
|
|
3494
|
+
<span>Dropdown: ${c ? "Open" : "Closed"}</span>
|
|
3495
|
+
<span>Search: ${d || "none"}</span>
|
|
3024
3496
|
<span>Loading: ${p ? "Yes" : "No"}</span>
|
|
3025
3497
|
`, setTimeout(() => {
|
|
3026
3498
|
this.getAttribute("show-debug-info") === "true" && this.updateDebugInfo();
|
|
@@ -3031,38 +3503,38 @@ class Me extends Ss {
|
|
|
3031
3503
|
* Returns array of options in the format expected by the picker
|
|
3032
3504
|
*/
|
|
3033
3505
|
parseDeclarativeOptions() {
|
|
3034
|
-
var r,
|
|
3506
|
+
var r, a, n, l;
|
|
3035
3507
|
const t = [], s = Array.from(this.children);
|
|
3036
3508
|
if (s.length === 0)
|
|
3037
3509
|
return null;
|
|
3038
3510
|
let i = !1;
|
|
3039
|
-
for (const
|
|
3040
|
-
if (
|
|
3041
|
-
const
|
|
3042
|
-
value:
|
|
3043
|
-
label: ((
|
|
3511
|
+
for (const c of s)
|
|
3512
|
+
if (c.tagName === "OPTION") {
|
|
3513
|
+
const d = c, p = {
|
|
3514
|
+
value: d.value || ((r = d.textContent) == null ? void 0 : r.trim()) || "",
|
|
3515
|
+
label: ((a = d.textContent) == null ? void 0 : a.trim()) || d.value || ""
|
|
3044
3516
|
};
|
|
3045
|
-
|
|
3046
|
-
} else if (
|
|
3047
|
-
const
|
|
3517
|
+
d.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(p.value)), d.hasAttribute("disabled") && (p.disabled = !0), d.hasAttribute("data-icon") && (p.icon = d.getAttribute("data-icon")), d.hasAttribute("data-subtitle") && (p.subtitle = d.getAttribute("data-subtitle")), t.push(p), i = !0;
|
|
3518
|
+
} else if (c.tagName === "OPTGROUP") {
|
|
3519
|
+
const d = c, p = d.label || d.getAttribute("label") || "Group", u = Array.from(d.querySelectorAll("option"));
|
|
3048
3520
|
for (const m of u) {
|
|
3049
3521
|
const b = {
|
|
3050
|
-
value: m.value || ((
|
|
3522
|
+
value: m.value || ((n = m.textContent) == null ? void 0 : n.trim()) || "",
|
|
3051
3523
|
label: ((l = m.textContent) == null ? void 0 : l.trim()) || m.value || "",
|
|
3052
3524
|
group: p
|
|
3053
3525
|
};
|
|
3054
3526
|
m.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(b.value)), m.hasAttribute("disabled") && (b.disabled = !0), m.hasAttribute("data-icon") && (b.icon = m.getAttribute("data-icon")), m.hasAttribute("data-subtitle") && (b.subtitle = m.getAttribute("data-subtitle")), t.push(b), i = !0;
|
|
3055
3527
|
}
|
|
3056
3528
|
}
|
|
3057
|
-
return i ? (
|
|
3058
|
-
(
|
|
3529
|
+
return i ? (O.debug(`[MultiSelectElement] Parsed ${t.length} declarative options from Light DOM`), s.forEach((c) => {
|
|
3530
|
+
(c.tagName === "OPTION" || c.tagName === "OPTGROUP") && c.remove();
|
|
3059
3531
|
}), t) : null;
|
|
3060
3532
|
}
|
|
3061
3533
|
/** Parse all observed attributes via ATTRIBUTE_TABLE into a partial config object. */
|
|
3062
3534
|
parseAttributesFromTable() {
|
|
3063
3535
|
const t = {};
|
|
3064
|
-
for (const s of
|
|
3065
|
-
const i =
|
|
3536
|
+
for (const s of Ae) {
|
|
3537
|
+
const i = Ze(s, this.getAttribute(s.attr));
|
|
3066
3538
|
i !== void 0 && (t[s.key] = i);
|
|
3067
3539
|
}
|
|
3068
3540
|
return t;
|
|
@@ -3074,26 +3546,26 @@ class Me extends Ss {
|
|
|
3074
3546
|
if (s && this._options === void 0)
|
|
3075
3547
|
try {
|
|
3076
3548
|
t = JSON.parse(s);
|
|
3077
|
-
} catch (
|
|
3078
|
-
|
|
3549
|
+
} catch (a) {
|
|
3550
|
+
O.error("[MultiSelectElement] Failed to parse data-options:", a);
|
|
3079
3551
|
}
|
|
3080
3552
|
let i;
|
|
3081
3553
|
if (this._declarativeSelectedValues && this._declarativeSelectedValues.length > 0)
|
|
3082
|
-
i = this._declarativeSelectedValues,
|
|
3554
|
+
i = this._declarativeSelectedValues, O.debug(`[MultiSelectElement] Using ${i.length} declaratively selected values`);
|
|
3083
3555
|
else {
|
|
3084
|
-
const
|
|
3085
|
-
if (
|
|
3556
|
+
const a = this.getAttribute("initial-values");
|
|
3557
|
+
if (a)
|
|
3086
3558
|
try {
|
|
3087
|
-
i = JSON.parse(
|
|
3088
|
-
} catch (
|
|
3089
|
-
|
|
3559
|
+
i = JSON.parse(a);
|
|
3560
|
+
} catch (n) {
|
|
3561
|
+
O.error("[MultiSelectElement] Failed to parse initial-values:", n);
|
|
3090
3562
|
}
|
|
3091
3563
|
}
|
|
3092
3564
|
const r = this.parseAttributesFromTable();
|
|
3093
|
-
for (const { key:
|
|
3094
|
-
r[
|
|
3565
|
+
for (const { key: a, field: n } of Je)
|
|
3566
|
+
r[a] === void 0 && (r[a] = this[n]);
|
|
3095
3567
|
if (this._hasDeclarativeOptions) {
|
|
3096
|
-
const
|
|
3568
|
+
const a = {
|
|
3097
3569
|
valueMember: this._getValueCallback,
|
|
3098
3570
|
displayValueMember: this._getDisplayValueCallback,
|
|
3099
3571
|
groupMember: this._getGroupCallback,
|
|
@@ -3101,8 +3573,8 @@ class Me extends Ss {
|
|
|
3101
3573
|
subtitleMember: this._getSubtitleCallback,
|
|
3102
3574
|
disabledMember: this._getDisabledCallback
|
|
3103
3575
|
};
|
|
3104
|
-
for (const { key:
|
|
3105
|
-
r[
|
|
3576
|
+
for (const { key: n, member: l } of Fs)
|
|
3577
|
+
r[n] === void 0 && !a[n] && (r[n] = l);
|
|
3106
3578
|
}
|
|
3107
3579
|
if (Object.assign(r, {
|
|
3108
3580
|
actionButtons: this._actionButtons,
|
|
@@ -3114,7 +3586,11 @@ class Me extends Ss {
|
|
|
3114
3586
|
getSearchValueCallback: this._getSearchValueCallback,
|
|
3115
3587
|
getIconCallback: this._getIconCallback,
|
|
3116
3588
|
getSubtitleCallback: this._getSubtitleCallback,
|
|
3589
|
+
getFullTitleCallback: this._getFullTitleCallback,
|
|
3117
3590
|
getGroupCallback: this._getGroupCallback,
|
|
3591
|
+
getPathCallback: this._getPathCallback,
|
|
3592
|
+
isTreeEnabled: this._isTreeEnabled,
|
|
3593
|
+
getIsSelectableCallback: this._getIsSelectableCallback,
|
|
3118
3594
|
renderGroupLabelContentCallback: this._renderGroupLabelContentCallback,
|
|
3119
3595
|
getDisabledCallback: this._getDisabledCallback,
|
|
3120
3596
|
renderOptionContentCallback: this._renderOptionContentCallback,
|
|
@@ -3126,43 +3602,43 @@ class Me extends Ss {
|
|
|
3126
3602
|
getBadgeTooltipCallback: this._getBadgeTooltipCallback,
|
|
3127
3603
|
getOptionTooltipCallback: this._getOptionTooltipCallback,
|
|
3128
3604
|
getRemoveButtonTooltipCallback: this._getRemoveButtonTooltipCallback,
|
|
3129
|
-
getCounterCallback: this._getCounterCallback || ((
|
|
3605
|
+
getCounterCallback: this._getCounterCallback || ((a, n) => n !== void 0 ? `+${n} more` : `${a} selected`),
|
|
3130
3606
|
options: this._options ?? t,
|
|
3131
3607
|
beforeSearchCallback: this._beforeSearchCallback,
|
|
3132
3608
|
beforeSelectCallback: this._beforeSelectCallback,
|
|
3133
3609
|
beforeDeselectCallback: this._beforeDeselectCallback,
|
|
3134
3610
|
searchCallback: this._searchCallback,
|
|
3135
3611
|
addNewCallback: this._addNewCallback,
|
|
3136
|
-
onSelect: (
|
|
3137
|
-
var
|
|
3138
|
-
this._onSelect && this._onSelect(
|
|
3612
|
+
onSelect: (a) => {
|
|
3613
|
+
var n;
|
|
3614
|
+
this._onSelect && this._onSelect(a), this.dispatchEvent(new CustomEvent("select", {
|
|
3139
3615
|
bubbles: !0,
|
|
3140
3616
|
composed: !0,
|
|
3141
3617
|
detail: {
|
|
3142
|
-
option:
|
|
3143
|
-
selectedOptions: (
|
|
3618
|
+
option: a,
|
|
3619
|
+
selectedOptions: (n = this.picker) == null ? void 0 : n.getSelected(),
|
|
3144
3620
|
selectedValues: this.collectSelectedValues()
|
|
3145
3621
|
}
|
|
3146
3622
|
}));
|
|
3147
3623
|
},
|
|
3148
|
-
onDeselect: (
|
|
3149
|
-
var
|
|
3150
|
-
this._onDeselect && this._onDeselect(
|
|
3624
|
+
onDeselect: (a) => {
|
|
3625
|
+
var n;
|
|
3626
|
+
this._onDeselect && this._onDeselect(a), this.dispatchEvent(new CustomEvent("deselect", {
|
|
3151
3627
|
bubbles: !0,
|
|
3152
3628
|
composed: !0,
|
|
3153
3629
|
detail: {
|
|
3154
|
-
option:
|
|
3155
|
-
selectedOptions: (
|
|
3630
|
+
option: a,
|
|
3631
|
+
selectedOptions: (n = this.picker) == null ? void 0 : n.getSelected(),
|
|
3156
3632
|
selectedValues: this.collectSelectedValues()
|
|
3157
3633
|
}
|
|
3158
3634
|
}));
|
|
3159
3635
|
},
|
|
3160
|
-
onChange: (
|
|
3161
|
-
this._onChange && this._onChange(
|
|
3636
|
+
onChange: (a) => {
|
|
3637
|
+
this._onChange && this._onChange(a), this.dispatchEvent(new CustomEvent("change", {
|
|
3162
3638
|
bubbles: !0,
|
|
3163
3639
|
composed: !0,
|
|
3164
3640
|
detail: {
|
|
3165
|
-
selectedOptions:
|
|
3641
|
+
selectedOptions: a,
|
|
3166
3642
|
selectedValues: this.collectSelectedValues()
|
|
3167
3643
|
}
|
|
3168
3644
|
}));
|
|
@@ -3171,11 +3647,11 @@ class Me extends Ss {
|
|
|
3171
3647
|
container: this.shadow,
|
|
3172
3648
|
// Pass host element (this) for hidden inputs in light DOM
|
|
3173
3649
|
hostElement: this
|
|
3174
|
-
}), i && (this.containerElement.dataset.initialValues = JSON.stringify(i)), this.picker = new
|
|
3175
|
-
const
|
|
3176
|
-
if (
|
|
3177
|
-
const
|
|
3178
|
-
|
|
3650
|
+
}), i && (this.containerElement.dataset.initialValues = JSON.stringify(i)), this.picker = new zs(this.containerElement, r), this._customStylesCallback) {
|
|
3651
|
+
const a = this._customStylesCallback();
|
|
3652
|
+
if (a) {
|
|
3653
|
+
const n = document.createElement("style");
|
|
3654
|
+
n.className = "ms-custom-styles", n.textContent = a, this.shadow.insertBefore(n, this.shadow.firstChild);
|
|
3179
3655
|
}
|
|
3180
3656
|
}
|
|
3181
3657
|
}
|
|
@@ -3238,6 +3714,12 @@ class Me extends Ss {
|
|
|
3238
3714
|
get subtitleMember() {
|
|
3239
3715
|
return this.getAttribute("subtitle-member");
|
|
3240
3716
|
}
|
|
3717
|
+
set fullTitleMember(t) {
|
|
3718
|
+
t ? this.setAttribute("full-title-member", t) : this.removeAttribute("full-title-member");
|
|
3719
|
+
}
|
|
3720
|
+
get fullTitleMember() {
|
|
3721
|
+
return this.getAttribute("full-title-member");
|
|
3722
|
+
}
|
|
3241
3723
|
set groupMember(t) {
|
|
3242
3724
|
this._groupMember = t || void 0, t ? this.setAttribute("group-member", t) : this.removeAttribute("group-member");
|
|
3243
3725
|
}
|
|
@@ -3250,6 +3732,57 @@ class Me extends Ss {
|
|
|
3250
3732
|
get disabledMember() {
|
|
3251
3733
|
return this.getAttribute("disabled-member");
|
|
3252
3734
|
}
|
|
3735
|
+
// Tree-of-options members. Setting `pathMember` (like the `path-member`
|
|
3736
|
+
// attribute) turns on tree mode. Each reflects to its kebab attribute, which
|
|
3737
|
+
// is observed and applied in place — no separate wiring needed.
|
|
3738
|
+
set pathMember(t) {
|
|
3739
|
+
t ? this.setAttribute("path-member", t) : this.removeAttribute("path-member");
|
|
3740
|
+
}
|
|
3741
|
+
get pathMember() {
|
|
3742
|
+
return this.getAttribute("path-member");
|
|
3743
|
+
}
|
|
3744
|
+
set parentPathMember(t) {
|
|
3745
|
+
t ? this.setAttribute("parent-path-member", t) : this.removeAttribute("parent-path-member");
|
|
3746
|
+
}
|
|
3747
|
+
get parentPathMember() {
|
|
3748
|
+
return this.getAttribute("parent-path-member");
|
|
3749
|
+
}
|
|
3750
|
+
set levelMember(t) {
|
|
3751
|
+
t ? this.setAttribute("level-member", t) : this.removeAttribute("level-member");
|
|
3752
|
+
}
|
|
3753
|
+
get levelMember() {
|
|
3754
|
+
return this.getAttribute("level-member");
|
|
3755
|
+
}
|
|
3756
|
+
set hasChildrenMember(t) {
|
|
3757
|
+
t ? this.setAttribute("has-children-member", t) : this.removeAttribute("has-children-member");
|
|
3758
|
+
}
|
|
3759
|
+
get hasChildrenMember() {
|
|
3760
|
+
return this.getAttribute("has-children-member");
|
|
3761
|
+
}
|
|
3762
|
+
set isSelectableMember(t) {
|
|
3763
|
+
t ? this.setAttribute("is-selectable-member", t) : this.removeAttribute("is-selectable-member");
|
|
3764
|
+
}
|
|
3765
|
+
get isSelectableMember() {
|
|
3766
|
+
return this.getAttribute("is-selectable-member");
|
|
3767
|
+
}
|
|
3768
|
+
set treePathSeparator(t) {
|
|
3769
|
+
t ? this.setAttribute("tree-path-separator", t) : this.removeAttribute("tree-path-separator");
|
|
3770
|
+
}
|
|
3771
|
+
get treePathSeparator() {
|
|
3772
|
+
return this.getAttribute("tree-path-separator");
|
|
3773
|
+
}
|
|
3774
|
+
set checkboxMode(t) {
|
|
3775
|
+
t ? this.setAttribute("checkbox-mode", t) : this.removeAttribute("checkbox-mode");
|
|
3776
|
+
}
|
|
3777
|
+
get checkboxMode() {
|
|
3778
|
+
return this.getAttribute("checkbox-mode");
|
|
3779
|
+
}
|
|
3780
|
+
set cascadeSelectPolicy(t) {
|
|
3781
|
+
t ? this.setAttribute("cascade-select-policy", t) : this.removeAttribute("cascade-select-policy");
|
|
3782
|
+
}
|
|
3783
|
+
get cascadeSelectPolicy() {
|
|
3784
|
+
return this.getAttribute("cascade-select-policy");
|
|
3785
|
+
}
|
|
3253
3786
|
// Callback properties (JavaScript only - no attributes)
|
|
3254
3787
|
set getValueCallback(t) {
|
|
3255
3788
|
this._getValueCallback = t, this.updatePicker({ getValueCallback: t });
|
|
@@ -3307,12 +3840,44 @@ class Me extends Ss {
|
|
|
3307
3840
|
get getSubtitleCallback() {
|
|
3308
3841
|
return this._getSubtitleCallback;
|
|
3309
3842
|
}
|
|
3843
|
+
/** Callback returning an option's full title (used by badges when show-badge-full-title is on). */
|
|
3844
|
+
set getFullTitleCallback(t) {
|
|
3845
|
+
this._getFullTitleCallback = t, this.updatePicker({ getFullTitleCallback: t });
|
|
3846
|
+
}
|
|
3847
|
+
get getFullTitleCallback() {
|
|
3848
|
+
return this._getFullTitleCallback;
|
|
3849
|
+
}
|
|
3310
3850
|
set getGroupCallback(t) {
|
|
3311
3851
|
this._getGroupCallback = t, this.updatePicker({ getGroupCallback: t });
|
|
3312
3852
|
}
|
|
3313
3853
|
get getGroupCallback() {
|
|
3314
3854
|
return this._getGroupCallback;
|
|
3315
3855
|
}
|
|
3856
|
+
/** Callback returning an option's materialized dot-path (enables tree mode). */
|
|
3857
|
+
set getPathCallback(t) {
|
|
3858
|
+
this._getPathCallback = t, this.updatePicker({ getPathCallback: t });
|
|
3859
|
+
}
|
|
3860
|
+
get getPathCallback() {
|
|
3861
|
+
return this._getPathCallback;
|
|
3862
|
+
}
|
|
3863
|
+
/** Force tree mode on/off. When unset, tree mode auto-enables if a path source is present. */
|
|
3864
|
+
set isTreeEnabled(t) {
|
|
3865
|
+
this._isTreeEnabled = t, this.updatePicker({ isTreeEnabled: t });
|
|
3866
|
+
}
|
|
3867
|
+
get isTreeEnabled() {
|
|
3868
|
+
return this._isTreeEnabled;
|
|
3869
|
+
}
|
|
3870
|
+
/**
|
|
3871
|
+
* Callback deciding whether a tree node is selectable (takes precedence over
|
|
3872
|
+
* `is-selectable-member`). Receives the built node — e.g.
|
|
3873
|
+
* `el.getIsSelectableCallback = (node) => !node.hasChildren` for leaves only.
|
|
3874
|
+
*/
|
|
3875
|
+
set getIsSelectableCallback(t) {
|
|
3876
|
+
this._getIsSelectableCallback = t, this.updatePicker({ getIsSelectableCallback: t });
|
|
3877
|
+
}
|
|
3878
|
+
get getIsSelectableCallback() {
|
|
3879
|
+
return this._getIsSelectableCallback;
|
|
3880
|
+
}
|
|
3316
3881
|
set renderGroupLabelContentCallback(t) {
|
|
3317
3882
|
this._renderGroupLabelContentCallback = t, this.updatePicker({ renderGroupLabelContentCallback: t });
|
|
3318
3883
|
}
|
|
@@ -3540,8 +4105,8 @@ class Me extends Ss {
|
|
|
3540
4105
|
getSelected() {
|
|
3541
4106
|
return this.picker ? this.picker.getSelected() : [];
|
|
3542
4107
|
}
|
|
3543
|
-
setSelected(t) {
|
|
3544
|
-
this.picker && this.picker.setSelected(t);
|
|
4108
|
+
setSelected(t, s = {}) {
|
|
4109
|
+
this.picker && this.picker.setSelected(t, s);
|
|
3545
4110
|
}
|
|
3546
4111
|
getValue() {
|
|
3547
4112
|
return this.picker ? this.picker.getValue() : null;
|
|
@@ -3554,40 +4119,40 @@ class Me extends Ss {
|
|
|
3554
4119
|
// makes `form.reset()`, `form.elements`, and (in the future) constraint
|
|
3555
4120
|
// validation actually do something. Without this flag the element is
|
|
3556
4121
|
// invisible to the form lifecycle even when it has a `name`.
|
|
3557
|
-
|
|
3558
|
-
typeof window < "u" && typeof customElements < "u" && (customElements.get("web-multiselect") || customElements.define("web-multiselect",
|
|
4122
|
+
h(Be, "formAssociated", !0);
|
|
4123
|
+
typeof window < "u" && typeof customElements < "u" && (customElements.get("web-multiselect") || customElements.define("web-multiselect", Be));
|
|
3559
4124
|
typeof window < "u" && (window.components = window.components || {}, window.components["web-multiselect"] = {
|
|
3560
|
-
version: () => "1.12.0-
|
|
4125
|
+
version: () => "1.12.0-rc07",
|
|
3561
4126
|
config: {
|
|
3562
4127
|
name: "@keenmate/web-multiselect",
|
|
3563
|
-
version: "1.12.0-
|
|
4128
|
+
version: "1.12.0-rc07",
|
|
3564
4129
|
author: "Keenmate",
|
|
3565
4130
|
license: "MIT",
|
|
3566
4131
|
repository: "git+https://github.com/keenmate/web-multiselect.git",
|
|
3567
4132
|
homepage: "https://web-multiselect.keenmate.dev"
|
|
3568
4133
|
},
|
|
3569
4134
|
logging: {
|
|
3570
|
-
enableLogging:
|
|
3571
|
-
disableLogging:
|
|
3572
|
-
setLogLevel:
|
|
3573
|
-
setCategoryLevel:
|
|
3574
|
-
getCategories: () => [...
|
|
4135
|
+
enableLogging: ws,
|
|
4136
|
+
disableLogging: xs,
|
|
4137
|
+
setLogLevel: Cs,
|
|
4138
|
+
setCategoryLevel: Ss,
|
|
4139
|
+
getCategories: () => [...ys]
|
|
3575
4140
|
},
|
|
3576
4141
|
register: () => {
|
|
3577
|
-
typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect",
|
|
4142
|
+
typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect", Be);
|
|
3578
4143
|
},
|
|
3579
|
-
getInstances: () =>
|
|
4144
|
+
getInstances: () => gt()
|
|
3580
4145
|
});
|
|
3581
4146
|
export {
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
4147
|
+
ys as LOGGING_CATEGORIES,
|
|
4148
|
+
Be as MultiSelectElement,
|
|
4149
|
+
zs as WebMultiSelect,
|
|
4150
|
+
O as dataLogger,
|
|
4151
|
+
xs as disableLogging,
|
|
4152
|
+
ws as enableLogging,
|
|
4153
|
+
de as initLogger,
|
|
4154
|
+
L as interactionLogger,
|
|
4155
|
+
Ss as setCategoryLevel,
|
|
4156
|
+
Cs as setLogLevel,
|
|
4157
|
+
R as uiLogger
|
|
3593
4158
|
};
|