@keenmate/web-multiselect 1.12.0-rc05 → 1.12.0-rc06
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 +11 -7
- package/dist/index.d.ts +215 -0
- package/dist/multiselect.js +1505 -966
- 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 +47 -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 Be(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 [we(o), e, we(e)];
|
|
50
50
|
}
|
|
51
|
-
function
|
|
52
|
-
return o.replace(/start|end/g, (e) =>
|
|
51
|
+
function we(o) {
|
|
52
|
+
return o.replace(/start|end/g, (e) => yt[e]);
|
|
53
53
|
}
|
|
54
|
-
const
|
|
55
|
-
function
|
|
54
|
+
const $e = ["left", "right"], Re = ["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 ? Re : $e : e ? $e : Re;
|
|
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(we)))), 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,161 +107,161 @@ function ae(o) {
|
|
|
107
107
|
y: t
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
|
-
function
|
|
110
|
+
function Fe(o, e, t) {
|
|
111
111
|
let {
|
|
112
112
|
reference: s,
|
|
113
113
|
floating: i
|
|
114
114
|
} = o;
|
|
115
|
-
const r =
|
|
116
|
-
let
|
|
115
|
+
const r = G(e), a = tt(e), n = et(a), l = J(e), d = r === "y", c = s.x + s.width / 2 - i.width / 2, m = s.y + s.height / 2 - i.height / 2, u = s[n] / 2 - i[n] / 2;
|
|
116
|
+
let p;
|
|
117
117
|
switch (l) {
|
|
118
118
|
case "top":
|
|
119
|
-
|
|
119
|
+
p = {
|
|
120
120
|
x: c,
|
|
121
121
|
y: s.y - i.height
|
|
122
122
|
};
|
|
123
123
|
break;
|
|
124
124
|
case "bottom":
|
|
125
|
-
|
|
125
|
+
p = {
|
|
126
126
|
x: c,
|
|
127
127
|
y: s.y + s.height
|
|
128
128
|
};
|
|
129
129
|
break;
|
|
130
130
|
case "right":
|
|
131
|
-
|
|
131
|
+
p = {
|
|
132
132
|
x: s.x + s.width,
|
|
133
|
-
y:
|
|
133
|
+
y: m
|
|
134
134
|
};
|
|
135
135
|
break;
|
|
136
136
|
case "left":
|
|
137
|
-
|
|
137
|
+
p = {
|
|
138
138
|
x: s.x - i.width,
|
|
139
|
-
y:
|
|
139
|
+
y: m
|
|
140
140
|
};
|
|
141
141
|
break;
|
|
142
142
|
default:
|
|
143
|
-
|
|
143
|
+
p = {
|
|
144
144
|
x: s.x,
|
|
145
145
|
y: s.y
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
|
-
switch (
|
|
148
|
+
switch (ge(e)) {
|
|
149
149
|
case "start":
|
|
150
|
-
|
|
150
|
+
p[a] -= u * (t && d ? -1 : 1);
|
|
151
151
|
break;
|
|
152
152
|
case "end":
|
|
153
|
-
|
|
153
|
+
p[a] += u * (t && d ? -1 : 1);
|
|
154
154
|
break;
|
|
155
155
|
}
|
|
156
|
-
return
|
|
156
|
+
return p;
|
|
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 d = await a.getElementRects({
|
|
166
166
|
reference: o,
|
|
167
167
|
floating: e,
|
|
168
168
|
strategy: i
|
|
169
169
|
}), {
|
|
170
170
|
x: c,
|
|
171
|
-
y:
|
|
172
|
-
} =
|
|
173
|
-
for (let
|
|
171
|
+
y: m
|
|
172
|
+
} = Fe(d, s, l), u = s, p = {}, 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
|
|
179
|
+
y,
|
|
180
|
+
data: w,
|
|
181
|
+
reset: M
|
|
182
|
+
} = await g({
|
|
183
183
|
x: c,
|
|
184
|
-
y:
|
|
184
|
+
y: m,
|
|
185
185
|
initialPlacement: s,
|
|
186
186
|
placement: u,
|
|
187
187
|
strategy: i,
|
|
188
|
-
middlewareData:
|
|
189
|
-
rects:
|
|
190
|
-
platform:
|
|
188
|
+
middlewareData: p,
|
|
189
|
+
rects: d,
|
|
190
|
+
platform: a,
|
|
191
191
|
elements: {
|
|
192
192
|
reference: o,
|
|
193
193
|
floating: e
|
|
194
194
|
}
|
|
195
195
|
});
|
|
196
|
-
c = _ ?? c,
|
|
197
|
-
...
|
|
198
|
-
[
|
|
199
|
-
...
|
|
200
|
-
...
|
|
196
|
+
c = _ ?? c, m = y ?? m, p = {
|
|
197
|
+
...p,
|
|
198
|
+
[f]: {
|
|
199
|
+
...p[f],
|
|
200
|
+
...w
|
|
201
201
|
}
|
|
202
|
-
},
|
|
202
|
+
}, M && b <= 50 && (b++, typeof M == "object" && (M.placement && (u = M.placement), M.rects && (d = M.rects === !0 ? await a.getElementRects({
|
|
203
203
|
reference: o,
|
|
204
204
|
floating: e,
|
|
205
205
|
strategy: i
|
|
206
|
-
}) :
|
|
206
|
+
}) : M.rects), {
|
|
207
207
|
x: c,
|
|
208
|
-
y:
|
|
209
|
-
} =
|
|
208
|
+
y: m
|
|
209
|
+
} = Fe(d, u, l)), v = -1);
|
|
210
210
|
}
|
|
211
211
|
return {
|
|
212
212
|
x: c,
|
|
213
|
-
y:
|
|
213
|
+
y: m,
|
|
214
214
|
placement: u,
|
|
215
215
|
strategy: i,
|
|
216
|
-
middlewareData:
|
|
216
|
+
middlewareData: p
|
|
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:
|
|
230
|
+
boundary: d = "clippingAncestors",
|
|
231
231
|
rootBoundary: c = "viewport",
|
|
232
|
-
elementContext:
|
|
232
|
+
elementContext: m = "floating",
|
|
233
233
|
altBoundary: u = !1,
|
|
234
|
-
padding:
|
|
235
|
-
} =
|
|
236
|
-
element: (t = await (r.isElement == null ? void 0 : r.isElement(
|
|
237
|
-
boundary:
|
|
234
|
+
padding: p = 0
|
|
235
|
+
} = be(e, o), b = At(p), f = n[u ? m === "floating" ? "reference" : "floating" : m], 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: d,
|
|
238
238
|
rootBoundary: c,
|
|
239
239
|
strategy: l
|
|
240
|
-
})), _ =
|
|
240
|
+
})), _ = m === "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,107 +270,107 @@ 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: d
|
|
277
277
|
} = e, {
|
|
278
278
|
mainAxis: c = !0,
|
|
279
|
-
crossAxis:
|
|
279
|
+
crossAxis: m = !0,
|
|
280
280
|
fallbackPlacements: u,
|
|
281
|
-
fallbackStrategy:
|
|
281
|
+
fallbackStrategy: p = "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 (c &&
|
|
293
|
-
const
|
|
294
|
-
|
|
288
|
+
const g = J(i), _ = G(n), y = J(n) === n, w = await (l.isRTL == null ? void 0 : l.isRTL(d.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 (c && I.push(se[g]), m) {
|
|
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 && (!(m === "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 (!
|
|
316
|
-
switch (
|
|
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
|
+
switch (p) {
|
|
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", d = Et.has(a) ? -1 : 1, c = r && l ? -1 : 1, m = be(e, o);
|
|
352
352
|
let {
|
|
353
353
|
mainAxis: u,
|
|
354
|
-
crossAxis:
|
|
354
|
+
crossAxis: p,
|
|
355
355
|
alignmentAxis: b
|
|
356
|
-
} = typeof
|
|
357
|
-
mainAxis:
|
|
356
|
+
} = typeof m == "number" ? {
|
|
357
|
+
mainAxis: m,
|
|
358
358
|
crossAxis: 0,
|
|
359
359
|
alignmentAxis: null
|
|
360
360
|
} : {
|
|
361
|
-
mainAxis:
|
|
362
|
-
crossAxis:
|
|
363
|
-
alignmentAxis:
|
|
361
|
+
mainAxis: m.mainAxis || 0,
|
|
362
|
+
crossAxis: m.crossAxis || 0,
|
|
363
|
+
alignmentAxis: m.alignmentAxis
|
|
364
364
|
};
|
|
365
|
-
return
|
|
366
|
-
x:
|
|
367
|
-
y: u *
|
|
365
|
+
return n && typeof b == "number" && (p = n === "end" ? b * -1 : b), l ? {
|
|
366
|
+
x: p * c,
|
|
367
|
+
y: u * d
|
|
368
368
|
} : {
|
|
369
|
-
x: u *
|
|
370
|
-
y:
|
|
369
|
+
x: u * d,
|
|
370
|
+
y: p * c
|
|
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), d = {
|
|
421
421
|
x: t,
|
|
422
422
|
y: s
|
|
423
|
-
}, c = await
|
|
424
|
-
let
|
|
423
|
+
}, c = await st(e, l), m = G(J(i)), u = Qe(m);
|
|
424
|
+
let p = d[u], b = d[m];
|
|
425
425
|
if (r) {
|
|
426
|
-
const
|
|
427
|
-
|
|
426
|
+
const f = u === "y" ? "top" : "left", g = u === "y" ? "bottom" : "right", _ = p + c[f], y = p - c[g];
|
|
427
|
+
p = Be(_, p, y);
|
|
428
428
|
}
|
|
429
|
-
if (
|
|
430
|
-
const
|
|
431
|
-
b =
|
|
429
|
+
if (a) {
|
|
430
|
+
const f = m === "y" ? "top" : "left", g = m === "y" ? "bottom" : "right", _ = b + c[f], y = b - c[g];
|
|
431
|
+
b = Be(_, b, y);
|
|
432
432
|
}
|
|
433
|
-
const
|
|
433
|
+
const v = n.fn({
|
|
434
434
|
...e,
|
|
435
|
-
[u]:
|
|
436
|
-
[
|
|
435
|
+
[u]: p,
|
|
436
|
+
[m]: 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
|
-
[
|
|
445
|
+
[m]: 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 He(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 Pe(o) {
|
|
504
|
+
const e = Le(), 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 (Pe(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 Le() {
|
|
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
|
+
He(o) && o.host || // Fallback.
|
|
545
|
+
N(o)
|
|
546
546
|
);
|
|
547
|
-
return
|
|
547
|
+
return He(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 = xe(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 xe(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 Ee(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 = Ee(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 !Le() || !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 = Ee(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, d = (i.top + n.y) / a.y, c = i.width / a.x, m = 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), p = s && B(s) ? V(s) : s;
|
|
614
|
+
let b = u, v = xe(b);
|
|
615
|
+
for (; v && s && p !== 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, d *= f.y, c *= f.x, m *= f.y, l += y, d += w, b = V(v), v = xe(b);
|
|
618
618
|
}
|
|
619
619
|
}
|
|
620
|
-
return
|
|
620
|
+
return ue({
|
|
621
621
|
width: c,
|
|
622
|
-
height:
|
|
622
|
+
height: m,
|
|
623
623
|
x: l,
|
|
624
|
-
y:
|
|
624
|
+
y: d
|
|
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 c =
|
|
653
|
-
if ((
|
|
654
|
-
const
|
|
655
|
-
|
|
651
|
+
}, d = F(1);
|
|
652
|
+
const c = F(0), m = H(s);
|
|
653
|
+
if ((m || !m && !r) && ((te(s) !== "body" || le(a)) && (l = _e(s)), H(s))) {
|
|
654
|
+
const p = Z(s);
|
|
655
|
+
d = Q(s), c.x = p.x + s.clientLeft, c.y = p.y + s.clientTop;
|
|
656
656
|
}
|
|
657
|
-
const u =
|
|
657
|
+
const u = a && !m && !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 * d.x,
|
|
660
|
+
height: t.height * d.y,
|
|
661
|
+
x: t.x * d.x - l.scrollLeft * d.x + c.x + u.x,
|
|
662
|
+
y: t.y * d.y - l.scrollTop * d.y + c.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 Ne = 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 c =
|
|
686
|
-
(!c || c && e === "fixed") && (
|
|
687
|
-
}
|
|
688
|
-
const
|
|
689
|
-
if (
|
|
690
|
-
const c = s.ownerDocument,
|
|
691
|
-
b <=
|
|
692
|
-
} else
|
|
684
|
+
r = i.width, a = i.height;
|
|
685
|
+
const c = Le();
|
|
686
|
+
(!c || c && e === "fixed") && (n = i.offsetLeft, l = i.offsetTop);
|
|
687
|
+
}
|
|
688
|
+
const d = ke(s);
|
|
689
|
+
if (d <= 0) {
|
|
690
|
+
const c = s.ownerDocument, m = c.body, u = getComputedStyle(m), p = c.compatMode === "CSS1Compat" && parseFloat(u.marginLeft) + parseFloat(u.marginRight) || 0, b = Math.abs(s.clientWidth - m.clientWidth - p);
|
|
691
|
+
b <= Ne && (r -= b);
|
|
692
|
+
} else d <= Ne && (r += d);
|
|
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, d = s * r.y;
|
|
703
703
|
return {
|
|
704
|
-
width:
|
|
705
|
-
height:
|
|
704
|
+
width: a,
|
|
705
|
+
height: n,
|
|
706
706
|
x: l,
|
|
707
|
-
y:
|
|
707
|
+
y: d
|
|
708
708
|
};
|
|
709
709
|
}
|
|
710
|
-
function
|
|
710
|
+
function je(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 = Pe(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((c) => c !== 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
|
|
755
|
-
return
|
|
756
|
-
},
|
|
753
|
+
const a = [...t === "clippingAncestors" ? ve(e) ? [] : es(e, this._c) : [].concat(t), s], n = a[0], l = a.reduce((d, c) => {
|
|
754
|
+
const m = je(e, c, i);
|
|
755
|
+
return d.top = X(m.top, d.top), d.right = he(m.right, d.right), d.bottom = he(m.bottom, d.bottom), d.left = X(m.left, d.left), d;
|
|
756
|
+
}, je(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 d() {
|
|
782
|
+
l.x = ke(i);
|
|
783
783
|
}
|
|
784
784
|
if (s || !s && !r)
|
|
785
|
-
if ((
|
|
786
|
-
const
|
|
787
|
-
l.x =
|
|
788
|
-
} else i &&
|
|
789
|
-
r && !s && i &&
|
|
790
|
-
const c = i && !s && !r ?
|
|
785
|
+
if ((te(e) !== "body" || le(i)) && (n = _e(e)), s) {
|
|
786
|
+
const p = Z(e, !0, r, e);
|
|
787
|
+
l.x = p.x + e.clientLeft, l.y = p.y + e.clientTop;
|
|
788
|
+
} else i && d();
|
|
789
|
+
r && !s && i && d();
|
|
790
|
+
const c = i && !s && !r ? nt(i, n) : F(0), m = a.left + n.scrollLeft - l.x - c.x, u = a.top + n.scrollTop - l.y - c.y;
|
|
791
791
|
return {
|
|
792
|
-
x:
|
|
792
|
+
x: m,
|
|
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 We(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 = We(o, e);
|
|
823
|
+
for (; s && Rt(s) && ye(s); )
|
|
824
|
+
s = We(s, e);
|
|
825
|
+
return s && ee(s) && ye(s) && !Pe(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
|
|
864
|
+
function a(n, l) {
|
|
865
|
+
n === void 0 && (n = !1), l === void 0 && (l = 1), r();
|
|
866
|
+
const d = o.getBoundingClientRect(), {
|
|
867
867
|
left: c,
|
|
868
|
-
top:
|
|
868
|
+
top: m,
|
|
869
869
|
width: u,
|
|
870
|
-
height:
|
|
871
|
-
} =
|
|
872
|
-
if (
|
|
870
|
+
height: p
|
|
871
|
+
} = d;
|
|
872
|
+
if (n || e(), !u || !p)
|
|
873
873
|
return;
|
|
874
|
-
const b =
|
|
875
|
-
rootMargin: -b + "px " + -
|
|
876
|
-
threshold:
|
|
874
|
+
const b = ce(m), v = ce(i.clientWidth - (c + u)), f = ce(i.clientHeight - (m + p)), g = ce(c), 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(d, 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 Ce(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
|
-
c.forEach((
|
|
913
|
-
i &&
|
|
911
|
+
} = s, d = Ee(o), c = i || r ? [...d ? ae(d) : [], ...ae(e)] : [];
|
|
912
|
+
c.forEach((g) => {
|
|
913
|
+
i && g.addEventListener("scroll", t, {
|
|
914
914
|
passive: !0
|
|
915
|
-
}), r &&
|
|
915
|
+
}), r && g.addEventListener("resize", t);
|
|
916
916
|
});
|
|
917
|
-
const
|
|
918
|
-
let u = -1,
|
|
919
|
-
|
|
920
|
-
let [_] =
|
|
921
|
-
_ && _.target ===
|
|
922
|
-
var
|
|
923
|
-
(
|
|
917
|
+
const m = d && n ? as(d, t) : null;
|
|
918
|
+
let u = -1, p = null;
|
|
919
|
+
a && (p = new ResizeObserver((g) => {
|
|
920
|
+
let [_] = g;
|
|
921
|
+
_ && _.target === d && p && (p.unobserve(e), cancelAnimationFrame(u), u = requestAnimationFrame(() => {
|
|
922
|
+
var y;
|
|
923
|
+
(y = p) == null || y.observe(e);
|
|
924
924
|
})), t();
|
|
925
|
-
}),
|
|
926
|
-
let b,
|
|
927
|
-
l &&
|
|
928
|
-
function
|
|
929
|
-
const
|
|
930
|
-
|
|
925
|
+
}), d && !l && p.observe(d), p.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
|
|
933
|
+
var g;
|
|
934
934
|
c.forEach((_) => {
|
|
935
935
|
i && _.removeEventListener("scroll", t), r && _.removeEventListener("resize", t);
|
|
936
|
-
}),
|
|
936
|
+
}), m == null || m(), (g = p) == null || g.disconnect(), p = null, l && cancelAnimationFrame(b);
|
|
937
937
|
};
|
|
938
938
|
}
|
|
939
|
-
const
|
|
939
|
+
const Se = Dt, Te = zt, mt = Lt, Ie = (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), Me = [
|
|
954
954
|
"trace",
|
|
955
955
|
"debug",
|
|
956
956
|
"info",
|
|
957
957
|
"warn",
|
|
958
958
|
"error"
|
|
959
|
-
],
|
|
960
|
-
function
|
|
959
|
+
], ne = {}, T = null;
|
|
960
|
+
function Ue(o, e) {
|
|
961
961
|
var t = o[e];
|
|
962
962
|
if (typeof t.bind == "function")
|
|
963
963
|
return t.bind(o);
|
|
@@ -969,79 +969,79 @@ 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 ? Ue(console, o) : console.log !== void 0 ? Ue(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 < Me.length; e++) {
|
|
980
|
+
var t = Me[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
|
|
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 p = (Me[u] || "silent").toUpperCase();
|
|
999
|
+
if (!(typeof window === z || !a)) {
|
|
1000
1000
|
try {
|
|
1001
|
-
window.localStorage[
|
|
1001
|
+
window.localStorage[a] = p;
|
|
1002
1002
|
return;
|
|
1003
1003
|
} catch {
|
|
1004
1004
|
}
|
|
1005
1005
|
try {
|
|
1006
|
-
window.document.cookie = encodeURIComponent(
|
|
1006
|
+
window.document.cookie = encodeURIComponent(a) + "=" + p + ";";
|
|
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
|
|
1021
|
-
|
|
1022
|
-
|
|
1020
|
+
var p = window.document.cookie, b = encodeURIComponent(a), v = p.indexOf(b + "=");
|
|
1021
|
+
v !== -1 && (u = /^([^;]+)/.exec(
|
|
1022
|
+
p.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 d() {
|
|
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
1041
|
function c(u) {
|
|
1042
|
-
var
|
|
1043
|
-
if (typeof
|
|
1044
|
-
return
|
|
1042
|
+
var p = u;
|
|
1043
|
+
if (typeof p == "string" && t.levels[p.toUpperCase()] !== void 0 && (p = t.levels[p.toUpperCase()]), typeof p == "number" && p >= 0 && p <= t.levels.SILENT)
|
|
1044
|
+
return p;
|
|
1045
1045
|
throw new TypeError("log.setLevel() called with invalid level: " + u);
|
|
1046
1046
|
}
|
|
1047
1047
|
t.name = o, t.levels = {
|
|
@@ -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
|
-
}, t.setLevel = function(u,
|
|
1057
|
-
return r = c(u),
|
|
1056
|
+
}, t.setLevel = function(u, p) {
|
|
1057
|
+
return r = c(u), p !== !1 && n(r), ie.call(t);
|
|
1058
1058
|
}, t.setDefaultLevel = function(u) {
|
|
1059
1059
|
i = c(u), l() || t.setLevel(u, !1);
|
|
1060
1060
|
}, t.resetLevel = function() {
|
|
1061
|
-
r = null,
|
|
1061
|
+
r = null, d(), 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
|
-
|
|
1067
|
+
if (T !== t && (s = c(T.getLevel())), ie.call(t), T === t)
|
|
1068
|
+
for (var u in ne)
|
|
1069
|
+
ne[u].rebuild();
|
|
1070
1070
|
}, s = c(
|
|
1071
|
-
|
|
1071
|
+
T ? T.getLevel() : "WARN"
|
|
1072
1072
|
);
|
|
1073
|
-
var
|
|
1074
|
-
|
|
1073
|
+
var m = l();
|
|
1074
|
+
m != null && (r = c(m)), 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 d = t(a, n, l), c = Y[l] || Y[""], m = c.template.indexOf("%t") !== -1, u = c.template.indexOf("%l") !== -1, p = c.template.indexOf("%n") !== -1;
|
|
1121
1121
|
return function() {
|
|
1122
|
-
for (var b = "",
|
|
1123
|
-
g
|
|
1124
|
-
if (s || !
|
|
1125
|
-
var _ = c.timestampFormatter(/* @__PURE__ */ new Date()),
|
|
1126
|
-
c.format ? b += c.format(
|
|
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 _ = c.timestampFormatter(/* @__PURE__ */ new Date()), y = c.levelFormatter(a), w = c.nameFormatter(l);
|
|
1126
|
+
c.format ? b += c.format(y, w, _) : (b += c.template, m && (b = b.replace(/%t/, _)), u && (b = b.replace(/%l/, y)), p && (b = b.replace(/%n/, w))), f.length && typeof f[0] == "string" ? f[0] = b + " " + f[0] : f.unshift(b);
|
|
1127
1127
|
}
|
|
1128
|
-
|
|
1128
|
+
d.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(c, ...t ? [r,
|
|
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()), d = o.toUpperCase(), c = t ? `%c[${l}]%c %c[${d}]%c %c[${t}]%c` : `%c[${l}]%c %c[${d}]%c`;
|
|
1154
|
+
s(c, ...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 Ve() {
|
|
1165
|
+
typeof T.rebuild == "function" && T.rebuild();
|
|
1166
1166
|
}
|
|
1167
|
-
function
|
|
1168
|
-
|
|
1167
|
+
function ws() {
|
|
1168
|
+
T.setLevel("debug"), Ve();
|
|
1169
1169
|
}
|
|
1170
|
-
function
|
|
1171
|
-
|
|
1170
|
+
function xs() {
|
|
1171
|
+
T.setLevel("silent"), Ve();
|
|
1172
1172
|
}
|
|
1173
|
-
function
|
|
1174
|
-
|
|
1173
|
+
function Cs(o) {
|
|
1174
|
+
T.setLevel(o), Ve();
|
|
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 Ge {
|
|
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 = Ce(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
|
+
Ie(e, this.element, {
|
|
1346
1346
|
placement: this.placement,
|
|
1347
1347
|
strategy: "fixed",
|
|
1348
1348
|
middleware: [
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1349
|
+
Se(this.offsetDistance),
|
|
1350
|
+
mt(),
|
|
1351
|
+
Te({ 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 Ke(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 qe(o, e, t = ".") {
|
|
1409
|
+
return re(e) ? o : o.startsWith(e + t) ? o.substring(e.length + t.length) : o;
|
|
1410
|
+
}
|
|
1411
|
+
function Ye(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, d = o.treeId || "multiselect-tree", c = o.orderMember, m = o.getDisplayValueCallback, u = re(i), p = re(r), b = re(a), v = re(n), f = "x", g = o.treePathSeparator || ".", _ = Ke();
|
|
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 = Ke();
|
|
1449
|
+
k.treeId = d, 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 = Ye(
|
|
1452
|
+
qe(k.path, k.parentPath ?? "", g),
|
|
1453
|
+
0,
|
|
1454
|
+
1,
|
|
1455
|
+
g
|
|
1456
|
+
), p ? 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 ${d}] ${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
|
+
p && (C.level = (x.level || 0) + 1);
|
|
1492
|
+
const S = f + Ye(qe(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 (c && C.data && x.data) {
|
|
1502
|
+
const k = U(C.data, c) ?? 0, P = U(x.data, c) ?? 0;
|
|
1503
|
+
if (k !== P) return k - P;
|
|
1504
|
+
}
|
|
1505
|
+
return m ? m(C).localeCompare(m(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 d = [];
|
|
1514
|
+
for (const m of Object.values(l.children))
|
|
1515
|
+
d.push(...a(m));
|
|
1516
|
+
let c;
|
|
1517
|
+
return d.length > 0 ? c = d : l.isSelectable !== !1 ? (c = [r(l)], i.add(l.path)) : c = [], s.set(l.path, c), c;
|
|
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 De(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 Xe(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 = De(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 = De(o, n, e);
|
|
1549
|
+
if (l === "unchecked") return;
|
|
1550
|
+
const d = n.isSelectable !== !1, c = Object.values(n.children);
|
|
1551
|
+
if (t === "leaves") {
|
|
1552
|
+
o.atomPaths.has(n.path) && l === "checked" && r.push(i(n));
|
|
1553
|
+
for (const m of c) a(m);
|
|
1554
|
+
return;
|
|
1555
|
+
}
|
|
1556
|
+
if (t === "all") {
|
|
1557
|
+
l === "checked" && d && r.push(i(n));
|
|
1558
|
+
for (const m of c) a(m);
|
|
1559
|
+
return;
|
|
1560
|
+
}
|
|
1561
|
+
if (l === "checked" && d) {
|
|
1562
|
+
r.push(i(n));
|
|
1563
|
+
return;
|
|
1564
|
+
}
|
|
1565
|
+
for (const m of c) a(m);
|
|
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,148 @@ 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 = Xe(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
|
+
var c;
|
|
1898
|
+
const t = this.cascadeIndex, s = Xe(t, this.selectedValues), { checkedAtoms: i } = Ps(t, e, s), r = Ls(
|
|
1899
|
+
t,
|
|
1900
|
+
i,
|
|
1901
|
+
this.cascadePolicy(),
|
|
1902
|
+
(m) => String(this.getItemValue(m))
|
|
1903
|
+
), a = new Set(r), n = [], l = [];
|
|
1904
|
+
for (const [m, u] of this.selectedOptions)
|
|
1905
|
+
a.has(m) || l.push(u);
|
|
1906
|
+
const d = /* @__PURE__ */ new Map();
|
|
1907
|
+
for (const m of r) {
|
|
1908
|
+
const p = ((c = t.nodeByValue.get(m)) == null ? void 0 : c.data) ?? this.selectedOptions.get(m);
|
|
1909
|
+
p !== void 0 && (d.set(m, p), this.selectedValues.has(m) || n.push(p));
|
|
1910
|
+
}
|
|
1911
|
+
this.selectedValues = a, this.selectedOptions = d, this.cascadeCheckedAtoms = i, this.commit({ added: n, removed: l });
|
|
1912
|
+
}
|
|
1913
|
+
/**
|
|
1914
|
+
* Derive `treeNodes` + `filteredOptions` from the full tree, applying the
|
|
1915
|
+
* current search term. Matching nodes keep all their ancestors visible so
|
|
1916
|
+
* indentation stays coherent (the tree is always fully expanded).
|
|
1917
|
+
*/
|
|
1918
|
+
rebuildTreeVisible() {
|
|
1919
|
+
if (!this.tree) {
|
|
1920
|
+
this.treeNodes = [];
|
|
1921
|
+
return;
|
|
1922
|
+
}
|
|
1923
|
+
const e = this.tree.flatNodes, t = this.options.isSearchEnabled ? (this.searchTerm || "").trim().toLowerCase() : "";
|
|
1924
|
+
let s;
|
|
1925
|
+
if (!t)
|
|
1926
|
+
s = e;
|
|
1927
|
+
else {
|
|
1928
|
+
const i = this.tree.treePathSeparator, r = /* @__PURE__ */ new Set();
|
|
1929
|
+
for (const a of e)
|
|
1930
|
+
if (this.getItemSearchValue(a.data).toLowerCase().includes(t)) {
|
|
1931
|
+
const l = a.path.split(i);
|
|
1932
|
+
for (let d = 1; d <= l.length; d++)
|
|
1933
|
+
r.add(l.slice(0, d).join(i));
|
|
1934
|
+
}
|
|
1935
|
+
s = e.filter((a) => r.has(a.path));
|
|
1936
|
+
}
|
|
1937
|
+
this.treeNodes = s, this.filteredOptions = s.map((i) => i.data);
|
|
1938
|
+
}
|
|
1939
|
+
/**
|
|
1940
|
+
* Reset the visible list to "everything". **Tree-aware**: in tree mode it
|
|
1941
|
+
* rebuilds `treeNodes` (kept index-aligned with `filteredOptions`) from the
|
|
1942
|
+
* full tree, so the two never drift. A raw `filteredOptions = [...allOptions]`
|
|
1943
|
+
* would leave `treeNodes` stale after clearing a search — the virtual list
|
|
1944
|
+
* then reserves height for every option but renders blank rows because
|
|
1945
|
+
* `treeNodes[index]` is undefined. Always use this to clear the visible list.
|
|
1946
|
+
*/
|
|
1947
|
+
resetVisibleToAll() {
|
|
1948
|
+
this.isTreeMode() ? this.rebuildTreeVisible() : this.filteredOptions = [...this.allOptions];
|
|
1949
|
+
}
|
|
1950
|
+
/**
|
|
1951
|
+
* Tree mode: derive the visible list from an **external** set of matched
|
|
1952
|
+
* options — e.g. the results returned by `searchCallback` — keeping each
|
|
1953
|
+
* match's ancestors so indentation stays coherent. This is the async-search
|
|
1954
|
+
* analogue of `rebuildTreeVisible`: the matching is done by the caller (their
|
|
1955
|
+
* own index/engine) instead of a local substring test, but ancestor
|
|
1956
|
+
* preservation and `treeNodes`/`filteredOptions` index-alignment still happen
|
|
1957
|
+
* here. Pass all options to show the whole tree.
|
|
1958
|
+
*/
|
|
1959
|
+
rebuildTreeVisibleFromMatches(e) {
|
|
1960
|
+
if (!this.tree) {
|
|
1961
|
+
this.treeNodes = [], this.filteredOptions = [];
|
|
1962
|
+
return;
|
|
1963
|
+
}
|
|
1964
|
+
const t = this.tree.flatNodes, s = this.tree.treePathSeparator, i = new Set((e || []).map((n) => String(this.getItemValue(n)))), r = /* @__PURE__ */ new Set();
|
|
1965
|
+
for (const n of t)
|
|
1966
|
+
if (i.has(String(this.getItemValue(n.data)))) {
|
|
1967
|
+
const l = n.path.split(s);
|
|
1968
|
+
for (let d = 1; d <= l.length; d++)
|
|
1969
|
+
r.add(l.slice(0, d).join(s));
|
|
1970
|
+
}
|
|
1971
|
+
const a = t.filter((n) => r.has(n.path));
|
|
1972
|
+
this.treeNodes = a, this.filteredOptions = a.map((n) => n.data);
|
|
1622
1973
|
}
|
|
1623
1974
|
buildHTML() {
|
|
1624
1975
|
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,
|
|
1976
|
+
this.isRTL = i || r, de.debug(`[${this.instanceId}] RTL Debug:`, {
|
|
1626
1977
|
isShadowRoot: t instanceof ShadowRoot,
|
|
1627
1978
|
hostElement: s,
|
|
1628
1979
|
elementDir: s.getAttribute("dir"),
|
|
1629
1980
|
hasElementDir: i,
|
|
1630
1981
|
hasAncestorDir: r,
|
|
1631
1982
|
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
|
-
|
|
1983
|
+
}), 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");
|
|
1984
|
+
const a = document.createElement("div");
|
|
1985
|
+
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");
|
|
1986
|
+
const n = document.createElement("span");
|
|
1987
|
+
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
1988
|
const l = document.createElement("div");
|
|
1638
|
-
l.className = "ms__wrapper", (this.effectiveBadgesPosition === "left" || this.effectiveBadgesPosition === "right") && l.classList.add("ms__wrapper--inline"), l.appendChild(
|
|
1989
|
+
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
1990
|
}
|
|
1640
1991
|
/**
|
|
1641
1992
|
* Check if virtual scroll should be used
|
|
@@ -1655,7 +2006,7 @@ class xs {
|
|
|
1655
2006
|
});
|
|
1656
2007
|
}
|
|
1657
2008
|
renderDropdown() {
|
|
1658
|
-
if (this.destroyAllActionButtonTooltips(), this.shouldUseVirtualScroll()) {
|
|
2009
|
+
if (this.destroyAllActionButtonTooltips(), this.refreshCascadeAtoms(), this.shouldUseVirtualScroll()) {
|
|
1659
2010
|
this.dropdown.classList.add("ms__dropdown--virtual"), this.renderDropdownVirtual();
|
|
1660
2011
|
return;
|
|
1661
2012
|
}
|
|
@@ -1666,23 +2017,32 @@ class xs {
|
|
|
1666
2017
|
return;
|
|
1667
2018
|
}
|
|
1668
2019
|
const t = this.renderActionsHTML(), s = this.options.actionsPosition === "bottom";
|
|
1669
|
-
if (s || (e += t),
|
|
2020
|
+
if (s || (e += t), this.options.isVirtualScrollEnabled) {
|
|
2021
|
+
const i = this.options.optionHeight ?? 50;
|
|
2022
|
+
e += `<div class="ms__options ms__options--fixed-height" style="--ms-option-height: ${i}px;">`;
|
|
2023
|
+
} else
|
|
2024
|
+
e += '<div class="ms__options">';
|
|
2025
|
+
if (this.filteredOptions.length === 0)
|
|
1670
2026
|
e += `<div class="ms__empty">${this.options.emptyMessage}</div>`;
|
|
2027
|
+
else if (this.isTreeMode())
|
|
2028
|
+
this.treeNodes.forEach((i, r) => {
|
|
2029
|
+
e += this.renderTreeNode(i, r);
|
|
2030
|
+
});
|
|
1671
2031
|
else if (this.options.isGroupsAllowed) {
|
|
1672
2032
|
const i = this.groupOptions(this.filteredOptions), r = /* @__PURE__ */ new Map();
|
|
1673
|
-
this.filteredOptions.forEach((
|
|
1674
|
-
if (e += '<div class="ms__group">',
|
|
2033
|
+
this.filteredOptions.forEach((a, n) => r.set(a, n)), Object.keys(i).forEach((a) => {
|
|
2034
|
+
if (e += '<div class="ms__group">', a !== "__ungrouped__")
|
|
1675
2035
|
if (this.options.renderGroupLabelContentCallback) {
|
|
1676
|
-
const
|
|
1677
|
-
if (
|
|
2036
|
+
const n = this.options.renderGroupLabelContentCallback(a);
|
|
2037
|
+
if (n instanceof HTMLElement) {
|
|
1678
2038
|
const l = document.createElement("div");
|
|
1679
|
-
l.className = "ms__group-label", l.appendChild(
|
|
2039
|
+
l.className = "ms__group-label", l.appendChild(n), e += l.outerHTML;
|
|
1680
2040
|
} else
|
|
1681
|
-
e += `<div class="ms__group-label">${
|
|
2041
|
+
e += `<div class="ms__group-label">${n}</div>`;
|
|
1682
2042
|
} else
|
|
1683
|
-
e += `<div class="ms__group-label">${
|
|
1684
|
-
i[
|
|
1685
|
-
e += this.renderOption(
|
|
2043
|
+
e += `<div class="ms__group-label">${a}</div>`;
|
|
2044
|
+
i[a].forEach((n) => {
|
|
2045
|
+
e += this.renderOption(n, r.get(n) ?? -1);
|
|
1686
2046
|
}), e += "</div>";
|
|
1687
2047
|
});
|
|
1688
2048
|
} else
|
|
@@ -1699,8 +2059,8 @@ class xs {
|
|
|
1699
2059
|
let s = "";
|
|
1700
2060
|
const i = this.renderActionsHTML(), r = this.options.actionsPosition === "bottom";
|
|
1701
2061
|
r || (s += i);
|
|
1702
|
-
const
|
|
1703
|
-
s += `<div class="ms__options ms__options--virtual" style="height: ${
|
|
2062
|
+
const a = this.options.maxHeight || "20rem", n = this.options.optionHeight ?? 50;
|
|
2063
|
+
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
2064
|
}
|
|
1705
2065
|
if (this.filteredOptions.length === 0) {
|
|
1706
2066
|
this.virtualScroll && (this.virtualScroll.destroy(), this.virtualScroll = null), this.optionsContainer.innerHTML = `<div class="ms__empty">${this.options.emptyMessage}</div>`;
|
|
@@ -1708,11 +2068,11 @@ class xs {
|
|
|
1708
2068
|
}
|
|
1709
2069
|
const e = this.options.optionHeight ?? 50, t = this.options.virtualScrollBuffer ?? 10;
|
|
1710
2070
|
requestAnimationFrame(() => {
|
|
1711
|
-
this.optionsContainer && (this.virtualScroll ? this.virtualScroll.setItems(this.filteredOptions) : this.virtualScroll = new
|
|
2071
|
+
this.optionsContainer && (this.virtualScroll ? this.virtualScroll.setItems(this.filteredOptions) : this.virtualScroll = new Ge({
|
|
1712
2072
|
container: this.optionsContainer,
|
|
1713
2073
|
itemHeight: e,
|
|
1714
2074
|
items: this.filteredOptions,
|
|
1715
|
-
renderItem: (s, i) => this.renderOption(s, i),
|
|
2075
|
+
renderItem: (s, i) => this.isTreeMode() ? this.renderTreeNode(this.treeNodes[i], i) : this.renderOption(s, i),
|
|
1716
2076
|
bufferSize: t,
|
|
1717
2077
|
onVisibleRangeChange: () => {
|
|
1718
2078
|
this.attachOptionTooltips();
|
|
@@ -1737,40 +2097,65 @@ class xs {
|
|
|
1737
2097
|
renderActionsHTML() {
|
|
1738
2098
|
const e = this.options.actionButtons;
|
|
1739
2099
|
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((c,
|
|
2100
|
+
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();
|
|
2101
|
+
if (e.forEach((c, m) => {
|
|
1742
2102
|
if (!(c.getIsVisibleCallback ? c.getIsVisibleCallback(this) : c.isVisible ?? !0)) return;
|
|
1743
|
-
let
|
|
1744
|
-
c.getIsDisabledCallback ?
|
|
1745
|
-
const b =
|
|
1746
|
-
let
|
|
2103
|
+
let p;
|
|
2104
|
+
c.getIsDisabledCallback ? p = c.getIsDisabledCallback(this) : c.isDisabled !== void 0 ? p = c.isDisabled : p = this.getBuiltInActionDisabled(c.action);
|
|
2105
|
+
const b = p ? " disabled" : "", v = c.getTextCallback ? c.getTextCallback(this) : c.text;
|
|
2106
|
+
let f = "";
|
|
1747
2107
|
if (c.getClassCallback) {
|
|
1748
|
-
const
|
|
1749
|
-
|
|
1750
|
-
} else c.cssClass && (
|
|
1751
|
-
const
|
|
1752
|
-
l.has(
|
|
2108
|
+
const y = c.getClassCallback(this);
|
|
2109
|
+
f = Array.isArray(y) ? ` ${y.join(" ")}` : y ? ` ${y}` : "";
|
|
2110
|
+
} else c.cssClass && (f = ` ${c.cssClass}`);
|
|
2111
|
+
const g = Math.max(1, Math.floor(c.row ?? 1)), _ = `<button type="button"${b} class="ms__action-btn${f}" data-action="${c.action}" data-button-index="${m}">${v}</button>`;
|
|
2112
|
+
l.has(g) || l.set(g, []), l.get(g).push(_);
|
|
1753
2113
|
}), l.size === 0) return "";
|
|
1754
|
-
const
|
|
1755
|
-
return `<div class="ms__actions${i}${r}${
|
|
2114
|
+
const d = Array.from(l.keys()).sort((c, m) => c - m).map((c) => `<div class="ms__actions-row" data-row="${c}">${l.get(c).join("")}</div>`).join("");
|
|
2115
|
+
return `<div class="ms__actions${i}${r}${a}${n}">${d}</div>`;
|
|
1756
2116
|
}
|
|
1757
2117
|
renderOption(e, t) {
|
|
1758
|
-
const s = this.getItemValue(e), i = this.getItemDisplayValue(e), r = this.getItemIcon(e),
|
|
1759
|
-
l &&
|
|
2118
|
+
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)), d = t === this.focusedIndex, c = this.matchingIndices.has(t), m = ["ms__option"];
|
|
2119
|
+
l && m.push("ms__option--selected"), d && m.push("ms__option--focused"), c && m.push("ms__option--matched"), n && m.push("ms__option--disabled");
|
|
1760
2120
|
const u = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "";
|
|
1761
|
-
let
|
|
1762
|
-
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && (
|
|
2121
|
+
let p = `<div class="${m.join(" ")}" data-value="${s}" data-index="${t}"${u}>`;
|
|
2122
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && (p += `<input type="checkbox" class="ms__checkbox" ${l ? "checked" : ""} ${n ? "disabled" : ""}>`), p += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
1763
2123
|
const b = {
|
|
1764
2124
|
index: t,
|
|
1765
2125
|
isSelected: l,
|
|
1766
|
-
isFocused:
|
|
2126
|
+
isFocused: d,
|
|
1767
2127
|
isMatched: c,
|
|
1768
|
-
isDisabled:
|
|
1769
|
-
},
|
|
1770
|
-
typeof
|
|
2128
|
+
isDisabled: n
|
|
2129
|
+
}, v = this.options.renderOptionContentCallback(e, b);
|
|
2130
|
+
typeof v == "string" ? p += v : p += v.outerHTML;
|
|
2131
|
+
} else
|
|
2132
|
+
r && (p += `<span class="ms__option-icon">${r}</span>`), p += '<div class="ms__option-text">', p += `<div class="ms__option-title">${this.highlightMatch(i, this.searchTerm)}</div>`, a && (p += `<div class="ms__option-subtitle">${a}</div>`), p += "</div>";
|
|
2133
|
+
return p += "</div>", p += "</div>", p;
|
|
2134
|
+
}
|
|
2135
|
+
/**
|
|
2136
|
+
* Render a single tree-mode row. Separate from `renderOption`: a tree row is
|
|
2137
|
+
* indented by its depth (via the `--ms-tree-depth` custom property) and
|
|
2138
|
+
* tagged branch/leaf, but otherwise carries the same selection/checkbox/
|
|
2139
|
+
* icon/subtitle content. The tree is always fully expanded, so there is no
|
|
2140
|
+
* chevron/toggle — every node is just a normal, selectable option.
|
|
2141
|
+
*/
|
|
2142
|
+
renderTreeNode(e, t) {
|
|
2143
|
+
const s = e.data, i = this.getItemValue(s), r = this.getItemDisplayValue(s), a = this.getItemIcon(s), n = this.getItemSubtitle(s), l = this.getItemDisabled(s), d = this.isCascadeMode() && this.cascadeIndex, c = d ? De(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, m = d ? c === "checked" : this.selectedValues.has(String(i)), u = c === "indeterminate", p = t === this.focusedIndex, b = e.isSelectable !== !1, v = e.level ?? 1, f = Math.max(0, v - 1), g = ["ms__option", "ms__option--tree"];
|
|
2144
|
+
g.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), m && g.push("ms__option--selected"), u && g.push("ms__option--indeterminate"), p && g.push("ms__option--focused"), l && g.push("ms__option--disabled"), b || g.push("ms__option--tree-unselectable");
|
|
2145
|
+
const _ = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", y = b ? "" : ' data-selectable="false"';
|
|
2146
|
+
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}>`;
|
|
2147
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && b && (w += `<input type="checkbox" class="${u ? "ms__checkbox ms__checkbox--indeterminate" : "ms__checkbox"}" ${m ? "checked" : ""}${u ? ' aria-checked="mixed"' : ""} ${l ? "disabled" : ""}>`), w += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
2148
|
+
const M = {
|
|
2149
|
+
index: t,
|
|
2150
|
+
isSelected: m,
|
|
2151
|
+
isFocused: p,
|
|
2152
|
+
isMatched: !1,
|
|
2153
|
+
isDisabled: l
|
|
2154
|
+
}, E = this.options.renderOptionContentCallback(s, M);
|
|
2155
|
+
w += typeof E == "string" ? E : E.outerHTML;
|
|
1771
2156
|
} else
|
|
1772
|
-
|
|
1773
|
-
return
|
|
2157
|
+
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>";
|
|
2158
|
+
return w += "</div>", w += "</div>", w;
|
|
1774
2159
|
}
|
|
1775
2160
|
highlightMatch(e, t) {
|
|
1776
2161
|
if (!t) return e;
|
|
@@ -1820,21 +2205,21 @@ class xs {
|
|
|
1820
2205
|
this.badgesContainer.className = `ms__badges ms__badges--${this.effectiveBadgesPosition}`, this.badgesContainer.innerHTML = e.map((r) => this.renderBadgeHTML(r, { displayMode: "badges", isInPopover: !1 })).join("");
|
|
1821
2206
|
else if (s === "partial") {
|
|
1822
2207
|
this.badgesContainer.className = `ms__badges ms__badges--${this.effectiveBadgesPosition}`;
|
|
1823
|
-
const r = this.options.badgesMaxVisible || 3,
|
|
1824
|
-
let
|
|
1825
|
-
|
|
2208
|
+
const r = this.options.badgesMaxVisible || 3, a = e.slice(0, r), n = t - r, l = a.map((c) => this.renderBadgeHTML(c, { displayMode: "partial", isInPopover: !1 })).join("");
|
|
2209
|
+
let d = "";
|
|
2210
|
+
n > 0 && (d = `
|
|
1826
2211
|
<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 ${
|
|
2212
|
+
<span class="ms__badge-text">${this.options.getCounterCallback ? this.options.getCounterCallback(t, n) : `+${n} more`}</span>
|
|
2213
|
+
<button type="button" class="ms__badge-remove" data-action="remove-hidden" aria-label="Remove ${n} hidden items"></button>
|
|
1829
2214
|
</div>
|
|
1830
|
-
`), this.badgesContainer.innerHTML = l +
|
|
2215
|
+
`), this.badgesContainer.innerHTML = l + d;
|
|
1831
2216
|
} else if (s === "compact")
|
|
1832
2217
|
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 = `${
|
|
2218
|
+
const r = e[0], a = this.getItemBadgeDisplayValue(r), n = t - 1;
|
|
2219
|
+
let l = a;
|
|
2220
|
+
if (n > 0) {
|
|
2221
|
+
const d = this.options.getCounterCallback ? this.options.getCounterCallback(t, n) : `+${n} more`;
|
|
2222
|
+
l = `${a} (${d})`;
|
|
1838
2223
|
}
|
|
1839
2224
|
this.badgesContainer.innerHTML = `
|
|
1840
2225
|
<div class="ms__badge" data-action="show-selected">
|
|
@@ -1890,14 +2275,14 @@ class xs {
|
|
|
1890
2275
|
if (this.options.beforeSearchCallback) {
|
|
1891
2276
|
const s = this.options.beforeSearchCallback(e);
|
|
1892
2277
|
if (s === null) {
|
|
1893
|
-
|
|
2278
|
+
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
2279
|
return;
|
|
1895
2280
|
}
|
|
1896
|
-
t = s, t !== e &&
|
|
2281
|
+
t = s, t !== e && O.debug(`[${this.instanceId}] beforeSearchCallback transformed: "${e}" -> "${t}"`);
|
|
1897
2282
|
}
|
|
1898
2283
|
if (this.options.searchCallback) {
|
|
1899
2284
|
if (t.length < this.options.minSearchLength) {
|
|
1900
|
-
this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.filteredOptions = [...this.allOptions],
|
|
2285
|
+
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
2286
|
return;
|
|
1902
2287
|
}
|
|
1903
2288
|
this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0);
|
|
@@ -1906,18 +2291,22 @@ class xs {
|
|
|
1906
2291
|
this.searchDebounceTimer = void 0, this.searchTerm === e && this.performAsyncSearch(e, t);
|
|
1907
2292
|
}, s) : await this.performAsyncSearch(e, t);
|
|
1908
2293
|
} else {
|
|
2294
|
+
if (this.isTreeMode()) {
|
|
2295
|
+
this.rebuildTreeVisible(), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown();
|
|
2296
|
+
return;
|
|
2297
|
+
}
|
|
1909
2298
|
if (!t)
|
|
1910
2299
|
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1;
|
|
1911
2300
|
else {
|
|
1912
2301
|
const s = this.options.searchMode || "filter", i = t.toLowerCase();
|
|
1913
2302
|
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,
|
|
2303
|
+
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
2304
|
else {
|
|
1916
2305
|
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear();
|
|
1917
2306
|
let r = -1;
|
|
1918
|
-
this.allOptions.forEach((
|
|
1919
|
-
this.getItemSearchValue(
|
|
1920
|
-
}), r >= 0 ? (this.focusedIndex = r,
|
|
2307
|
+
this.allOptions.forEach((a, n) => {
|
|
2308
|
+
this.getItemSearchValue(a).toLowerCase().includes(i) && (this.matchingIndices.add(n), r === -1 && (r = n));
|
|
2309
|
+
}), 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
2310
|
}
|
|
1922
2311
|
}
|
|
1923
2312
|
this.renderDropdown(), this.options.searchMode === "navigate" && this.focusedIndex >= 0 && this.scrollToFocused();
|
|
@@ -1941,15 +2330,15 @@ class xs {
|
|
|
1941
2330
|
async performAsyncSearch(e, t) {
|
|
1942
2331
|
this.abortInFlightSearch();
|
|
1943
2332
|
const s = new AbortController();
|
|
1944
|
-
this.searchAbortController = s, this.isLoading = !0, this.renderDropdown(),
|
|
2333
|
+
this.searchAbortController = s, this.isLoading = !0, this.renderDropdown(), O.debug(`[${this.instanceId}] Loading data for search term:`, t);
|
|
1945
2334
|
try {
|
|
1946
2335
|
const i = await this.options.searchCallback(t, s.signal);
|
|
1947
2336
|
if (s.signal.aborted || this.searchTerm !== e) return;
|
|
1948
2337
|
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(),
|
|
2338
|
+
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
2339
|
} catch (i) {
|
|
1951
2340
|
if (s.signal.aborted) return;
|
|
1952
|
-
|
|
2341
|
+
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
2342
|
} finally {
|
|
1954
2343
|
this.searchAbortController === s && (this.searchAbortController = void 0);
|
|
1955
2344
|
}
|
|
@@ -1977,7 +2366,7 @@ class xs {
|
|
|
1977
2366
|
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
2367
|
break;
|
|
1979
2368
|
case "Escape":
|
|
1980
|
-
e.preventDefault(), this.showSelectedPopover ? this.hideSelectedPopover() : this.input.value ? (this.input.value = "", this.searchTerm = "", this.
|
|
2369
|
+
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
2370
|
break;
|
|
1982
2371
|
case "Tab":
|
|
1983
2372
|
this.close();
|
|
@@ -1998,36 +2387,36 @@ class xs {
|
|
|
1998
2387
|
}
|
|
1999
2388
|
handleDropdownClick(e) {
|
|
2000
2389
|
var i;
|
|
2001
|
-
|
|
2390
|
+
L.debug(`[${this.instanceId}] Dropdown clicked`, { target: e.target.className }), e.stopPropagation();
|
|
2002
2391
|
const t = e.target.closest("[data-action]");
|
|
2003
2392
|
if (t) {
|
|
2004
2393
|
e.preventDefault();
|
|
2005
2394
|
const r = t.dataset.action;
|
|
2006
|
-
if (
|
|
2395
|
+
if (L.debug(`[${this.instanceId}] Action button clicked:`, r), r === "select-all")
|
|
2007
2396
|
this.selectAll();
|
|
2008
2397
|
else if (r === "clear-all")
|
|
2009
2398
|
this.clearAll();
|
|
2010
2399
|
else if (r === "custom") {
|
|
2011
|
-
const
|
|
2012
|
-
|
|
2400
|
+
const a = parseInt(t.dataset.buttonIndex || "-1"), n = (i = this.options.actionButtons) == null ? void 0 : i[a];
|
|
2401
|
+
n != null && n.onClick && n.onClick(this);
|
|
2013
2402
|
}
|
|
2014
2403
|
return;
|
|
2015
2404
|
}
|
|
2016
2405
|
const s = e.target.closest(".ms__option");
|
|
2017
2406
|
if (s && !s.classList.contains("ms__option--disabled")) {
|
|
2018
2407
|
e.preventDefault();
|
|
2019
|
-
const r = s.dataset.value,
|
|
2020
|
-
|
|
2408
|
+
const r = s.dataset.value, a = this.filteredOptions.findIndex((n) => String(this.getItemValue(n)) === r);
|
|
2409
|
+
L.debug(`[${this.instanceId}] Option clicked:`, {
|
|
2021
2410
|
value: r,
|
|
2022
|
-
optionIndex:
|
|
2411
|
+
optionIndex: a,
|
|
2023
2412
|
closeOnSelect: this.options.isCloseOnSelect,
|
|
2024
2413
|
placeholder: this.options.searchPlaceholder
|
|
2025
|
-
}),
|
|
2414
|
+
}), a >= 0 && (this.focusedIndex = a, this.toggleOption(this.filteredOptions[a]), this.isOpen && this.input.focus());
|
|
2026
2415
|
}
|
|
2027
2416
|
}
|
|
2028
2417
|
handleBadgeClick(e) {
|
|
2029
2418
|
if (e.target.closest('[data-action="clear-count"]')) {
|
|
2030
|
-
e.preventDefault(), e.stopPropagation(),
|
|
2419
|
+
e.preventDefault(), e.stopPropagation(), L.debug(`[${this.instanceId}] Clear count button clicked`), this.clearAll();
|
|
2031
2420
|
return;
|
|
2032
2421
|
}
|
|
2033
2422
|
if (e.target.closest('[data-action="show-selected"]')) {
|
|
@@ -2037,17 +2426,17 @@ class xs {
|
|
|
2037
2426
|
const i = e.target.closest(".ms__badge-remove");
|
|
2038
2427
|
if (i) {
|
|
2039
2428
|
if (e.preventDefault(), e.stopPropagation(), i.dataset.action === "remove-hidden") {
|
|
2040
|
-
|
|
2429
|
+
L.debug(`[${this.instanceId}] Remove hidden items button clicked`);
|
|
2041
2430
|
const l = this.options.badgesMaxVisible || 3;
|
|
2042
|
-
Array.from(this.selectedOptions.values()).slice(l).forEach((
|
|
2431
|
+
Array.from(this.selectedOptions.values()).slice(l).forEach((m) => this.interactiveDeselect(m));
|
|
2043
2432
|
return;
|
|
2044
2433
|
}
|
|
2045
|
-
const
|
|
2046
|
-
|
|
2434
|
+
const a = i.dataset.value, n = this.selectedOptions.get(a);
|
|
2435
|
+
n && this.interactiveDeselect(n);
|
|
2047
2436
|
return;
|
|
2048
2437
|
}
|
|
2049
2438
|
if (e.target.closest(".ms__badge--more") && !e.target.closest(".ms__badge-remove")) {
|
|
2050
|
-
e.preventDefault(), e.stopPropagation(),
|
|
2439
|
+
e.preventDefault(), e.stopPropagation(), L.debug(`[${this.instanceId}] '+X more' badge clicked, showing popover`), this.toggleSelectedPopover();
|
|
2051
2440
|
return;
|
|
2052
2441
|
}
|
|
2053
2442
|
}
|
|
@@ -2055,16 +2444,16 @@ class xs {
|
|
|
2055
2444
|
var i;
|
|
2056
2445
|
const t = e.composedPath();
|
|
2057
2446
|
if (this.showSelectedPopover && !t.some(
|
|
2058
|
-
(
|
|
2447
|
+
(a) => a instanceof Node && (this.selectedPopover.contains(a) || this.counter.contains(a) || a.closest && a.closest('[data-action="show-selected"]'))
|
|
2059
2448
|
)) {
|
|
2060
|
-
|
|
2449
|
+
R.debug(`[${this.instanceId}] Closing selected popover due to click outside`), this.hideSelectedPopover();
|
|
2061
2450
|
return;
|
|
2062
2451
|
}
|
|
2063
2452
|
if (!this.isOpen) return;
|
|
2064
2453
|
const s = t.some(
|
|
2065
2454
|
(r) => r instanceof Node && (this.element.contains(r) || this.dropdown.contains(r) || this.hint && this.hint.contains(r))
|
|
2066
2455
|
);
|
|
2067
|
-
|
|
2456
|
+
L.debug(`[${this.instanceId}] handleClickOutside`, {
|
|
2068
2457
|
target: e.target.className,
|
|
2069
2458
|
targetTag: e.target.tagName,
|
|
2070
2459
|
clickedInside: s,
|
|
@@ -2073,45 +2462,61 @@ class xs {
|
|
|
2073
2462
|
elementContains: t.some((r) => r instanceof Node && this.element.contains(r)),
|
|
2074
2463
|
dropdownContains: t.some((r) => r instanceof Node && this.dropdown.contains(r)),
|
|
2075
2464
|
isConnected: this.dropdown.isConnected
|
|
2076
|
-
}), s || (
|
|
2465
|
+
}), s || (L.warn(`[${this.instanceId}] Closing dropdown due to click outside`), this.close());
|
|
2077
2466
|
}
|
|
2078
2467
|
/**
|
|
2079
2468
|
* Move focus by computing a new index from (current, total).
|
|
2080
2469
|
* Returning -1 from `compute` is a no-op (used for empty list / no match).
|
|
2081
2470
|
*/
|
|
2082
|
-
focusBy(e) {
|
|
2083
|
-
const
|
|
2084
|
-
if (
|
|
2085
|
-
const
|
|
2086
|
-
|
|
2471
|
+
focusBy(e, t = 1) {
|
|
2472
|
+
const s = this.filteredOptions.length;
|
|
2473
|
+
if (s === 0) return;
|
|
2474
|
+
const i = e(this.focusedIndex, s);
|
|
2475
|
+
if (i < 0) return;
|
|
2476
|
+
const r = this.resolveSelectableIndex(i, t, s);
|
|
2477
|
+
r < 0 || (this.focusedIndex = r, this.renderDropdown(), this.scrollToFocused());
|
|
2478
|
+
}
|
|
2479
|
+
/**
|
|
2480
|
+
* Given a target index and a preferred direction, return the nearest index
|
|
2481
|
+
* whose node is selectable (skipping non-selectable tree nodes). Falls back to
|
|
2482
|
+
* the opposite direction, then to -1 if nothing is selectable. No-op outside
|
|
2483
|
+
* tree mode.
|
|
2484
|
+
*/
|
|
2485
|
+
resolveSelectableIndex(e, t, s) {
|
|
2486
|
+
if (!this.isTreeMode()) return e;
|
|
2487
|
+
let i = e;
|
|
2488
|
+
for (; i >= 0 && i < s && !this.isIndexSelectable(i); ) i += t;
|
|
2489
|
+
if (i < 0 || i >= s)
|
|
2490
|
+
for (i = e - t; i >= 0 && i < s && !this.isIndexSelectable(i); ) i -= t;
|
|
2491
|
+
return i >= 0 && i < s ? i : -1;
|
|
2087
2492
|
}
|
|
2088
2493
|
focusNext() {
|
|
2089
|
-
this.focusBy((e, t) => Math.min(t - 1, e + 1));
|
|
2494
|
+
this.focusBy((e, t) => Math.min(t - 1, e + 1), 1);
|
|
2090
2495
|
}
|
|
2091
2496
|
focusPrevious() {
|
|
2092
|
-
this.focusBy((e) => Math.max(0, e - 1));
|
|
2497
|
+
this.focusBy((e) => Math.max(0, e - 1), -1);
|
|
2093
2498
|
}
|
|
2094
2499
|
focusFirst() {
|
|
2095
|
-
this.focusBy(() => 0);
|
|
2500
|
+
this.focusBy(() => 0, 1);
|
|
2096
2501
|
}
|
|
2097
2502
|
focusLast() {
|
|
2098
|
-
this.focusBy((e, t) => t - 1);
|
|
2503
|
+
this.focusBy((e, t) => t - 1, -1);
|
|
2099
2504
|
}
|
|
2100
2505
|
focusPageUp() {
|
|
2101
|
-
this.focusBy((e) => Math.max(0, e - 10));
|
|
2506
|
+
this.focusBy((e) => Math.max(0, e - 10), -1);
|
|
2102
2507
|
}
|
|
2103
2508
|
focusPageDown() {
|
|
2104
|
-
this.focusBy((e, t) => Math.min(t - 1, e + 10));
|
|
2509
|
+
this.focusBy((e, t) => Math.min(t - 1, e + 10), 1);
|
|
2105
2510
|
}
|
|
2106
2511
|
focusNextMatch() {
|
|
2107
2512
|
if (this.matchingIndices.size === 0) return;
|
|
2108
2513
|
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]),
|
|
2514
|
+
this.focusBy(() => e[s]), L.debug(`[${this.instanceId}] Jumped to next match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
|
|
2110
2515
|
}
|
|
2111
2516
|
focusPreviousMatch() {
|
|
2112
2517
|
if (this.matchingIndices.size === 0) return;
|
|
2113
2518
|
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]),
|
|
2519
|
+
this.focusBy(() => e[s]), L.debug(`[${this.instanceId}] Jumped to previous match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
|
|
2115
2520
|
}
|
|
2116
2521
|
scrollToFocused() {
|
|
2117
2522
|
if (this.virtualScroll && this.focusedIndex >= 0)
|
|
@@ -2123,11 +2528,22 @@ class xs {
|
|
|
2123
2528
|
}
|
|
2124
2529
|
toggleOption(e) {
|
|
2125
2530
|
if (this.getItemDisabled(e)) {
|
|
2126
|
-
|
|
2531
|
+
L.debug(`[${this.instanceId}] toggleOption ignored — option is disabled`);
|
|
2532
|
+
return;
|
|
2533
|
+
}
|
|
2534
|
+
if (!this.isOptionSelectable(e)) {
|
|
2535
|
+
L.debug(`[${this.instanceId}] toggleOption ignored — node is not selectable`);
|
|
2127
2536
|
return;
|
|
2128
2537
|
}
|
|
2129
2538
|
const t = this.getItemValue(e), s = String(t);
|
|
2130
|
-
|
|
2539
|
+
if (L.debug(`[${this.instanceId}] toggleOption called`, { value: t, multiple: this.options.isMultipleEnabled }), this.isCascadeMode() && this.cascadeIndex) {
|
|
2540
|
+
const a = this.cascadeIndex.nodeByValue.get(s);
|
|
2541
|
+
if (a) {
|
|
2542
|
+
this.toggleTreeCascade(a), this.options.isCloseOnSelect && this.close();
|
|
2543
|
+
return;
|
|
2544
|
+
}
|
|
2545
|
+
}
|
|
2546
|
+
(this.selectedValues.has(s) ? this.interactiveDeselect(e) : this.interactiveSelect(e)) && (this.options.isMultipleEnabled ? this.options.isCloseOnSelect && this.close() : this.close());
|
|
2131
2547
|
}
|
|
2132
2548
|
/**
|
|
2133
2549
|
* The single funnel for an interactive (user-initiated) selection. Consults
|
|
@@ -2137,7 +2553,7 @@ class xs {
|
|
|
2137
2553
|
* Returns true if the option was selected, false if the veto blocked it.
|
|
2138
2554
|
*/
|
|
2139
2555
|
interactiveSelect(e) {
|
|
2140
|
-
return this.options.beforeSelectCallback && this.options.beforeSelectCallback(e, this.getSelected()) === !1 ? (
|
|
2556
|
+
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
2557
|
}
|
|
2142
2558
|
/**
|
|
2143
2559
|
* The single funnel for an interactive (user-initiated) deselection. Every
|
|
@@ -2148,16 +2564,16 @@ class xs {
|
|
|
2148
2564
|
* Returns true if the option was deselected, false if the veto blocked it.
|
|
2149
2565
|
*/
|
|
2150
2566
|
interactiveDeselect(e) {
|
|
2151
|
-
return this.options.beforeDeselectCallback && this.options.beforeDeselectCallback(e, this.getSelected()) === !1 ? (
|
|
2567
|
+
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
2568
|
}
|
|
2153
2569
|
async handleAddNew(e) {
|
|
2154
2570
|
if (this.options.addNewCallback)
|
|
2155
2571
|
try {
|
|
2156
|
-
|
|
2572
|
+
O.debug(`[${this.instanceId}] Adding new option:`, e);
|
|
2157
2573
|
const t = await this.options.addNewCallback(e);
|
|
2158
2574
|
this.allOptions.push(t), this.filteredOptions.push(t), this.selectOption(t), this.input.value = "", this.renderDropdown(), this.renderBadges(), this.options.isCloseOnSelect && this.close();
|
|
2159
2575
|
} catch (t) {
|
|
2160
|
-
|
|
2576
|
+
O.error(`[${this.instanceId}] Error adding new option:`, t);
|
|
2161
2577
|
}
|
|
2162
2578
|
}
|
|
2163
2579
|
selectOption(e) {
|
|
@@ -2170,10 +2586,10 @@ class xs {
|
|
|
2170
2586
|
}
|
|
2171
2587
|
selectAll() {
|
|
2172
2588
|
const e = [];
|
|
2173
|
-
this.filteredOptions.forEach((t) => {
|
|
2174
|
-
if (this.getItemDisabled(t)) return;
|
|
2175
|
-
const
|
|
2176
|
-
this.selectedValues.has(
|
|
2589
|
+
this.filteredOptions.forEach((t, s) => {
|
|
2590
|
+
if (this.getItemDisabled(t) || !this.isIndexSelectable(s)) return;
|
|
2591
|
+
const i = String(this.getItemValue(t));
|
|
2592
|
+
this.selectedValues.has(i) || (this.selectedValues.add(i), this.selectedOptions.set(i, t), e.push(t));
|
|
2177
2593
|
}), this.commit({ added: e });
|
|
2178
2594
|
}
|
|
2179
2595
|
clearAll() {
|
|
@@ -2191,10 +2607,10 @@ class xs {
|
|
|
2191
2607
|
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
2608
|
}
|
|
2193
2609
|
open() {
|
|
2194
|
-
|
|
2610
|
+
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
2611
|
}
|
|
2196
2612
|
close() {
|
|
2197
|
-
|
|
2613
|
+
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
2614
|
}
|
|
2199
2615
|
/**
|
|
2200
2616
|
* Anchor a floating panel (dropdown or selected-items popover) below/above the input with
|
|
@@ -2205,24 +2621,24 @@ class xs {
|
|
|
2205
2621
|
*/
|
|
2206
2622
|
anchorFloatingPanel(e, t) {
|
|
2207
2623
|
const s = {
|
|
2208
|
-
...
|
|
2209
|
-
getOffsetParent: () =>
|
|
2624
|
+
...dt,
|
|
2625
|
+
getOffsetParent: () => Es(this.input)
|
|
2210
2626
|
};
|
|
2211
|
-
return
|
|
2627
|
+
return Ce(this.input, e, () => {
|
|
2212
2628
|
var l;
|
|
2213
2629
|
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
|
-
|
|
2630
|
+
const i = ((l = t.isLocked) == null ? void 0 : l.call(t)) ?? !0, r = t.getPlacement(), a = i && r ? r : "bottom-start", n = [
|
|
2631
|
+
Se(4),
|
|
2632
|
+
...i && r ? [] : [mt()],
|
|
2633
|
+
Te({ padding: 8 })
|
|
2218
2634
|
];
|
|
2219
|
-
|
|
2635
|
+
Ie(this.input, e, { placement: a, strategy: "fixed", middleware: n, platform: s }).then(({ x: d, y: c, placement: m }) => {
|
|
2220
2636
|
var u;
|
|
2221
|
-
r || t.setPlacement(
|
|
2637
|
+
r || t.setPlacement(m), Object.assign(e.style, {
|
|
2222
2638
|
position: "fixed",
|
|
2223
|
-
left: `${
|
|
2639
|
+
left: `${d}px`,
|
|
2224
2640
|
top: `${c}px`
|
|
2225
|
-
}), this.verifyPanelLanded(e,
|
|
2641
|
+
}), this.verifyPanelLanded(e, d, c), (u = t.afterPosition) == null || u.call(t);
|
|
2226
2642
|
});
|
|
2227
2643
|
});
|
|
2228
2644
|
}
|
|
@@ -2239,19 +2655,19 @@ class xs {
|
|
|
2239
2655
|
*/
|
|
2240
2656
|
verifyPanelLanded(e, t, s) {
|
|
2241
2657
|
if (this.positioningDriftWarned) return;
|
|
2242
|
-
const i = e.getBoundingClientRect(), r = i.x - t,
|
|
2243
|
-
if (Math.abs(r) < 1 && Math.abs(
|
|
2658
|
+
const i = e.getBoundingClientRect(), r = i.x - t, a = i.y - s;
|
|
2659
|
+
if (Math.abs(r) < 1 && Math.abs(a) < 1) return;
|
|
2244
2660
|
this.positioningDriftWarned = !0;
|
|
2245
|
-
const
|
|
2661
|
+
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)", d = n ? Ds(n) : "";
|
|
2246
2662
|
console.warn(
|
|
2247
|
-
`[@keenmate/web-multiselect] Dropdown panel rendered ${r.toFixed(0)}px / ${
|
|
2663
|
+
`[@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}` + (d ? ` (has ${d})` : "") + ".\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
2664
|
);
|
|
2249
2665
|
}
|
|
2250
2666
|
positionDropdown() {
|
|
2251
2667
|
this.dropdownCleanup = this.anchorFloatingPanel(this.dropdown, {
|
|
2252
2668
|
getPlacement: () => this.dropdownPlacement,
|
|
2253
2669
|
setPlacement: (e) => {
|
|
2254
|
-
this.dropdownPlacement = e,
|
|
2670
|
+
this.dropdownPlacement = e, R.debug(`[${this.instanceId}] Locked dropdown placement:`, e);
|
|
2255
2671
|
},
|
|
2256
2672
|
isLocked: () => !!this.options.isPlacementLocked,
|
|
2257
2673
|
applyMaxWidth: !0,
|
|
@@ -2261,18 +2677,18 @@ class xs {
|
|
|
2261
2677
|
});
|
|
2262
2678
|
}
|
|
2263
2679
|
positionHint() {
|
|
2264
|
-
this.hint && (this.hintCleanup && this.hintCleanup(), this.hintCleanup =
|
|
2680
|
+
this.hint && (this.hintCleanup && this.hintCleanup(), this.hintCleanup = Ce(
|
|
2265
2681
|
this.input,
|
|
2266
2682
|
this.hint,
|
|
2267
2683
|
() => {
|
|
2268
2684
|
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"))),
|
|
2685
|
+
this.dropdownPlacement && (this.dropdownPlacement.startsWith("bottom") ? e = this.dropdownPlacement.replace("bottom", "top") : this.dropdownPlacement.startsWith("top") && (e = this.dropdownPlacement.replace("top", "bottom"))), Ie(this.input, this.hint, {
|
|
2270
2686
|
placement: e,
|
|
2271
2687
|
strategy: "fixed",
|
|
2272
2688
|
middleware: [
|
|
2273
|
-
|
|
2689
|
+
Se(4),
|
|
2274
2690
|
// Don't use flip() - we want hint to stay opposite of dropdown
|
|
2275
|
-
|
|
2691
|
+
Te({ padding: 8 })
|
|
2276
2692
|
]
|
|
2277
2693
|
}).then(({ x: t, y: s }) => {
|
|
2278
2694
|
Object.assign(this.hint.style, {
|
|
@@ -2292,7 +2708,7 @@ class xs {
|
|
|
2292
2708
|
this.selectedValues.add(String(s));
|
|
2293
2709
|
}), this.reconcileSelectedOptions(), this.renderBadges();
|
|
2294
2710
|
} catch (t) {
|
|
2295
|
-
|
|
2711
|
+
O.error(`[${this.instanceId}] Failed to parse initial values:`, t);
|
|
2296
2712
|
}
|
|
2297
2713
|
}
|
|
2298
2714
|
/**
|
|
@@ -2314,13 +2730,13 @@ class xs {
|
|
|
2314
2730
|
this.showSelectedPopover ? this.hideSelectedPopover() : this.showPopover();
|
|
2315
2731
|
}
|
|
2316
2732
|
showPopover() {
|
|
2317
|
-
|
|
2733
|
+
R.debug(`[${this.instanceId}] showPopover() called`), this.isOpen && this.close(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ms__selected-popover--visible");
|
|
2318
2734
|
const e = this.options.virtualScrollThreshold ?? 100;
|
|
2319
2735
|
this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.positionSelectedPopover();
|
|
2320
2736
|
}
|
|
2321
2737
|
hideSelectedPopover() {
|
|
2322
2738
|
var e;
|
|
2323
|
-
|
|
2739
|
+
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
2740
|
for (const t of Array.from(this.tooltips.keys()))
|
|
2325
2741
|
t.startsWith("popover-") && ((e = this.tooltips.get(t)) == null || e.destroy(), this.tooltips.delete(t));
|
|
2326
2742
|
}
|
|
@@ -2342,27 +2758,27 @@ class xs {
|
|
|
2342
2758
|
}
|
|
2343
2759
|
renderSelectedPopoverVirtual(e, t) {
|
|
2344
2760
|
if (this.selectedPopoverVirtualScroll) {
|
|
2345
|
-
const
|
|
2346
|
-
|
|
2761
|
+
const n = this.selectedPopover.querySelector(".ms__selected-popover-header span");
|
|
2762
|
+
n && (n.textContent = `Selected Items (${t})`);
|
|
2347
2763
|
} else {
|
|
2348
|
-
const
|
|
2764
|
+
const n = this.options.badgeHeight ?? 36, l = `
|
|
2349
2765
|
<div class="ms__selected-popover-header">
|
|
2350
2766
|
<span>Selected Items (${t})</span>
|
|
2351
2767
|
<button type="button" class="ms__selected-popover-close" aria-label="Close"></button>
|
|
2352
2768
|
</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: ${
|
|
2769
|
+
<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
2770
|
`;
|
|
2355
2771
|
this.selectedPopover.innerHTML = l, this.selectedPopoverContainer = this.selectedPopover.querySelector(".ms__selected-popover-body");
|
|
2356
2772
|
}
|
|
2357
2773
|
if (!this.selectedPopoverContainer) return;
|
|
2358
|
-
const r = (this.options.badgeHeight ?? 36) + 4,
|
|
2774
|
+
const r = (this.options.badgeHeight ?? 36) + 4, a = this.options.virtualScrollBuffer ?? 10;
|
|
2359
2775
|
requestAnimationFrame(() => {
|
|
2360
|
-
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new
|
|
2776
|
+
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new Ge({
|
|
2361
2777
|
container: this.selectedPopoverContainer,
|
|
2362
2778
|
itemHeight: r,
|
|
2363
2779
|
items: e,
|
|
2364
|
-
renderItem: (
|
|
2365
|
-
bufferSize:
|
|
2780
|
+
renderItem: (n) => this.renderBadgeHTML(n, { displayMode: this.options.badgesDisplayMode || "badges", isInPopover: !0 }),
|
|
2781
|
+
bufferSize: a,
|
|
2366
2782
|
onVisibleRangeChange: () => {
|
|
2367
2783
|
this.attachBadgeTooltips(this.selectedPopoverContainer);
|
|
2368
2784
|
}
|
|
@@ -2383,22 +2799,22 @@ class xs {
|
|
|
2383
2799
|
let i;
|
|
2384
2800
|
const r = t.isInPopover ? this.options.renderSelectedItemContentCallback : void 0;
|
|
2385
2801
|
if (r) {
|
|
2386
|
-
const
|
|
2387
|
-
i = typeof
|
|
2802
|
+
const d = r(e);
|
|
2803
|
+
i = typeof d == "string" ? d : d.outerHTML;
|
|
2388
2804
|
} else if (this.options.renderBadgeContentCallback) {
|
|
2389
|
-
const
|
|
2390
|
-
i = typeof
|
|
2805
|
+
const d = this.options.renderBadgeContentCallback(e, t);
|
|
2806
|
+
i = typeof d == "string" ? d : d.outerHTML;
|
|
2391
2807
|
} else
|
|
2392
2808
|
i = this.getItemBadgeDisplayValue(e);
|
|
2393
|
-
const
|
|
2394
|
-
let
|
|
2395
|
-
if (
|
|
2396
|
-
const
|
|
2397
|
-
|
|
2809
|
+
const a = t.isInPopover ? this.options.getSelectedItemClassCallback || this.options.getBadgeClassCallback : this.options.getBadgeClassCallback;
|
|
2810
|
+
let n = "ms__badge";
|
|
2811
|
+
if (a) {
|
|
2812
|
+
const d = a(e), c = Array.isArray(d) ? d : [d];
|
|
2813
|
+
n += " " + c.filter((m) => m).join(" ");
|
|
2398
2814
|
}
|
|
2399
2815
|
const l = this.getItemBadgeDisplayValue(e);
|
|
2400
2816
|
return `
|
|
2401
|
-
<div class="${
|
|
2817
|
+
<div class="${n}">
|
|
2402
2818
|
<span class="ms__badge-text">${i}</span>
|
|
2403
2819
|
<button type="button" class="ms__badge-remove" data-value="${s}" aria-label="Remove ${l}"></button>
|
|
2404
2820
|
</div>
|
|
@@ -2420,7 +2836,7 @@ class xs {
|
|
|
2420
2836
|
this.selectedPopoverCleanup = this.anchorFloatingPanel(this.selectedPopover, {
|
|
2421
2837
|
getPlacement: () => this.selectedPopoverPlacement,
|
|
2422
2838
|
setPlacement: (e) => {
|
|
2423
|
-
this.selectedPopoverPlacement = e,
|
|
2839
|
+
this.selectedPopoverPlacement = e, R.debug(`[${this.instanceId}] Locked popover placement:`, e);
|
|
2424
2840
|
}
|
|
2425
2841
|
});
|
|
2426
2842
|
}
|
|
@@ -2471,13 +2887,15 @@ class xs {
|
|
|
2471
2887
|
updateOptions(e) {
|
|
2472
2888
|
const t = !!this.hint, s = "searchHint" in e ? !!e.searchHint : t;
|
|
2473
2889
|
if (t !== s) return !1;
|
|
2474
|
-
|
|
2890
|
+
Object.assign(this.options, e);
|
|
2891
|
+
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;
|
|
2892
|
+
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
2893
|
"ms--no-checkboxes",
|
|
2476
2894
|
!this.options.isCheckboxesShown || !this.options.isMultipleEnabled
|
|
2477
2895
|
), "badgesPosition" in e) {
|
|
2478
2896
|
this.effectiveBadgesPosition = this.options.badgesPosition || "bottom", this.isRTL && (this.effectiveBadgesPosition === "left" ? this.effectiveBadgesPosition = "right" : this.effectiveBadgesPosition === "right" && (this.effectiveBadgesPosition = "left"));
|
|
2479
|
-
const
|
|
2480
|
-
|
|
2897
|
+
const r = this.element.querySelector(".ms__wrapper");
|
|
2898
|
+
r == null || r.classList.toggle(
|
|
2481
2899
|
"ms__wrapper--inline",
|
|
2482
2900
|
this.effectiveBadgesPosition === "left" || this.effectiveBadgesPosition === "right"
|
|
2483
2901
|
);
|
|
@@ -2511,7 +2929,7 @@ class xs {
|
|
|
2511
2929
|
spawnTooltip(e) {
|
|
2512
2930
|
var r;
|
|
2513
2931
|
(r = this.tooltips.get(e.id)) == null || r.destroy();
|
|
2514
|
-
const t = this.element.getRootNode(), s = t instanceof ShadowRoot ? t : null, i = new
|
|
2932
|
+
const t = this.element.getRootNode(), s = t instanceof ShadowRoot ? t : null, i = new Ts({
|
|
2515
2933
|
trigger: e.trigger,
|
|
2516
2934
|
container: this.options.container ?? s ?? document.body,
|
|
2517
2935
|
content: e.content,
|
|
@@ -2542,22 +2960,22 @@ ${s}` : t;
|
|
|
2542
2960
|
attachBadgeTooltips(e) {
|
|
2543
2961
|
if (!this.options.isBadgeTooltipsEnabled) return;
|
|
2544
2962
|
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 c = `${i}${l}`,
|
|
2963
|
+
if (s.querySelectorAll(".ms__badge:not(.ms__badge--more)").forEach((a) => {
|
|
2964
|
+
const n = a.querySelector(".ms__badge-remove");
|
|
2965
|
+
if (!n) return;
|
|
2966
|
+
const l = n.dataset.value, d = this.selectedOptions.get(l);
|
|
2967
|
+
if (!d) return;
|
|
2968
|
+
const c = `${i}${l}`, m = `${i}${l}-remove`, u = a.querySelector(".ms__badge-text");
|
|
2551
2969
|
u && this.spawnTooltip({
|
|
2552
2970
|
id: c,
|
|
2553
2971
|
trigger: u,
|
|
2554
|
-
content: this.buildBadgeTooltipContent(
|
|
2972
|
+
content: this.buildBadgeTooltipContent(d)
|
|
2555
2973
|
});
|
|
2556
|
-
const
|
|
2974
|
+
const p = this.getItemBadgeDisplayValue(d);
|
|
2557
2975
|
this.spawnTooltip({
|
|
2558
|
-
id:
|
|
2559
|
-
trigger:
|
|
2560
|
-
content: this.buildRemoveButtonTooltipText(
|
|
2976
|
+
id: m,
|
|
2977
|
+
trigger: n,
|
|
2978
|
+
content: this.buildRemoveButtonTooltipText(p, d),
|
|
2561
2979
|
// Keep parent badge tooltip from overlapping the remove-button tooltip.
|
|
2562
2980
|
onBeforeShow: () => {
|
|
2563
2981
|
var b;
|
|
@@ -2565,13 +2983,13 @@ ${s}` : t;
|
|
|
2565
2983
|
}
|
|
2566
2984
|
});
|
|
2567
2985
|
}), !t) {
|
|
2568
|
-
const
|
|
2569
|
-
if (
|
|
2570
|
-
const l = this.options.badgesMaxVisible || 3,
|
|
2986
|
+
const a = this.badgesContainer.querySelector(".ms__badge--more"), n = a == null ? void 0 : a.querySelector(".ms__badge-remove");
|
|
2987
|
+
if (n && n.dataset.action === "remove-hidden") {
|
|
2988
|
+
const l = this.options.badgesMaxVisible || 3, d = this.selectedOptions.size - l;
|
|
2571
2989
|
this.spawnTooltip({
|
|
2572
2990
|
id: "more-badge-remove",
|
|
2573
|
-
trigger:
|
|
2574
|
-
content: this.buildRemoveButtonTooltipText(`${
|
|
2991
|
+
trigger: n,
|
|
2992
|
+
content: this.buildRemoveButtonTooltipText(`${d} hidden items`)
|
|
2575
2993
|
});
|
|
2576
2994
|
}
|
|
2577
2995
|
}
|
|
@@ -2596,11 +3014,11 @@ ${s}` : t;
|
|
|
2596
3014
|
if (i < 0) return;
|
|
2597
3015
|
const r = this.filteredOptions[i];
|
|
2598
3016
|
if (!r) return;
|
|
2599
|
-
const
|
|
2600
|
-
|
|
3017
|
+
const a = this.buildOptionTooltipContent(r);
|
|
3018
|
+
a && this.spawnTooltip({
|
|
2601
3019
|
id: `option-${i}`,
|
|
2602
3020
|
trigger: s,
|
|
2603
|
-
content:
|
|
3021
|
+
content: a,
|
|
2604
3022
|
// Default to `top-start` (anchored to the row's start edge) so the tooltip doesn't
|
|
2605
3023
|
// center on a full-width row. Falls through to the badge settings for delay/offset.
|
|
2606
3024
|
placement: this.options.optionTooltipPlacement ?? "top-start",
|
|
@@ -2623,15 +3041,15 @@ ${s}` : t;
|
|
|
2623
3041
|
}
|
|
2624
3042
|
attachActionButtonTooltips() {
|
|
2625
3043
|
this.dropdown.querySelectorAll(".ms__action-btn").forEach((t) => {
|
|
2626
|
-
var
|
|
3044
|
+
var d, c;
|
|
2627
3045
|
const s = t, i = s.dataset.action;
|
|
2628
3046
|
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;
|
|
3047
|
+
const r = parseInt(s.dataset.buttonIndex || "-1"), a = r >= 0 ? (d = this.options.actionButtons) == null ? void 0 : d[r] : (c = this.options.actionButtons) == null ? void 0 : c.find((m) => m.action === i);
|
|
2632
3048
|
if (!a) return;
|
|
3049
|
+
const n = a.getTooltipCallback ? a.getTooltipCallback(this) : a.tooltip;
|
|
3050
|
+
if (!n) return;
|
|
2633
3051
|
const l = `action-${r >= 0 ? r : i}`;
|
|
2634
|
-
this.spawnTooltip({ id: l, trigger: s, content:
|
|
3052
|
+
this.spawnTooltip({ id: l, trigger: s, content: n });
|
|
2635
3053
|
});
|
|
2636
3054
|
}
|
|
2637
3055
|
/**
|
|
@@ -2657,11 +3075,11 @@ ${s}` : t;
|
|
|
2657
3075
|
// PUBLIC API
|
|
2658
3076
|
// ========================================================================
|
|
2659
3077
|
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"),
|
|
3078
|
+
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
3079
|
}
|
|
2662
3080
|
}
|
|
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
|
-
},
|
|
3081
|
+
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}.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 {
|
|
3082
|
+
}, Oe = [
|
|
2665
3083
|
// Strings
|
|
2666
3084
|
{ attr: "search-hint", key: "searchHint", parser: "string-or-undefined" },
|
|
2667
3085
|
{ attr: "search-placeholder", key: "searchPlaceholder", parser: "string", default: "Search..." },
|
|
@@ -2680,8 +3098,30 @@ const Cs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
2680
3098
|
{ attr: "search-value-member", key: "searchValueMember", parser: "string-or-undefined" },
|
|
2681
3099
|
{ attr: "icon-member", key: "iconMember", parser: "string-or-undefined" },
|
|
2682
3100
|
{ attr: "subtitle-member", key: "subtitleMember", parser: "string-or-undefined" },
|
|
3101
|
+
{ attr: "full-title-member", key: "fullTitleMember", parser: "string-or-undefined" },
|
|
2683
3102
|
{ attr: "group-member", key: "groupMember", parser: "string-or-undefined" },
|
|
2684
3103
|
{ attr: "disabled-member", key: "disabledMember", parser: "string-or-undefined" },
|
|
3104
|
+
// Tree of options (presence of path-member / getPathCallback auto-enables tree mode)
|
|
3105
|
+
{ attr: "path-member", key: "pathMember", parser: "string-or-undefined" },
|
|
3106
|
+
{ attr: "parent-path-member", key: "parentPathMember", parser: "string-or-undefined" },
|
|
3107
|
+
{ attr: "level-member", key: "levelMember", parser: "string-or-undefined" },
|
|
3108
|
+
{ attr: "has-children-member", key: "hasChildrenMember", parser: "string-or-undefined" },
|
|
3109
|
+
{ attr: "is-selectable-member", key: "isSelectableMember", parser: "string-or-undefined" },
|
|
3110
|
+
{ attr: "tree-path-separator", key: "treePathSeparator", parser: "string", default: "." },
|
|
3111
|
+
{
|
|
3112
|
+
attr: "checkbox-mode",
|
|
3113
|
+
key: "checkboxMode",
|
|
3114
|
+
parser: "enum",
|
|
3115
|
+
enumValues: ["independent", "cascade"],
|
|
3116
|
+
default: "independent"
|
|
3117
|
+
},
|
|
3118
|
+
{
|
|
3119
|
+
attr: "cascade-select-policy",
|
|
3120
|
+
key: "cascadeSelectPolicy",
|
|
3121
|
+
parser: "enum",
|
|
3122
|
+
enumValues: ["rolled-up", "leaves", "all"],
|
|
3123
|
+
default: "rolled-up"
|
|
3124
|
+
},
|
|
2685
3125
|
// Enums
|
|
2686
3126
|
{
|
|
2687
3127
|
attr: "badges-display-mode",
|
|
@@ -2793,11 +3233,12 @@ const Cs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
2793
3233
|
{ attr: "close-on-select", key: "isCloseOnSelect", parser: "bool-default-false" },
|
|
2794
3234
|
{ attr: "allow-add-new", key: "isAddNewAllowed", parser: "bool-default-false" },
|
|
2795
3235
|
{ attr: "show-counter", key: "isCounterShown", parser: "bool-default-false" },
|
|
3236
|
+
{ attr: "show-badge-full-title", key: "isBadgeFullTitleShown", parser: "bool-default-false" },
|
|
2796
3237
|
{ attr: "enable-virtual-scroll", key: "isVirtualScrollEnabled", parser: "bool-default-false" },
|
|
2797
3238
|
{ attr: "enable-badge-tooltips", key: "isBadgeTooltipsEnabled", parser: "bool-default-false" },
|
|
2798
3239
|
{ attr: "enable-option-tooltips", key: "isOptionTooltipsEnabled", parser: "bool-default-false" },
|
|
2799
3240
|
{ attr: "option-tooltip-follow-cursor", key: "isOptionTooltipFollowCursor", parser: "bool-default-false" }
|
|
2800
|
-
],
|
|
3241
|
+
], Rs = new Map(Oe.map((o) => [o.attr, o])), Je = [
|
|
2801
3242
|
{ key: "valueMember", field: "_valueMember" },
|
|
2802
3243
|
{ key: "displayValueMember", field: "_displayValueMember" },
|
|
2803
3244
|
{ key: "searchValueMember", field: "_searchValueMember" },
|
|
@@ -2805,7 +3246,7 @@ const Cs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
2805
3246
|
{ key: "subtitleMember", field: "_subtitleMember" },
|
|
2806
3247
|
{ key: "groupMember", field: "_groupMember" },
|
|
2807
3248
|
{ key: "disabledMember", field: "_disabledMember" }
|
|
2808
|
-
],
|
|
3249
|
+
], Fs = [
|
|
2809
3250
|
{ key: "valueMember", member: "value" },
|
|
2810
3251
|
{ key: "displayValueMember", member: "label" },
|
|
2811
3252
|
{ key: "groupMember", member: "group" },
|
|
@@ -2813,7 +3254,7 @@ const Cs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
2813
3254
|
{ key: "subtitleMember", member: "subtitle" },
|
|
2814
3255
|
{ key: "disabledMember", member: "disabled" }
|
|
2815
3256
|
];
|
|
2816
|
-
function
|
|
3257
|
+
function Ze(o, e) {
|
|
2817
3258
|
if (e === null || e === "")
|
|
2818
3259
|
switch (o.parser) {
|
|
2819
3260
|
case "bool-default-true":
|
|
@@ -2839,83 +3280,88 @@ function Ue(o, e) {
|
|
|
2839
3280
|
return e === "true";
|
|
2840
3281
|
}
|
|
2841
3282
|
}
|
|
2842
|
-
const
|
|
2843
|
-
function
|
|
2844
|
-
return Array.from(
|
|
3283
|
+
const Ae = /* @__PURE__ */ new Set();
|
|
3284
|
+
function gt() {
|
|
3285
|
+
return Array.from(Ae);
|
|
2845
3286
|
}
|
|
2846
|
-
class
|
|
3287
|
+
class ze extends $s {
|
|
2847
3288
|
constructor() {
|
|
2848
3289
|
super();
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
3290
|
+
h(this, "picker");
|
|
3291
|
+
h(this, "containerElement");
|
|
3292
|
+
h(this, "shadow");
|
|
3293
|
+
h(this, "internals");
|
|
2853
3294
|
// Properties for complex data (not attributes)
|
|
2854
|
-
|
|
2855
|
-
|
|
3295
|
+
h(this, "_options");
|
|
3296
|
+
h(this, "_hasDeclarativeOptions", !1);
|
|
2856
3297
|
// Member/Callback properties
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
3298
|
+
h(this, "_valueMember");
|
|
3299
|
+
h(this, "_getValueCallback");
|
|
3300
|
+
h(this, "_displayValueMember");
|
|
3301
|
+
h(this, "_getDisplayValueCallback");
|
|
3302
|
+
h(this, "_getBadgeDisplayCallback");
|
|
3303
|
+
h(this, "_getBadgeClassCallback");
|
|
3304
|
+
h(this, "_customStylesCallback");
|
|
3305
|
+
h(this, "_searchValueMember");
|
|
3306
|
+
h(this, "_getSearchValueCallback");
|
|
3307
|
+
h(this, "_iconMember");
|
|
3308
|
+
h(this, "_getIconCallback");
|
|
3309
|
+
h(this, "_subtitleMember");
|
|
3310
|
+
h(this, "_getSubtitleCallback");
|
|
3311
|
+
h(this, "_getFullTitleCallback");
|
|
3312
|
+
h(this, "_groupMember");
|
|
3313
|
+
h(this, "_getGroupCallback");
|
|
3314
|
+
h(this, "_renderGroupLabelContentCallback");
|
|
3315
|
+
h(this, "_disabledMember");
|
|
3316
|
+
h(this, "_getDisabledCallback");
|
|
3317
|
+
// Tree of options
|
|
3318
|
+
h(this, "_getPathCallback");
|
|
3319
|
+
h(this, "_isTreeEnabled");
|
|
3320
|
+
h(this, "_getIsSelectableCallback");
|
|
2875
3321
|
// Value formatting callbacks
|
|
2876
|
-
|
|
3322
|
+
h(this, "_getValueFormatCallback");
|
|
2877
3323
|
// Tooltip callbacks
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
3324
|
+
h(this, "_getBadgeTooltipCallback");
|
|
3325
|
+
h(this, "_getOptionTooltipCallback");
|
|
3326
|
+
h(this, "_getRemoveButtonTooltipCallback");
|
|
2881
3327
|
// Custom rendering callbacks
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
3328
|
+
h(this, "_renderOptionContentCallback");
|
|
3329
|
+
h(this, "_renderBadgeContentCallback");
|
|
3330
|
+
h(this, "_renderSelectedItemContentCallback");
|
|
3331
|
+
h(this, "_getSelectedItemClassCallback");
|
|
3332
|
+
h(this, "_renderSelectedContentCallback");
|
|
2887
3333
|
// Count badge callback
|
|
2888
|
-
|
|
3334
|
+
h(this, "_getCounterCallback");
|
|
2889
3335
|
// Action buttons
|
|
2890
|
-
|
|
3336
|
+
h(this, "_actionButtons");
|
|
2891
3337
|
// Batch-update state (setAttributes): collects per-attribute changes so a group of
|
|
2892
3338
|
// attribute writes applies as a single in-place update instead of one re-render each.
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
3339
|
+
h(this, "_batchDepth", 0);
|
|
3340
|
+
h(this, "_batchPartial", {});
|
|
3341
|
+
h(this, "_batchNeedsReinit", !1);
|
|
2896
3342
|
// Event callbacks
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
3343
|
+
h(this, "_beforeSearchCallback");
|
|
3344
|
+
h(this, "_beforeSelectCallback");
|
|
3345
|
+
h(this, "_beforeDeselectCallback");
|
|
3346
|
+
h(this, "_searchCallback");
|
|
3347
|
+
h(this, "_addNewCallback");
|
|
3348
|
+
h(this, "_onSelect");
|
|
3349
|
+
h(this, "_onDeselect");
|
|
3350
|
+
h(this, "_onChange");
|
|
3351
|
+
h(this, "_declarativeSelectedValues");
|
|
2906
3352
|
if (this.shadow = this.attachShadow({ mode: "open" }), typeof this.attachInternals == "function")
|
|
2907
3353
|
try {
|
|
2908
3354
|
this.internals = this.attachInternals();
|
|
2909
3355
|
} catch {
|
|
2910
3356
|
}
|
|
2911
3357
|
const t = document.createElement("style");
|
|
2912
|
-
t.textContent =
|
|
3358
|
+
t.textContent = Bs, this.shadow.appendChild(t), requestAnimationFrame(() => {
|
|
2913
3359
|
this.setAttribute("data-ready", "");
|
|
2914
3360
|
});
|
|
2915
3361
|
}
|
|
2916
3362
|
static get observedAttributes() {
|
|
2917
3363
|
return [
|
|
2918
|
-
...
|
|
3364
|
+
...Oe.map((t) => t.attr),
|
|
2919
3365
|
// Out-of-table attributes (handled by special-case logic in attributeChangedCallback)
|
|
2920
3366
|
"initial-values",
|
|
2921
3367
|
"show-debug-info"
|
|
@@ -2933,29 +3379,29 @@ class Me extends Ss {
|
|
|
2933
3379
|
(t = this.picker) == null || t.clearAll();
|
|
2934
3380
|
}
|
|
2935
3381
|
connectedCallback() {
|
|
2936
|
-
|
|
3382
|
+
Ae.add(this), this.render();
|
|
2937
3383
|
const t = this.parseDeclarativeOptions();
|
|
2938
|
-
t && (this._options && this._options.length > 0 &&
|
|
3384
|
+
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
3385
|
}
|
|
2940
3386
|
disconnectedCallback() {
|
|
2941
|
-
|
|
3387
|
+
Ae.delete(this), this.picker && this.picker.destroy();
|
|
2942
3388
|
}
|
|
2943
3389
|
attributeChangedCallback(t, s, i) {
|
|
2944
|
-
var
|
|
3390
|
+
var a;
|
|
2945
3391
|
if (s === i || !this.picker || t === "initial-values") return;
|
|
2946
3392
|
if (t === "show-debug-info") {
|
|
2947
|
-
const
|
|
2948
|
-
|
|
3393
|
+
const n = this.shadow.querySelector(".ms__debug-info");
|
|
3394
|
+
n && n.remove(), i === "true" && this.renderDebugInfo();
|
|
2949
3395
|
return;
|
|
2950
3396
|
}
|
|
2951
|
-
const r =
|
|
3397
|
+
const r = Rs.get(t);
|
|
2952
3398
|
if (r) {
|
|
2953
|
-
const
|
|
3399
|
+
const n = Ze(r, i), l = (a = Je.find((u) => u.key === r.key)) == null ? void 0 : a.field, d = n === void 0 && l ? this[l] : n;
|
|
2954
3400
|
if (this._batchDepth > 0) {
|
|
2955
|
-
this._batchPartial[r.key] =
|
|
3401
|
+
this._batchPartial[r.key] = d;
|
|
2956
3402
|
return;
|
|
2957
3403
|
}
|
|
2958
|
-
const c = { [r.key]:
|
|
3404
|
+
const c = { [r.key]: d };
|
|
2959
3405
|
if (this.picker.updateOptions(c)) return;
|
|
2960
3406
|
}
|
|
2961
3407
|
if (this._batchDepth > 0) {
|
|
@@ -2980,8 +3426,8 @@ class Me extends Ss {
|
|
|
2980
3426
|
setAttributes(t) {
|
|
2981
3427
|
this._batchDepth++;
|
|
2982
3428
|
try {
|
|
2983
|
-
for (const [r,
|
|
2984
|
-
|
|
3429
|
+
for (const [r, a] of Object.entries(t))
|
|
3430
|
+
a == null || a === !1 ? this.removeAttribute(r) : this.setAttribute(r, a === !0 ? "" : String(a));
|
|
2985
3431
|
} finally {
|
|
2986
3432
|
this._batchDepth--;
|
|
2987
3433
|
}
|
|
@@ -3005,23 +3451,23 @@ class Me extends Ss {
|
|
|
3005
3451
|
s.className = "ms__debug-info";
|
|
3006
3452
|
const i = document.createElement("details"), r = document.createElement("summary");
|
|
3007
3453
|
r.textContent = "Debug Info";
|
|
3008
|
-
const
|
|
3009
|
-
|
|
3454
|
+
const a = document.createElement("div");
|
|
3455
|
+
a.className = "ms__debug-stats", i.appendChild(r), i.appendChild(a), s.appendChild(i), this.shadow.appendChild(s), this.updateDebugInfo();
|
|
3010
3456
|
}
|
|
3011
3457
|
updateDebugInfo() {
|
|
3012
|
-
var
|
|
3458
|
+
var p, b;
|
|
3013
3459
|
const t = this.shadow.querySelector(".ms__debug-stats");
|
|
3014
3460
|
if (!t || !this.picker) return;
|
|
3015
|
-
const s = "1.12.0-
|
|
3461
|
+
const s = "1.12.0-rc06", i = gt().length, a = this.picker.getSelected().length, n = ((p = this._options) == null ? void 0 : p.length) || 0, l = this.picker, d = l.isOpen || !1, c = l.searchTerm || "", m = l.isLoading || !1, u = ((b = l.filteredOptions) == null ? void 0 : b.length) || 0;
|
|
3016
3462
|
t.innerHTML = `
|
|
3017
3463
|
<span>Version: ${s}</span>
|
|
3018
3464
|
<span>Total Instances: ${i}</span>
|
|
3019
|
-
<span>Options: ${
|
|
3465
|
+
<span>Options: ${n}</span>
|
|
3020
3466
|
<span>Filtered: ${u}</span>
|
|
3021
|
-
<span>Selected: ${
|
|
3022
|
-
<span>Dropdown: ${
|
|
3467
|
+
<span>Selected: ${a}</span>
|
|
3468
|
+
<span>Dropdown: ${d ? "Open" : "Closed"}</span>
|
|
3023
3469
|
<span>Search: ${c || "none"}</span>
|
|
3024
|
-
<span>Loading: ${
|
|
3470
|
+
<span>Loading: ${m ? "Yes" : "No"}</span>
|
|
3025
3471
|
`, setTimeout(() => {
|
|
3026
3472
|
this.getAttribute("show-debug-info") === "true" && this.updateDebugInfo();
|
|
3027
3473
|
}, 500);
|
|
@@ -3031,38 +3477,38 @@ class Me extends Ss {
|
|
|
3031
3477
|
* Returns array of options in the format expected by the picker
|
|
3032
3478
|
*/
|
|
3033
3479
|
parseDeclarativeOptions() {
|
|
3034
|
-
var r,
|
|
3480
|
+
var r, a, n, l;
|
|
3035
3481
|
const t = [], s = Array.from(this.children);
|
|
3036
3482
|
if (s.length === 0)
|
|
3037
3483
|
return null;
|
|
3038
3484
|
let i = !1;
|
|
3039
|
-
for (const
|
|
3040
|
-
if (
|
|
3041
|
-
const c =
|
|
3485
|
+
for (const d of s)
|
|
3486
|
+
if (d.tagName === "OPTION") {
|
|
3487
|
+
const c = d, m = {
|
|
3042
3488
|
value: c.value || ((r = c.textContent) == null ? void 0 : r.trim()) || "",
|
|
3043
|
-
label: ((
|
|
3489
|
+
label: ((a = c.textContent) == null ? void 0 : a.trim()) || c.value || ""
|
|
3044
3490
|
};
|
|
3045
|
-
c.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(
|
|
3046
|
-
} else if (
|
|
3047
|
-
const c =
|
|
3048
|
-
for (const
|
|
3491
|
+
c.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(m.value)), c.hasAttribute("disabled") && (m.disabled = !0), c.hasAttribute("data-icon") && (m.icon = c.getAttribute("data-icon")), c.hasAttribute("data-subtitle") && (m.subtitle = c.getAttribute("data-subtitle")), t.push(m), i = !0;
|
|
3492
|
+
} else if (d.tagName === "OPTGROUP") {
|
|
3493
|
+
const c = d, m = c.label || c.getAttribute("label") || "Group", u = Array.from(c.querySelectorAll("option"));
|
|
3494
|
+
for (const p of u) {
|
|
3049
3495
|
const b = {
|
|
3050
|
-
value:
|
|
3051
|
-
label: ((l =
|
|
3052
|
-
group:
|
|
3496
|
+
value: p.value || ((n = p.textContent) == null ? void 0 : n.trim()) || "",
|
|
3497
|
+
label: ((l = p.textContent) == null ? void 0 : l.trim()) || p.value || "",
|
|
3498
|
+
group: m
|
|
3053
3499
|
};
|
|
3054
|
-
|
|
3500
|
+
p.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(b.value)), p.hasAttribute("disabled") && (b.disabled = !0), p.hasAttribute("data-icon") && (b.icon = p.getAttribute("data-icon")), p.hasAttribute("data-subtitle") && (b.subtitle = p.getAttribute("data-subtitle")), t.push(b), i = !0;
|
|
3055
3501
|
}
|
|
3056
3502
|
}
|
|
3057
|
-
return i ? (
|
|
3058
|
-
(
|
|
3503
|
+
return i ? (O.debug(`[MultiSelectElement] Parsed ${t.length} declarative options from Light DOM`), s.forEach((d) => {
|
|
3504
|
+
(d.tagName === "OPTION" || d.tagName === "OPTGROUP") && d.remove();
|
|
3059
3505
|
}), t) : null;
|
|
3060
3506
|
}
|
|
3061
3507
|
/** Parse all observed attributes via ATTRIBUTE_TABLE into a partial config object. */
|
|
3062
3508
|
parseAttributesFromTable() {
|
|
3063
3509
|
const t = {};
|
|
3064
|
-
for (const s of
|
|
3065
|
-
const i =
|
|
3510
|
+
for (const s of Oe) {
|
|
3511
|
+
const i = Ze(s, this.getAttribute(s.attr));
|
|
3066
3512
|
i !== void 0 && (t[s.key] = i);
|
|
3067
3513
|
}
|
|
3068
3514
|
return t;
|
|
@@ -3074,26 +3520,26 @@ class Me extends Ss {
|
|
|
3074
3520
|
if (s && this._options === void 0)
|
|
3075
3521
|
try {
|
|
3076
3522
|
t = JSON.parse(s);
|
|
3077
|
-
} catch (
|
|
3078
|
-
|
|
3523
|
+
} catch (a) {
|
|
3524
|
+
O.error("[MultiSelectElement] Failed to parse data-options:", a);
|
|
3079
3525
|
}
|
|
3080
3526
|
let i;
|
|
3081
3527
|
if (this._declarativeSelectedValues && this._declarativeSelectedValues.length > 0)
|
|
3082
|
-
i = this._declarativeSelectedValues,
|
|
3528
|
+
i = this._declarativeSelectedValues, O.debug(`[MultiSelectElement] Using ${i.length} declaratively selected values`);
|
|
3083
3529
|
else {
|
|
3084
|
-
const
|
|
3085
|
-
if (
|
|
3530
|
+
const a = this.getAttribute("initial-values");
|
|
3531
|
+
if (a)
|
|
3086
3532
|
try {
|
|
3087
|
-
i = JSON.parse(
|
|
3088
|
-
} catch (
|
|
3089
|
-
|
|
3533
|
+
i = JSON.parse(a);
|
|
3534
|
+
} catch (n) {
|
|
3535
|
+
O.error("[MultiSelectElement] Failed to parse initial-values:", n);
|
|
3090
3536
|
}
|
|
3091
3537
|
}
|
|
3092
3538
|
const r = this.parseAttributesFromTable();
|
|
3093
|
-
for (const { key:
|
|
3094
|
-
r[
|
|
3539
|
+
for (const { key: a, field: n } of Je)
|
|
3540
|
+
r[a] === void 0 && (r[a] = this[n]);
|
|
3095
3541
|
if (this._hasDeclarativeOptions) {
|
|
3096
|
-
const
|
|
3542
|
+
const a = {
|
|
3097
3543
|
valueMember: this._getValueCallback,
|
|
3098
3544
|
displayValueMember: this._getDisplayValueCallback,
|
|
3099
3545
|
groupMember: this._getGroupCallback,
|
|
@@ -3101,8 +3547,8 @@ class Me extends Ss {
|
|
|
3101
3547
|
subtitleMember: this._getSubtitleCallback,
|
|
3102
3548
|
disabledMember: this._getDisabledCallback
|
|
3103
3549
|
};
|
|
3104
|
-
for (const { key:
|
|
3105
|
-
r[
|
|
3550
|
+
for (const { key: n, member: l } of Fs)
|
|
3551
|
+
r[n] === void 0 && !a[n] && (r[n] = l);
|
|
3106
3552
|
}
|
|
3107
3553
|
if (Object.assign(r, {
|
|
3108
3554
|
actionButtons: this._actionButtons,
|
|
@@ -3114,7 +3560,11 @@ class Me extends Ss {
|
|
|
3114
3560
|
getSearchValueCallback: this._getSearchValueCallback,
|
|
3115
3561
|
getIconCallback: this._getIconCallback,
|
|
3116
3562
|
getSubtitleCallback: this._getSubtitleCallback,
|
|
3563
|
+
getFullTitleCallback: this._getFullTitleCallback,
|
|
3117
3564
|
getGroupCallback: this._getGroupCallback,
|
|
3565
|
+
getPathCallback: this._getPathCallback,
|
|
3566
|
+
isTreeEnabled: this._isTreeEnabled,
|
|
3567
|
+
getIsSelectableCallback: this._getIsSelectableCallback,
|
|
3118
3568
|
renderGroupLabelContentCallback: this._renderGroupLabelContentCallback,
|
|
3119
3569
|
getDisabledCallback: this._getDisabledCallback,
|
|
3120
3570
|
renderOptionContentCallback: this._renderOptionContentCallback,
|
|
@@ -3126,43 +3576,43 @@ class Me extends Ss {
|
|
|
3126
3576
|
getBadgeTooltipCallback: this._getBadgeTooltipCallback,
|
|
3127
3577
|
getOptionTooltipCallback: this._getOptionTooltipCallback,
|
|
3128
3578
|
getRemoveButtonTooltipCallback: this._getRemoveButtonTooltipCallback,
|
|
3129
|
-
getCounterCallback: this._getCounterCallback || ((
|
|
3579
|
+
getCounterCallback: this._getCounterCallback || ((a, n) => n !== void 0 ? `+${n} more` : `${a} selected`),
|
|
3130
3580
|
options: this._options ?? t,
|
|
3131
3581
|
beforeSearchCallback: this._beforeSearchCallback,
|
|
3132
3582
|
beforeSelectCallback: this._beforeSelectCallback,
|
|
3133
3583
|
beforeDeselectCallback: this._beforeDeselectCallback,
|
|
3134
3584
|
searchCallback: this._searchCallback,
|
|
3135
3585
|
addNewCallback: this._addNewCallback,
|
|
3136
|
-
onSelect: (
|
|
3137
|
-
var
|
|
3138
|
-
this._onSelect && this._onSelect(
|
|
3586
|
+
onSelect: (a) => {
|
|
3587
|
+
var n;
|
|
3588
|
+
this._onSelect && this._onSelect(a), this.dispatchEvent(new CustomEvent("select", {
|
|
3139
3589
|
bubbles: !0,
|
|
3140
3590
|
composed: !0,
|
|
3141
3591
|
detail: {
|
|
3142
|
-
option:
|
|
3143
|
-
selectedOptions: (
|
|
3592
|
+
option: a,
|
|
3593
|
+
selectedOptions: (n = this.picker) == null ? void 0 : n.getSelected(),
|
|
3144
3594
|
selectedValues: this.collectSelectedValues()
|
|
3145
3595
|
}
|
|
3146
3596
|
}));
|
|
3147
3597
|
},
|
|
3148
|
-
onDeselect: (
|
|
3149
|
-
var
|
|
3150
|
-
this._onDeselect && this._onDeselect(
|
|
3598
|
+
onDeselect: (a) => {
|
|
3599
|
+
var n;
|
|
3600
|
+
this._onDeselect && this._onDeselect(a), this.dispatchEvent(new CustomEvent("deselect", {
|
|
3151
3601
|
bubbles: !0,
|
|
3152
3602
|
composed: !0,
|
|
3153
3603
|
detail: {
|
|
3154
|
-
option:
|
|
3155
|
-
selectedOptions: (
|
|
3604
|
+
option: a,
|
|
3605
|
+
selectedOptions: (n = this.picker) == null ? void 0 : n.getSelected(),
|
|
3156
3606
|
selectedValues: this.collectSelectedValues()
|
|
3157
3607
|
}
|
|
3158
3608
|
}));
|
|
3159
3609
|
},
|
|
3160
|
-
onChange: (
|
|
3161
|
-
this._onChange && this._onChange(
|
|
3610
|
+
onChange: (a) => {
|
|
3611
|
+
this._onChange && this._onChange(a), this.dispatchEvent(new CustomEvent("change", {
|
|
3162
3612
|
bubbles: !0,
|
|
3163
3613
|
composed: !0,
|
|
3164
3614
|
detail: {
|
|
3165
|
-
selectedOptions:
|
|
3615
|
+
selectedOptions: a,
|
|
3166
3616
|
selectedValues: this.collectSelectedValues()
|
|
3167
3617
|
}
|
|
3168
3618
|
}));
|
|
@@ -3171,11 +3621,11 @@ class Me extends Ss {
|
|
|
3171
3621
|
container: this.shadow,
|
|
3172
3622
|
// Pass host element (this) for hidden inputs in light DOM
|
|
3173
3623
|
hostElement: this
|
|
3174
|
-
}), i && (this.containerElement.dataset.initialValues = JSON.stringify(i)), this.picker = new
|
|
3175
|
-
const
|
|
3176
|
-
if (
|
|
3177
|
-
const
|
|
3178
|
-
|
|
3624
|
+
}), i && (this.containerElement.dataset.initialValues = JSON.stringify(i)), this.picker = new zs(this.containerElement, r), this._customStylesCallback) {
|
|
3625
|
+
const a = this._customStylesCallback();
|
|
3626
|
+
if (a) {
|
|
3627
|
+
const n = document.createElement("style");
|
|
3628
|
+
n.className = "ms-custom-styles", n.textContent = a, this.shadow.insertBefore(n, this.shadow.firstChild);
|
|
3179
3629
|
}
|
|
3180
3630
|
}
|
|
3181
3631
|
}
|
|
@@ -3238,6 +3688,12 @@ class Me extends Ss {
|
|
|
3238
3688
|
get subtitleMember() {
|
|
3239
3689
|
return this.getAttribute("subtitle-member");
|
|
3240
3690
|
}
|
|
3691
|
+
set fullTitleMember(t) {
|
|
3692
|
+
t ? this.setAttribute("full-title-member", t) : this.removeAttribute("full-title-member");
|
|
3693
|
+
}
|
|
3694
|
+
get fullTitleMember() {
|
|
3695
|
+
return this.getAttribute("full-title-member");
|
|
3696
|
+
}
|
|
3241
3697
|
set groupMember(t) {
|
|
3242
3698
|
this._groupMember = t || void 0, t ? this.setAttribute("group-member", t) : this.removeAttribute("group-member");
|
|
3243
3699
|
}
|
|
@@ -3250,6 +3706,57 @@ class Me extends Ss {
|
|
|
3250
3706
|
get disabledMember() {
|
|
3251
3707
|
return this.getAttribute("disabled-member");
|
|
3252
3708
|
}
|
|
3709
|
+
// Tree-of-options members. Setting `pathMember` (like the `path-member`
|
|
3710
|
+
// attribute) turns on tree mode. Each reflects to its kebab attribute, which
|
|
3711
|
+
// is observed and applied in place — no separate wiring needed.
|
|
3712
|
+
set pathMember(t) {
|
|
3713
|
+
t ? this.setAttribute("path-member", t) : this.removeAttribute("path-member");
|
|
3714
|
+
}
|
|
3715
|
+
get pathMember() {
|
|
3716
|
+
return this.getAttribute("path-member");
|
|
3717
|
+
}
|
|
3718
|
+
set parentPathMember(t) {
|
|
3719
|
+
t ? this.setAttribute("parent-path-member", t) : this.removeAttribute("parent-path-member");
|
|
3720
|
+
}
|
|
3721
|
+
get parentPathMember() {
|
|
3722
|
+
return this.getAttribute("parent-path-member");
|
|
3723
|
+
}
|
|
3724
|
+
set levelMember(t) {
|
|
3725
|
+
t ? this.setAttribute("level-member", t) : this.removeAttribute("level-member");
|
|
3726
|
+
}
|
|
3727
|
+
get levelMember() {
|
|
3728
|
+
return this.getAttribute("level-member");
|
|
3729
|
+
}
|
|
3730
|
+
set hasChildrenMember(t) {
|
|
3731
|
+
t ? this.setAttribute("has-children-member", t) : this.removeAttribute("has-children-member");
|
|
3732
|
+
}
|
|
3733
|
+
get hasChildrenMember() {
|
|
3734
|
+
return this.getAttribute("has-children-member");
|
|
3735
|
+
}
|
|
3736
|
+
set isSelectableMember(t) {
|
|
3737
|
+
t ? this.setAttribute("is-selectable-member", t) : this.removeAttribute("is-selectable-member");
|
|
3738
|
+
}
|
|
3739
|
+
get isSelectableMember() {
|
|
3740
|
+
return this.getAttribute("is-selectable-member");
|
|
3741
|
+
}
|
|
3742
|
+
set treePathSeparator(t) {
|
|
3743
|
+
t ? this.setAttribute("tree-path-separator", t) : this.removeAttribute("tree-path-separator");
|
|
3744
|
+
}
|
|
3745
|
+
get treePathSeparator() {
|
|
3746
|
+
return this.getAttribute("tree-path-separator");
|
|
3747
|
+
}
|
|
3748
|
+
set checkboxMode(t) {
|
|
3749
|
+
t ? this.setAttribute("checkbox-mode", t) : this.removeAttribute("checkbox-mode");
|
|
3750
|
+
}
|
|
3751
|
+
get checkboxMode() {
|
|
3752
|
+
return this.getAttribute("checkbox-mode");
|
|
3753
|
+
}
|
|
3754
|
+
set cascadeSelectPolicy(t) {
|
|
3755
|
+
t ? this.setAttribute("cascade-select-policy", t) : this.removeAttribute("cascade-select-policy");
|
|
3756
|
+
}
|
|
3757
|
+
get cascadeSelectPolicy() {
|
|
3758
|
+
return this.getAttribute("cascade-select-policy");
|
|
3759
|
+
}
|
|
3253
3760
|
// Callback properties (JavaScript only - no attributes)
|
|
3254
3761
|
set getValueCallback(t) {
|
|
3255
3762
|
this._getValueCallback = t, this.updatePicker({ getValueCallback: t });
|
|
@@ -3307,12 +3814,44 @@ class Me extends Ss {
|
|
|
3307
3814
|
get getSubtitleCallback() {
|
|
3308
3815
|
return this._getSubtitleCallback;
|
|
3309
3816
|
}
|
|
3817
|
+
/** Callback returning an option's full title (used by badges when show-badge-full-title is on). */
|
|
3818
|
+
set getFullTitleCallback(t) {
|
|
3819
|
+
this._getFullTitleCallback = t, this.updatePicker({ getFullTitleCallback: t });
|
|
3820
|
+
}
|
|
3821
|
+
get getFullTitleCallback() {
|
|
3822
|
+
return this._getFullTitleCallback;
|
|
3823
|
+
}
|
|
3310
3824
|
set getGroupCallback(t) {
|
|
3311
3825
|
this._getGroupCallback = t, this.updatePicker({ getGroupCallback: t });
|
|
3312
3826
|
}
|
|
3313
3827
|
get getGroupCallback() {
|
|
3314
3828
|
return this._getGroupCallback;
|
|
3315
3829
|
}
|
|
3830
|
+
/** Callback returning an option's materialized dot-path (enables tree mode). */
|
|
3831
|
+
set getPathCallback(t) {
|
|
3832
|
+
this._getPathCallback = t, this.updatePicker({ getPathCallback: t });
|
|
3833
|
+
}
|
|
3834
|
+
get getPathCallback() {
|
|
3835
|
+
return this._getPathCallback;
|
|
3836
|
+
}
|
|
3837
|
+
/** Force tree mode on/off. When unset, tree mode auto-enables if a path source is present. */
|
|
3838
|
+
set isTreeEnabled(t) {
|
|
3839
|
+
this._isTreeEnabled = t, this.updatePicker({ isTreeEnabled: t });
|
|
3840
|
+
}
|
|
3841
|
+
get isTreeEnabled() {
|
|
3842
|
+
return this._isTreeEnabled;
|
|
3843
|
+
}
|
|
3844
|
+
/**
|
|
3845
|
+
* Callback deciding whether a tree node is selectable (takes precedence over
|
|
3846
|
+
* `is-selectable-member`). Receives the built node — e.g.
|
|
3847
|
+
* `el.getIsSelectableCallback = (node) => !node.hasChildren` for leaves only.
|
|
3848
|
+
*/
|
|
3849
|
+
set getIsSelectableCallback(t) {
|
|
3850
|
+
this._getIsSelectableCallback = t, this.updatePicker({ getIsSelectableCallback: t });
|
|
3851
|
+
}
|
|
3852
|
+
get getIsSelectableCallback() {
|
|
3853
|
+
return this._getIsSelectableCallback;
|
|
3854
|
+
}
|
|
3316
3855
|
set renderGroupLabelContentCallback(t) {
|
|
3317
3856
|
this._renderGroupLabelContentCallback = t, this.updatePicker({ renderGroupLabelContentCallback: t });
|
|
3318
3857
|
}
|
|
@@ -3554,40 +4093,40 @@ class Me extends Ss {
|
|
|
3554
4093
|
// makes `form.reset()`, `form.elements`, and (in the future) constraint
|
|
3555
4094
|
// validation actually do something. Without this flag the element is
|
|
3556
4095
|
// 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",
|
|
4096
|
+
h(ze, "formAssociated", !0);
|
|
4097
|
+
typeof window < "u" && typeof customElements < "u" && (customElements.get("web-multiselect") || customElements.define("web-multiselect", ze));
|
|
3559
4098
|
typeof window < "u" && (window.components = window.components || {}, window.components["web-multiselect"] = {
|
|
3560
|
-
version: () => "1.12.0-
|
|
4099
|
+
version: () => "1.12.0-rc06",
|
|
3561
4100
|
config: {
|
|
3562
4101
|
name: "@keenmate/web-multiselect",
|
|
3563
|
-
version: "1.12.0-
|
|
4102
|
+
version: "1.12.0-rc06",
|
|
3564
4103
|
author: "Keenmate",
|
|
3565
4104
|
license: "MIT",
|
|
3566
4105
|
repository: "git+https://github.com/keenmate/web-multiselect.git",
|
|
3567
4106
|
homepage: "https://web-multiselect.keenmate.dev"
|
|
3568
4107
|
},
|
|
3569
4108
|
logging: {
|
|
3570
|
-
enableLogging:
|
|
3571
|
-
disableLogging:
|
|
3572
|
-
setLogLevel:
|
|
3573
|
-
setCategoryLevel:
|
|
3574
|
-
getCategories: () => [...
|
|
4109
|
+
enableLogging: ws,
|
|
4110
|
+
disableLogging: xs,
|
|
4111
|
+
setLogLevel: Cs,
|
|
4112
|
+
setCategoryLevel: Ss,
|
|
4113
|
+
getCategories: () => [...ys]
|
|
3575
4114
|
},
|
|
3576
4115
|
register: () => {
|
|
3577
|
-
typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect",
|
|
4116
|
+
typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect", ze);
|
|
3578
4117
|
},
|
|
3579
|
-
getInstances: () =>
|
|
4118
|
+
getInstances: () => gt()
|
|
3580
4119
|
});
|
|
3581
4120
|
export {
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
4121
|
+
ys as LOGGING_CATEGORIES,
|
|
4122
|
+
ze as MultiSelectElement,
|
|
4123
|
+
zs as WebMultiSelect,
|
|
4124
|
+
O as dataLogger,
|
|
4125
|
+
xs as disableLogging,
|
|
4126
|
+
ws as enableLogging,
|
|
4127
|
+
de as initLogger,
|
|
4128
|
+
L as interactionLogger,
|
|
4129
|
+
Ss as setCategoryLevel,
|
|
4130
|
+
Cs as setLogLevel,
|
|
4131
|
+
R as uiLogger
|
|
3593
4132
|
};
|