@keenmate/web-multiselect 2.2.0-rc01 → 2.2.0-rc02
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 +8 -5
- package/custom-elements.json +30 -1
- package/dist/index.d.ts +23 -0
- package/dist/multiselect.js +458 -438
- package/dist/multiselect.umd.js +11 -11
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/css/options.css +6 -4
- package/vscode.html-custom-data.json +5 -0
- package/web-types.json +11 -1
package/dist/multiselect.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var Ho = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var Ts = (s) => {
|
|
3
3
|
throw TypeError(s);
|
|
4
4
|
};
|
|
5
5
|
var Fo = (s, e, t) => e in s ? Ho(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
|
|
6
|
-
var m = (s, e, t) => Fo(s, typeof e != "symbol" ? e + "" : e, t), Ut = (s, e, t) => e.has(s) ||
|
|
7
|
-
var h = (s, e, t) => (Ut(s, e, "read from private field"), t ? t.call(s) : e.get(s)), L = (s, e, t) => e.has(s) ?
|
|
6
|
+
var m = (s, e, t) => Fo(s, typeof e != "symbol" ? e + "" : e, t), Ut = (s, e, t) => e.has(s) || Ts("Cannot " + t);
|
|
7
|
+
var h = (s, e, t) => (Ut(s, e, "read from private field"), t ? t.call(s) : e.get(s)), L = (s, e, t) => e.has(s) ? Ts("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), I = (s, e, t, o) => (Ut(s, e, "write to private field"), o ? o.call(s, t) : e.set(s, t), t), b = (s, e, t) => (Ut(s, e, "access private method"), t);
|
|
8
8
|
function K(s, e = {}) {
|
|
9
9
|
const t = new Set(s), o = e.shouldNullOnInvalid ? null : e.default ?? null;
|
|
10
10
|
return {
|
|
@@ -37,7 +37,7 @@ function X(s = {}) {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function E(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) {
|
|
@@ -164,7 +164,7 @@ function Jo() {
|
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
|
-
const
|
|
167
|
+
const so = {
|
|
168
168
|
pointer: "fine",
|
|
169
169
|
hasCoarsePointer: !1,
|
|
170
170
|
canHover: !0,
|
|
@@ -177,12 +177,12 @@ const to = {
|
|
|
177
177
|
isApple: !1,
|
|
178
178
|
isAndroid: !1
|
|
179
179
|
}, Yo = { mobile: 640, tablet: 1024, desktop: 1 / 0 };
|
|
180
|
-
let xt =
|
|
180
|
+
let xt = oo(Yo);
|
|
181
181
|
const rt = /* @__PURE__ */ new Set(), nt = /* @__PURE__ */ new Set();
|
|
182
182
|
let Oe = null, It = [], _t = !1;
|
|
183
|
-
const
|
|
183
|
+
const Is = 30;
|
|
184
184
|
let Ae, kt = 0;
|
|
185
|
-
function
|
|
185
|
+
function oo(s) {
|
|
186
186
|
return Object.entries(s).sort((e, t) => e[1] - t[1]);
|
|
187
187
|
}
|
|
188
188
|
function Zo(s) {
|
|
@@ -192,10 +192,10 @@ function Zo(s) {
|
|
|
192
192
|
const e = xt[xt.length - 1];
|
|
193
193
|
return e ? e[0] : "desktop";
|
|
194
194
|
}
|
|
195
|
-
function
|
|
195
|
+
function gs() {
|
|
196
196
|
return typeof window < "u" && typeof window.matchMedia == "function";
|
|
197
197
|
}
|
|
198
|
-
function
|
|
198
|
+
function Os() {
|
|
199
199
|
return typeof navigator < "u" && (navigator.maxTouchPoints ?? 0) > 1;
|
|
200
200
|
}
|
|
201
201
|
function Qo() {
|
|
@@ -209,25 +209,25 @@ function Qo() {
|
|
|
209
209
|
if (e.includes("ios"))
|
|
210
210
|
return "ios";
|
|
211
211
|
if (e.includes("mac"))
|
|
212
|
-
return
|
|
212
|
+
return Os() ? "ios" : "macos";
|
|
213
213
|
if (e.includes("windows"))
|
|
214
214
|
return "windows";
|
|
215
215
|
if (e.includes("linux"))
|
|
216
216
|
return "linux";
|
|
217
217
|
}
|
|
218
218
|
const t = navigator.userAgent ?? "";
|
|
219
|
-
return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ?
|
|
219
|
+
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";
|
|
220
220
|
}
|
|
221
221
|
let ei;
|
|
222
222
|
function ti() {
|
|
223
223
|
return ei ?? (ei = Qo());
|
|
224
224
|
}
|
|
225
225
|
function qe(s) {
|
|
226
|
-
return
|
|
226
|
+
return gs() && window.matchMedia(s).matches;
|
|
227
227
|
}
|
|
228
|
-
function
|
|
229
|
-
if (!
|
|
230
|
-
return { ...
|
|
228
|
+
function bs() {
|
|
229
|
+
if (!gs())
|
|
230
|
+
return { ...so };
|
|
231
231
|
const s = qe("(any-pointer: coarse)"), e = qe("(pointer: coarse)"), t = qe("(pointer: fine)"), o = qe("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a = ti();
|
|
232
232
|
return {
|
|
233
233
|
pointer: i,
|
|
@@ -250,13 +250,13 @@ function oi(s, e) {
|
|
|
250
250
|
return s.viewportWidth === e.viewportWidth && s.viewportHeight === e.viewportHeight;
|
|
251
251
|
}
|
|
252
252
|
function Ot() {
|
|
253
|
-
const s =
|
|
253
|
+
const s = bs(), e = Oe;
|
|
254
254
|
if (Oe = s, !e || !si(e, s))
|
|
255
255
|
for (const t of [...rt])
|
|
256
256
|
t(s);
|
|
257
257
|
nt.size > 0 && (!e || !oi(e, s)) && ii();
|
|
258
258
|
}
|
|
259
|
-
function
|
|
259
|
+
function Ps() {
|
|
260
260
|
const s = Oe;
|
|
261
261
|
if (s)
|
|
262
262
|
for (const e of [...nt])
|
|
@@ -266,11 +266,11 @@ function ii() {
|
|
|
266
266
|
if (Ae !== void 0)
|
|
267
267
|
return;
|
|
268
268
|
const s = Date.now() - kt;
|
|
269
|
-
s >=
|
|
270
|
-
Ae = void 0, kt = Date.now(),
|
|
271
|
-
},
|
|
269
|
+
s >= Is ? (kt = Date.now(), Ps()) : Ae = setTimeout(() => {
|
|
270
|
+
Ae = void 0, kt = Date.now(), Ps();
|
|
271
|
+
}, Is - s);
|
|
272
272
|
}
|
|
273
|
-
const Pt = () => Ot(),
|
|
273
|
+
const Pt = () => Ot(), io = () => {
|
|
274
274
|
if (typeof requestAnimationFrame == "function") {
|
|
275
275
|
if (_t)
|
|
276
276
|
return;
|
|
@@ -286,9 +286,9 @@ function ri(s) {
|
|
|
286
286
|
function ni(s) {
|
|
287
287
|
typeof s.removeEventListener == "function" ? s.removeEventListener("change", Pt) : typeof s.removeListener == "function" && s.removeListener(Pt);
|
|
288
288
|
}
|
|
289
|
-
function
|
|
290
|
-
if (!
|
|
291
|
-
Oe = { ...
|
|
289
|
+
function ro() {
|
|
290
|
+
if (!gs()) {
|
|
291
|
+
Oe = { ...so };
|
|
292
292
|
return;
|
|
293
293
|
}
|
|
294
294
|
It = [
|
|
@@ -300,37 +300,37 @@ function io() {
|
|
|
300
300
|
];
|
|
301
301
|
for (const s of It)
|
|
302
302
|
ri(s);
|
|
303
|
-
typeof window.addEventListener == "function" && window.addEventListener("resize",
|
|
303
|
+
typeof window.addEventListener == "function" && window.addEventListener("resize", io), Oe = bs();
|
|
304
304
|
}
|
|
305
|
-
function
|
|
305
|
+
function no() {
|
|
306
306
|
for (const s of It)
|
|
307
307
|
ni(s);
|
|
308
|
-
It = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize",
|
|
308
|
+
It = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize", io), _t = !1, Ae !== void 0 && (clearTimeout(Ae), Ae = void 0), kt = 0, Oe = null;
|
|
309
309
|
}
|
|
310
310
|
function Mt() {
|
|
311
311
|
return rt.size + nt.size;
|
|
312
312
|
}
|
|
313
313
|
function Lt() {
|
|
314
|
-
return Oe ??
|
|
314
|
+
return Oe ?? bs();
|
|
315
315
|
}
|
|
316
316
|
function ai(s, e = {}) {
|
|
317
317
|
const t = Mt() === 0;
|
|
318
|
-
rt.add(s), t &&
|
|
318
|
+
rt.add(s), t && ro(), e.immediate !== !1 && s(Lt());
|
|
319
319
|
let o = !0;
|
|
320
320
|
return () => {
|
|
321
|
-
o && (o = !1, rt.delete(s), Mt() === 0 &&
|
|
321
|
+
o && (o = !1, rt.delete(s), Mt() === 0 && no());
|
|
322
322
|
};
|
|
323
323
|
}
|
|
324
324
|
function li(s, e = {}) {
|
|
325
325
|
const t = Mt() === 0;
|
|
326
|
-
nt.add(s), t &&
|
|
326
|
+
nt.add(s), t && ro(), e.immediate !== !1 && s(Lt());
|
|
327
327
|
let o = !0;
|
|
328
328
|
return () => {
|
|
329
|
-
o && (o = !1, nt.delete(s), Mt() === 0 &&
|
|
329
|
+
o && (o = !1, nt.delete(s), Mt() === 0 && no());
|
|
330
330
|
};
|
|
331
331
|
}
|
|
332
332
|
function Sn(s) {
|
|
333
|
-
xt =
|
|
333
|
+
xt = oo(s), rt.size > 0 && Ot();
|
|
334
334
|
}
|
|
335
335
|
const ci = 600;
|
|
336
336
|
function di(s) {
|
|
@@ -343,7 +343,7 @@ let qt = 0;
|
|
|
343
343
|
function ui() {
|
|
344
344
|
return typeof ResizeObserver < "u";
|
|
345
345
|
}
|
|
346
|
-
function
|
|
346
|
+
function ao(s) {
|
|
347
347
|
if (typeof s.getBoundingClientRect != "function")
|
|
348
348
|
return { width: 0, height: 0 };
|
|
349
349
|
const e = s.getBoundingClientRect();
|
|
@@ -356,11 +356,11 @@ function pi(s, e) {
|
|
|
356
356
|
if (mi(s.lastFired, e) || (s.pendingSize = e, s.timer !== void 0))
|
|
357
357
|
return;
|
|
358
358
|
const t = Date.now() - s.lastNotify;
|
|
359
|
-
t >= s.throttleMs ? (s.lastNotify = Date.now(),
|
|
360
|
-
s.timer = void 0, s.lastNotify = Date.now(),
|
|
359
|
+
t >= s.throttleMs ? (s.lastNotify = Date.now(), Ms(s)) : s.timer = setTimeout(() => {
|
|
360
|
+
s.timer = void 0, s.lastNotify = Date.now(), Ms(s);
|
|
361
361
|
}, s.throttleMs - t);
|
|
362
362
|
}
|
|
363
|
-
function
|
|
363
|
+
function Ms(s) {
|
|
364
364
|
const e = s.pendingSize;
|
|
365
365
|
e && (s.lastFired = e, s.cb(e, s.el));
|
|
366
366
|
}
|
|
@@ -369,7 +369,7 @@ function fi(s) {
|
|
|
369
369
|
const t = et.get(e.target);
|
|
370
370
|
if (!t)
|
|
371
371
|
continue;
|
|
372
|
-
const o =
|
|
372
|
+
const o = ao(e.target);
|
|
373
373
|
for (const i of [...t])
|
|
374
374
|
pi(i, o);
|
|
375
375
|
}
|
|
@@ -385,7 +385,7 @@ function bi(s, e, t = {}) {
|
|
|
385
385
|
lastNotify: 0
|
|
386
386
|
};
|
|
387
387
|
if (t.immediate !== !1) {
|
|
388
|
-
const n =
|
|
388
|
+
const n = ao(s);
|
|
389
389
|
o.lastFired = n, o.lastNotify = Date.now(), e(n, s);
|
|
390
390
|
}
|
|
391
391
|
const i = gi();
|
|
@@ -414,12 +414,12 @@ function wi(s, e) {
|
|
|
414
414
|
function yi(s) {
|
|
415
415
|
return Array.from(Et.get(s) ?? []);
|
|
416
416
|
}
|
|
417
|
-
const
|
|
417
|
+
const lo = /* @__PURE__ */ new Map();
|
|
418
418
|
function xi(s, e) {
|
|
419
|
-
|
|
419
|
+
lo.set(s.toLowerCase(), e);
|
|
420
420
|
}
|
|
421
421
|
function _i(s) {
|
|
422
|
-
return
|
|
422
|
+
return lo.get(s.toLowerCase());
|
|
423
423
|
}
|
|
424
424
|
function ki(s, e, t, o = {}) {
|
|
425
425
|
return s.dispatchEvent(new CustomEvent(e, {
|
|
@@ -442,7 +442,7 @@ function Ti(s) {
|
|
|
442
442
|
}) : [];
|
|
443
443
|
}
|
|
444
444
|
const Ii = typeof HTMLElement < "u" ? HTMLElement : class {
|
|
445
|
-
},
|
|
445
|
+
}, Ls = /* @__PURE__ */ new WeakSet();
|
|
446
446
|
let Oi = 0;
|
|
447
447
|
const Pi = { trace() {
|
|
448
448
|
}, debug() {
|
|
@@ -450,7 +450,7 @@ const Pi = { trace() {
|
|
|
450
450
|
}, warn() {
|
|
451
451
|
}, error() {
|
|
452
452
|
} }, Mi = new Proxy({}, { get: () => Pi });
|
|
453
|
-
var me, ct, _e, dt, ke, ht, Bt, Ce, pe, Se, Te, Ne, $e, Ve, De, Re, Be, Ht, ie, He, O,
|
|
453
|
+
var me, ct, _e, dt, ke, ht, Bt, Ce, pe, Se, Te, Ne, $e, Ve, De, Re, Be, Ht, ie, He, O, co, ho, uo, Z, mo, po, es, ts, tt, ss, fo;
|
|
454
454
|
const xe = class xe extends Ii {
|
|
455
455
|
constructor() {
|
|
456
456
|
super();
|
|
@@ -462,7 +462,7 @@ const xe = class xe extends Ii {
|
|
|
462
462
|
/** Live handler currently bound via each managed `on<Name>` property, keyed by event name. */
|
|
463
463
|
L(this, ke, /* @__PURE__ */ new Map());
|
|
464
464
|
L(this, ht, Jo());
|
|
465
|
-
L(this, Bt, () =>
|
|
465
|
+
L(this, Bt, () => b(this, O, ss).call(this));
|
|
466
466
|
L(this, Ce, null);
|
|
467
467
|
L(this, pe, !1);
|
|
468
468
|
L(this, Se, []);
|
|
@@ -489,12 +489,12 @@ const xe = class xe extends Ii {
|
|
|
489
489
|
L(this, ie);
|
|
490
490
|
L(this, He);
|
|
491
491
|
const t = this.constructor, o = t.inputs ?? [], i = Ti(t.events);
|
|
492
|
-
|
|
492
|
+
b(this, O, uo).call(this, o, i);
|
|
493
493
|
for (const r of o)
|
|
494
494
|
h(this, ct).set(r.configKey, r), r.attribute && h(this, _e).set(r.attribute, r);
|
|
495
495
|
for (const r of i)
|
|
496
496
|
h(this, dt).set(r.name, r);
|
|
497
|
-
|
|
497
|
+
b(this, O, co).call(this, o), b(this, O, mo).call(this, o), b(this, O, po).call(this, i);
|
|
498
498
|
}
|
|
499
499
|
static get observedAttributes() {
|
|
500
500
|
const t = (this.inputs ?? []).filter((o) => o.attribute).map((o) => o.attribute);
|
|
@@ -516,12 +516,12 @@ const xe = class xe extends Ii {
|
|
|
516
516
|
try {
|
|
517
517
|
n = qo(r, i, this);
|
|
518
518
|
} catch (l) {
|
|
519
|
-
|
|
519
|
+
b(this, O, Z).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = b(this, O, ho).call(this, r);
|
|
520
520
|
}
|
|
521
|
-
|
|
521
|
+
b(this, O, ts).call(this, n);
|
|
522
522
|
}
|
|
523
523
|
connectedCallback() {
|
|
524
|
-
vi(this.localName, this), h(this, Te) || (I(this, Te, !0), I(this, Ne, null), I(this, pe, !0)),
|
|
524
|
+
vi(this.localName, this), h(this, Te) || (I(this, Te, !0), I(this, Ne, null), I(this, pe, !0)), b(this, O, tt).call(this), this.connect(), this.environmentChanged !== xe.prototype.environmentChanged && I(this, Ve, ai((t) => this.environmentChanged(t))), this.viewportChanged !== xe.prototype.viewportChanged && I(this, De, li((t) => this.viewportChanged(t))), this.resized !== xe.prototype.resized && I(this, Re, bi(this, (t) => this.resized(t), { immediate: !1 }));
|
|
525
525
|
}
|
|
526
526
|
disconnectedCallback() {
|
|
527
527
|
var t, o, i;
|
|
@@ -532,13 +532,13 @@ const xe = class xe extends Ii {
|
|
|
532
532
|
setAttributes(t) {
|
|
533
533
|
for (const [o, i] of Object.entries(t)) {
|
|
534
534
|
const r = h(this, ct).get(o) ?? h(this, _e).get(o);
|
|
535
|
-
r &&
|
|
535
|
+
r && b(this, O, es).call(this, r, i);
|
|
536
536
|
}
|
|
537
|
-
|
|
537
|
+
b(this, O, tt).call(this);
|
|
538
538
|
}
|
|
539
539
|
/** Run `fn` and coalesce every input change it makes into a single reinit/update. */
|
|
540
540
|
batch(t) {
|
|
541
|
-
t(),
|
|
541
|
+
t(), b(this, O, tt).call(this);
|
|
542
542
|
}
|
|
543
543
|
/**
|
|
544
544
|
* Apply any pending input writes **synchronously, now** — running the
|
|
@@ -554,7 +554,7 @@ const xe = class xe extends Ii {
|
|
|
554
554
|
* `await whenSettled()` between the two.
|
|
555
555
|
*/
|
|
556
556
|
flush() {
|
|
557
|
-
|
|
557
|
+
b(this, O, tt).call(this);
|
|
558
558
|
}
|
|
559
559
|
/**
|
|
560
560
|
* Resolves once the element is **settled** — i.e. every staged input change
|
|
@@ -802,7 +802,7 @@ const xe = class xe extends Ii {
|
|
|
802
802
|
}
|
|
803
803
|
};
|
|
804
804
|
me = new WeakMap(), ct = new WeakMap(), _e = new WeakMap(), dt = new WeakMap(), ke = new WeakMap(), ht = new WeakMap(), Bt = new WeakMap(), Ce = new WeakMap(), pe = new WeakMap(), Se = new WeakMap(), Te = new WeakMap(), Ne = new WeakMap(), $e = new WeakMap(), Ve = new WeakMap(), De = new WeakMap(), Re = new WeakMap(), Be = new WeakMap(), Ht = new WeakMap(), ie = new WeakMap(), He = new WeakMap(), O = new WeakSet(), // ── internals ─────────────────────────────────────────────────────────────
|
|
805
|
-
|
|
805
|
+
co = function(t) {
|
|
806
806
|
var o;
|
|
807
807
|
for (const i of t) {
|
|
808
808
|
let r = i.default;
|
|
@@ -810,25 +810,25 @@ lo = function(t) {
|
|
|
810
810
|
try {
|
|
811
811
|
r = i.converter.fromAttribute(null, this, i.attribute ?? i.configKey);
|
|
812
812
|
} catch (n) {
|
|
813
|
-
|
|
813
|
+
b(this, O, Z).call(this, `converter for "${i.configKey}" threw computing its default; using \`default\``, n), r = i.default;
|
|
814
814
|
}
|
|
815
815
|
h(this, me)[i.configKey] = r, i.field && (this[i.field] = r);
|
|
816
816
|
}
|
|
817
|
-
},
|
|
817
|
+
}, ho = function(t) {
|
|
818
818
|
return { configKey: t.configKey, field: t.field, value: t.default, on: t.on ?? "update" };
|
|
819
819
|
}, /** Sanity-check the input + event tables once per class; warn (never throw) on mistakes. */
|
|
820
|
-
|
|
820
|
+
uo = function(t, o) {
|
|
821
821
|
var l;
|
|
822
822
|
const i = this.constructor;
|
|
823
|
-
if (
|
|
823
|
+
if (Ls.has(i))
|
|
824
824
|
return;
|
|
825
|
-
|
|
825
|
+
Ls.add(i);
|
|
826
826
|
const r = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
|
|
827
827
|
for (const c of t)
|
|
828
|
-
r.has(c.configKey) &&
|
|
828
|
+
r.has(c.configKey) && b(this, O, Z).call(this, `invalid input table: duplicate configKey "${c.configKey}"`), r.add(c.configKey), c.attribute && (n.has(c.attribute) && b(this, O, Z).call(this, `invalid input table: duplicate attribute "${c.attribute}"`), n.add(c.attribute)), c.reflect && !c.attribute && b(this, O, Z).call(this, `invalid input table: "${c.configKey}" has reflect:true but no attribute to reflect to`), c.reflect && !((l = c.converter) != null && l.toAttribute) && b(this, O, Z).call(this, `invalid input table: "${c.configKey}" has reflect:true but its converter has no toAttribute`);
|
|
829
829
|
const a = /* @__PURE__ */ new Set();
|
|
830
830
|
for (const c of o)
|
|
831
|
-
a.has(c.name) &&
|
|
831
|
+
a.has(c.name) && b(this, O, Z).call(this, `invalid event table: duplicate event "${c.name}"`), a.add(c.name), /^[a-z][a-z0-9-]*$/.test(c.name) || b(this, O, Z).call(this, `invalid event table: event "${c.name}" should be lowercase kebab-case (e.g. "date-select")`), c.property && r.has(c.property) && b(this, O, Z).call(this, `invalid event table: event "${c.name}" property "${c.property}" collides with an input configKey`);
|
|
832
832
|
}, /**
|
|
833
833
|
* Always-on console warning for input validation failures. Deliberately uses
|
|
834
834
|
* `console.warn` directly — NOT the (future) categorized logger — so rejected
|
|
@@ -836,14 +836,14 @@ ho = function(t, o) {
|
|
|
836
836
|
*/
|
|
837
837
|
Z = function(t, ...o) {
|
|
838
838
|
console.warn(`[BlissElement] <${this.localName ?? "unknown"}> ${t}`, ...o);
|
|
839
|
-
},
|
|
839
|
+
}, mo = function(t) {
|
|
840
840
|
for (const o of t) {
|
|
841
841
|
const i = o.configKey, r = Object.prototype.hasOwnProperty.call(this, i), n = r ? this[i] : void 0;
|
|
842
842
|
r && delete this[i], Object.defineProperty(this, i, {
|
|
843
843
|
configurable: !0,
|
|
844
844
|
enumerable: !0,
|
|
845
845
|
get: () => h(this, me)[i],
|
|
846
|
-
set: (a) =>
|
|
846
|
+
set: (a) => b(this, O, es).call(this, o, a)
|
|
847
847
|
}), r && ((h(this, Ne) ?? I(this, Ne, /* @__PURE__ */ new Set())).add(i), this[i] = n);
|
|
848
848
|
}
|
|
849
849
|
}, /**
|
|
@@ -851,7 +851,7 @@ Z = function(t, ...o) {
|
|
|
851
851
|
* (de)registers a real listener for the event, so the property behaves like
|
|
852
852
|
* `addEventListener(name, …)` and its handler receives the `CustomEvent`.
|
|
853
853
|
*/
|
|
854
|
-
|
|
854
|
+
po = function(t) {
|
|
855
855
|
for (const o of t) {
|
|
856
856
|
const i = o.property;
|
|
857
857
|
if (!i)
|
|
@@ -875,10 +875,10 @@ mo = function(t) {
|
|
|
875
875
|
var r;
|
|
876
876
|
const i = Xo(t, o);
|
|
877
877
|
if (!i) {
|
|
878
|
-
|
|
878
|
+
b(this, O, Z).call(this, `rejected invalid value for property "${t.configKey}"; keeping previous value`, o);
|
|
879
879
|
return;
|
|
880
880
|
}
|
|
881
|
-
if (
|
|
881
|
+
if (b(this, O, ts).call(this, i), t.reflect && t.attribute && ((r = t.converter) != null && r.toAttribute)) {
|
|
882
882
|
const n = t.converter.toAttribute(i.value);
|
|
883
883
|
I(this, $e, !0);
|
|
884
884
|
try {
|
|
@@ -891,14 +891,14 @@ mo = function(t) {
|
|
|
891
891
|
h(this, me)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" && I(this, pe, !0), (h(this, Ce) ?? I(this, Ce, {}))[t.configKey] = t.value, h(this, ht).schedule(h(this, Bt)));
|
|
892
892
|
}, /** Cancel any queued microtask and flush pending changes synchronously now. */
|
|
893
893
|
tt = function() {
|
|
894
|
-
h(this, ht).cancel(),
|
|
894
|
+
h(this, ht).cancel(), b(this, O, ss).call(this);
|
|
895
895
|
}, ss = function() {
|
|
896
896
|
if (!this.isConnected)
|
|
897
897
|
return;
|
|
898
898
|
const t = h(this, pe), o = h(this, Ce);
|
|
899
|
-
I(this, pe, !1), I(this, Ce, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o),
|
|
899
|
+
I(this, pe, !1), I(this, Ce, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o), b(this, O, fo).call(this);
|
|
900
900
|
}, /** Resolve everyone awaiting {@link whenSettled} for the flush that just ran. */
|
|
901
|
-
|
|
901
|
+
fo = function() {
|
|
902
902
|
if (h(this, Se).length === 0)
|
|
903
903
|
return;
|
|
904
904
|
const t = h(this, Se);
|
|
@@ -913,7 +913,7 @@ m(xe, "inputs"), /**
|
|
|
913
913
|
*/
|
|
914
914
|
m(xe, "events");
|
|
915
915
|
let Qt = xe;
|
|
916
|
-
function
|
|
916
|
+
function Es(s, e, t) {
|
|
917
917
|
typeof customElements > "u" || customElements.get(s) || customElements.define(s, e, t);
|
|
918
918
|
}
|
|
919
919
|
function Li(s) {
|
|
@@ -932,12 +932,12 @@ function Ei(s, e, t) {
|
|
|
932
932
|
version: () => o.version,
|
|
933
933
|
config: o,
|
|
934
934
|
...i ? { logging: Li(i) } : {},
|
|
935
|
-
register: () =>
|
|
935
|
+
register: () => Es(s, e),
|
|
936
936
|
getInstances: () => yi(s)
|
|
937
937
|
};
|
|
938
|
-
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r &&
|
|
938
|
+
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && Es(s, e), n;
|
|
939
939
|
}
|
|
940
|
-
const
|
|
940
|
+
const As = /* @__PURE__ */ new Map(), zs = /* @__PURE__ */ new WeakMap();
|
|
941
941
|
let gt;
|
|
942
942
|
function Ai(s) {
|
|
943
943
|
if (typeof CSSStyleSheet > "u" || !("adoptedStyleSheets" in s))
|
|
@@ -953,8 +953,8 @@ function Ai(s) {
|
|
|
953
953
|
function zi(s, ...e) {
|
|
954
954
|
if (typeof document > "u")
|
|
955
955
|
return;
|
|
956
|
-
let t =
|
|
957
|
-
t ||
|
|
956
|
+
let t = zs.get(s);
|
|
957
|
+
t || zs.set(s, t = /* @__PURE__ */ new Set());
|
|
958
958
|
const o = e.filter((r) => r && !t.has(r));
|
|
959
959
|
if (o.length === 0)
|
|
960
960
|
return;
|
|
@@ -962,8 +962,8 @@ function zi(s, ...e) {
|
|
|
962
962
|
t.add(r);
|
|
963
963
|
if (Ai(s)) {
|
|
964
964
|
const r = o.map((n) => {
|
|
965
|
-
let a =
|
|
966
|
-
return a || (a = new CSSStyleSheet(), a.replaceSync(n),
|
|
965
|
+
let a = As.get(n);
|
|
966
|
+
return a || (a = new CSSStyleSheet(), a.replaceSync(n), As.set(n, a)), a;
|
|
967
967
|
});
|
|
968
968
|
s.adoptedStyleSheets = [...s.adoptedStyleSheets, ...r];
|
|
969
969
|
return;
|
|
@@ -995,18 +995,18 @@ function Ni(s, e = {}) {
|
|
|
995
995
|
}
|
|
996
996
|
};
|
|
997
997
|
}
|
|
998
|
-
function
|
|
998
|
+
function go(s) {
|
|
999
999
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1000
1000
|
}
|
|
1001
1001
|
function $i(s, e) {
|
|
1002
|
-
const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${
|
|
1002
|
+
const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${go(e)}[a-z0-9-]+)`, "gi");
|
|
1003
1003
|
let i;
|
|
1004
1004
|
for (; i = o.exec(s); )
|
|
1005
1005
|
i[1] && t.add(i[1]);
|
|
1006
1006
|
return t;
|
|
1007
1007
|
}
|
|
1008
1008
|
function Vi(s, e) {
|
|
1009
|
-
const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${
|
|
1009
|
+
const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${go(e)}[a-z0-9-]+)\\s*:`, "gi");
|
|
1010
1010
|
let i;
|
|
1011
1011
|
for (; i = o.exec(s); )
|
|
1012
1012
|
i[1] && t.add(i[1]);
|
|
@@ -1068,27 +1068,27 @@ function Ki(s) {
|
|
|
1068
1068
|
e.removeEventListener("resize", i), e.removeEventListener("scroll", i), s.style.height = "", s.style.top = "";
|
|
1069
1069
|
};
|
|
1070
1070
|
}
|
|
1071
|
-
const
|
|
1071
|
+
const vs = "km-overlay-activated", Wi = Symbol("km-overlay-all-groups"), At = /* @__PURE__ */ new Set(), Ye = /* @__PURE__ */ new Map();
|
|
1072
1072
|
let zt = !1;
|
|
1073
|
-
function
|
|
1073
|
+
function ws() {
|
|
1074
1074
|
return typeof document < "u";
|
|
1075
1075
|
}
|
|
1076
1076
|
function ji(s, e) {
|
|
1077
1077
|
return e === Wi || s === e;
|
|
1078
1078
|
}
|
|
1079
|
-
function
|
|
1079
|
+
function bo(s) {
|
|
1080
1080
|
const e = s.detail, t = e == null ? void 0 : e.source, o = e == null ? void 0 : e.group;
|
|
1081
1081
|
for (const i of Array.from(At))
|
|
1082
1082
|
i.id !== t && ji(i.group, o) && i.dismiss();
|
|
1083
1083
|
}
|
|
1084
1084
|
function Gi() {
|
|
1085
|
-
zt || !
|
|
1085
|
+
zt || !ws() || (document.addEventListener(vs, bo), zt = !0);
|
|
1086
1086
|
}
|
|
1087
1087
|
function Ui() {
|
|
1088
|
-
zt && At.size === 0 &&
|
|
1088
|
+
zt && At.size === 0 && ws() && (document.removeEventListener(vs, bo), zt = !1);
|
|
1089
1089
|
}
|
|
1090
1090
|
function qi(s, e) {
|
|
1091
|
-
|
|
1091
|
+
ws() && document.dispatchEvent(new CustomEvent(vs, { detail: { source: s, group: e } }));
|
|
1092
1092
|
}
|
|
1093
1093
|
function Xi(s, e) {
|
|
1094
1094
|
const t = { id: {}, group: e, dismiss: s };
|
|
@@ -1111,10 +1111,10 @@ const G = {
|
|
|
1111
1111
|
WARN: 3,
|
|
1112
1112
|
ERROR: 4,
|
|
1113
1113
|
SILENT: 5
|
|
1114
|
-
},
|
|
1114
|
+
}, Ns = ["trace", "debug", "info", "warn", "error"], Nt = () => {
|
|
1115
1115
|
};
|
|
1116
1116
|
let Ji = "km-log";
|
|
1117
|
-
function
|
|
1117
|
+
function $s(s) {
|
|
1118
1118
|
const t = console[s];
|
|
1119
1119
|
return typeof t == "function" ? t.bind(console) : Nt;
|
|
1120
1120
|
}
|
|
@@ -1122,7 +1122,7 @@ function Yi(s) {
|
|
|
1122
1122
|
if (s === "debug" && (s = "log"), typeof console > "u")
|
|
1123
1123
|
return Nt;
|
|
1124
1124
|
const e = console;
|
|
1125
|
-
return e[s] !== void 0 ?
|
|
1125
|
+
return e[s] !== void 0 ? $s(s) : e.log !== void 0 ? $s("log") : Nt;
|
|
1126
1126
|
}
|
|
1127
1127
|
const Zi = (s) => Yi(s);
|
|
1128
1128
|
function Ze(s) {
|
|
@@ -1134,7 +1134,7 @@ function Ze(s) {
|
|
|
1134
1134
|
}
|
|
1135
1135
|
let ue;
|
|
1136
1136
|
const $t = {};
|
|
1137
|
-
class
|
|
1137
|
+
class vo {
|
|
1138
1138
|
constructor(e, t) {
|
|
1139
1139
|
m(this, "name");
|
|
1140
1140
|
m(this, "levels", G);
|
|
@@ -1163,7 +1163,7 @@ class bo {
|
|
|
1163
1163
|
const t = this.storageKey();
|
|
1164
1164
|
if (typeof window > "u" || !t)
|
|
1165
1165
|
return;
|
|
1166
|
-
const o = (
|
|
1166
|
+
const o = (Ns[e] ?? "silent").toUpperCase();
|
|
1167
1167
|
try {
|
|
1168
1168
|
window.localStorage[t] = o;
|
|
1169
1169
|
} catch {
|
|
@@ -1191,7 +1191,7 @@ class bo {
|
|
|
1191
1191
|
}
|
|
1192
1192
|
replaceLoggingMethods() {
|
|
1193
1193
|
const e = this.getLevel();
|
|
1194
|
-
|
|
1194
|
+
Ns.forEach((t, o) => {
|
|
1195
1195
|
this[t] = o < e ? Nt : this.methodFactory(t, e, this.name);
|
|
1196
1196
|
}), this.log = this.debug;
|
|
1197
1197
|
}
|
|
@@ -1219,14 +1219,14 @@ class bo {
|
|
|
1219
1219
|
$t[e].rebuild();
|
|
1220
1220
|
}
|
|
1221
1221
|
}
|
|
1222
|
-
ue = new
|
|
1222
|
+
ue = new vo(void 0, Zi);
|
|
1223
1223
|
function Qi(s) {
|
|
1224
1224
|
if (typeof s != "string" || s === "")
|
|
1225
1225
|
throw new TypeError("You must supply a non-empty name when creating a logger.");
|
|
1226
1226
|
let e = $t[s];
|
|
1227
|
-
return e || (e = $t[s] = new
|
|
1227
|
+
return e || (e = $t[s] = new vo(s, ue.methodFactory)), e;
|
|
1228
1228
|
}
|
|
1229
|
-
const er = ["INIT", "DATA", "UI"], tr = "debug",
|
|
1229
|
+
const er = ["INIT", "DATA", "UI"], tr = "debug", Vs = [
|
|
1230
1230
|
"#4c8bf5",
|
|
1231
1231
|
// blue
|
|
1232
1232
|
"#2ea043",
|
|
@@ -1243,11 +1243,11 @@ const er = ["INIT", "DATA", "UI"], tr = "debug", $s = [
|
|
|
1243
1243
|
// teal
|
|
1244
1244
|
"#8a6d3b"
|
|
1245
1245
|
// brown
|
|
1246
|
-
],
|
|
1246
|
+
], Ds = /* @__PURE__ */ new WeakSet();
|
|
1247
1247
|
function sr(s, e, t) {
|
|
1248
|
-
if (
|
|
1248
|
+
if (Ds.has(s))
|
|
1249
1249
|
return;
|
|
1250
|
-
|
|
1250
|
+
Ds.add(s);
|
|
1251
1251
|
const o = s.methodFactory, i = `color:${t};font-weight:bold`;
|
|
1252
1252
|
s.methodFactory = (r, n, a) => {
|
|
1253
1253
|
const l = o(r, n, a);
|
|
@@ -1278,7 +1278,7 @@ function rr(s, e, t) {
|
|
|
1278
1278
|
function nr(s, e = er) {
|
|
1279
1279
|
const t = {}, o = {};
|
|
1280
1280
|
e.forEach((r, n) => {
|
|
1281
|
-
const a = `${s}:${r}`, l =
|
|
1281
|
+
const a = `${s}:${r}`, l = Vs[n % Vs.length], c = Qi(a);
|
|
1282
1282
|
sr(c, a, l), t[r] = c, o[r] = { label: a, color: l, logger: c };
|
|
1283
1283
|
});
|
|
1284
1284
|
const i = (r) => {
|
|
@@ -1318,7 +1318,7 @@ const be = Math.min, ne = Math.max, Vt = Math.round, vt = Math.floor, ae = (s) =
|
|
|
1318
1318
|
bottom: "top",
|
|
1319
1319
|
top: "bottom"
|
|
1320
1320
|
};
|
|
1321
|
-
function
|
|
1321
|
+
function wo(s, e, t) {
|
|
1322
1322
|
return ne(s, be(e, t));
|
|
1323
1323
|
}
|
|
1324
1324
|
function je(s, e) {
|
|
@@ -1330,22 +1330,22 @@ function Pe(s) {
|
|
|
1330
1330
|
function Ge(s) {
|
|
1331
1331
|
return s.split("-")[1];
|
|
1332
1332
|
}
|
|
1333
|
-
function
|
|
1333
|
+
function yo(s) {
|
|
1334
1334
|
return s === "x" ? "y" : "x";
|
|
1335
1335
|
}
|
|
1336
|
-
function
|
|
1336
|
+
function ys(s) {
|
|
1337
1337
|
return s === "y" ? "height" : "width";
|
|
1338
1338
|
}
|
|
1339
1339
|
function re(s) {
|
|
1340
1340
|
const e = s[0];
|
|
1341
1341
|
return e === "t" || e === "b" ? "y" : "x";
|
|
1342
1342
|
}
|
|
1343
|
-
function
|
|
1344
|
-
return
|
|
1343
|
+
function xs(s) {
|
|
1344
|
+
return yo(re(s));
|
|
1345
1345
|
}
|
|
1346
1346
|
function lr(s, e, t) {
|
|
1347
1347
|
t === void 0 && (t = !1);
|
|
1348
|
-
const o = Ge(s), i =
|
|
1348
|
+
const o = Ge(s), i = xs(s), r = ys(i);
|
|
1349
1349
|
let n = i === "x" ? o === (t ? "end" : "start") ? "right" : "left" : o === "start" ? "bottom" : "top";
|
|
1350
1350
|
return e.reference[r] > e.floating[r] && (n = Dt(n)), [n, Dt(n)];
|
|
1351
1351
|
}
|
|
@@ -1356,12 +1356,12 @@ function cr(s) {
|
|
|
1356
1356
|
function os(s) {
|
|
1357
1357
|
return s.includes("start") ? s.replace("start", "end") : s.replace("end", "start");
|
|
1358
1358
|
}
|
|
1359
|
-
const
|
|
1359
|
+
const Rs = ["left", "right"], Bs = ["right", "left"], dr = ["top", "bottom"], hr = ["bottom", "top"];
|
|
1360
1360
|
function ur(s, e, t) {
|
|
1361
1361
|
switch (s) {
|
|
1362
1362
|
case "top":
|
|
1363
1363
|
case "bottom":
|
|
1364
|
-
return t ? e ?
|
|
1364
|
+
return t ? e ? Bs : Rs : e ? Rs : Bs;
|
|
1365
1365
|
case "left":
|
|
1366
1366
|
case "right":
|
|
1367
1367
|
return e ? dr : hr;
|
|
@@ -1387,7 +1387,7 @@ function pr(s) {
|
|
|
1387
1387
|
left: (i = s.left) != null ? i : 0
|
|
1388
1388
|
};
|
|
1389
1389
|
}
|
|
1390
|
-
function
|
|
1390
|
+
function xo(s) {
|
|
1391
1391
|
return typeof s != "number" ? pr(s) : {
|
|
1392
1392
|
top: s,
|
|
1393
1393
|
right: s,
|
|
@@ -1413,12 +1413,12 @@ function Rt(s) {
|
|
|
1413
1413
|
y: t
|
|
1414
1414
|
};
|
|
1415
1415
|
}
|
|
1416
|
-
function
|
|
1416
|
+
function Hs(s, e, t) {
|
|
1417
1417
|
let {
|
|
1418
1418
|
reference: o,
|
|
1419
1419
|
floating: i
|
|
1420
1420
|
} = s;
|
|
1421
|
-
const r = re(e), n =
|
|
1421
|
+
const r = re(e), n = xs(e), a = ys(n), l = Pe(e), c = r === "y", d = o.x + o.width / 2 - i.width / 2, u = o.y + o.height / 2 - i.height / 2, f = o[a] / 2 - i[a] / 2;
|
|
1422
1422
|
let p;
|
|
1423
1423
|
switch (l) {
|
|
1424
1424
|
case "top":
|
|
@@ -1470,8 +1470,8 @@ async function fr(s, e) {
|
|
|
1470
1470
|
elementContext: u = "floating",
|
|
1471
1471
|
altBoundary: f = !1,
|
|
1472
1472
|
padding: p = 0
|
|
1473
|
-
} = je(e, s), g =
|
|
1474
|
-
element: (t = await (r.isElement == null ? void 0 : r.isElement(
|
|
1473
|
+
} = je(e, s), g = xo(p), x = a[f ? u === "floating" ? "reference" : "floating" : u], v = Rt(await r.getClippingRect({
|
|
1474
|
+
element: (t = await (r.isElement == null ? void 0 : r.isElement(x))) == null || t ? x : x.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(a.floating)),
|
|
1475
1475
|
boundary: c,
|
|
1476
1476
|
rootBoundary: d,
|
|
1477
1477
|
strategy: l
|
|
@@ -1483,17 +1483,17 @@ async function fr(s, e) {
|
|
|
1483
1483
|
} : 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)) || {
|
|
1484
1484
|
x: 1,
|
|
1485
1485
|
y: 1
|
|
1486
|
-
},
|
|
1486
|
+
}, $ = Rt(r.convertOffsetParentRelativeRectToViewportRelativeRect ? await r.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
1487
1487
|
elements: a,
|
|
1488
1488
|
rect: _,
|
|
1489
1489
|
offsetParent: k,
|
|
1490
1490
|
strategy: l
|
|
1491
1491
|
}) : _);
|
|
1492
1492
|
return {
|
|
1493
|
-
top: (
|
|
1494
|
-
bottom: (
|
|
1495
|
-
left: (
|
|
1496
|
-
right: (
|
|
1493
|
+
top: (v.top - $.top + g.top) / P.y,
|
|
1494
|
+
bottom: ($.bottom - v.bottom + g.bottom) / P.y,
|
|
1495
|
+
left: (v.left - $.left + g.left) / P.x,
|
|
1496
|
+
right: ($.right - v.right + g.right) / P.x
|
|
1497
1497
|
};
|
|
1498
1498
|
}
|
|
1499
1499
|
const gr = 50, br = async (s, e, t) => {
|
|
@@ -1513,19 +1513,19 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1513
1513
|
}), {
|
|
1514
1514
|
x: d,
|
|
1515
1515
|
y: u
|
|
1516
|
-
} =
|
|
1516
|
+
} = Hs(c, o, l), f = o, p = 0;
|
|
1517
1517
|
const g = {};
|
|
1518
1518
|
for (let w = 0; w < r.length; w++) {
|
|
1519
|
-
const
|
|
1520
|
-
if (!
|
|
1519
|
+
const x = r[w];
|
|
1520
|
+
if (!x)
|
|
1521
1521
|
continue;
|
|
1522
1522
|
const {
|
|
1523
|
-
name:
|
|
1523
|
+
name: v,
|
|
1524
1524
|
fn: _
|
|
1525
|
-
} =
|
|
1525
|
+
} = x, {
|
|
1526
1526
|
x: k,
|
|
1527
1527
|
y: P,
|
|
1528
|
-
data:
|
|
1528
|
+
data: $,
|
|
1529
1529
|
reset: D
|
|
1530
1530
|
} = await _({
|
|
1531
1531
|
x: d,
|
|
@@ -1541,9 +1541,9 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1541
1541
|
floating: e
|
|
1542
1542
|
}
|
|
1543
1543
|
});
|
|
1544
|
-
d = k ?? d, u = P ?? u, g[
|
|
1545
|
-
...g[
|
|
1546
|
-
|
|
1544
|
+
d = k ?? d, u = P ?? u, g[v] = {
|
|
1545
|
+
...g[v],
|
|
1546
|
+
...$
|
|
1547
1547
|
}, D && p < gr && (p++, typeof D == "object" && (D.placement && (f = D.placement), D.rects && (c = D.rects === !0 ? await n.getElementRects({
|
|
1548
1548
|
reference: s,
|
|
1549
1549
|
floating: e,
|
|
@@ -1551,7 +1551,7 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1551
1551
|
}) : D.rects), {
|
|
1552
1552
|
x: d,
|
|
1553
1553
|
y: u
|
|
1554
|
-
} =
|
|
1554
|
+
} = Hs(c, f, l)), w = -1);
|
|
1555
1555
|
}
|
|
1556
1556
|
return {
|
|
1557
1557
|
x: d,
|
|
@@ -1578,13 +1578,13 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1578
1578
|
} = je(s, e) || {};
|
|
1579
1579
|
if (c == null)
|
|
1580
1580
|
return {};
|
|
1581
|
-
const u =
|
|
1581
|
+
const u = xo(d), f = {
|
|
1582
1582
|
x: t,
|
|
1583
1583
|
y: o
|
|
1584
|
-
}, p =
|
|
1584
|
+
}, p = xs(i), g = ys(p), w = await n.getDimensions(c), x = p === "y", v = x ? "top" : "left", _ = x ? "bottom" : "right", k = x ? "clientHeight" : "clientWidth", P = r.reference[g] + r.reference[p] - f[p] - r.floating[g], $ = f[p] - r.reference[p], D = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(c));
|
|
1585
1585
|
let j = D ? D[k] : 0;
|
|
1586
1586
|
(!j || !await (n.isElement == null ? void 0 : n.isElement(D))) && (j = a.floating[k] || r.floating[g]);
|
|
1587
|
-
const q = P / 2 -
|
|
1587
|
+
const q = P / 2 - $ / 2, V = j / 2 - w[g] / 2 - 1, S = be(u[v], V), M = be(u[_], V), z = j - w[g] - M, B = j / 2 - w[g] / 2 + q, T = wo(S, B, z), F = !l.arrow && Ge(i) != null && B !== T && r.reference[g] / 2 - (B < S ? S : M) - w[g] / 2 < 0, se = F ? B < S ? B - S : B - z : 0;
|
|
1588
1588
|
return {
|
|
1589
1589
|
[p]: f[p] + se,
|
|
1590
1590
|
data: {
|
|
@@ -1617,15 +1617,15 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1617
1617
|
fallbackStrategy: p = "bestFit",
|
|
1618
1618
|
fallbackAxisSideDirection: g = "none",
|
|
1619
1619
|
flipAlignment: w = !0,
|
|
1620
|
-
...
|
|
1620
|
+
...x
|
|
1621
1621
|
} = je(s, e);
|
|
1622
1622
|
if ((t = r.arrow) != null && t.alignmentOffset)
|
|
1623
1623
|
return {};
|
|
1624
|
-
const
|
|
1625
|
-
!f && D &&
|
|
1626
|
-
const j = [a,
|
|
1624
|
+
const v = Pe(i), _ = re(a), k = Pe(a) === a, P = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), $ = f || (k || !w ? [Dt(a)] : cr(a)), D = g !== "none";
|
|
1625
|
+
!f && D && $.push(...mr(a, w, g, P));
|
|
1626
|
+
const j = [a, ...$], q = await l.detectOverflow(e, x), V = [];
|
|
1627
1627
|
let S = ((o = r.flip) == null ? void 0 : o.overflows) || [];
|
|
1628
|
-
if (d && V.push(q[
|
|
1628
|
+
if (d && V.push(q[v]), u) {
|
|
1629
1629
|
const T = lr(i, n, P);
|
|
1630
1630
|
V.push(q[T[0]], q[T[1]]);
|
|
1631
1631
|
}
|
|
@@ -1633,7 +1633,7 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1633
1633
|
placement: i,
|
|
1634
1634
|
overflows: V
|
|
1635
1635
|
}], !V.every((T) => T <= 0)) {
|
|
1636
|
-
var M,
|
|
1636
|
+
var M, z;
|
|
1637
1637
|
const T = (((M = r.flip) == null ? void 0 : M.index) || 0) + 1, F = j[T];
|
|
1638
1638
|
if (F && (!(u === "alignment" ? _ !== re(F) : !1) || // We leave the current main axis only if every placement on that axis
|
|
1639
1639
|
// overflows the main axis.
|
|
@@ -1647,7 +1647,7 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1647
1647
|
placement: F
|
|
1648
1648
|
}
|
|
1649
1649
|
};
|
|
1650
|
-
let se = (
|
|
1650
|
+
let se = (z = S.filter((we) => we.overflows[0] <= 0).sort((we, J) => we.overflows[1] - J.overflows[1])[0]) == null ? void 0 : z.placement;
|
|
1651
1651
|
if (!se)
|
|
1652
1652
|
switch (p) {
|
|
1653
1653
|
case "bestFit": {
|
|
@@ -1757,20 +1757,20 @@ const _r = function(s) {
|
|
|
1757
1757
|
} = je(s, e), d = {
|
|
1758
1758
|
x: t,
|
|
1759
1759
|
y: o
|
|
1760
|
-
}, u = await r.detectOverflow(e, c), f = re(i), p =
|
|
1760
|
+
}, u = await r.detectOverflow(e, c), f = re(i), p = yo(f);
|
|
1761
1761
|
let g = d[p], w = d[f];
|
|
1762
|
-
const
|
|
1763
|
-
n && (g =
|
|
1764
|
-
const
|
|
1762
|
+
const x = (_, k) => wo(k + u[_ === "y" ? "top" : "left"], k, k - u[_ === "y" ? "bottom" : "right"]);
|
|
1763
|
+
n && (g = x(p, g)), a && (w = x(f, w));
|
|
1764
|
+
const v = l.fn({
|
|
1765
1765
|
...e,
|
|
1766
1766
|
[p]: g,
|
|
1767
1767
|
[f]: w
|
|
1768
1768
|
});
|
|
1769
1769
|
return {
|
|
1770
|
-
...
|
|
1770
|
+
...v,
|
|
1771
1771
|
data: {
|
|
1772
|
-
x:
|
|
1773
|
-
y:
|
|
1772
|
+
x: v.x - t,
|
|
1773
|
+
y: v.y - o,
|
|
1774
1774
|
enabled: {
|
|
1775
1775
|
[p]: n,
|
|
1776
1776
|
[f]: a
|
|
@@ -1799,9 +1799,9 @@ const _r = function(s) {
|
|
|
1799
1799
|
} = o.floating;
|
|
1800
1800
|
let g, w;
|
|
1801
1801
|
c === "top" || c === "bottom" ? (g = c, w = d === (await (i.isRTL == null ? void 0 : i.isRTL(r.floating)) ? "start" : "end") ? "left" : "right") : (w = c, g = d === "end" ? "top" : "bottom");
|
|
1802
|
-
const
|
|
1802
|
+
const x = p - l.top - l.bottom, v = f - l.left - l.right, _ = be(p - l[g], x), k = be(f - l[w], v), P = e.middlewareData.shift, $ = !P;
|
|
1803
1803
|
let D = _, j = k;
|
|
1804
|
-
P != null && P.enabled.x && (j =
|
|
1804
|
+
P != null && P.enabled.x && (j = v), P != null && P.enabled.y && (D = x), $ && !d && (u ? j = f - 2 * ne(l.left, l.right) : D = p - 2 * ne(l.top, l.bottom)), await n({
|
|
1805
1805
|
...e,
|
|
1806
1806
|
availableWidth: j,
|
|
1807
1807
|
availableHeight: D
|
|
@@ -1819,7 +1819,7 @@ function Ft() {
|
|
|
1819
1819
|
return typeof window < "u";
|
|
1820
1820
|
}
|
|
1821
1821
|
function Ue(s) {
|
|
1822
|
-
return
|
|
1822
|
+
return _o(s) ? (s.nodeName || "").toLowerCase() : "#document";
|
|
1823
1823
|
}
|
|
1824
1824
|
function U(s) {
|
|
1825
1825
|
var e;
|
|
@@ -1827,9 +1827,9 @@ function U(s) {
|
|
|
1827
1827
|
}
|
|
1828
1828
|
function le(s) {
|
|
1829
1829
|
var e;
|
|
1830
|
-
return (e = (
|
|
1830
|
+
return (e = (_o(s) ? s.ownerDocument : s.document) || window.document) == null ? void 0 : e.documentElement;
|
|
1831
1831
|
}
|
|
1832
|
-
function
|
|
1832
|
+
function _o(s) {
|
|
1833
1833
|
return Ft() ? s instanceof Node || s instanceof U(s).Node : !1;
|
|
1834
1834
|
}
|
|
1835
1835
|
function ee(s) {
|
|
@@ -1838,7 +1838,7 @@ function ee(s) {
|
|
|
1838
1838
|
function ve(s) {
|
|
1839
1839
|
return Ft() ? s instanceof HTMLElement || s instanceof U(s).HTMLElement : !1;
|
|
1840
1840
|
}
|
|
1841
|
-
function
|
|
1841
|
+
function Fs(s) {
|
|
1842
1842
|
return !Ft() || typeof ShadowRoot > "u" ? !1 : s instanceof ShadowRoot || s instanceof U(s).ShadowRoot;
|
|
1843
1843
|
}
|
|
1844
1844
|
function Kt(s) {
|
|
@@ -1867,14 +1867,14 @@ function Wt(s) {
|
|
|
1867
1867
|
}
|
|
1868
1868
|
const Tr = /transform|translate|scale|rotate|perspective|filter/, Ir = /paint|layout|strict|content/, ye = (s) => !!s && s !== "none";
|
|
1869
1869
|
let Xt;
|
|
1870
|
-
function
|
|
1870
|
+
function _s(s) {
|
|
1871
1871
|
const e = ee(s) ? te(s) : s;
|
|
1872
|
-
return ye(e.transform) || ye(e.translate) || ye(e.scale) || ye(e.rotate) || ye(e.perspective) || !
|
|
1872
|
+
return ye(e.transform) || ye(e.translate) || ye(e.scale) || ye(e.rotate) || ye(e.perspective) || !ks() && (ye(e.backdropFilter) || ye(e.filter)) || Tr.test(e.willChange || "") || Ir.test(e.contain || "");
|
|
1873
1873
|
}
|
|
1874
1874
|
function Or(s) {
|
|
1875
1875
|
let e = Me(s);
|
|
1876
1876
|
for (; ve(e) && !at(e); ) {
|
|
1877
|
-
if (
|
|
1877
|
+
if (_s(e))
|
|
1878
1878
|
return e;
|
|
1879
1879
|
if (Wt(e))
|
|
1880
1880
|
return null;
|
|
@@ -1882,7 +1882,7 @@ function Or(s) {
|
|
|
1882
1882
|
}
|
|
1883
1883
|
return null;
|
|
1884
1884
|
}
|
|
1885
|
-
function
|
|
1885
|
+
function ks() {
|
|
1886
1886
|
return Xt == null && (Xt = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), Xt;
|
|
1887
1887
|
}
|
|
1888
1888
|
function at(s) {
|
|
@@ -1907,19 +1907,19 @@ function Me(s) {
|
|
|
1907
1907
|
// Step into the shadow DOM of the parent of a slotted node.
|
|
1908
1908
|
s.assignedSlot || // DOM Element detected.
|
|
1909
1909
|
s.parentNode || // ShadowRoot detected.
|
|
1910
|
-
|
|
1910
|
+
Fs(s) && s.host || // Fallback.
|
|
1911
1911
|
le(s)
|
|
1912
1912
|
);
|
|
1913
|
-
return
|
|
1913
|
+
return Fs(e) ? e.host : e;
|
|
1914
1914
|
}
|
|
1915
|
-
function
|
|
1915
|
+
function ko(s) {
|
|
1916
1916
|
const e = Me(s);
|
|
1917
|
-
return at(e) ? (s.ownerDocument || s).body : ve(e) && Kt(e) ? e :
|
|
1917
|
+
return at(e) ? (s.ownerDocument || s).body : ve(e) && Kt(e) ? e : ko(e);
|
|
1918
1918
|
}
|
|
1919
1919
|
function lt(s, e, t) {
|
|
1920
1920
|
var o;
|
|
1921
1921
|
e === void 0 && (e = []), t === void 0 && (t = !0);
|
|
1922
|
-
const i =
|
|
1922
|
+
const i = ko(s), r = i === ((o = s.ownerDocument) == null ? void 0 : o.body), n = U(i);
|
|
1923
1923
|
if (r) {
|
|
1924
1924
|
const a = is(n);
|
|
1925
1925
|
return e.concat(n, n.visualViewport || [], Kt(i) ? i : [], a && t ? lt(a) : []);
|
|
@@ -1929,7 +1929,7 @@ function lt(s, e, t) {
|
|
|
1929
1929
|
function is(s) {
|
|
1930
1930
|
return s.parent && Object.getPrototypeOf(s.parent) ? s.frameElement : null;
|
|
1931
1931
|
}
|
|
1932
|
-
function
|
|
1932
|
+
function Co(s) {
|
|
1933
1933
|
const e = te(s);
|
|
1934
1934
|
let t = parseFloat(e.width) || 0, o = parseFloat(e.height) || 0;
|
|
1935
1935
|
const i = ve(s), r = i ? s.offsetWidth : t, n = i ? s.offsetHeight : o, a = Vt(t) !== r || Vt(o) !== n;
|
|
@@ -1939,18 +1939,18 @@ function ko(s) {
|
|
|
1939
1939
|
$: a
|
|
1940
1940
|
};
|
|
1941
1941
|
}
|
|
1942
|
-
function
|
|
1942
|
+
function Cs(s) {
|
|
1943
1943
|
return ee(s) ? s : s.contextElement;
|
|
1944
1944
|
}
|
|
1945
1945
|
function ze(s) {
|
|
1946
|
-
const e =
|
|
1946
|
+
const e = Cs(s);
|
|
1947
1947
|
if (!ve(e))
|
|
1948
1948
|
return ae(1);
|
|
1949
1949
|
const t = e.getBoundingClientRect(), {
|
|
1950
1950
|
width: o,
|
|
1951
1951
|
height: i,
|
|
1952
1952
|
$: r
|
|
1953
|
-
} =
|
|
1953
|
+
} = Co(e);
|
|
1954
1954
|
let n = (r ? Vt(t.width) : t.width) / o, a = (r ? Vt(t.height) : t.height) / i;
|
|
1955
1955
|
return (!n || !Number.isFinite(n)) && (n = 1), (!a || !Number.isFinite(a)) && (a = 1), {
|
|
1956
1956
|
x: n,
|
|
@@ -1958,9 +1958,9 @@ function ze(s) {
|
|
|
1958
1958
|
};
|
|
1959
1959
|
}
|
|
1960
1960
|
const Pr = /* @__PURE__ */ ae(0);
|
|
1961
|
-
function
|
|
1961
|
+
function So(s) {
|
|
1962
1962
|
const e = U(s);
|
|
1963
|
-
return !
|
|
1963
|
+
return !ks() || !e.visualViewport ? Pr : {
|
|
1964
1964
|
x: e.visualViewport.offsetLeft,
|
|
1965
1965
|
y: e.visualViewport.offsetTop
|
|
1966
1966
|
};
|
|
@@ -1970,17 +1970,17 @@ function Mr(s, e, t) {
|
|
|
1970
1970
|
}
|
|
1971
1971
|
function Le(s, e, t, o) {
|
|
1972
1972
|
e === void 0 && (e = !1), t === void 0 && (t = !1);
|
|
1973
|
-
const i = s.getBoundingClientRect(), r =
|
|
1973
|
+
const i = s.getBoundingClientRect(), r = Cs(s);
|
|
1974
1974
|
let n = ae(1);
|
|
1975
1975
|
e && (o ? ee(o) && (n = ze(o)) : n = ze(s));
|
|
1976
|
-
const a = Mr(r, t, o) ?
|
|
1976
|
+
const a = Mr(r, t, o) ? So(r) : ae(0);
|
|
1977
1977
|
let l = (i.left + a.x) / n.x, c = (i.top + a.y) / n.y, d = i.width / n.x, u = i.height / n.y;
|
|
1978
1978
|
if (r && o) {
|
|
1979
1979
|
const f = U(r), p = ee(o) ? U(o) : o;
|
|
1980
1980
|
let g = f, w = is(g);
|
|
1981
1981
|
for (; w && p !== g; ) {
|
|
1982
|
-
const
|
|
1983
|
-
l *=
|
|
1982
|
+
const x = ze(w), v = w.getBoundingClientRect(), _ = te(w), k = v.left + (w.clientLeft + parseFloat(_.paddingLeft)) * x.x, P = v.top + (w.clientTop + parseFloat(_.paddingTop)) * x.y;
|
|
1983
|
+
l *= x.x, c *= x.y, d *= x.x, u *= x.y, l += k, c += P, g = U(w), w = is(g);
|
|
1984
1984
|
}
|
|
1985
1985
|
}
|
|
1986
1986
|
return Rt({
|
|
@@ -1994,7 +1994,7 @@ function Gt(s, e) {
|
|
|
1994
1994
|
const t = jt(s).scrollLeft;
|
|
1995
1995
|
return e ? e.left + t : Le(le(s)).left + t;
|
|
1996
1996
|
}
|
|
1997
|
-
function
|
|
1997
|
+
function To(s, e) {
|
|
1998
1998
|
const t = s.getBoundingClientRect(), o = t.left + e.scrollLeft - Gt(s, t), i = t.top + e.scrollTop;
|
|
1999
1999
|
return {
|
|
2000
2000
|
x: o,
|
|
@@ -2020,7 +2020,7 @@ function Lr(s) {
|
|
|
2020
2020
|
const p = Le(o);
|
|
2021
2021
|
c = ze(o), d.x = p.x + o.clientLeft, d.y = p.y + o.clientTop;
|
|
2022
2022
|
}
|
|
2023
|
-
const f = n && !u && !r ?
|
|
2023
|
+
const f = n && !u && !r ? To(n, l) : ae(0);
|
|
2024
2024
|
return {
|
|
2025
2025
|
width: t.width * c.x,
|
|
2026
2026
|
height: t.height * c.y,
|
|
@@ -2048,12 +2048,12 @@ function Nr(s, e, t) {
|
|
|
2048
2048
|
const o = t === "layoutViewport", i = U(s), r = le(s), n = i.visualViewport;
|
|
2049
2049
|
let a = r.clientWidth, l = r.clientHeight, c = 0, d = 0;
|
|
2050
2050
|
if (n) {
|
|
2051
|
-
const f = !
|
|
2051
|
+
const f = !ks() || e === "fixed";
|
|
2052
2052
|
o ? f || (c = -n.offsetLeft, d = -n.offsetTop) : (a = n.width, l = n.height, f && (c = n.offsetLeft, d = n.offsetTop));
|
|
2053
2053
|
}
|
|
2054
2054
|
if (Gt(r) <= 0) {
|
|
2055
|
-
const f = r.ownerDocument, p = f.body, g = getComputedStyle(p), w = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0,
|
|
2056
|
-
|
|
2055
|
+
const f = r.ownerDocument, p = f.body, g = getComputedStyle(p), w = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0, x = Math.abs(r.clientWidth - p.clientWidth - w), v = getComputedStyle(r).scrollbarGutter === "stable both-edges" ? x / 2 : x;
|
|
2056
|
+
v <= zr && (a -= v);
|
|
2057
2057
|
}
|
|
2058
2058
|
return {
|
|
2059
2059
|
width: a,
|
|
@@ -2071,7 +2071,7 @@ function $r(s, e) {
|
|
|
2071
2071
|
y: c
|
|
2072
2072
|
};
|
|
2073
2073
|
}
|
|
2074
|
-
function
|
|
2074
|
+
function Ks(s, e, t) {
|
|
2075
2075
|
let o;
|
|
2076
2076
|
if (e === "viewport" || e === "layoutViewport")
|
|
2077
2077
|
o = Nr(s, t, e);
|
|
@@ -2080,7 +2080,7 @@ function Fs(s, e, t) {
|
|
|
2080
2080
|
else if (ee(e))
|
|
2081
2081
|
o = $r(e, t);
|
|
2082
2082
|
else {
|
|
2083
|
-
const i =
|
|
2083
|
+
const i = So(s);
|
|
2084
2084
|
o = {
|
|
2085
2085
|
x: e.x - i.x,
|
|
2086
2086
|
y: e.y - i.y,
|
|
@@ -2098,7 +2098,7 @@ function Vr(s, e) {
|
|
|
2098
2098
|
const r = te(s).position === "fixed";
|
|
2099
2099
|
let n = r ? Me(s) : s;
|
|
2100
2100
|
for (; ee(n) && !at(n); ) {
|
|
2101
|
-
const a = te(n), l =
|
|
2101
|
+
const a = te(n), l = _s(n), c = i ? i.position : r ? "fixed" : "";
|
|
2102
2102
|
!l && (c === "fixed" || c === "absolute" && a.position === "static") ? o = o.filter((u) => u !== n) : i = a, n = Me(n);
|
|
2103
2103
|
}
|
|
2104
2104
|
return e.set(s, o), o;
|
|
@@ -2110,10 +2110,10 @@ function Dr(s) {
|
|
|
2110
2110
|
rootBoundary: o,
|
|
2111
2111
|
strategy: i
|
|
2112
2112
|
} = s;
|
|
2113
|
-
const n = [...t === "clippingAncestors" ? Wt(e) ? [] : Vr(e, this._c) : [].concat(t), o], a =
|
|
2113
|
+
const n = [...t === "clippingAncestors" ? Wt(e) ? [] : Vr(e, this._c) : [].concat(t), o], a = Ks(e, n[0], i);
|
|
2114
2114
|
let l = a.top, c = a.right, d = a.bottom, u = a.left;
|
|
2115
2115
|
for (let f = 1; f < n.length; f++) {
|
|
2116
|
-
const p =
|
|
2116
|
+
const p = Ks(e, n[f], i);
|
|
2117
2117
|
l = ne(p.top, l), c = be(p.right, c), d = be(p.bottom, d), u = ne(p.left, u);
|
|
2118
2118
|
}
|
|
2119
2119
|
return {
|
|
@@ -2127,7 +2127,7 @@ function Rr(s) {
|
|
|
2127
2127
|
const {
|
|
2128
2128
|
width: e,
|
|
2129
2129
|
height: t
|
|
2130
|
-
} =
|
|
2130
|
+
} = Co(s);
|
|
2131
2131
|
return {
|
|
2132
2132
|
width: e,
|
|
2133
2133
|
height: t
|
|
@@ -2145,7 +2145,7 @@ function Br(s, e, t) {
|
|
|
2145
2145
|
l.x = f.x + e.clientLeft, l.y = f.y + e.clientTop;
|
|
2146
2146
|
}
|
|
2147
2147
|
!o && i && (l.x = Gt(i));
|
|
2148
|
-
const c = i && !o && !r ?
|
|
2148
|
+
const c = i && !o && !r ? To(i, a) : ae(0), d = n.left + a.scrollLeft - l.x - c.x, u = n.top + a.scrollTop - l.y - c.y;
|
|
2149
2149
|
return {
|
|
2150
2150
|
x: d,
|
|
2151
2151
|
y: u,
|
|
@@ -2156,7 +2156,7 @@ function Br(s, e, t) {
|
|
|
2156
2156
|
function Jt(s) {
|
|
2157
2157
|
return te(s).position === "static";
|
|
2158
2158
|
}
|
|
2159
|
-
function
|
|
2159
|
+
function Ws(s, e) {
|
|
2160
2160
|
if (!ve(s) || te(s).position === "fixed")
|
|
2161
2161
|
return null;
|
|
2162
2162
|
if (e)
|
|
@@ -2164,7 +2164,7 @@ function Ks(s, e) {
|
|
|
2164
2164
|
let t = s.offsetParent;
|
|
2165
2165
|
return le(s) === t && (t = t.ownerDocument.body), t;
|
|
2166
2166
|
}
|
|
2167
|
-
function
|
|
2167
|
+
function Io(s, e) {
|
|
2168
2168
|
const t = U(s);
|
|
2169
2169
|
if (Wt(s))
|
|
2170
2170
|
return t;
|
|
@@ -2177,13 +2177,13 @@ function To(s, e) {
|
|
|
2177
2177
|
}
|
|
2178
2178
|
return t;
|
|
2179
2179
|
}
|
|
2180
|
-
let o =
|
|
2180
|
+
let o = Ws(s, e);
|
|
2181
2181
|
for (; o && Sr(o) && Jt(o); )
|
|
2182
|
-
o =
|
|
2183
|
-
return o && at(o) && Jt(o) && !
|
|
2182
|
+
o = Ws(o, e);
|
|
2183
|
+
return o && at(o) && Jt(o) && !_s(o) ? t : o || Or(s) || t;
|
|
2184
2184
|
}
|
|
2185
2185
|
const Hr = async function(s) {
|
|
2186
|
-
const e = this.getOffsetParent ||
|
|
2186
|
+
const e = this.getOffsetParent || Io, t = this.getDimensions, o = await t(s.floating);
|
|
2187
2187
|
return {
|
|
2188
2188
|
reference: Br(s.reference, await e(s.floating), s.strategy),
|
|
2189
2189
|
floating: {
|
|
@@ -2197,11 +2197,11 @@ const Hr = async function(s) {
|
|
|
2197
2197
|
function Fr(s) {
|
|
2198
2198
|
return te(s).direction === "rtl";
|
|
2199
2199
|
}
|
|
2200
|
-
const
|
|
2200
|
+
const Oo = {
|
|
2201
2201
|
convertOffsetParentRelativeRectToViewportRelativeRect: Lr,
|
|
2202
2202
|
getDocumentElement: le,
|
|
2203
2203
|
getClippingRect: Dr,
|
|
2204
|
-
getOffsetParent:
|
|
2204
|
+
getOffsetParent: Io,
|
|
2205
2205
|
getElementRects: Hr,
|
|
2206
2206
|
getClientRects: Er,
|
|
2207
2207
|
getDimensions: Rr,
|
|
@@ -2209,7 +2209,7 @@ const Io = {
|
|
|
2209
2209
|
isElement: ee,
|
|
2210
2210
|
isRTL: Fr
|
|
2211
2211
|
};
|
|
2212
|
-
function
|
|
2212
|
+
function Po(s, e) {
|
|
2213
2213
|
return s.x === e.x && s.y === e.y && s.width === e.width && s.height === e.height;
|
|
2214
2214
|
}
|
|
2215
2215
|
function Kr(s, e, t) {
|
|
@@ -2225,18 +2225,18 @@ function Kr(s, e, t) {
|
|
|
2225
2225
|
left: p,
|
|
2226
2226
|
top: g,
|
|
2227
2227
|
width: w,
|
|
2228
|
-
height:
|
|
2228
|
+
height: x
|
|
2229
2229
|
} = f;
|
|
2230
|
-
if (d || e(), !w || !
|
|
2230
|
+
if (d || e(), !w || !x)
|
|
2231
2231
|
return;
|
|
2232
|
-
const
|
|
2233
|
-
rootMargin: -
|
|
2232
|
+
const v = vt(g), _ = vt(r.clientWidth - (p + w)), k = vt(r.clientHeight - (g + x)), P = vt(p), D = {
|
|
2233
|
+
rootMargin: -v + "px " + -_ + "px " + -k + "px " + -P + "px",
|
|
2234
2234
|
threshold: ne(0, be(1, u)) || 1
|
|
2235
2235
|
};
|
|
2236
2236
|
let j = !0;
|
|
2237
2237
|
function q(V) {
|
|
2238
2238
|
const S = V[0].intersectionRatio;
|
|
2239
|
-
if (!
|
|
2239
|
+
if (!Po(f, s.getBoundingClientRect()))
|
|
2240
2240
|
return a();
|
|
2241
2241
|
if (S !== u) {
|
|
2242
2242
|
if (!j)
|
|
@@ -2271,35 +2271,35 @@ function Wr(s, e, t, o) {
|
|
|
2271
2271
|
elementResize: n = typeof ResizeObserver == "function",
|
|
2272
2272
|
layoutShift: a = typeof IntersectionObserver == "function",
|
|
2273
2273
|
animationFrame: l = !1
|
|
2274
|
-
} = o, c =
|
|
2275
|
-
d.forEach((
|
|
2276
|
-
i &&
|
|
2274
|
+
} = o, c = Cs(s), d = i || r ? [...c ? lt(c) : [], ...e ? lt(e) : []] : [];
|
|
2275
|
+
d.forEach((v) => {
|
|
2276
|
+
i && v.addEventListener("scroll", t), r && v.addEventListener("resize", t);
|
|
2277
2277
|
});
|
|
2278
2278
|
const u = c && a ? Kr(c, t, r) : null;
|
|
2279
2279
|
let f = -1, p = null;
|
|
2280
|
-
n && (p = new ResizeObserver((
|
|
2281
|
-
let [_] =
|
|
2280
|
+
n && (p = new ResizeObserver((v) => {
|
|
2281
|
+
let [_] = v;
|
|
2282
2282
|
_ && _.target === c && p && e && (p.unobserve(e), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
|
|
2283
2283
|
var k;
|
|
2284
2284
|
(k = p) == null || k.observe(e);
|
|
2285
2285
|
})), t();
|
|
2286
2286
|
}), c && !l && p.observe(c), e && p.observe(e));
|
|
2287
2287
|
let g, w = l ? Le(s) : null;
|
|
2288
|
-
l &&
|
|
2289
|
-
function
|
|
2290
|
-
const
|
|
2291
|
-
w && !
|
|
2288
|
+
l && x();
|
|
2289
|
+
function x() {
|
|
2290
|
+
const v = Le(s);
|
|
2291
|
+
w && !Po(w, v) && t(), w = v, g = requestAnimationFrame(x);
|
|
2292
2292
|
}
|
|
2293
2293
|
return t(), () => {
|
|
2294
|
-
var
|
|
2294
|
+
var v;
|
|
2295
2295
|
d.forEach((_) => {
|
|
2296
2296
|
i && _.removeEventListener("scroll", t), r && _.removeEventListener("resize", t);
|
|
2297
|
-
}), u == null || u(), (
|
|
2297
|
+
}), u == null || u(), (v = p) == null || v.disconnect(), p = null, l && cancelAnimationFrame(g);
|
|
2298
2298
|
};
|
|
2299
2299
|
}
|
|
2300
2300
|
const jr = _r, Gr = kr, Ur = wr, Yt = Cr, qr = vr, Xr = (s, e, t) => {
|
|
2301
2301
|
const o = /* @__PURE__ */ new Map(), i = t ?? {}, r = {
|
|
2302
|
-
...
|
|
2302
|
+
...Oo,
|
|
2303
2303
|
...i.platform,
|
|
2304
2304
|
_c: o
|
|
2305
2305
|
};
|
|
@@ -2339,7 +2339,7 @@ function Yr(s, e, t) {
|
|
|
2339
2339
|
}
|
|
2340
2340
|
return null;
|
|
2341
2341
|
}
|
|
2342
|
-
function
|
|
2342
|
+
function Mo(s) {
|
|
2343
2343
|
const e = getComputedStyle(s), t = [];
|
|
2344
2344
|
e.transform !== "none" && t.push(`transform: ${e.transform}`), e.perspective !== "none" && t.push(`perspective: ${e.perspective}`), e.filter !== "none" && t.push(`filter: ${e.filter}`);
|
|
2345
2345
|
const o = e.backdropFilter;
|
|
@@ -2367,7 +2367,7 @@ function Qr(s) {
|
|
|
2367
2367
|
driftY: n,
|
|
2368
2368
|
culprit: a,
|
|
2369
2369
|
culpritDescription: a ? Zr(a) : "an ancestor element (could not auto-identify)",
|
|
2370
|
-
culpritCss: a ?
|
|
2370
|
+
culpritCss: a ? Mo(a) : ""
|
|
2371
2371
|
};
|
|
2372
2372
|
}
|
|
2373
2373
|
function en(s, e) {
|
|
@@ -2382,7 +2382,7 @@ function sn(s, e, t) {
|
|
|
2382
2382
|
const o = e.split("-")[0], i = tn[o];
|
|
2383
2383
|
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`;
|
|
2384
2384
|
}
|
|
2385
|
-
function
|
|
2385
|
+
function js(s, e) {
|
|
2386
2386
|
const t = [jr(s.offset ?? 4)];
|
|
2387
2387
|
if (s.matchWidth) {
|
|
2388
2388
|
const i = s.matchWidth;
|
|
@@ -2421,21 +2421,21 @@ function Ws(s, e) {
|
|
|
2421
2421
|
function ot(s, e, t = {}) {
|
|
2422
2422
|
const o = t.strategy ?? "fixed";
|
|
2423
2423
|
t.inheritThemeFrom && en(t.inheritThemeFrom, s), s.style.position = o, s.style.left = "0", s.style.top = "0";
|
|
2424
|
-
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n =
|
|
2424
|
+
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n = js(t, r);
|
|
2425
2425
|
const a = t.lockPlacement === "freeze";
|
|
2426
2426
|
let l = !1;
|
|
2427
|
-
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...
|
|
2427
|
+
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...Oo, getOffsetParent: () => ns(s) } : void 0), u = () => {
|
|
2428
2428
|
var p;
|
|
2429
2429
|
(p = t.beforeCompute) == null || p.call(t), Xr(e, s, {
|
|
2430
2430
|
placement: i,
|
|
2431
2431
|
strategy: o,
|
|
2432
2432
|
middleware: n,
|
|
2433
2433
|
...d ? { platform: d } : {}
|
|
2434
|
-
}).then(({ x: g, y: w, placement:
|
|
2434
|
+
}).then(({ x: g, y: w, placement: x, middlewareData: v }) => {
|
|
2435
2435
|
var _, k;
|
|
2436
|
-
if (s.style.left = `${g}px`, s.style.top = `${w}px`, t.arrow && sn(t.arrow.element,
|
|
2437
|
-
const P = c ? ns(s) : window,
|
|
2438
|
-
|
|
2436
|
+
if (s.style.left = `${g}px`, s.style.top = `${w}px`, t.arrow && sn(t.arrow.element, x, v.arrow), a && !l && (l = !0, i = x, r = !1, n = js(t, !1)), (_ = t.onPlaced) == null || _.call(t, x), (k = t.onComputed) == null || k.call(t, { x: g, y: w, placement: x }), t.onDrift && e instanceof Element) {
|
|
2437
|
+
const P = c ? ns(s) : window, $ = Qr({ panel: s, reference: e, expectedX: g, expectedY: w, offsetParent: P });
|
|
2438
|
+
$ && t.onDrift($);
|
|
2439
2439
|
}
|
|
2440
2440
|
});
|
|
2441
2441
|
};
|
|
@@ -2475,12 +2475,12 @@ function rn(s) {
|
|
|
2475
2475
|
}), s.followCursor && s.trigger.addEventListener("mousemove", f), r.classList.add(o);
|
|
2476
2476
|
}, w = () => {
|
|
2477
2477
|
p(), a && (a = !1, r.classList.remove(o), s.followCursor && s.trigger.removeEventListener("mousemove", f), n == null || n.destroy(), n = void 0, r.remove());
|
|
2478
|
-
},
|
|
2478
|
+
}, x = () => {
|
|
2479
2479
|
p(), i.show > 0 ? l = setTimeout(g, i.show) : g();
|
|
2480
|
-
},
|
|
2480
|
+
}, v = () => {
|
|
2481
2481
|
p(), i.hide > 0 ? c = setTimeout(w, i.hide) : w();
|
|
2482
2482
|
};
|
|
2483
|
-
return s.trigger.addEventListener("mouseenter",
|
|
2483
|
+
return s.trigger.addEventListener("mouseenter", x), s.trigger.addEventListener("mouseleave", v), s.trigger.addEventListener("focusin", x), s.trigger.addEventListener("focusout", v), {
|
|
2484
2484
|
element: r,
|
|
2485
2485
|
get isVisible() {
|
|
2486
2486
|
return a;
|
|
@@ -2488,7 +2488,7 @@ function rn(s) {
|
|
|
2488
2488
|
show: g,
|
|
2489
2489
|
hide: w,
|
|
2490
2490
|
destroy() {
|
|
2491
|
-
s.trigger.removeEventListener("mouseenter",
|
|
2491
|
+
s.trigger.removeEventListener("mouseenter", x), s.trigger.removeEventListener("mouseleave", v), s.trigger.removeEventListener("focusin", x), s.trigger.removeEventListener("focusout", v), w();
|
|
2492
2492
|
}
|
|
2493
2493
|
};
|
|
2494
2494
|
}
|
|
@@ -2527,7 +2527,7 @@ function nn(s) {
|
|
|
2527
2527
|
}
|
|
2528
2528
|
};
|
|
2529
2529
|
}
|
|
2530
|
-
const
|
|
2530
|
+
const Lo = ["INIT", "DATA", "UI", "INTERACTION"], ce = nr("MULTISELECT", Lo), wt = ce.loggers.INIT, W = ce.loggers.DATA, Y = ce.loggers.UI, R = ce.loggers.INTERACTION, Tn = Lo.map((s) => `MULTISELECT:${s}`);
|
|
2531
2531
|
function In() {
|
|
2532
2532
|
ce.enableLogging();
|
|
2533
2533
|
}
|
|
@@ -2541,7 +2541,7 @@ function Mn(s, e) {
|
|
|
2541
2541
|
const t = s.includes(":") ? s.split(":").pop() : s;
|
|
2542
2542
|
ce.setCategoryLevel(t, e);
|
|
2543
2543
|
}
|
|
2544
|
-
class
|
|
2544
|
+
class Gs {
|
|
2545
2545
|
constructor(e) {
|
|
2546
2546
|
m(this, "container");
|
|
2547
2547
|
m(this, "wrapper");
|
|
@@ -2673,7 +2673,7 @@ class js {
|
|
|
2673
2673
|
this.container.removeEventListener("scroll", this.scrollHandler), this.resizeObserver && this.resizeObserver.disconnect(), this.container.innerHTML = "";
|
|
2674
2674
|
}
|
|
2675
2675
|
}
|
|
2676
|
-
function
|
|
2676
|
+
function Us(s) {
|
|
2677
2677
|
return {
|
|
2678
2678
|
treeId: "",
|
|
2679
2679
|
id: -1,
|
|
@@ -2694,10 +2694,10 @@ function an(s, e = ".") {
|
|
|
2694
2694
|
const t = s.lastIndexOf(e);
|
|
2695
2695
|
return t === -1 ? "" : s.substring(0, t);
|
|
2696
2696
|
}
|
|
2697
|
-
function
|
|
2697
|
+
function qs(s, e, t = ".") {
|
|
2698
2698
|
return st(e) ? s : s.startsWith(e + t) ? s.substring(e.length + t.length) : s;
|
|
2699
2699
|
}
|
|
2700
|
-
function
|
|
2700
|
+
function Xs(s, e = 0, t = 1, o = ".") {
|
|
2701
2701
|
return s.split(o).slice(e, e + t).join(o);
|
|
2702
2702
|
}
|
|
2703
2703
|
function ln(s, e) {
|
|
@@ -2707,10 +2707,10 @@ function he(s, e) {
|
|
|
2707
2707
|
return s[e];
|
|
2708
2708
|
}
|
|
2709
2709
|
function cn(s = {}) {
|
|
2710
|
-
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, u = s.getDisplayValueCallback, f = st(i), p = st(r), g = st(n), w = st(a),
|
|
2710
|
+
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, u = s.getDisplayValueCallback, f = st(i), p = st(r), g = st(n), w = st(a), x = "x", v = s.treePathSeparator || ".", _ = Us();
|
|
2711
2711
|
let k = 0, P = null;
|
|
2712
|
-
const
|
|
2713
|
-
treePathSeparator:
|
|
2712
|
+
const $ = (V) => o ? o(V) : t ? he(V, t) : void 0, D = {
|
|
2713
|
+
treePathSeparator: v,
|
|
2714
2714
|
root: _,
|
|
2715
2715
|
get tree() {
|
|
2716
2716
|
return Object.values(_.children);
|
|
@@ -2722,38 +2722,38 @@ function cn(s = {}) {
|
|
|
2722
2722
|
get flatNodes() {
|
|
2723
2723
|
if (P) return P;
|
|
2724
2724
|
const V = [], S = s.isSorted ?? !1, M = s.sortCallback;
|
|
2725
|
-
function
|
|
2725
|
+
function z(B) {
|
|
2726
2726
|
let T = Object.values(B.children);
|
|
2727
2727
|
S && M && T.length > 0 && (T = M(T));
|
|
2728
2728
|
for (const F of T)
|
|
2729
|
-
V.push(F), F.hasChildren &&
|
|
2729
|
+
V.push(F), F.hasChildren && z(F);
|
|
2730
2730
|
}
|
|
2731
|
-
return
|
|
2731
|
+
return z(_), P = V, V;
|
|
2732
2732
|
},
|
|
2733
2733
|
insertArray(V) {
|
|
2734
2734
|
V = V || [], _.children = {}, k = 0, P = null;
|
|
2735
2735
|
const S = [];
|
|
2736
|
-
let M = V.map((
|
|
2737
|
-
const T =
|
|
2738
|
-
T.treeId = c, T.id = e ? he(
|
|
2739
|
-
const F =
|
|
2740
|
-
return F == null || F === "" || typeof F != "string" ? (S.push(`index ${B}`), null) : (T.path = F, (T.id === void 0 || T.id === -1) && (T.id = F), f ? T.parentPath = an(T.path,
|
|
2741
|
-
|
|
2736
|
+
let M = V.map((z, B) => {
|
|
2737
|
+
const T = Us();
|
|
2738
|
+
T.treeId = c, T.id = e ? he(z, e) : void 0;
|
|
2739
|
+
const F = $(z);
|
|
2740
|
+
return F == null || F === "" || typeof F != "string" ? (S.push(`index ${B}`), null) : (T.path = F, (T.id === void 0 || T.id === -1) && (T.id = F), f ? T.parentPath = an(T.path, v) : T.parentPath = he(z, i), T.pathSegment = Xs(
|
|
2741
|
+
qs(T.path, T.parentPath ?? "", v),
|
|
2742
2742
|
0,
|
|
2743
2743
|
1,
|
|
2744
|
-
|
|
2745
|
-
), p ? T.level = ln(T.path,
|
|
2746
|
-
}).filter((
|
|
2744
|
+
v
|
|
2745
|
+
), p ? T.level = ln(T.path, v) : T.level = he(z, r), g || (T.hasChildren = he(z, n)), T.data = z, T);
|
|
2746
|
+
}).filter((z) => z !== null);
|
|
2747
2747
|
s.isSorted || (s.sortCallback ? M = s.sortCallback(M) : M = q(M));
|
|
2748
|
-
for (const
|
|
2749
|
-
j(
|
|
2748
|
+
for (const z of M)
|
|
2749
|
+
j(z.parentPath ?? "", z);
|
|
2750
2750
|
if (l || !w)
|
|
2751
|
-
for (const
|
|
2751
|
+
for (const z of M)
|
|
2752
2752
|
if (l)
|
|
2753
|
-
|
|
2753
|
+
z.isSelectable = l(z) !== !1;
|
|
2754
2754
|
else {
|
|
2755
|
-
const B = he(
|
|
2756
|
-
|
|
2755
|
+
const B = he(z.data, a);
|
|
2756
|
+
z.isSelectable = B == null ? !0 : !!B;
|
|
2757
2757
|
}
|
|
2758
2758
|
S.length > 0 && console.warn(
|
|
2759
2759
|
`[ltree ${c}] ${S.length} option(s) had an invalid path and were skipped (pathMember="${t}"). Offending: ${S.slice(0, 5).join(", ")}` + (S.length > 5 ? ", …" : "")
|
|
@@ -2762,9 +2762,9 @@ function cn(s = {}) {
|
|
|
2762
2762
|
getNodeByPath(V, S) {
|
|
2763
2763
|
let M = S || _;
|
|
2764
2764
|
if (V) {
|
|
2765
|
-
const
|
|
2766
|
-
for (let B = 0; B <
|
|
2767
|
-
const T =
|
|
2765
|
+
const z = V.split(v);
|
|
2766
|
+
for (let B = 0; B < z.length; B++) {
|
|
2767
|
+
const T = x + z[B];
|
|
2768
2768
|
if (!M.children.hasOwnProperty(T))
|
|
2769
2769
|
return null;
|
|
2770
2770
|
M = M.children[T];
|
|
@@ -2778,13 +2778,13 @@ function cn(s = {}) {
|
|
|
2778
2778
|
if (!M)
|
|
2779
2779
|
return `Node: ${S.path} - Could not find parent node: ${V}`;
|
|
2780
2780
|
p && (S.level = (M.level || 0) + 1);
|
|
2781
|
-
const
|
|
2782
|
-
return M.children.hasOwnProperty(
|
|
2781
|
+
const z = x + Xs(qs(S.path, V, v), 0, 1, v);
|
|
2782
|
+
return M.children.hasOwnProperty(z) || (M.children[z] = S, g && !M.hasChildren && (M.hasChildren = !0), k = Math.max(k, S.level || 0)), null;
|
|
2783
2783
|
}
|
|
2784
2784
|
function q(V) {
|
|
2785
2785
|
return V.sort((S, M) => {
|
|
2786
|
-
const
|
|
2787
|
-
if (
|
|
2786
|
+
const z = S.level || 0, B = M.level || 0;
|
|
2787
|
+
if (z !== B) return z - B;
|
|
2788
2788
|
if (S.parentPath !== M.parentPath)
|
|
2789
2789
|
return S.parentPath ? M.parentPath ? S.parentPath.localeCompare(M.parentPath) : 1 : -1;
|
|
2790
2790
|
if (d && S.data && M.data) {
|
|
@@ -2796,7 +2796,7 @@ function cn(s = {}) {
|
|
|
2796
2796
|
}
|
|
2797
2797
|
return D;
|
|
2798
2798
|
}
|
|
2799
|
-
function
|
|
2799
|
+
function Js(s, e) {
|
|
2800
2800
|
const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), r = (l) => String(e(l.data)), n = (l) => {
|
|
2801
2801
|
t.set(r(l), l);
|
|
2802
2802
|
const c = [];
|
|
@@ -2808,7 +2808,7 @@ function Xs(s, e) {
|
|
|
2808
2808
|
for (const l of a) n(l);
|
|
2809
2809
|
return { nodeByValue: t, atomsUnder: o, atomPaths: i, roots: a };
|
|
2810
2810
|
}
|
|
2811
|
-
function
|
|
2811
|
+
function Ss(s, e, t) {
|
|
2812
2812
|
const o = s.atomsUnder.get(e.path);
|
|
2813
2813
|
if (!o || o.length === 0) return "unchecked";
|
|
2814
2814
|
let i = 0;
|
|
@@ -2825,7 +2825,7 @@ function Qe(s, e) {
|
|
|
2825
2825
|
return t;
|
|
2826
2826
|
}
|
|
2827
2827
|
function dn(s, e, t) {
|
|
2828
|
-
const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r =
|
|
2828
|
+
const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r = Ss(s, e, t), n = [], a = [];
|
|
2829
2829
|
if (r === "checked")
|
|
2830
2830
|
for (const l of o) i.delete(l) && a.push(l);
|
|
2831
2831
|
else
|
|
@@ -2834,7 +2834,7 @@ function dn(s, e, t) {
|
|
|
2834
2834
|
}
|
|
2835
2835
|
function Zt(s, e, t, o) {
|
|
2836
2836
|
const i = (a) => String(o(a.data)), r = [], n = (a) => {
|
|
2837
|
-
const l =
|
|
2837
|
+
const l = Ss(s, a, e);
|
|
2838
2838
|
if (l === "unchecked") return;
|
|
2839
2839
|
const c = a.isSelectable !== !1, d = Object.values(a.children);
|
|
2840
2840
|
if (t === "leaves") {
|
|
@@ -2856,7 +2856,7 @@ function Zt(s, e, t, o) {
|
|
|
2856
2856
|
for (const a of s.roots) n(a);
|
|
2857
2857
|
return r;
|
|
2858
2858
|
}
|
|
2859
|
-
var
|
|
2859
|
+
var N;
|
|
2860
2860
|
class hn {
|
|
2861
2861
|
constructor(e, t = {}) {
|
|
2862
2862
|
m(this, "element");
|
|
@@ -2865,7 +2865,7 @@ class hn {
|
|
|
2865
2865
|
// Backing field for the open state. Read/written internally via `this.#isOpen`
|
|
2866
2866
|
// so the public `isOpen` accessor (get/set) can drive open()/close() without
|
|
2867
2867
|
// recursing. See the imperative API at the bottom of the class.
|
|
2868
|
-
L(this,
|
|
2868
|
+
L(this, N, !1);
|
|
2869
2869
|
m(this, "selectedValues", /* @__PURE__ */ new Set());
|
|
2870
2870
|
m(this, "selectedOptions", /* @__PURE__ */ new Map());
|
|
2871
2871
|
m(this, "allOptions", []);
|
|
@@ -3264,7 +3264,7 @@ class hn {
|
|
|
3264
3264
|
treePathSeparator: this.options.treePathSeparator,
|
|
3265
3265
|
treeId: this.instanceId,
|
|
3266
3266
|
getDisplayValueCallback: (e) => this.getItemDisplayValue(e.data)
|
|
3267
|
-
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ?
|
|
3267
|
+
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ? Js(this.tree, (e) => String(this.getItemValue(e))) : null, this.rebuildTreeVisible();
|
|
3268
3268
|
}
|
|
3269
3269
|
/**
|
|
3270
3270
|
* Whether cascade checkbox mode is active: a multi-select tree with
|
|
@@ -3466,7 +3466,7 @@ class hn {
|
|
|
3466
3466
|
t.className = "ms__input-wrapper", this.inputWrapper = t, this.input = document.createElement("input"), this.input.type = "text", this.input.className = "ms__input", this.input.placeholder = this.getPlaceholderText(), this.input.autocomplete = "off", this.options.searchInputMode === "readonly" ? this.input.readOnly = !0 : this.options.searchInputMode === "hidden" && (this.input.style.visibility = "hidden");
|
|
3467
3467
|
const o = document.createElement("span");
|
|
3468
3468
|
o.className = "ms__toggle", o.addEventListener("mousedown", (n) => {
|
|
3469
|
-
n.preventDefault(), n.stopPropagation(), h(this,
|
|
3469
|
+
n.preventDefault(), n.stopPropagation(), h(this, N) ? (this.justClosedViaClick = !0, this.close(), setTimeout(() => {
|
|
3470
3470
|
this.justClosedViaClick = !1;
|
|
3471
3471
|
}, 0)) : (this.open(), this.presentationMode !== "fullscreen" && this.input.focus());
|
|
3472
3472
|
}), this.counter = document.createElement("span"), this.counter.className = "ms__counter", this.counter.style.display = "none", this.clearButton = document.createElement("button"), this.clearButton.type = "button", this.clearButton.className = "ms__input-clear", this.clearButton.tabIndex = -1, this.clearButton.setAttribute("aria-label", "Clear selection"), this.clearButton.style.display = "none", this.clearButton.addEventListener("mousedown", (n) => n.preventDefault()), this.clearButton.addEventListener("click", (n) => {
|
|
@@ -3599,26 +3599,26 @@ class hn {
|
|
|
3599
3599
|
const d = this.isGroupCascadeActive();
|
|
3600
3600
|
Object.keys(l).forEach((u) => {
|
|
3601
3601
|
if (t += '<div class="ms__group">', u !== "__ungrouped__") {
|
|
3602
|
-
const f = ` data-group="${this.escapeHtml(u)}"`, p = d ? ' data-group-select="cascade"' : "", g = this.groupSelectionInfo(l[u]), w = d ? this.groupCheckboxHtml(g.checkState) : "",
|
|
3602
|
+
const f = ` data-group="${this.escapeHtml(u)}"`, p = d ? ' data-group-select="cascade"' : "", g = this.groupSelectionInfo(l[u]), w = d ? this.groupCheckboxHtml(g.checkState) : "", x = d ? "ms__group-label ms__group-label--selectable" : "ms__group-label";
|
|
3603
3603
|
if (this.options.renderGroupLabelContentCallback) {
|
|
3604
|
-
const
|
|
3604
|
+
const v = {
|
|
3605
3605
|
...Xe(this.presentationMode),
|
|
3606
3606
|
groupName: u,
|
|
3607
3607
|
...g
|
|
3608
|
-
}, _ = this.options.renderGroupLabelContentCallback(u,
|
|
3608
|
+
}, _ = this.options.renderGroupLabelContentCallback(u, v);
|
|
3609
3609
|
if (_ instanceof HTMLElement) {
|
|
3610
3610
|
const k = document.createElement("div");
|
|
3611
|
-
if (k.className =
|
|
3611
|
+
if (k.className = x, k.dataset.group = u, d) {
|
|
3612
3612
|
k.dataset.groupSelect = "cascade";
|
|
3613
3613
|
const P = document.createElement("template");
|
|
3614
3614
|
P.innerHTML = w, P.content.firstChild && k.appendChild(P.content.firstChild);
|
|
3615
3615
|
}
|
|
3616
3616
|
k.appendChild(_), t += k.outerHTML;
|
|
3617
3617
|
} else
|
|
3618
|
-
t += `<div class="${
|
|
3618
|
+
t += `<div class="${x}"${f}${p}>${w}${_}</div>`;
|
|
3619
3619
|
} else {
|
|
3620
|
-
const
|
|
3621
|
-
t += `<div class="${_}"${f}${p}>${w}${this.escapeHtml(u)}${
|
|
3620
|
+
const v = this.groupCountHtml(g.selectedCount, g.memberCount), _ = v ? `${x} ms__group-label--has-count` : x;
|
|
3621
|
+
t += `<div class="${_}"${f}${p}>${w}${this.escapeHtml(u)}${v}</div>`;
|
|
3622
3622
|
}
|
|
3623
3623
|
}
|
|
3624
3624
|
l[u].forEach((f) => {
|
|
@@ -3687,7 +3687,7 @@ class hn {
|
|
|
3687
3687
|
}
|
|
3688
3688
|
const e = this.scaledOptionHeight(), t = this.options.virtualScrollBuffer ?? 10;
|
|
3689
3689
|
requestAnimationFrame(() => {
|
|
3690
|
-
this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new
|
|
3690
|
+
this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new Gs({
|
|
3691
3691
|
container: this.optionsContainer,
|
|
3692
3692
|
itemHeight: e,
|
|
3693
3693
|
items: this.filteredOptions,
|
|
@@ -3722,13 +3722,13 @@ class hn {
|
|
|
3722
3722
|
let p;
|
|
3723
3723
|
d.getIsDisabledCallback ? p = d.getIsDisabledCallback(this) : d.isDisabled !== void 0 ? p = d.isDisabled : p = this.getBuiltInActionDisabled(d.action);
|
|
3724
3724
|
const g = p ? " disabled" : "", w = d.getTextCallback ? d.getTextCallback(this) : d.text;
|
|
3725
|
-
let
|
|
3725
|
+
let x = "";
|
|
3726
3726
|
if (d.getClassCallback) {
|
|
3727
3727
|
const k = this.classSuffix(d.getClassCallback(this));
|
|
3728
|
-
k && (
|
|
3729
|
-
} else d.cssClass && (
|
|
3730
|
-
const
|
|
3731
|
-
l.has(
|
|
3728
|
+
k && (x = ` ${k}`);
|
|
3729
|
+
} else d.cssClass && (x = ` ${d.cssClass}`);
|
|
3730
|
+
const v = Math.max(1, Math.floor(d.row ?? 1)), _ = `<button type="button"${g} class="ms__action-btn${x}" data-action="${d.action}" data-button-index="${u}">${w}</button>`;
|
|
3731
|
+
l.has(v) || l.set(v, []), l.get(v).push(_);
|
|
3732
3732
|
}), l.size === 0) return "";
|
|
3733
3733
|
const c = Array.from(l.keys()).sort((d, u) => d - u).map((d) => `<div class="ms__actions-row" data-row="${d}">${l.get(d).join("")}</div>`).join("");
|
|
3734
3734
|
return `<div class="ms__actions${i}${r}${n}${a}">${c}</div>`;
|
|
@@ -3772,11 +3772,11 @@ class hn {
|
|
|
3772
3772
|
* chevron/toggle — every node is just a normal, selectable option.
|
|
3773
3773
|
*/
|
|
3774
3774
|
renderTreeNode(e, t) {
|
|
3775
|
-
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 ?
|
|
3775
|
+
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 ? Ss(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, u = c ? d === "checked" : this.selectedValues.has(String(i)), f = d === "indeterminate", p = t === this.focusedIndex, g = this.matchingIndices.has(t), w = e.isSelectable !== !1, x = e.level ?? 1, v = Math.max(0, x - 1), _ = ["ms__option", "ms__option--tree"];
|
|
3776
3776
|
_.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), u && _.push("ms__option--selected"), f && _.push("ms__option--indeterminate"), p && _.push("ms__option--focused"), g && _.push("ms__option--matched"), l && _.push("ms__option--disabled"), w || _.push("ms__option--tree-unselectable");
|
|
3777
3777
|
const k = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", P = w ? "" : ' data-selectable="false"';
|
|
3778
|
-
let
|
|
3779
|
-
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && w && (
|
|
3778
|
+
let $ = `<div class="${_.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${x}" style="--ms-tree-depth: ${v};"${k}${P}>`;
|
|
3779
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && w && ($ += this.checkboxHtml({ checked: u, indeterminate: f, disabled: l })), $ += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
3780
3780
|
const D = {
|
|
3781
3781
|
index: t,
|
|
3782
3782
|
isSelected: u,
|
|
@@ -3790,16 +3790,16 @@ class hn {
|
|
|
3790
3790
|
isBranch: e.hasChildren,
|
|
3791
3791
|
isLeaf: !e.hasChildren,
|
|
3792
3792
|
childCount: Object.keys(e.children).length,
|
|
3793
|
-
level:
|
|
3794
|
-
depth:
|
|
3793
|
+
level: x,
|
|
3794
|
+
depth: v,
|
|
3795
3795
|
path: e.path,
|
|
3796
3796
|
isSelectable: w,
|
|
3797
3797
|
isIndeterminate: f
|
|
3798
3798
|
};
|
|
3799
|
-
|
|
3799
|
+
$ += this.toHtml(this.options.renderOptionContentCallback(o, D));
|
|
3800
3800
|
} else
|
|
3801
|
-
n && (
|
|
3802
|
-
return
|
|
3801
|
+
n && ($ += `<span class="ms__option-icon">${n}</span>`), $ += '<div class="ms__option-text">', $ += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, a && ($ += `<div class="ms__option-subtitle">${a}</div>`), $ += "</div>";
|
|
3802
|
+
return $ += this.renderOptionInfoButton(), $ += "</div>", $ += "</div>", $;
|
|
3803
3803
|
}
|
|
3804
3804
|
/**
|
|
3805
3805
|
* Empty-dropdown content. When "add new" is enabled (isAddNewAllowed) AND the user has typed
|
|
@@ -3882,11 +3882,11 @@ class hn {
|
|
|
3882
3882
|
e[0] && (this.options.renderSelectedContentCallback ? r = this.options.renderSelectedContentCallback(
|
|
3883
3883
|
e[0],
|
|
3884
3884
|
Xe(this.presentationMode)
|
|
3885
|
-
) : r = this.getItemDisplayValue(e[0])), !h(this,
|
|
3885
|
+
) : r = this.getItemDisplayValue(e[0])), !h(this, N) && t > 0 && e.length > 0 ? this.input.value = r : h(this, N) || (this.input.value = "");
|
|
3886
3886
|
return;
|
|
3887
3887
|
}
|
|
3888
3888
|
let o = this.options.badgesDisplayMode;
|
|
3889
|
-
if (this.options.badgesThreshold !== null && t > this.options.badgesThreshold && o !== "none" && (o = this.options.badgesThresholdMode || "count"), !h(this,
|
|
3889
|
+
if (this.options.badgesThreshold !== null && t > this.options.badgesThreshold && o !== "none" && (o = this.options.badgesThresholdMode || "count"), !h(this, N))
|
|
3890
3890
|
if (t > 0 && o === "count") {
|
|
3891
3891
|
const r = this.options.getCounterCallback ? this.options.getCounterCallback(t) : `${t} selected`;
|
|
3892
3892
|
this.input.placeholder = r;
|
|
@@ -3943,14 +3943,14 @@ class hn {
|
|
|
3943
3943
|
}
|
|
3944
3944
|
attachEvents() {
|
|
3945
3945
|
this.input.addEventListener("mousedown", (e) => {
|
|
3946
|
-
e.stopPropagation(), h(this,
|
|
3946
|
+
e.stopPropagation(), h(this, N) ? (this.justClosedViaClick = !0, this.close(), setTimeout(() => {
|
|
3947
3947
|
this.justClosedViaClick = !1;
|
|
3948
3948
|
}, 0)) : (this.presentationMode === "fullscreen" && e.preventDefault(), this.open());
|
|
3949
3949
|
}), this.input.addEventListener("focus", () => {
|
|
3950
|
-
!h(this,
|
|
3950
|
+
!h(this, N) && !this.justClosedViaClick && this.open();
|
|
3951
3951
|
}), this.input.addEventListener("input", (e) => {
|
|
3952
3952
|
const t = e.target.value;
|
|
3953
|
-
this.options.isSearchEnabled && !h(this,
|
|
3953
|
+
this.options.isSearchEnabled && !h(this, N) && this.open(), this.handleSearch(t);
|
|
3954
3954
|
}), this.input.addEventListener("keydown", (e) => this.handleKeydown(e)), this.documentClickHandler = (e) => this.handleClickOutside(e), setTimeout(() => {
|
|
3955
3955
|
document.addEventListener("click", this.documentClickHandler);
|
|
3956
3956
|
}, 0), this.overlayCoord = Xi(() => this.close(), this.options.overlayGroup || void 0), this.documentKeydownHandler = (e) => {
|
|
@@ -4046,10 +4046,10 @@ class hn {
|
|
|
4046
4046
|
const i = await this.options.searchCallback(t, o.signal);
|
|
4047
4047
|
if (o.signal.aborted || this.searchTerm !== e) return;
|
|
4048
4048
|
const r = i || [];
|
|
4049
|
-
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(), W.debug(`[${this.instanceId}] Loaded ${r.length} results`);
|
|
4049
|
+
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(), this.repositionDropdown(), W.debug(`[${this.instanceId}] Loaded ${r.length} results`);
|
|
4050
4050
|
} catch (i) {
|
|
4051
4051
|
if (o.signal.aborted) return;
|
|
4052
|
-
W.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();
|
|
4052
|
+
W.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(), this.repositionDropdown();
|
|
4053
4053
|
} finally {
|
|
4054
4054
|
this.searchAbortController === o && (this.searchAbortController = void 0);
|
|
4055
4055
|
}
|
|
@@ -4059,7 +4059,7 @@ class hn {
|
|
|
4059
4059
|
if (!(this.options.keydownCallback && this.options.keydownCallback({
|
|
4060
4060
|
event: e,
|
|
4061
4061
|
key: e.key,
|
|
4062
|
-
isOpen: h(this,
|
|
4062
|
+
isOpen: h(this, N),
|
|
4063
4063
|
presentation: this.presentationMode,
|
|
4064
4064
|
searchTerm: this.searchTerm,
|
|
4065
4065
|
focusedIndex: this.focusedIndex,
|
|
@@ -4068,7 +4068,7 @@ class hn {
|
|
|
4068
4068
|
selectedValues: [...this.selectedValues],
|
|
4069
4069
|
controller: this.getKeyboardController()
|
|
4070
4070
|
}) === !0)) {
|
|
4071
|
-
if (!h(this,
|
|
4071
|
+
if (!h(this, N)) {
|
|
4072
4072
|
(e.key === "Enter" || e.key === "ArrowDown") && (e.preventDefault(), this.open());
|
|
4073
4073
|
return;
|
|
4074
4074
|
}
|
|
@@ -4147,7 +4147,7 @@ class hn {
|
|
|
4147
4147
|
}
|
|
4148
4148
|
const i = e.target.closest('.ms__group-label[data-group-select="cascade"]');
|
|
4149
4149
|
if (i && i.dataset.group) {
|
|
4150
|
-
e.preventDefault(), R.debug(`[${this.instanceId}] Group header cascade toggle:`, i.dataset.group), this.toggleGroup(i.dataset.group), h(this,
|
|
4150
|
+
e.preventDefault(), R.debug(`[${this.instanceId}] Group header cascade toggle:`, i.dataset.group), this.toggleGroup(i.dataset.group), h(this, N) && this.presentationMode !== "fullscreen" ? this.input.focus() : this.presentationMode === "fullscreen" && ((a = this.fullscreenSearchInput) == null || a.blur());
|
|
4151
4151
|
return;
|
|
4152
4152
|
}
|
|
4153
4153
|
const r = e.target.closest(".ms__option");
|
|
@@ -4159,7 +4159,7 @@ class hn {
|
|
|
4159
4159
|
optionIndex: d,
|
|
4160
4160
|
closeOnSelect: this.options.isCloseOnSelect,
|
|
4161
4161
|
placeholder: this.options.searchPlaceholder
|
|
4162
|
-
}), d >= 0 && (this.focusedIndex = d, this.toggleOption(this.filteredOptions[d]), h(this,
|
|
4162
|
+
}), d >= 0 && (this.focusedIndex = d, this.toggleOption(this.filteredOptions[d]), h(this, N) && this.presentationMode !== "fullscreen" ? this.input.focus() : this.presentationMode === "fullscreen" && ((l = this.fullscreenSearchInput) == null || l.blur()));
|
|
4163
4163
|
}
|
|
4164
4164
|
}
|
|
4165
4165
|
handleBadgeClick(e) {
|
|
@@ -4194,7 +4194,7 @@ class hn {
|
|
|
4194
4194
|
Y.debug(`[${this.instanceId}] Closing selected popover due to click outside`), this.hideSelectedPopover();
|
|
4195
4195
|
return;
|
|
4196
4196
|
}
|
|
4197
|
-
if (!h(this,
|
|
4197
|
+
if (!h(this, N) || this.justOpenedViaClick) return;
|
|
4198
4198
|
const o = t.some(
|
|
4199
4199
|
(r) => r instanceof Node && (this.element.contains(r) || this.dropdown.contains(r) || this.hint && this.hint.contains(r))
|
|
4200
4200
|
);
|
|
@@ -4353,7 +4353,7 @@ class hn {
|
|
|
4353
4353
|
*/
|
|
4354
4354
|
scrollToIndex(e, t) {
|
|
4355
4355
|
const o = (t == null ? void 0 : t.block) ?? "start";
|
|
4356
|
-
return h(this,
|
|
4356
|
+
return h(this, N) ? e < 0 || e >= this.filteredOptions.length ? (R.debug(`[${this.instanceId}] scrollToIndex(${e}) → false (out of range, ${this.filteredOptions.length} options)`), !1) : (R.debug(`[${this.instanceId}] scrollToIndex(${e}, block=${o}) — virtual=${!!this.virtualScroll}, mode=${this.presentationMode}`), this.armClickGuard(), this.scrollToRenderedIndex(e, { block: o }), !0) : (R.debug(`[${this.instanceId}] scrollToIndex(${e}) → false (closed)`), !1);
|
|
4357
4357
|
}
|
|
4358
4358
|
/**
|
|
4359
4359
|
* Scroll to the option whose value matches `value` (resolved within the current
|
|
@@ -4373,7 +4373,7 @@ class hn {
|
|
|
4373
4373
|
*/
|
|
4374
4374
|
scrollToGroup(e, t) {
|
|
4375
4375
|
const o = (t == null ? void 0 : t.block) ?? "start";
|
|
4376
|
-
if (!h(this,
|
|
4376
|
+
if (!h(this, N) || this.isTreeMode())
|
|
4377
4377
|
return R.debug(`[${this.instanceId}] scrollToGroup(${e}) → false (${this.isTreeMode() ? "tree mode" : "closed"})`), !1;
|
|
4378
4378
|
if (this.armClickGuard(), !this.virtualScroll) {
|
|
4379
4379
|
const r = this.dropdown.querySelector(
|
|
@@ -4392,7 +4392,7 @@ class hn {
|
|
|
4392
4392
|
* (post-open virtual init / fullscreen sheet build), then retries once.
|
|
4393
4393
|
*/
|
|
4394
4394
|
scrollToRenderedIndex(e, t, o = !1) {
|
|
4395
|
-
if (!h(this,
|
|
4395
|
+
if (!h(this, N) || e < 0 || e >= this.filteredOptions.length) return;
|
|
4396
4396
|
if (this.virtualScroll) {
|
|
4397
4397
|
const r = (t == null ? void 0 : t.block) === "center" ? "center" : (t == null ? void 0 : t.block) === "nearest" ? "nearest" : "start";
|
|
4398
4398
|
this.virtualScroll.scrollToIndex(e, r), R.debug(`[${this.instanceId}] scrollToRenderedIndex(${e}) via virtual (block=${r})`);
|
|
@@ -4598,20 +4598,20 @@ class hn {
|
|
|
4598
4598
|
/** Open the dropdown (no-op if already open, or if there is nothing to show). */
|
|
4599
4599
|
open() {
|
|
4600
4600
|
var e;
|
|
4601
|
-
Y.debug(`[${this.instanceId}] open() called`, { isOpen: h(this,
|
|
4601
|
+
Y.debug(`[${this.instanceId}] open() called`, { isOpen: h(this, N) }), this.armClickGuard(), !h(this, N) && (this.hideMessage(), I(this, N, !0), this.element.classList.add("ms--open"), this.dropdown.classList.add("ms__dropdown--visible"), Y.info(`[${this.instanceId}] Dropdown opened`), this.input.placeholder = this.getPlaceholderText(), !this.options.isMultipleEnabled && this.options.isSearchEnabled && (this.input.value = this.searchTerm), this.options.searchCallback && this.options.isKeepOptionsOnSearch && !this.searchTerm && (this.filteredOptions = [...this.allOptions], Y.debug(`[${this.instanceId}] Showing ${this.allOptions.length} initial options on open`)), this.presentationMode === "fullscreen" && this.enterFullscreen(), this.renderDropdown(), this.presentationMode !== "fullscreen" && this.positionDropdown(), this.dropdown.addEventListener("scroll", this.onDropdownScroll, !0), this.hint && this.presentationMode === "floating" && (this.hint.classList.add("ms__hint--visible"), this.positionHint()), (e = this.overlayCoord) == null || e.activate());
|
|
4602
4602
|
}
|
|
4603
4603
|
/** Close the dropdown (no-op if already closed). */
|
|
4604
4604
|
close() {
|
|
4605
4605
|
var e;
|
|
4606
|
-
Y.debug(`[${this.instanceId}] close() called`, { isOpen: h(this,
|
|
4606
|
+
Y.debug(`[${this.instanceId}] close() called`, { isOpen: h(this, N) }), h(this, N) && (I(this, N, !1), this.element.classList.remove("ms--open"), this.dropdown.classList.remove("ms__dropdown--visible"), this.hint && this.hint.classList.remove("ms__hint--visible"), this.options.shouldKeepSearchOnClose || (this.searchTerm = "", (this.options.isMultipleEnabled || this.options.isSearchEnabled) && (this.input.value = ""), this.resetVisibleToAll()), this.focusedIndex = -1, this.dropdown.removeEventListener("scroll", this.onDropdownScroll, !0), this.destroyAllOptionTooltips(), this.hideLabelReveal(), this.hideMessage(), this.renderBadges(), this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.hintCleanup && (this.hintCleanup(), this.hintCleanup = null), this.exitFullscreen(), this.dropdownPlacement = null, (e = this.overlayCoord) == null || e.deactivate(), Y.debug(`[${this.instanceId}] Dropdown closed`));
|
|
4607
4607
|
}
|
|
4608
4608
|
/** Toggle the dropdown open/closed. */
|
|
4609
4609
|
toggle() {
|
|
4610
|
-
h(this,
|
|
4610
|
+
h(this, N) ? this.close() : this.open();
|
|
4611
4611
|
}
|
|
4612
4612
|
/** Whether the dropdown is currently open. Assigning opens/closes it. */
|
|
4613
4613
|
get isOpen() {
|
|
4614
|
-
return h(this,
|
|
4614
|
+
return h(this, N);
|
|
4615
4615
|
}
|
|
4616
4616
|
set isOpen(e) {
|
|
4617
4617
|
e ? this.open() : this.close();
|
|
@@ -4698,12 +4698,30 @@ class hn {
|
|
|
4698
4698
|
const e = ns(this.dropdown);
|
|
4699
4699
|
if (e === window) return;
|
|
4700
4700
|
this.fullscreenContainingBlockWarned = !0;
|
|
4701
|
-
const t = e, o = t.id ? `#${t.id}` : "", i = t.classList.length ? `.${Array.from(t.classList).join(".")}` : "", r = `<${t.tagName.toLowerCase()}${o}${i}>`, n =
|
|
4701
|
+
const t = e, o = t.id ? `#${t.id}` : "", i = t.classList.length ? `.${Array.from(t.classList).join(".")}` : "", r = `<${t.tagName.toLowerCase()}${o}${i}>`, n = Mo(t);
|
|
4702
4702
|
console.warn(
|
|
4703
4703
|
`[@keenmate/web-multiselect] Fullscreen overlay is anchored to an ancestor ${r}` + (n ? ` (has ${n})` : "") + ` instead of the viewport, so it may not cover the screen (offset, clipped, or mis-sized).
|
|
4704
4704
|
An ancestor of <web-multiselect> establishes a fixed-positioning containing block (transform / perspective / filter / backdrop-filter / will-change). Fix on your side: move the component out of that ancestor's subtree, OR remove/replace that property. If neither is acceptable, please file an issue at https://github.com/keenmate/web-multiselect/issues with the ancestor's computed CSS.`
|
|
4705
4705
|
);
|
|
4706
4706
|
}
|
|
4707
|
+
/**
|
|
4708
|
+
* Re-anchor an already-open floating dropdown from scratch so a frozen placement
|
|
4709
|
+
* is re-evaluated against the panel's CURRENT height.
|
|
4710
|
+
*
|
|
4711
|
+
* Why it's needed: an async `searchCallback` opens the panel while it's still
|
|
4712
|
+
* empty / showing the loader — short, so it fits below the input and (with the
|
|
4713
|
+
* default `lock-placement`) freezes to `bottom`. When results arrive the panel
|
|
4714
|
+
* grows to full height, but the frozen placement pins it below the input, so it
|
|
4715
|
+
* overflows the viewport bottom instead of flipping above into the free space.
|
|
4716
|
+
* `renderDropdown()` only rewrites the inner HTML; it never re-anchors. Tearing
|
|
4717
|
+
* down and recreating the anchor re-runs core's flip-on-first-compute against the
|
|
4718
|
+
* new height (picking the side that fits), then re-freezes — so `lock-placement`
|
|
4719
|
+
* still holds for the common case (panels that open already-populated, e.g. local
|
|
4720
|
+
* filtering, never hit this path). No-op unless a floating dropdown is open.
|
|
4721
|
+
*/
|
|
4722
|
+
repositionDropdown() {
|
|
4723
|
+
!h(this, N) || this.presentationMode === "fullscreen" || (this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.dropdownPlacement = null, this.positionDropdown());
|
|
4724
|
+
}
|
|
4707
4725
|
positionDropdown() {
|
|
4708
4726
|
this.presentationMode !== "fullscreen" && (this.dropdownCleanup = this.anchorFloatingPanel(this.dropdown, {
|
|
4709
4727
|
getPlacement: () => this.dropdownPlacement,
|
|
@@ -4713,7 +4731,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
4713
4731
|
isLocked: () => !!this.options.isPlacementLocked,
|
|
4714
4732
|
applyMaxWidth: !0,
|
|
4715
4733
|
afterPosition: () => {
|
|
4716
|
-
this.hint && h(this,
|
|
4734
|
+
this.hint && h(this, N) && this.positionHint();
|
|
4717
4735
|
}
|
|
4718
4736
|
}));
|
|
4719
4737
|
}
|
|
@@ -4727,7 +4745,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
4727
4745
|
* resize can swap presentation without a reopen.
|
|
4728
4746
|
*/
|
|
4729
4747
|
setPresentation(e) {
|
|
4730
|
-
e !== this.presentationMode && (this.presentationMode = e, h(this,
|
|
4748
|
+
e !== this.presentationMode && (this.presentationMode = e, h(this, N) ? e === "fullscreen" ? (this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.hintCleanup && (this.hintCleanup(), this.hintCleanup = null), this.hint && this.hint.classList.remove("ms__hint--visible"), this.dropdownPlacement = null, this.enterFullscreen(), this.renderDropdown()) : (this.exitFullscreen(), this.renderDropdown(), this.positionDropdown(), this.hint && (this.hint.classList.add("ms__hint--visible"), this.positionHint())) : this.showSelectedPopover && (e === "fullscreen" ? (this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null), this.selectedPopoverPlacement = null, this.clearFloatingInlineGeometry(this.selectedPopover), this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll()) : (this.selectedPopover.classList.remove("ms__selected-popover--fullscreen"), this.unlockBodyScroll(), this.positionSelectedPopover())));
|
|
4731
4749
|
}
|
|
4732
4750
|
/**
|
|
4733
4751
|
* Lock page scroll behind a fullscreen overlay via the core ref-counted helper.
|
|
@@ -4855,7 +4873,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
4855
4873
|
/** Back gesture/button fired: our pushed entry is already gone, so just close the
|
|
4856
4874
|
* sheet — WITHOUT popping history again (popOverlayHistory becomes a no-op). */
|
|
4857
4875
|
handleOverlayPopstate() {
|
|
4858
|
-
this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), h(this,
|
|
4876
|
+
this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), h(this, N) ? this.close() : this.showSelectedPopover && this.hideSelectedPopover());
|
|
4859
4877
|
}
|
|
4860
4878
|
/** Programmatic close: remove the listener and pop the entry we pushed (so the
|
|
4861
4879
|
* history stack returns to its pre-open state). No-op if a Back gesture already
|
|
@@ -4994,8 +5012,9 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
4994
5012
|
const e = this.element.dataset.initialValues;
|
|
4995
5013
|
if (e)
|
|
4996
5014
|
try {
|
|
4997
|
-
JSON.parse(e)
|
|
4998
|
-
|
|
5015
|
+
const t = JSON.parse(e);
|
|
5016
|
+
(this.options.isMultipleEnabled === !1 ? t.slice(0, 1) : t).forEach((i) => {
|
|
5017
|
+
this.selectedValues.add(String(i));
|
|
4999
5018
|
}), this.reconcileSelectedOptions(), this.renderBadges();
|
|
5000
5019
|
} catch (t) {
|
|
5001
5020
|
W.error(`[${this.instanceId}] Failed to parse initial values:`, t);
|
|
@@ -5024,7 +5043,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5024
5043
|
Y.debug(`[${this.instanceId}] showPopover() suppressed (isSelectedPopoverEnabled=false)`);
|
|
5025
5044
|
return;
|
|
5026
5045
|
}
|
|
5027
|
-
h(this,
|
|
5046
|
+
h(this, N) && this.close(), this.hideMessage(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ms__selected-popover--visible");
|
|
5028
5047
|
const e = this.options.virtualScrollThreshold ?? 100;
|
|
5029
5048
|
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();
|
|
5030
5049
|
}
|
|
@@ -5067,7 +5086,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5067
5086
|
if (!this.selectedPopoverContainer) return;
|
|
5068
5087
|
const o = this.scaledBadgeHeight(), i = Math.round(4 * this.fullscreenScale()), r = o + i, n = this.options.virtualScrollBuffer ?? 10;
|
|
5069
5088
|
requestAnimationFrame(() => {
|
|
5070
|
-
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new
|
|
5089
|
+
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new Gs({
|
|
5071
5090
|
container: this.selectedPopoverContainer,
|
|
5072
5091
|
itemHeight: r,
|
|
5073
5092
|
items: e,
|
|
@@ -5219,7 +5238,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5219
5238
|
if (t !== o) return !1;
|
|
5220
5239
|
Object.assign(this.options, e);
|
|
5221
5240
|
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;
|
|
5222
|
-
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() ?
|
|
5241
|
+
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() ? Js(this.tree, (a) => String(this.getItemValue(a))) : null, this.isCascadeMode() && this.cascadeIndex)) {
|
|
5223
5242
|
this.cascadeCheckedAtoms = Qe(this.cascadeIndex, this.selectedValues);
|
|
5224
5243
|
const a = Zt(
|
|
5225
5244
|
this.cascadeIndex,
|
|
@@ -5247,7 +5266,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5247
5266
|
this.effectiveBadgesPosition === "left" || this.effectiveBadgesPosition === "right"
|
|
5248
5267
|
);
|
|
5249
5268
|
}
|
|
5250
|
-
return h(this,
|
|
5269
|
+
return h(this, N) || (this.input.placeholder = this.getPlaceholderText()), "searchInputMode" in e && (this.input.readOnly = this.options.searchInputMode === "readonly", this.input.style.visibility = this.options.searchInputMode === "hidden" ? "hidden" : ""), "searchHint" in e && this.hint && (this.hint.textContent = this.options.searchHint || ""), this.renderDropdown(), this.renderBadges(), this.updateHiddenInput(), !0;
|
|
5251
5270
|
}
|
|
5252
5271
|
get selectedItem() {
|
|
5253
5272
|
return this.selectedOptions.size === 0 ? null : Array.from(this.selectedOptions.values())[0];
|
|
@@ -5459,7 +5478,7 @@ ${o}` : t;
|
|
|
5459
5478
|
const o = (t == null ? void 0 : t.variant) ?? "info", i = (t == null ? void 0 : t.duration) ?? 3e3, r = o === "error" || o === "warning", n = document.createElement("div");
|
|
5460
5479
|
n.className = `ms__message ms__message--${o}`, n.setAttribute("role", r ? "alert" : "status"), n.setAttribute("aria-live", r ? "assertive" : "polite"), typeof e == "string" ? n.textContent = e : n.appendChild(e), n.addEventListener("click", () => this.hideMessage());
|
|
5461
5480
|
const a = this.element.getRootNode(), l = a instanceof ShadowRoot ? a : null;
|
|
5462
|
-
if ((this.options.container ?? l ?? document.body).appendChild(n), this.messageEl = n, this.presentationMode === "fullscreen" && (h(this,
|
|
5481
|
+
if ((this.options.container ?? l ?? document.body).appendChild(n), this.messageEl = n, this.presentationMode === "fullscreen" && (h(this, N) || this.showSelectedPopover))
|
|
5463
5482
|
n.classList.add("ms__message--fullscreen");
|
|
5464
5483
|
else {
|
|
5465
5484
|
const u = ot(n, this.inputWrapper, {
|
|
@@ -5539,7 +5558,7 @@ ${o}` : t;
|
|
|
5539
5558
|
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), (e = this.overlayCoord) == null || e.dispose(), this.overlayCoord = 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"), wt.info(`[${this.instanceId}] Component destroyed`);
|
|
5540
5559
|
}
|
|
5541
5560
|
}
|
|
5542
|
-
|
|
5561
|
+
N = new WeakMap();
|
|
5543
5562
|
function un() {
|
|
5544
5563
|
return {
|
|
5545
5564
|
fromAttribute(s) {
|
|
@@ -5561,11 +5580,11 @@ function un() {
|
|
|
5561
5580
|
}
|
|
5562
5581
|
};
|
|
5563
5582
|
}
|
|
5564
|
-
const mn = ["json", "csv", "plain"],
|
|
5583
|
+
const mn = ["json", "csv", "plain"], Ys = ",", Zs = `
|
|
5565
5584
|
`;
|
|
5566
5585
|
function pn(s, e, t = {}) {
|
|
5567
5586
|
if (s == null || s.trim() === "") return { options: [] };
|
|
5568
|
-
const o =
|
|
5587
|
+
const o = Qs(t.splitter ?? Ys) || Ys, i = Qs(t.rowSplitter ?? Zs) || Zs;
|
|
5569
5588
|
switch (e) {
|
|
5570
5589
|
case "csv":
|
|
5571
5590
|
return bn(s, o, i);
|
|
@@ -5576,7 +5595,7 @@ function pn(s, e, t = {}) {
|
|
|
5576
5595
|
return fn(s);
|
|
5577
5596
|
}
|
|
5578
5597
|
}
|
|
5579
|
-
function
|
|
5598
|
+
function Qs(s) {
|
|
5580
5599
|
return s.replace(
|
|
5581
5600
|
/\\[ntr\\]/g,
|
|
5582
5601
|
(e) => e === "\\n" ? `
|
|
@@ -5620,7 +5639,7 @@ function vn(s, e, t) {
|
|
|
5620
5639
|
}
|
|
5621
5640
|
return i.push(r), o.push(i), o;
|
|
5622
5641
|
}
|
|
5623
|
-
const Lo = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: var(--base-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-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-toggle-icon-size: calc(1.6 * var(--ms-rem));--ms-toggle-rotate-closed: 90deg;--ms-toggle-rotate-open: -90deg;--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: color-mix(in srgb, var(--ms-badge-bg) 88%, var(--ms-badge-text-color) 12%);--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: color-mix(in srgb, var(--ms-badge-text-bg) 88%, var(--ms-badge-text-color) 12%);--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: color-mix(in srgb, var(--ms-text-color-1) 10%, transparent);--ms-badge-counter-text-bg-hover: color-mix(in srgb, var(--ms-text-color-1) 16%, transparent);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-text-color-hover: var(--ms-text-color-1);--ms-badge-counter-remove-bg: color-mix(in srgb, var(--ms-text-color-1) 10%, transparent);--ms-badge-counter-remove-bg-hover: color-mix(in srgb, var(--ms-text-color-1) 16%, transparent);--ms-badge-counter-remove-color: var(--ms-text-color-3);--ms-badge-counter-remove-color-hover: var(--ms-text-color-1);--ms-counter-wrapper-border-color: var(--ms-border-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-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-gap: calc(.6 * 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: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-rotate-180: 180deg;--ms-input-clear-size: calc(2.4 * var(--ms-rem));--ms-input-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-input-clear-color: var(--base-input-clear-color, var(--ms-text-secondary));--ms-input-clear-bg-hover: var(--base-input-clear-bg-hover, var(--ms-option-bg-matched, transparent));--ms-input-clear-border-radius: var(--ms-border-radius);--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-inner-border-radius: max(0px, calc(var(--ms-dropdown-border-radius) - 1px));--ms-dropdown-box-shadow: var(--base-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: var(--ms-fullscreen-header-gap);--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-fullscreen-nav-btn-icon: var(--ms-icon-chevron);--ms-icon-chevron: var(--base-icon-chevron, 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='m9 18 6-6-6-6'/></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-add-new-padding: var(--ms-option-padding);--ms-add-new-gap: var(--ms-option-gap);--ms-add-new-font-size: var(--ms-empty-font-size);--ms-add-new-color: var(--ms-accent-color);--ms-add-new-color-hover: var(--ms-accent-color);--ms-add-new-bg-hover: var(--ms-option-bg-hover);--ms-add-new-icon-size: calc(1.6 * var(--ms-rem));--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.4 * var(--ms-rem));--ms-icon-remove: var(--base-icon-remove, var(--base-icon-close, 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='M18 6 6 18'/><path d='m6 6 12 12'/></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: var(--base-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: var(--base-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-icon-check: var(--base-icon-check, 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='M20 6 9 17l-5-5'/></svg>"));--ms-icon-indeterminate: var(--base-icon-indeterminate, 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='M5 12h14'/></svg>"));--ms-icon-check-size: var(--base-icon-check-size, 68%);--ms-icon-add-new: var(--base-icon-plus, var(--base-icon-add, 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='M5 12h14'/><path d='M12 5v14'/></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: var(--ms-accent-color);--ms-count-clear-color-hover: var(--ms-text-color-on-accent);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--base-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: var(--ms-input-current-width);--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: var(--ms-accent-color);--ms-selected-popover-close-color-hover: var(--ms-text-color-on-accent);--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: var(--base-ease-standard, 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([defer]:not([is-ready])){display:block;min-height:calc(3.5 * var(--ms-rem))}: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{box-sizing:border-box;position:relative;display:flex;align-items:center;gap:var(--ms-input-gap);height:var(--ms-input-height);padding-inline:var(--ms-input-padding-h);background:var(--ms-input-bg);color:var(--ms-input-color);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input-wrapper:hover:not(:focus-within){border:var(--ms-input-border-hover)}.ms__input-wrapper:focus-within{border:var(--ms-input-border-focus)}.ms__input{flex:1 1 auto;min-width:0;box-sizing:border-box;font-family:inherit;height:100%;padding:0;border:none;background:transparent;font-size:var(--ms-input-font-size);color:var(--ms-input-color);cursor:pointer;outline:none}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-placeholder-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{flex:0 0 auto;display:block;width:var(--ms-toggle-icon-size);height:var(--ms-toggle-icon-size);color:var(--ms-toggle-icon-color);cursor:pointer}.ms__toggle:before{content:"";display:block;width:100%;height:100%;background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat;transform:rotate(var(--ms-toggle-rotate-closed, 90deg));transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{color:var(--ms-toggle-icon-color-open)}.ms--open .ms__toggle:before{transform:rotate(var(--ms-toggle-rotate-open, -90deg))}.ms__counter{flex:0 0 auto;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:scale(var(--ms-transform-scale-hover))}.ms__input-clear{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-input-clear-size);height:var(--ms-input-clear-size);padding:0;color:var(--ms-input-clear-color);background:transparent;border:none;border-radius:var(--ms-input-clear-border-radius);cursor:pointer;transition:background var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input-clear:hover{background:var(--ms-input-clear-bg-hover)}.ms__input-clear:before{content:"";display:block;width:var(--ms-input-clear-icon-size);height:var(--ms-input-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}.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;box-sizing:border-box;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)) calc(1.2 * 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;--ms-dropdown-inner-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-fullscreen-nav-btn-icon) center / contain no-repeat;mask:var(--ms-fullscreen-nav-btn-icon) center / contain no-repeat;transform:rotate(-90deg)}.ms__fullscreen-nav-btn--next:before{transform:rotate(90deg)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 0;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);margin-inline-start:calc((var(--ms-fullscreen-close-size) - var(--ms-fullscreen-mode-toggle-size)) / 2 - var(--ms-fullscreen-close-edge-nudge));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;border-radius:var(--ms-dropdown-inner-border-radius);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:hidden}.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;box-sizing:border-box;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-wrapper{opacity:var(--ms-disabled-input-opacity);background:var(--ms-input-bg-disabled);cursor:not-allowed}.ms--disabled .ms__input{cursor:not-allowed}.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}.ms--no-selected-popover .ms__counter,.ms--no-selected-popover .ms__badge[data-action=show-selected],.ms--no-selected-popover .ms__badge--counter,.ms--no-selected-popover .ms__badge--more{cursor:default}}@layer component{@keyframes ms-spin{to{transform:rotate(360deg)}}}@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--custom{display:block;height:auto;max-width:none;overflow:visible;border-radius:0;font-size:inherit;font-weight:inherit}.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;padding:0;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);color:var(--ms-badge-counter-remove-color-hover, var(--ms-badge-counter-remove-color))}.ms__badge--counter:hover .ms__badge-text{background:var(--ms-badge-counter-text-bg-hover, var(--ms-badge-counter-text-bg));color:var(--ms-badge-counter-text-color-hover, var(--ms-badge-counter-text-color))}.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__group-label--selectable{display:flex;align-items:center;gap:var(--ms-option-gap);cursor:pointer;-webkit-user-select:none;user-select:none}@media (hover: hover){.ms__group-label--selectable:hover{background:var(--ms-option-bg-hover)}}.ms__group-label--has-count{display:flex;align-items:center;gap:var(--ms-option-gap)}.ms__group-count{margin-inline-start:auto;flex:0 0 auto;box-sizing:border-box;min-width:calc(2 * var(--ms-rem));padding-block:0;padding-inline:calc(.4 * var(--ms-rem));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);text-align:center}.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;top:0;right:0;bottom:0;left:0;background-color:var(--ms-checkbox-checkmark-color);-webkit-mask:var(--ms-icon-check) no-repeat center / var(--ms-icon-check-size);mask:var(--ms-icon-check) no-repeat center / var(--ms-icon-check-size)}.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;-webkit-mask-image:var(--ms-icon-indeterminate);mask-image:var(--ms-icon-indeterminate)}.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__add-new{display:flex;align-items:center;gap:var(--ms-add-new-gap);padding:var(--ms-add-new-padding);font-size:var(--ms-add-new-font-size);color:var(--ms-add-new-color);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__add-new:hover{background:var(--ms-add-new-bg-hover);color:var(--ms-add-new-color-hover)}}.ms__add-new--focused{background:var(--ms-add-new-bg-hover);color:var(--ms-add-new-color-hover)}.ms__add-new--loading{cursor:default}.ms__add-new-spinner{flex-shrink:0;width:var(--ms-add-new-icon-size);height:var(--ms-add-new-icon-size);border-radius:50%;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;animation:ms-spin .6s linear infinite}@media (prefers-reduced-motion: reduce){.ms__add-new-spinner{animation-duration:1.5s}}.ms__add-new-icon{flex-shrink:0;width:var(--ms-add-new-icon-size);height:var(--ms-add-new-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-add-new) center / contain no-repeat;mask:var(--ms-icon-add-new) center / contain no-repeat}.ms__add-new-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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}}`, Qs = [
|
|
5642
|
+
const Eo = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: var(--base-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-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-toggle-icon-size: calc(1.6 * var(--ms-rem));--ms-toggle-rotate-closed: 90deg;--ms-toggle-rotate-open: -90deg;--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: color-mix(in srgb, var(--ms-badge-bg) 88%, var(--ms-badge-text-color) 12%);--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: color-mix(in srgb, var(--ms-badge-text-bg) 88%, var(--ms-badge-text-color) 12%);--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: color-mix(in srgb, var(--ms-text-color-1) 10%, transparent);--ms-badge-counter-text-bg-hover: color-mix(in srgb, var(--ms-text-color-1) 16%, transparent);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-text-color-hover: var(--ms-text-color-1);--ms-badge-counter-remove-bg: color-mix(in srgb, var(--ms-text-color-1) 10%, transparent);--ms-badge-counter-remove-bg-hover: color-mix(in srgb, var(--ms-text-color-1) 16%, transparent);--ms-badge-counter-remove-color: var(--ms-text-color-3);--ms-badge-counter-remove-color-hover: var(--ms-text-color-1);--ms-counter-wrapper-border-color: var(--ms-border-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-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-gap: calc(.6 * 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: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-rotate-180: 180deg;--ms-input-clear-size: calc(2.4 * var(--ms-rem));--ms-input-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-input-clear-color: var(--base-input-clear-color, var(--ms-text-secondary));--ms-input-clear-bg-hover: var(--base-input-clear-bg-hover, var(--ms-option-bg-matched, transparent));--ms-input-clear-border-radius: var(--ms-border-radius);--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-inner-border-radius: max(0px, calc(var(--ms-dropdown-border-radius) - 1px));--ms-dropdown-box-shadow: var(--base-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: var(--ms-fullscreen-header-gap);--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-fullscreen-nav-btn-icon: var(--ms-icon-chevron);--ms-icon-chevron: var(--base-icon-chevron, 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='m9 18 6-6-6-6'/></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-add-new-padding: var(--ms-option-padding);--ms-add-new-gap: var(--ms-option-gap);--ms-add-new-font-size: var(--ms-empty-font-size);--ms-add-new-color: var(--ms-accent-color);--ms-add-new-color-hover: var(--ms-accent-color);--ms-add-new-bg-hover: var(--ms-option-bg-hover);--ms-add-new-icon-size: calc(1.6 * var(--ms-rem));--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.4 * var(--ms-rem));--ms-icon-remove: var(--base-icon-remove, var(--base-icon-close, 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='M18 6 6 18'/><path d='m6 6 12 12'/></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: var(--base-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: var(--base-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-icon-check: var(--base-icon-check, 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='M20 6 9 17l-5-5'/></svg>"));--ms-icon-indeterminate: var(--base-icon-indeterminate, 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='M5 12h14'/></svg>"));--ms-icon-check-size: var(--base-icon-check-size, 68%);--ms-icon-add-new: var(--base-icon-plus, var(--base-icon-add, 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='M5 12h14'/><path d='M12 5v14'/></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: var(--ms-accent-color);--ms-count-clear-color-hover: var(--ms-text-color-on-accent);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--base-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: var(--ms-input-current-width);--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: var(--ms-accent-color);--ms-selected-popover-close-color-hover: var(--ms-text-color-on-accent);--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: var(--base-ease-standard, 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([defer]:not([is-ready])){display:block;min-height:calc(3.5 * var(--ms-rem))}: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{box-sizing:border-box;position:relative;display:flex;align-items:center;gap:var(--ms-input-gap);height:var(--ms-input-height);padding-inline:var(--ms-input-padding-h);background:var(--ms-input-bg);color:var(--ms-input-color);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input-wrapper:hover:not(:focus-within){border:var(--ms-input-border-hover)}.ms__input-wrapper:focus-within{border:var(--ms-input-border-focus)}.ms__input{flex:1 1 auto;min-width:0;box-sizing:border-box;font-family:inherit;height:100%;padding:0;border:none;background:transparent;font-size:var(--ms-input-font-size);color:var(--ms-input-color);cursor:pointer;outline:none}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-placeholder-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{flex:0 0 auto;display:block;width:var(--ms-toggle-icon-size);height:var(--ms-toggle-icon-size);color:var(--ms-toggle-icon-color);cursor:pointer}.ms__toggle:before{content:"";display:block;width:100%;height:100%;background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat;transform:rotate(var(--ms-toggle-rotate-closed, 90deg));transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{color:var(--ms-toggle-icon-color-open)}.ms--open .ms__toggle:before{transform:rotate(var(--ms-toggle-rotate-open, -90deg))}.ms__counter{flex:0 0 auto;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:scale(var(--ms-transform-scale-hover))}.ms__input-clear{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-input-clear-size);height:var(--ms-input-clear-size);padding:0;color:var(--ms-input-clear-color);background:transparent;border:none;border-radius:var(--ms-input-clear-border-radius);cursor:pointer;transition:background var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input-clear:hover{background:var(--ms-input-clear-bg-hover)}.ms__input-clear:before{content:"";display:block;width:var(--ms-input-clear-icon-size);height:var(--ms-input-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}.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;box-sizing:border-box;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)) calc(1.2 * 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;--ms-dropdown-inner-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-fullscreen-nav-btn-icon) center / contain no-repeat;mask:var(--ms-fullscreen-nav-btn-icon) center / contain no-repeat;transform:rotate(-90deg)}.ms__fullscreen-nav-btn--next:before{transform:rotate(90deg)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 0;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);margin-inline-start:calc((var(--ms-fullscreen-close-size) - var(--ms-fullscreen-mode-toggle-size)) / 2 - var(--ms-fullscreen-close-edge-nudge));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;border-radius:var(--ms-dropdown-inner-border-radius);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:hidden}.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;box-sizing:border-box;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-wrapper{opacity:var(--ms-disabled-input-opacity);background:var(--ms-input-bg-disabled);cursor:not-allowed}.ms--disabled .ms__input{cursor:not-allowed}.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}.ms--no-selected-popover .ms__counter,.ms--no-selected-popover .ms__badge[data-action=show-selected],.ms--no-selected-popover .ms__badge--counter,.ms--no-selected-popover .ms__badge--more{cursor:default}}@layer component{@keyframes ms-spin{to{transform:rotate(360deg)}}}@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--custom{display:block;height:auto;max-width:none;overflow:visible;border-radius:0;font-size:inherit;font-weight:inherit}.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;padding:0;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);color:var(--ms-badge-counter-remove-color-hover, var(--ms-badge-counter-remove-color))}.ms__badge--counter:hover .ms__badge-text{background:var(--ms-badge-counter-text-bg-hover, var(--ms-badge-counter-text-bg));color:var(--ms-badge-counter-text-color-hover, var(--ms-badge-counter-text-color))}.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__group-label--selectable{display:flex;align-items:center;gap:var(--ms-option-gap);cursor:pointer;-webkit-user-select:none;user-select:none}@media (hover: hover){.ms__group-label--selectable:hover{background:var(--ms-option-bg-hover)}}.ms__group-label--has-count{display:flex;align-items:center;gap:var(--ms-option-gap)}.ms__group-count{margin-inline-start:auto;flex:0 0 auto;box-sizing:border-box;min-width:calc(2 * var(--ms-rem));padding-block:0;padding-inline:calc(.4 * var(--ms-rem));background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);text-align:center}.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;top:0;right:0;bottom:0;left:0;background-color:var(--ms-checkbox-checkmark-color);-webkit-mask:var(--ms-icon-check) no-repeat center / var(--ms-icon-check-size);mask:var(--ms-icon-check) no-repeat center / var(--ms-icon-check-size)}.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;-webkit-mask-image:var(--ms-icon-indeterminate);mask-image:var(--ms-icon-indeterminate)}.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__add-new{display:flex;align-items:center;gap:var(--ms-add-new-gap);padding:var(--ms-add-new-padding);font-size:var(--ms-add-new-font-size);color:var(--ms-add-new-color);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__add-new:hover{background:var(--ms-add-new-bg-hover);color:var(--ms-add-new-color-hover)}}.ms__add-new--focused{background:var(--ms-add-new-bg-hover);color:var(--ms-add-new-color-hover)}.ms__add-new--loading{cursor:default}.ms__add-new-spinner{flex-shrink:0;width:var(--ms-add-new-icon-size);height:var(--ms-add-new-icon-size);border-radius:50%;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;animation:ms-spin .6s linear infinite}@media (prefers-reduced-motion: reduce){.ms__add-new-spinner{animation-duration:1.5s}}.ms__add-new-icon{flex-shrink:0;width:var(--ms-add-new-icon-size);height:var(--ms-add-new-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-add-new) center / contain no-repeat;mask:var(--ms-icon-add-new) center / contain no-repeat}.ms__add-new-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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}}`, eo = [
|
|
5624
5643
|
"top",
|
|
5625
5644
|
"top-start",
|
|
5626
5645
|
"top-end",
|
|
@@ -5633,40 +5652,41 @@ const Lo = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
5633
5652
|
"right",
|
|
5634
5653
|
"right-start",
|
|
5635
5654
|
"right-end"
|
|
5636
|
-
],
|
|
5655
|
+
], A = () => Uo(), wn = [
|
|
5637
5656
|
// ── Strings (cosmetic → update). Optional ones are nullable: absent → null ─
|
|
5638
|
-
{ configKey: "searchHint", attribute: "search-hint", converter:
|
|
5639
|
-
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter:
|
|
5640
|
-
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter:
|
|
5641
|
-
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter:
|
|
5642
|
-
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter:
|
|
5643
|
-
{ configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter:
|
|
5644
|
-
{ configKey: "maxHeight", attribute: "max-height", converter:
|
|
5645
|
-
{ configKey: "emptyMessage", attribute: "empty-message", converter:
|
|
5646
|
-
{ configKey: "addNewText", attribute: "add-new-text", converter:
|
|
5647
|
-
{ configKey: "addNewPendingText", attribute: "add-new-pending-text", converter:
|
|
5648
|
-
{ configKey: "loadingMessage", attribute: "loading-message", converter:
|
|
5649
|
-
{ configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter:
|
|
5650
|
-
{ configKey: "formFieldId", attribute: "name", converter:
|
|
5657
|
+
{ configKey: "searchHint", attribute: "search-hint", converter: E({ isNullable: !0 }), on: "update", description: "Small hint text shown beneath the search input." },
|
|
5658
|
+
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter: E({ 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.' },
|
|
5659
|
+
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter: E({ default: "Pick an option..." }), on: "update", description: "Placeholder shown on the control when nothing is selected." },
|
|
5660
|
+
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter: E({ isNullable: !0 }), on: "update", description: "Text shown when there are no options at all." },
|
|
5661
|
+
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter: E({ isNullable: !0 }), on: "update", description: "Minimum width of the dropdown panel (any CSS length)." },
|
|
5662
|
+
{ configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter: E({ isNullable: !0 }), on: "update", description: "Maximum width of the dropdown panel (any CSS length)." },
|
|
5663
|
+
{ configKey: "maxHeight", attribute: "max-height", converter: E({ default: "20rem" }), on: "update", description: "Maximum height of the dropdown list before it scrolls." },
|
|
5664
|
+
{ configKey: "emptyMessage", attribute: "empty-message", converter: E({ default: "No results found" }), on: "update", description: "Message shown when a search yields no matches." },
|
|
5665
|
+
{ configKey: "addNewText", attribute: "add-new-text", converter: E({ isNullable: !0 }), on: "update", description: 'Template for the clickable "add new" prompt shown (when `allow-add-new` is on) in place of the empty message once a search yields no matches. `{value}` is replaced with the typed text. Default: `Add "{value}"`. A `getAddNewTextCallback` wins.' },
|
|
5666
|
+
{ configKey: "addNewPendingText", attribute: "add-new-pending-text", converter: E({ isNullable: !0 }), on: "update", description: 'Template for the pending prompt (spinner + text) shown while an async `addNewCallback` runs. `{value}` is replaced with the typed text. Default: `Adding "{value}"…`.' },
|
|
5667
|
+
{ configKey: "loadingMessage", attribute: "loading-message", converter: E({ default: "Loading..." }), on: "update", description: "Message shown while options are loading." },
|
|
5668
|
+
{ configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter: E({ isNullable: !0 }), on: "update", description: "Tooltip text for a badge remove (×) button." },
|
|
5669
|
+
{ configKey: "formFieldId", attribute: "name", converter: E({ isNullable: !0 }), on: "reinit", description: "HTML form field name/id used for the hidden input(s)." },
|
|
5670
|
+
{ configKey: "customStyles", attribute: "custom-styles", converter: E({ isNullable: !0 }), on: "update", description: "Raw CSS injected into the Shadow DOM — the declarative alternative to `customStylesCallback`. The value is a full stylesheet (selectors and all), dropped verbatim into a replaceable style slot at the top of the shadow root. `customStylesCallback` takes precedence when both are set." },
|
|
5651
5671
|
// ── CSS-var sugar (mirrored to a host style prop in reinit()/update()) ────
|
|
5652
|
-
{ configKey: "dropdownWidth", attribute: "dropdown-width", converter:
|
|
5653
|
-
{ configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter:
|
|
5672
|
+
{ configKey: "dropdownWidth", attribute: "dropdown-width", converter: E({ isNullable: !0 }), on: "update", description: "Fixed dropdown width; mirrored to the `--ms-dropdown-width` CSS variable." },
|
|
5673
|
+
{ configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter: E({ isNullable: !0 }), on: "update", description: "Selected-items popover width; mirrored to `--ms-selected-popover-width`." },
|
|
5654
5674
|
// ── Member properties (structural → reinit; optional → nullable) ─────────
|
|
5655
|
-
{ configKey: "valueMember", attribute: "value-member", converter:
|
|
5656
|
-
{ configKey: "displayValueMember", attribute: "display-value-member", converter:
|
|
5657
|
-
{ configKey: "searchValueMember", attribute: "search-value-member", converter:
|
|
5658
|
-
{ configKey: "iconMember", attribute: "icon-member", converter:
|
|
5659
|
-
{ configKey: "subtitleMember", attribute: "subtitle-member", converter:
|
|
5660
|
-
{ configKey: "fullTitleMember", attribute: "full-title-member", converter:
|
|
5661
|
-
{ configKey: "groupMember", attribute: "group-member", converter:
|
|
5662
|
-
{ configKey: "disabledMember", attribute: "disabled-member", converter:
|
|
5675
|
+
{ configKey: "valueMember", attribute: "value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name on an option object that holds its value." },
|
|
5676
|
+
{ configKey: "displayValueMember", attribute: "display-value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option display label." },
|
|
5677
|
+
{ configKey: "searchValueMember", attribute: "search-value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name searched against (falls back to the display value)." },
|
|
5678
|
+
{ configKey: "iconMember", attribute: "icon-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option icon." },
|
|
5679
|
+
{ configKey: "subtitleMember", attribute: "subtitle-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option subtitle." },
|
|
5680
|
+
{ configKey: "fullTitleMember", attribute: "full-title-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option full/long title." },
|
|
5681
|
+
{ configKey: "groupMember", attribute: "group-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name used to group options under headers." },
|
|
5682
|
+
{ configKey: "disabledMember", attribute: "disabled-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that marks an option disabled." },
|
|
5663
5683
|
// ── Tree of options (structural → reinit; optional → nullable) ───────────
|
|
5664
|
-
{ configKey: "pathMember", attribute: "path-member", converter:
|
|
5665
|
-
{ configKey: "parentPathMember", attribute: "parent-path-member", converter:
|
|
5666
|
-
{ configKey: "levelMember", attribute: "level-member", converter:
|
|
5667
|
-
{ configKey: "hasChildrenMember", attribute: "has-children-member", converter:
|
|
5668
|
-
{ configKey: "isSelectableMember", attribute: "is-selectable-member", converter:
|
|
5669
|
-
{ configKey: "treePathSeparator", attribute: "tree-path-separator", converter:
|
|
5684
|
+
{ configKey: "pathMember", attribute: "path-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node materialized tree path." },
|
|
5685
|
+
{ configKey: "parentPathMember", attribute: "parent-path-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node parent path." },
|
|
5686
|
+
{ configKey: "levelMember", attribute: "level-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node depth level." },
|
|
5687
|
+
{ configKey: "hasChildrenMember", attribute: "has-children-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name flagging that a node has children." },
|
|
5688
|
+
{ configKey: "isSelectableMember", attribute: "is-selectable-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name marking whether a node can be selected." },
|
|
5689
|
+
{ configKey: "treePathSeparator", attribute: "tree-path-separator", converter: E({ default: "." }), reflect: !0, on: "reinit", description: "Separator between segments in a materialized tree path." },
|
|
5670
5690
|
{ configKey: "isTreeEnabled", converter: H("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." },
|
|
5671
5691
|
{
|
|
5672
5692
|
configKey: "checkboxMode",
|
|
@@ -5704,17 +5724,17 @@ const Lo = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
5704
5724
|
on: "update",
|
|
5705
5725
|
description: 'Order of the CURRENTLY-SELECTED items where they are displayed — badges, partial mode (which items sit behind the "+N more" badge), and the selected-items popover. Display only: `getValue()`, the form output, and `getSelected()` keep as-selected (insertion) order, and the options dropdown is never reordered.\n- `as-selected` (default) — the order items were picked.\n- `label-asc` / `label-desc` — by the badge label, A→Z / Z→A (locale-aware).\n- `member` — by the `selected-order-member` property (or `getSelectedOrderCallback`); numeric keys sort numerically, everything else with a locale string compare.\n- `custom` — delegate to `selectedOrderCompareCallback`.'
|
|
5706
5726
|
},
|
|
5707
|
-
{ configKey: "selectedOrderMember", attribute: "selected-order-member", converter:
|
|
5727
|
+
{ configKey: "selectedOrderMember", attribute: "selected-order-member", converter: E({ isNullable: !0 }), reflect: !0, on: "update", description: 'Property name used as the sort key when `selected-order="member"`. Sorts the SELECTED-items display only (not the dropdown). Overridden by `getSelectedOrderCallback`.' },
|
|
5708
5728
|
{ configKey: "searchInputMode", attribute: "search-input-mode", converter: K(["normal", "readonly", "hidden"], { default: "normal" }), on: "reinit", description: "Search field mode: editable, read-only, or hidden." },
|
|
5709
5729
|
{ configKey: "searchMode", attribute: "search-mode", converter: K(["filter", "navigate"], { default: "filter" }), on: "reinit", description: "Whether typing filters the list or navigates it." },
|
|
5710
|
-
{ configKey: "overlayGroup", attribute: "overlay-group", converter:
|
|
5730
|
+
{ configKey: "overlayGroup", attribute: "overlay-group", converter: E({ isNullable: !0 }), on: "reinit", description: 'Scope the "one overlay open at a time" coordination to a named group. Overlays (multiselects, datepickers, external popovers) sharing a group dismiss each other when one opens; different groups are independent. Unset = the default (ungrouped) group.' },
|
|
5711
5731
|
{ configKey: "actionsLayout", attribute: "actions-layout", converter: K(["nowrap", "wrap"], { default: "nowrap" }), on: "reinit", description: "Whether the action bar wraps or stays on one line." },
|
|
5712
5732
|
{ configKey: "actionsPosition", attribute: "actions-position", converter: K(["top", "bottom"], { default: "top" }), on: "reinit", description: "Whether the action bar sits above or below the list." },
|
|
5713
5733
|
{ configKey: "actionsAlign", attribute: "actions-align", converter: K(["stretch", "left", "right", "center", "space-between"], { default: "stretch" }), on: "update", description: "Horizontal alignment of the action buttons." },
|
|
5714
5734
|
{ configKey: "checkboxAlign", attribute: "checkbox-align", converter: K(["top", "center", "bottom"], { default: "center" }), on: "update", description: "Vertical alignment of an option checkbox." },
|
|
5715
5735
|
{ configKey: "valueFormat", attribute: "value-format", converter: K(["json", "csv", "array"], { default: "json" }), on: "reinit", description: "Serialization format the control emits its value in." },
|
|
5716
|
-
{ configKey: "badgeTooltipPlacement", attribute: "badge-tooltip-placement", converter: K(
|
|
5717
|
-
{ configKey: "optionTooltipPlacement", attribute: "option-tooltip-placement", converter: K(
|
|
5736
|
+
{ configKey: "badgeTooltipPlacement", attribute: "badge-tooltip-placement", converter: K(eo, { default: "top" }), on: "update", description: "Preferred placement of a badge tooltip relative to its badge (floating-ui placement)." },
|
|
5737
|
+
{ configKey: "optionTooltipPlacement", attribute: "option-tooltip-placement", converter: K(eo, { default: "top-start" }), on: "update", description: "Preferred placement of an option tooltip (floating-ui placement)." },
|
|
5718
5738
|
{
|
|
5719
5739
|
configKey: "mobilePresentation",
|
|
5720
5740
|
attribute: "mobile-presentation",
|
|
@@ -5778,63 +5798,63 @@ const Lo = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
5778
5798
|
},
|
|
5779
5799
|
// ── Complex property (data) ──────────────────────────────────────────────
|
|
5780
5800
|
{ configKey: "options", converter: Go(), 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." },
|
|
5781
|
-
{ configKey: "optionsSource", attribute: "data-options", converter:
|
|
5801
|
+
{ configKey: "optionsSource", attribute: "data-options", converter: E({ 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." },
|
|
5782
5802
|
{ configKey: "optionsFormat", attribute: "data-options-format", converter: K(mn, { 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`." },
|
|
5783
|
-
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter:
|
|
5784
|
-
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter:
|
|
5803
|
+
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter: E({ 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`.' },
|
|
5804
|
+
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter: E({ default: `
|
|
5785
5805
|
` }), 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`.' },
|
|
5786
5806
|
{ configKey: "actionButtons", converter: jo({ 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." },
|
|
5787
5807
|
// ── Callbacks: data shape (structural → reinit) ──────────────────────────
|
|
5788
|
-
{ configKey: "getValueCallback", converter:
|
|
5789
|
-
{ configKey: "getPathCallback", converter:
|
|
5790
|
-
{ configKey: "getGroupCallback", converter:
|
|
5791
|
-
{ configKey: "getDisabledCallback", converter:
|
|
5792
|
-
{ configKey: "getIsSelectableCallback", converter:
|
|
5793
|
-
{ configKey: "getSearchValueCallback", converter:
|
|
5794
|
-
{ configKey: "searchCallback", converter:
|
|
5808
|
+
{ configKey: "getValueCallback", converter: A(), on: "reinit", type: "(item: unknown) => string | number", description: "Extract an option value (overrides valueMember)." },
|
|
5809
|
+
{ configKey: "getPathCallback", converter: A(), on: "reinit", type: "(item: unknown) => string", description: "Extract a node tree path (enables tree mode; overrides pathMember)." },
|
|
5810
|
+
{ configKey: "getGroupCallback", converter: A(), on: "reinit", type: "(item: unknown) => string", description: "Extract the group name from an option (overrides groupMember)." },
|
|
5811
|
+
{ configKey: "getDisabledCallback", converter: A(), on: "reinit", type: "(item: unknown) => boolean", description: "Whether an option is disabled (overrides disabledMember)." },
|
|
5812
|
+
{ configKey: "getIsSelectableCallback", converter: A(), on: "reinit", type: "(node: unknown) => boolean", description: "Whether a tree node can be selected (overrides is-selectable-member)." },
|
|
5813
|
+
{ configKey: "getSearchValueCallback", converter: A(), on: "reinit", type: "(item: unknown) => string", description: "Text an option is searched against (overrides searchValueMember)." },
|
|
5814
|
+
{ configKey: "searchCallback", converter: A(), on: "reinit", type: "(searchTerm: string, signal?: AbortSignal) => Promise<unknown[]>", description: "Custom / async search; return the filtered options." },
|
|
5795
5815
|
// ── Callbacks: display / render (cosmetic → update) ──────────────────────
|
|
5796
|
-
{ configKey: "getDisplayValueCallback", converter:
|
|
5797
|
-
{ configKey: "getBadgeDisplayCallback", converter:
|
|
5798
|
-
{ configKey: "getBadgeClassCallback", converter:
|
|
5799
|
-
{ configKey: "getSelectedOrderCallback", converter:
|
|
5800
|
-
{ configKey: "selectedOrderCompareCallback", converter:
|
|
5801
|
-
{ configKey: "getIconCallback", converter:
|
|
5802
|
-
{ configKey: "getSubtitleCallback", converter:
|
|
5803
|
-
{ configKey: "getFullTitleCallback", converter:
|
|
5804
|
-
{ configKey: "getCounterCallback", converter:
|
|
5805
|
-
{ configKey: "getCountLabelCallback", converter:
|
|
5806
|
-
{ configKey: "getValueFormatCallback", converter:
|
|
5807
|
-
{ configKey: "getBadgeTooltipCallback", converter:
|
|
5808
|
-
{ configKey: "getOptionTooltipCallback", converter:
|
|
5809
|
-
{ configKey: "getRemoveButtonTooltipCallback", converter:
|
|
5810
|
-
{ configKey: "getSelectedItemClassCallback", converter:
|
|
5811
|
-
{ configKey: "renderOptionContentCallback", converter:
|
|
5812
|
-
{ configKey: "renderBadgeContentCallback", converter:
|
|
5813
|
-
{ configKey: "renderBadgeCallback", converter:
|
|
5814
|
-
{ configKey: "renderGroupLabelContentCallback", converter:
|
|
5815
|
-
{ configKey: "renderSelectedContentCallback", converter:
|
|
5816
|
-
{ configKey: "renderSelectedItemContentCallback", converter:
|
|
5817
|
-
{ configKey: "customStylesCallback", converter:
|
|
5816
|
+
{ configKey: "getDisplayValueCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Compute the display label for an option (overrides displayValueMember)." },
|
|
5817
|
+
{ configKey: "getBadgeDisplayCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Compute the text shown on an option badge." },
|
|
5818
|
+
{ configKey: "getBadgeClassCallback", converter: A(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for an option badge." },
|
|
5819
|
+
{ configKey: "getSelectedOrderCallback", converter: A(), on: "update", type: "(item: unknown) => string | number", description: 'Sort key for the selected-items display when `selected-order="member"` (overrides `selected-order-member`).' },
|
|
5820
|
+
{ configKey: "selectedOrderCompareCallback", converter: A(), on: "update", type: "(a: unknown, b: unknown) => number", description: 'Comparator for the selected-items display when `selected-order="custom"`.' },
|
|
5821
|
+
{ configKey: "getIconCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Icon for an option (overrides iconMember)." },
|
|
5822
|
+
{ configKey: "getSubtitleCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Subtitle for an option (overrides subtitleMember)." },
|
|
5823
|
+
{ configKey: "getFullTitleCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Full title for an option (used by badges when show-badge-full-title is on)." },
|
|
5824
|
+
{ configKey: "getCounterCallback", converter: A(), on: "update", type: "(count: number, moreCount?: number) => string", description: "Render the selected-count label." },
|
|
5825
|
+
{ configKey: "getCountLabelCallback", converter: A(), on: "update", type: "(selected: number, total: number) => string", description: "Format the small count chip shared by the in-input counter and each group header count (default `[selected]`; e.g. `(s,t)=>`${s}/${t}``). One callback drives both." },
|
|
5826
|
+
{ configKey: "getValueFormatCallback", converter: A(), on: "update", type: "(selectedValues: (string | number)[]) => string", description: "Serialize the selected values for form submission." },
|
|
5827
|
+
{ configKey: "getBadgeTooltipCallback", converter: A(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option badge." },
|
|
5828
|
+
{ configKey: "getOptionTooltipCallback", converter: A(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option row." },
|
|
5829
|
+
{ configKey: "getRemoveButtonTooltipCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Tooltip text for a badge remove button." },
|
|
5830
|
+
{ configKey: "getSelectedItemClassCallback", converter: A(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for a selected item." },
|
|
5831
|
+
{ configKey: "renderOptionContentCallback", converter: A(), on: "update", type: "(item: unknown, context: OptionContentRenderContext) => string | HTMLElement", description: "Custom render for an option row; may return HTML or an element." },
|
|
5832
|
+
{ configKey: "renderBadgeContentCallback", converter: A(), on: "update", type: "(item: unknown, context: BadgeContentRenderContext) => string | HTMLElement", description: "Custom render for a badge content (fills the built-in pill); may return HTML or an element." },
|
|
5833
|
+
{ configKey: "renderBadgeCallback", converter: A(), on: "update", type: "(item: unknown, context: BadgeContentRenderContext) => string | HTMLElement | null", description: 'Custom render for the WHOLE badge (main area), not just its content — return the entire pill/card. The component wraps it in `.ms__badge.ms__badge--custom` with `data-value` and delegates removal to any inner element with `data-action="remove"` (or `.ms__badge-remove`). Return null/empty to fall back to the default pill for that item.' },
|
|
5834
|
+
{ configKey: "renderGroupLabelContentCallback", converter: A(), on: "update", type: "(groupName: string, context: GroupLabelRenderContext) => string | HTMLElement", description: "Customize a group label; may return an HTML string or element. The second arg carries the group members + selection (e.g. `context.selectedCount`) so a custom header can show a per-group count." },
|
|
5835
|
+
{ configKey: "renderSelectedContentCallback", converter: A(), on: "update", type: "(item: unknown, context: SelectedContentRenderContext) => string", description: "Custom render for the single-select selected value (2nd arg carries the presentation context)." },
|
|
5836
|
+
{ configKey: "renderSelectedItemContentCallback", converter: A(), on: "update", type: "(item: unknown, context: BadgeContentRenderContext) => string | HTMLElement", description: "Custom render for one selected item in the popover (2nd arg is a BadgeContentRenderContext; isInPopover=true)." },
|
|
5837
|
+
{ configKey: "customStylesCallback", converter: A(), on: "update", type: "() => string", description: "Returns a CSS string injected into the component via a replaceable style slot (§12.8)." },
|
|
5818
5838
|
// ── Callbacks: before-hooks (behavior-shaping) ───────────────────────────
|
|
5819
|
-
{ configKey: "beforeSearchCallback", converter:
|
|
5820
|
-
{ configKey: "beforeSelectCallback", converter:
|
|
5821
|
-
{ configKey: "beforeDeselectCallback", converter:
|
|
5822
|
-
{ configKey: "addNewCallback", converter:
|
|
5823
|
-
{ configKey: "getAddNewTextCallback", converter:
|
|
5824
|
-
{ configKey: "keydownCallback", converter:
|
|
5839
|
+
{ configKey: "beforeSearchCallback", converter: A(), on: "update", type: "(searchTerm: string) => string | null", description: "Runs before a search; return a rewritten term or null to veto." },
|
|
5840
|
+
{ configKey: "beforeSelectCallback", converter: A(), 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." },
|
|
5841
|
+
{ configKey: "beforeDeselectCallback", converter: A(), 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." },
|
|
5842
|
+
{ configKey: "addNewCallback", converter: A(), on: "update", type: "(value: string) => unknown | null | undefined | Promise<unknown | null | undefined>", description: "Create a new option from the typed text. May return a rich option object (renders via the same get*/render* callbacks as any option). Async + cancelable: return null/undefined to abort (no add, no `add` event). Omit entirely to handle creation yourself via the `add` event." },
|
|
5843
|
+
{ configKey: "getAddNewTextCallback", converter: A(), on: "update", type: "(value: string) => string", description: 'Dynamically compute the "add new" prompt label from the typed text (returns plain text). Takes precedence over `add-new-text`.' },
|
|
5844
|
+
{ configKey: "keydownCallback", converter: A(), on: "update", type: "(context: MultiSelectKeydownContext) => boolean | void", description: "Intercept keydown before built-in handling; return true to suppress the default. Gets the event, current state, and an imperative controller." }
|
|
5825
5845
|
], yn = [
|
|
5826
5846
|
{ name: "select", description: "An option was selected. `detail.option` is the selected option; `detail.selectedOptions`/`detail.selectedValues` are the full selection." },
|
|
5827
5847
|
{ name: "deselect", description: "An option was removed from the selection. `detail.option` is that option." },
|
|
5828
5848
|
{ name: "change", description: "The selection changed. `detail.selectedOptions`/`detail.selectedValues` are the full selection." },
|
|
5829
5849
|
{ name: "add", description: 'The user chose to create a new option from the typed text (via the "add new" prompt or Enter) — requires `allow-add-new`. `detail.value` is the typed text; `detail.option` is the created item when `addNewCallback` produced one.' },
|
|
5830
5850
|
{ name: "ready", description: "The picker was built and painted for the first time (once per element lifetime). Fires right after the first build — synchronously during upgrade for a normal element, or when the render gate is released (`el.ready()` / removing `defer`) for a deferred one. No detail." }
|
|
5831
|
-
],
|
|
5851
|
+
], to = /* @__PURE__ */ new Set(["dropdownWidth", "selectedPopoverWidth", "showDebugInfo", "initialValues", "optionsSource", "optionsFormat", "optionsSplitter", "optionsRowSplitter", "mobilePresentation", "collapseBadgesBelow", "deferRender", "customStyles"]), yt = {
|
|
5832
5852
|
dropdownWidth: "--ms-dropdown-width",
|
|
5833
5853
|
selectedPopoverWidth: "--ms-selected-popover-width"
|
|
5834
5854
|
};
|
|
5835
5855
|
let xn = null;
|
|
5836
5856
|
function _n() {
|
|
5837
|
-
return xn ?? (xn = $i(
|
|
5857
|
+
return xn ?? (xn = $i(Eo, "--ms-"));
|
|
5838
5858
|
}
|
|
5839
5859
|
const kn = [
|
|
5840
5860
|
{ key: "valueMember", member: "value", callbackKey: "getValueCallback" },
|
|
@@ -5844,11 +5864,11 @@ const kn = [
|
|
|
5844
5864
|
{ key: "subtitleMember", member: "subtitle", callbackKey: "getSubtitleCallback" },
|
|
5845
5865
|
{ key: "disabledMember", member: "disabled", callbackKey: "getDisabledCallback" }
|
|
5846
5866
|
];
|
|
5847
|
-
var Q, C, fe, ut, Fe, mt, pt, ft, Ke, We, Ie,
|
|
5867
|
+
var Q, C, fe, ut, Fe, mt, pt, ft, Ke, We, Ie, y, as, Ct, ge, St, ls, cs, ds, Tt, Ao, zo, No, Ee, hs, us, $o, Vo, ms, Do, Ro, ps, fs;
|
|
5848
5868
|
class it extends Qt {
|
|
5849
5869
|
constructor() {
|
|
5850
5870
|
super();
|
|
5851
|
-
L(this,
|
|
5871
|
+
L(this, y);
|
|
5852
5872
|
L(this, Q);
|
|
5853
5873
|
L(this, C);
|
|
5854
5874
|
L(this, fe);
|
|
@@ -5870,7 +5890,7 @@ class it extends Qt {
|
|
|
5870
5890
|
// ── container-responsive badge collapse (core §12.9 `resized`) ─────────────
|
|
5871
5891
|
/** Whether the live picker is currently forced to the collapsed count view. */
|
|
5872
5892
|
L(this, ge, !1);
|
|
5873
|
-
I(this, Q, this.attachShadow({ mode: "open" })), zi(h(this, Q),
|
|
5893
|
+
I(this, Q, this.attachShadow({ mode: "open" })), zi(h(this, Q), Eo), typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => this.setAttribute("data-placeholder-ready", "")) : this.setAttribute("data-placeholder-ready", "");
|
|
5874
5894
|
}
|
|
5875
5895
|
/**
|
|
5876
5896
|
* Called by the browser when the surrounding <form> is reset. Clears the
|
|
@@ -5891,19 +5911,19 @@ class it extends Qt {
|
|
|
5891
5911
|
}
|
|
5892
5912
|
/** Structural change (or first connect): mirror CSS vars, then (re)build the picker. */
|
|
5893
5913
|
reinit() {
|
|
5894
|
-
|
|
5914
|
+
b(this, y, $o).call(this), this.isConnected && !b(this, y, as).call(this) && b(this, y, ds).call(this);
|
|
5895
5915
|
}
|
|
5896
5916
|
/** Cosmetic change: mirror CSS vars / custom styles / debug, patch the picker in place. */
|
|
5897
5917
|
update(t) {
|
|
5898
|
-
|
|
5918
|
+
b(this, y, Vo).call(this, t), ("customStylesCallback" in t || "customStyles" in t) && b(this, y, hs).call(this), "showDebugInfo" in t && b(this, y, ps).call(this);
|
|
5899
5919
|
const o = {};
|
|
5900
5920
|
for (const [i, r] of Object.entries(t))
|
|
5901
|
-
|
|
5902
|
-
h(this, C) && Object.keys(o).length > 0 && (h(this, C).updateOptions(o) ||
|
|
5921
|
+
to.has(i) || (o[i] = r === null ? void 0 : r);
|
|
5922
|
+
h(this, C) && Object.keys(o).length > 0 && (h(this, C).updateOptions(o) || b(this, y, ds).call(this)), "mobilePresentation" in t && b(this, y, Ct).call(this, Lt()), "collapseBadgesBelow" in t && b(this, y, St).call(this, this.getBoundingClientRect().width);
|
|
5903
5923
|
}
|
|
5904
5924
|
/** Activate: ensure the picker exists (a DOM move destroyed it in disconnect()). */
|
|
5905
5925
|
connect() {
|
|
5906
|
-
!h(this, C) && !
|
|
5926
|
+
!h(this, C) && !b(this, y, as).call(this) && b(this, y, Tt).call(this);
|
|
5907
5927
|
}
|
|
5908
5928
|
/** Deactivate: tear the picker down (rebuilt on the next connect). */
|
|
5909
5929
|
disconnect() {
|
|
@@ -5919,7 +5939,7 @@ class it extends Qt {
|
|
|
5919
5939
|
* set before the dropdown can open.
|
|
5920
5940
|
*/
|
|
5921
5941
|
environmentChanged(t) {
|
|
5922
|
-
|
|
5942
|
+
b(this, y, Ct).call(this, t);
|
|
5923
5943
|
}
|
|
5924
5944
|
/**
|
|
5925
5945
|
* This element's own border box changed (core §12.9 `resized`). Overriding the
|
|
@@ -5930,7 +5950,7 @@ class it extends Qt {
|
|
|
5930
5950
|
* below` is set; otherwise it's a cheap no-op.
|
|
5931
5951
|
*/
|
|
5932
5952
|
resized({ width: t }) {
|
|
5933
|
-
|
|
5953
|
+
b(this, y, St).call(this, t);
|
|
5934
5954
|
}
|
|
5935
5955
|
// ── non-input public API ──────────────────────────────────────────────────
|
|
5936
5956
|
/** Form field name (mirrors the `name` attribute → `formFieldId`). */
|
|
@@ -6062,14 +6082,14 @@ class it extends Qt {
|
|
|
6062
6082
|
* gate never re-closes. Fires the `ready` event on the first build.
|
|
6063
6083
|
*/
|
|
6064
6084
|
ready() {
|
|
6065
|
-
I(this, Fe, !0), this.flush(), this.isConnected && !h(this, C) &&
|
|
6085
|
+
I(this, Fe, !0), this.flush(), this.isConnected && !h(this, C) && b(this, y, Tt).call(this);
|
|
6066
6086
|
}
|
|
6067
6087
|
/** Whether the picker has been built (the `ready` event has fired). False while a `defer` gate is still held. */
|
|
6068
6088
|
get isReady() {
|
|
6069
6089
|
return this.hasAttribute("is-ready");
|
|
6070
6090
|
}
|
|
6071
6091
|
}
|
|
6072
|
-
Q = new WeakMap(), C = new WeakMap(), fe = new WeakMap(), ut = new WeakMap(), Fe = new WeakMap(), mt = new WeakMap(), pt = new WeakMap(), ft = new WeakMap(), Ke = new WeakMap(), We = new WeakMap(), Ie = new WeakMap(),
|
|
6092
|
+
Q = new WeakMap(), C = new WeakMap(), fe = new WeakMap(), ut = new WeakMap(), Fe = new WeakMap(), mt = new WeakMap(), pt = new WeakMap(), ft = new WeakMap(), Ke = new WeakMap(), We = new WeakMap(), Ie = new WeakMap(), y = new WeakSet(), /** Whether the initial render is being held by the `defer` gate (not yet released). */
|
|
6073
6093
|
as = function() {
|
|
6074
6094
|
return this.config.deferRender === !0 && !h(this, Fe);
|
|
6075
6095
|
}, /** Resolve `mobile-presentation` against `env` and relay it to the live picker. */
|
|
@@ -6087,15 +6107,15 @@ Ct = function(t) {
|
|
|
6087
6107
|
St = function(t) {
|
|
6088
6108
|
const o = this.config.collapseBadgesBelow;
|
|
6089
6109
|
if (o == null) {
|
|
6090
|
-
h(this, ge) && (I(this, ge, !1),
|
|
6110
|
+
h(this, ge) && (I(this, ge, !1), b(this, y, ls).call(this));
|
|
6091
6111
|
return;
|
|
6092
6112
|
}
|
|
6093
6113
|
const i = t > 0 && t < o;
|
|
6094
|
-
i !== h(this, ge) && (I(this, ge, i), i ?
|
|
6114
|
+
i !== h(this, ge) && (I(this, ge, i), i ? b(this, y, cs).call(this, "count") : b(this, y, ls).call(this));
|
|
6095
6115
|
}, /** Re-assert the consumer's configured badges mode from the pristine base config. */
|
|
6096
6116
|
ls = function() {
|
|
6097
6117
|
const t = this.config.badgesDisplayMode ?? "badges";
|
|
6098
|
-
|
|
6118
|
+
b(this, y, cs).call(this, t);
|
|
6099
6119
|
}, /** Relay a badges-display-mode override to the live picker (never written to `this.config`). */
|
|
6100
6120
|
cs = function(t) {
|
|
6101
6121
|
var o;
|
|
@@ -6103,13 +6123,13 @@ cs = function(t) {
|
|
|
6103
6123
|
}, // ── picker lifecycle ──────────────────────────────────────────────────────
|
|
6104
6124
|
ds = function() {
|
|
6105
6125
|
var o;
|
|
6106
|
-
const t = h(this, C) ?
|
|
6107
|
-
(o = h(this, C)) == null || o.destroy(), I(this, C, void 0),
|
|
6126
|
+
const t = h(this, C) ? b(this, y, Ee).call(this) : void 0;
|
|
6127
|
+
(o = h(this, C)) == null || o.destroy(), I(this, C, void 0), b(this, y, Tt).call(this, t);
|
|
6108
6128
|
}, Tt = function(t) {
|
|
6109
|
-
|
|
6110
|
-
const o =
|
|
6111
|
-
I(this, ut, r), a && a.length > 0 ? h(this, fe).dataset.initialValues = JSON.stringify(a) : delete h(this, fe).dataset.initialValues, I(this, C, new hn(h(this, fe), o)),
|
|
6112
|
-
},
|
|
6129
|
+
b(this, y, Ao).call(this), b(this, y, Do).call(this);
|
|
6130
|
+
const o = b(this, y, zo).call(this), i = b(this, y, No).call(this), r = JSON.stringify(i ?? null), a = t !== void 0 && t.length > 0 && r === h(this, ut) ? t : i;
|
|
6131
|
+
I(this, ut, r), a && a.length > 0 ? h(this, fe).dataset.initialValues = JSON.stringify(a) : delete h(this, fe).dataset.initialValues, I(this, C, new hn(h(this, fe), o)), b(this, y, hs).call(this), b(this, y, ps).call(this), b(this, y, Ct).call(this, Lt()), I(this, ge, !1), b(this, y, St).call(this, this.getBoundingClientRect().width), this.hasAttribute("is-ready") || (I(this, Fe, !0), this.setAttribute("is-ready", ""), this.emit("ready"));
|
|
6132
|
+
}, Ao = function() {
|
|
6113
6133
|
if (h(this, fe)) return;
|
|
6114
6134
|
const t = document.createElement("div");
|
|
6115
6135
|
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), h(this, Q).appendChild(t), I(this, mt, Ni(h(this, Q), { position: "first", className: "ms-custom-styles" })), I(this, fe, t);
|
|
@@ -6118,9 +6138,9 @@ ds = function() {
|
|
|
6118
6138
|
* picker doesn't own, plus the runtime wiring (event bridges, container, host,
|
|
6119
6139
|
* declarative option data + member defaults, counter default).
|
|
6120
6140
|
*/
|
|
6121
|
-
|
|
6141
|
+
zo = function() {
|
|
6122
6142
|
const t = { ...this.config };
|
|
6123
|
-
for (const i of
|
|
6143
|
+
for (const i of to) delete t[i];
|
|
6124
6144
|
for (const i of Object.keys(t))
|
|
6125
6145
|
t[i] === null && delete t[i];
|
|
6126
6146
|
let o = t.options;
|
|
@@ -6144,19 +6164,19 @@ Ao = function() {
|
|
|
6144
6164
|
this.emit("select", {
|
|
6145
6165
|
option: i,
|
|
6146
6166
|
selectedOptions: ((r = h(this, C)) == null ? void 0 : r.getSelected()) ?? [],
|
|
6147
|
-
selectedValues:
|
|
6167
|
+
selectedValues: b(this, y, Ee).call(this)
|
|
6148
6168
|
});
|
|
6149
6169
|
}, t.onDeselect = (i) => {
|
|
6150
6170
|
var r;
|
|
6151
6171
|
this.emit("deselect", {
|
|
6152
6172
|
option: i,
|
|
6153
6173
|
selectedOptions: ((r = h(this, C)) == null ? void 0 : r.getSelected()) ?? [],
|
|
6154
|
-
selectedValues:
|
|
6174
|
+
selectedValues: b(this, y, Ee).call(this)
|
|
6155
6175
|
});
|
|
6156
6176
|
}, t.onChange = (i) => {
|
|
6157
6177
|
this.emit("change", {
|
|
6158
6178
|
selectedOptions: i,
|
|
6159
|
-
selectedValues:
|
|
6179
|
+
selectedValues: b(this, y, Ee).call(this)
|
|
6160
6180
|
});
|
|
6161
6181
|
}, t.onAddNew = (i) => {
|
|
6162
6182
|
var r;
|
|
@@ -6164,10 +6184,10 @@ Ao = function() {
|
|
|
6164
6184
|
value: i.value,
|
|
6165
6185
|
option: i.option,
|
|
6166
6186
|
selectedOptions: ((r = h(this, C)) == null ? void 0 : r.getSelected()) ?? [],
|
|
6167
|
-
selectedValues:
|
|
6187
|
+
selectedValues: b(this, y, Ee).call(this)
|
|
6168
6188
|
});
|
|
6169
6189
|
}, t.container = h(this, Q), t.hostElement = this, t;
|
|
6170
|
-
},
|
|
6190
|
+
}, No = function() {
|
|
6171
6191
|
if (h(this, Ie) && h(this, Ie).length > 0)
|
|
6172
6192
|
return h(this, Ie);
|
|
6173
6193
|
const t = this.config.initialValues;
|
|
@@ -6180,16 +6200,16 @@ Ao = function() {
|
|
|
6180
6200
|
hs = function() {
|
|
6181
6201
|
const t = h(this, mt);
|
|
6182
6202
|
if (!t) return;
|
|
6183
|
-
const o = this.config.customStylesCallback;
|
|
6203
|
+
const o = this.config.customStylesCallback, i = this.config.customStyles ?? null;
|
|
6184
6204
|
if (typeof o != "function") {
|
|
6185
|
-
t.
|
|
6205
|
+
t.set(i), i && b(this, y, us).call(this, i);
|
|
6186
6206
|
return;
|
|
6187
6207
|
}
|
|
6188
6208
|
try {
|
|
6189
|
-
const
|
|
6190
|
-
t.set(
|
|
6191
|
-
} catch (
|
|
6192
|
-
W.warn("[MultiSelectElement] customStylesCallback threw",
|
|
6209
|
+
const r = o();
|
|
6210
|
+
t.set(r), r && b(this, y, us).call(this, r);
|
|
6211
|
+
} catch (r) {
|
|
6212
|
+
W.warn("[MultiSelectElement] customStylesCallback threw", r), t.set(i);
|
|
6193
6213
|
}
|
|
6194
6214
|
}, /**
|
|
6195
6215
|
* Dev-only lint: warn when `customStylesCallback` *sets* a `--ms-*` variable
|
|
@@ -6200,7 +6220,7 @@ hs = function() {
|
|
|
6200
6220
|
* De-duped per instance. If you genuinely define a `--ms-*` var for your own
|
|
6201
6221
|
* custom-rendered content, ignore the warning (or use a different prefix).
|
|
6202
6222
|
*/
|
|
6203
|
-
|
|
6223
|
+
us = function(t) {
|
|
6204
6224
|
const o = _n();
|
|
6205
6225
|
if (o.size !== 0)
|
|
6206
6226
|
for (const { name: i, suggestions: r } of Ri(t, { prefix: "--ms-", consumed: o }))
|
|
@@ -6209,17 +6229,17 @@ No = function(t) {
|
|
|
6209
6229
|
));
|
|
6210
6230
|
}, // ── CSS-var sugar ─────────────────────────────────────────────────────────
|
|
6211
6231
|
$o = function() {
|
|
6212
|
-
for (const t of Object.keys(yt))
|
|
6232
|
+
for (const t of Object.keys(yt)) b(this, y, ms).call(this, yt[t], this.config[t]);
|
|
6213
6233
|
}, Vo = function(t) {
|
|
6214
6234
|
for (const o of Object.keys(yt))
|
|
6215
|
-
o in t &&
|
|
6216
|
-
},
|
|
6235
|
+
o in t && b(this, y, ms).call(this, yt[o], t[o]);
|
|
6236
|
+
}, ms = function(t, o) {
|
|
6217
6237
|
o == null || o === "" ? this.style.removeProperty(t) : this.style.setProperty(t, String(o));
|
|
6218
6238
|
}, // ── declarative <option> parsing (light DOM, once) ────────────────────────
|
|
6219
6239
|
Do = function() {
|
|
6220
6240
|
if (h(this, ft)) return;
|
|
6221
6241
|
I(this, ft, !0);
|
|
6222
|
-
const t =
|
|
6242
|
+
const t = b(this, y, Ro).call(this);
|
|
6223
6243
|
t && (I(this, We, t), I(this, Ke, !0));
|
|
6224
6244
|
}, Ro = function() {
|
|
6225
6245
|
const t = Array.from(this.children);
|
|
@@ -6248,7 +6268,7 @@ Do = function() {
|
|
|
6248
6268
|
(n.tagName === "OPTION" || n.tagName === "OPTGROUP") && n.remove();
|
|
6249
6269
|
return o;
|
|
6250
6270
|
}, // ── debug panel (deprecated; kept for back-compat) ────────────────────────
|
|
6251
|
-
|
|
6271
|
+
ps = function() {
|
|
6252
6272
|
const t = h(this, Q).querySelector(".ms__debug-info");
|
|
6253
6273
|
if (t && t.remove(), !this.config.showDebugInfo) return;
|
|
6254
6274
|
const o = document.createElement("div");
|
|
@@ -6256,12 +6276,12 @@ ms = function() {
|
|
|
6256
6276
|
const i = document.createElement("details"), r = document.createElement("summary");
|
|
6257
6277
|
r.textContent = "Debug Info";
|
|
6258
6278
|
const n = document.createElement("div");
|
|
6259
|
-
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), h(this, Q).appendChild(o),
|
|
6260
|
-
},
|
|
6279
|
+
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), h(this, Q).appendChild(o), b(this, y, fs).call(this);
|
|
6280
|
+
}, fs = function() {
|
|
6261
6281
|
var l, c, d, u;
|
|
6262
6282
|
const t = h(this, Q).querySelector(".ms__debug-stats");
|
|
6263
6283
|
if (!t || !h(this, C)) return;
|
|
6264
|
-
const o = "2.2.0-
|
|
6284
|
+
const o = "2.2.0-rc02", i = typeof window < "u" && ((c = (l = window.components) == null ? void 0 : l["web-multiselect"]) == null ? void 0 : c.getInstances().length) || 0, r = h(this, C).getSelected().length, n = ((d = this.config.options) == null ? void 0 : d.length) || 0, a = h(this, C);
|
|
6265
6285
|
t.innerHTML = `
|
|
6266
6286
|
<span>Version: ${o}</span>
|
|
6267
6287
|
<span>Total Instances: ${i}</span>
|
|
@@ -6272,7 +6292,7 @@ ms = function() {
|
|
|
6272
6292
|
<span>Search: ${a.searchTerm || "none"}</span>
|
|
6273
6293
|
<span>Loading: ${a.isLoading ? "Yes" : "No"}</span>
|
|
6274
6294
|
`, setTimeout(() => {
|
|
6275
|
-
this.config.showDebugInfo &&
|
|
6295
|
+
this.config.showDebugInfo && b(this, y, fs).call(this);
|
|
6276
6296
|
}, 500);
|
|
6277
6297
|
}, // Opt into the form-associated custom element lifecycle so form.reset() and
|
|
6278
6298
|
// form.elements see the control.
|
|
@@ -6281,7 +6301,7 @@ typeof customElements < "u" && !customElements.get("web-multiselect") && customE
|
|
|
6281
6301
|
Ei("web-multiselect", it, {
|
|
6282
6302
|
config: {
|
|
6283
6303
|
name: "@keenmate/web-multiselect",
|
|
6284
|
-
version: "2.2.0-
|
|
6304
|
+
version: "2.2.0-rc02",
|
|
6285
6305
|
author: "Keenmate s.r.o.",
|
|
6286
6306
|
license: "MIT",
|
|
6287
6307
|
repository: "git+https://github.com/keenmate/web-multiselect.git",
|