@keenmate/web-multiselect 2.0.0-rc05 → 2.0.0-rc07
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -28
- package/custom-elements.json +161 -9
- package/dist/index.d.ts +83 -3
- package/dist/multiselect.js +966 -841
- package/dist/multiselect.umd.js +13 -13
- package/dist/style.css +1 -1
- package/docs/examples.md +22 -1
- package/docs/usage.md +2 -1
- package/package.json +2 -2
- package/src/css/floating.css +61 -1
- package/src/css/options.css +21 -3
- package/src/css/variables.css +32 -3
- package/vscode.html-custom-data.json +6 -1
- package/web-types.json +15 -5
package/dist/multiselect.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
1
|
+
var co = Object.defineProperty;
|
|
2
|
+
var ss = (s) => {
|
|
3
3
|
throw TypeError(s);
|
|
4
4
|
};
|
|
5
|
-
var
|
|
6
|
-
var m = (s, e, t) =>
|
|
7
|
-
var p = (s, e, t) => (Tt(s, e, "read from private field"), t ? t.call(s) : e.get(s)),
|
|
5
|
+
var ho = (s, e, t) => e in s ? co(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
|
|
6
|
+
var m = (s, e, t) => ho(s, typeof e != "symbol" ? e + "" : e, t), Tt = (s, e, t) => e.has(s) || ss("Cannot " + t);
|
|
7
|
+
var p = (s, e, t) => (Tt(s, e, "read from private field"), t ? t.call(s) : e.get(s)), E = (s, e, t) => e.has(s) ? ss("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), N = (s, e, t, o) => (Tt(s, e, "write to private field"), o ? o.call(s, t) : e.set(s, t), t), x = (s, e, t) => (Tt(s, e, "access private method"), t);
|
|
8
8
|
function F(s, e = {}) {
|
|
9
9
|
const t = new Set(s), o = e.shouldNullOnInvalid ? null : e.default ?? null;
|
|
10
10
|
return {
|
|
@@ -20,7 +20,7 @@ function F(s, e = {}) {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function X(s = {}) {
|
|
24
24
|
const e = (o) => (s.min == null || o >= s.min) && (s.max == null || o <= s.max), t = s.default;
|
|
25
25
|
return {
|
|
26
26
|
fromAttribute(o) {
|
|
@@ -37,7 +37,7 @@ function q(s = {}) {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function A(s = {}) {
|
|
41
41
|
const e = s.isNullable === !0, t = s.default ?? (e ? null : ""), o = (i) => s.shouldTrim ? i.trim() : i;
|
|
42
42
|
return {
|
|
43
43
|
fromAttribute(i) {
|
|
@@ -54,11 +54,11 @@ function E(s = {}) {
|
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
const
|
|
58
|
-
function
|
|
57
|
+
const uo = /* @__PURE__ */ new Set(["", "true", "1", "yes", "on"]), mo = /* @__PURE__ */ new Set(["false", "0", "no", "off"]);
|
|
58
|
+
function B(s = "presence") {
|
|
59
59
|
const e = (t) => {
|
|
60
60
|
const o = t.trim().toLowerCase();
|
|
61
|
-
return
|
|
61
|
+
return uo.has(o) ? !0 : mo.has(o) ? !1 : null;
|
|
62
62
|
};
|
|
63
63
|
return {
|
|
64
64
|
fromAttribute(t) {
|
|
@@ -81,7 +81,7 @@ function H(s = "presence") {
|
|
|
81
81
|
}
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
function
|
|
84
|
+
function po(s = {}) {
|
|
85
85
|
const e = s.default;
|
|
86
86
|
return {
|
|
87
87
|
fromAttribute(t) {
|
|
@@ -101,7 +101,7 @@ function mo(s = {}) {
|
|
|
101
101
|
}
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
|
-
function
|
|
104
|
+
function fo(s = {}) {
|
|
105
105
|
const e = s.default ?? [], t = (o) => Array.isArray(o) && (!s.validateItem || o.every(s.validateItem));
|
|
106
106
|
return {
|
|
107
107
|
fromAttribute(o) {
|
|
@@ -121,22 +121,22 @@ function po(s = {}) {
|
|
|
121
121
|
}
|
|
122
122
|
};
|
|
123
123
|
}
|
|
124
|
-
function
|
|
124
|
+
function go() {
|
|
125
125
|
return {
|
|
126
126
|
validate(s) {
|
|
127
127
|
return s == null || typeof s == "function";
|
|
128
128
|
}
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
|
-
function
|
|
131
|
+
function bo(s, e, t) {
|
|
132
132
|
const o = s.converter, i = o != null && o.fromAttribute ? o.fromAttribute(e, t, s.attribute ?? s.configKey) : e ?? s.default;
|
|
133
133
|
return { configKey: s.configKey, field: s.field, value: i, on: s.on ?? "update" };
|
|
134
134
|
}
|
|
135
|
-
function
|
|
135
|
+
function vo(s, e) {
|
|
136
136
|
const t = s.converter;
|
|
137
137
|
return t != null && t.validate && !t.validate(e) ? null : { configKey: s.configKey, field: s.field, value: e, on: s.on ?? "update" };
|
|
138
138
|
}
|
|
139
|
-
function
|
|
139
|
+
function yo() {
|
|
140
140
|
const s = /* @__PURE__ */ new Set();
|
|
141
141
|
let e = !1;
|
|
142
142
|
const t = () => {
|
|
@@ -164,7 +164,7 @@ function vo() {
|
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
|
-
const
|
|
167
|
+
const Ms = {
|
|
168
168
|
pointer: "fine",
|
|
169
169
|
hasCoarsePointer: !1,
|
|
170
170
|
canHover: !0,
|
|
@@ -176,27 +176,27 @@ const Ps = {
|
|
|
176
176
|
os: "unknown",
|
|
177
177
|
isApple: !1,
|
|
178
178
|
isAndroid: !1
|
|
179
|
-
},
|
|
180
|
-
let
|
|
179
|
+
}, wo = { mobile: 640, tablet: 1024, desktop: 1 / 0 };
|
|
180
|
+
let It = xo(wo);
|
|
181
181
|
const Fe = /* @__PURE__ */ new Set();
|
|
182
182
|
let Ce = null, ht = [], lt = !1;
|
|
183
|
-
function
|
|
183
|
+
function xo(s) {
|
|
184
184
|
return Object.entries(s).sort((e, t) => e[1] - t[1]);
|
|
185
185
|
}
|
|
186
|
-
function
|
|
187
|
-
for (const [t, o] of
|
|
186
|
+
function _o(s) {
|
|
187
|
+
for (const [t, o] of It)
|
|
188
188
|
if (s <= o)
|
|
189
189
|
return t;
|
|
190
|
-
const e =
|
|
190
|
+
const e = It[It.length - 1];
|
|
191
191
|
return e ? e[0] : "desktop";
|
|
192
192
|
}
|
|
193
|
-
function
|
|
193
|
+
function Xt() {
|
|
194
194
|
return typeof window < "u" && typeof window.matchMedia == "function";
|
|
195
195
|
}
|
|
196
|
-
function
|
|
196
|
+
function os() {
|
|
197
197
|
return typeof navigator < "u" && (navigator.maxTouchPoints ?? 0) > 1;
|
|
198
198
|
}
|
|
199
|
-
function
|
|
199
|
+
function ko() {
|
|
200
200
|
var o;
|
|
201
201
|
if (typeof navigator > "u")
|
|
202
202
|
return "unknown";
|
|
@@ -207,26 +207,26 @@ function _o() {
|
|
|
207
207
|
if (e.includes("ios"))
|
|
208
208
|
return "ios";
|
|
209
209
|
if (e.includes("mac"))
|
|
210
|
-
return
|
|
210
|
+
return os() ? "ios" : "macos";
|
|
211
211
|
if (e.includes("windows"))
|
|
212
212
|
return "windows";
|
|
213
213
|
if (e.includes("linux"))
|
|
214
214
|
return "linux";
|
|
215
215
|
}
|
|
216
216
|
const t = navigator.userAgent ?? "";
|
|
217
|
-
return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ?
|
|
217
|
+
return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ? os() ? "ios" : "macos" : /windows/i.test(t) ? "windows" : /linux/i.test(t) ? "linux" : "unknown";
|
|
218
218
|
}
|
|
219
|
-
let
|
|
220
|
-
function
|
|
221
|
-
return
|
|
219
|
+
let Co;
|
|
220
|
+
function So() {
|
|
221
|
+
return Co ?? (Co = ko());
|
|
222
222
|
}
|
|
223
223
|
function Re(s) {
|
|
224
|
-
return
|
|
224
|
+
return Xt() && window.matchMedia(s).matches;
|
|
225
225
|
}
|
|
226
226
|
function qt() {
|
|
227
|
-
if (!
|
|
228
|
-
return { ...
|
|
229
|
-
const s = Re("(any-pointer: coarse)"), e = Re("(pointer: coarse)"), t = Re("(pointer: fine)"), o = Re("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a =
|
|
227
|
+
if (!Xt())
|
|
228
|
+
return { ...Ms };
|
|
229
|
+
const s = Re("(any-pointer: coarse)"), e = Re("(pointer: coarse)"), t = Re("(pointer: fine)"), o = Re("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a = So();
|
|
230
230
|
return {
|
|
231
231
|
pointer: i,
|
|
232
232
|
hasCoarsePointer: s,
|
|
@@ -235,42 +235,42 @@ function qt() {
|
|
|
235
235
|
orientation: Re("(orientation: portrait)") ? "portrait" : "landscape",
|
|
236
236
|
viewportWidth: r,
|
|
237
237
|
viewportHeight: n,
|
|
238
|
-
breakpoint:
|
|
238
|
+
breakpoint: _o(r),
|
|
239
239
|
os: a,
|
|
240
240
|
isApple: a === "ios" || a === "macos",
|
|
241
241
|
isAndroid: a === "android"
|
|
242
242
|
};
|
|
243
243
|
}
|
|
244
|
-
function
|
|
244
|
+
function To(s, e) {
|
|
245
245
|
return s.pointer === e.pointer && s.hasCoarsePointer === e.hasCoarsePointer && s.canHover === e.canHover && s.isTouchPrimary === e.isTouchPrimary && s.orientation === e.orientation && s.viewportWidth === e.viewportWidth && s.viewportHeight === e.viewportHeight && s.breakpoint === e.breakpoint;
|
|
246
246
|
}
|
|
247
|
-
function
|
|
247
|
+
function At() {
|
|
248
248
|
const s = qt();
|
|
249
|
-
if (!(Ce &&
|
|
249
|
+
if (!(Ce && To(Ce, s))) {
|
|
250
250
|
Ce = s;
|
|
251
251
|
for (const e of [...Fe])
|
|
252
252
|
e(s);
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
const ut = () =>
|
|
255
|
+
const ut = () => At(), Ls = () => {
|
|
256
256
|
if (typeof requestAnimationFrame == "function") {
|
|
257
257
|
if (lt)
|
|
258
258
|
return;
|
|
259
259
|
lt = !0, requestAnimationFrame(() => {
|
|
260
|
-
lt = !1,
|
|
260
|
+
lt = !1, At();
|
|
261
261
|
});
|
|
262
262
|
} else
|
|
263
|
-
|
|
263
|
+
At();
|
|
264
264
|
};
|
|
265
|
-
function
|
|
265
|
+
function Io(s) {
|
|
266
266
|
typeof s.addEventListener == "function" ? s.addEventListener("change", ut) : typeof s.addListener == "function" && s.addListener(ut);
|
|
267
267
|
}
|
|
268
268
|
function Oo(s) {
|
|
269
269
|
typeof s.removeEventListener == "function" ? s.removeEventListener("change", ut) : typeof s.removeListener == "function" && s.removeListener(ut);
|
|
270
270
|
}
|
|
271
|
-
function
|
|
272
|
-
if (!
|
|
273
|
-
Ce = { ...
|
|
271
|
+
function Po() {
|
|
272
|
+
if (!Xt()) {
|
|
273
|
+
Ce = { ...Ms };
|
|
274
274
|
return;
|
|
275
275
|
}
|
|
276
276
|
ht = [
|
|
@@ -281,49 +281,49 @@ function Io() {
|
|
|
281
281
|
window.matchMedia("(orientation: portrait)")
|
|
282
282
|
];
|
|
283
283
|
for (const s of ht)
|
|
284
|
-
|
|
285
|
-
typeof window.addEventListener == "function" && window.addEventListener("resize",
|
|
284
|
+
Io(s);
|
|
285
|
+
typeof window.addEventListener == "function" && window.addEventListener("resize", Ls), Ce = qt();
|
|
286
286
|
}
|
|
287
|
-
function
|
|
287
|
+
function Mo() {
|
|
288
288
|
for (const s of ht)
|
|
289
289
|
Oo(s);
|
|
290
|
-
ht = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize",
|
|
290
|
+
ht = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize", Ls), lt = !1, Ce = null;
|
|
291
291
|
}
|
|
292
|
-
function
|
|
292
|
+
function zt() {
|
|
293
293
|
return Ce ?? qt();
|
|
294
294
|
}
|
|
295
|
-
function
|
|
295
|
+
function Lo(s, e = {}) {
|
|
296
296
|
const t = Fe.size === 0;
|
|
297
|
-
Fe.add(s), t &&
|
|
297
|
+
Fe.add(s), t && Po(), e.immediate !== !1 && s(zt());
|
|
298
298
|
let o = !0;
|
|
299
299
|
return () => {
|
|
300
|
-
o && (o = !1, Fe.delete(s), Fe.size === 0 &&
|
|
300
|
+
o && (o = !1, Fe.delete(s), Fe.size === 0 && Mo());
|
|
301
301
|
};
|
|
302
302
|
}
|
|
303
|
-
const
|
|
304
|
-
function
|
|
305
|
-
return s.isTouchPrimary ? Math.min(s.viewportWidth, s.viewportHeight) <
|
|
303
|
+
const Eo = 600;
|
|
304
|
+
function Ao(s) {
|
|
305
|
+
return s.isTouchPrimary ? Math.min(s.viewportWidth, s.viewportHeight) < Eo ? "mobile" : "tablet" : "desktop";
|
|
306
306
|
}
|
|
307
307
|
const mt = /* @__PURE__ */ new Map();
|
|
308
|
-
function
|
|
308
|
+
function zo(s, e) {
|
|
309
309
|
let t = mt.get(s);
|
|
310
310
|
t || mt.set(s, t = /* @__PURE__ */ new Set()), t.add(e);
|
|
311
311
|
}
|
|
312
|
-
function
|
|
312
|
+
function No(s, e) {
|
|
313
313
|
var t;
|
|
314
314
|
(t = mt.get(s)) == null || t.delete(e);
|
|
315
315
|
}
|
|
316
|
-
function
|
|
316
|
+
function Do(s) {
|
|
317
317
|
return Array.from(mt.get(s) ?? []);
|
|
318
318
|
}
|
|
319
|
-
const
|
|
320
|
-
function
|
|
321
|
-
|
|
319
|
+
const Es = /* @__PURE__ */ new Map();
|
|
320
|
+
function $o(s, e) {
|
|
321
|
+
Es.set(s.toLowerCase(), e);
|
|
322
322
|
}
|
|
323
323
|
function Vo(s) {
|
|
324
|
-
return
|
|
324
|
+
return Es.get(s.toLowerCase());
|
|
325
325
|
}
|
|
326
|
-
function
|
|
326
|
+
function Ro(s, e, t, o = {}) {
|
|
327
327
|
return s.dispatchEvent(new CustomEvent(e, {
|
|
328
328
|
detail: t,
|
|
329
329
|
bubbles: o.bubbles ?? !0,
|
|
@@ -331,44 +331,44 @@ function No(s, e, t, o = {}) {
|
|
|
331
331
|
cancelable: o.cancelable ?? !1
|
|
332
332
|
}));
|
|
333
333
|
}
|
|
334
|
-
function Ro(s) {
|
|
335
|
-
return s.split(/[-_]/).filter(Boolean).map((e) => e[0].toUpperCase() + e.slice(1)).join("");
|
|
336
|
-
}
|
|
337
334
|
function Ho(s) {
|
|
338
|
-
return
|
|
335
|
+
return s.split(/[-_]/).filter(Boolean).map((e) => e[0].toUpperCase() + e.slice(1)).join("");
|
|
339
336
|
}
|
|
340
337
|
function Bo(s) {
|
|
338
|
+
return `on${Ho(s)}`;
|
|
339
|
+
}
|
|
340
|
+
function Ko(s) {
|
|
341
341
|
return s ? s.map((e) => {
|
|
342
|
-
const t = typeof e == "string" ? { name: e } : e, o = t.property === !1 ? null : t.property ??
|
|
342
|
+
const t = typeof e == "string" ? { name: e } : e, o = t.property === !1 ? null : t.property ?? Bo(t.name);
|
|
343
343
|
return { name: t.name, property: o, bubbles: t.bubbles, composed: t.composed, cancelable: t.cancelable };
|
|
344
344
|
}) : [];
|
|
345
345
|
}
|
|
346
|
-
const
|
|
347
|
-
},
|
|
348
|
-
let
|
|
349
|
-
const
|
|
346
|
+
const Fo = typeof HTMLElement < "u" ? HTMLElement : class {
|
|
347
|
+
}, is = /* @__PURE__ */ new WeakSet();
|
|
348
|
+
let Wo = 0;
|
|
349
|
+
const jo = { trace() {
|
|
350
350
|
}, debug() {
|
|
351
351
|
}, info() {
|
|
352
352
|
}, warn() {
|
|
353
353
|
}, error() {
|
|
354
|
-
} },
|
|
355
|
-
var he, Je, ve, Qe, ye, Ze, yt, we, ue, xe, _e, Pe, Me, Le, Ee, wt, se, Ae,
|
|
356
|
-
const
|
|
354
|
+
} }, Uo = new Proxy({}, { get: () => jo });
|
|
355
|
+
var he, Je, ve, Qe, ye, Ze, yt, we, ue, xe, _e, Pe, Me, Le, Ee, wt, se, Ae, T, As, zs, Ns, Y, Ds, $s, Dt, $t, We, Vt, Vs;
|
|
356
|
+
const Xe = class Xe extends Fo {
|
|
357
357
|
constructor() {
|
|
358
358
|
super();
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
359
|
+
E(this, T);
|
|
360
|
+
E(this, he, {});
|
|
361
|
+
E(this, Je, /* @__PURE__ */ new Map());
|
|
362
|
+
E(this, ve, /* @__PURE__ */ new Map());
|
|
363
|
+
E(this, Qe, /* @__PURE__ */ new Map());
|
|
364
364
|
/** Live handler currently bound via each managed `on<Name>` property, keyed by event name. */
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
365
|
+
E(this, ye, /* @__PURE__ */ new Map());
|
|
366
|
+
E(this, Ze, yo());
|
|
367
|
+
E(this, yt, () => x(this, T, Vt).call(this));
|
|
368
|
+
E(this, we, null);
|
|
369
|
+
E(this, ue, !1);
|
|
370
|
+
E(this, xe, []);
|
|
371
|
+
E(this, _e, !1);
|
|
372
372
|
/**
|
|
373
373
|
* configKeys that carried a value assigned BEFORE the element was upgraded
|
|
374
374
|
* (`el.foo = …` before its class was defined). The browser fires the initial
|
|
@@ -378,21 +378,21 @@ const qe = class qe extends Ko {
|
|
|
378
378
|
* guarantee); post-connect attribute changes react normally. Cleared on first
|
|
379
379
|
* connect.
|
|
380
380
|
*/
|
|
381
|
-
|
|
382
|
-
|
|
381
|
+
E(this, Pe, null);
|
|
382
|
+
E(this, Me, !1);
|
|
383
383
|
/** Unsubscribe from the environment observable; set only while connected AND `environmentChanged` is overridden. */
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
const t = this.constructor, o = t.inputs ?? [], i =
|
|
390
|
-
|
|
384
|
+
E(this, Le);
|
|
385
|
+
E(this, Ee);
|
|
386
|
+
E(this, wt);
|
|
387
|
+
E(this, se);
|
|
388
|
+
E(this, Ae);
|
|
389
|
+
const t = this.constructor, o = t.inputs ?? [], i = Ko(t.events);
|
|
390
|
+
x(this, T, Ns).call(this, o, i);
|
|
391
391
|
for (const r of o)
|
|
392
392
|
p(this, Je).set(r.configKey, r), r.attribute && p(this, ve).set(r.attribute, r);
|
|
393
393
|
for (const r of i)
|
|
394
394
|
p(this, Qe).set(r.name, r);
|
|
395
|
-
|
|
395
|
+
x(this, T, As).call(this, o), x(this, T, Ds).call(this, o), x(this, T, $s).call(this, i);
|
|
396
396
|
}
|
|
397
397
|
static get observedAttributes() {
|
|
398
398
|
const t = (this.inputs ?? []).filter((o) => o.attribute).map((o) => o.attribute);
|
|
@@ -412,31 +412,31 @@ const qe = class qe extends Ko {
|
|
|
412
412
|
return;
|
|
413
413
|
let n;
|
|
414
414
|
try {
|
|
415
|
-
n =
|
|
415
|
+
n = bo(r, i, this);
|
|
416
416
|
} catch (l) {
|
|
417
|
-
|
|
417
|
+
x(this, T, Y).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = x(this, T, zs).call(this, r);
|
|
418
418
|
}
|
|
419
|
-
|
|
419
|
+
x(this, T, $t).call(this, n);
|
|
420
420
|
}
|
|
421
421
|
connectedCallback() {
|
|
422
|
-
|
|
422
|
+
zo(this.localName, this), p(this, _e) || (N(this, _e, !0), N(this, Pe, null), N(this, ue, !0)), x(this, T, We).call(this), this.connect(), this.environmentChanged !== Xe.prototype.environmentChanged && N(this, Le, Lo((t) => this.environmentChanged(t)));
|
|
423
423
|
}
|
|
424
424
|
disconnectedCallback() {
|
|
425
425
|
var t;
|
|
426
|
-
|
|
426
|
+
No(this.localName, this), (t = p(this, Le)) == null || t.call(this), N(this, Le, void 0), this.disconnect();
|
|
427
427
|
}
|
|
428
428
|
// ── public batching API ─────────────────────────────────────────────────
|
|
429
429
|
/** Apply many inputs (by `configKey` or attribute name) as ONE reinit/update. */
|
|
430
430
|
setAttributes(t) {
|
|
431
431
|
for (const [o, i] of Object.entries(t)) {
|
|
432
432
|
const r = p(this, Je).get(o) ?? p(this, ve).get(o);
|
|
433
|
-
r &&
|
|
433
|
+
r && x(this, T, Dt).call(this, r, i);
|
|
434
434
|
}
|
|
435
|
-
|
|
435
|
+
x(this, T, We).call(this);
|
|
436
436
|
}
|
|
437
437
|
/** Run `fn` and coalesce every input change it makes into a single reinit/update. */
|
|
438
438
|
batch(t) {
|
|
439
|
-
t(),
|
|
439
|
+
t(), x(this, T, We).call(this);
|
|
440
440
|
}
|
|
441
441
|
/**
|
|
442
442
|
* Apply any pending input writes **synchronously, now** — running the
|
|
@@ -452,7 +452,7 @@ const qe = class qe extends Ko {
|
|
|
452
452
|
* `await whenSettled()` between the two.
|
|
453
453
|
*/
|
|
454
454
|
flush() {
|
|
455
|
-
|
|
455
|
+
x(this, T, We).call(this);
|
|
456
456
|
}
|
|
457
457
|
/**
|
|
458
458
|
* Resolves once the element is **settled** — i.e. every staged input change
|
|
@@ -492,9 +492,9 @@ const qe = class qe extends Ko {
|
|
|
492
492
|
return p(this, Ae);
|
|
493
493
|
const t = Vo(this.localName);
|
|
494
494
|
if (!t)
|
|
495
|
-
return
|
|
496
|
-
const o = p(this, wt) ??
|
|
497
|
-
return
|
|
495
|
+
return Uo;
|
|
496
|
+
const o = p(this, wt) ?? N(this, wt, `${this.localName}#${this.id || ++Wo}`);
|
|
497
|
+
return N(this, Ae, t.forInstance(o, () => p(this, se)));
|
|
498
498
|
}
|
|
499
499
|
/**
|
|
500
500
|
* Turn on verbose logging for THIS element only (default `debug`), independent
|
|
@@ -502,11 +502,11 @@ const qe = class qe extends Ko {
|
|
|
502
502
|
* picks one instance. Pairs with {@link disableLogging}.
|
|
503
503
|
*/
|
|
504
504
|
enableLogging(t = "debug") {
|
|
505
|
-
|
|
505
|
+
N(this, se, t);
|
|
506
506
|
}
|
|
507
507
|
/** Clear this element's logging override (falls back to the type-level level). */
|
|
508
508
|
disableLogging() {
|
|
509
|
-
|
|
509
|
+
N(this, se, void 0);
|
|
510
510
|
}
|
|
511
511
|
/** Whether this element has an active logging override (not unset/`silent`). */
|
|
512
512
|
get isLoggingEnabled() {
|
|
@@ -596,7 +596,7 @@ const qe = class qe extends Ko {
|
|
|
596
596
|
if (typeof this.attachInternals != "function")
|
|
597
597
|
return null;
|
|
598
598
|
try {
|
|
599
|
-
return
|
|
599
|
+
return N(this, Ee, this.attachInternals());
|
|
600
600
|
} catch {
|
|
601
601
|
return null;
|
|
602
602
|
}
|
|
@@ -627,7 +627,7 @@ const qe = class qe extends Ko {
|
|
|
627
627
|
*/
|
|
628
628
|
emit(t, o, i) {
|
|
629
629
|
const r = p(this, Qe).get(t);
|
|
630
|
-
return
|
|
630
|
+
return Ro(this, t, o, {
|
|
631
631
|
bubbles: (i == null ? void 0 : i.bubbles) ?? (r == null ? void 0 : r.bubbles),
|
|
632
632
|
composed: (i == null ? void 0 : i.composed) ?? (r == null ? void 0 : r.composed),
|
|
633
633
|
cancelable: (i == null ? void 0 : i.cancelable) ?? (r == null ? void 0 : r.cancelable)
|
|
@@ -665,8 +665,8 @@ const qe = class qe extends Ko {
|
|
|
665
665
|
}
|
|
666
666
|
}
|
|
667
667
|
};
|
|
668
|
-
he = new WeakMap(), Je = new WeakMap(), ve = new WeakMap(), Qe = new WeakMap(), ye = new WeakMap(), Ze = new WeakMap(), yt = new WeakMap(), we = new WeakMap(), ue = new WeakMap(), xe = new WeakMap(), _e = new WeakMap(), Pe = new WeakMap(), Me = new WeakMap(), Le = new WeakMap(), Ee = new WeakMap(), wt = new WeakMap(), se = new WeakMap(), Ae = new WeakMap(),
|
|
669
|
-
|
|
668
|
+
he = new WeakMap(), Je = new WeakMap(), ve = new WeakMap(), Qe = new WeakMap(), ye = new WeakMap(), Ze = new WeakMap(), yt = new WeakMap(), we = new WeakMap(), ue = new WeakMap(), xe = new WeakMap(), _e = new WeakMap(), Pe = new WeakMap(), Me = new WeakMap(), Le = new WeakMap(), Ee = new WeakMap(), wt = new WeakMap(), se = new WeakMap(), Ae = new WeakMap(), T = new WeakSet(), // ── internals ─────────────────────────────────────────────────────────────
|
|
669
|
+
As = function(t) {
|
|
670
670
|
var o;
|
|
671
671
|
for (const i of t) {
|
|
672
672
|
let r = i.default;
|
|
@@ -674,48 +674,48 @@ Es = function(t) {
|
|
|
674
674
|
try {
|
|
675
675
|
r = i.converter.fromAttribute(null, this, i.attribute ?? i.configKey);
|
|
676
676
|
} catch (n) {
|
|
677
|
-
|
|
677
|
+
x(this, T, Y).call(this, `converter for "${i.configKey}" threw computing its default; using \`default\``, n), r = i.default;
|
|
678
678
|
}
|
|
679
679
|
p(this, he)[i.configKey] = r, i.field && (this[i.field] = r);
|
|
680
680
|
}
|
|
681
|
-
},
|
|
681
|
+
}, zs = function(t) {
|
|
682
682
|
return { configKey: t.configKey, field: t.field, value: t.default, on: t.on ?? "update" };
|
|
683
683
|
}, /** Sanity-check the input + event tables once per class; warn (never throw) on mistakes. */
|
|
684
|
-
|
|
684
|
+
Ns = function(t, o) {
|
|
685
685
|
var l;
|
|
686
686
|
const i = this.constructor;
|
|
687
|
-
if (
|
|
687
|
+
if (is.has(i))
|
|
688
688
|
return;
|
|
689
|
-
|
|
689
|
+
is.add(i);
|
|
690
690
|
const r = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
|
|
691
691
|
for (const c of t)
|
|
692
|
-
r.has(c.configKey) &&
|
|
692
|
+
r.has(c.configKey) && x(this, T, Y).call(this, `invalid input table: duplicate configKey "${c.configKey}"`), r.add(c.configKey), c.attribute && (n.has(c.attribute) && x(this, T, Y).call(this, `invalid input table: duplicate attribute "${c.attribute}"`), n.add(c.attribute)), c.reflect && !c.attribute && x(this, T, Y).call(this, `invalid input table: "${c.configKey}" has reflect:true but no attribute to reflect to`), c.reflect && !((l = c.converter) != null && l.toAttribute) && x(this, T, Y).call(this, `invalid input table: "${c.configKey}" has reflect:true but its converter has no toAttribute`);
|
|
693
693
|
const a = /* @__PURE__ */ new Set();
|
|
694
694
|
for (const c of o)
|
|
695
|
-
a.has(c.name) &&
|
|
695
|
+
a.has(c.name) && x(this, T, Y).call(this, `invalid event table: duplicate event "${c.name}"`), a.add(c.name), /^[a-z][a-z0-9-]*$/.test(c.name) || x(this, T, Y).call(this, `invalid event table: event "${c.name}" should be lowercase kebab-case (e.g. "date-select")`), c.property && r.has(c.property) && x(this, T, Y).call(this, `invalid event table: event "${c.name}" property "${c.property}" collides with an input configKey`);
|
|
696
696
|
}, /**
|
|
697
697
|
* Always-on console warning for input validation failures. Deliberately uses
|
|
698
698
|
* `console.warn` directly — NOT the (future) categorized logger — so rejected
|
|
699
699
|
* inputs surface even when logging is disabled.
|
|
700
700
|
*/
|
|
701
|
-
|
|
701
|
+
Y = function(t, ...o) {
|
|
702
702
|
console.warn(`[BlissElement] <${this.localName ?? "unknown"}> ${t}`, ...o);
|
|
703
|
-
},
|
|
703
|
+
}, Ds = function(t) {
|
|
704
704
|
for (const o of t) {
|
|
705
705
|
const i = o.configKey, r = Object.prototype.hasOwnProperty.call(this, i), n = r ? this[i] : void 0;
|
|
706
706
|
r && delete this[i], Object.defineProperty(this, i, {
|
|
707
707
|
configurable: !0,
|
|
708
708
|
enumerable: !0,
|
|
709
709
|
get: () => p(this, he)[i],
|
|
710
|
-
set: (a) =>
|
|
711
|
-
}), r && ((p(this, Pe) ??
|
|
710
|
+
set: (a) => x(this, T, Dt).call(this, o, a)
|
|
711
|
+
}), r && ((p(this, Pe) ?? N(this, Pe, /* @__PURE__ */ new Set())).add(i), this[i] = n);
|
|
712
712
|
}
|
|
713
713
|
}, /**
|
|
714
714
|
* Install a managed `on<Name>` handler property per event. Assigning it
|
|
715
715
|
* (de)registers a real listener for the event, so the property behaves like
|
|
716
716
|
* `addEventListener(name, …)` and its handler receives the `CustomEvent`.
|
|
717
717
|
*/
|
|
718
|
-
|
|
718
|
+
$s = function(t) {
|
|
719
719
|
for (const o of t) {
|
|
720
720
|
const i = o.property;
|
|
721
721
|
if (!i)
|
|
@@ -735,52 +735,52 @@ Ds = function(t) {
|
|
|
735
735
|
}
|
|
736
736
|
}), n && (this[i] = a);
|
|
737
737
|
}
|
|
738
|
-
},
|
|
738
|
+
}, Dt = function(t, o) {
|
|
739
739
|
var r;
|
|
740
|
-
const i =
|
|
740
|
+
const i = vo(t, o);
|
|
741
741
|
if (!i) {
|
|
742
|
-
|
|
742
|
+
x(this, T, Y).call(this, `rejected invalid value for property "${t.configKey}"; keeping previous value`, o);
|
|
743
743
|
return;
|
|
744
744
|
}
|
|
745
|
-
if (
|
|
745
|
+
if (x(this, T, $t).call(this, i), t.reflect && t.attribute && ((r = t.converter) != null && r.toAttribute)) {
|
|
746
746
|
const n = t.converter.toAttribute(i.value);
|
|
747
|
-
|
|
747
|
+
N(this, Me, !0);
|
|
748
748
|
try {
|
|
749
749
|
n === null ? this.removeAttribute(t.attribute) : this.setAttribute(t.attribute, n);
|
|
750
750
|
} finally {
|
|
751
|
-
|
|
751
|
+
N(this, Me, !1);
|
|
752
752
|
}
|
|
753
753
|
}
|
|
754
|
-
},
|
|
755
|
-
p(this, he)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" &&
|
|
754
|
+
}, $t = function(t) {
|
|
755
|
+
p(this, he)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" && N(this, ue, !0), (p(this, we) ?? N(this, we, {}))[t.configKey] = t.value, p(this, Ze).schedule(p(this, yt)));
|
|
756
756
|
}, /** Cancel any queued microtask and flush pending changes synchronously now. */
|
|
757
757
|
We = function() {
|
|
758
|
-
p(this, Ze).cancel(),
|
|
758
|
+
p(this, Ze).cancel(), x(this, T, Vt).call(this);
|
|
759
759
|
}, Vt = function() {
|
|
760
760
|
if (!this.isConnected)
|
|
761
761
|
return;
|
|
762
762
|
const t = p(this, ue), o = p(this, we);
|
|
763
|
-
|
|
763
|
+
N(this, ue, !1), N(this, we, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o), x(this, T, Vs).call(this);
|
|
764
764
|
}, /** Resolve everyone awaiting {@link whenSettled} for the flush that just ran. */
|
|
765
765
|
Vs = function() {
|
|
766
766
|
if (p(this, xe).length === 0)
|
|
767
767
|
return;
|
|
768
768
|
const t = p(this, xe);
|
|
769
|
-
|
|
769
|
+
N(this, xe, []);
|
|
770
770
|
for (const o of t)
|
|
771
771
|
o();
|
|
772
772
|
}, /** The opt-in input table. Subclasses set this to enable attribute/property reactivity. */
|
|
773
|
-
m(
|
|
773
|
+
m(Xe, "inputs"), /**
|
|
774
774
|
* The opt-in event table (SPEC §12.5). Each entry (a bare name, or an
|
|
775
775
|
* {@link EventDef} for overrides) declares an outward notification that
|
|
776
776
|
* {@link emit} can fire and installs a managed `on<Name>` handler property.
|
|
777
777
|
*/
|
|
778
|
-
m(
|
|
779
|
-
let
|
|
780
|
-
function
|
|
778
|
+
m(Xe, "events");
|
|
779
|
+
let Nt = Xe;
|
|
780
|
+
function rs(s, e, t) {
|
|
781
781
|
typeof customElements > "u" || customElements.get(s) || customElements.define(s, e, t);
|
|
782
782
|
}
|
|
783
|
-
function
|
|
783
|
+
function Go(s) {
|
|
784
784
|
return {
|
|
785
785
|
enableLogging: (e) => s.enableLogging(e),
|
|
786
786
|
disableLogging: () => s.disableLogging(),
|
|
@@ -789,19 +789,19 @@ function Uo(s) {
|
|
|
789
789
|
getCategories: () => [...s.LOGGING_CATEGORIES]
|
|
790
790
|
};
|
|
791
791
|
}
|
|
792
|
-
function
|
|
792
|
+
function Xo(s, e, t) {
|
|
793
793
|
const { config: o, logging: i, shouldAutoDefine: r = !0 } = t;
|
|
794
|
-
i &&
|
|
794
|
+
i && $o(s, i);
|
|
795
795
|
const n = {
|
|
796
796
|
version: () => o.version,
|
|
797
797
|
config: o,
|
|
798
|
-
...i ? { logging:
|
|
799
|
-
register: () =>
|
|
800
|
-
getInstances: () =>
|
|
798
|
+
...i ? { logging: Go(i) } : {},
|
|
799
|
+
register: () => rs(s, e),
|
|
800
|
+
getInstances: () => Do(s)
|
|
801
801
|
};
|
|
802
|
-
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r &&
|
|
802
|
+
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && rs(s, e), n;
|
|
803
803
|
}
|
|
804
|
-
const
|
|
804
|
+
const ns = /* @__PURE__ */ new Map(), as = /* @__PURE__ */ new WeakMap();
|
|
805
805
|
let ot;
|
|
806
806
|
function qo(s) {
|
|
807
807
|
if (typeof CSSStyleSheet > "u" || !("adoptedStyleSheets" in s))
|
|
@@ -817,8 +817,8 @@ function qo(s) {
|
|
|
817
817
|
function Yo(s, ...e) {
|
|
818
818
|
if (typeof document > "u")
|
|
819
819
|
return;
|
|
820
|
-
let t =
|
|
821
|
-
t ||
|
|
820
|
+
let t = as.get(s);
|
|
821
|
+
t || as.set(s, t = /* @__PURE__ */ new Set());
|
|
822
822
|
const o = e.filter((r) => r && !t.has(r));
|
|
823
823
|
if (o.length === 0)
|
|
824
824
|
return;
|
|
@@ -826,8 +826,8 @@ function Yo(s, ...e) {
|
|
|
826
826
|
t.add(r);
|
|
827
827
|
if (qo(s)) {
|
|
828
828
|
const r = o.map((n) => {
|
|
829
|
-
let a =
|
|
830
|
-
return a || (a = new CSSStyleSheet(), a.replaceSync(n),
|
|
829
|
+
let a = ns.get(n);
|
|
830
|
+
return a || (a = new CSSStyleSheet(), a.replaceSync(n), ns.set(n, a)), a;
|
|
831
831
|
});
|
|
832
832
|
s.adoptedStyleSheets = [...s.adoptedStyleSheets, ...r];
|
|
833
833
|
return;
|
|
@@ -838,7 +838,7 @@ function Yo(s, ...e) {
|
|
|
838
838
|
n.textContent = r, i.appendChild(n);
|
|
839
839
|
}
|
|
840
840
|
}
|
|
841
|
-
function
|
|
841
|
+
function Jo(s, e = {}) {
|
|
842
842
|
const t = e.position ?? "last", o = s.head ?? s;
|
|
843
843
|
let i = null;
|
|
844
844
|
const r = () => typeof document > "u" ? null : (i || (i = document.createElement("style"), e.className && (i.className = e.className)), i.parentNode !== o && (t === "first" && o.firstChild ? o.insertBefore(i, o.firstChild) : o.appendChild(i)), i), n = () => {
|
|
@@ -859,48 +859,55 @@ function Xo(s, e = {}) {
|
|
|
859
859
|
}
|
|
860
860
|
};
|
|
861
861
|
}
|
|
862
|
-
function
|
|
862
|
+
function Rs(s) {
|
|
863
863
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
864
864
|
}
|
|
865
|
-
function
|
|
866
|
-
const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${
|
|
865
|
+
function Qo(s, e) {
|
|
866
|
+
const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${Rs(e)}[a-z0-9-]+)`, "gi");
|
|
867
867
|
let i;
|
|
868
868
|
for (; i = o.exec(s); )
|
|
869
869
|
i[1] && t.add(i[1]);
|
|
870
870
|
return t;
|
|
871
871
|
}
|
|
872
|
-
function
|
|
873
|
-
const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${
|
|
872
|
+
function Zo(s, e) {
|
|
873
|
+
const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${Rs(e)}[a-z0-9-]+)\\s*:`, "gi");
|
|
874
874
|
let i;
|
|
875
875
|
for (; i = o.exec(s); )
|
|
876
876
|
i[1] && t.add(i[1]);
|
|
877
877
|
return [...t];
|
|
878
878
|
}
|
|
879
|
-
function
|
|
879
|
+
function ei(s, e, t = {}) {
|
|
880
880
|
const o = t.minScore ?? 3, i = t.limit ?? 3, r = new Set(s.split("-").filter(Boolean));
|
|
881
881
|
return [...e].map((n) => ({ k: n, score: n.split("-").filter((a) => r.has(a)).length })).filter((n) => n.score >= o).sort((n, a) => a.score - n.score).slice(0, i).map((n) => n.k);
|
|
882
882
|
}
|
|
883
|
-
function
|
|
883
|
+
function ti(s, e) {
|
|
884
884
|
if (e.consumed.size === 0)
|
|
885
885
|
return [];
|
|
886
886
|
const t = [];
|
|
887
|
-
for (const o of
|
|
888
|
-
e.consumed.has(o) || t.push({ name: o, suggestions:
|
|
887
|
+
for (const o of Zo(s, e.prefix))
|
|
888
|
+
e.consumed.has(o) || t.push({ name: o, suggestions: ei(o, e.consumed, { minScore: e.minScore }) });
|
|
889
889
|
return t;
|
|
890
890
|
}
|
|
891
|
-
const
|
|
891
|
+
const si = {
|
|
892
892
|
mobile: "fullscreen",
|
|
893
893
|
tablet: "floating",
|
|
894
894
|
desktop: "floating"
|
|
895
895
|
};
|
|
896
|
-
function
|
|
896
|
+
function oi(s, e, t = {}) {
|
|
897
897
|
if (s !== "auto")
|
|
898
898
|
return s;
|
|
899
|
-
const o =
|
|
900
|
-
return t[o] ??
|
|
899
|
+
const o = Ao(e);
|
|
900
|
+
return t[o] ?? si[o];
|
|
901
|
+
}
|
|
902
|
+
function Ot(s) {
|
|
903
|
+
return {
|
|
904
|
+
presentation: s,
|
|
905
|
+
isFullscreen: s === "fullscreen",
|
|
906
|
+
isModal: s === "modal"
|
|
907
|
+
};
|
|
901
908
|
}
|
|
902
909
|
let He = 0, it = null;
|
|
903
|
-
function
|
|
910
|
+
function ii() {
|
|
904
911
|
if (typeof document > "u")
|
|
905
912
|
return () => {
|
|
906
913
|
};
|
|
@@ -910,7 +917,7 @@ function oi() {
|
|
|
910
917
|
s || (s = !0, He = Math.max(0, He - 1), He === 0 && it !== null && (document.body.style.overflow = it, it = null));
|
|
911
918
|
};
|
|
912
919
|
}
|
|
913
|
-
function
|
|
920
|
+
function ri(s) {
|
|
914
921
|
const e = typeof window < "u" ? window.visualViewport : null;
|
|
915
922
|
if (!e)
|
|
916
923
|
return () => {
|
|
@@ -932,20 +939,20 @@ const j = {
|
|
|
932
939
|
WARN: 3,
|
|
933
940
|
ERROR: 4,
|
|
934
941
|
SILENT: 5
|
|
935
|
-
},
|
|
942
|
+
}, ls = ["trace", "debug", "info", "warn", "error"], pt = () => {
|
|
936
943
|
};
|
|
937
|
-
let
|
|
938
|
-
function
|
|
944
|
+
let ni = "km-log";
|
|
945
|
+
function cs(s) {
|
|
939
946
|
const t = console[s];
|
|
940
947
|
return typeof t == "function" ? t.bind(console) : pt;
|
|
941
948
|
}
|
|
942
|
-
function
|
|
949
|
+
function ai(s) {
|
|
943
950
|
if (s === "debug" && (s = "log"), typeof console > "u")
|
|
944
951
|
return pt;
|
|
945
952
|
const e = console;
|
|
946
|
-
return e[s] !== void 0 ?
|
|
953
|
+
return e[s] !== void 0 ? cs(s) : e.log !== void 0 ? cs("log") : pt;
|
|
947
954
|
}
|
|
948
|
-
const
|
|
955
|
+
const li = (s) => ai(s);
|
|
949
956
|
function Be(s) {
|
|
950
957
|
let e = s;
|
|
951
958
|
const t = j;
|
|
@@ -955,7 +962,7 @@ function Be(s) {
|
|
|
955
962
|
}
|
|
956
963
|
let de;
|
|
957
964
|
const ft = {};
|
|
958
|
-
class
|
|
965
|
+
class Hs {
|
|
959
966
|
constructor(e, t) {
|
|
960
967
|
m(this, "name");
|
|
961
968
|
m(this, "levels", j);
|
|
@@ -978,13 +985,13 @@ class Rs {
|
|
|
978
985
|
o != null && (this.userLevel = Be(o)), this.replaceLoggingMethods();
|
|
979
986
|
}
|
|
980
987
|
storageKey() {
|
|
981
|
-
return typeof this.name == "string" ? `${
|
|
988
|
+
return typeof this.name == "string" ? `${ni}:${this.name}` : void 0;
|
|
982
989
|
}
|
|
983
990
|
persist(e) {
|
|
984
991
|
const t = this.storageKey();
|
|
985
992
|
if (typeof window > "u" || !t)
|
|
986
993
|
return;
|
|
987
|
-
const o = (
|
|
994
|
+
const o = (ls[e] ?? "silent").toUpperCase();
|
|
988
995
|
try {
|
|
989
996
|
window.localStorage[t] = o;
|
|
990
997
|
} catch {
|
|
@@ -1012,7 +1019,7 @@ class Rs {
|
|
|
1012
1019
|
}
|
|
1013
1020
|
replaceLoggingMethods() {
|
|
1014
1021
|
const e = this.getLevel();
|
|
1015
|
-
|
|
1022
|
+
ls.forEach((t, o) => {
|
|
1016
1023
|
this[t] = o < e ? pt : this.methodFactory(t, e, this.name);
|
|
1017
1024
|
}), this.log = this.debug;
|
|
1018
1025
|
}
|
|
@@ -1040,14 +1047,14 @@ class Rs {
|
|
|
1040
1047
|
ft[e].rebuild();
|
|
1041
1048
|
}
|
|
1042
1049
|
}
|
|
1043
|
-
de = new
|
|
1044
|
-
function
|
|
1050
|
+
de = new Hs(void 0, li);
|
|
1051
|
+
function ci(s) {
|
|
1045
1052
|
if (typeof s != "string" || s === "")
|
|
1046
1053
|
throw new TypeError("You must supply a non-empty name when creating a logger.");
|
|
1047
1054
|
let e = ft[s];
|
|
1048
|
-
return e || (e = ft[s] = new
|
|
1055
|
+
return e || (e = ft[s] = new Hs(s, de.methodFactory)), e;
|
|
1049
1056
|
}
|
|
1050
|
-
const
|
|
1057
|
+
const di = ["INIT", "DATA", "UI"], hi = "debug", ds = [
|
|
1051
1058
|
"#4c8bf5",
|
|
1052
1059
|
// blue
|
|
1053
1060
|
"#2ea043",
|
|
@@ -1064,43 +1071,43 @@ const ci = ["INIT", "DATA", "UI"], di = "debug", cs = [
|
|
|
1064
1071
|
// teal
|
|
1065
1072
|
"#8a6d3b"
|
|
1066
1073
|
// brown
|
|
1067
|
-
],
|
|
1068
|
-
function
|
|
1069
|
-
if (
|
|
1074
|
+
], hs = /* @__PURE__ */ new WeakSet();
|
|
1075
|
+
function ui(s, e, t) {
|
|
1076
|
+
if (hs.has(s))
|
|
1070
1077
|
return;
|
|
1071
|
-
|
|
1078
|
+
hs.add(s);
|
|
1072
1079
|
const o = s.methodFactory, i = `color:${t};font-weight:bold`;
|
|
1073
1080
|
s.methodFactory = (r, n, a) => {
|
|
1074
1081
|
const l = o(r, n, a);
|
|
1075
1082
|
return (...c) => l(`%c[${e}]`, i, ...c);
|
|
1076
1083
|
}, s.setLevel(s.getLevel(), !1);
|
|
1077
1084
|
}
|
|
1078
|
-
function
|
|
1085
|
+
function mi(s) {
|
|
1079
1086
|
return typeof s == "number" ? s : j[s.toUpperCase()] ?? j.SILENT;
|
|
1080
1087
|
}
|
|
1081
|
-
const
|
|
1088
|
+
const pi = [
|
|
1082
1089
|
["trace", j.TRACE, "debug"],
|
|
1083
1090
|
["debug", j.DEBUG, "debug"],
|
|
1084
1091
|
["info", j.INFO, "info"],
|
|
1085
1092
|
["warn", j.WARN, "warn"],
|
|
1086
1093
|
["error", j.ERROR, "error"]
|
|
1087
1094
|
];
|
|
1088
|
-
function
|
|
1095
|
+
function fi(s, e, t) {
|
|
1089
1096
|
const o = `color:${s.color};font-weight:bold`, i = "color:#888", r = {};
|
|
1090
|
-
for (const [n, a, l] of
|
|
1097
|
+
for (const [n, a, l] of pi)
|
|
1091
1098
|
r[n] = (...c) => {
|
|
1092
|
-
const d = t(), h = Math.min(s.logger.getLevel(), d == null ? j.SILENT :
|
|
1099
|
+
const d = t(), h = Math.min(s.logger.getLevel(), d == null ? j.SILENT : mi(d));
|
|
1093
1100
|
if (a < h)
|
|
1094
1101
|
return;
|
|
1095
1102
|
(console[l] ?? console.log).bind(console)(`%c[${s.label}]%c ${e}`, o, i, ...c);
|
|
1096
1103
|
};
|
|
1097
1104
|
return r;
|
|
1098
1105
|
}
|
|
1099
|
-
function
|
|
1106
|
+
function gi(s, e = di) {
|
|
1100
1107
|
const t = {}, o = {};
|
|
1101
1108
|
e.forEach((r, n) => {
|
|
1102
|
-
const a = `${s}:${r}`, l =
|
|
1103
|
-
|
|
1109
|
+
const a = `${s}:${r}`, l = ds[n % ds.length], c = ci(a);
|
|
1110
|
+
ui(c, a, l), t[r] = c, o[r] = { label: a, color: l, logger: c };
|
|
1104
1111
|
});
|
|
1105
1112
|
const i = (r) => {
|
|
1106
1113
|
for (const n of e)
|
|
@@ -1109,7 +1116,7 @@ function fi(s, e = ci) {
|
|
|
1109
1116
|
return {
|
|
1110
1117
|
loggers: t,
|
|
1111
1118
|
LOGGING_CATEGORIES: e,
|
|
1112
|
-
enableLogging(r =
|
|
1119
|
+
enableLogging(r = hi) {
|
|
1113
1120
|
i(r);
|
|
1114
1121
|
},
|
|
1115
1122
|
disableLogging() {
|
|
@@ -1125,7 +1132,7 @@ function fi(s, e = ci) {
|
|
|
1125
1132
|
forInstance(r, n) {
|
|
1126
1133
|
const a = {};
|
|
1127
1134
|
for (const l of e)
|
|
1128
|
-
a[l] =
|
|
1135
|
+
a[l] = fi(o[l], r, n);
|
|
1129
1136
|
return a;
|
|
1130
1137
|
}
|
|
1131
1138
|
};
|
|
@@ -1133,13 +1140,13 @@ function fi(s, e = ci) {
|
|
|
1133
1140
|
const pe = Math.min, ie = Math.max, gt = Math.round, rt = Math.floor, re = (s) => ({
|
|
1134
1141
|
x: s,
|
|
1135
1142
|
y: s
|
|
1136
|
-
}),
|
|
1143
|
+
}), bi = {
|
|
1137
1144
|
left: "right",
|
|
1138
1145
|
right: "left",
|
|
1139
1146
|
bottom: "top",
|
|
1140
1147
|
top: "bottom"
|
|
1141
1148
|
};
|
|
1142
|
-
function
|
|
1149
|
+
function Bs(s, e, t) {
|
|
1143
1150
|
return ie(s, pe(e, t));
|
|
1144
1151
|
}
|
|
1145
1152
|
function De(s, e) {
|
|
@@ -1148,10 +1155,10 @@ function De(s, e) {
|
|
|
1148
1155
|
function Se(s) {
|
|
1149
1156
|
return s.split("-")[0];
|
|
1150
1157
|
}
|
|
1151
|
-
function
|
|
1158
|
+
function $e(s) {
|
|
1152
1159
|
return s.split("-")[1];
|
|
1153
1160
|
}
|
|
1154
|
-
function
|
|
1161
|
+
function Ks(s) {
|
|
1155
1162
|
return s === "x" ? "y" : "x";
|
|
1156
1163
|
}
|
|
1157
1164
|
function Yt(s) {
|
|
@@ -1161,45 +1168,45 @@ function oe(s) {
|
|
|
1161
1168
|
const e = s[0];
|
|
1162
1169
|
return e === "t" || e === "b" ? "y" : "x";
|
|
1163
1170
|
}
|
|
1164
|
-
function
|
|
1165
|
-
return
|
|
1171
|
+
function Jt(s) {
|
|
1172
|
+
return Ks(oe(s));
|
|
1166
1173
|
}
|
|
1167
|
-
function
|
|
1174
|
+
function vi(s, e, t) {
|
|
1168
1175
|
t === void 0 && (t = !1);
|
|
1169
|
-
const o =
|
|
1176
|
+
const o = $e(s), i = Jt(s), r = Yt(i);
|
|
1170
1177
|
let n = i === "x" ? o === (t ? "end" : "start") ? "right" : "left" : o === "start" ? "bottom" : "top";
|
|
1171
1178
|
return e.reference[r] > e.floating[r] && (n = bt(n)), [n, bt(n)];
|
|
1172
1179
|
}
|
|
1173
|
-
function
|
|
1180
|
+
function yi(s) {
|
|
1174
1181
|
const e = bt(s);
|
|
1175
|
-
return [
|
|
1182
|
+
return [Rt(s), e, Rt(e)];
|
|
1176
1183
|
}
|
|
1177
|
-
function
|
|
1184
|
+
function Rt(s) {
|
|
1178
1185
|
return s.includes("start") ? s.replace("start", "end") : s.replace("end", "start");
|
|
1179
1186
|
}
|
|
1180
|
-
const
|
|
1181
|
-
function
|
|
1187
|
+
const us = ["left", "right"], ms = ["right", "left"], wi = ["top", "bottom"], xi = ["bottom", "top"];
|
|
1188
|
+
function _i(s, e, t) {
|
|
1182
1189
|
switch (s) {
|
|
1183
1190
|
case "top":
|
|
1184
1191
|
case "bottom":
|
|
1185
|
-
return t ? e ?
|
|
1192
|
+
return t ? e ? ms : us : e ? us : ms;
|
|
1186
1193
|
case "left":
|
|
1187
1194
|
case "right":
|
|
1188
|
-
return e ?
|
|
1195
|
+
return e ? wi : xi;
|
|
1189
1196
|
default:
|
|
1190
1197
|
return [];
|
|
1191
1198
|
}
|
|
1192
1199
|
}
|
|
1193
|
-
function
|
|
1194
|
-
const i =
|
|
1195
|
-
let r =
|
|
1196
|
-
return i && (r = r.map((n) => n + "-" + i), e && (r = r.concat(r.map(
|
|
1200
|
+
function ki(s, e, t, o) {
|
|
1201
|
+
const i = $e(s);
|
|
1202
|
+
let r = _i(Se(s), t === "start", o);
|
|
1203
|
+
return i && (r = r.map((n) => n + "-" + i), e && (r = r.concat(r.map(Rt)))), r;
|
|
1197
1204
|
}
|
|
1198
1205
|
function bt(s) {
|
|
1199
1206
|
const e = Se(s);
|
|
1200
|
-
return
|
|
1207
|
+
return bi[e] + s.slice(e.length);
|
|
1201
1208
|
}
|
|
1202
|
-
function
|
|
1209
|
+
function Ci(s) {
|
|
1203
1210
|
var e, t, o, i;
|
|
1204
1211
|
return {
|
|
1205
1212
|
top: (e = s.top) != null ? e : 0,
|
|
@@ -1208,8 +1215,8 @@ function ki(s) {
|
|
|
1208
1215
|
left: (i = s.left) != null ? i : 0
|
|
1209
1216
|
};
|
|
1210
1217
|
}
|
|
1211
|
-
function
|
|
1212
|
-
return typeof s != "number" ?
|
|
1218
|
+
function Fs(s) {
|
|
1219
|
+
return typeof s != "number" ? Ci(s) : {
|
|
1213
1220
|
top: s,
|
|
1214
1221
|
right: s,
|
|
1215
1222
|
bottom: s,
|
|
@@ -1234,12 +1241,12 @@ function vt(s) {
|
|
|
1234
1241
|
y: t
|
|
1235
1242
|
};
|
|
1236
1243
|
}
|
|
1237
|
-
function
|
|
1244
|
+
function ps(s, e, t) {
|
|
1238
1245
|
let {
|
|
1239
1246
|
reference: o,
|
|
1240
1247
|
floating: i
|
|
1241
1248
|
} = s;
|
|
1242
|
-
const r = oe(e), n =
|
|
1249
|
+
const r = oe(e), n = Jt(e), a = Yt(n), l = Se(e), c = r === "y", d = o.x + o.width / 2 - i.width / 2, h = o.y + o.height / 2 - i.height / 2, f = o[a] / 2 - i[a] / 2;
|
|
1243
1250
|
let u;
|
|
1244
1251
|
switch (l) {
|
|
1245
1252
|
case "top":
|
|
@@ -1272,10 +1279,10 @@ function ms(s, e, t) {
|
|
|
1272
1279
|
y: o.y
|
|
1273
1280
|
};
|
|
1274
1281
|
}
|
|
1275
|
-
const g =
|
|
1282
|
+
const g = $e(e);
|
|
1276
1283
|
return g && (u[n] += f * (g === "end" ? 1 : -1) * (t && c ? -1 : 1)), u;
|
|
1277
1284
|
}
|
|
1278
|
-
async function
|
|
1285
|
+
async function Si(s, e) {
|
|
1279
1286
|
var t;
|
|
1280
1287
|
e === void 0 && (e = {});
|
|
1281
1288
|
const {
|
|
@@ -1291,33 +1298,33 @@ async function Ci(s, e) {
|
|
|
1291
1298
|
elementContext: h = "floating",
|
|
1292
1299
|
altBoundary: f = !1,
|
|
1293
1300
|
padding: u = 0
|
|
1294
|
-
} = De(e, s), g =
|
|
1301
|
+
} = De(e, s), g = Fs(u), y = a[f ? h === "floating" ? "reference" : "floating" : h], v = vt(await r.getClippingRect({
|
|
1295
1302
|
element: (t = await (r.isElement == null ? void 0 : r.isElement(y))) == null || t ? y : y.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(a.floating)),
|
|
1296
1303
|
boundary: c,
|
|
1297
1304
|
rootBoundary: d,
|
|
1298
1305
|
strategy: l
|
|
1299
|
-
})),
|
|
1306
|
+
})), w = h === "floating" ? {
|
|
1300
1307
|
x: o,
|
|
1301
1308
|
y: i,
|
|
1302
1309
|
width: n.floating.width,
|
|
1303
1310
|
height: n.floating.height
|
|
1304
|
-
} : n.reference,
|
|
1311
|
+
} : n.reference, k = await (r.getOffsetParent == null ? void 0 : r.getOffsetParent(a.floating)), P = await (r.isElement == null ? void 0 : r.isElement(k)) && await (r.getScale == null ? void 0 : r.getScale(k)) || {
|
|
1305
1312
|
x: 1,
|
|
1306
1313
|
y: 1
|
|
1307
|
-
},
|
|
1314
|
+
}, M = vt(r.convertOffsetParentRelativeRectToViewportRelativeRect ? await r.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
1308
1315
|
elements: a,
|
|
1309
|
-
rect:
|
|
1310
|
-
offsetParent:
|
|
1316
|
+
rect: w,
|
|
1317
|
+
offsetParent: k,
|
|
1311
1318
|
strategy: l
|
|
1312
|
-
}) :
|
|
1319
|
+
}) : w);
|
|
1313
1320
|
return {
|
|
1314
|
-
top: (
|
|
1315
|
-
bottom: (
|
|
1316
|
-
left: (
|
|
1317
|
-
right: (
|
|
1321
|
+
top: (v.top - M.top + g.top) / P.y,
|
|
1322
|
+
bottom: (M.bottom - v.bottom + g.bottom) / P.y,
|
|
1323
|
+
left: (v.left - M.left + g.left) / P.x,
|
|
1324
|
+
right: (M.right - v.right + g.right) / P.x
|
|
1318
1325
|
};
|
|
1319
1326
|
}
|
|
1320
|
-
const
|
|
1327
|
+
const Ti = 50, Ii = async (s, e, t) => {
|
|
1321
1328
|
const {
|
|
1322
1329
|
placement: o = "bottom",
|
|
1323
1330
|
strategy: i = "absolute",
|
|
@@ -1325,7 +1332,7 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1325
1332
|
platform: n
|
|
1326
1333
|
} = t, a = n.detectOverflow ? n : {
|
|
1327
1334
|
...n,
|
|
1328
|
-
detectOverflow:
|
|
1335
|
+
detectOverflow: Si
|
|
1329
1336
|
}, l = await (n.isRTL == null ? void 0 : n.isRTL(e));
|
|
1330
1337
|
let c = await n.getElementRects({
|
|
1331
1338
|
reference: s,
|
|
@@ -1334,21 +1341,21 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1334
1341
|
}), {
|
|
1335
1342
|
x: d,
|
|
1336
1343
|
y: h
|
|
1337
|
-
} =
|
|
1344
|
+
} = ps(c, o, l), f = o, u = 0;
|
|
1338
1345
|
const g = {};
|
|
1339
|
-
for (let
|
|
1340
|
-
const y = r[
|
|
1346
|
+
for (let b = 0; b < r.length; b++) {
|
|
1347
|
+
const y = r[b];
|
|
1341
1348
|
if (!y)
|
|
1342
1349
|
continue;
|
|
1343
1350
|
const {
|
|
1344
|
-
name:
|
|
1345
|
-
fn:
|
|
1351
|
+
name: v,
|
|
1352
|
+
fn: w
|
|
1346
1353
|
} = y, {
|
|
1347
|
-
x:
|
|
1348
|
-
y:
|
|
1349
|
-
data:
|
|
1350
|
-
reset:
|
|
1351
|
-
} = await
|
|
1354
|
+
x: k,
|
|
1355
|
+
y: P,
|
|
1356
|
+
data: M,
|
|
1357
|
+
reset: $
|
|
1358
|
+
} = await w({
|
|
1352
1359
|
x: d,
|
|
1353
1360
|
y: h,
|
|
1354
1361
|
initialPlacement: o,
|
|
@@ -1362,17 +1369,17 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1362
1369
|
floating: e
|
|
1363
1370
|
}
|
|
1364
1371
|
});
|
|
1365
|
-
d =
|
|
1366
|
-
...g[
|
|
1367
|
-
...
|
|
1368
|
-
},
|
|
1372
|
+
d = k ?? d, h = P ?? h, g[v] = {
|
|
1373
|
+
...g[v],
|
|
1374
|
+
...M
|
|
1375
|
+
}, $ && u < Ti && (u++, typeof $ == "object" && ($.placement && (f = $.placement), $.rects && (c = $.rects === !0 ? await n.getElementRects({
|
|
1369
1376
|
reference: s,
|
|
1370
1377
|
floating: e,
|
|
1371
1378
|
strategy: i
|
|
1372
|
-
}) :
|
|
1379
|
+
}) : $.rects), {
|
|
1373
1380
|
x: d,
|
|
1374
1381
|
y: h
|
|
1375
|
-
} =
|
|
1382
|
+
} = ps(c, f, l)), b = -1);
|
|
1376
1383
|
}
|
|
1377
1384
|
return {
|
|
1378
1385
|
x: d,
|
|
@@ -1399,26 +1406,26 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1399
1406
|
} = De(s, e) || {};
|
|
1400
1407
|
if (c == null)
|
|
1401
1408
|
return {};
|
|
1402
|
-
const h =
|
|
1409
|
+
const h = Fs(d), f = {
|
|
1403
1410
|
x: t,
|
|
1404
1411
|
y: o
|
|
1405
|
-
}, u =
|
|
1406
|
-
let
|
|
1407
|
-
(!
|
|
1408
|
-
const G =
|
|
1412
|
+
}, u = Jt(i), g = Yt(u), b = await n.getDimensions(c), y = u === "y", v = y ? "top" : "left", w = y ? "bottom" : "right", k = y ? "clientHeight" : "clientWidth", P = r.reference[g] + r.reference[u] - f[u] - r.floating[g], M = f[u] - r.reference[u], $ = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(c));
|
|
1413
|
+
let R = $ ? $[k] : 0;
|
|
1414
|
+
(!R || !await (n.isElement == null ? void 0 : n.isElement($))) && (R = a.floating[k] || r.floating[g]);
|
|
1415
|
+
const G = P / 2 - M / 2, L = R / 2 - b[g] / 2 - 1, C = pe(h[v], L), I = pe(h[w], L), O = R - b[g] - I, V = R / 2 - b[g] / 2 + G, S = Bs(C, V, O), H = !l.arrow && $e(i) != null && V !== S && r.reference[g] / 2 - (V < C ? C : I) - b[g] / 2 < 0, te = H ? V < C ? V - C : V - O : 0;
|
|
1409
1416
|
return {
|
|
1410
1417
|
[u]: f[u] + te,
|
|
1411
1418
|
data: {
|
|
1412
|
-
[u]:
|
|
1413
|
-
centerOffset: V -
|
|
1414
|
-
...
|
|
1419
|
+
[u]: S,
|
|
1420
|
+
centerOffset: V - S - te,
|
|
1421
|
+
...H && {
|
|
1415
1422
|
alignmentOffset: te
|
|
1416
1423
|
}
|
|
1417
1424
|
},
|
|
1418
|
-
reset:
|
|
1425
|
+
reset: H
|
|
1419
1426
|
};
|
|
1420
1427
|
}
|
|
1421
|
-
}),
|
|
1428
|
+
}), Pi = function(s) {
|
|
1422
1429
|
return s === void 0 && (s = {}), {
|
|
1423
1430
|
name: "flip",
|
|
1424
1431
|
options: s,
|
|
@@ -1437,51 +1444,51 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1437
1444
|
fallbackPlacements: f,
|
|
1438
1445
|
fallbackStrategy: u = "bestFit",
|
|
1439
1446
|
fallbackAxisSideDirection: g = "none",
|
|
1440
|
-
flipAlignment:
|
|
1447
|
+
flipAlignment: b = !0,
|
|
1441
1448
|
...y
|
|
1442
1449
|
} = De(s, e);
|
|
1443
1450
|
if ((t = r.arrow) != null && t.alignmentOffset)
|
|
1444
1451
|
return {};
|
|
1445
|
-
const
|
|
1446
|
-
!f &&
|
|
1447
|
-
const
|
|
1448
|
-
let
|
|
1449
|
-
if (d &&
|
|
1450
|
-
const
|
|
1451
|
-
|
|
1452
|
+
const v = Se(i), w = oe(a), k = Se(a) === a, P = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), M = f || (k || !b ? [bt(a)] : yi(a)), $ = g !== "none";
|
|
1453
|
+
!f && $ && M.push(...ki(a, b, g, P));
|
|
1454
|
+
const R = [a, ...M], G = await l.detectOverflow(e, y), L = [];
|
|
1455
|
+
let C = ((o = r.flip) == null ? void 0 : o.overflows) || [];
|
|
1456
|
+
if (d && L.push(G[v]), h) {
|
|
1457
|
+
const S = vi(i, n, P);
|
|
1458
|
+
L.push(G[S[0]], G[S[1]]);
|
|
1452
1459
|
}
|
|
1453
|
-
if (
|
|
1460
|
+
if (C = [...C, {
|
|
1454
1461
|
placement: i,
|
|
1455
|
-
overflows:
|
|
1456
|
-
}], !
|
|
1457
|
-
var I,
|
|
1458
|
-
const
|
|
1459
|
-
if (
|
|
1462
|
+
overflows: L
|
|
1463
|
+
}], !L.every((S) => S <= 0)) {
|
|
1464
|
+
var I, O;
|
|
1465
|
+
const S = (((I = r.flip) == null ? void 0 : I.index) || 0) + 1, H = R[S];
|
|
1466
|
+
if (H && (!(h === "alignment" ? w !== oe(H) : !1) || // We leave the current main axis only if every placement on that axis
|
|
1460
1467
|
// overflows the main axis.
|
|
1461
|
-
|
|
1468
|
+
C.every((q) => oe(q.placement) === w ? q.overflows[0] > 0 : !0)))
|
|
1462
1469
|
return {
|
|
1463
1470
|
data: {
|
|
1464
|
-
index:
|
|
1465
|
-
overflows:
|
|
1471
|
+
index: S,
|
|
1472
|
+
overflows: C
|
|
1466
1473
|
},
|
|
1467
1474
|
reset: {
|
|
1468
|
-
placement:
|
|
1475
|
+
placement: H
|
|
1469
1476
|
}
|
|
1470
1477
|
};
|
|
1471
|
-
let te = (
|
|
1478
|
+
let te = (O = C.filter((ge) => ge.overflows[0] <= 0).sort((ge, q) => ge.overflows[1] - q.overflows[1])[0]) == null ? void 0 : O.placement;
|
|
1472
1479
|
if (!te)
|
|
1473
1480
|
switch (u) {
|
|
1474
1481
|
case "bestFit": {
|
|
1475
1482
|
var V;
|
|
1476
|
-
const ge = (V =
|
|
1477
|
-
if (
|
|
1478
|
-
const le = oe(
|
|
1479
|
-
return le ===
|
|
1483
|
+
const ge = (V = C.filter((q) => {
|
|
1484
|
+
if ($) {
|
|
1485
|
+
const le = oe(q.placement);
|
|
1486
|
+
return le === w || // Create a bias to the `y` side axis due to horizontal
|
|
1480
1487
|
// reading directions favoring greater width.
|
|
1481
1488
|
le === "y";
|
|
1482
1489
|
}
|
|
1483
1490
|
return !0;
|
|
1484
|
-
}).map((
|
|
1491
|
+
}).map((q) => [q.placement, q.overflows.filter((le) => le > 0).reduce((le, lo) => le + lo, 0)]).sort((q, le) => q[1] - le[1])[0]) == null ? void 0 : V[0];
|
|
1485
1492
|
ge && (te = ge);
|
|
1486
1493
|
break;
|
|
1487
1494
|
}
|
|
@@ -1499,13 +1506,13 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1499
1506
|
return {};
|
|
1500
1507
|
}
|
|
1501
1508
|
};
|
|
1502
|
-
},
|
|
1503
|
-
async function
|
|
1509
|
+
}, Mi = /* @__PURE__ */ new Set(["left", "top"]);
|
|
1510
|
+
async function Li(s, e) {
|
|
1504
1511
|
const {
|
|
1505
1512
|
placement: t,
|
|
1506
1513
|
platform: o,
|
|
1507
1514
|
elements: i
|
|
1508
|
-
} = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Se(t), a =
|
|
1515
|
+
} = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Se(t), a = $e(t), l = oe(t) === "y", c = Mi.has(n) ? -1 : 1, d = r && l ? -1 : 1, h = De(e, s);
|
|
1509
1516
|
let {
|
|
1510
1517
|
mainAxis: f,
|
|
1511
1518
|
crossAxis: u,
|
|
@@ -1527,7 +1534,7 @@ async function Mi(s, e) {
|
|
|
1527
1534
|
y: u * d
|
|
1528
1535
|
};
|
|
1529
1536
|
}
|
|
1530
|
-
const
|
|
1537
|
+
const Ei = function(s) {
|
|
1531
1538
|
return s === void 0 && (s = 0), {
|
|
1532
1539
|
name: "offset",
|
|
1533
1540
|
options: s,
|
|
@@ -1538,7 +1545,7 @@ const Li = function(s) {
|
|
|
1538
1545
|
y: r,
|
|
1539
1546
|
placement: n,
|
|
1540
1547
|
middlewareData: a
|
|
1541
|
-
} = e, l = await
|
|
1548
|
+
} = e, l = await Li(e, s);
|
|
1542
1549
|
return n === ((t = a.offset) == null ? void 0 : t.placement) && (o = a.arrow) != null && o.alignmentOffset ? {} : {
|
|
1543
1550
|
x: i + l.x,
|
|
1544
1551
|
y: r + l.y,
|
|
@@ -1549,7 +1556,7 @@ const Li = function(s) {
|
|
|
1549
1556
|
};
|
|
1550
1557
|
}
|
|
1551
1558
|
};
|
|
1552
|
-
},
|
|
1559
|
+
}, Ai = function(s) {
|
|
1553
1560
|
return s === void 0 && (s = {}), {
|
|
1554
1561
|
name: "shift",
|
|
1555
1562
|
options: s,
|
|
@@ -1563,14 +1570,14 @@ const Li = function(s) {
|
|
|
1563
1570
|
mainAxis: n = !0,
|
|
1564
1571
|
crossAxis: a = !1,
|
|
1565
1572
|
limiter: l = {
|
|
1566
|
-
fn: (
|
|
1573
|
+
fn: (w) => {
|
|
1567
1574
|
let {
|
|
1568
|
-
x:
|
|
1569
|
-
y:
|
|
1570
|
-
} =
|
|
1575
|
+
x: k,
|
|
1576
|
+
y: P
|
|
1577
|
+
} = w;
|
|
1571
1578
|
return {
|
|
1572
|
-
x:
|
|
1573
|
-
y:
|
|
1579
|
+
x: k,
|
|
1580
|
+
y: P
|
|
1574
1581
|
};
|
|
1575
1582
|
}
|
|
1576
1583
|
},
|
|
@@ -1578,20 +1585,20 @@ const Li = function(s) {
|
|
|
1578
1585
|
} = De(s, e), d = {
|
|
1579
1586
|
x: t,
|
|
1580
1587
|
y: o
|
|
1581
|
-
}, h = await r.detectOverflow(e, c), f = oe(i), u =
|
|
1582
|
-
let g = d[u],
|
|
1583
|
-
const y = (
|
|
1584
|
-
n && (g = y(u, g)), a && (
|
|
1585
|
-
const
|
|
1588
|
+
}, h = await r.detectOverflow(e, c), f = oe(i), u = Ks(f);
|
|
1589
|
+
let g = d[u], b = d[f];
|
|
1590
|
+
const y = (w, k) => Bs(k + h[w === "y" ? "top" : "left"], k, k - h[w === "y" ? "bottom" : "right"]);
|
|
1591
|
+
n && (g = y(u, g)), a && (b = y(f, b));
|
|
1592
|
+
const v = l.fn({
|
|
1586
1593
|
...e,
|
|
1587
1594
|
[u]: g,
|
|
1588
|
-
[f]:
|
|
1595
|
+
[f]: b
|
|
1589
1596
|
});
|
|
1590
1597
|
return {
|
|
1591
|
-
...
|
|
1598
|
+
...v,
|
|
1592
1599
|
data: {
|
|
1593
|
-
x:
|
|
1594
|
-
y:
|
|
1600
|
+
x: v.x - t,
|
|
1601
|
+
y: v.y - o,
|
|
1595
1602
|
enabled: {
|
|
1596
1603
|
[u]: n,
|
|
1597
1604
|
[f]: a
|
|
@@ -1600,7 +1607,7 @@ const Li = function(s) {
|
|
|
1600
1607
|
};
|
|
1601
1608
|
}
|
|
1602
1609
|
};
|
|
1603
|
-
},
|
|
1610
|
+
}, zi = function(s) {
|
|
1604
1611
|
return s === void 0 && (s = {}), {
|
|
1605
1612
|
name: "size",
|
|
1606
1613
|
options: s,
|
|
@@ -1614,18 +1621,18 @@ const Li = function(s) {
|
|
|
1614
1621
|
apply: n = () => {
|
|
1615
1622
|
},
|
|
1616
1623
|
...a
|
|
1617
|
-
} = De(s, e), l = await i.detectOverflow(e, a), c = Se(t), d =
|
|
1624
|
+
} = De(s, e), l = await i.detectOverflow(e, a), c = Se(t), d = $e(t), h = oe(t) === "y", {
|
|
1618
1625
|
width: f,
|
|
1619
1626
|
height: u
|
|
1620
1627
|
} = o.floating;
|
|
1621
|
-
let g,
|
|
1622
|
-
c === "top" || c === "bottom" ? (g = c,
|
|
1623
|
-
const y = u - l.top - l.bottom,
|
|
1624
|
-
let
|
|
1625
|
-
|
|
1628
|
+
let g, b;
|
|
1629
|
+
c === "top" || c === "bottom" ? (g = c, b = d === (await (i.isRTL == null ? void 0 : i.isRTL(r.floating)) ? "start" : "end") ? "left" : "right") : (b = c, g = d === "end" ? "top" : "bottom");
|
|
1630
|
+
const y = u - l.top - l.bottom, v = f - l.left - l.right, w = pe(u - l[g], y), k = pe(f - l[b], v), P = e.middlewareData.shift, M = !P;
|
|
1631
|
+
let $ = w, R = k;
|
|
1632
|
+
P != null && P.enabled.x && (R = v), P != null && P.enabled.y && ($ = y), M && !d && (h ? R = f - 2 * ie(l.left, l.right) : $ = u - 2 * ie(l.top, l.bottom)), await n({
|
|
1626
1633
|
...e,
|
|
1627
|
-
availableWidth:
|
|
1628
|
-
availableHeight:
|
|
1634
|
+
availableWidth: R,
|
|
1635
|
+
availableHeight: $
|
|
1629
1636
|
});
|
|
1630
1637
|
const G = await i.getDimensions(r.floating);
|
|
1631
1638
|
return f !== G.width || u !== G.height ? {
|
|
@@ -1639,8 +1646,8 @@ const Li = function(s) {
|
|
|
1639
1646
|
function xt() {
|
|
1640
1647
|
return typeof window < "u";
|
|
1641
1648
|
}
|
|
1642
|
-
function
|
|
1643
|
-
return
|
|
1649
|
+
function Ve(s) {
|
|
1650
|
+
return Ws(s) ? (s.nodeName || "").toLowerCase() : "#document";
|
|
1644
1651
|
}
|
|
1645
1652
|
function U(s) {
|
|
1646
1653
|
var e;
|
|
@@ -1648,9 +1655,9 @@ function U(s) {
|
|
|
1648
1655
|
}
|
|
1649
1656
|
function ne(s) {
|
|
1650
1657
|
var e;
|
|
1651
|
-
return (e = (
|
|
1658
|
+
return (e = (Ws(s) ? s.ownerDocument : s.document) || window.document) == null ? void 0 : e.documentElement;
|
|
1652
1659
|
}
|
|
1653
|
-
function
|
|
1660
|
+
function Ws(s) {
|
|
1654
1661
|
return xt() ? s instanceof Node || s instanceof U(s).Node : !1;
|
|
1655
1662
|
}
|
|
1656
1663
|
function Z(s) {
|
|
@@ -1659,7 +1666,7 @@ function Z(s) {
|
|
|
1659
1666
|
function fe(s) {
|
|
1660
1667
|
return xt() ? s instanceof HTMLElement || s instanceof U(s).HTMLElement : !1;
|
|
1661
1668
|
}
|
|
1662
|
-
function
|
|
1669
|
+
function fs(s) {
|
|
1663
1670
|
return !xt() || typeof ShadowRoot > "u" ? !1 : s instanceof ShadowRoot || s instanceof U(s).ShadowRoot;
|
|
1664
1671
|
}
|
|
1665
1672
|
function _t(s) {
|
|
@@ -1671,8 +1678,8 @@ function _t(s) {
|
|
|
1671
1678
|
} = ee(s);
|
|
1672
1679
|
return /auto|scroll|overlay|hidden|clip/.test(e + o + t) && i !== "inline" && i !== "contents";
|
|
1673
1680
|
}
|
|
1674
|
-
function
|
|
1675
|
-
return /^(table|td|th)$/.test(
|
|
1681
|
+
function Ni(s) {
|
|
1682
|
+
return /^(table|td|th)$/.test(Ve(s));
|
|
1676
1683
|
}
|
|
1677
1684
|
function kt(s) {
|
|
1678
1685
|
try {
|
|
@@ -1686,16 +1693,16 @@ function kt(s) {
|
|
|
1686
1693
|
return !1;
|
|
1687
1694
|
}
|
|
1688
1695
|
}
|
|
1689
|
-
const
|
|
1690
|
-
let
|
|
1691
|
-
function
|
|
1696
|
+
const Di = /transform|translate|scale|rotate|perspective|filter/, $i = /paint|layout|strict|content/, be = (s) => !!s && s !== "none";
|
|
1697
|
+
let Pt;
|
|
1698
|
+
function Qt(s) {
|
|
1692
1699
|
const e = Z(s) ? ee(s) : s;
|
|
1693
|
-
return be(e.transform) || be(e.translate) || be(e.scale) || be(e.rotate) || be(e.perspective) || !
|
|
1700
|
+
return be(e.transform) || be(e.translate) || be(e.scale) || be(e.rotate) || be(e.perspective) || !Zt() && (be(e.backdropFilter) || be(e.filter)) || Di.test(e.willChange || "") || $i.test(e.contain || "");
|
|
1694
1701
|
}
|
|
1695
1702
|
function Vi(s) {
|
|
1696
1703
|
let e = Te(s);
|
|
1697
|
-
for (; fe(e) && !
|
|
1698
|
-
if (
|
|
1704
|
+
for (; fe(e) && !qe(e); ) {
|
|
1705
|
+
if (Qt(e))
|
|
1699
1706
|
return e;
|
|
1700
1707
|
if (kt(e))
|
|
1701
1708
|
return null;
|
|
@@ -1703,11 +1710,11 @@ function Vi(s) {
|
|
|
1703
1710
|
}
|
|
1704
1711
|
return null;
|
|
1705
1712
|
}
|
|
1706
|
-
function
|
|
1707
|
-
return
|
|
1713
|
+
function Zt() {
|
|
1714
|
+
return Pt == null && (Pt = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), Pt;
|
|
1708
1715
|
}
|
|
1709
|
-
function
|
|
1710
|
-
return /^(html|body|#document)$/.test(
|
|
1716
|
+
function qe(s) {
|
|
1717
|
+
return /^(html|body|#document)$/.test(Ve(s));
|
|
1711
1718
|
}
|
|
1712
1719
|
function ee(s) {
|
|
1713
1720
|
return U(s).getComputedStyle(s);
|
|
@@ -1722,35 +1729,35 @@ function Ct(s) {
|
|
|
1722
1729
|
};
|
|
1723
1730
|
}
|
|
1724
1731
|
function Te(s) {
|
|
1725
|
-
if (
|
|
1732
|
+
if (Ve(s) === "html")
|
|
1726
1733
|
return s;
|
|
1727
1734
|
const e = (
|
|
1728
1735
|
// Step into the shadow DOM of the parent of a slotted node.
|
|
1729
1736
|
s.assignedSlot || // DOM Element detected.
|
|
1730
1737
|
s.parentNode || // ShadowRoot detected.
|
|
1731
|
-
|
|
1738
|
+
fs(s) && s.host || // Fallback.
|
|
1732
1739
|
ne(s)
|
|
1733
1740
|
);
|
|
1734
|
-
return
|
|
1741
|
+
return fs(e) ? e.host : e;
|
|
1735
1742
|
}
|
|
1736
|
-
function
|
|
1743
|
+
function js(s) {
|
|
1737
1744
|
const e = Te(s);
|
|
1738
|
-
return
|
|
1745
|
+
return qe(e) ? (s.ownerDocument || s).body : fe(e) && _t(e) ? e : js(e);
|
|
1739
1746
|
}
|
|
1740
|
-
function
|
|
1747
|
+
function Ye(s, e, t) {
|
|
1741
1748
|
var o;
|
|
1742
1749
|
e === void 0 && (e = []), t === void 0 && (t = !0);
|
|
1743
|
-
const i =
|
|
1750
|
+
const i = js(s), r = i === ((o = s.ownerDocument) == null ? void 0 : o.body), n = U(i);
|
|
1744
1751
|
if (r) {
|
|
1745
|
-
const a =
|
|
1746
|
-
return e.concat(n, n.visualViewport || [], _t(i) ? i : [], a && t ?
|
|
1752
|
+
const a = Ht(n);
|
|
1753
|
+
return e.concat(n, n.visualViewport || [], _t(i) ? i : [], a && t ? Ye(a) : []);
|
|
1747
1754
|
} else
|
|
1748
|
-
return e.concat(i,
|
|
1755
|
+
return e.concat(i, Ye(i, [], t));
|
|
1749
1756
|
}
|
|
1750
|
-
function
|
|
1757
|
+
function Ht(s) {
|
|
1751
1758
|
return s.parent && Object.getPrototypeOf(s.parent) ? s.frameElement : null;
|
|
1752
1759
|
}
|
|
1753
|
-
function
|
|
1760
|
+
function Us(s) {
|
|
1754
1761
|
const e = ee(s);
|
|
1755
1762
|
let t = parseFloat(e.width) || 0, o = parseFloat(e.height) || 0;
|
|
1756
1763
|
const i = fe(s), r = i ? s.offsetWidth : t, n = i ? s.offsetHeight : o, a = gt(t) !== r || gt(o) !== n;
|
|
@@ -1760,48 +1767,48 @@ function js(s) {
|
|
|
1760
1767
|
$: a
|
|
1761
1768
|
};
|
|
1762
1769
|
}
|
|
1763
|
-
function
|
|
1770
|
+
function es(s) {
|
|
1764
1771
|
return Z(s) ? s : s.contextElement;
|
|
1765
1772
|
}
|
|
1766
|
-
function
|
|
1767
|
-
const e =
|
|
1773
|
+
function Oe(s) {
|
|
1774
|
+
const e = es(s);
|
|
1768
1775
|
if (!fe(e))
|
|
1769
1776
|
return re(1);
|
|
1770
1777
|
const t = e.getBoundingClientRect(), {
|
|
1771
1778
|
width: o,
|
|
1772
1779
|
height: i,
|
|
1773
1780
|
$: r
|
|
1774
|
-
} =
|
|
1781
|
+
} = Us(e);
|
|
1775
1782
|
let n = (r ? gt(t.width) : t.width) / o, a = (r ? gt(t.height) : t.height) / i;
|
|
1776
1783
|
return (!n || !Number.isFinite(n)) && (n = 1), (!a || !Number.isFinite(a)) && (a = 1), {
|
|
1777
1784
|
x: n,
|
|
1778
1785
|
y: a
|
|
1779
1786
|
};
|
|
1780
1787
|
}
|
|
1781
|
-
const
|
|
1782
|
-
function
|
|
1788
|
+
const Ri = /* @__PURE__ */ re(0);
|
|
1789
|
+
function Gs(s) {
|
|
1783
1790
|
const e = U(s);
|
|
1784
|
-
return !
|
|
1791
|
+
return !Zt() || !e.visualViewport ? Ri : {
|
|
1785
1792
|
x: e.visualViewport.offsetLeft,
|
|
1786
1793
|
y: e.visualViewport.offsetTop
|
|
1787
1794
|
};
|
|
1788
1795
|
}
|
|
1789
|
-
function
|
|
1796
|
+
function Hi(s, e, t) {
|
|
1790
1797
|
return e === void 0 && (e = !1), !!t && e && t === U(s);
|
|
1791
1798
|
}
|
|
1792
|
-
function
|
|
1799
|
+
function Ie(s, e, t, o) {
|
|
1793
1800
|
e === void 0 && (e = !1), t === void 0 && (t = !1);
|
|
1794
|
-
const i = s.getBoundingClientRect(), r =
|
|
1801
|
+
const i = s.getBoundingClientRect(), r = es(s);
|
|
1795
1802
|
let n = re(1);
|
|
1796
|
-
e && (o ? Z(o) && (n =
|
|
1797
|
-
const a =
|
|
1803
|
+
e && (o ? Z(o) && (n = Oe(o)) : n = Oe(s));
|
|
1804
|
+
const a = Hi(r, t, o) ? Gs(r) : re(0);
|
|
1798
1805
|
let l = (i.left + a.x) / n.x, c = (i.top + a.y) / n.y, d = i.width / n.x, h = i.height / n.y;
|
|
1799
1806
|
if (r && o) {
|
|
1800
1807
|
const f = U(r), u = Z(o) ? U(o) : o;
|
|
1801
|
-
let g = f,
|
|
1802
|
-
for (;
|
|
1803
|
-
const y =
|
|
1804
|
-
l *= y.x, c *= y.y, d *= y.x, h *= y.y, l +=
|
|
1808
|
+
let g = f, b = Ht(g);
|
|
1809
|
+
for (; b && u !== g; ) {
|
|
1810
|
+
const y = Oe(b), v = b.getBoundingClientRect(), w = ee(b), k = v.left + (b.clientLeft + parseFloat(w.paddingLeft)) * y.x, P = v.top + (b.clientTop + parseFloat(w.paddingTop)) * y.y;
|
|
1811
|
+
l *= y.x, c *= y.y, d *= y.x, h *= y.y, l += k, c += P, g = U(b), b = Ht(g);
|
|
1805
1812
|
}
|
|
1806
1813
|
}
|
|
1807
1814
|
return vt({
|
|
@@ -1813,16 +1820,16 @@ function Oe(s, e, t, o) {
|
|
|
1813
1820
|
}
|
|
1814
1821
|
function St(s, e) {
|
|
1815
1822
|
const t = Ct(s).scrollLeft;
|
|
1816
|
-
return e ? e.left + t :
|
|
1823
|
+
return e ? e.left + t : Ie(ne(s)).left + t;
|
|
1817
1824
|
}
|
|
1818
|
-
function
|
|
1825
|
+
function Xs(s, e) {
|
|
1819
1826
|
const t = s.getBoundingClientRect(), o = t.left + e.scrollLeft - St(s, t), i = t.top + e.scrollTop;
|
|
1820
1827
|
return {
|
|
1821
1828
|
x: o,
|
|
1822
1829
|
y: i
|
|
1823
1830
|
};
|
|
1824
1831
|
}
|
|
1825
|
-
function
|
|
1832
|
+
function Bi(s) {
|
|
1826
1833
|
let {
|
|
1827
1834
|
elements: e,
|
|
1828
1835
|
rect: t,
|
|
@@ -1837,11 +1844,11 @@ function Hi(s) {
|
|
|
1837
1844
|
scrollTop: 0
|
|
1838
1845
|
}, c = re(1);
|
|
1839
1846
|
const d = re(0), h = fe(o);
|
|
1840
|
-
if ((h || !r) && ((
|
|
1841
|
-
const u =
|
|
1842
|
-
c =
|
|
1847
|
+
if ((h || !r) && ((Ve(o) !== "body" || _t(n)) && (l = Ct(o)), h)) {
|
|
1848
|
+
const u = Ie(o);
|
|
1849
|
+
c = Oe(o), d.x = u.x + o.clientLeft, d.y = u.y + o.clientTop;
|
|
1843
1850
|
}
|
|
1844
|
-
const f = n && !h && !r ?
|
|
1851
|
+
const f = n && !h && !r ? Xs(n, l) : re(0);
|
|
1845
1852
|
return {
|
|
1846
1853
|
width: t.width * c.x,
|
|
1847
1854
|
height: t.height * c.y,
|
|
@@ -1849,10 +1856,10 @@ function Hi(s) {
|
|
|
1849
1856
|
y: t.y * c.y - l.scrollTop * c.y + d.y + f.y
|
|
1850
1857
|
};
|
|
1851
1858
|
}
|
|
1852
|
-
function
|
|
1859
|
+
function Ki(s) {
|
|
1853
1860
|
return s.getClientRects ? Array.from(s.getClientRects()) : [];
|
|
1854
1861
|
}
|
|
1855
|
-
function
|
|
1862
|
+
function Fi(s) {
|
|
1856
1863
|
const e = Ct(s), t = s.ownerDocument.body, o = ie(s.scrollWidth, s.clientWidth, t.scrollWidth, t.clientWidth), i = ie(s.scrollHeight, s.clientHeight, t.scrollHeight, t.clientHeight);
|
|
1857
1864
|
let r = -e.scrollLeft + St(s);
|
|
1858
1865
|
const n = -e.scrollTop;
|
|
@@ -1863,18 +1870,18 @@ function Ki(s) {
|
|
|
1863
1870
|
y: n
|
|
1864
1871
|
};
|
|
1865
1872
|
}
|
|
1866
|
-
const
|
|
1867
|
-
function
|
|
1873
|
+
const Wi = 25;
|
|
1874
|
+
function ji(s, e, t) {
|
|
1868
1875
|
t === void 0 && (t = "viewport");
|
|
1869
1876
|
const o = t === "layoutViewport", i = U(s), r = ne(s), n = i.visualViewport;
|
|
1870
1877
|
let a = r.clientWidth, l = r.clientHeight, c = 0, d = 0;
|
|
1871
1878
|
if (n) {
|
|
1872
|
-
const f = !
|
|
1879
|
+
const f = !Zt() || e === "fixed";
|
|
1873
1880
|
o ? f || (c = -n.offsetLeft, d = -n.offsetTop) : (a = n.width, l = n.height, f && (c = n.offsetLeft, d = n.offsetTop));
|
|
1874
1881
|
}
|
|
1875
1882
|
if (St(r) <= 0) {
|
|
1876
|
-
const f = r.ownerDocument, u = f.body, g = getComputedStyle(u),
|
|
1877
|
-
|
|
1883
|
+
const f = r.ownerDocument, u = f.body, g = getComputedStyle(u), b = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0, y = Math.abs(r.clientWidth - u.clientWidth - b), v = getComputedStyle(r).scrollbarGutter === "stable both-edges" ? y / 2 : y;
|
|
1884
|
+
v <= Wi && (a -= v);
|
|
1878
1885
|
}
|
|
1879
1886
|
return {
|
|
1880
1887
|
width: a,
|
|
@@ -1883,8 +1890,8 @@ function Wi(s, e, t) {
|
|
|
1883
1890
|
y: d
|
|
1884
1891
|
};
|
|
1885
1892
|
}
|
|
1886
|
-
function
|
|
1887
|
-
const t =
|
|
1893
|
+
function Ui(s, e) {
|
|
1894
|
+
const t = Ie(s, !0, e === "fixed"), o = t.top + s.clientTop, i = t.left + s.clientLeft, r = Oe(s), n = s.clientWidth * r.x, a = s.clientHeight * r.y, l = i * r.x, c = o * r.y;
|
|
1888
1895
|
return {
|
|
1889
1896
|
width: n,
|
|
1890
1897
|
height: a,
|
|
@@ -1892,16 +1899,16 @@ function ji(s, e) {
|
|
|
1892
1899
|
y: c
|
|
1893
1900
|
};
|
|
1894
1901
|
}
|
|
1895
|
-
function
|
|
1902
|
+
function gs(s, e, t) {
|
|
1896
1903
|
let o;
|
|
1897
1904
|
if (e === "viewport" || e === "layoutViewport")
|
|
1898
|
-
o =
|
|
1905
|
+
o = ji(s, t, e);
|
|
1899
1906
|
else if (e === "document")
|
|
1900
|
-
o =
|
|
1907
|
+
o = Fi(ne(s));
|
|
1901
1908
|
else if (Z(e))
|
|
1902
|
-
o =
|
|
1909
|
+
o = Ui(e, t);
|
|
1903
1910
|
else {
|
|
1904
|
-
const i =
|
|
1911
|
+
const i = Gs(s);
|
|
1905
1912
|
o = {
|
|
1906
1913
|
x: e.x - i.x,
|
|
1907
1914
|
y: e.y - i.y,
|
|
@@ -1911,30 +1918,30 @@ function fs(s, e, t) {
|
|
|
1911
1918
|
}
|
|
1912
1919
|
return vt(o);
|
|
1913
1920
|
}
|
|
1914
|
-
function
|
|
1921
|
+
function Gi(s, e) {
|
|
1915
1922
|
const t = e.get(s);
|
|
1916
1923
|
if (t)
|
|
1917
1924
|
return t;
|
|
1918
|
-
let o =
|
|
1925
|
+
let o = Ye(s, [], !1).filter((a) => Z(a) && Ve(a) !== "body"), i = null;
|
|
1919
1926
|
const r = ee(s).position === "fixed";
|
|
1920
1927
|
let n = r ? Te(s) : s;
|
|
1921
|
-
for (; Z(n) && !
|
|
1922
|
-
const a = ee(n), l =
|
|
1928
|
+
for (; Z(n) && !qe(n); ) {
|
|
1929
|
+
const a = ee(n), l = Qt(n), c = i ? i.position : r ? "fixed" : "";
|
|
1923
1930
|
!l && (c === "fixed" || c === "absolute" && a.position === "static") ? o = o.filter((h) => h !== n) : i = a, n = Te(n);
|
|
1924
1931
|
}
|
|
1925
1932
|
return e.set(s, o), o;
|
|
1926
1933
|
}
|
|
1927
|
-
function
|
|
1934
|
+
function Xi(s) {
|
|
1928
1935
|
let {
|
|
1929
1936
|
element: e,
|
|
1930
1937
|
boundary: t,
|
|
1931
1938
|
rootBoundary: o,
|
|
1932
1939
|
strategy: i
|
|
1933
1940
|
} = s;
|
|
1934
|
-
const n = [...t === "clippingAncestors" ? kt(e) ? [] :
|
|
1941
|
+
const n = [...t === "clippingAncestors" ? kt(e) ? [] : Gi(e, this._c) : [].concat(t), o], a = gs(e, n[0], i);
|
|
1935
1942
|
let l = a.top, c = a.right, d = a.bottom, h = a.left;
|
|
1936
1943
|
for (let f = 1; f < n.length; f++) {
|
|
1937
|
-
const u =
|
|
1944
|
+
const u = gs(e, n[f], i);
|
|
1938
1945
|
l = ie(u.top, l), c = pe(u.right, c), d = pe(u.bottom, d), h = ie(u.left, h);
|
|
1939
1946
|
}
|
|
1940
1947
|
return {
|
|
@@ -1948,25 +1955,25 @@ function qi(s) {
|
|
|
1948
1955
|
const {
|
|
1949
1956
|
width: e,
|
|
1950
1957
|
height: t
|
|
1951
|
-
} =
|
|
1958
|
+
} = Us(s);
|
|
1952
1959
|
return {
|
|
1953
1960
|
width: e,
|
|
1954
1961
|
height: t
|
|
1955
1962
|
};
|
|
1956
1963
|
}
|
|
1957
1964
|
function Yi(s, e, t) {
|
|
1958
|
-
const o = fe(e), i = ne(e), r = t === "fixed", n =
|
|
1965
|
+
const o = fe(e), i = ne(e), r = t === "fixed", n = Ie(s, !0, r, e);
|
|
1959
1966
|
let a = {
|
|
1960
1967
|
scrollLeft: 0,
|
|
1961
1968
|
scrollTop: 0
|
|
1962
1969
|
};
|
|
1963
1970
|
const l = re(0);
|
|
1964
|
-
if ((o || !r) && ((
|
|
1965
|
-
const f =
|
|
1971
|
+
if ((o || !r) && ((Ve(e) !== "body" || _t(i)) && (a = Ct(e)), o)) {
|
|
1972
|
+
const f = Ie(e, !0, r, e);
|
|
1966
1973
|
l.x = f.x + e.clientLeft, l.y = f.y + e.clientTop;
|
|
1967
1974
|
}
|
|
1968
1975
|
!o && i && (l.x = St(i));
|
|
1969
|
-
const c = i && !o && !r ?
|
|
1976
|
+
const c = i && !o && !r ? Xs(i, a) : re(0), d = n.left + a.scrollLeft - l.x - c.x, h = n.top + a.scrollTop - l.y - c.y;
|
|
1970
1977
|
return {
|
|
1971
1978
|
x: d,
|
|
1972
1979
|
y: h,
|
|
@@ -1974,10 +1981,10 @@ function Yi(s, e, t) {
|
|
|
1974
1981
|
height: n.height
|
|
1975
1982
|
};
|
|
1976
1983
|
}
|
|
1977
|
-
function
|
|
1984
|
+
function Mt(s) {
|
|
1978
1985
|
return ee(s).position === "static";
|
|
1979
1986
|
}
|
|
1980
|
-
function
|
|
1987
|
+
function bs(s, e) {
|
|
1981
1988
|
if (!fe(s) || ee(s).position === "fixed")
|
|
1982
1989
|
return null;
|
|
1983
1990
|
if (e)
|
|
@@ -1991,19 +1998,19 @@ function qs(s, e) {
|
|
|
1991
1998
|
return t;
|
|
1992
1999
|
if (!fe(s)) {
|
|
1993
2000
|
let i = Te(s);
|
|
1994
|
-
for (; i && !
|
|
1995
|
-
if (Z(i) && !
|
|
2001
|
+
for (; i && !qe(i); ) {
|
|
2002
|
+
if (Z(i) && !Mt(i))
|
|
1996
2003
|
return i;
|
|
1997
2004
|
i = Te(i);
|
|
1998
2005
|
}
|
|
1999
2006
|
return t;
|
|
2000
2007
|
}
|
|
2001
|
-
let o =
|
|
2002
|
-
for (; o &&
|
|
2003
|
-
o =
|
|
2004
|
-
return o &&
|
|
2008
|
+
let o = bs(s, e);
|
|
2009
|
+
for (; o && Ni(o) && Mt(o); )
|
|
2010
|
+
o = bs(o, e);
|
|
2011
|
+
return o && qe(o) && Mt(o) && !Qt(o) ? t : o || Vi(s) || t;
|
|
2005
2012
|
}
|
|
2006
|
-
const
|
|
2013
|
+
const Ji = async function(s) {
|
|
2007
2014
|
const e = this.getOffsetParent || qs, t = this.getDimensions, o = await t(s.floating);
|
|
2008
2015
|
return {
|
|
2009
2016
|
reference: Yi(s.reference, await e(s.floating), s.strategy),
|
|
@@ -2015,25 +2022,25 @@ const Xi = async function(s) {
|
|
|
2015
2022
|
}
|
|
2016
2023
|
};
|
|
2017
2024
|
};
|
|
2018
|
-
function
|
|
2025
|
+
function Qi(s) {
|
|
2019
2026
|
return ee(s).direction === "rtl";
|
|
2020
2027
|
}
|
|
2021
2028
|
const Ys = {
|
|
2022
|
-
convertOffsetParentRelativeRectToViewportRelativeRect:
|
|
2029
|
+
convertOffsetParentRelativeRectToViewportRelativeRect: Bi,
|
|
2023
2030
|
getDocumentElement: ne,
|
|
2024
|
-
getClippingRect:
|
|
2031
|
+
getClippingRect: Xi,
|
|
2025
2032
|
getOffsetParent: qs,
|
|
2026
|
-
getElementRects:
|
|
2027
|
-
getClientRects:
|
|
2033
|
+
getElementRects: Ji,
|
|
2034
|
+
getClientRects: Ki,
|
|
2028
2035
|
getDimensions: qi,
|
|
2029
|
-
getScale:
|
|
2036
|
+
getScale: Oe,
|
|
2030
2037
|
isElement: Z,
|
|
2031
|
-
isRTL:
|
|
2038
|
+
isRTL: Qi
|
|
2032
2039
|
};
|
|
2033
|
-
function
|
|
2040
|
+
function Js(s, e) {
|
|
2034
2041
|
return s.x === e.x && s.y === e.y && s.width === e.width && s.height === e.height;
|
|
2035
2042
|
}
|
|
2036
|
-
function
|
|
2043
|
+
function Zi(s, e, t) {
|
|
2037
2044
|
let o = null, i;
|
|
2038
2045
|
const r = ne(s);
|
|
2039
2046
|
function n() {
|
|
@@ -2045,37 +2052,37 @@ function Qi(s, e, t) {
|
|
|
2045
2052
|
const f = s.getBoundingClientRect(), {
|
|
2046
2053
|
left: u,
|
|
2047
2054
|
top: g,
|
|
2048
|
-
width:
|
|
2055
|
+
width: b,
|
|
2049
2056
|
height: y
|
|
2050
2057
|
} = f;
|
|
2051
|
-
if (d || e(), !
|
|
2058
|
+
if (d || e(), !b || !y)
|
|
2052
2059
|
return;
|
|
2053
|
-
const
|
|
2054
|
-
rootMargin: -
|
|
2060
|
+
const v = rt(g), w = rt(r.clientWidth - (u + b)), k = rt(r.clientHeight - (g + y)), P = rt(u), $ = {
|
|
2061
|
+
rootMargin: -v + "px " + -w + "px " + -k + "px " + -P + "px",
|
|
2055
2062
|
threshold: ie(0, pe(1, h)) || 1
|
|
2056
2063
|
};
|
|
2057
|
-
let
|
|
2058
|
-
function G(
|
|
2059
|
-
const
|
|
2060
|
-
if (!
|
|
2064
|
+
let R = !0;
|
|
2065
|
+
function G(L) {
|
|
2066
|
+
const C = L[0].intersectionRatio;
|
|
2067
|
+
if (!Js(f, s.getBoundingClientRect()))
|
|
2061
2068
|
return a();
|
|
2062
|
-
if (
|
|
2063
|
-
if (!
|
|
2069
|
+
if (C !== h) {
|
|
2070
|
+
if (!R)
|
|
2064
2071
|
return a();
|
|
2065
|
-
|
|
2072
|
+
C ? a(!1, C) : i = setTimeout(() => {
|
|
2066
2073
|
a(!1, 1e-7);
|
|
2067
2074
|
}, 1e3);
|
|
2068
2075
|
}
|
|
2069
|
-
|
|
2076
|
+
R = !1;
|
|
2070
2077
|
}
|
|
2071
2078
|
try {
|
|
2072
2079
|
o = new IntersectionObserver(G, {
|
|
2073
|
-
|
|
2080
|
+
...$,
|
|
2074
2081
|
// Handle <iframe>s
|
|
2075
2082
|
root: r.ownerDocument
|
|
2076
2083
|
});
|
|
2077
2084
|
} catch {
|
|
2078
|
-
o = new IntersectionObserver(G,
|
|
2085
|
+
o = new IntersectionObserver(G, $);
|
|
2079
2086
|
}
|
|
2080
2087
|
o.observe(s);
|
|
2081
2088
|
}
|
|
@@ -2084,7 +2091,7 @@ function Qi(s, e, t) {
|
|
|
2084
2091
|
l.removeEventListener("resize", c), n();
|
|
2085
2092
|
};
|
|
2086
2093
|
}
|
|
2087
|
-
function
|
|
2094
|
+
function er(s, e, t, o) {
|
|
2088
2095
|
o === void 0 && (o = {});
|
|
2089
2096
|
const {
|
|
2090
2097
|
ancestorScroll: i = !0,
|
|
@@ -2092,63 +2099,63 @@ function Zi(s, e, t, o) {
|
|
|
2092
2099
|
elementResize: n = typeof ResizeObserver == "function",
|
|
2093
2100
|
layoutShift: a = typeof IntersectionObserver == "function",
|
|
2094
2101
|
animationFrame: l = !1
|
|
2095
|
-
} = o, c =
|
|
2096
|
-
d.forEach((
|
|
2097
|
-
i &&
|
|
2102
|
+
} = o, c = es(s), d = i || r ? [...c ? Ye(c) : [], ...e ? Ye(e) : []] : [];
|
|
2103
|
+
d.forEach((v) => {
|
|
2104
|
+
i && v.addEventListener("scroll", t), r && v.addEventListener("resize", t);
|
|
2098
2105
|
});
|
|
2099
|
-
const h = c && a ?
|
|
2106
|
+
const h = c && a ? Zi(c, t, r) : null;
|
|
2100
2107
|
let f = -1, u = null;
|
|
2101
|
-
n && (u = new ResizeObserver((
|
|
2102
|
-
let [
|
|
2103
|
-
|
|
2104
|
-
var
|
|
2105
|
-
(
|
|
2108
|
+
n && (u = new ResizeObserver((v) => {
|
|
2109
|
+
let [w] = v;
|
|
2110
|
+
w && w.target === c && u && e && (u.unobserve(e), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
|
|
2111
|
+
var k;
|
|
2112
|
+
(k = u) == null || k.observe(e);
|
|
2106
2113
|
})), t();
|
|
2107
2114
|
}), c && !l && u.observe(c), e && u.observe(e));
|
|
2108
|
-
let g,
|
|
2115
|
+
let g, b = l ? Ie(s) : null;
|
|
2109
2116
|
l && y();
|
|
2110
2117
|
function y() {
|
|
2111
|
-
const
|
|
2112
|
-
|
|
2118
|
+
const v = Ie(s);
|
|
2119
|
+
b && !Js(b, v) && t(), b = v, g = requestAnimationFrame(y);
|
|
2113
2120
|
}
|
|
2114
2121
|
return t(), () => {
|
|
2115
|
-
var
|
|
2116
|
-
d.forEach((
|
|
2117
|
-
i &&
|
|
2118
|
-
}), h == null || h(), (
|
|
2122
|
+
var v;
|
|
2123
|
+
d.forEach((w) => {
|
|
2124
|
+
i && w.removeEventListener("scroll", t), r && w.removeEventListener("resize", t);
|
|
2125
|
+
}), h == null || h(), (v = u) == null || v.disconnect(), u = null, l && cancelAnimationFrame(g);
|
|
2119
2126
|
};
|
|
2120
2127
|
}
|
|
2121
|
-
const
|
|
2128
|
+
const tr = Ei, sr = Ai, or = Pi, Lt = zi, ir = Oi, rr = (s, e, t) => {
|
|
2122
2129
|
const o = /* @__PURE__ */ new Map(), i = t ?? {}, r = {
|
|
2123
2130
|
...Ys,
|
|
2124
2131
|
...i.platform,
|
|
2125
2132
|
_c: o
|
|
2126
2133
|
};
|
|
2127
|
-
return
|
|
2134
|
+
return Ii(s, e, {
|
|
2128
2135
|
...i,
|
|
2129
2136
|
platform: r
|
|
2130
2137
|
});
|
|
2131
2138
|
};
|
|
2132
|
-
function
|
|
2139
|
+
function Bt(s) {
|
|
2133
2140
|
const e = s.parentNode ?? null;
|
|
2134
2141
|
return e instanceof ShadowRoot ? e.host : e;
|
|
2135
2142
|
}
|
|
2136
|
-
function
|
|
2143
|
+
function nr(s) {
|
|
2137
2144
|
if (s.transform !== "none" || s.perspective !== "none" || s.filter !== "none")
|
|
2138
2145
|
return !0;
|
|
2139
2146
|
const e = s.backdropFilter;
|
|
2140
2147
|
return !!(e && e !== "none" || s.willChange && /\b(transform|filter|perspective)\b/.test(s.willChange));
|
|
2141
2148
|
}
|
|
2142
|
-
function
|
|
2143
|
-
let e =
|
|
2149
|
+
function vs(s) {
|
|
2150
|
+
let e = Bt(s);
|
|
2144
2151
|
for (; e && !(e === document.body || e === document.documentElement); ) {
|
|
2145
|
-
if (e instanceof Element &&
|
|
2152
|
+
if (e instanceof Element && nr(getComputedStyle(e)))
|
|
2146
2153
|
return e;
|
|
2147
|
-
e =
|
|
2154
|
+
e = Bt(e);
|
|
2148
2155
|
}
|
|
2149
2156
|
return window;
|
|
2150
2157
|
}
|
|
2151
|
-
function
|
|
2158
|
+
function ar(s, e, t) {
|
|
2152
2159
|
let o = s;
|
|
2153
2160
|
for (; o && !(o === document.body || o === document.documentElement); ) {
|
|
2154
2161
|
if (o instanceof Element) {
|
|
@@ -2156,11 +2163,11 @@ function nr(s, e, t) {
|
|
|
2156
2163
|
if (Math.abs(i.x - e) < 2 && Math.abs(i.y - t) < 2)
|
|
2157
2164
|
return o;
|
|
2158
2165
|
}
|
|
2159
|
-
o =
|
|
2166
|
+
o = Bt(o);
|
|
2160
2167
|
}
|
|
2161
2168
|
return null;
|
|
2162
2169
|
}
|
|
2163
|
-
function
|
|
2170
|
+
function lr(s) {
|
|
2164
2171
|
const e = getComputedStyle(s), t = [];
|
|
2165
2172
|
e.transform !== "none" && t.push(`transform: ${e.transform}`), e.perspective !== "none" && t.push(`perspective: ${e.perspective}`), e.filter !== "none" && t.push(`filter: ${e.filter}`);
|
|
2166
2173
|
const o = e.backdropFilter;
|
|
@@ -2168,11 +2175,11 @@ function ar(s) {
|
|
|
2168
2175
|
const i = e.containerType;
|
|
2169
2176
|
return i && i !== "normal" && t.push(`container-type: ${i}`), t.join("; ");
|
|
2170
2177
|
}
|
|
2171
|
-
function
|
|
2178
|
+
function cr(s) {
|
|
2172
2179
|
const e = s.id ? `#${s.id}` : "", t = typeof s.className == "string" && s.className ? "." + s.className.split(/\s+/).filter(Boolean).slice(0, 2).join(".") : "";
|
|
2173
2180
|
return `<${s.tagName.toLowerCase()}${e}${t}>`;
|
|
2174
2181
|
}
|
|
2175
|
-
function
|
|
2182
|
+
function dr(s) {
|
|
2176
2183
|
const e = s.tolerance ?? 1.5;
|
|
2177
2184
|
let t = 0, o = 0;
|
|
2178
2185
|
if (s.offsetParent instanceof Element) {
|
|
@@ -2182,46 +2189,46 @@ function cr(s) {
|
|
|
2182
2189
|
const i = s.panel.getBoundingClientRect(), r = i.x - (t + s.expectedX), n = i.y - (o + s.expectedY);
|
|
2183
2190
|
if (Math.abs(r) < e && Math.abs(n) < e)
|
|
2184
2191
|
return null;
|
|
2185
|
-
const a =
|
|
2192
|
+
const a = ar(s.reference, r, n);
|
|
2186
2193
|
return {
|
|
2187
2194
|
driftX: r,
|
|
2188
2195
|
driftY: n,
|
|
2189
2196
|
culprit: a,
|
|
2190
|
-
culpritDescription: a ?
|
|
2191
|
-
culpritCss: a ?
|
|
2197
|
+
culpritDescription: a ? cr(a) : "an ancestor element (could not auto-identify)",
|
|
2198
|
+
culpritCss: a ? lr(a) : ""
|
|
2192
2199
|
};
|
|
2193
2200
|
}
|
|
2194
|
-
function
|
|
2201
|
+
function hr(s, e) {
|
|
2195
2202
|
var i;
|
|
2196
2203
|
const t = (i = s.closest) == null ? void 0 : i.call(s, "[data-theme]"), o = t == null ? void 0 : t.getAttribute("data-theme");
|
|
2197
2204
|
o != null && e.setAttribute("data-theme", o);
|
|
2198
2205
|
}
|
|
2199
|
-
const
|
|
2200
|
-
function
|
|
2206
|
+
const ur = { top: "bottom", right: "left", bottom: "top", left: "right" };
|
|
2207
|
+
function mr(s, e, t) {
|
|
2201
2208
|
if (!t)
|
|
2202
2209
|
return;
|
|
2203
|
-
const o = e.split("-")[0], i =
|
|
2210
|
+
const o = e.split("-")[0], i = ur[o];
|
|
2204
2211
|
s.style.left = t.x != null ? `${t.x}px` : "", s.style.top = t.y != null ? `${t.y}px` : "", s.style.right = "", s.style.bottom = "", s.style[i] = `-${s.offsetWidth / 2}px`;
|
|
2205
2212
|
}
|
|
2206
|
-
function
|
|
2207
|
-
const t = [
|
|
2213
|
+
function ys(s, e) {
|
|
2214
|
+
const t = [tr(s.offset ?? 4)];
|
|
2208
2215
|
if (s.matchWidth) {
|
|
2209
2216
|
const i = s.matchWidth;
|
|
2210
|
-
t.push(
|
|
2217
|
+
t.push(Lt({
|
|
2211
2218
|
apply({ rects: r, elements: n }) {
|
|
2212
2219
|
const a = `${r.reference.width}px`;
|
|
2213
2220
|
i === "exact" ? n.floating.style.width = a : n.floating.style.minWidth = a;
|
|
2214
2221
|
}
|
|
2215
2222
|
}));
|
|
2216
2223
|
}
|
|
2217
|
-
e && t.push(
|
|
2224
|
+
e && t.push(or({
|
|
2218
2225
|
...s.lockPlacement === !0 ? { fallbackStrategy: "initialPlacement" } : {},
|
|
2219
2226
|
...s.flipPadding != null ? { padding: s.flipPadding } : {}
|
|
2220
2227
|
}));
|
|
2221
2228
|
const o = s.shift ?? 8;
|
|
2222
|
-
if (o !== !1 && t.push(
|
|
2229
|
+
if (o !== !1 && t.push(sr({ padding: o })), s.maxHeight) {
|
|
2223
2230
|
const i = typeof s.maxHeight == "object" ? s.maxHeight.padding : void 0;
|
|
2224
|
-
t.push(
|
|
2231
|
+
t.push(Lt({
|
|
2225
2232
|
padding: i,
|
|
2226
2233
|
apply({ availableHeight: r, elements: n }) {
|
|
2227
2234
|
n.floating.style.maxHeight = `${Math.max(0, r)}px`;
|
|
@@ -2230,90 +2237,90 @@ function vs(s, e) {
|
|
|
2230
2237
|
}
|
|
2231
2238
|
if (s.maxWidth) {
|
|
2232
2239
|
const i = typeof s.maxWidth == "object" ? s.maxWidth.padding : void 0;
|
|
2233
|
-
t.push(
|
|
2240
|
+
t.push(Lt({
|
|
2234
2241
|
padding: i,
|
|
2235
2242
|
apply({ availableWidth: r, elements: n }) {
|
|
2236
2243
|
n.floating.style.maxWidth = `${Math.max(0, r)}px`;
|
|
2237
2244
|
}
|
|
2238
2245
|
}));
|
|
2239
2246
|
}
|
|
2240
|
-
return s.arrow && t.push(
|
|
2247
|
+
return s.arrow && t.push(ir({ element: s.arrow.element, padding: s.arrow.padding })), t;
|
|
2241
2248
|
}
|
|
2242
2249
|
function Ue(s, e, t = {}) {
|
|
2243
2250
|
const o = t.strategy ?? "fixed";
|
|
2244
|
-
t.inheritThemeFrom &&
|
|
2245
|
-
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n =
|
|
2251
|
+
t.inheritThemeFrom && hr(t.inheritThemeFrom, s), s.style.position = o, s.style.left = "0", s.style.top = "0";
|
|
2252
|
+
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n = ys(t, r);
|
|
2246
2253
|
const a = t.lockPlacement === "freeze";
|
|
2247
2254
|
let l = !1;
|
|
2248
|
-
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...Ys, getOffsetParent: () =>
|
|
2255
|
+
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...Ys, getOffsetParent: () => vs(s) } : void 0), h = () => {
|
|
2249
2256
|
var u;
|
|
2250
|
-
(u = t.beforeCompute) == null || u.call(t),
|
|
2257
|
+
(u = t.beforeCompute) == null || u.call(t), rr(e, s, {
|
|
2251
2258
|
placement: i,
|
|
2252
2259
|
strategy: o,
|
|
2253
2260
|
middleware: n,
|
|
2254
2261
|
...d ? { platform: d } : {}
|
|
2255
|
-
}).then(({ x: g, y:
|
|
2256
|
-
var
|
|
2257
|
-
if (s.style.left = `${g}px`, s.style.top = `${
|
|
2258
|
-
const
|
|
2259
|
-
|
|
2262
|
+
}).then(({ x: g, y: b, placement: y, middlewareData: v }) => {
|
|
2263
|
+
var w, k;
|
|
2264
|
+
if (s.style.left = `${g}px`, s.style.top = `${b}px`, t.arrow && mr(t.arrow.element, y, v.arrow), a && !l && (l = !0, i = y, r = !1, n = ys(t, !1)), (w = t.onPlaced) == null || w.call(t, y), (k = t.onComputed) == null || k.call(t, { x: g, y: b, placement: y }), t.onDrift && e instanceof Element) {
|
|
2265
|
+
const P = c ? vs(s) : window, M = dr({ panel: s, reference: e, expectedX: g, expectedY: b, offsetParent: P });
|
|
2266
|
+
M && t.onDrift(M);
|
|
2260
2267
|
}
|
|
2261
2268
|
});
|
|
2262
2269
|
};
|
|
2263
2270
|
let f;
|
|
2264
|
-
return t.autoUpdate ?? !0 ? f =
|
|
2271
|
+
return t.autoUpdate ?? !0 ? f = er(e, s, h, t.autoUpdateOptions) : h(), {
|
|
2265
2272
|
update: h,
|
|
2266
2273
|
destroy() {
|
|
2267
2274
|
f == null || f(), f = void 0;
|
|
2268
2275
|
}
|
|
2269
2276
|
};
|
|
2270
2277
|
}
|
|
2271
|
-
function
|
|
2278
|
+
function pr(s) {
|
|
2272
2279
|
return typeof s == "number" ? { show: s, hide: s } : { show: (s == null ? void 0 : s.show) ?? 0, hide: (s == null ? void 0 : s.hide) ?? 0 };
|
|
2273
2280
|
}
|
|
2274
|
-
function
|
|
2275
|
-
const e = s.container ?? document.body, t = s.placement ?? "top", o = s.visibleClass ?? "is-visible", i =
|
|
2281
|
+
function fr(s) {
|
|
2282
|
+
const e = s.container ?? document.body, t = s.placement ?? "top", o = s.visibleClass ?? "is-visible", i = pr(s.delay), r = document.createElement("div");
|
|
2276
2283
|
r.setAttribute("role", "tooltip"), s.cssClass && (r.className = s.cssClass), typeof s.content == "string" ? r.textContent = s.content : r.append(s.content);
|
|
2277
2284
|
let n, a = !1, l, c, d;
|
|
2278
2285
|
const h = {
|
|
2279
2286
|
getBoundingClientRect: () => d ?? s.trigger.getBoundingClientRect(),
|
|
2280
2287
|
contextElement: s.trigger
|
|
2281
|
-
}, f = (
|
|
2282
|
-
d = new DOMRect(
|
|
2288
|
+
}, f = (w) => {
|
|
2289
|
+
d = new DOMRect(w.clientX, w.clientY, 0, 0), n == null || n.update();
|
|
2283
2290
|
}, u = () => {
|
|
2284
2291
|
l && clearTimeout(l), c && clearTimeout(c), l = c = void 0;
|
|
2285
2292
|
}, g = () => {
|
|
2286
|
-
var
|
|
2293
|
+
var k;
|
|
2287
2294
|
if (u(), a)
|
|
2288
2295
|
return;
|
|
2289
|
-
(
|
|
2290
|
-
const
|
|
2291
|
-
n = Ue(r,
|
|
2296
|
+
(k = s.onBeforeShow) == null || k.call(s), a = !0, e.append(r);
|
|
2297
|
+
const w = s.followCursor ? h : s.trigger;
|
|
2298
|
+
n = Ue(r, w, {
|
|
2292
2299
|
placement: t,
|
|
2293
2300
|
strategy: s.strategy,
|
|
2294
2301
|
offset: s.offset ?? 8,
|
|
2295
2302
|
inheritThemeFrom: s.inheritThemeFrom ?? s.trigger
|
|
2296
2303
|
}), s.followCursor && s.trigger.addEventListener("mousemove", f), r.classList.add(o);
|
|
2297
|
-
},
|
|
2304
|
+
}, b = () => {
|
|
2298
2305
|
u(), a && (a = !1, r.classList.remove(o), s.followCursor && s.trigger.removeEventListener("mousemove", f), n == null || n.destroy(), n = void 0, r.remove());
|
|
2299
2306
|
}, y = () => {
|
|
2300
2307
|
u(), i.show > 0 ? l = setTimeout(g, i.show) : g();
|
|
2301
|
-
},
|
|
2302
|
-
u(), i.hide > 0 ? c = setTimeout(
|
|
2308
|
+
}, v = () => {
|
|
2309
|
+
u(), i.hide > 0 ? c = setTimeout(b, i.hide) : b();
|
|
2303
2310
|
};
|
|
2304
|
-
return s.trigger.addEventListener("mouseenter", y), s.trigger.addEventListener("mouseleave",
|
|
2311
|
+
return s.trigger.addEventListener("mouseenter", y), s.trigger.addEventListener("mouseleave", v), s.trigger.addEventListener("focusin", y), s.trigger.addEventListener("focusout", v), {
|
|
2305
2312
|
element: r,
|
|
2306
2313
|
get isVisible() {
|
|
2307
2314
|
return a;
|
|
2308
2315
|
},
|
|
2309
2316
|
show: g,
|
|
2310
|
-
hide:
|
|
2317
|
+
hide: b,
|
|
2311
2318
|
destroy() {
|
|
2312
|
-
s.trigger.removeEventListener("mouseenter", y), s.trigger.removeEventListener("mouseleave",
|
|
2319
|
+
s.trigger.removeEventListener("mouseenter", y), s.trigger.removeEventListener("mouseleave", v), s.trigger.removeEventListener("focusin", y), s.trigger.removeEventListener("focusout", v), b();
|
|
2313
2320
|
}
|
|
2314
2321
|
};
|
|
2315
2322
|
}
|
|
2316
|
-
function
|
|
2323
|
+
function gr(s) {
|
|
2317
2324
|
const e = s.container ?? document.body;
|
|
2318
2325
|
let t, o = !1;
|
|
2319
2326
|
const i = s.inheritThemeFrom ?? (s.reference instanceof HTMLElement ? s.reference : void 0);
|
|
@@ -2348,21 +2355,21 @@ function fr(s) {
|
|
|
2348
2355
|
}
|
|
2349
2356
|
};
|
|
2350
2357
|
}
|
|
2351
|
-
const
|
|
2352
|
-
function
|
|
2358
|
+
const Qs = ["INIT", "DATA", "UI", "INTERACTION"], ae = gi("MULTISELECT", Qs), nt = ae.loggers.INIT, K = ae.loggers.DATA, Q = ae.loggers.UI, W = ae.loggers.INTERACTION, Nr = Qs.map((s) => `MULTISELECT:${s}`);
|
|
2359
|
+
function Dr() {
|
|
2353
2360
|
ae.enableLogging();
|
|
2354
2361
|
}
|
|
2355
|
-
function
|
|
2362
|
+
function $r() {
|
|
2356
2363
|
ae.disableLogging();
|
|
2357
2364
|
}
|
|
2358
2365
|
function Vr(s) {
|
|
2359
2366
|
ae.setLogLevel(s);
|
|
2360
2367
|
}
|
|
2361
|
-
function
|
|
2368
|
+
function Rr(s, e) {
|
|
2362
2369
|
const t = s.includes(":") ? s.split(":").pop() : s;
|
|
2363
2370
|
ae.setCategoryLevel(t, e);
|
|
2364
2371
|
}
|
|
2365
|
-
class
|
|
2372
|
+
class ws {
|
|
2366
2373
|
constructor(e) {
|
|
2367
2374
|
m(this, "container");
|
|
2368
2375
|
m(this, "wrapper");
|
|
@@ -2484,7 +2491,7 @@ class ys {
|
|
|
2484
2491
|
this.container.removeEventListener("scroll", this.scrollHandler), this.resizeObserver && this.resizeObserver.disconnect(), this.container.innerHTML = "";
|
|
2485
2492
|
}
|
|
2486
2493
|
}
|
|
2487
|
-
function
|
|
2494
|
+
function xs(s) {
|
|
2488
2495
|
return {
|
|
2489
2496
|
treeId: "",
|
|
2490
2497
|
id: -1,
|
|
@@ -2500,114 +2507,114 @@ function ws(s) {
|
|
|
2500
2507
|
};
|
|
2501
2508
|
}
|
|
2502
2509
|
const je = (s) => !s || typeof s == "string" && s.trim() === "";
|
|
2503
|
-
function
|
|
2510
|
+
function br(s, e = ".") {
|
|
2504
2511
|
if (!s || typeof s != "string") return null;
|
|
2505
2512
|
const t = s.lastIndexOf(e);
|
|
2506
2513
|
return t === -1 ? "" : s.substring(0, t);
|
|
2507
2514
|
}
|
|
2508
|
-
function
|
|
2515
|
+
function _s(s, e, t = ".") {
|
|
2509
2516
|
return je(e) ? s : s.startsWith(e + t) ? s.substring(e.length + t.length) : s;
|
|
2510
2517
|
}
|
|
2511
|
-
function
|
|
2518
|
+
function ks(s, e = 0, t = 1, o = ".") {
|
|
2512
2519
|
return s.split(o).slice(e, e + t).join(o);
|
|
2513
2520
|
}
|
|
2514
|
-
function
|
|
2521
|
+
function vr(s, e) {
|
|
2515
2522
|
return s.split(e).length;
|
|
2516
2523
|
}
|
|
2517
2524
|
function ce(s, e) {
|
|
2518
2525
|
return s[e];
|
|
2519
2526
|
}
|
|
2520
|
-
function
|
|
2521
|
-
const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, h = s.getDisplayValueCallback, f = je(i), u = je(r), g = je(n),
|
|
2522
|
-
let
|
|
2523
|
-
const
|
|
2524
|
-
treePathSeparator:
|
|
2525
|
-
root:
|
|
2527
|
+
function yr(s = {}) {
|
|
2528
|
+
const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, h = s.getDisplayValueCallback, f = je(i), u = je(r), g = je(n), b = je(a), y = "x", v = s.treePathSeparator || ".", w = xs();
|
|
2529
|
+
let k = 0, P = null;
|
|
2530
|
+
const M = (L) => o ? o(L) : t ? ce(L, t) : void 0, $ = {
|
|
2531
|
+
treePathSeparator: v,
|
|
2532
|
+
root: w,
|
|
2526
2533
|
get tree() {
|
|
2527
|
-
return Object.values(
|
|
2534
|
+
return Object.values(w.children);
|
|
2528
2535
|
},
|
|
2529
2536
|
/**
|
|
2530
2537
|
* Every node in depth-first render order (a parent immediately precedes
|
|
2531
2538
|
* its subtree). Computed once per `insertArray` and cached.
|
|
2532
2539
|
*/
|
|
2533
2540
|
get flatNodes() {
|
|
2534
|
-
if (
|
|
2535
|
-
const
|
|
2536
|
-
function
|
|
2537
|
-
let
|
|
2538
|
-
|
|
2539
|
-
for (const
|
|
2540
|
-
|
|
2541
|
+
if (P) return P;
|
|
2542
|
+
const L = [], C = s.isSorted ?? !1, I = s.sortCallback;
|
|
2543
|
+
function O(V) {
|
|
2544
|
+
let S = Object.values(V.children);
|
|
2545
|
+
C && I && S.length > 0 && (S = I(S));
|
|
2546
|
+
for (const H of S)
|
|
2547
|
+
L.push(H), H.hasChildren && O(H);
|
|
2541
2548
|
}
|
|
2542
|
-
return
|
|
2549
|
+
return O(w), P = L, L;
|
|
2543
2550
|
},
|
|
2544
|
-
insertArray(
|
|
2545
|
-
|
|
2546
|
-
const
|
|
2547
|
-
let I =
|
|
2548
|
-
const
|
|
2549
|
-
|
|
2550
|
-
const
|
|
2551
|
-
return
|
|
2552
|
-
|
|
2551
|
+
insertArray(L) {
|
|
2552
|
+
L = L || [], w.children = {}, k = 0, P = null;
|
|
2553
|
+
const C = [];
|
|
2554
|
+
let I = L.map((O, V) => {
|
|
2555
|
+
const S = xs();
|
|
2556
|
+
S.treeId = c, S.id = e ? ce(O, e) : void 0;
|
|
2557
|
+
const H = M(O);
|
|
2558
|
+
return H == null || H === "" || typeof H != "string" ? (C.push(`index ${V}`), null) : (S.path = H, (S.id === void 0 || S.id === -1) && (S.id = H), f ? S.parentPath = br(S.path, v) : S.parentPath = ce(O, i), S.pathSegment = ks(
|
|
2559
|
+
_s(S.path, S.parentPath ?? "", v),
|
|
2553
2560
|
0,
|
|
2554
2561
|
1,
|
|
2555
|
-
|
|
2556
|
-
), u ?
|
|
2557
|
-
}).filter((
|
|
2562
|
+
v
|
|
2563
|
+
), u ? S.level = vr(S.path, v) : S.level = ce(O, r), g || (S.hasChildren = ce(O, n)), S.data = O, S);
|
|
2564
|
+
}).filter((O) => O !== null);
|
|
2558
2565
|
s.isSorted || (s.sortCallback ? I = s.sortCallback(I) : I = G(I));
|
|
2559
|
-
for (const
|
|
2560
|
-
|
|
2561
|
-
if (l || !
|
|
2562
|
-
for (const
|
|
2566
|
+
for (const O of I)
|
|
2567
|
+
R(O.parentPath ?? "", O);
|
|
2568
|
+
if (l || !b)
|
|
2569
|
+
for (const O of I)
|
|
2563
2570
|
if (l)
|
|
2564
|
-
|
|
2571
|
+
O.isSelectable = l(O) !== !1;
|
|
2565
2572
|
else {
|
|
2566
|
-
const V = ce(
|
|
2567
|
-
|
|
2573
|
+
const V = ce(O.data, a);
|
|
2574
|
+
O.isSelectable = V == null ? !0 : !!V;
|
|
2568
2575
|
}
|
|
2569
|
-
|
|
2570
|
-
`[ltree ${c}] ${
|
|
2576
|
+
C.length > 0 && console.warn(
|
|
2577
|
+
`[ltree ${c}] ${C.length} option(s) had an invalid path and were skipped (pathMember="${t}"). Offending: ${C.slice(0, 5).join(", ")}` + (C.length > 5 ? ", …" : "")
|
|
2571
2578
|
);
|
|
2572
2579
|
},
|
|
2573
|
-
getNodeByPath(
|
|
2574
|
-
let I =
|
|
2575
|
-
if (
|
|
2576
|
-
const
|
|
2577
|
-
for (let V = 0; V <
|
|
2578
|
-
const
|
|
2579
|
-
if (!I.children.hasOwnProperty(
|
|
2580
|
+
getNodeByPath(L, C) {
|
|
2581
|
+
let I = C || w;
|
|
2582
|
+
if (L) {
|
|
2583
|
+
const O = L.split(v);
|
|
2584
|
+
for (let V = 0; V < O.length; V++) {
|
|
2585
|
+
const S = y + O[V];
|
|
2586
|
+
if (!I.children.hasOwnProperty(S))
|
|
2580
2587
|
return null;
|
|
2581
|
-
I = I.children[
|
|
2588
|
+
I = I.children[S];
|
|
2582
2589
|
}
|
|
2583
2590
|
}
|
|
2584
2591
|
return I;
|
|
2585
2592
|
}
|
|
2586
2593
|
};
|
|
2587
|
-
function
|
|
2588
|
-
const I =
|
|
2594
|
+
function R(L, C) {
|
|
2595
|
+
const I = $.getNodeByPath(L);
|
|
2589
2596
|
if (!I)
|
|
2590
|
-
return `Node: ${
|
|
2591
|
-
u && (
|
|
2592
|
-
const
|
|
2593
|
-
return I.children.hasOwnProperty(
|
|
2594
|
-
}
|
|
2595
|
-
function G(
|
|
2596
|
-
return
|
|
2597
|
-
const
|
|
2598
|
-
if (
|
|
2599
|
-
if (
|
|
2600
|
-
return
|
|
2601
|
-
if (d &&
|
|
2602
|
-
const
|
|
2603
|
-
if (
|
|
2597
|
+
return `Node: ${C.path} - Could not find parent node: ${L}`;
|
|
2598
|
+
u && (C.level = (I.level || 0) + 1);
|
|
2599
|
+
const O = y + ks(_s(C.path, L, v), 0, 1, v);
|
|
2600
|
+
return I.children.hasOwnProperty(O) || (I.children[O] = C, g && !I.hasChildren && (I.hasChildren = !0), k = Math.max(k, C.level || 0)), null;
|
|
2601
|
+
}
|
|
2602
|
+
function G(L) {
|
|
2603
|
+
return L.sort((C, I) => {
|
|
2604
|
+
const O = C.level || 0, V = I.level || 0;
|
|
2605
|
+
if (O !== V) return O - V;
|
|
2606
|
+
if (C.parentPath !== I.parentPath)
|
|
2607
|
+
return C.parentPath ? I.parentPath ? C.parentPath.localeCompare(I.parentPath) : 1 : -1;
|
|
2608
|
+
if (d && C.data && I.data) {
|
|
2609
|
+
const S = ce(C.data, d) ?? 0, H = ce(I.data, d) ?? 0;
|
|
2610
|
+
if (S !== H) return S - H;
|
|
2604
2611
|
}
|
|
2605
|
-
return h ? h(
|
|
2612
|
+
return h ? h(C).localeCompare(h(I)) : C.path.localeCompare(I.path);
|
|
2606
2613
|
});
|
|
2607
2614
|
}
|
|
2608
|
-
return
|
|
2615
|
+
return $;
|
|
2609
2616
|
}
|
|
2610
|
-
function
|
|
2617
|
+
function Cs(s, e) {
|
|
2611
2618
|
const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), r = (l) => String(e(l.data)), n = (l) => {
|
|
2612
2619
|
t.set(r(l), l);
|
|
2613
2620
|
const c = [];
|
|
@@ -2619,7 +2626,7 @@ function ks(s, e) {
|
|
|
2619
2626
|
for (const l of a) n(l);
|
|
2620
2627
|
return { nodeByValue: t, atomsUnder: o, atomPaths: i, roots: a };
|
|
2621
2628
|
}
|
|
2622
|
-
function
|
|
2629
|
+
function ts(s, e, t) {
|
|
2623
2630
|
const o = s.atomsUnder.get(e.path);
|
|
2624
2631
|
if (!o || o.length === 0) return "unchecked";
|
|
2625
2632
|
let i = 0;
|
|
@@ -2635,17 +2642,17 @@ function Ke(s, e) {
|
|
|
2635
2642
|
}
|
|
2636
2643
|
return t;
|
|
2637
2644
|
}
|
|
2638
|
-
function
|
|
2639
|
-
const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r =
|
|
2645
|
+
function wr(s, e, t) {
|
|
2646
|
+
const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r = ts(s, e, t), n = [], a = [];
|
|
2640
2647
|
if (r === "checked")
|
|
2641
2648
|
for (const l of o) i.delete(l) && a.push(l);
|
|
2642
2649
|
else
|
|
2643
2650
|
for (const l of o) i.has(l) || (i.add(l), n.push(l));
|
|
2644
2651
|
return { checkedAtoms: i, addedAtoms: n, removedAtoms: a };
|
|
2645
2652
|
}
|
|
2646
|
-
function
|
|
2653
|
+
function Et(s, e, t, o) {
|
|
2647
2654
|
const i = (a) => String(o(a.data)), r = [], n = (a) => {
|
|
2648
|
-
const l =
|
|
2655
|
+
const l = ts(s, a, e);
|
|
2649
2656
|
if (l === "unchecked") return;
|
|
2650
2657
|
const c = a.isSelectable !== !1, d = Object.values(a.children);
|
|
2651
2658
|
if (t === "leaves") {
|
|
@@ -2667,7 +2674,7 @@ function Lt(s, e, t, o) {
|
|
|
2667
2674
|
for (const a of s.roots) n(a);
|
|
2668
2675
|
return r;
|
|
2669
2676
|
}
|
|
2670
|
-
class
|
|
2677
|
+
class xr {
|
|
2671
2678
|
constructor(e, t = {}) {
|
|
2672
2679
|
m(this, "element");
|
|
2673
2680
|
m(this, "instanceId");
|
|
@@ -2717,6 +2724,10 @@ class wr {
|
|
|
2717
2724
|
// Inline ✕ inside the fullscreen search box that clears the term. Shown only while
|
|
2718
2725
|
// there's text; touch has no keyboard Escape, so this is the way to reset a search.
|
|
2719
2726
|
m(this, "fullscreenSearchClear", null);
|
|
2727
|
+
// Leading mode toggle inside the fullscreen search box (opt-in via
|
|
2728
|
+
// isSearchModeToggleShown) that flips searchMode filter<->navigate live. Its icon
|
|
2729
|
+
// reflects the current mode; clicking re-projects the current term in place.
|
|
2730
|
+
m(this, "fullscreenModeToggle", null);
|
|
2720
2731
|
// Navigate-mode match navigator shown under the fullscreen search box: a result
|
|
2721
2732
|
// count ("3 of 12") plus prev/next buttons that step through matches. Touch has no
|
|
2722
2733
|
// Ctrl+Arrow shortcut, so these buttons are the on-screen substitute. Only built in
|
|
@@ -2728,6 +2739,9 @@ class wr {
|
|
|
2728
2739
|
// Releases this instance's page-scroll lock (null when not locked). The core
|
|
2729
2740
|
// helper is ref-counted; we hold at most one lock per instance. See lockBodyScroll().
|
|
2730
2741
|
m(this, "bodyScrollUnlock", null);
|
|
2742
|
+
// Saved inline `overflow-x` of <html> while a fullscreen sheet clamps the host
|
|
2743
|
+
// document's horizontal overflow (null when not clamped). See clampDocumentOverflowX().
|
|
2744
|
+
m(this, "overflowXClamp", null);
|
|
2731
2745
|
// Detaches the visualViewport listener that shrinks the fullscreen sheet to sit
|
|
2732
2746
|
// above the soft keyboard (null when not attached). See observeKeyboardInset().
|
|
2733
2747
|
m(this, "keyboardInsetCleanup", null);
|
|
@@ -2784,7 +2798,7 @@ class wr {
|
|
|
2784
2798
|
this.element = e, this.instanceId = `MS-${Math.random().toString(36).slice(2, 11)}`, this.options = {
|
|
2785
2799
|
// String options
|
|
2786
2800
|
searchHint: e.dataset.searchHint || "",
|
|
2787
|
-
searchPlaceholder: e.dataset.searchPlaceholder ||
|
|
2801
|
+
searchPlaceholder: e.dataset.searchPlaceholder || void 0,
|
|
2788
2802
|
selectPlaceholder: e.dataset.selectPlaceholder || "Pick an option...",
|
|
2789
2803
|
noDataPlaceholder: e.dataset.noDataPlaceholder || void 0,
|
|
2790
2804
|
dropdownMinWidth: e.dataset.dropdownMinWidth || void 0,
|
|
@@ -2811,6 +2825,7 @@ class wr {
|
|
|
2811
2825
|
isSearchEnabled: e.dataset.enableSearch !== "false",
|
|
2812
2826
|
isAddNewAllowed: e.dataset.allowAddNew === "true",
|
|
2813
2827
|
isCounterShown: e.dataset.showCounter === "true",
|
|
2828
|
+
isSearchModeToggleShown: e.dataset.showSearchModeToggle === "true",
|
|
2814
2829
|
isKeepOptionsOnSearch: e.dataset.keepOptionsOnSearch !== "false",
|
|
2815
2830
|
shouldKeepSearchOnClose: e.dataset.keepSearchOnClose !== "false",
|
|
2816
2831
|
// Data and callbacks
|
|
@@ -2971,7 +2986,7 @@ class wr {
|
|
|
2971
2986
|
try {
|
|
2972
2987
|
this.allOptions = JSON.parse(e);
|
|
2973
2988
|
} catch (t) {
|
|
2974
|
-
|
|
2989
|
+
K.error(`[${this.instanceId}] Failed to parse data-options:`, t), this.allOptions = [];
|
|
2975
2990
|
}
|
|
2976
2991
|
else this.options.options && (this.allOptions = this.options.options);
|
|
2977
2992
|
this.filteredOptions = [...this.allOptions], this.isTreeMode() && this.buildTree();
|
|
@@ -2985,7 +3000,7 @@ class wr {
|
|
|
2985
3000
|
}
|
|
2986
3001
|
/** (Re)build the ltree from `allOptions` and derive the visible flat list. */
|
|
2987
3002
|
buildTree() {
|
|
2988
|
-
this.tree =
|
|
3003
|
+
this.tree = yr({
|
|
2989
3004
|
idMember: this.options.valueMember,
|
|
2990
3005
|
pathMember: this.options.pathMember,
|
|
2991
3006
|
getPathCallback: this.options.getPathCallback,
|
|
@@ -2997,7 +3012,7 @@ class wr {
|
|
|
2997
3012
|
treePathSeparator: this.options.treePathSeparator,
|
|
2998
3013
|
treeId: this.instanceId,
|
|
2999
3014
|
getDisplayValueCallback: (e) => this.getItemDisplayValue(e.data)
|
|
3000
|
-
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ?
|
|
3015
|
+
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ? Cs(this.tree, (e) => String(this.getItemValue(e))) : null, this.rebuildTreeVisible();
|
|
3001
3016
|
}
|
|
3002
3017
|
/**
|
|
3003
3018
|
* Whether cascade checkbox mode is active: a multi-select tree with
|
|
@@ -3020,7 +3035,7 @@ class wr {
|
|
|
3020
3035
|
* so badges / form / change events reflect the policy (rolled-up branches, etc.).
|
|
3021
3036
|
*/
|
|
3022
3037
|
toggleTreeCascade(e) {
|
|
3023
|
-
const t = this.cascadeIndex, o = Ke(t, this.selectedValues), { checkedAtoms: i } =
|
|
3038
|
+
const t = this.cascadeIndex, o = Ke(t, this.selectedValues), { checkedAtoms: i } = wr(t, e, o);
|
|
3024
3039
|
this.commitCascadeAtoms(i);
|
|
3025
3040
|
}
|
|
3026
3041
|
/**
|
|
@@ -3031,7 +3046,7 @@ class wr {
|
|
|
3031
3046
|
*/
|
|
3032
3047
|
commitCascadeAtoms(e) {
|
|
3033
3048
|
var l;
|
|
3034
|
-
const t = this.cascadeIndex, o =
|
|
3049
|
+
const t = this.cascadeIndex, o = Et(
|
|
3035
3050
|
t,
|
|
3036
3051
|
e,
|
|
3037
3052
|
this.cascadePolicy(),
|
|
@@ -3056,7 +3071,7 @@ class wr {
|
|
|
3056
3071
|
*/
|
|
3057
3072
|
counterSelection() {
|
|
3058
3073
|
if (this.isCascadeMode() && this.cascadeIndex) {
|
|
3059
|
-
const e =
|
|
3074
|
+
const e = Et(
|
|
3060
3075
|
this.cascadeIndex,
|
|
3061
3076
|
this.cascadeCheckedAtoms,
|
|
3062
3077
|
"rolled-up",
|
|
@@ -3137,6 +3152,27 @@ class wr {
|
|
|
3137
3152
|
const n = t.filter((a) => r.has(a.path));
|
|
3138
3153
|
this.treeNodes = n, this.filteredOptions = n.map((a) => a.data);
|
|
3139
3154
|
}
|
|
3155
|
+
/**
|
|
3156
|
+
* Tree + `search-mode="navigate"`: keep the ENTIRE tree visible (the tree is always
|
|
3157
|
+
* fully expanded, so `flatNodes` is the whole thing) and record which visible rows
|
|
3158
|
+
* match the term in `matchingIndices` — the flat-list navigate behavior, but over
|
|
3159
|
+
* `treeNodes`. Filter mode collapses the hierarchy to matches + ancestors; navigate
|
|
3160
|
+
* mode instead leaves the structure intact so the user can jump between matches
|
|
3161
|
+
* (Ctrl+Arrow on desktop, the fullscreen navigator on touch). Returns the index of
|
|
3162
|
+
* the first match, or -1 (no term / no matches), so the caller can set focus.
|
|
3163
|
+
*/
|
|
3164
|
+
rebuildTreeVisibleForNavigate() {
|
|
3165
|
+
if (this.matchingIndices.clear(), !this.tree)
|
|
3166
|
+
return this.treeNodes = [], this.filteredOptions = [], -1;
|
|
3167
|
+
const e = this.tree.flatNodes;
|
|
3168
|
+
this.treeNodes = e, this.filteredOptions = e.map((i) => i.data);
|
|
3169
|
+
const t = (this.searchTerm || "").trim().toLowerCase();
|
|
3170
|
+
if (!t) return -1;
|
|
3171
|
+
let o = -1;
|
|
3172
|
+
return e.forEach((i, r) => {
|
|
3173
|
+
this.getItemSearchValue(i.data).toLowerCase().includes(t) && (this.matchingIndices.add(r), o === -1 && (o = r));
|
|
3174
|
+
}), o;
|
|
3175
|
+
}
|
|
3140
3176
|
/**
|
|
3141
3177
|
* (Re)compute `isRTL` from the host's `dir` (or an RTL ancestor) and derive the
|
|
3142
3178
|
* direction-mirrored badges position. Pure state — callers apply the DOM effects
|
|
@@ -3267,7 +3303,7 @@ class wr {
|
|
|
3267
3303
|
}
|
|
3268
3304
|
const e = this.scaledOptionHeight(), t = this.options.virtualScrollBuffer ?? 10;
|
|
3269
3305
|
requestAnimationFrame(() => {
|
|
3270
|
-
this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new
|
|
3306
|
+
this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new ws({
|
|
3271
3307
|
container: this.optionsContainer,
|
|
3272
3308
|
itemHeight: e,
|
|
3273
3309
|
items: this.filteredOptions,
|
|
@@ -3301,14 +3337,14 @@ class wr {
|
|
|
3301
3337
|
if (!(d.getIsVisibleCallback ? d.getIsVisibleCallback(this) : d.isVisible ?? !0)) return;
|
|
3302
3338
|
let u;
|
|
3303
3339
|
d.getIsDisabledCallback ? u = d.getIsDisabledCallback(this) : d.isDisabled !== void 0 ? u = d.isDisabled : u = this.getBuiltInActionDisabled(d.action);
|
|
3304
|
-
const g = u ? " disabled" : "",
|
|
3340
|
+
const g = u ? " disabled" : "", b = d.getTextCallback ? d.getTextCallback(this) : d.text;
|
|
3305
3341
|
let y = "";
|
|
3306
3342
|
if (d.getClassCallback) {
|
|
3307
|
-
const
|
|
3308
|
-
y = Array.isArray(
|
|
3343
|
+
const k = d.getClassCallback(this);
|
|
3344
|
+
y = Array.isArray(k) ? ` ${k.join(" ")}` : k ? ` ${k}` : "";
|
|
3309
3345
|
} else d.cssClass && (y = ` ${d.cssClass}`);
|
|
3310
|
-
const
|
|
3311
|
-
l.has(
|
|
3346
|
+
const v = Math.max(1, Math.floor(d.row ?? 1)), w = `<button type="button"${g} class="ms__action-btn${y}" data-action="${d.action}" data-button-index="${h}">${b}</button>`;
|
|
3347
|
+
l.has(v) || l.set(v, []), l.get(v).push(w);
|
|
3312
3348
|
}), l.size === 0) return "";
|
|
3313
3349
|
const c = Array.from(l.keys()).sort((d, h) => d - h).map((d) => `<div class="ms__actions-row" data-row="${d}">${l.get(d).join("")}</div>`).join("");
|
|
3314
3350
|
return `<div class="ms__actions${i}${r}${n}${a}">${c}</div>`;
|
|
@@ -3325,9 +3361,10 @@ class wr {
|
|
|
3325
3361
|
isFocused: c,
|
|
3326
3362
|
isMatched: d,
|
|
3327
3363
|
isDisabled: a,
|
|
3364
|
+
...Ot(this.presentationMode),
|
|
3328
3365
|
isTreeNode: !1
|
|
3329
|
-
},
|
|
3330
|
-
typeof
|
|
3366
|
+
}, b = this.options.renderOptionContentCallback(e, g);
|
|
3367
|
+
typeof b == "string" ? u += b : u += b.outerHTML;
|
|
3331
3368
|
} else
|
|
3332
3369
|
r && (u += `<span class="ms__option-icon">${r}</span>`), u += '<div class="ms__option-text">', u += `<div class="ms__option-title">${this.highlightMatch(i, this.searchTerm)}</div>`, n && (u += `<div class="ms__option-subtitle">${n}</div>`), u += "</div>";
|
|
3333
3370
|
return u += this.renderOptionInfoButton(), u += "</div>", u += "</div>", u;
|
|
@@ -3351,33 +3388,34 @@ class wr {
|
|
|
3351
3388
|
* chevron/toggle — every node is just a normal, selectable option.
|
|
3352
3389
|
*/
|
|
3353
3390
|
renderTreeNode(e, t) {
|
|
3354
|
-
const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ?
|
|
3355
|
-
|
|
3356
|
-
const
|
|
3357
|
-
let
|
|
3358
|
-
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled &&
|
|
3359
|
-
const
|
|
3391
|
+
const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ? ts(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, h = c ? d === "checked" : this.selectedValues.has(String(i)), f = d === "indeterminate", u = t === this.focusedIndex, g = this.matchingIndices.has(t), b = e.isSelectable !== !1, y = e.level ?? 1, v = Math.max(0, y - 1), w = ["ms__option", "ms__option--tree"];
|
|
3392
|
+
w.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), h && w.push("ms__option--selected"), f && w.push("ms__option--indeterminate"), u && w.push("ms__option--focused"), g && w.push("ms__option--matched"), l && w.push("ms__option--disabled"), b || w.push("ms__option--tree-unselectable");
|
|
3393
|
+
const k = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", P = b ? "" : ' data-selectable="false"';
|
|
3394
|
+
let M = `<div class="${w.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${y}" style="--ms-tree-depth: ${v};"${k}${P}>`;
|
|
3395
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && b && (M += `<input type="checkbox" class="${f ? "ms__checkbox ms__checkbox--indeterminate" : "ms__checkbox"}" ${h ? "checked" : ""}${f ? ' aria-checked="mixed"' : ""} ${l ? "disabled" : ""}>`), M += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
3396
|
+
const $ = {
|
|
3360
3397
|
index: t,
|
|
3361
3398
|
isSelected: h,
|
|
3362
3399
|
isFocused: u,
|
|
3363
|
-
isMatched:
|
|
3400
|
+
isMatched: g,
|
|
3364
3401
|
isDisabled: l,
|
|
3402
|
+
...Ot(this.presentationMode),
|
|
3365
3403
|
// Tree metadata — lets the callback branch on depth / branch-vs-leaf /
|
|
3366
3404
|
// tristate without re-deriving any of it from the raw data item.
|
|
3367
3405
|
isTreeNode: !0,
|
|
3368
3406
|
isBranch: e.hasChildren,
|
|
3369
3407
|
isLeaf: !e.hasChildren,
|
|
3370
3408
|
childCount: Object.keys(e.children).length,
|
|
3371
|
-
level:
|
|
3372
|
-
depth:
|
|
3409
|
+
level: y,
|
|
3410
|
+
depth: v,
|
|
3373
3411
|
path: e.path,
|
|
3374
|
-
isSelectable:
|
|
3412
|
+
isSelectable: b,
|
|
3375
3413
|
isIndeterminate: f
|
|
3376
|
-
},
|
|
3377
|
-
|
|
3414
|
+
}, R = this.options.renderOptionContentCallback(o, $);
|
|
3415
|
+
M += typeof R == "string" ? R : R.outerHTML;
|
|
3378
3416
|
} else
|
|
3379
|
-
n && (
|
|
3380
|
-
return
|
|
3417
|
+
n && (M += `<span class="ms__option-icon">${n}</span>`), M += '<div class="ms__option-text">', M += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, a && (M += `<div class="ms__option-subtitle">${a}</div>`), M += "</div>";
|
|
3418
|
+
return M += this.renderOptionInfoButton(), M += "</div>", M += "</div>", M;
|
|
3381
3419
|
}
|
|
3382
3420
|
highlightMatch(e, t) {
|
|
3383
3421
|
if (!t) return e;
|
|
@@ -3401,7 +3439,22 @@ class wr {
|
|
|
3401
3439
|
* search is unusable → the search placeholder.
|
|
3402
3440
|
*/
|
|
3403
3441
|
getPlaceholderText() {
|
|
3404
|
-
return this.options.noDataPlaceholder && this.allOptions.length === 0 ? this.options.noDataPlaceholder : this.isSearchUsable ? this.
|
|
3442
|
+
return this.options.noDataPlaceholder && this.allOptions.length === 0 ? this.options.noDataPlaceholder : this.isSearchUsable ? this.getSearchPlaceholder() : this.options.selectPlaceholder || this.getSearchPlaceholder();
|
|
3443
|
+
}
|
|
3444
|
+
/**
|
|
3445
|
+
* The search field placeholder. An explicit `searchPlaceholder` always wins and stays
|
|
3446
|
+
* fixed. Otherwise the default is "Search..." — except when the in-overlay mode toggle
|
|
3447
|
+
* is enabled (`isSearchModeToggleShown`), where it becomes mode-aware so the field labels
|
|
3448
|
+
* the current behavior: "Search…" in navigate mode, "Filter…" in filter mode. Refreshed
|
|
3449
|
+
* on a live mode switch (see setSearchModeLive → refreshSearchPlaceholder).
|
|
3450
|
+
*/
|
|
3451
|
+
getSearchPlaceholder() {
|
|
3452
|
+
return this.options.searchPlaceholder ? this.options.searchPlaceholder : this.options.isSearchModeToggleShown ? (this.options.searchMode || "filter") === "navigate" ? "Search…" : "Filter…" : "Search...";
|
|
3453
|
+
}
|
|
3454
|
+
/** Re-apply the (possibly mode-aware) placeholder to the live inputs after a mode switch. */
|
|
3455
|
+
refreshSearchPlaceholder() {
|
|
3456
|
+
const e = this.getPlaceholderText();
|
|
3457
|
+
this.input && (this.input.placeholder = e), this.fullscreenSearchInput && (this.fullscreenSearchInput.placeholder = e);
|
|
3405
3458
|
}
|
|
3406
3459
|
renderBadges() {
|
|
3407
3460
|
this.destroyAllBadgeTooltips();
|
|
@@ -3510,14 +3563,14 @@ class wr {
|
|
|
3510
3563
|
if (this.options.beforeSearchCallback) {
|
|
3511
3564
|
const o = this.options.beforeSearchCallback(e);
|
|
3512
3565
|
if (o === null) {
|
|
3513
|
-
|
|
3566
|
+
K.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();
|
|
3514
3567
|
return;
|
|
3515
3568
|
}
|
|
3516
|
-
t = o, t !== e &&
|
|
3569
|
+
t = o, t !== e && K.debug(`[${this.instanceId}] beforeSearchCallback transformed: "${e}" -> "${t}"`);
|
|
3517
3570
|
}
|
|
3518
3571
|
if (this.options.searchCallback) {
|
|
3519
3572
|
if (t.length < this.options.minSearchLength) {
|
|
3520
|
-
this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions],
|
|
3573
|
+
this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions], K.debug(`[${this.instanceId}] Search term below minimum, showing ${this.allOptions.length} initial options`)) : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
|
|
3521
3574
|
return;
|
|
3522
3575
|
}
|
|
3523
3576
|
this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0);
|
|
@@ -3527,21 +3580,26 @@ class wr {
|
|
|
3527
3580
|
}, o) : await this.performAsyncSearch(e, t);
|
|
3528
3581
|
} else {
|
|
3529
3582
|
if (this.isTreeMode()) {
|
|
3530
|
-
|
|
3583
|
+
if ((this.options.searchMode || "filter") === "navigate") {
|
|
3584
|
+
const o = this.rebuildTreeVisibleForNavigate();
|
|
3585
|
+
this.searchTerm.trim() ? o >= 0 && (this.focusedIndex = o) : this.focusedIndex = -1, this.renderDropdown(), this.focusedIndex >= 0 && this.scrollToFocused(), this.updateFullscreenNav();
|
|
3586
|
+
return;
|
|
3587
|
+
}
|
|
3588
|
+
this.rebuildTreeVisible(), this.matchingIndices.clear(), this.focusedIndex = this.searchTerm.trim() && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown();
|
|
3531
3589
|
return;
|
|
3532
3590
|
}
|
|
3533
3591
|
if (!t)
|
|
3534
|
-
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex =
|
|
3592
|
+
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex = -1;
|
|
3535
3593
|
else {
|
|
3536
3594
|
const o = this.options.searchMode || "filter", i = t.toLowerCase();
|
|
3537
3595
|
if (o === "filter")
|
|
3538
|
-
this.filteredOptions = this.allOptions.filter((r) => this.getItemSearchValue(r).toLowerCase().includes(i)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1,
|
|
3596
|
+
this.filteredOptions = this.allOptions.filter((r) => this.getItemSearchValue(r).toLowerCase().includes(i)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, K.debug(`[${this.instanceId}] Filter mode: ${this.filteredOptions.length} matches for "${t}"`);
|
|
3539
3597
|
else {
|
|
3540
3598
|
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear();
|
|
3541
3599
|
let r = -1;
|
|
3542
3600
|
this.allOptions.forEach((n, a) => {
|
|
3543
3601
|
this.getItemSearchValue(n).toLowerCase().includes(i) && (this.matchingIndices.add(a), r === -1 && (r = a));
|
|
3544
|
-
}), r >= 0 ? (this.focusedIndex = r,
|
|
3602
|
+
}), r >= 0 ? (this.focusedIndex = r, K.debug(`[${this.instanceId}] Navigate mode: ${this.matchingIndices.size} matches, jumped to index ${r}`)) : K.debug(`[${this.instanceId}] Navigate mode: No matches found, keeping previous focus`);
|
|
3545
3603
|
}
|
|
3546
3604
|
}
|
|
3547
3605
|
this.renderDropdown(), this.options.searchMode === "navigate" && this.focusedIndex >= 0 && this.scrollToFocused(), this.updateFullscreenNav();
|
|
@@ -3565,15 +3623,15 @@ class wr {
|
|
|
3565
3623
|
async performAsyncSearch(e, t) {
|
|
3566
3624
|
this.abortInFlightSearch();
|
|
3567
3625
|
const o = new AbortController();
|
|
3568
|
-
this.searchAbortController = o, this.isLoading = !0, this.renderDropdown(),
|
|
3626
|
+
this.searchAbortController = o, this.isLoading = !0, this.renderDropdown(), K.debug(`[${this.instanceId}] Loading data for search term:`, t);
|
|
3569
3627
|
try {
|
|
3570
3628
|
const i = await this.options.searchCallback(t, o.signal);
|
|
3571
3629
|
if (o.signal.aborted || this.searchTerm !== e) return;
|
|
3572
3630
|
const r = i || [];
|
|
3573
|
-
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(),
|
|
3631
|
+
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(), K.debug(`[${this.instanceId}] Loaded ${r.length} results`);
|
|
3574
3632
|
} catch (i) {
|
|
3575
3633
|
if (o.signal.aborted) return;
|
|
3576
|
-
|
|
3634
|
+
K.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();
|
|
3577
3635
|
} finally {
|
|
3578
3636
|
this.searchAbortController === o && (this.searchAbortController = void 0);
|
|
3579
3637
|
}
|
|
@@ -3815,11 +3873,11 @@ class wr {
|
|
|
3815
3873
|
async handleAddNew(e) {
|
|
3816
3874
|
if (this.options.addNewCallback)
|
|
3817
3875
|
try {
|
|
3818
|
-
|
|
3876
|
+
K.debug(`[${this.instanceId}] Adding new option:`, e);
|
|
3819
3877
|
const t = await this.options.addNewCallback(e);
|
|
3820
3878
|
this.allOptions.push(t), this.filteredOptions.push(t), this.selectOption(t), this.input.value = "", this.renderDropdown(), this.renderBadges(), this.options.isCloseOnSelect && this.close();
|
|
3821
3879
|
} catch (t) {
|
|
3822
|
-
|
|
3880
|
+
K.error(`[${this.instanceId}] Error adding new option:`, t);
|
|
3823
3881
|
}
|
|
3824
3882
|
}
|
|
3825
3883
|
selectOption(e) {
|
|
@@ -3967,12 +4025,38 @@ class wr {
|
|
|
3967
4025
|
* and a redundant call is a no-op rather than acquiring a second.
|
|
3968
4026
|
*/
|
|
3969
4027
|
lockBodyScroll() {
|
|
3970
|
-
this.bodyScrollUnlock || (this.bodyScrollUnlock =
|
|
4028
|
+
this.bodyScrollUnlock || (this.bodyScrollUnlock = ii());
|
|
3971
4029
|
}
|
|
3972
4030
|
/** Restore page scroll (no-op if it wasn't locked). */
|
|
3973
4031
|
unlockBodyScroll() {
|
|
3974
4032
|
this.bodyScrollUnlock && (this.bodyScrollUnlock(), this.bodyScrollUnlock = null);
|
|
3975
4033
|
}
|
|
4034
|
+
/**
|
|
4035
|
+
* Clip the host document's horizontal overflow while a fullscreen sheet is open.
|
|
4036
|
+
*
|
|
4037
|
+
* A page that overflows horizontally (e.g. an unbreakable-wide token in a heading)
|
|
4038
|
+
* makes the mobile browser SHRINK-TO-FIT: it zooms the page out so the overflow fits,
|
|
4039
|
+
* which desyncs the visual viewport from the layout viewport. Our fullscreen sheet is
|
|
4040
|
+
* `position: fixed` — anchored to the LAYOUT viewport — so under that zoom it no longer
|
|
4041
|
+
* lands flush against the physical screen edges, and the top slips under the system bar
|
|
4042
|
+
* (looks like "the bar covers the sheet"). This is NOT a safe-area problem; safe-area
|
|
4043
|
+
* insets are 0 in that state. Clamping `overflow-x: hidden` on <html>/<body> removes the
|
|
4044
|
+
* overflow, so the browser drops the zoom and the sheet sits flush. Complements
|
|
4045
|
+
* lockBodyScroll() (vertical axis); the saved inline value is restored on close.
|
|
4046
|
+
*
|
|
4047
|
+
* Only <html> is touched (not <body>): clipping the root's horizontal overflow is
|
|
4048
|
+
* enough to collapse the scrollWidth and cancel the shrink-to-fit, and it avoids
|
|
4049
|
+
* conflicting with core's lockBodyScroll(), which owns <body>'s `overflow`. Idempotent.
|
|
4050
|
+
*/
|
|
4051
|
+
clampDocumentOverflowX() {
|
|
4052
|
+
if (this.overflowXClamp || typeof document > "u") return;
|
|
4053
|
+
const e = document.documentElement;
|
|
4054
|
+
this.overflowXClamp = { html: e.style.overflowX }, e.style.overflowX = "hidden";
|
|
4055
|
+
}
|
|
4056
|
+
/** Restore the <html> `overflow-x` clamped by clampDocumentOverflowX() (no-op if unset). */
|
|
4057
|
+
releaseDocumentOverflowX() {
|
|
4058
|
+
!this.overflowXClamp || typeof document > "u" || (document.documentElement.style.overflowX = this.overflowXClamp.html, this.overflowXClamp = null);
|
|
4059
|
+
}
|
|
3976
4060
|
/**
|
|
3977
4061
|
* While the fullscreen dropdown is open, keep it sitting above the soft keyboard.
|
|
3978
4062
|
* Delegates to core's `observeKeyboardInset` (which tracks `window.visualViewport`
|
|
@@ -3980,7 +4064,7 @@ class wr {
|
|
|
3980
4064
|
* we just hold the returned cleanup. No-op where `visualViewport` is unavailable.
|
|
3981
4065
|
*/
|
|
3982
4066
|
observeKeyboardInset() {
|
|
3983
|
-
this.keyboardInsetCleanup =
|
|
4067
|
+
this.keyboardInsetCleanup = ri(this.dropdown);
|
|
3984
4068
|
}
|
|
3985
4069
|
/** Detach keyboard-inset tracking and restore the panel's CSS-driven geometry. */
|
|
3986
4070
|
unobserveKeyboardInset() {
|
|
@@ -4041,11 +4125,11 @@ class wr {
|
|
|
4041
4125
|
/** Stand up the fullscreen dropdown overlay: modifier class, header, scroll lock, focus. */
|
|
4042
4126
|
enterFullscreen() {
|
|
4043
4127
|
var e;
|
|
4044
|
-
this.clearFloatingInlineGeometry(this.dropdown), this.dropdown.classList.add("ms__dropdown--fullscreen"), this.buildFullscreenHeader(), this.lockBodyScroll(), this.pushOverlayHistory(), this.observeKeyboardInset(), this.fullscreenSearchInput && (this.fullscreenSearchInput.value = this.searchTerm), this.updateFullscreenSearchClear(), this.options.fullscreenAutofocus ? (e = this.fullscreenSearchInput) == null || e.focus() : this.input.blur();
|
|
4128
|
+
this.clearFloatingInlineGeometry(this.dropdown), this.dropdown.classList.add("ms__dropdown--fullscreen"), this.buildFullscreenHeader(), this.lockBodyScroll(), this.clampDocumentOverflowX(), this.pushOverlayHistory(), this.observeKeyboardInset(), this.fullscreenSearchInput && (this.fullscreenSearchInput.value = this.searchTerm), this.updateFullscreenSearchClear(), this.options.fullscreenAutofocus ? (e = this.fullscreenSearchInput) == null || e.focus() : this.input.blur();
|
|
4045
4129
|
}
|
|
4046
4130
|
/** Tear down the fullscreen dropdown chrome and restore page scroll (no-op if floating). */
|
|
4047
4131
|
exitFullscreen() {
|
|
4048
|
-
this.unobserveKeyboardInset(), this.popOverlayHistory(), this.dropdown.classList.remove("ms__dropdown--fullscreen"), this.fullscreenHeader && (this.fullscreenHeader.remove(), this.fullscreenHeader = null, this.fullscreenSearchInput = null, this.fullscreenSearchClear = null, this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null), this.unlockBodyScroll();
|
|
4132
|
+
this.unobserveKeyboardInset(), this.popOverlayHistory(), this.dropdown.classList.remove("ms__dropdown--fullscreen"), this.fullscreenHeader && (this.fullscreenHeader.remove(), this.fullscreenHeader = null, this.fullscreenSearchInput = null, this.fullscreenSearchClear = null, this.fullscreenModeToggle = null, this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null), this.unlockBodyScroll(), this.releaseDocumentOverflowX();
|
|
4049
4133
|
}
|
|
4050
4134
|
/**
|
|
4051
4135
|
* Back-gesture handling for the fullscreen sheet. On open we push a history entry
|
|
@@ -4060,7 +4144,7 @@ class wr {
|
|
|
4060
4144
|
/** Back gesture/button fired: our pushed entry is already gone, so just close the
|
|
4061
4145
|
* sheet — WITHOUT popping history again (popOverlayHistory becomes a no-op). */
|
|
4062
4146
|
handleOverlayPopstate() {
|
|
4063
|
-
this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), this.isOpen
|
|
4147
|
+
this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), this.isOpen ? this.close() : this.showSelectedPopover && this.hideSelectedPopover());
|
|
4064
4148
|
}
|
|
4065
4149
|
/** Programmatic close: remove the listener and pop the entry we pushed (so the
|
|
4066
4150
|
* history stack returns to its pre-open state). No-op if a Back gesture already
|
|
@@ -4080,7 +4164,10 @@ class wr {
|
|
|
4080
4164
|
const e = document.createElement("div");
|
|
4081
4165
|
if (e.className = "ms__fullscreen-header", this.options.isSearchEnabled && this.options.searchInputMode !== "hidden") {
|
|
4082
4166
|
const o = document.createElement("div");
|
|
4083
|
-
o.className = "ms__fullscreen-search-wrapper"
|
|
4167
|
+
if (o.className = "ms__fullscreen-search-wrapper", this.options.isSearchModeToggleShown) {
|
|
4168
|
+
const r = document.createElement("button");
|
|
4169
|
+
r.type = "button", r.className = "ms__fullscreen-mode-toggle", r.addEventListener("mousedown", (n) => n.preventDefault()), r.addEventListener("click", () => this.toggleSearchModeLive()), o.appendChild(r), this.fullscreenModeToggle = r;
|
|
4170
|
+
}
|
|
4084
4171
|
const i = document.createElement("input");
|
|
4085
4172
|
if (i.type = "text", i.className = "ms__fullscreen-search", i.placeholder = this.getPlaceholderText(), i.autocomplete = "off", this.options.searchInputMode === "readonly" && (i.readOnly = !0), i.addEventListener("input", (r) => {
|
|
4086
4173
|
const n = r.target.value;
|
|
@@ -4092,19 +4179,53 @@ class wr {
|
|
|
4092
4179
|
e.appendChild(o);
|
|
4093
4180
|
}
|
|
4094
4181
|
const t = document.createElement("button");
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
|
|
4182
|
+
t.type = "button", t.className = "ms__fullscreen-close", t.setAttribute("aria-label", "Close"), t.addEventListener("click", () => this.close()), e.appendChild(t), this.dropdown.insertBefore(e, this.dropdownInner), this.fullscreenHeader = e, this.options.isSearchEnabled && (this.options.searchMode || "filter") === "navigate" && this.ensureFullscreenNav(), this.updateFullscreenModeToggle(), this.updateFullscreenNav(), this.updateFullscreenSearchClear();
|
|
4183
|
+
}
|
|
4184
|
+
/** Build the navigate-mode match navigator (count + prev/next) and append it to the
|
|
4185
|
+
* fullscreen header, once. No-op if already built or the header isn't present. The
|
|
4186
|
+
* nav wraps onto its own full-width row under the search box (header is flex-wrap;
|
|
4187
|
+
* the nav takes 100% basis). */
|
|
4188
|
+
ensureFullscreenNav() {
|
|
4189
|
+
if (this.fullscreenNav || !this.fullscreenHeader) return;
|
|
4190
|
+
const e = document.createElement("div");
|
|
4191
|
+
e.className = "ms__fullscreen-nav";
|
|
4192
|
+
const t = document.createElement("span");
|
|
4193
|
+
t.className = "ms__fullscreen-nav-count", e.appendChild(t);
|
|
4194
|
+
const o = document.createElement("div");
|
|
4195
|
+
o.className = "ms__fullscreen-nav-controls";
|
|
4196
|
+
const i = document.createElement("button");
|
|
4197
|
+
i.type = "button", i.className = "ms__fullscreen-nav-btn ms__fullscreen-nav-btn--prev", i.setAttribute("aria-label", "Previous match"), i.addEventListener("click", () => this.focusPreviousMatch());
|
|
4198
|
+
const r = document.createElement("button");
|
|
4199
|
+
r.type = "button", r.className = "ms__fullscreen-nav-btn ms__fullscreen-nav-btn--next", r.setAttribute("aria-label", "Next match"), r.addEventListener("click", () => this.focusNextMatch()), o.appendChild(i), o.appendChild(r), e.appendChild(o), this.fullscreenHeader.appendChild(e), this.fullscreenNav = e, this.fullscreenNavCount = t, this.fullscreenNavPrev = i, this.fullscreenNavNext = r;
|
|
4200
|
+
}
|
|
4201
|
+
/** Remove the match navigator (switching to filter mode, which has no jump UI). */
|
|
4202
|
+
removeFullscreenNav() {
|
|
4203
|
+
this.fullscreenNav && (this.fullscreenNav.remove(), this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null);
|
|
4204
|
+
}
|
|
4205
|
+
/** Flip searchMode filter<->navigate from the in-overlay toggle. */
|
|
4206
|
+
toggleSearchModeLive() {
|
|
4207
|
+
const e = (this.options.searchMode || "filter") === "navigate" ? "filter" : "navigate";
|
|
4208
|
+
this.setSearchModeLive(e);
|
|
4209
|
+
}
|
|
4210
|
+
/**
|
|
4211
|
+
* Switch searchMode in place — the overlay's toggle path. The `search-mode` attribute
|
|
4212
|
+
* is reinit-on-change (it rebuilds and closes the overlay); this instead mutates the
|
|
4213
|
+
* live config, adds/removes the match navigator to match, and re-projects the current
|
|
4214
|
+
* term under the new mode (filter narrows the list / navigate keeps all + highlights),
|
|
4215
|
+
* all without tearing the open sheet down. Focus stays on the search field.
|
|
4216
|
+
*/
|
|
4217
|
+
setSearchModeLive(e) {
|
|
4218
|
+
var t;
|
|
4219
|
+
(this.options.searchMode || "filter") !== e && (this.options.searchMode = e, e === "navigate" ? this.ensureFullscreenNav() : this.removeFullscreenNav(), this.updateFullscreenModeToggle(), this.refreshSearchPlaceholder(), this.handleSearch(this.searchTerm), (t = this.fullscreenSearchInput) == null || t.focus());
|
|
4220
|
+
}
|
|
4221
|
+
/** Sync the mode toggle's icon (via data-mode) and labels with the current searchMode.
|
|
4222
|
+
* No-op when the toggle isn't built (opt-out, floating panel, or search hidden). */
|
|
4223
|
+
updateFullscreenModeToggle() {
|
|
4224
|
+
if (!this.fullscreenModeToggle) return;
|
|
4225
|
+
const e = this.options.searchMode || "filter";
|
|
4226
|
+
this.fullscreenModeToggle.dataset.mode = e;
|
|
4227
|
+
const t = e === "navigate" ? "filter" : "navigate";
|
|
4228
|
+
this.fullscreenModeToggle.setAttribute("aria-label", `Switch to ${t} mode`), this.fullscreenModeToggle.setAttribute("title", `Switch to ${t} mode`), this.fullscreenModeToggle.setAttribute("aria-pressed", String(e === "navigate"));
|
|
4108
4229
|
}
|
|
4109
4230
|
/**
|
|
4110
4231
|
* Sync the fullscreen match navigator (navigate mode only) with the current search
|
|
@@ -4166,7 +4287,7 @@ class wr {
|
|
|
4166
4287
|
this.selectedValues.add(String(o));
|
|
4167
4288
|
}), this.reconcileSelectedOptions(), this.renderBadges();
|
|
4168
4289
|
} catch (t) {
|
|
4169
|
-
|
|
4290
|
+
K.error(`[${this.instanceId}] Failed to parse initial values:`, t);
|
|
4170
4291
|
}
|
|
4171
4292
|
}
|
|
4172
4293
|
/**
|
|
@@ -4190,11 +4311,11 @@ class wr {
|
|
|
4190
4311
|
showPopover() {
|
|
4191
4312
|
Q.debug(`[${this.instanceId}] showPopover() called`), this.isOpen && this.close(), this.hideMessage(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ms__selected-popover--visible");
|
|
4192
4313
|
const e = this.options.virtualScrollThreshold ?? 100;
|
|
4193
|
-
this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.presentationMode === "fullscreen" ? (this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll()) : this.positionSelectedPopover();
|
|
4314
|
+
this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.presentationMode === "fullscreen" ? (this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll(), this.clampDocumentOverflowX(), this.pushOverlayHistory()) : this.positionSelectedPopover();
|
|
4194
4315
|
}
|
|
4195
4316
|
hideSelectedPopover() {
|
|
4196
4317
|
var e;
|
|
4197
|
-
Q.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.selectedPopover.classList.remove("ms__selected-popover--fullscreen"), this.unlockBodyScroll(), this.hideMessage(), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
|
|
4318
|
+
Q.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.selectedPopover.classList.remove("ms__selected-popover--fullscreen"), this.unlockBodyScroll(), this.releaseDocumentOverflowX(), this.popOverlayHistory(), this.hideMessage(), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
|
|
4198
4319
|
for (const t of Array.from(this.tooltips.keys()))
|
|
4199
4320
|
t.startsWith("popover-") && ((e = this.tooltips.get(t)) == null || e.destroy(), this.tooltips.delete(t));
|
|
4200
4321
|
}
|
|
@@ -4231,7 +4352,7 @@ class wr {
|
|
|
4231
4352
|
if (!this.selectedPopoverContainer) return;
|
|
4232
4353
|
const o = this.scaledBadgeHeight(), i = Math.round(4 * this.fullscreenScale()), r = o + i, n = this.options.virtualScrollBuffer ?? 10;
|
|
4233
4354
|
requestAnimationFrame(() => {
|
|
4234
|
-
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new
|
|
4355
|
+
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new ws({
|
|
4235
4356
|
container: this.selectedPopoverContainer,
|
|
4236
4357
|
itemHeight: r,
|
|
4237
4358
|
items: e,
|
|
@@ -4253,28 +4374,31 @@ class wr {
|
|
|
4253
4374
|
* accessible name stay in sync.
|
|
4254
4375
|
*/
|
|
4255
4376
|
renderBadgeHTML(e, t) {
|
|
4256
|
-
const o = this.getItemValue(e)
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
4260
|
-
|
|
4261
|
-
|
|
4377
|
+
const o = this.getItemValue(e), i = {
|
|
4378
|
+
...t,
|
|
4379
|
+
...Ot(this.presentationMode)
|
|
4380
|
+
};
|
|
4381
|
+
let r;
|
|
4382
|
+
const n = t.isInPopover ? this.options.renderSelectedItemContentCallback : void 0;
|
|
4383
|
+
if (n) {
|
|
4384
|
+
const d = n(e);
|
|
4385
|
+
r = typeof d == "string" ? d : d.outerHTML;
|
|
4262
4386
|
} else if (this.options.renderBadgeContentCallback) {
|
|
4263
|
-
const
|
|
4264
|
-
|
|
4387
|
+
const d = this.options.renderBadgeContentCallback(e, i);
|
|
4388
|
+
r = typeof d == "string" ? d : d.outerHTML;
|
|
4265
4389
|
} else
|
|
4266
|
-
|
|
4267
|
-
const
|
|
4268
|
-
let
|
|
4269
|
-
if (
|
|
4270
|
-
const
|
|
4271
|
-
|
|
4390
|
+
r = this.getItemBadgeDisplayValue(e);
|
|
4391
|
+
const a = t.isInPopover ? this.options.getSelectedItemClassCallback || this.options.getBadgeClassCallback : this.options.getBadgeClassCallback;
|
|
4392
|
+
let l = "ms__badge";
|
|
4393
|
+
if (a) {
|
|
4394
|
+
const d = a(e), h = Array.isArray(d) ? d : [d];
|
|
4395
|
+
l += " " + h.filter((f) => f).join(" ");
|
|
4272
4396
|
}
|
|
4273
|
-
const
|
|
4397
|
+
const c = this.getItemBadgeDisplayValue(e);
|
|
4274
4398
|
return `
|
|
4275
|
-
<div class="${
|
|
4276
|
-
<span class="ms__badge-text">${
|
|
4277
|
-
<button type="button" class="ms__badge-remove" data-value="${o}" aria-label="Remove ${
|
|
4399
|
+
<div class="${l}">
|
|
4400
|
+
<span class="ms__badge-text">${r}</span>
|
|
4401
|
+
<button type="button" class="ms__badge-remove" data-value="${o}" aria-label="Remove ${c}"></button>
|
|
4278
4402
|
</div>
|
|
4279
4403
|
`;
|
|
4280
4404
|
}
|
|
@@ -4357,9 +4481,9 @@ class wr {
|
|
|
4357
4481
|
if (t !== o) return !1;
|
|
4358
4482
|
Object.assign(this.options, e);
|
|
4359
4483
|
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;
|
|
4360
|
-
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]), ("checkboxMode" in e || "cascadeSelectPolicy" in e) && !i && !("options" in e) && this.isTreeMode() && (this.cascadeIndex = this.isCascadeMode() ?
|
|
4484
|
+
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]), ("checkboxMode" in e || "cascadeSelectPolicy" in e) && !i && !("options" in e) && this.isTreeMode() && (this.cascadeIndex = this.isCascadeMode() ? Cs(this.tree, (a) => String(this.getItemValue(a))) : null, this.isCascadeMode() && this.cascadeIndex)) {
|
|
4361
4485
|
this.cascadeCheckedAtoms = Ke(this.cascadeIndex, this.selectedValues);
|
|
4362
|
-
const a =
|
|
4486
|
+
const a = Et(
|
|
4363
4487
|
this.cascadeIndex,
|
|
4364
4488
|
this.cascadeCheckedAtoms,
|
|
4365
4489
|
this.cascadePolicy(),
|
|
@@ -4411,7 +4535,7 @@ class wr {
|
|
|
4411
4535
|
spawnTooltip(e) {
|
|
4412
4536
|
var r;
|
|
4413
4537
|
(r = this.tooltips.get(e.id)) == null || r.destroy();
|
|
4414
|
-
const t = this.element.getRootNode(), o = t instanceof ShadowRoot ? t : null, i =
|
|
4538
|
+
const t = this.element.getRootNode(), o = t instanceof ShadowRoot ? t : null, i = fr({
|
|
4415
4539
|
trigger: e.trigger,
|
|
4416
4540
|
container: this.options.container ?? o ?? document.body,
|
|
4417
4541
|
content: e.content,
|
|
@@ -4558,7 +4682,7 @@ ${o}` : t;
|
|
|
4558
4682
|
const n = document.createElement("div");
|
|
4559
4683
|
n.className = "ms__option-tooltip ms__option-tooltip--fullscreen", typeof r == "string" ? n.textContent = r : n.appendChild(r);
|
|
4560
4684
|
const a = this.element.getRootNode(), l = a instanceof ShadowRoot ? a : null, c = this.options.container ?? l ?? document.body;
|
|
4561
|
-
this.labelRevealTrigger = e, this.labelRevealPanel = n, this.labelRevealPopover =
|
|
4685
|
+
this.labelRevealTrigger = e, this.labelRevealPanel = n, this.labelRevealPopover = gr({
|
|
4562
4686
|
reference: e,
|
|
4563
4687
|
panel: n,
|
|
4564
4688
|
container: c,
|
|
@@ -4669,7 +4793,7 @@ ${o}` : t;
|
|
|
4669
4793
|
this.destroyAllTooltips(), this.hideLabelReveal(), this.hideMessage(), this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0), this.abortInFlightSearch(), this.dropdownCleanup && this.dropdownCleanup(), this.hintCleanup && this.hintCleanup(), this.selectedPopoverCleanup && this.selectedPopoverCleanup(), this.overlayHistoryActive && (this.overlayHistoryActive = !1, typeof window < "u" && window.removeEventListener("popstate", this.onOverlayPopstate)), this.exitFullscreen(), 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"), nt.info(`[${this.instanceId}] Component destroyed`);
|
|
4670
4794
|
}
|
|
4671
4795
|
}
|
|
4672
|
-
function
|
|
4796
|
+
function _r() {
|
|
4673
4797
|
return {
|
|
4674
4798
|
fromAttribute(s) {
|
|
4675
4799
|
if (s === null || s.trim() === "") return [];
|
|
@@ -4690,29 +4814,29 @@ function xr() {
|
|
|
4690
4814
|
}
|
|
4691
4815
|
};
|
|
4692
4816
|
}
|
|
4693
|
-
const
|
|
4817
|
+
const kr = ["json", "csv", "plain"], Ss = ",", Ts = `
|
|
4694
4818
|
`;
|
|
4695
|
-
function
|
|
4819
|
+
function Cr(s, e, t = {}) {
|
|
4696
4820
|
if (s == null || s.trim() === "") return { options: [] };
|
|
4697
|
-
const o =
|
|
4821
|
+
const o = Is(t.splitter ?? Ss) || Ss, i = Is(t.rowSplitter ?? Ts) || Ts;
|
|
4698
4822
|
switch (e) {
|
|
4699
4823
|
case "csv":
|
|
4700
|
-
return
|
|
4824
|
+
return Ir(s, o, i);
|
|
4701
4825
|
case "plain":
|
|
4702
|
-
return
|
|
4826
|
+
return Tr(s, o, i);
|
|
4703
4827
|
case "json":
|
|
4704
4828
|
default:
|
|
4705
|
-
return
|
|
4829
|
+
return Sr(s);
|
|
4706
4830
|
}
|
|
4707
4831
|
}
|
|
4708
|
-
function
|
|
4832
|
+
function Is(s) {
|
|
4709
4833
|
return s.replace(
|
|
4710
4834
|
/\\[ntr\\]/g,
|
|
4711
4835
|
(e) => e === "\\n" ? `
|
|
4712
4836
|
` : e === "\\t" ? " " : e === "\\r" ? "\r" : "\\"
|
|
4713
4837
|
);
|
|
4714
4838
|
}
|
|
4715
|
-
function
|
|
4839
|
+
function Sr(s) {
|
|
4716
4840
|
let e;
|
|
4717
4841
|
try {
|
|
4718
4842
|
e = JSON.parse(s);
|
|
@@ -4721,10 +4845,10 @@ function Cr(s) {
|
|
|
4721
4845
|
}
|
|
4722
4846
|
return Array.isArray(e) ? { options: e } : { options: [], error: "data-options JSON must be an array" };
|
|
4723
4847
|
}
|
|
4724
|
-
function
|
|
4848
|
+
function Tr(s, e, t) {
|
|
4725
4849
|
return { options: s.split(t).flatMap((i) => i.split(e)).map((i) => i.trim()).filter((i) => i.length > 0).map((i) => [i, i]) };
|
|
4726
4850
|
}
|
|
4727
|
-
function
|
|
4851
|
+
function Ir(s, e, t) {
|
|
4728
4852
|
const o = Or(s, e, t).filter((n) => !(n.length === 1 && n[0].trim() === ""));
|
|
4729
4853
|
if (o.length < 2)
|
|
4730
4854
|
return { options: [], error: "data-options CSV needs a header row and at least one data row" };
|
|
@@ -4749,7 +4873,7 @@ function Or(s, e, t) {
|
|
|
4749
4873
|
}
|
|
4750
4874
|
return i.push(r), o.push(i), o;
|
|
4751
4875
|
}
|
|
4752
|
-
const Qs = `@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-accent-color-light-hover));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--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-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-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--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-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: var(--ms-accent-color-light, var(--ms-option-bg-matched, transparent));--ms-icon-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 15l7-7 7 7' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>");--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--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-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></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-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--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}:host{-webkit-tap-highlight-color: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-inline-end: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__toggle{position:absolute;inset-inline-end: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;inset-inline-end: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)}@media (hover: hover){.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);width:var(--ms-dropdown-width);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--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat}.ms__fullscreen-nav-btn--next:before{transform:scaleY(-1)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 auto;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-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__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.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__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.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--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;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);flex-shrink:0}.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-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start: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-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;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-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-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-inline-end: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-inline-start: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-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.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-inline-start:var(--ms-option-border-matched)}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.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)}@media (hover: hover){.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-inline-start: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-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start: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)}@media (hover: hover){.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))}@media (hover: hover){.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)}@media (hover: hover){.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))}@media (hover: hover){.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__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__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)}}@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}}`, Os = [
|
|
4876
|
+
const Zs = `@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(#cbd5e1, #52525b));--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-accent-color-light-hover));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--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-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-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--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-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-mode-toggle-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-icon-size: calc(1.5 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-gap: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-mode-toggle-bg: transparent;--ms-fullscreen-mode-toggle-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: color-mix(in srgb, var(--ms-accent-color) 22%, transparent);--ms-icon-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 15l7-7 7 7' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>");--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--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: 0;--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-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-icon-search: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-icon-filter: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polygon points='22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3'/></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-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--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}:host{-webkit-tap-highlight-color: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-inline-end: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__toggle{position:absolute;inset-inline-end: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;inset-inline-end: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)}@media (hover: hover){.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);width:var(--ms-dropdown-width);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--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-header{align-content:flex-start}.ms__fullscreen-header>.ms__fullscreen-search-wrapper{min-height:var(--ms-fullscreen-header-min-height)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat}.ms__fullscreen-nav-btn--next:before{transform:scaleY(-1)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 auto;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex;align-items:center}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-mode-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-mode-toggle-size);height:var(--ms-fullscreen-mode-toggle-size);margin-inline-end:var(--ms-fullscreen-mode-toggle-gap);padding:0;color:var(--ms-fullscreen-mode-toggle-color);background:var(--ms-fullscreen-mode-toggle-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-mode-toggle:hover{background:var(--ms-fullscreen-mode-toggle-bg-hover)}.ms__fullscreen-mode-toggle:before{content:"";display:block;width:var(--ms-fullscreen-mode-toggle-icon-size);height:var(--ms-fullscreen-mode-toggle-icon-size);background-color:currentColor;-webkit-mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat;mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat}.ms__fullscreen-mode-toggle[data-mode=navigate]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-search)}.ms__fullscreen-mode-toggle[data-mode=filter]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-filter)}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-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__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.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__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.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--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;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);flex-shrink:0}.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-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start: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-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;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-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-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-inline-end: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-inline-start: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-inline-end: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);position:relative;min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.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)}.ms__option--matched:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;border-inline-start:var(--ms-option-border-matched);pointer-events:none}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.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)}@media (hover: hover){.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)}.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-checkbox-margin-top: calc(.2 * var(--ms-rem))}.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-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start: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)}@media (hover: hover){.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))}@media (hover: hover){.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)}@media (hover: hover){.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))}@media (hover: hover){.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__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__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)}}@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}}`, Os = [
|
|
4753
4877
|
"top",
|
|
4754
4878
|
"top-start",
|
|
4755
4879
|
"top-end",
|
|
@@ -4762,39 +4886,39 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
4762
4886
|
"right",
|
|
4763
4887
|
"right-start",
|
|
4764
4888
|
"right-end"
|
|
4765
|
-
], D = () =>
|
|
4889
|
+
], D = () => go(), Pr = [
|
|
4766
4890
|
// ── Strings (cosmetic → update). Optional ones are nullable: absent → null ─
|
|
4767
|
-
{ configKey: "searchHint", attribute: "search-hint", converter:
|
|
4768
|
-
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter:
|
|
4769
|
-
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter:
|
|
4770
|
-
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter:
|
|
4771
|
-
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter:
|
|
4772
|
-
{ configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter:
|
|
4773
|
-
{ configKey: "maxHeight", attribute: "max-height", converter:
|
|
4774
|
-
{ configKey: "emptyMessage", attribute: "empty-message", converter:
|
|
4775
|
-
{ configKey: "loadingMessage", attribute: "loading-message", converter:
|
|
4776
|
-
{ configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter:
|
|
4777
|
-
{ configKey: "formFieldId", attribute: "name", converter:
|
|
4891
|
+
{ configKey: "searchHint", attribute: "search-hint", converter: A({ isNullable: !0 }), on: "update", description: "Small hint text shown beneath the search input." },
|
|
4892
|
+
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter: A({ isNullable: !0 }), on: "update", description: 'Placeholder text for the search input. When unset it defaults to "Search..."; if `show-search-mode-toggle` is on, the default instead becomes mode-aware ("Search…" in navigate, "Filter…" in filter). An explicit value always wins and stays fixed.' },
|
|
4893
|
+
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter: A({ default: "Pick an option..." }), on: "update", description: "Placeholder shown on the control when nothing is selected." },
|
|
4894
|
+
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter: A({ isNullable: !0 }), on: "update", description: "Text shown when there are no options at all." },
|
|
4895
|
+
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter: A({ isNullable: !0 }), on: "update", description: "Minimum width of the dropdown panel (any CSS length)." },
|
|
4896
|
+
{ configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter: A({ isNullable: !0 }), on: "update", description: "Maximum width of the dropdown panel (any CSS length)." },
|
|
4897
|
+
{ configKey: "maxHeight", attribute: "max-height", converter: A({ default: "20rem" }), on: "update", description: "Maximum height of the dropdown list before it scrolls." },
|
|
4898
|
+
{ configKey: "emptyMessage", attribute: "empty-message", converter: A({ default: "No results found" }), on: "update", description: "Message shown when a search yields no matches." },
|
|
4899
|
+
{ configKey: "loadingMessage", attribute: "loading-message", converter: A({ default: "Loading..." }), on: "update", description: "Message shown while options are loading." },
|
|
4900
|
+
{ configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter: A({ isNullable: !0 }), on: "update", description: "Tooltip text for a badge remove (×) button." },
|
|
4901
|
+
{ configKey: "formFieldId", attribute: "name", converter: A({ isNullable: !0 }), on: "reinit", description: "HTML form field name/id used for the hidden input(s)." },
|
|
4778
4902
|
// ── CSS-var sugar (mirrored to a host style prop in reinit()/update()) ────
|
|
4779
|
-
{ configKey: "dropdownWidth", attribute: "dropdown-width", converter:
|
|
4780
|
-
{ configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter:
|
|
4903
|
+
{ configKey: "dropdownWidth", attribute: "dropdown-width", converter: A({ isNullable: !0 }), on: "update", description: "Fixed dropdown width; mirrored to the `--ms-dropdown-width` CSS variable." },
|
|
4904
|
+
{ configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter: A({ isNullable: !0 }), on: "update", description: "Selected-items popover width; mirrored to `--ms-selected-popover-width`." },
|
|
4781
4905
|
// ── Member properties (structural → reinit; optional → nullable) ─────────
|
|
4782
|
-
{ configKey: "valueMember", attribute: "value-member", converter:
|
|
4783
|
-
{ configKey: "displayValueMember", attribute: "display-value-member", converter:
|
|
4784
|
-
{ configKey: "searchValueMember", attribute: "search-value-member", converter:
|
|
4785
|
-
{ configKey: "iconMember", attribute: "icon-member", converter:
|
|
4786
|
-
{ configKey: "subtitleMember", attribute: "subtitle-member", converter:
|
|
4787
|
-
{ configKey: "fullTitleMember", attribute: "full-title-member", converter:
|
|
4788
|
-
{ configKey: "groupMember", attribute: "group-member", converter:
|
|
4789
|
-
{ configKey: "disabledMember", attribute: "disabled-member", converter:
|
|
4906
|
+
{ configKey: "valueMember", attribute: "value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name on an option object that holds its value." },
|
|
4907
|
+
{ configKey: "displayValueMember", attribute: "display-value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option display label." },
|
|
4908
|
+
{ configKey: "searchValueMember", attribute: "search-value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name searched against (falls back to the display value)." },
|
|
4909
|
+
{ configKey: "iconMember", attribute: "icon-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option icon." },
|
|
4910
|
+
{ configKey: "subtitleMember", attribute: "subtitle-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option subtitle." },
|
|
4911
|
+
{ configKey: "fullTitleMember", attribute: "full-title-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option full/long title." },
|
|
4912
|
+
{ configKey: "groupMember", attribute: "group-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name used to group options under headers." },
|
|
4913
|
+
{ configKey: "disabledMember", attribute: "disabled-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that marks an option disabled." },
|
|
4790
4914
|
// ── Tree of options (structural → reinit; optional → nullable) ───────────
|
|
4791
|
-
{ configKey: "pathMember", attribute: "path-member", converter:
|
|
4792
|
-
{ configKey: "parentPathMember", attribute: "parent-path-member", converter:
|
|
4793
|
-
{ configKey: "levelMember", attribute: "level-member", converter:
|
|
4794
|
-
{ configKey: "hasChildrenMember", attribute: "has-children-member", converter:
|
|
4795
|
-
{ configKey: "isSelectableMember", attribute: "is-selectable-member", converter:
|
|
4796
|
-
{ configKey: "treePathSeparator", attribute: "tree-path-separator", converter:
|
|
4797
|
-
{ configKey: "isTreeEnabled", converter:
|
|
4915
|
+
{ configKey: "pathMember", attribute: "path-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node materialized tree path." },
|
|
4916
|
+
{ configKey: "parentPathMember", attribute: "parent-path-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node parent path." },
|
|
4917
|
+
{ configKey: "levelMember", attribute: "level-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node depth level." },
|
|
4918
|
+
{ configKey: "hasChildrenMember", attribute: "has-children-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name flagging that a node has children." },
|
|
4919
|
+
{ configKey: "isSelectableMember", attribute: "is-selectable-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name marking whether a node can be selected." },
|
|
4920
|
+
{ configKey: "treePathSeparator", attribute: "tree-path-separator", converter: A({ default: "." }), reflect: !0, on: "reinit", description: "Separator between segments in a materialized tree path." },
|
|
4921
|
+
{ configKey: "isTreeEnabled", converter: B("tristate"), on: "reinit", type: "boolean", description: "Force tree mode on/off. Property-only; when unset (null) tree mode auto-enables if a path source (path-member / getPathCallback) is present." },
|
|
4798
4922
|
{
|
|
4799
4923
|
configKey: "checkboxMode",
|
|
4800
4924
|
attribute: "checkbox-mode",
|
|
@@ -4835,52 +4959,53 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
4835
4959
|
{
|
|
4836
4960
|
configKey: "fullscreenAutofocus",
|
|
4837
4961
|
attribute: "fullscreen-autofocus",
|
|
4838
|
-
converter:
|
|
4962
|
+
converter: B("default-false"),
|
|
4839
4963
|
on: "update",
|
|
4840
4964
|
description: "In the phone fullscreen overlay, auto-focus the search field on open (pops the soft keyboard immediately). Default `false`: the sheet opens with the list visible and the keyboard closed, appearing only when the user taps the search. Set `true` to type-to-filter right away. No effect in the floating presentation."
|
|
4841
4965
|
},
|
|
4842
4966
|
// ── Numbers ──────────────────────────────────────────────────────────────
|
|
4843
|
-
{ configKey: "badgesThreshold", attribute: "badges-threshold", converter:
|
|
4844
|
-
{ configKey: "badgesMaxVisible", attribute: "badges-max-visible", converter:
|
|
4845
|
-
{ configKey: "minSearchLength", attribute: "min-search-length", converter:
|
|
4846
|
-
{ configKey: "searchDebounce", attribute: "search-debounce", converter:
|
|
4847
|
-
{ configKey: "virtualScrollThreshold", attribute: "virtual-scroll-threshold", converter:
|
|
4848
|
-
{ configKey: "optionHeight", attribute: "option-height", converter:
|
|
4849
|
-
{ configKey: "badgeHeight", attribute: "badge-height", converter:
|
|
4850
|
-
{ configKey: "virtualScrollBuffer", attribute: "virtual-scroll-buffer", converter:
|
|
4851
|
-
{ configKey: "badgeTooltipDelay", attribute: "badge-tooltip-delay", converter:
|
|
4852
|
-
{ configKey: "badgeTooltipOffset", attribute: "badge-tooltip-offset", converter:
|
|
4853
|
-
{ configKey: "optionTooltipDelay", attribute: "option-tooltip-delay", converter:
|
|
4854
|
-
{ configKey: "optionTooltipOffset", attribute: "option-tooltip-offset", converter:
|
|
4967
|
+
{ configKey: "badgesThreshold", attribute: "badges-threshold", converter: X(), on: "update", description: "Threshold at which badges collapse to a count/compact view." },
|
|
4968
|
+
{ configKey: "badgesMaxVisible", attribute: "badges-max-visible", converter: X(), on: "update", description: "Maximum number of badges rendered before overflow." },
|
|
4969
|
+
{ configKey: "minSearchLength", attribute: "min-search-length", converter: X({ default: 0 }), on: "update", description: "Minimum characters before searching/filtering starts." },
|
|
4970
|
+
{ configKey: "searchDebounce", attribute: "search-debounce", converter: X({ default: 0 }), on: "update", description: "Debounce delay in ms applied to the search input." },
|
|
4971
|
+
{ configKey: "virtualScrollThreshold", attribute: "virtual-scroll-threshold", converter: X({ default: 100 }), on: "reinit", description: "Option count above which virtual scrolling turns on." },
|
|
4972
|
+
{ configKey: "optionHeight", attribute: "option-height", converter: X({ default: 50 }), on: "update", description: "Fixed row height in px used by virtual scrolling." },
|
|
4973
|
+
{ configKey: "badgeHeight", attribute: "badge-height", converter: X({ default: 36 }), on: "update", description: "Fixed badge height in px used for layout/virtualization." },
|
|
4974
|
+
{ configKey: "virtualScrollBuffer", attribute: "virtual-scroll-buffer", converter: X({ default: 10 }), on: "update", description: "Extra rows rendered above/below the viewport when virtualizing." },
|
|
4975
|
+
{ configKey: "badgeTooltipDelay", attribute: "badge-tooltip-delay", converter: X({ default: 100 }), on: "update", description: "Delay in ms before a badge tooltip appears." },
|
|
4976
|
+
{ configKey: "badgeTooltipOffset", attribute: "badge-tooltip-offset", converter: X({ default: 8 }), on: "update", description: "Gap in px between a badge and its tooltip." },
|
|
4977
|
+
{ configKey: "optionTooltipDelay", attribute: "option-tooltip-delay", converter: X(), on: "update", description: "Delay in ms before an option tooltip appears (falls back to badgeTooltipDelay)." },
|
|
4978
|
+
{ configKey: "optionTooltipOffset", attribute: "option-tooltip-offset", converter: X(), on: "update", description: "Gap in px between an option and its tooltip." },
|
|
4855
4979
|
// ── Booleans (default true) ──────────────────────────────────────────────
|
|
4856
|
-
{ configKey: "isMultipleEnabled", attribute: "multiple", converter:
|
|
4857
|
-
{ configKey: "isGroupsAllowed", attribute: "allow-groups", converter:
|
|
4858
|
-
{ configKey: "isCheckboxesShown", attribute: "show-checkboxes", converter:
|
|
4859
|
-
{ configKey: "isActionsSticky", attribute: "sticky-actions", converter:
|
|
4860
|
-
{ configKey: "isPlacementLocked", attribute: "lock-placement", converter:
|
|
4861
|
-
{ configKey: "isSearchEnabled", attribute: "enable-search", converter:
|
|
4862
|
-
{ configKey: "isKeepOptionsOnSearch", attribute: "keep-options-on-search", converter:
|
|
4863
|
-
{ configKey: "shouldKeepSearchOnClose", attribute: "should-keep-search-on-close", converter:
|
|
4980
|
+
{ configKey: "isMultipleEnabled", attribute: "multiple", converter: B("default-true"), on: "reinit", description: "Allow selecting multiple options. When off, selecting one replaces the previous." },
|
|
4981
|
+
{ configKey: "isGroupsAllowed", attribute: "allow-groups", converter: B("default-true"), on: "reinit", description: "Allow grouping options under group headers." },
|
|
4982
|
+
{ configKey: "isCheckboxesShown", attribute: "show-checkboxes", converter: B("default-true"), on: "reinit", description: "Show a checkbox on each option." },
|
|
4983
|
+
{ configKey: "isActionsSticky", attribute: "sticky-actions", converter: B("default-true"), on: "update", description: "Keep the action bar pinned while the list scrolls." },
|
|
4984
|
+
{ configKey: "isPlacementLocked", attribute: "lock-placement", converter: B("default-true"), on: "update", description: "Keep the dropdown initial placement instead of flipping when it fits." },
|
|
4985
|
+
{ configKey: "isSearchEnabled", attribute: "enable-search", converter: B("default-true"), on: "reinit", description: "Show the search input." },
|
|
4986
|
+
{ configKey: "isKeepOptionsOnSearch", attribute: "keep-options-on-search", converter: B("default-true"), on: "update", description: "Keep already-selected options visible while filtering." },
|
|
4987
|
+
{ configKey: "shouldKeepSearchOnClose", attribute: "should-keep-search-on-close", converter: B("default-true"), on: "update", description: "Preserve the search text after the dropdown closes." },
|
|
4864
4988
|
// ── Booleans (default false) ─────────────────────────────────────────────
|
|
4865
|
-
{ configKey: "isCloseOnSelect", attribute: "close-on-select", converter:
|
|
4866
|
-
{ configKey: "isAddNewAllowed", attribute: "allow-add-new", converter:
|
|
4867
|
-
{ configKey: "isCounterShown", attribute: "show-counter", converter:
|
|
4868
|
-
{ configKey: "isBadgeFullTitleShown", attribute: "show-badge-full-title", converter:
|
|
4869
|
-
{ configKey: "isVirtualScrollEnabled", attribute: "enable-virtual-scroll", converter:
|
|
4870
|
-
{ configKey: "isBadgeTooltipsEnabled", attribute: "enable-badge-tooltips", converter:
|
|
4871
|
-
{ configKey: "isOptionTooltipsEnabled", attribute: "enable-option-tooltips", converter:
|
|
4872
|
-
{ configKey: "isOptionTooltipFollowCursor", attribute: "option-tooltip-follow-cursor", converter:
|
|
4989
|
+
{ configKey: "isCloseOnSelect", attribute: "close-on-select", converter: B("default-false"), on: "update", description: "Close the dropdown immediately after a selection." },
|
|
4990
|
+
{ configKey: "isAddNewAllowed", attribute: "allow-add-new", converter: B("default-false"), on: "reinit", description: "Allow adding a new option from the search text." },
|
|
4991
|
+
{ configKey: "isCounterShown", attribute: "show-counter", converter: B("default-false"), on: "update", description: "Show a selected-count indicator." },
|
|
4992
|
+
{ configKey: "isBadgeFullTitleShown", attribute: "show-badge-full-title", converter: B("default-false"), on: "update", description: "Show the full title on badges instead of the short label." },
|
|
4993
|
+
{ configKey: "isVirtualScrollEnabled", attribute: "enable-virtual-scroll", converter: B("default-false"), on: "reinit", description: "Force virtual scrolling on regardless of the threshold." },
|
|
4994
|
+
{ configKey: "isBadgeTooltipsEnabled", attribute: "enable-badge-tooltips", converter: B("default-false"), on: "update", description: "Enable tooltips on badges." },
|
|
4995
|
+
{ configKey: "isOptionTooltipsEnabled", attribute: "enable-option-tooltips", converter: B("default-false"), on: "update", description: "Enable tooltips on options." },
|
|
4996
|
+
{ configKey: "isOptionTooltipFollowCursor", attribute: "option-tooltip-follow-cursor", converter: B("default-false"), on: "update", description: "Make option tooltips follow the pointer." },
|
|
4997
|
+
{ configKey: "isSearchModeToggleShown", attribute: "show-search-mode-toggle", converter: B("default-false"), on: "update", description: "Show a clickable toggle in the phone fullscreen overlay search header that flips `search-mode` between `filter` and `navigate` live. Fullscreen-only; no effect in the floating presentation or when search is disabled." },
|
|
4873
4998
|
// ── Special attributes ───────────────────────────────────────────────────
|
|
4874
|
-
{ configKey: "initialValues", attribute: "initial-values", converter:
|
|
4875
|
-
{ configKey: "showDebugInfo", attribute: "show-debug-info", converter:
|
|
4999
|
+
{ configKey: "initialValues", attribute: "initial-values", converter: _r(), default: [], on: "reinit", type: "Array<string | number>", description: 'Values selected on first render. Accepts a JSON array (`["a","b"]`) or a bare CSV (`a,b,c`).' },
|
|
5000
|
+
{ configKey: "showDebugInfo", attribute: "show-debug-info", converter: B("default-false"), on: "update", description: "Render an in-component debug panel.", deprecated: "Use per-instance logging (el.enableLogging()) instead." },
|
|
4876
5001
|
// ── Complex property (data) ──────────────────────────────────────────────
|
|
4877
|
-
{ configKey: "options", converter:
|
|
4878
|
-
{ configKey: "optionsSource", attribute: "data-options", converter:
|
|
4879
|
-
{ configKey: "optionsFormat", attribute: "data-options-format", converter: F(
|
|
4880
|
-
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter:
|
|
4881
|
-
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter:
|
|
5002
|
+
{ configKey: "options", converter: fo(), on: "reinit", type: "ReadonlyArray<Record<string, unknown>>", description: "The array of option objects to render. The JS API — assign `el.options` directly. For HTML authoring use the `data-options` attribute (parsed per `data-options-format`) or declarative <option> children; both feed the same list and take precedence over this property in the order: <option> children > property > data-options." },
|
|
5003
|
+
{ configKey: "optionsSource", attribute: "data-options", converter: A({ isNullable: !0 }), on: "reinit", type: "string", description: "HTML-authoring source for the option list, parsed per `data-options-format`. Reactive: changing either attribute re-renders. Prefer the `options` property in JS; a set `options` property and declarative <option> children both win over this." },
|
|
5004
|
+
{ configKey: "optionsFormat", attribute: "data-options-format", converter: F(kr, { default: "json" }), on: "reinit", type: "'json' | 'csv' | 'plain'", description: "How to parse the `data-options` attribute: `json` (a JSON array of objects or [value, label] tuples), `csv` (rows split on `data-options-row-splitter`, cells on `data-options-splitter`; the first row is a header — map columns via *-member), or `plain` (bare values split on both splitters -> [value, label] tuples, value === label). Default `json`." },
|
|
5005
|
+
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter: A({ default: "," }), on: "reinit", type: "string", description: 'Field/cell delimiter for the `csv` and `plain` `data-options` formats. Default `,`. Escapes `\\t` `\\n` `\\r` are honoured (e.g. `data-options-splitter="\\t"` for TSV). Ignored for `json`.' },
|
|
5006
|
+
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter: A({ default: `
|
|
4882
5007
|
` }), on: "reinit", type: "string", description: 'Row/record delimiter for the `csv` and `plain` `data-options` formats. Default newline. Escapes honoured (e.g. `data-options-row-splitter=";"` for single-line data). Ignored for `json`.' },
|
|
4883
|
-
{ configKey: "actionButtons", converter:
|
|
5008
|
+
{ configKey: "actionButtons", converter: po({ validate: (s) => Array.isArray(s) }), on: "reinit", type: "Array<Record<string, unknown>>", description: "Custom action buttons for the dropdown footer/header. Property-only; when unset the default Select-All / Clear buttons apply." },
|
|
4884
5009
|
// ── Callbacks: data shape (structural → reinit) ──────────────────────────
|
|
4885
5010
|
{ configKey: "getValueCallback", converter: D(), on: "reinit", type: "(item: unknown) => string | number", description: "Extract an option value (overrides valueMember)." },
|
|
4886
5011
|
{ configKey: "getPathCallback", converter: D(), on: "reinit", type: "(item: unknown) => string", description: "Extract a node tree path (enables tree mode; overrides pathMember)." },
|
|
@@ -4913,19 +5038,19 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
4913
5038
|
{ configKey: "beforeSelectCallback", converter: D(), on: "update", type: "(option: unknown, selectedOptions: unknown[]) => boolean | string | void", description: "Runs before selecting; return false to veto, or a string to veto and show it as a message." },
|
|
4914
5039
|
{ configKey: "beforeDeselectCallback", converter: D(), on: "update", type: "(option: unknown, selectedOptions: unknown[]) => boolean | string | void", description: "Runs before deselecting; return false to veto, or a string to veto and show it as a message." },
|
|
4915
5040
|
{ configKey: "addNewCallback", converter: D(), on: "update", type: "(value: string) => unknown | Promise<unknown>", description: "Create a new option from the typed text." }
|
|
4916
|
-
],
|
|
5041
|
+
], Mr = [
|
|
4917
5042
|
{ name: "select", description: "An option was selected. `detail.option` is the selected option; `detail.selectedOptions`/`detail.selectedValues` are the full selection." },
|
|
4918
5043
|
{ name: "deselect", description: "An option was removed from the selection. `detail.option` is that option." },
|
|
4919
5044
|
{ name: "change", description: "The selection changed. `detail.selectedOptions`/`detail.selectedValues` are the full selection." }
|
|
4920
|
-
],
|
|
5045
|
+
], Ps = /* @__PURE__ */ new Set(["dropdownWidth", "selectedPopoverWidth", "showDebugInfo", "initialValues", "optionsSource", "optionsFormat", "optionsSplitter", "optionsRowSplitter", "mobilePresentation"]), at = {
|
|
4921
5046
|
dropdownWidth: "--ms-dropdown-width",
|
|
4922
5047
|
selectedPopoverWidth: "--ms-selected-popover-width"
|
|
4923
5048
|
};
|
|
4924
|
-
let
|
|
4925
|
-
function
|
|
4926
|
-
return
|
|
5049
|
+
let Lr = null;
|
|
5050
|
+
function Er() {
|
|
5051
|
+
return Lr ?? (Lr = Qo(Zs, "--ms-"));
|
|
4927
5052
|
}
|
|
4928
|
-
const
|
|
5053
|
+
const Ar = [
|
|
4929
5054
|
{ key: "valueMember", member: "value", callbackKey: "getValueCallback" },
|
|
4930
5055
|
{ key: "displayValueMember", member: "label", callbackKey: "getDisplayValueCallback" },
|
|
4931
5056
|
{ key: "groupMember", member: "group", callbackKey: "getGroupCallback" },
|
|
@@ -4933,23 +5058,23 @@ const Er = [
|
|
|
4933
5058
|
{ key: "subtitleMember", member: "subtitle", callbackKey: "getSubtitleCallback" },
|
|
4934
5059
|
{ key: "disabledMember", member: "disabled", callbackKey: "getDisabledCallback" }
|
|
4935
5060
|
];
|
|
4936
|
-
var J,
|
|
4937
|
-
class Ge extends
|
|
5061
|
+
var J, z, me, et, tt, st, ze, Ne, ke, _, ct, Kt, Ft, eo, to, so, dt, Wt, oo, io, ro, jt, no, ao, Ut, Gt;
|
|
5062
|
+
class Ge extends Nt {
|
|
4938
5063
|
constructor() {
|
|
4939
5064
|
super();
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
|
|
4943
|
-
|
|
4944
|
-
|
|
5065
|
+
E(this, _);
|
|
5066
|
+
E(this, J);
|
|
5067
|
+
E(this, z);
|
|
5068
|
+
E(this, me);
|
|
5069
|
+
E(this, et, null);
|
|
4945
5070
|
// Dev-mode customStylesCallback lint: unknown --ms-* names already warned about.
|
|
4946
|
-
|
|
5071
|
+
E(this, tt, /* @__PURE__ */ new Set());
|
|
4947
5072
|
// Declarative <option>/<optgroup> state (parsed once from light DOM).
|
|
4948
|
-
|
|
4949
|
-
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
|
|
5073
|
+
E(this, st, !1);
|
|
5074
|
+
E(this, ze, !1);
|
|
5075
|
+
E(this, Ne);
|
|
5076
|
+
E(this, ke);
|
|
5077
|
+
N(this, J, this.attachShadow({ mode: "open" })), Yo(p(this, J), Zs), typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => this.setAttribute("data-ready", "")) : this.setAttribute("data-ready", "");
|
|
4953
5078
|
}
|
|
4954
5079
|
/**
|
|
4955
5080
|
* Called by the browser when the surrounding <form> is reset. Clears the
|
|
@@ -4957,7 +5082,7 @@ class Ge extends zt {
|
|
|
4957
5082
|
*/
|
|
4958
5083
|
formResetCallback() {
|
|
4959
5084
|
var t;
|
|
4960
|
-
(t = p(this,
|
|
5085
|
+
(t = p(this, z)) == null || t.clearAll();
|
|
4961
5086
|
}
|
|
4962
5087
|
// ── core lifecycle hooks ──────────────────────────────────────────────────
|
|
4963
5088
|
/** Runtime writing-direction switch (core observes `dir`): re-mirror the live
|
|
@@ -4966,28 +5091,28 @@ class Ge extends zt {
|
|
|
4966
5091
|
* and the panels' explicit `dir`). The initial direction is read by the build. */
|
|
4967
5092
|
directionChanged(t) {
|
|
4968
5093
|
var o;
|
|
4969
|
-
(o = p(this,
|
|
5094
|
+
(o = p(this, z)) == null || o.refreshDirection();
|
|
4970
5095
|
}
|
|
4971
5096
|
/** Structural change (or first connect): mirror CSS vars, then (re)build the picker. */
|
|
4972
5097
|
reinit() {
|
|
4973
|
-
|
|
5098
|
+
x(this, _, io).call(this), this.isConnected && x(this, _, Kt).call(this);
|
|
4974
5099
|
}
|
|
4975
5100
|
/** Cosmetic change: mirror CSS vars / custom styles / debug, patch the picker in place. */
|
|
4976
5101
|
update(t) {
|
|
4977
|
-
|
|
5102
|
+
x(this, _, ro).call(this, t), "customStylesCallback" in t && x(this, _, Wt).call(this), "showDebugInfo" in t && x(this, _, Ut).call(this);
|
|
4978
5103
|
const o = {};
|
|
4979
5104
|
for (const [i, r] of Object.entries(t))
|
|
4980
|
-
|
|
4981
|
-
p(this,
|
|
5105
|
+
Ps.has(i) || (o[i] = r === null ? void 0 : r);
|
|
5106
|
+
p(this, z) && Object.keys(o).length > 0 && (p(this, z).updateOptions(o) || x(this, _, Kt).call(this)), "mobilePresentation" in t && x(this, _, ct).call(this, zt());
|
|
4982
5107
|
}
|
|
4983
5108
|
/** Activate: ensure the picker exists (a DOM move destroyed it in disconnect()). */
|
|
4984
5109
|
connect() {
|
|
4985
|
-
p(this,
|
|
5110
|
+
p(this, z) || x(this, _, Ft).call(this);
|
|
4986
5111
|
}
|
|
4987
5112
|
/** Deactivate: tear the picker down (rebuilt on the next connect). */
|
|
4988
5113
|
disconnect() {
|
|
4989
5114
|
var t;
|
|
4990
|
-
(t = p(this,
|
|
5115
|
+
(t = p(this, z)) == null || t.destroy(), N(this, z, void 0);
|
|
4991
5116
|
}
|
|
4992
5117
|
/**
|
|
4993
5118
|
* Device/viewport/orientation changed (core §12.9). Overriding this opts the
|
|
@@ -4998,7 +5123,7 @@ class Ge extends zt {
|
|
|
4998
5123
|
* set before the dropdown can open.
|
|
4999
5124
|
*/
|
|
5000
5125
|
environmentChanged(t) {
|
|
5001
|
-
|
|
5126
|
+
x(this, _, ct).call(this, t);
|
|
5002
5127
|
}
|
|
5003
5128
|
// ── non-input public API ──────────────────────────────────────────────────
|
|
5004
5129
|
/** Form field name (mirrors the `name` attribute → `formFieldId`). */
|
|
@@ -5010,21 +5135,21 @@ class Ge extends zt {
|
|
|
5010
5135
|
}
|
|
5011
5136
|
get selectedValue() {
|
|
5012
5137
|
var t;
|
|
5013
|
-
return this.flush(), ((t = p(this,
|
|
5138
|
+
return this.flush(), ((t = p(this, z)) == null ? void 0 : t.selectedValue) ?? null;
|
|
5014
5139
|
}
|
|
5015
5140
|
get selectedItem() {
|
|
5016
5141
|
var t;
|
|
5017
|
-
return this.flush(), ((t = p(this,
|
|
5142
|
+
return this.flush(), ((t = p(this, z)) == null ? void 0 : t.selectedItem) ?? null;
|
|
5018
5143
|
}
|
|
5019
5144
|
getSelected() {
|
|
5020
|
-
return this.flush(), p(this,
|
|
5145
|
+
return this.flush(), p(this, z) ? p(this, z).getSelected() : [];
|
|
5021
5146
|
}
|
|
5022
5147
|
setSelected(t, o = {}) {
|
|
5023
5148
|
var i;
|
|
5024
|
-
this.flush(), (i = p(this,
|
|
5149
|
+
this.flush(), (i = p(this, z)) == null || i.setSelected(t, o);
|
|
5025
5150
|
}
|
|
5026
5151
|
getValue() {
|
|
5027
|
-
return this.flush(), p(this,
|
|
5152
|
+
return this.flush(), p(this, z) ? p(this, z).getValue() : null;
|
|
5028
5153
|
}
|
|
5029
5154
|
/**
|
|
5030
5155
|
* Surface a transient message ("toast") on top of the component — visible even in the
|
|
@@ -5035,92 +5160,92 @@ class Ge extends zt {
|
|
|
5035
5160
|
*/
|
|
5036
5161
|
showMessage(t, o) {
|
|
5037
5162
|
var i;
|
|
5038
|
-
this.flush(), (i = p(this,
|
|
5163
|
+
this.flush(), (i = p(this, z)) == null || i.showMessage(t, o);
|
|
5039
5164
|
}
|
|
5040
5165
|
/** Dismiss the transient message shown by {@link showMessage}, if any. */
|
|
5041
5166
|
hideMessage() {
|
|
5042
5167
|
var t;
|
|
5043
|
-
(t = p(this,
|
|
5168
|
+
(t = p(this, z)) == null || t.hideMessage();
|
|
5044
5169
|
}
|
|
5045
5170
|
destroy() {
|
|
5046
5171
|
var t;
|
|
5047
|
-
(t = p(this,
|
|
5172
|
+
(t = p(this, z)) == null || t.destroy();
|
|
5048
5173
|
}
|
|
5049
5174
|
}
|
|
5050
|
-
J = new WeakMap(),
|
|
5175
|
+
J = new WeakMap(), z = new WeakMap(), me = new WeakMap(), et = new WeakMap(), tt = new WeakMap(), st = new WeakMap(), ze = new WeakMap(), Ne = new WeakMap(), ke = new WeakMap(), _ = new WeakSet(), /** Resolve `mobile-presentation` against `env` and relay it to the live picker. */
|
|
5051
5176
|
ct = function(t) {
|
|
5052
5177
|
var r;
|
|
5053
|
-
const o = this.config.mobilePresentation ?? "auto", i =
|
|
5054
|
-
(r = p(this,
|
|
5178
|
+
const o = this.config.mobilePresentation ?? "auto", i = oi(o, t);
|
|
5179
|
+
(r = p(this, z)) == null || r.setPresentation(i === "modal" ? "fullscreen" : i);
|
|
5055
5180
|
}, // ── picker lifecycle ──────────────────────────────────────────────────────
|
|
5056
|
-
|
|
5181
|
+
Kt = function() {
|
|
5057
5182
|
var t;
|
|
5058
|
-
(t = p(this,
|
|
5059
|
-
},
|
|
5060
|
-
|
|
5061
|
-
const t =
|
|
5062
|
-
o && o.length > 0 ? p(this, me).dataset.initialValues = JSON.stringify(o) : delete p(this, me).dataset.initialValues,
|
|
5063
|
-
},
|
|
5183
|
+
(t = p(this, z)) == null || t.destroy(), N(this, z, void 0), x(this, _, Ft).call(this);
|
|
5184
|
+
}, Ft = function() {
|
|
5185
|
+
x(this, _, eo).call(this), x(this, _, no).call(this);
|
|
5186
|
+
const t = x(this, _, to).call(this), o = x(this, _, so).call(this);
|
|
5187
|
+
o && o.length > 0 ? p(this, me).dataset.initialValues = JSON.stringify(o) : delete p(this, me).dataset.initialValues, N(this, z, new xr(p(this, me), t)), x(this, _, Wt).call(this), x(this, _, Ut).call(this), x(this, _, ct).call(this, zt());
|
|
5188
|
+
}, eo = function() {
|
|
5064
5189
|
if (p(this, me)) return;
|
|
5065
5190
|
const t = document.createElement("div");
|
|
5066
|
-
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), p(this, J).appendChild(t),
|
|
5191
|
+
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), p(this, J).appendChild(t), N(this, et, Jo(p(this, J), { position: "first", className: "ms-custom-styles" })), N(this, me, t);
|
|
5067
5192
|
}, /**
|
|
5068
5193
|
* Build the picker config from the merged `this.config`, minus the keys the
|
|
5069
5194
|
* picker doesn't own, plus the runtime wiring (event bridges, container, host,
|
|
5070
5195
|
* declarative option data + member defaults, counter default).
|
|
5071
5196
|
*/
|
|
5072
|
-
|
|
5197
|
+
to = function() {
|
|
5073
5198
|
const t = { ...this.config };
|
|
5074
|
-
for (const i of
|
|
5199
|
+
for (const i of Ps) delete t[i];
|
|
5075
5200
|
for (const i of Object.keys(t))
|
|
5076
5201
|
t[i] === null && delete t[i];
|
|
5077
5202
|
let o = t.options;
|
|
5078
|
-
if (p(this, ze) && p(this,
|
|
5079
|
-
o && o.length > 0 &&
|
|
5203
|
+
if (p(this, ze) && p(this, Ne))
|
|
5204
|
+
o && o.length > 0 && K.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = p(this, Ne);
|
|
5080
5205
|
else if (!o || o.length === 0) {
|
|
5081
5206
|
const i = this.config.optionsSource;
|
|
5082
5207
|
if (i != null) {
|
|
5083
|
-
const r = this.config.optionsFormat ?? "json", { options: n, error: a } =
|
|
5208
|
+
const r = this.config.optionsFormat ?? "json", { options: n, error: a } = Cr(i, r, {
|
|
5084
5209
|
splitter: this.config.optionsSplitter,
|
|
5085
5210
|
rowSplitter: this.config.optionsRowSplitter
|
|
5086
5211
|
});
|
|
5087
|
-
a &&
|
|
5212
|
+
a && K.error(`[MultiSelectElement] ${a}`), o = n;
|
|
5088
5213
|
}
|
|
5089
5214
|
}
|
|
5090
5215
|
if (t.options = o, p(this, ze))
|
|
5091
|
-
for (const { key: i, member: r, callbackKey: n } of
|
|
5216
|
+
for (const { key: i, member: r, callbackKey: n } of Ar)
|
|
5092
5217
|
t[i] === void 0 && !t[n] && (t[i] = r);
|
|
5093
5218
|
return t.getCounterCallback || (t.getCounterCallback = (i, r) => r !== void 0 ? `+${r} more` : `${i} selected`), t.onSelect = (i) => {
|
|
5094
5219
|
var r;
|
|
5095
5220
|
this.emit("select", {
|
|
5096
5221
|
option: i,
|
|
5097
|
-
selectedOptions: ((r = p(this,
|
|
5098
|
-
selectedValues:
|
|
5222
|
+
selectedOptions: ((r = p(this, z)) == null ? void 0 : r.getSelected()) ?? [],
|
|
5223
|
+
selectedValues: x(this, _, dt).call(this)
|
|
5099
5224
|
});
|
|
5100
5225
|
}, t.onDeselect = (i) => {
|
|
5101
5226
|
var r;
|
|
5102
5227
|
this.emit("deselect", {
|
|
5103
5228
|
option: i,
|
|
5104
|
-
selectedOptions: ((r = p(this,
|
|
5105
|
-
selectedValues:
|
|
5229
|
+
selectedOptions: ((r = p(this, z)) == null ? void 0 : r.getSelected()) ?? [],
|
|
5230
|
+
selectedValues: x(this, _, dt).call(this)
|
|
5106
5231
|
});
|
|
5107
5232
|
}, t.onChange = (i) => {
|
|
5108
5233
|
this.emit("change", {
|
|
5109
5234
|
selectedOptions: i,
|
|
5110
|
-
selectedValues:
|
|
5235
|
+
selectedValues: x(this, _, dt).call(this)
|
|
5111
5236
|
});
|
|
5112
5237
|
}, t.container = p(this, J), t.hostElement = this, t;
|
|
5113
|
-
},
|
|
5238
|
+
}, so = function() {
|
|
5114
5239
|
if (p(this, ke) && p(this, ke).length > 0)
|
|
5115
5240
|
return p(this, ke);
|
|
5116
5241
|
const t = this.config.initialValues;
|
|
5117
5242
|
return t && t.length > 0 ? t : void 0;
|
|
5118
5243
|
}, dt = function() {
|
|
5119
5244
|
var o;
|
|
5120
|
-
const t = (o = p(this,
|
|
5245
|
+
const t = (o = p(this, z)) == null ? void 0 : o.getValue();
|
|
5121
5246
|
return t == null ? [] : Array.isArray(t) ? t : [t];
|
|
5122
5247
|
}, // ── §12.8 custom styles ───────────────────────────────────────────────────
|
|
5123
|
-
|
|
5248
|
+
Wt = function() {
|
|
5124
5249
|
const t = p(this, et);
|
|
5125
5250
|
if (!t) return;
|
|
5126
5251
|
const o = this.config.customStylesCallback;
|
|
@@ -5130,9 +5255,9 @@ Ft = function() {
|
|
|
5130
5255
|
}
|
|
5131
5256
|
try {
|
|
5132
5257
|
const i = o();
|
|
5133
|
-
t.set(i), i &&
|
|
5258
|
+
t.set(i), i && x(this, _, oo).call(this, i);
|
|
5134
5259
|
} catch (i) {
|
|
5135
|
-
|
|
5260
|
+
K.warn("[MultiSelectElement] customStylesCallback threw", i), t.clear();
|
|
5136
5261
|
}
|
|
5137
5262
|
}, /**
|
|
5138
5263
|
* Dev-only lint: warn when `customStylesCallback` *sets* a `--ms-*` variable
|
|
@@ -5143,28 +5268,28 @@ Ft = function() {
|
|
|
5143
5268
|
* De-duped per instance. If you genuinely define a `--ms-*` var for your own
|
|
5144
5269
|
* custom-rendered content, ignore the warning (or use a different prefix).
|
|
5145
5270
|
*/
|
|
5146
|
-
|
|
5147
|
-
const o =
|
|
5271
|
+
oo = function(t) {
|
|
5272
|
+
const o = Er();
|
|
5148
5273
|
if (o.size !== 0)
|
|
5149
|
-
for (const { name: i, suggestions: r } of
|
|
5274
|
+
for (const { name: i, suggestions: r } of ti(t, { prefix: "--ms-", consumed: o }))
|
|
5150
5275
|
p(this, tt).has(i) || (p(this, tt).add(i), console.warn(
|
|
5151
5276
|
`[web-multiselect] customStylesCallback sets "${i}", which no web-multiselect style consumes — it will have no effect.` + (r.length ? ` Did you mean: ${r.join(", ")}?` : "") + " (If it's for your own custom-rendered content, ignore this.)"
|
|
5152
5277
|
));
|
|
5153
5278
|
}, // ── CSS-var sugar ─────────────────────────────────────────────────────────
|
|
5154
|
-
|
|
5155
|
-
for (const t of Object.keys(at))
|
|
5156
|
-
},
|
|
5279
|
+
io = function() {
|
|
5280
|
+
for (const t of Object.keys(at)) x(this, _, jt).call(this, at[t], this.config[t]);
|
|
5281
|
+
}, ro = function(t) {
|
|
5157
5282
|
for (const o of Object.keys(at))
|
|
5158
|
-
o in t &&
|
|
5159
|
-
},
|
|
5283
|
+
o in t && x(this, _, jt).call(this, at[o], t[o]);
|
|
5284
|
+
}, jt = function(t, o) {
|
|
5160
5285
|
o == null || o === "" ? this.style.removeProperty(t) : this.style.setProperty(t, String(o));
|
|
5161
5286
|
}, // ── declarative <option> parsing (light DOM, once) ────────────────────────
|
|
5162
|
-
|
|
5287
|
+
no = function() {
|
|
5163
5288
|
if (p(this, st)) return;
|
|
5164
|
-
|
|
5165
|
-
const t =
|
|
5166
|
-
t && (
|
|
5167
|
-
},
|
|
5289
|
+
N(this, st, !0);
|
|
5290
|
+
const t = x(this, _, ao).call(this);
|
|
5291
|
+
t && (N(this, Ne, t), N(this, ze, !0));
|
|
5292
|
+
}, ao = function() {
|
|
5168
5293
|
const t = Array.from(this.children);
|
|
5169
5294
|
if (t.length === 0) return null;
|
|
5170
5295
|
const o = [];
|
|
@@ -5175,7 +5300,7 @@ ro = function() {
|
|
|
5175
5300
|
value: n.value || ((c = n.textContent) == null ? void 0 : c.trim()) || "",
|
|
5176
5301
|
label: ((d = n.textContent) == null ? void 0 : d.trim()) || n.value || ""
|
|
5177
5302
|
};
|
|
5178
|
-
a && (l.group = a), n.hasAttribute("selected") && (p(this, ke) ??
|
|
5303
|
+
a && (l.group = a), n.hasAttribute("selected") && (p(this, ke) ?? N(this, ke, [])).push(l.value), n.hasAttribute("disabled") && (l.disabled = !0), n.hasAttribute("data-icon") && (l.icon = n.getAttribute("data-icon")), n.hasAttribute("data-subtitle") && (l.subtitle = n.getAttribute("data-subtitle")), o.push(l), i = !0;
|
|
5179
5304
|
};
|
|
5180
5305
|
for (const n of t)
|
|
5181
5306
|
if (n.tagName === "OPTION")
|
|
@@ -5186,12 +5311,12 @@ ro = function() {
|
|
|
5186
5311
|
r(c, l);
|
|
5187
5312
|
}
|
|
5188
5313
|
if (!i) return null;
|
|
5189
|
-
|
|
5314
|
+
K.debug(`[MultiSelectElement] Parsed ${o.length} declarative options from Light DOM`);
|
|
5190
5315
|
for (const n of t)
|
|
5191
5316
|
(n.tagName === "OPTION" || n.tagName === "OPTGROUP") && n.remove();
|
|
5192
5317
|
return o;
|
|
5193
5318
|
}, // ── debug panel (deprecated; kept for back-compat) ────────────────────────
|
|
5194
|
-
|
|
5319
|
+
Ut = function() {
|
|
5195
5320
|
const t = p(this, J).querySelector(".ms__debug-info");
|
|
5196
5321
|
if (t && t.remove(), !this.config.showDebugInfo) return;
|
|
5197
5322
|
const o = document.createElement("div");
|
|
@@ -5199,12 +5324,12 @@ jt = function() {
|
|
|
5199
5324
|
const i = document.createElement("details"), r = document.createElement("summary");
|
|
5200
5325
|
r.textContent = "Debug Info";
|
|
5201
5326
|
const n = document.createElement("div");
|
|
5202
|
-
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), p(this, J).appendChild(o),
|
|
5203
|
-
},
|
|
5327
|
+
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), p(this, J).appendChild(o), x(this, _, Gt).call(this);
|
|
5328
|
+
}, Gt = function() {
|
|
5204
5329
|
var l, c, d, h;
|
|
5205
5330
|
const t = p(this, J).querySelector(".ms__debug-stats");
|
|
5206
|
-
if (!t || !p(this,
|
|
5207
|
-
const o = "2.0.0-
|
|
5331
|
+
if (!t || !p(this, z)) return;
|
|
5332
|
+
const o = "2.0.0-rc07", i = typeof window < "u" && ((c = (l = window.components) == null ? void 0 : l["web-multiselect"]) == null ? void 0 : c.getInstances().length) || 0, r = p(this, z).getSelected().length, n = ((d = this.config.options) == null ? void 0 : d.length) || 0, a = p(this, z);
|
|
5208
5333
|
t.innerHTML = `
|
|
5209
5334
|
<span>Version: ${o}</span>
|
|
5210
5335
|
<span>Total Instances: ${i}</span>
|
|
@@ -5215,16 +5340,16 @@ jt = function() {
|
|
|
5215
5340
|
<span>Search: ${a.searchTerm || "none"}</span>
|
|
5216
5341
|
<span>Loading: ${a.isLoading ? "Yes" : "No"}</span>
|
|
5217
5342
|
`, setTimeout(() => {
|
|
5218
|
-
this.config.showDebugInfo &&
|
|
5343
|
+
this.config.showDebugInfo && x(this, _, Gt).call(this);
|
|
5219
5344
|
}, 500);
|
|
5220
5345
|
}, // Opt into the form-associated custom element lifecycle so form.reset() and
|
|
5221
5346
|
// form.elements see the control.
|
|
5222
|
-
m(Ge, "formAssociated", !0), m(Ge, "inputs",
|
|
5347
|
+
m(Ge, "formAssociated", !0), m(Ge, "inputs", Pr), m(Ge, "events", Mr);
|
|
5223
5348
|
typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect", Ge);
|
|
5224
|
-
|
|
5349
|
+
Xo("web-multiselect", Ge, {
|
|
5225
5350
|
config: {
|
|
5226
5351
|
name: "@keenmate/web-multiselect",
|
|
5227
|
-
version: "2.0.0-
|
|
5352
|
+
version: "2.0.0-rc07",
|
|
5228
5353
|
author: "Keenmate",
|
|
5229
5354
|
license: "MIT",
|
|
5230
5355
|
repository: "git+https://github.com/keenmate/web-multiselect.git",
|
|
@@ -5233,17 +5358,17 @@ Go("web-multiselect", Ge, {
|
|
|
5233
5358
|
logging: ae
|
|
5234
5359
|
});
|
|
5235
5360
|
export {
|
|
5236
|
-
|
|
5361
|
+
Nr as LOGGING_CATEGORIES,
|
|
5237
5362
|
Ge as MultiSelectElement,
|
|
5238
|
-
|
|
5239
|
-
|
|
5240
|
-
|
|
5241
|
-
|
|
5242
|
-
|
|
5363
|
+
kr as OPTIONS_FORMATS,
|
|
5364
|
+
xr as WebMultiSelect,
|
|
5365
|
+
K as dataLogger,
|
|
5366
|
+
$r as disableLogging,
|
|
5367
|
+
Dr as enableLogging,
|
|
5243
5368
|
nt as initLogger,
|
|
5244
5369
|
W as interactionLogger,
|
|
5245
|
-
|
|
5246
|
-
|
|
5370
|
+
Cr as parseOptionsData,
|
|
5371
|
+
Rr as setCategoryLevel,
|
|
5247
5372
|
Vr as setLogLevel,
|
|
5248
5373
|
Q as uiLogger
|
|
5249
5374
|
};
|