@keenmate/web-multiselect 2.0.0-rc05 → 2.0.0-rc06
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -28
- package/custom-elements.json +42 -0
- package/dist/index.d.ts +31 -0
- package/dist/multiselect.js +554 -499
- package/dist/multiselect.umd.js +9 -9
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/css/options.css +17 -3
- package/web-types.json +1 -1
package/dist/multiselect.js
CHANGED
|
@@ -4,7 +4,7 @@ var ts = (s) => {
|
|
|
4
4
|
};
|
|
5
5
|
var co = (s, e, t) => e in s ? lo(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
|
|
6
6
|
var m = (s, e, t) => co(s, typeof e != "symbol" ? e + "" : e, t), Tt = (s, e, t) => e.has(s) || ts("Cannot " + t);
|
|
7
|
-
var p = (s, e, t) => (Tt(s, e, "read from private field"), t ? t.call(s) : e.get(s)),
|
|
7
|
+
var p = (s, e, t) => (Tt(s, e, "read from private field"), t ? t.call(s) : e.get(s)), E = (s, e, t) => e.has(s) ? ts("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), D = (s, e, t, o) => (Tt(s, e, "write to private field"), o ? o.call(s, t) : e.set(s, t), t), x = (s, e, t) => (Tt(s, e, "access private method"), t);
|
|
8
8
|
function F(s, e = {}) {
|
|
9
9
|
const t = new Set(s), o = e.shouldNullOnInvalid ? null : e.default ?? null;
|
|
10
10
|
return {
|
|
@@ -20,7 +20,7 @@ function F(s, e = {}) {
|
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function X(s = {}) {
|
|
24
24
|
const e = (o) => (s.min == null || o >= s.min) && (s.max == null || o <= s.max), t = s.default;
|
|
25
25
|
return {
|
|
26
26
|
fromAttribute(o) {
|
|
@@ -37,7 +37,7 @@ function q(s = {}) {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function A(s = {}) {
|
|
41
41
|
const e = s.isNullable === !0, t = s.default ?? (e ? null : ""), o = (i) => s.shouldTrim ? i.trim() : i;
|
|
42
42
|
return {
|
|
43
43
|
fromAttribute(i) {
|
|
@@ -55,7 +55,7 @@ function E(s = {}) {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
const ho = /* @__PURE__ */ new Set(["", "true", "1", "yes", "on"]), uo = /* @__PURE__ */ new Set(["false", "0", "no", "off"]);
|
|
58
|
-
function
|
|
58
|
+
function B(s = "presence") {
|
|
59
59
|
const e = (t) => {
|
|
60
60
|
const o = t.trim().toLowerCase();
|
|
61
61
|
return ho.has(o) ? !0 : uo.has(o) ? !1 : null;
|
|
@@ -223,7 +223,7 @@ function Co() {
|
|
|
223
223
|
function Re(s) {
|
|
224
224
|
return Gt() && window.matchMedia(s).matches;
|
|
225
225
|
}
|
|
226
|
-
function
|
|
226
|
+
function Xt() {
|
|
227
227
|
if (!Gt())
|
|
228
228
|
return { ...Ps };
|
|
229
229
|
const s = Re("(any-pointer: coarse)"), e = Re("(pointer: coarse)"), t = Re("(pointer: fine)"), o = Re("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a = Co();
|
|
@@ -245,7 +245,7 @@ function So(s, e) {
|
|
|
245
245
|
return s.pointer === e.pointer && s.hasCoarsePointer === e.hasCoarsePointer && s.canHover === e.canHover && s.isTouchPrimary === e.isTouchPrimary && s.orientation === e.orientation && s.viewportWidth === e.viewportWidth && s.viewportHeight === e.viewportHeight && s.breakpoint === e.breakpoint;
|
|
246
246
|
}
|
|
247
247
|
function Et() {
|
|
248
|
-
const s =
|
|
248
|
+
const s = Xt();
|
|
249
249
|
if (!(Ce && So(Ce, s))) {
|
|
250
250
|
Ce = s;
|
|
251
251
|
for (const e of [...Fe])
|
|
@@ -282,7 +282,7 @@ function Io() {
|
|
|
282
282
|
];
|
|
283
283
|
for (const s of ht)
|
|
284
284
|
To(s);
|
|
285
|
-
typeof window.addEventListener == "function" && window.addEventListener("resize", Ms), Ce =
|
|
285
|
+
typeof window.addEventListener == "function" && window.addEventListener("resize", Ms), Ce = Xt();
|
|
286
286
|
}
|
|
287
287
|
function Po() {
|
|
288
288
|
for (const s of ht)
|
|
@@ -290,7 +290,7 @@ function Po() {
|
|
|
290
290
|
ht = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize", Ms), lt = !1, Ce = null;
|
|
291
291
|
}
|
|
292
292
|
function At() {
|
|
293
|
-
return Ce ??
|
|
293
|
+
return Ce ?? Xt();
|
|
294
294
|
}
|
|
295
295
|
function Mo(s, e = {}) {
|
|
296
296
|
const t = Fe.size === 0;
|
|
@@ -313,11 +313,11 @@ function zo(s, e) {
|
|
|
313
313
|
var t;
|
|
314
314
|
(t = mt.get(s)) == null || t.delete(e);
|
|
315
315
|
}
|
|
316
|
-
function
|
|
316
|
+
function Do(s) {
|
|
317
317
|
return Array.from(mt.get(s) ?? []);
|
|
318
318
|
}
|
|
319
319
|
const Ls = /* @__PURE__ */ new Map();
|
|
320
|
-
function
|
|
320
|
+
function $o(s, e) {
|
|
321
321
|
Ls.set(s.toLowerCase(), e);
|
|
322
322
|
}
|
|
323
323
|
function Vo(s) {
|
|
@@ -352,23 +352,23 @@ const Wo = { trace() {
|
|
|
352
352
|
}, warn() {
|
|
353
353
|
}, error() {
|
|
354
354
|
} }, jo = new Proxy({}, { get: () => Wo });
|
|
355
|
-
var he, Je, ve, Qe, ye, Ze, yt, we, ue, xe, _e, Pe, Me, Le, Ee, wt, se, Ae,
|
|
356
|
-
const
|
|
355
|
+
var he, Je, ve, Qe, ye, Ze, yt, we, ue, xe, _e, Pe, Me, Le, Ee, wt, se, Ae, T, Es, As, zs, Y, Ds, $s, Dt, $t, We, Vt, Vs;
|
|
356
|
+
const Xe = class Xe extends Ko {
|
|
357
357
|
constructor() {
|
|
358
358
|
super();
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
359
|
+
E(this, T);
|
|
360
|
+
E(this, he, {});
|
|
361
|
+
E(this, Je, /* @__PURE__ */ new Map());
|
|
362
|
+
E(this, ve, /* @__PURE__ */ new Map());
|
|
363
|
+
E(this, Qe, /* @__PURE__ */ new Map());
|
|
364
364
|
/** Live handler currently bound via each managed `on<Name>` property, keyed by event name. */
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
365
|
+
E(this, ye, /* @__PURE__ */ new Map());
|
|
366
|
+
E(this, Ze, vo());
|
|
367
|
+
E(this, yt, () => x(this, T, Vt).call(this));
|
|
368
|
+
E(this, we, null);
|
|
369
|
+
E(this, ue, !1);
|
|
370
|
+
E(this, xe, []);
|
|
371
|
+
E(this, _e, !1);
|
|
372
372
|
/**
|
|
373
373
|
* configKeys that carried a value assigned BEFORE the element was upgraded
|
|
374
374
|
* (`el.foo = …` before its class was defined). The browser fires the initial
|
|
@@ -378,21 +378,21 @@ const qe = class qe extends Ko {
|
|
|
378
378
|
* guarantee); post-connect attribute changes react normally. Cleared on first
|
|
379
379
|
* connect.
|
|
380
380
|
*/
|
|
381
|
-
|
|
382
|
-
|
|
381
|
+
E(this, Pe, null);
|
|
382
|
+
E(this, Me, !1);
|
|
383
383
|
/** Unsubscribe from the environment observable; set only while connected AND `environmentChanged` is overridden. */
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
384
|
+
E(this, Le);
|
|
385
|
+
E(this, Ee);
|
|
386
|
+
E(this, wt);
|
|
387
|
+
E(this, se);
|
|
388
|
+
E(this, Ae);
|
|
389
389
|
const t = this.constructor, o = t.inputs ?? [], i = Bo(t.events);
|
|
390
|
-
|
|
390
|
+
x(this, T, zs).call(this, o, i);
|
|
391
391
|
for (const r of o)
|
|
392
392
|
p(this, Je).set(r.configKey, r), r.attribute && p(this, ve).set(r.attribute, r);
|
|
393
393
|
for (const r of i)
|
|
394
394
|
p(this, Qe).set(r.name, r);
|
|
395
|
-
|
|
395
|
+
x(this, T, Es).call(this, o), x(this, T, Ds).call(this, o), x(this, T, $s).call(this, i);
|
|
396
396
|
}
|
|
397
397
|
static get observedAttributes() {
|
|
398
398
|
const t = (this.inputs ?? []).filter((o) => o.attribute).map((o) => o.attribute);
|
|
@@ -414,29 +414,29 @@ const qe = class qe extends Ko {
|
|
|
414
414
|
try {
|
|
415
415
|
n = go(r, i, this);
|
|
416
416
|
} catch (l) {
|
|
417
|
-
|
|
417
|
+
x(this, T, Y).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = x(this, T, As).call(this, r);
|
|
418
418
|
}
|
|
419
|
-
|
|
419
|
+
x(this, T, $t).call(this, n);
|
|
420
420
|
}
|
|
421
421
|
connectedCallback() {
|
|
422
|
-
Ao(this.localName, this), p(this, _e) || (
|
|
422
|
+
Ao(this.localName, this), p(this, _e) || (D(this, _e, !0), D(this, Pe, null), D(this, ue, !0)), x(this, T, We).call(this), this.connect(), this.environmentChanged !== Xe.prototype.environmentChanged && D(this, Le, Mo((t) => this.environmentChanged(t)));
|
|
423
423
|
}
|
|
424
424
|
disconnectedCallback() {
|
|
425
425
|
var t;
|
|
426
|
-
zo(this.localName, this), (t = p(this, Le)) == null || t.call(this),
|
|
426
|
+
zo(this.localName, this), (t = p(this, Le)) == null || t.call(this), D(this, Le, void 0), this.disconnect();
|
|
427
427
|
}
|
|
428
428
|
// ── public batching API ─────────────────────────────────────────────────
|
|
429
429
|
/** Apply many inputs (by `configKey` or attribute name) as ONE reinit/update. */
|
|
430
430
|
setAttributes(t) {
|
|
431
431
|
for (const [o, i] of Object.entries(t)) {
|
|
432
432
|
const r = p(this, Je).get(o) ?? p(this, ve).get(o);
|
|
433
|
-
r &&
|
|
433
|
+
r && x(this, T, Dt).call(this, r, i);
|
|
434
434
|
}
|
|
435
|
-
|
|
435
|
+
x(this, T, We).call(this);
|
|
436
436
|
}
|
|
437
437
|
/** Run `fn` and coalesce every input change it makes into a single reinit/update. */
|
|
438
438
|
batch(t) {
|
|
439
|
-
t(),
|
|
439
|
+
t(), x(this, T, We).call(this);
|
|
440
440
|
}
|
|
441
441
|
/**
|
|
442
442
|
* Apply any pending input writes **synchronously, now** — running the
|
|
@@ -452,7 +452,7 @@ const qe = class qe extends Ko {
|
|
|
452
452
|
* `await whenSettled()` between the two.
|
|
453
453
|
*/
|
|
454
454
|
flush() {
|
|
455
|
-
|
|
455
|
+
x(this, T, We).call(this);
|
|
456
456
|
}
|
|
457
457
|
/**
|
|
458
458
|
* Resolves once the element is **settled** — i.e. every staged input change
|
|
@@ -493,8 +493,8 @@ const qe = class qe extends Ko {
|
|
|
493
493
|
const t = Vo(this.localName);
|
|
494
494
|
if (!t)
|
|
495
495
|
return jo;
|
|
496
|
-
const o = p(this, wt) ??
|
|
497
|
-
return
|
|
496
|
+
const o = p(this, wt) ?? D(this, wt, `${this.localName}#${this.id || ++Fo}`);
|
|
497
|
+
return D(this, Ae, t.forInstance(o, () => p(this, se)));
|
|
498
498
|
}
|
|
499
499
|
/**
|
|
500
500
|
* Turn on verbose logging for THIS element only (default `debug`), independent
|
|
@@ -502,11 +502,11 @@ const qe = class qe extends Ko {
|
|
|
502
502
|
* picks one instance. Pairs with {@link disableLogging}.
|
|
503
503
|
*/
|
|
504
504
|
enableLogging(t = "debug") {
|
|
505
|
-
|
|
505
|
+
D(this, se, t);
|
|
506
506
|
}
|
|
507
507
|
/** Clear this element's logging override (falls back to the type-level level). */
|
|
508
508
|
disableLogging() {
|
|
509
|
-
|
|
509
|
+
D(this, se, void 0);
|
|
510
510
|
}
|
|
511
511
|
/** Whether this element has an active logging override (not unset/`silent`). */
|
|
512
512
|
get isLoggingEnabled() {
|
|
@@ -596,7 +596,7 @@ const qe = class qe extends Ko {
|
|
|
596
596
|
if (typeof this.attachInternals != "function")
|
|
597
597
|
return null;
|
|
598
598
|
try {
|
|
599
|
-
return
|
|
599
|
+
return D(this, Ee, this.attachInternals());
|
|
600
600
|
} catch {
|
|
601
601
|
return null;
|
|
602
602
|
}
|
|
@@ -665,7 +665,7 @@ const qe = class qe extends Ko {
|
|
|
665
665
|
}
|
|
666
666
|
}
|
|
667
667
|
};
|
|
668
|
-
he = new WeakMap(), Je = new WeakMap(), ve = new WeakMap(), Qe = new WeakMap(), ye = new WeakMap(), Ze = new WeakMap(), yt = new WeakMap(), we = new WeakMap(), ue = new WeakMap(), xe = new WeakMap(), _e = new WeakMap(), Pe = new WeakMap(), Me = new WeakMap(), Le = new WeakMap(), Ee = new WeakMap(), wt = new WeakMap(), se = new WeakMap(), Ae = new WeakMap(),
|
|
668
|
+
he = new WeakMap(), Je = new WeakMap(), ve = new WeakMap(), Qe = new WeakMap(), ye = new WeakMap(), Ze = new WeakMap(), yt = new WeakMap(), we = new WeakMap(), ue = new WeakMap(), xe = new WeakMap(), _e = new WeakMap(), Pe = new WeakMap(), Me = new WeakMap(), Le = new WeakMap(), Ee = new WeakMap(), wt = new WeakMap(), se = new WeakMap(), Ae = new WeakMap(), T = new WeakSet(), // ── internals ─────────────────────────────────────────────────────────────
|
|
669
669
|
Es = function(t) {
|
|
670
670
|
var o;
|
|
671
671
|
for (const i of t) {
|
|
@@ -674,7 +674,7 @@ Es = function(t) {
|
|
|
674
674
|
try {
|
|
675
675
|
r = i.converter.fromAttribute(null, this, i.attribute ?? i.configKey);
|
|
676
676
|
} catch (n) {
|
|
677
|
-
|
|
677
|
+
x(this, T, Y).call(this, `converter for "${i.configKey}" threw computing its default; using \`default\``, n), r = i.default;
|
|
678
678
|
}
|
|
679
679
|
p(this, he)[i.configKey] = r, i.field && (this[i.field] = r);
|
|
680
680
|
}
|
|
@@ -689,33 +689,33 @@ zs = function(t, o) {
|
|
|
689
689
|
os.add(i);
|
|
690
690
|
const r = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
|
|
691
691
|
for (const c of t)
|
|
692
|
-
r.has(c.configKey) &&
|
|
692
|
+
r.has(c.configKey) && x(this, T, Y).call(this, `invalid input table: duplicate configKey "${c.configKey}"`), r.add(c.configKey), c.attribute && (n.has(c.attribute) && x(this, T, Y).call(this, `invalid input table: duplicate attribute "${c.attribute}"`), n.add(c.attribute)), c.reflect && !c.attribute && x(this, T, Y).call(this, `invalid input table: "${c.configKey}" has reflect:true but no attribute to reflect to`), c.reflect && !((l = c.converter) != null && l.toAttribute) && x(this, T, Y).call(this, `invalid input table: "${c.configKey}" has reflect:true but its converter has no toAttribute`);
|
|
693
693
|
const a = /* @__PURE__ */ new Set();
|
|
694
694
|
for (const c of o)
|
|
695
|
-
a.has(c.name) &&
|
|
695
|
+
a.has(c.name) && x(this, T, Y).call(this, `invalid event table: duplicate event "${c.name}"`), a.add(c.name), /^[a-z][a-z0-9-]*$/.test(c.name) || x(this, T, Y).call(this, `invalid event table: event "${c.name}" should be lowercase kebab-case (e.g. "date-select")`), c.property && r.has(c.property) && x(this, T, Y).call(this, `invalid event table: event "${c.name}" property "${c.property}" collides with an input configKey`);
|
|
696
696
|
}, /**
|
|
697
697
|
* Always-on console warning for input validation failures. Deliberately uses
|
|
698
698
|
* `console.warn` directly — NOT the (future) categorized logger — so rejected
|
|
699
699
|
* inputs surface even when logging is disabled.
|
|
700
700
|
*/
|
|
701
|
-
|
|
701
|
+
Y = function(t, ...o) {
|
|
702
702
|
console.warn(`[BlissElement] <${this.localName ?? "unknown"}> ${t}`, ...o);
|
|
703
|
-
},
|
|
703
|
+
}, Ds = function(t) {
|
|
704
704
|
for (const o of t) {
|
|
705
705
|
const i = o.configKey, r = Object.prototype.hasOwnProperty.call(this, i), n = r ? this[i] : void 0;
|
|
706
706
|
r && delete this[i], Object.defineProperty(this, i, {
|
|
707
707
|
configurable: !0,
|
|
708
708
|
enumerable: !0,
|
|
709
709
|
get: () => p(this, he)[i],
|
|
710
|
-
set: (a) =>
|
|
711
|
-
}), r && ((p(this, Pe) ??
|
|
710
|
+
set: (a) => x(this, T, Dt).call(this, o, a)
|
|
711
|
+
}), r && ((p(this, Pe) ?? D(this, Pe, /* @__PURE__ */ new Set())).add(i), this[i] = n);
|
|
712
712
|
}
|
|
713
713
|
}, /**
|
|
714
714
|
* Install a managed `on<Name>` handler property per event. Assigning it
|
|
715
715
|
* (de)registers a real listener for the event, so the property behaves like
|
|
716
716
|
* `addEventListener(name, …)` and its handler receives the `CustomEvent`.
|
|
717
717
|
*/
|
|
718
|
-
|
|
718
|
+
$s = function(t) {
|
|
719
719
|
for (const o of t) {
|
|
720
720
|
const i = o.property;
|
|
721
721
|
if (!i)
|
|
@@ -735,48 +735,48 @@ Ds = function(t) {
|
|
|
735
735
|
}
|
|
736
736
|
}), n && (this[i] = a);
|
|
737
737
|
}
|
|
738
|
-
},
|
|
738
|
+
}, Dt = function(t, o) {
|
|
739
739
|
var r;
|
|
740
740
|
const i = bo(t, o);
|
|
741
741
|
if (!i) {
|
|
742
|
-
|
|
742
|
+
x(this, T, Y).call(this, `rejected invalid value for property "${t.configKey}"; keeping previous value`, o);
|
|
743
743
|
return;
|
|
744
744
|
}
|
|
745
|
-
if (
|
|
745
|
+
if (x(this, T, $t).call(this, i), t.reflect && t.attribute && ((r = t.converter) != null && r.toAttribute)) {
|
|
746
746
|
const n = t.converter.toAttribute(i.value);
|
|
747
|
-
|
|
747
|
+
D(this, Me, !0);
|
|
748
748
|
try {
|
|
749
749
|
n === null ? this.removeAttribute(t.attribute) : this.setAttribute(t.attribute, n);
|
|
750
750
|
} finally {
|
|
751
|
-
|
|
751
|
+
D(this, Me, !1);
|
|
752
752
|
}
|
|
753
753
|
}
|
|
754
|
-
},
|
|
755
|
-
p(this, he)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" &&
|
|
754
|
+
}, $t = function(t) {
|
|
755
|
+
p(this, he)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" && D(this, ue, !0), (p(this, we) ?? D(this, we, {}))[t.configKey] = t.value, p(this, Ze).schedule(p(this, yt)));
|
|
756
756
|
}, /** Cancel any queued microtask and flush pending changes synchronously now. */
|
|
757
757
|
We = function() {
|
|
758
|
-
p(this, Ze).cancel(),
|
|
758
|
+
p(this, Ze).cancel(), x(this, T, Vt).call(this);
|
|
759
759
|
}, Vt = function() {
|
|
760
760
|
if (!this.isConnected)
|
|
761
761
|
return;
|
|
762
762
|
const t = p(this, ue), o = p(this, we);
|
|
763
|
-
|
|
763
|
+
D(this, ue, !1), D(this, we, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o), x(this, T, Vs).call(this);
|
|
764
764
|
}, /** Resolve everyone awaiting {@link whenSettled} for the flush that just ran. */
|
|
765
765
|
Vs = function() {
|
|
766
766
|
if (p(this, xe).length === 0)
|
|
767
767
|
return;
|
|
768
768
|
const t = p(this, xe);
|
|
769
|
-
|
|
769
|
+
D(this, xe, []);
|
|
770
770
|
for (const o of t)
|
|
771
771
|
o();
|
|
772
772
|
}, /** The opt-in input table. Subclasses set this to enable attribute/property reactivity. */
|
|
773
|
-
m(
|
|
773
|
+
m(Xe, "inputs"), /**
|
|
774
774
|
* The opt-in event table (SPEC §12.5). Each entry (a bare name, or an
|
|
775
775
|
* {@link EventDef} for overrides) declares an outward notification that
|
|
776
776
|
* {@link emit} can fire and installs a managed `on<Name>` handler property.
|
|
777
777
|
*/
|
|
778
|
-
m(
|
|
779
|
-
let zt =
|
|
778
|
+
m(Xe, "events");
|
|
779
|
+
let zt = Xe;
|
|
780
780
|
function is(s, e, t) {
|
|
781
781
|
typeof customElements > "u" || customElements.get(s) || customElements.define(s, e, t);
|
|
782
782
|
}
|
|
@@ -791,19 +791,19 @@ function Uo(s) {
|
|
|
791
791
|
}
|
|
792
792
|
function Go(s, e, t) {
|
|
793
793
|
const { config: o, logging: i, shouldAutoDefine: r = !0 } = t;
|
|
794
|
-
i &&
|
|
794
|
+
i && $o(s, i);
|
|
795
795
|
const n = {
|
|
796
796
|
version: () => o.version,
|
|
797
797
|
config: o,
|
|
798
798
|
...i ? { logging: Uo(i) } : {},
|
|
799
799
|
register: () => is(s, e),
|
|
800
|
-
getInstances: () =>
|
|
800
|
+
getInstances: () => Do(s)
|
|
801
801
|
};
|
|
802
802
|
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && is(s, e), n;
|
|
803
803
|
}
|
|
804
804
|
const rs = /* @__PURE__ */ new Map(), ns = /* @__PURE__ */ new WeakMap();
|
|
805
805
|
let ot;
|
|
806
|
-
function
|
|
806
|
+
function Xo(s) {
|
|
807
807
|
if (typeof CSSStyleSheet > "u" || !("adoptedStyleSheets" in s))
|
|
808
808
|
return !1;
|
|
809
809
|
if (ot === void 0)
|
|
@@ -814,7 +814,7 @@ function qo(s) {
|
|
|
814
814
|
}
|
|
815
815
|
return ot;
|
|
816
816
|
}
|
|
817
|
-
function
|
|
817
|
+
function qo(s, ...e) {
|
|
818
818
|
if (typeof document > "u")
|
|
819
819
|
return;
|
|
820
820
|
let t = ns.get(s);
|
|
@@ -824,7 +824,7 @@ function Yo(s, ...e) {
|
|
|
824
824
|
return;
|
|
825
825
|
for (const r of o)
|
|
826
826
|
t.add(r);
|
|
827
|
-
if (
|
|
827
|
+
if (Xo(s)) {
|
|
828
828
|
const r = o.map((n) => {
|
|
829
829
|
let a = rs.get(n);
|
|
830
830
|
return a || (a = new CSSStyleSheet(), a.replaceSync(n), rs.set(n, a)), a;
|
|
@@ -838,7 +838,7 @@ function Yo(s, ...e) {
|
|
|
838
838
|
n.textContent = r, i.appendChild(n);
|
|
839
839
|
}
|
|
840
840
|
}
|
|
841
|
-
function
|
|
841
|
+
function Yo(s, e = {}) {
|
|
842
842
|
const t = e.position ?? "last", o = s.head ?? s;
|
|
843
843
|
let i = null;
|
|
844
844
|
const r = () => typeof document > "u" ? null : (i || (i = document.createElement("style"), e.className && (i.className = e.className)), i.parentNode !== o && (t === "first" && o.firstChild ? o.insertBefore(i, o.firstChild) : o.appendChild(i)), i), n = () => {
|
|
@@ -1142,7 +1142,7 @@ const pe = Math.min, ie = Math.max, gt = Math.round, rt = Math.floor, re = (s) =
|
|
|
1142
1142
|
function Hs(s, e, t) {
|
|
1143
1143
|
return ie(s, pe(e, t));
|
|
1144
1144
|
}
|
|
1145
|
-
function
|
|
1145
|
+
function $e(s, e) {
|
|
1146
1146
|
return typeof s == "function" ? s(e) : s;
|
|
1147
1147
|
}
|
|
1148
1148
|
function Se(s) {
|
|
@@ -1154,19 +1154,19 @@ function Ve(s) {
|
|
|
1154
1154
|
function Bs(s) {
|
|
1155
1155
|
return s === "x" ? "y" : "x";
|
|
1156
1156
|
}
|
|
1157
|
-
function
|
|
1157
|
+
function qt(s) {
|
|
1158
1158
|
return s === "y" ? "height" : "width";
|
|
1159
1159
|
}
|
|
1160
1160
|
function oe(s) {
|
|
1161
1161
|
const e = s[0];
|
|
1162
1162
|
return e === "t" || e === "b" ? "y" : "x";
|
|
1163
1163
|
}
|
|
1164
|
-
function
|
|
1164
|
+
function Yt(s) {
|
|
1165
1165
|
return Bs(oe(s));
|
|
1166
1166
|
}
|
|
1167
1167
|
function bi(s, e, t) {
|
|
1168
1168
|
t === void 0 && (t = !1);
|
|
1169
|
-
const o = Ve(s), i =
|
|
1169
|
+
const o = Ve(s), i = Yt(s), r = qt(i);
|
|
1170
1170
|
let n = i === "x" ? o === (t ? "end" : "start") ? "right" : "left" : o === "start" ? "bottom" : "top";
|
|
1171
1171
|
return e.reference[r] > e.floating[r] && (n = bt(n)), [n, bt(n)];
|
|
1172
1172
|
}
|
|
@@ -1239,7 +1239,7 @@ function ms(s, e, t) {
|
|
|
1239
1239
|
reference: o,
|
|
1240
1240
|
floating: i
|
|
1241
1241
|
} = s;
|
|
1242
|
-
const r = oe(e), n =
|
|
1242
|
+
const r = oe(e), n = Yt(e), a = qt(n), l = Se(e), c = r === "y", d = o.x + o.width / 2 - i.width / 2, h = o.y + o.height / 2 - i.height / 2, f = o[a] / 2 - i[a] / 2;
|
|
1243
1243
|
let u;
|
|
1244
1244
|
switch (l) {
|
|
1245
1245
|
case "top":
|
|
@@ -1291,30 +1291,30 @@ async function Ci(s, e) {
|
|
|
1291
1291
|
elementContext: h = "floating",
|
|
1292
1292
|
altBoundary: f = !1,
|
|
1293
1293
|
padding: u = 0
|
|
1294
|
-
} =
|
|
1294
|
+
} = $e(e, s), g = Ks(u), y = a[f ? h === "floating" ? "reference" : "floating" : h], v = vt(await r.getClippingRect({
|
|
1295
1295
|
element: (t = await (r.isElement == null ? void 0 : r.isElement(y))) == null || t ? y : y.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(a.floating)),
|
|
1296
1296
|
boundary: c,
|
|
1297
1297
|
rootBoundary: d,
|
|
1298
1298
|
strategy: l
|
|
1299
|
-
})),
|
|
1299
|
+
})), w = h === "floating" ? {
|
|
1300
1300
|
x: o,
|
|
1301
1301
|
y: i,
|
|
1302
1302
|
width: n.floating.width,
|
|
1303
1303
|
height: n.floating.height
|
|
1304
|
-
} : n.reference,
|
|
1304
|
+
} : n.reference, k = await (r.getOffsetParent == null ? void 0 : r.getOffsetParent(a.floating)), P = await (r.isElement == null ? void 0 : r.isElement(k)) && await (r.getScale == null ? void 0 : r.getScale(k)) || {
|
|
1305
1305
|
x: 1,
|
|
1306
1306
|
y: 1
|
|
1307
|
-
},
|
|
1307
|
+
}, M = vt(r.convertOffsetParentRelativeRectToViewportRelativeRect ? await r.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
1308
1308
|
elements: a,
|
|
1309
|
-
rect:
|
|
1310
|
-
offsetParent:
|
|
1309
|
+
rect: w,
|
|
1310
|
+
offsetParent: k,
|
|
1311
1311
|
strategy: l
|
|
1312
|
-
}) :
|
|
1312
|
+
}) : w);
|
|
1313
1313
|
return {
|
|
1314
|
-
top: (
|
|
1315
|
-
bottom: (
|
|
1316
|
-
left: (
|
|
1317
|
-
right: (
|
|
1314
|
+
top: (v.top - M.top + g.top) / P.y,
|
|
1315
|
+
bottom: (M.bottom - v.bottom + g.bottom) / P.y,
|
|
1316
|
+
left: (v.left - M.left + g.left) / P.x,
|
|
1317
|
+
right: (M.right - v.right + g.right) / P.x
|
|
1318
1318
|
};
|
|
1319
1319
|
}
|
|
1320
1320
|
const Si = 50, Ti = async (s, e, t) => {
|
|
@@ -1336,19 +1336,19 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1336
1336
|
y: h
|
|
1337
1337
|
} = ms(c, o, l), f = o, u = 0;
|
|
1338
1338
|
const g = {};
|
|
1339
|
-
for (let
|
|
1340
|
-
const y = r[
|
|
1339
|
+
for (let b = 0; b < r.length; b++) {
|
|
1340
|
+
const y = r[b];
|
|
1341
1341
|
if (!y)
|
|
1342
1342
|
continue;
|
|
1343
1343
|
const {
|
|
1344
|
-
name:
|
|
1345
|
-
fn:
|
|
1344
|
+
name: v,
|
|
1345
|
+
fn: w
|
|
1346
1346
|
} = y, {
|
|
1347
|
-
x:
|
|
1348
|
-
y:
|
|
1349
|
-
data:
|
|
1350
|
-
reset:
|
|
1351
|
-
} = await
|
|
1347
|
+
x: k,
|
|
1348
|
+
y: P,
|
|
1349
|
+
data: M,
|
|
1350
|
+
reset: V
|
|
1351
|
+
} = await w({
|
|
1352
1352
|
x: d,
|
|
1353
1353
|
y: h,
|
|
1354
1354
|
initialPlacement: o,
|
|
@@ -1362,17 +1362,17 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1362
1362
|
floating: e
|
|
1363
1363
|
}
|
|
1364
1364
|
});
|
|
1365
|
-
d =
|
|
1366
|
-
...g[
|
|
1367
|
-
...
|
|
1368
|
-
},
|
|
1365
|
+
d = k ?? d, h = P ?? h, g[v] = {
|
|
1366
|
+
...g[v],
|
|
1367
|
+
...M
|
|
1368
|
+
}, V && u < Si && (u++, typeof V == "object" && (V.placement && (f = V.placement), V.rects && (c = V.rects === !0 ? await n.getElementRects({
|
|
1369
1369
|
reference: s,
|
|
1370
1370
|
floating: e,
|
|
1371
1371
|
strategy: i
|
|
1372
|
-
}) :
|
|
1372
|
+
}) : V.rects), {
|
|
1373
1373
|
x: d,
|
|
1374
1374
|
y: h
|
|
1375
|
-
} = ms(c, f, l)),
|
|
1375
|
+
} = ms(c, f, l)), b = -1);
|
|
1376
1376
|
}
|
|
1377
1377
|
return {
|
|
1378
1378
|
x: d,
|
|
@@ -1396,26 +1396,26 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1396
1396
|
} = e, {
|
|
1397
1397
|
element: c,
|
|
1398
1398
|
padding: d = 0
|
|
1399
|
-
} =
|
|
1399
|
+
} = $e(s, e) || {};
|
|
1400
1400
|
if (c == null)
|
|
1401
1401
|
return {};
|
|
1402
1402
|
const h = Ks(d), f = {
|
|
1403
1403
|
x: t,
|
|
1404
1404
|
y: o
|
|
1405
|
-
}, u =
|
|
1406
|
-
let
|
|
1407
|
-
(!
|
|
1408
|
-
const G =
|
|
1405
|
+
}, u = Yt(i), g = qt(u), b = await n.getDimensions(c), y = u === "y", v = y ? "top" : "left", w = y ? "bottom" : "right", k = y ? "clientHeight" : "clientWidth", P = r.reference[g] + r.reference[u] - f[u] - r.floating[g], M = f[u] - r.reference[u], V = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(c));
|
|
1406
|
+
let R = V ? V[k] : 0;
|
|
1407
|
+
(!R || !await (n.isElement == null ? void 0 : n.isElement(V))) && (R = a.floating[k] || r.floating[g]);
|
|
1408
|
+
const G = P / 2 - M / 2, L = R / 2 - b[g] / 2 - 1, C = pe(h[v], L), O = pe(h[w], L), I = R - b[g] - O, N = R / 2 - b[g] / 2 + G, S = Hs(C, N, I), H = !l.arrow && Ve(i) != null && N !== S && r.reference[g] / 2 - (N < C ? C : O) - b[g] / 2 < 0, te = H ? N < C ? N - C : N - I : 0;
|
|
1409
1409
|
return {
|
|
1410
1410
|
[u]: f[u] + te,
|
|
1411
1411
|
data: {
|
|
1412
|
-
[u]:
|
|
1413
|
-
centerOffset:
|
|
1414
|
-
...
|
|
1412
|
+
[u]: S,
|
|
1413
|
+
centerOffset: N - S - te,
|
|
1414
|
+
...H && {
|
|
1415
1415
|
alignmentOffset: te
|
|
1416
1416
|
}
|
|
1417
1417
|
},
|
|
1418
|
-
reset:
|
|
1418
|
+
reset: H
|
|
1419
1419
|
};
|
|
1420
1420
|
}
|
|
1421
1421
|
}), Ii = function(s) {
|
|
@@ -1437,51 +1437,51 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1437
1437
|
fallbackPlacements: f,
|
|
1438
1438
|
fallbackStrategy: u = "bestFit",
|
|
1439
1439
|
fallbackAxisSideDirection: g = "none",
|
|
1440
|
-
flipAlignment:
|
|
1440
|
+
flipAlignment: b = !0,
|
|
1441
1441
|
...y
|
|
1442
|
-
} =
|
|
1442
|
+
} = $e(s, e);
|
|
1443
1443
|
if ((t = r.arrow) != null && t.alignmentOffset)
|
|
1444
1444
|
return {};
|
|
1445
|
-
const
|
|
1446
|
-
!f &&
|
|
1447
|
-
const
|
|
1448
|
-
let
|
|
1449
|
-
if (d &&
|
|
1450
|
-
const
|
|
1451
|
-
|
|
1445
|
+
const v = Se(i), w = oe(a), k = Se(a) === a, P = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), M = f || (k || !b ? [bt(a)] : vi(a)), V = g !== "none";
|
|
1446
|
+
!f && V && M.push(..._i(a, b, g, P));
|
|
1447
|
+
const R = [a, ...M], G = await l.detectOverflow(e, y), L = [];
|
|
1448
|
+
let C = ((o = r.flip) == null ? void 0 : o.overflows) || [];
|
|
1449
|
+
if (d && L.push(G[v]), h) {
|
|
1450
|
+
const S = bi(i, n, P);
|
|
1451
|
+
L.push(G[S[0]], G[S[1]]);
|
|
1452
1452
|
}
|
|
1453
|
-
if (
|
|
1453
|
+
if (C = [...C, {
|
|
1454
1454
|
placement: i,
|
|
1455
|
-
overflows:
|
|
1456
|
-
}], !
|
|
1457
|
-
var
|
|
1458
|
-
const
|
|
1459
|
-
if (
|
|
1455
|
+
overflows: L
|
|
1456
|
+
}], !L.every((S) => S <= 0)) {
|
|
1457
|
+
var O, I;
|
|
1458
|
+
const S = (((O = r.flip) == null ? void 0 : O.index) || 0) + 1, H = R[S];
|
|
1459
|
+
if (H && (!(h === "alignment" ? w !== oe(H) : !1) || // We leave the current main axis only if every placement on that axis
|
|
1460
1460
|
// overflows the main axis.
|
|
1461
|
-
|
|
1461
|
+
C.every((q) => oe(q.placement) === w ? q.overflows[0] > 0 : !0)))
|
|
1462
1462
|
return {
|
|
1463
1463
|
data: {
|
|
1464
|
-
index:
|
|
1465
|
-
overflows:
|
|
1464
|
+
index: S,
|
|
1465
|
+
overflows: C
|
|
1466
1466
|
},
|
|
1467
1467
|
reset: {
|
|
1468
|
-
placement:
|
|
1468
|
+
placement: H
|
|
1469
1469
|
}
|
|
1470
1470
|
};
|
|
1471
|
-
let te = (
|
|
1471
|
+
let te = (I = C.filter((ge) => ge.overflows[0] <= 0).sort((ge, q) => ge.overflows[1] - q.overflows[1])[0]) == null ? void 0 : I.placement;
|
|
1472
1472
|
if (!te)
|
|
1473
1473
|
switch (u) {
|
|
1474
1474
|
case "bestFit": {
|
|
1475
|
-
var
|
|
1476
|
-
const ge = (
|
|
1477
|
-
if (
|
|
1478
|
-
const le = oe(
|
|
1479
|
-
return le ===
|
|
1475
|
+
var N;
|
|
1476
|
+
const ge = (N = C.filter((q) => {
|
|
1477
|
+
if (V) {
|
|
1478
|
+
const le = oe(q.placement);
|
|
1479
|
+
return le === w || // Create a bias to the `y` side axis due to horizontal
|
|
1480
1480
|
// reading directions favoring greater width.
|
|
1481
1481
|
le === "y";
|
|
1482
1482
|
}
|
|
1483
1483
|
return !0;
|
|
1484
|
-
}).map((
|
|
1484
|
+
}).map((q) => [q.placement, q.overflows.filter((le) => le > 0).reduce((le, ao) => le + ao, 0)]).sort((q, le) => q[1] - le[1])[0]) == null ? void 0 : N[0];
|
|
1485
1485
|
ge && (te = ge);
|
|
1486
1486
|
break;
|
|
1487
1487
|
}
|
|
@@ -1505,7 +1505,7 @@ async function Mi(s, e) {
|
|
|
1505
1505
|
placement: t,
|
|
1506
1506
|
platform: o,
|
|
1507
1507
|
elements: i
|
|
1508
|
-
} = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Se(t), a = Ve(t), l = oe(t) === "y", c = Pi.has(n) ? -1 : 1, d = r && l ? -1 : 1, h =
|
|
1508
|
+
} = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Se(t), a = Ve(t), l = oe(t) === "y", c = Pi.has(n) ? -1 : 1, d = r && l ? -1 : 1, h = $e(e, s);
|
|
1509
1509
|
let {
|
|
1510
1510
|
mainAxis: f,
|
|
1511
1511
|
crossAxis: u,
|
|
@@ -1563,35 +1563,35 @@ const Li = function(s) {
|
|
|
1563
1563
|
mainAxis: n = !0,
|
|
1564
1564
|
crossAxis: a = !1,
|
|
1565
1565
|
limiter: l = {
|
|
1566
|
-
fn: (
|
|
1566
|
+
fn: (w) => {
|
|
1567
1567
|
let {
|
|
1568
|
-
x:
|
|
1569
|
-
y:
|
|
1570
|
-
} =
|
|
1568
|
+
x: k,
|
|
1569
|
+
y: P
|
|
1570
|
+
} = w;
|
|
1571
1571
|
return {
|
|
1572
|
-
x:
|
|
1573
|
-
y:
|
|
1572
|
+
x: k,
|
|
1573
|
+
y: P
|
|
1574
1574
|
};
|
|
1575
1575
|
}
|
|
1576
1576
|
},
|
|
1577
1577
|
...c
|
|
1578
|
-
} =
|
|
1578
|
+
} = $e(s, e), d = {
|
|
1579
1579
|
x: t,
|
|
1580
1580
|
y: o
|
|
1581
1581
|
}, h = await r.detectOverflow(e, c), f = oe(i), u = Bs(f);
|
|
1582
|
-
let g = d[u],
|
|
1583
|
-
const y = (
|
|
1584
|
-
n && (g = y(u, g)), a && (
|
|
1585
|
-
const
|
|
1582
|
+
let g = d[u], b = d[f];
|
|
1583
|
+
const y = (w, k) => Hs(k + h[w === "y" ? "top" : "left"], k, k - h[w === "y" ? "bottom" : "right"]);
|
|
1584
|
+
n && (g = y(u, g)), a && (b = y(f, b));
|
|
1585
|
+
const v = l.fn({
|
|
1586
1586
|
...e,
|
|
1587
1587
|
[u]: g,
|
|
1588
|
-
[f]:
|
|
1588
|
+
[f]: b
|
|
1589
1589
|
});
|
|
1590
1590
|
return {
|
|
1591
|
-
...
|
|
1591
|
+
...v,
|
|
1592
1592
|
data: {
|
|
1593
|
-
x:
|
|
1594
|
-
y:
|
|
1593
|
+
x: v.x - t,
|
|
1594
|
+
y: v.y - o,
|
|
1595
1595
|
enabled: {
|
|
1596
1596
|
[u]: n,
|
|
1597
1597
|
[f]: a
|
|
@@ -1614,18 +1614,18 @@ const Li = function(s) {
|
|
|
1614
1614
|
apply: n = () => {
|
|
1615
1615
|
},
|
|
1616
1616
|
...a
|
|
1617
|
-
} =
|
|
1617
|
+
} = $e(s, e), l = await i.detectOverflow(e, a), c = Se(t), d = Ve(t), h = oe(t) === "y", {
|
|
1618
1618
|
width: f,
|
|
1619
1619
|
height: u
|
|
1620
1620
|
} = o.floating;
|
|
1621
|
-
let g,
|
|
1622
|
-
c === "top" || c === "bottom" ? (g = c,
|
|
1623
|
-
const y = u - l.top - l.bottom,
|
|
1624
|
-
let
|
|
1625
|
-
|
|
1621
|
+
let g, b;
|
|
1622
|
+
c === "top" || c === "bottom" ? (g = c, b = d === (await (i.isRTL == null ? void 0 : i.isRTL(r.floating)) ? "start" : "end") ? "left" : "right") : (b = c, g = d === "end" ? "top" : "bottom");
|
|
1623
|
+
const y = u - l.top - l.bottom, v = f - l.left - l.right, w = pe(u - l[g], y), k = pe(f - l[b], v), P = e.middlewareData.shift, M = !P;
|
|
1624
|
+
let V = w, R = k;
|
|
1625
|
+
P != null && P.enabled.x && (R = v), P != null && P.enabled.y && (V = y), M && !d && (h ? R = f - 2 * ie(l.left, l.right) : V = u - 2 * ie(l.top, l.bottom)), await n({
|
|
1626
1626
|
...e,
|
|
1627
|
-
availableWidth:
|
|
1628
|
-
availableHeight:
|
|
1627
|
+
availableWidth: R,
|
|
1628
|
+
availableHeight: V
|
|
1629
1629
|
});
|
|
1630
1630
|
const G = await i.getDimensions(r.floating);
|
|
1631
1631
|
return f !== G.width || u !== G.height ? {
|
|
@@ -1686,15 +1686,15 @@ function kt(s) {
|
|
|
1686
1686
|
return !1;
|
|
1687
1687
|
}
|
|
1688
1688
|
}
|
|
1689
|
-
const
|
|
1689
|
+
const Di = /transform|translate|scale|rotate|perspective|filter/, $i = /paint|layout|strict|content/, be = (s) => !!s && s !== "none";
|
|
1690
1690
|
let It;
|
|
1691
1691
|
function Jt(s) {
|
|
1692
1692
|
const e = Z(s) ? ee(s) : s;
|
|
1693
|
-
return be(e.transform) || be(e.translate) || be(e.scale) || be(e.rotate) || be(e.perspective) || !Qt() && (be(e.backdropFilter) || be(e.filter)) ||
|
|
1693
|
+
return be(e.transform) || be(e.translate) || be(e.scale) || be(e.rotate) || be(e.perspective) || !Qt() && (be(e.backdropFilter) || be(e.filter)) || Di.test(e.willChange || "") || $i.test(e.contain || "");
|
|
1694
1694
|
}
|
|
1695
1695
|
function Vi(s) {
|
|
1696
1696
|
let e = Te(s);
|
|
1697
|
-
for (; fe(e) && !
|
|
1697
|
+
for (; fe(e) && !qe(e); ) {
|
|
1698
1698
|
if (Jt(e))
|
|
1699
1699
|
return e;
|
|
1700
1700
|
if (kt(e))
|
|
@@ -1706,7 +1706,7 @@ function Vi(s) {
|
|
|
1706
1706
|
function Qt() {
|
|
1707
1707
|
return It == null && (It = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), It;
|
|
1708
1708
|
}
|
|
1709
|
-
function
|
|
1709
|
+
function qe(s) {
|
|
1710
1710
|
return /^(html|body|#document)$/.test(Ne(s));
|
|
1711
1711
|
}
|
|
1712
1712
|
function ee(s) {
|
|
@@ -1735,17 +1735,17 @@ function Te(s) {
|
|
|
1735
1735
|
}
|
|
1736
1736
|
function Ws(s) {
|
|
1737
1737
|
const e = Te(s);
|
|
1738
|
-
return
|
|
1738
|
+
return qe(e) ? (s.ownerDocument || s).body : fe(e) && _t(e) ? e : Ws(e);
|
|
1739
1739
|
}
|
|
1740
|
-
function
|
|
1740
|
+
function Ye(s, e, t) {
|
|
1741
1741
|
var o;
|
|
1742
1742
|
e === void 0 && (e = []), t === void 0 && (t = !0);
|
|
1743
1743
|
const i = Ws(s), r = i === ((o = s.ownerDocument) == null ? void 0 : o.body), n = U(i);
|
|
1744
1744
|
if (r) {
|
|
1745
1745
|
const a = Rt(n);
|
|
1746
|
-
return e.concat(n, n.visualViewport || [], _t(i) ? i : [], a && t ?
|
|
1746
|
+
return e.concat(n, n.visualViewport || [], _t(i) ? i : [], a && t ? Ye(a) : []);
|
|
1747
1747
|
} else
|
|
1748
|
-
return e.concat(i,
|
|
1748
|
+
return e.concat(i, Ye(i, [], t));
|
|
1749
1749
|
}
|
|
1750
1750
|
function Rt(s) {
|
|
1751
1751
|
return s.parent && Object.getPrototypeOf(s.parent) ? s.frameElement : null;
|
|
@@ -1798,10 +1798,10 @@ function Oe(s, e, t, o) {
|
|
|
1798
1798
|
let l = (i.left + a.x) / n.x, c = (i.top + a.y) / n.y, d = i.width / n.x, h = i.height / n.y;
|
|
1799
1799
|
if (r && o) {
|
|
1800
1800
|
const f = U(r), u = Z(o) ? U(o) : o;
|
|
1801
|
-
let g = f,
|
|
1802
|
-
for (;
|
|
1803
|
-
const y = Ie(
|
|
1804
|
-
l *= y.x, c *= y.y, d *= y.x, h *= y.y, l +=
|
|
1801
|
+
let g = f, b = Rt(g);
|
|
1802
|
+
for (; b && u !== g; ) {
|
|
1803
|
+
const y = Ie(b), v = b.getBoundingClientRect(), w = ee(b), k = v.left + (b.clientLeft + parseFloat(w.paddingLeft)) * y.x, P = v.top + (b.clientTop + parseFloat(w.paddingTop)) * y.y;
|
|
1804
|
+
l *= y.x, c *= y.y, d *= y.x, h *= y.y, l += k, c += P, g = U(b), b = Rt(g);
|
|
1805
1805
|
}
|
|
1806
1806
|
}
|
|
1807
1807
|
return vt({
|
|
@@ -1873,8 +1873,8 @@ function Wi(s, e, t) {
|
|
|
1873
1873
|
o ? f || (c = -n.offsetLeft, d = -n.offsetTop) : (a = n.width, l = n.height, f && (c = n.offsetLeft, d = n.offsetTop));
|
|
1874
1874
|
}
|
|
1875
1875
|
if (St(r) <= 0) {
|
|
1876
|
-
const f = r.ownerDocument, u = f.body, g = getComputedStyle(u),
|
|
1877
|
-
|
|
1876
|
+
const f = r.ownerDocument, u = f.body, g = getComputedStyle(u), b = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0, y = Math.abs(r.clientWidth - u.clientWidth - b), v = getComputedStyle(r).scrollbarGutter === "stable both-edges" ? y / 2 : y;
|
|
1877
|
+
v <= Fi && (a -= v);
|
|
1878
1878
|
}
|
|
1879
1879
|
return {
|
|
1880
1880
|
width: a,
|
|
@@ -1915,10 +1915,10 @@ function Ui(s, e) {
|
|
|
1915
1915
|
const t = e.get(s);
|
|
1916
1916
|
if (t)
|
|
1917
1917
|
return t;
|
|
1918
|
-
let o =
|
|
1918
|
+
let o = Ye(s, [], !1).filter((a) => Z(a) && Ne(a) !== "body"), i = null;
|
|
1919
1919
|
const r = ee(s).position === "fixed";
|
|
1920
1920
|
let n = r ? Te(s) : s;
|
|
1921
|
-
for (; Z(n) && !
|
|
1921
|
+
for (; Z(n) && !qe(n); ) {
|
|
1922
1922
|
const a = ee(n), l = Jt(n), c = i ? i.position : r ? "fixed" : "";
|
|
1923
1923
|
!l && (c === "fixed" || c === "absolute" && a.position === "static") ? o = o.filter((h) => h !== n) : i = a, n = Te(n);
|
|
1924
1924
|
}
|
|
@@ -1944,7 +1944,7 @@ function Gi(s) {
|
|
|
1944
1944
|
y: l
|
|
1945
1945
|
};
|
|
1946
1946
|
}
|
|
1947
|
-
function
|
|
1947
|
+
function Xi(s) {
|
|
1948
1948
|
const {
|
|
1949
1949
|
width: e,
|
|
1950
1950
|
height: t
|
|
@@ -1954,7 +1954,7 @@ function qi(s) {
|
|
|
1954
1954
|
height: t
|
|
1955
1955
|
};
|
|
1956
1956
|
}
|
|
1957
|
-
function
|
|
1957
|
+
function qi(s, e, t) {
|
|
1958
1958
|
const o = fe(e), i = ne(e), r = t === "fixed", n = Oe(s, !0, r, e);
|
|
1959
1959
|
let a = {
|
|
1960
1960
|
scrollLeft: 0,
|
|
@@ -1985,13 +1985,13 @@ function gs(s, e) {
|
|
|
1985
1985
|
let t = s.offsetParent;
|
|
1986
1986
|
return ne(s) === t && (t = t.ownerDocument.body), t;
|
|
1987
1987
|
}
|
|
1988
|
-
function
|
|
1988
|
+
function Xs(s, e) {
|
|
1989
1989
|
const t = U(s);
|
|
1990
1990
|
if (kt(s))
|
|
1991
1991
|
return t;
|
|
1992
1992
|
if (!fe(s)) {
|
|
1993
1993
|
let i = Te(s);
|
|
1994
|
-
for (; i && !
|
|
1994
|
+
for (; i && !qe(i); ) {
|
|
1995
1995
|
if (Z(i) && !Pt(i))
|
|
1996
1996
|
return i;
|
|
1997
1997
|
i = Te(i);
|
|
@@ -2001,12 +2001,12 @@ function qs(s, e) {
|
|
|
2001
2001
|
let o = gs(s, e);
|
|
2002
2002
|
for (; o && zi(o) && Pt(o); )
|
|
2003
2003
|
o = gs(o, e);
|
|
2004
|
-
return o &&
|
|
2004
|
+
return o && qe(o) && Pt(o) && !Jt(o) ? t : o || Vi(s) || t;
|
|
2005
2005
|
}
|
|
2006
|
-
const
|
|
2007
|
-
const e = this.getOffsetParent ||
|
|
2006
|
+
const Yi = async function(s) {
|
|
2007
|
+
const e = this.getOffsetParent || Xs, t = this.getDimensions, o = await t(s.floating);
|
|
2008
2008
|
return {
|
|
2009
|
-
reference:
|
|
2009
|
+
reference: qi(s.reference, await e(s.floating), s.strategy),
|
|
2010
2010
|
floating: {
|
|
2011
2011
|
x: 0,
|
|
2012
2012
|
y: 0,
|
|
@@ -2018,19 +2018,19 @@ const Xi = async function(s) {
|
|
|
2018
2018
|
function Ji(s) {
|
|
2019
2019
|
return ee(s).direction === "rtl";
|
|
2020
2020
|
}
|
|
2021
|
-
const
|
|
2021
|
+
const qs = {
|
|
2022
2022
|
convertOffsetParentRelativeRectToViewportRelativeRect: Hi,
|
|
2023
2023
|
getDocumentElement: ne,
|
|
2024
2024
|
getClippingRect: Gi,
|
|
2025
|
-
getOffsetParent:
|
|
2026
|
-
getElementRects:
|
|
2025
|
+
getOffsetParent: Xs,
|
|
2026
|
+
getElementRects: Yi,
|
|
2027
2027
|
getClientRects: Bi,
|
|
2028
|
-
getDimensions:
|
|
2028
|
+
getDimensions: Xi,
|
|
2029
2029
|
getScale: Ie,
|
|
2030
2030
|
isElement: Z,
|
|
2031
2031
|
isRTL: Ji
|
|
2032
2032
|
};
|
|
2033
|
-
function
|
|
2033
|
+
function Ys(s, e) {
|
|
2034
2034
|
return s.x === e.x && s.y === e.y && s.width === e.width && s.height === e.height;
|
|
2035
2035
|
}
|
|
2036
2036
|
function Qi(s, e, t) {
|
|
@@ -2045,37 +2045,37 @@ function Qi(s, e, t) {
|
|
|
2045
2045
|
const f = s.getBoundingClientRect(), {
|
|
2046
2046
|
left: u,
|
|
2047
2047
|
top: g,
|
|
2048
|
-
width:
|
|
2048
|
+
width: b,
|
|
2049
2049
|
height: y
|
|
2050
2050
|
} = f;
|
|
2051
|
-
if (d || e(), !
|
|
2051
|
+
if (d || e(), !b || !y)
|
|
2052
2052
|
return;
|
|
2053
|
-
const
|
|
2054
|
-
rootMargin: -
|
|
2053
|
+
const v = rt(g), w = rt(r.clientWidth - (u + b)), k = rt(r.clientHeight - (g + y)), P = rt(u), V = {
|
|
2054
|
+
rootMargin: -v + "px " + -w + "px " + -k + "px " + -P + "px",
|
|
2055
2055
|
threshold: ie(0, pe(1, h)) || 1
|
|
2056
2056
|
};
|
|
2057
|
-
let
|
|
2058
|
-
function G(
|
|
2059
|
-
const
|
|
2060
|
-
if (!
|
|
2057
|
+
let R = !0;
|
|
2058
|
+
function G(L) {
|
|
2059
|
+
const C = L[0].intersectionRatio;
|
|
2060
|
+
if (!Ys(f, s.getBoundingClientRect()))
|
|
2061
2061
|
return a();
|
|
2062
|
-
if (
|
|
2063
|
-
if (!
|
|
2062
|
+
if (C !== h) {
|
|
2063
|
+
if (!R)
|
|
2064
2064
|
return a();
|
|
2065
|
-
|
|
2065
|
+
C ? a(!1, C) : i = setTimeout(() => {
|
|
2066
2066
|
a(!1, 1e-7);
|
|
2067
2067
|
}, 1e3);
|
|
2068
2068
|
}
|
|
2069
|
-
|
|
2069
|
+
R = !1;
|
|
2070
2070
|
}
|
|
2071
2071
|
try {
|
|
2072
2072
|
o = new IntersectionObserver(G, {
|
|
2073
|
-
...
|
|
2073
|
+
...V,
|
|
2074
2074
|
// Handle <iframe>s
|
|
2075
2075
|
root: r.ownerDocument
|
|
2076
2076
|
});
|
|
2077
2077
|
} catch {
|
|
2078
|
-
o = new IntersectionObserver(G,
|
|
2078
|
+
o = new IntersectionObserver(G, V);
|
|
2079
2079
|
}
|
|
2080
2080
|
o.observe(s);
|
|
2081
2081
|
}
|
|
@@ -2092,35 +2092,35 @@ function Zi(s, e, t, o) {
|
|
|
2092
2092
|
elementResize: n = typeof ResizeObserver == "function",
|
|
2093
2093
|
layoutShift: a = typeof IntersectionObserver == "function",
|
|
2094
2094
|
animationFrame: l = !1
|
|
2095
|
-
} = o, c = Zt(s), d = i || r ? [...c ?
|
|
2096
|
-
d.forEach((
|
|
2097
|
-
i &&
|
|
2095
|
+
} = o, c = Zt(s), d = i || r ? [...c ? Ye(c) : [], ...e ? Ye(e) : []] : [];
|
|
2096
|
+
d.forEach((v) => {
|
|
2097
|
+
i && v.addEventListener("scroll", t), r && v.addEventListener("resize", t);
|
|
2098
2098
|
});
|
|
2099
2099
|
const h = c && a ? Qi(c, t, r) : null;
|
|
2100
2100
|
let f = -1, u = null;
|
|
2101
|
-
n && (u = new ResizeObserver((
|
|
2102
|
-
let [
|
|
2103
|
-
|
|
2104
|
-
var
|
|
2105
|
-
(
|
|
2101
|
+
n && (u = new ResizeObserver((v) => {
|
|
2102
|
+
let [w] = v;
|
|
2103
|
+
w && w.target === c && u && e && (u.unobserve(e), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
|
|
2104
|
+
var k;
|
|
2105
|
+
(k = u) == null || k.observe(e);
|
|
2106
2106
|
})), t();
|
|
2107
2107
|
}), c && !l && u.observe(c), e && u.observe(e));
|
|
2108
|
-
let g,
|
|
2108
|
+
let g, b = l ? Oe(s) : null;
|
|
2109
2109
|
l && y();
|
|
2110
2110
|
function y() {
|
|
2111
|
-
const
|
|
2112
|
-
|
|
2111
|
+
const v = Oe(s);
|
|
2112
|
+
b && !Ys(b, v) && t(), b = v, g = requestAnimationFrame(y);
|
|
2113
2113
|
}
|
|
2114
2114
|
return t(), () => {
|
|
2115
|
-
var
|
|
2116
|
-
d.forEach((
|
|
2117
|
-
i &&
|
|
2118
|
-
}), h == null || h(), (
|
|
2115
|
+
var v;
|
|
2116
|
+
d.forEach((w) => {
|
|
2117
|
+
i && w.removeEventListener("scroll", t), r && w.removeEventListener("resize", t);
|
|
2118
|
+
}), h == null || h(), (v = u) == null || v.disconnect(), u = null, l && cancelAnimationFrame(g);
|
|
2119
2119
|
};
|
|
2120
2120
|
}
|
|
2121
2121
|
const er = Li, tr = Ei, sr = Ii, Mt = Ai, or = Oi, ir = (s, e, t) => {
|
|
2122
2122
|
const o = /* @__PURE__ */ new Map(), i = t ?? {}, r = {
|
|
2123
|
-
...
|
|
2123
|
+
...qs,
|
|
2124
2124
|
...i.platform,
|
|
2125
2125
|
_c: o
|
|
2126
2126
|
};
|
|
@@ -2245,18 +2245,18 @@ function Ue(s, e, t = {}) {
|
|
|
2245
2245
|
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n = vs(t, r);
|
|
2246
2246
|
const a = t.lockPlacement === "freeze";
|
|
2247
2247
|
let l = !1;
|
|
2248
|
-
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...
|
|
2248
|
+
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...qs, getOffsetParent: () => bs(s) } : void 0), h = () => {
|
|
2249
2249
|
var u;
|
|
2250
2250
|
(u = t.beforeCompute) == null || u.call(t), ir(e, s, {
|
|
2251
2251
|
placement: i,
|
|
2252
2252
|
strategy: o,
|
|
2253
2253
|
middleware: n,
|
|
2254
2254
|
...d ? { platform: d } : {}
|
|
2255
|
-
}).then(({ x: g, y:
|
|
2256
|
-
var
|
|
2257
|
-
if (s.style.left = `${g}px`, s.style.top = `${
|
|
2258
|
-
const
|
|
2259
|
-
|
|
2255
|
+
}).then(({ x: g, y: b, placement: y, middlewareData: v }) => {
|
|
2256
|
+
var w, k;
|
|
2257
|
+
if (s.style.left = `${g}px`, s.style.top = `${b}px`, t.arrow && ur(t.arrow.element, y, v.arrow), a && !l && (l = !0, i = y, r = !1, n = vs(t, !1)), (w = t.onPlaced) == null || w.call(t, y), (k = t.onComputed) == null || k.call(t, { x: g, y: b, placement: y }), t.onDrift && e instanceof Element) {
|
|
2258
|
+
const P = c ? bs(s) : window, M = cr({ panel: s, reference: e, expectedX: g, expectedY: b, offsetParent: P });
|
|
2259
|
+
M && t.onDrift(M);
|
|
2260
2260
|
}
|
|
2261
2261
|
});
|
|
2262
2262
|
};
|
|
@@ -2278,38 +2278,38 @@ function pr(s) {
|
|
|
2278
2278
|
const h = {
|
|
2279
2279
|
getBoundingClientRect: () => d ?? s.trigger.getBoundingClientRect(),
|
|
2280
2280
|
contextElement: s.trigger
|
|
2281
|
-
}, f = (
|
|
2282
|
-
d = new DOMRect(
|
|
2281
|
+
}, f = (w) => {
|
|
2282
|
+
d = new DOMRect(w.clientX, w.clientY, 0, 0), n == null || n.update();
|
|
2283
2283
|
}, u = () => {
|
|
2284
2284
|
l && clearTimeout(l), c && clearTimeout(c), l = c = void 0;
|
|
2285
2285
|
}, g = () => {
|
|
2286
|
-
var
|
|
2286
|
+
var k;
|
|
2287
2287
|
if (u(), a)
|
|
2288
2288
|
return;
|
|
2289
|
-
(
|
|
2290
|
-
const
|
|
2291
|
-
n = Ue(r,
|
|
2289
|
+
(k = s.onBeforeShow) == null || k.call(s), a = !0, e.append(r);
|
|
2290
|
+
const w = s.followCursor ? h : s.trigger;
|
|
2291
|
+
n = Ue(r, w, {
|
|
2292
2292
|
placement: t,
|
|
2293
2293
|
strategy: s.strategy,
|
|
2294
2294
|
offset: s.offset ?? 8,
|
|
2295
2295
|
inheritThemeFrom: s.inheritThemeFrom ?? s.trigger
|
|
2296
2296
|
}), s.followCursor && s.trigger.addEventListener("mousemove", f), r.classList.add(o);
|
|
2297
|
-
},
|
|
2297
|
+
}, b = () => {
|
|
2298
2298
|
u(), a && (a = !1, r.classList.remove(o), s.followCursor && s.trigger.removeEventListener("mousemove", f), n == null || n.destroy(), n = void 0, r.remove());
|
|
2299
2299
|
}, y = () => {
|
|
2300
2300
|
u(), i.show > 0 ? l = setTimeout(g, i.show) : g();
|
|
2301
|
-
},
|
|
2302
|
-
u(), i.hide > 0 ? c = setTimeout(
|
|
2301
|
+
}, v = () => {
|
|
2302
|
+
u(), i.hide > 0 ? c = setTimeout(b, i.hide) : b();
|
|
2303
2303
|
};
|
|
2304
|
-
return s.trigger.addEventListener("mouseenter", y), s.trigger.addEventListener("mouseleave",
|
|
2304
|
+
return s.trigger.addEventListener("mouseenter", y), s.trigger.addEventListener("mouseleave", v), s.trigger.addEventListener("focusin", y), s.trigger.addEventListener("focusout", v), {
|
|
2305
2305
|
element: r,
|
|
2306
2306
|
get isVisible() {
|
|
2307
2307
|
return a;
|
|
2308
2308
|
},
|
|
2309
2309
|
show: g,
|
|
2310
|
-
hide:
|
|
2310
|
+
hide: b,
|
|
2311
2311
|
destroy() {
|
|
2312
|
-
s.trigger.removeEventListener("mouseenter", y), s.trigger.removeEventListener("mouseleave",
|
|
2312
|
+
s.trigger.removeEventListener("mouseenter", y), s.trigger.removeEventListener("mouseleave", v), s.trigger.removeEventListener("focusin", y), s.trigger.removeEventListener("focusout", v), b();
|
|
2313
2313
|
}
|
|
2314
2314
|
};
|
|
2315
2315
|
}
|
|
@@ -2348,11 +2348,11 @@ function fr(s) {
|
|
|
2348
2348
|
}
|
|
2349
2349
|
};
|
|
2350
2350
|
}
|
|
2351
|
-
const Js = ["INIT", "DATA", "UI", "INTERACTION"], ae = fi("MULTISELECT", Js), nt = ae.loggers.INIT,
|
|
2352
|
-
function
|
|
2351
|
+
const Js = ["INIT", "DATA", "UI", "INTERACTION"], ae = fi("MULTISELECT", Js), nt = ae.loggers.INIT, K = ae.loggers.DATA, Q = ae.loggers.UI, W = ae.loggers.INTERACTION, zr = Js.map((s) => `MULTISELECT:${s}`);
|
|
2352
|
+
function Dr() {
|
|
2353
2353
|
ae.enableLogging();
|
|
2354
2354
|
}
|
|
2355
|
-
function
|
|
2355
|
+
function $r() {
|
|
2356
2356
|
ae.disableLogging();
|
|
2357
2357
|
}
|
|
2358
2358
|
function Vr(s) {
|
|
@@ -2518,94 +2518,94 @@ function ce(s, e) {
|
|
|
2518
2518
|
return s[e];
|
|
2519
2519
|
}
|
|
2520
2520
|
function vr(s = {}) {
|
|
2521
|
-
const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, h = s.getDisplayValueCallback, f = je(i), u = je(r), g = je(n),
|
|
2522
|
-
let
|
|
2523
|
-
const
|
|
2524
|
-
treePathSeparator:
|
|
2525
|
-
root:
|
|
2521
|
+
const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, h = s.getDisplayValueCallback, f = je(i), u = je(r), g = je(n), b = je(a), y = "x", v = s.treePathSeparator || ".", w = ws();
|
|
2522
|
+
let k = 0, P = null;
|
|
2523
|
+
const M = (L) => o ? o(L) : t ? ce(L, t) : void 0, V = {
|
|
2524
|
+
treePathSeparator: v,
|
|
2525
|
+
root: w,
|
|
2526
2526
|
get tree() {
|
|
2527
|
-
return Object.values(
|
|
2527
|
+
return Object.values(w.children);
|
|
2528
2528
|
},
|
|
2529
2529
|
/**
|
|
2530
2530
|
* Every node in depth-first render order (a parent immediately precedes
|
|
2531
2531
|
* its subtree). Computed once per `insertArray` and cached.
|
|
2532
2532
|
*/
|
|
2533
2533
|
get flatNodes() {
|
|
2534
|
-
if (
|
|
2535
|
-
const
|
|
2536
|
-
function
|
|
2537
|
-
let
|
|
2538
|
-
|
|
2539
|
-
for (const
|
|
2540
|
-
|
|
2534
|
+
if (P) return P;
|
|
2535
|
+
const L = [], C = s.isSorted ?? !1, O = s.sortCallback;
|
|
2536
|
+
function I(N) {
|
|
2537
|
+
let S = Object.values(N.children);
|
|
2538
|
+
C && O && S.length > 0 && (S = O(S));
|
|
2539
|
+
for (const H of S)
|
|
2540
|
+
L.push(H), H.hasChildren && I(H);
|
|
2541
2541
|
}
|
|
2542
|
-
return
|
|
2542
|
+
return I(w), P = L, L;
|
|
2543
2543
|
},
|
|
2544
|
-
insertArray(
|
|
2545
|
-
|
|
2546
|
-
const
|
|
2547
|
-
let
|
|
2548
|
-
const
|
|
2549
|
-
|
|
2550
|
-
const
|
|
2551
|
-
return
|
|
2552
|
-
xs(
|
|
2544
|
+
insertArray(L) {
|
|
2545
|
+
L = L || [], w.children = {}, k = 0, P = null;
|
|
2546
|
+
const C = [];
|
|
2547
|
+
let O = L.map((I, N) => {
|
|
2548
|
+
const S = ws();
|
|
2549
|
+
S.treeId = c, S.id = e ? ce(I, e) : void 0;
|
|
2550
|
+
const H = M(I);
|
|
2551
|
+
return H == null || H === "" || typeof H != "string" ? (C.push(`index ${N}`), null) : (S.path = H, (S.id === void 0 || S.id === -1) && (S.id = H), f ? S.parentPath = gr(S.path, v) : S.parentPath = ce(I, i), S.pathSegment = _s(
|
|
2552
|
+
xs(S.path, S.parentPath ?? "", v),
|
|
2553
2553
|
0,
|
|
2554
2554
|
1,
|
|
2555
|
-
|
|
2556
|
-
), u ?
|
|
2557
|
-
}).filter((
|
|
2558
|
-
s.isSorted || (s.sortCallback ?
|
|
2559
|
-
for (const
|
|
2560
|
-
|
|
2561
|
-
if (l || !
|
|
2562
|
-
for (const
|
|
2555
|
+
v
|
|
2556
|
+
), u ? S.level = br(S.path, v) : S.level = ce(I, r), g || (S.hasChildren = ce(I, n)), S.data = I, S);
|
|
2557
|
+
}).filter((I) => I !== null);
|
|
2558
|
+
s.isSorted || (s.sortCallback ? O = s.sortCallback(O) : O = G(O));
|
|
2559
|
+
for (const I of O)
|
|
2560
|
+
R(I.parentPath ?? "", I);
|
|
2561
|
+
if (l || !b)
|
|
2562
|
+
for (const I of O)
|
|
2563
2563
|
if (l)
|
|
2564
|
-
|
|
2564
|
+
I.isSelectable = l(I) !== !1;
|
|
2565
2565
|
else {
|
|
2566
|
-
const
|
|
2567
|
-
|
|
2566
|
+
const N = ce(I.data, a);
|
|
2567
|
+
I.isSelectable = N == null ? !0 : !!N;
|
|
2568
2568
|
}
|
|
2569
|
-
|
|
2570
|
-
`[ltree ${c}] ${
|
|
2569
|
+
C.length > 0 && console.warn(
|
|
2570
|
+
`[ltree ${c}] ${C.length} option(s) had an invalid path and were skipped (pathMember="${t}"). Offending: ${C.slice(0, 5).join(", ")}` + (C.length > 5 ? ", …" : "")
|
|
2571
2571
|
);
|
|
2572
2572
|
},
|
|
2573
|
-
getNodeByPath(
|
|
2574
|
-
let
|
|
2575
|
-
if (
|
|
2576
|
-
const
|
|
2577
|
-
for (let
|
|
2578
|
-
const
|
|
2579
|
-
if (!
|
|
2573
|
+
getNodeByPath(L, C) {
|
|
2574
|
+
let O = C || w;
|
|
2575
|
+
if (L) {
|
|
2576
|
+
const I = L.split(v);
|
|
2577
|
+
for (let N = 0; N < I.length; N++) {
|
|
2578
|
+
const S = y + I[N];
|
|
2579
|
+
if (!O.children.hasOwnProperty(S))
|
|
2580
2580
|
return null;
|
|
2581
|
-
|
|
2581
|
+
O = O.children[S];
|
|
2582
2582
|
}
|
|
2583
2583
|
}
|
|
2584
|
-
return
|
|
2584
|
+
return O;
|
|
2585
2585
|
}
|
|
2586
2586
|
};
|
|
2587
|
-
function
|
|
2588
|
-
const
|
|
2589
|
-
if (!
|
|
2590
|
-
return `Node: ${
|
|
2591
|
-
u && (
|
|
2592
|
-
const
|
|
2593
|
-
return
|
|
2594
|
-
}
|
|
2595
|
-
function G(
|
|
2596
|
-
return
|
|
2597
|
-
const
|
|
2598
|
-
if (
|
|
2599
|
-
if (
|
|
2600
|
-
return
|
|
2601
|
-
if (d &&
|
|
2602
|
-
const
|
|
2603
|
-
if (
|
|
2587
|
+
function R(L, C) {
|
|
2588
|
+
const O = V.getNodeByPath(L);
|
|
2589
|
+
if (!O)
|
|
2590
|
+
return `Node: ${C.path} - Could not find parent node: ${L}`;
|
|
2591
|
+
u && (C.level = (O.level || 0) + 1);
|
|
2592
|
+
const I = y + _s(xs(C.path, L, v), 0, 1, v);
|
|
2593
|
+
return O.children.hasOwnProperty(I) || (O.children[I] = C, g && !O.hasChildren && (O.hasChildren = !0), k = Math.max(k, C.level || 0)), null;
|
|
2594
|
+
}
|
|
2595
|
+
function G(L) {
|
|
2596
|
+
return L.sort((C, O) => {
|
|
2597
|
+
const I = C.level || 0, N = O.level || 0;
|
|
2598
|
+
if (I !== N) return I - N;
|
|
2599
|
+
if (C.parentPath !== O.parentPath)
|
|
2600
|
+
return C.parentPath ? O.parentPath ? C.parentPath.localeCompare(O.parentPath) : 1 : -1;
|
|
2601
|
+
if (d && C.data && O.data) {
|
|
2602
|
+
const S = ce(C.data, d) ?? 0, H = ce(O.data, d) ?? 0;
|
|
2603
|
+
if (S !== H) return S - H;
|
|
2604
2604
|
}
|
|
2605
|
-
return h ? h(
|
|
2605
|
+
return h ? h(C).localeCompare(h(O)) : C.path.localeCompare(O.path);
|
|
2606
2606
|
});
|
|
2607
2607
|
}
|
|
2608
|
-
return
|
|
2608
|
+
return V;
|
|
2609
2609
|
}
|
|
2610
2610
|
function ks(s, e) {
|
|
2611
2611
|
const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), r = (l) => String(e(l.data)), n = (l) => {
|
|
@@ -2728,6 +2728,9 @@ class wr {
|
|
|
2728
2728
|
// Releases this instance's page-scroll lock (null when not locked). The core
|
|
2729
2729
|
// helper is ref-counted; we hold at most one lock per instance. See lockBodyScroll().
|
|
2730
2730
|
m(this, "bodyScrollUnlock", null);
|
|
2731
|
+
// Saved inline `overflow-x` of <html> while a fullscreen sheet clamps the host
|
|
2732
|
+
// document's horizontal overflow (null when not clamped). See clampDocumentOverflowX().
|
|
2733
|
+
m(this, "overflowXClamp", null);
|
|
2731
2734
|
// Detaches the visualViewport listener that shrinks the fullscreen sheet to sit
|
|
2732
2735
|
// above the soft keyboard (null when not attached). See observeKeyboardInset().
|
|
2733
2736
|
m(this, "keyboardInsetCleanup", null);
|
|
@@ -2971,7 +2974,7 @@ class wr {
|
|
|
2971
2974
|
try {
|
|
2972
2975
|
this.allOptions = JSON.parse(e);
|
|
2973
2976
|
} catch (t) {
|
|
2974
|
-
|
|
2977
|
+
K.error(`[${this.instanceId}] Failed to parse data-options:`, t), this.allOptions = [];
|
|
2975
2978
|
}
|
|
2976
2979
|
else this.options.options && (this.allOptions = this.options.options);
|
|
2977
2980
|
this.filteredOptions = [...this.allOptions], this.isTreeMode() && this.buildTree();
|
|
@@ -3137,6 +3140,27 @@ class wr {
|
|
|
3137
3140
|
const n = t.filter((a) => r.has(a.path));
|
|
3138
3141
|
this.treeNodes = n, this.filteredOptions = n.map((a) => a.data);
|
|
3139
3142
|
}
|
|
3143
|
+
/**
|
|
3144
|
+
* Tree + `search-mode="navigate"`: keep the ENTIRE tree visible (the tree is always
|
|
3145
|
+
* fully expanded, so `flatNodes` is the whole thing) and record which visible rows
|
|
3146
|
+
* match the term in `matchingIndices` — the flat-list navigate behavior, but over
|
|
3147
|
+
* `treeNodes`. Filter mode collapses the hierarchy to matches + ancestors; navigate
|
|
3148
|
+
* mode instead leaves the structure intact so the user can jump between matches
|
|
3149
|
+
* (Ctrl+Arrow on desktop, the fullscreen navigator on touch). Returns the index of
|
|
3150
|
+
* the first match, or -1 (no term / no matches), so the caller can set focus.
|
|
3151
|
+
*/
|
|
3152
|
+
rebuildTreeVisibleForNavigate() {
|
|
3153
|
+
if (this.matchingIndices.clear(), !this.tree)
|
|
3154
|
+
return this.treeNodes = [], this.filteredOptions = [], -1;
|
|
3155
|
+
const e = this.tree.flatNodes;
|
|
3156
|
+
this.treeNodes = e, this.filteredOptions = e.map((i) => i.data);
|
|
3157
|
+
const t = (this.searchTerm || "").trim().toLowerCase();
|
|
3158
|
+
if (!t) return -1;
|
|
3159
|
+
let o = -1;
|
|
3160
|
+
return e.forEach((i, r) => {
|
|
3161
|
+
this.getItemSearchValue(i.data).toLowerCase().includes(t) && (this.matchingIndices.add(r), o === -1 && (o = r));
|
|
3162
|
+
}), o;
|
|
3163
|
+
}
|
|
3140
3164
|
/**
|
|
3141
3165
|
* (Re)compute `isRTL` from the host's `dir` (or an RTL ancestor) and derive the
|
|
3142
3166
|
* direction-mirrored badges position. Pure state — callers apply the DOM effects
|
|
@@ -3301,14 +3325,14 @@ class wr {
|
|
|
3301
3325
|
if (!(d.getIsVisibleCallback ? d.getIsVisibleCallback(this) : d.isVisible ?? !0)) return;
|
|
3302
3326
|
let u;
|
|
3303
3327
|
d.getIsDisabledCallback ? u = d.getIsDisabledCallback(this) : d.isDisabled !== void 0 ? u = d.isDisabled : u = this.getBuiltInActionDisabled(d.action);
|
|
3304
|
-
const g = u ? " disabled" : "",
|
|
3328
|
+
const g = u ? " disabled" : "", b = d.getTextCallback ? d.getTextCallback(this) : d.text;
|
|
3305
3329
|
let y = "";
|
|
3306
3330
|
if (d.getClassCallback) {
|
|
3307
|
-
const
|
|
3308
|
-
y = Array.isArray(
|
|
3331
|
+
const k = d.getClassCallback(this);
|
|
3332
|
+
y = Array.isArray(k) ? ` ${k.join(" ")}` : k ? ` ${k}` : "";
|
|
3309
3333
|
} else d.cssClass && (y = ` ${d.cssClass}`);
|
|
3310
|
-
const
|
|
3311
|
-
l.has(
|
|
3334
|
+
const v = Math.max(1, Math.floor(d.row ?? 1)), w = `<button type="button"${g} class="ms__action-btn${y}" data-action="${d.action}" data-button-index="${h}">${b}</button>`;
|
|
3335
|
+
l.has(v) || l.set(v, []), l.get(v).push(w);
|
|
3312
3336
|
}), l.size === 0) return "";
|
|
3313
3337
|
const c = Array.from(l.keys()).sort((d, h) => d - h).map((d) => `<div class="ms__actions-row" data-row="${d}">${l.get(d).join("")}</div>`).join("");
|
|
3314
3338
|
return `<div class="ms__actions${i}${r}${n}${a}">${c}</div>`;
|
|
@@ -3326,8 +3350,8 @@ class wr {
|
|
|
3326
3350
|
isMatched: d,
|
|
3327
3351
|
isDisabled: a,
|
|
3328
3352
|
isTreeNode: !1
|
|
3329
|
-
},
|
|
3330
|
-
typeof
|
|
3353
|
+
}, b = this.options.renderOptionContentCallback(e, g);
|
|
3354
|
+
typeof b == "string" ? u += b : u += b.outerHTML;
|
|
3331
3355
|
} else
|
|
3332
3356
|
r && (u += `<span class="ms__option-icon">${r}</span>`), u += '<div class="ms__option-text">', u += `<div class="ms__option-title">${this.highlightMatch(i, this.searchTerm)}</div>`, n && (u += `<div class="ms__option-subtitle">${n}</div>`), u += "</div>";
|
|
3333
3357
|
return u += this.renderOptionInfoButton(), u += "</div>", u += "</div>", u;
|
|
@@ -3351,16 +3375,16 @@ class wr {
|
|
|
3351
3375
|
* chevron/toggle — every node is just a normal, selectable option.
|
|
3352
3376
|
*/
|
|
3353
3377
|
renderTreeNode(e, t) {
|
|
3354
|
-
const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ? es(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, h = c ? d === "checked" : this.selectedValues.has(String(i)), f = d === "indeterminate", u = t === this.focusedIndex, g = e.isSelectable !== !1,
|
|
3355
|
-
|
|
3356
|
-
const
|
|
3357
|
-
let
|
|
3358
|
-
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled &&
|
|
3359
|
-
const
|
|
3378
|
+
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 ? es(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, h = c ? d === "checked" : this.selectedValues.has(String(i)), f = d === "indeterminate", u = t === this.focusedIndex, g = this.matchingIndices.has(t), b = e.isSelectable !== !1, y = e.level ?? 1, v = Math.max(0, y - 1), w = ["ms__option", "ms__option--tree"];
|
|
3379
|
+
w.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), h && w.push("ms__option--selected"), f && w.push("ms__option--indeterminate"), u && w.push("ms__option--focused"), g && w.push("ms__option--matched"), l && w.push("ms__option--disabled"), b || w.push("ms__option--tree-unselectable");
|
|
3380
|
+
const k = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", P = b ? "" : ' data-selectable="false"';
|
|
3381
|
+
let M = `<div class="${w.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${y}" style="--ms-tree-depth: ${v};"${k}${P}>`;
|
|
3382
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && b && (M += `<input type="checkbox" class="${f ? "ms__checkbox ms__checkbox--indeterminate" : "ms__checkbox"}" ${h ? "checked" : ""}${f ? ' aria-checked="mixed"' : ""} ${l ? "disabled" : ""}>`), M += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
3383
|
+
const V = {
|
|
3360
3384
|
index: t,
|
|
3361
3385
|
isSelected: h,
|
|
3362
3386
|
isFocused: u,
|
|
3363
|
-
isMatched:
|
|
3387
|
+
isMatched: g,
|
|
3364
3388
|
isDisabled: l,
|
|
3365
3389
|
// Tree metadata — lets the callback branch on depth / branch-vs-leaf /
|
|
3366
3390
|
// tristate without re-deriving any of it from the raw data item.
|
|
@@ -3368,16 +3392,16 @@ class wr {
|
|
|
3368
3392
|
isBranch: e.hasChildren,
|
|
3369
3393
|
isLeaf: !e.hasChildren,
|
|
3370
3394
|
childCount: Object.keys(e.children).length,
|
|
3371
|
-
level:
|
|
3372
|
-
depth:
|
|
3395
|
+
level: y,
|
|
3396
|
+
depth: v,
|
|
3373
3397
|
path: e.path,
|
|
3374
|
-
isSelectable:
|
|
3398
|
+
isSelectable: b,
|
|
3375
3399
|
isIndeterminate: f
|
|
3376
|
-
},
|
|
3377
|
-
|
|
3400
|
+
}, R = this.options.renderOptionContentCallback(o, V);
|
|
3401
|
+
M += typeof R == "string" ? R : R.outerHTML;
|
|
3378
3402
|
} else
|
|
3379
|
-
n && (
|
|
3380
|
-
return
|
|
3403
|
+
n && (M += `<span class="ms__option-icon">${n}</span>`), M += '<div class="ms__option-text">', M += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, a && (M += `<div class="ms__option-subtitle">${a}</div>`), M += "</div>";
|
|
3404
|
+
return M += this.renderOptionInfoButton(), M += "</div>", M += "</div>", M;
|
|
3381
3405
|
}
|
|
3382
3406
|
highlightMatch(e, t) {
|
|
3383
3407
|
if (!t) return e;
|
|
@@ -3510,14 +3534,14 @@ class wr {
|
|
|
3510
3534
|
if (this.options.beforeSearchCallback) {
|
|
3511
3535
|
const o = this.options.beforeSearchCallback(e);
|
|
3512
3536
|
if (o === null) {
|
|
3513
|
-
|
|
3537
|
+
K.debug(`[${this.instanceId}] beforeSearchCallback blocked search for term:`, e), this.abortInFlightSearch(), this.matchingIndices.clear(), this.isTreeMode() ? (this.searchTerm = "", this.rebuildTreeVisible()) : this.filteredOptions = [...this.allOptions], this.renderDropdown();
|
|
3514
3538
|
return;
|
|
3515
3539
|
}
|
|
3516
|
-
t = o, t !== e &&
|
|
3540
|
+
t = o, t !== e && K.debug(`[${this.instanceId}] beforeSearchCallback transformed: "${e}" -> "${t}"`);
|
|
3517
3541
|
}
|
|
3518
3542
|
if (this.options.searchCallback) {
|
|
3519
3543
|
if (t.length < this.options.minSearchLength) {
|
|
3520
|
-
this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions],
|
|
3544
|
+
this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions], K.debug(`[${this.instanceId}] Search term below minimum, showing ${this.allOptions.length} initial options`)) : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
|
|
3521
3545
|
return;
|
|
3522
3546
|
}
|
|
3523
3547
|
this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0);
|
|
@@ -3527,6 +3551,11 @@ class wr {
|
|
|
3527
3551
|
}, o) : await this.performAsyncSearch(e, t);
|
|
3528
3552
|
} else {
|
|
3529
3553
|
if (this.isTreeMode()) {
|
|
3554
|
+
if ((this.options.searchMode || "filter") === "navigate") {
|
|
3555
|
+
const o = this.rebuildTreeVisibleForNavigate();
|
|
3556
|
+
this.searchTerm.trim() ? o >= 0 && (this.focusedIndex = o) : this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), this.focusedIndex >= 0 && this.scrollToFocused(), this.updateFullscreenNav();
|
|
3557
|
+
return;
|
|
3558
|
+
}
|
|
3530
3559
|
this.rebuildTreeVisible(), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown();
|
|
3531
3560
|
return;
|
|
3532
3561
|
}
|
|
@@ -3535,13 +3564,13 @@ class wr {
|
|
|
3535
3564
|
else {
|
|
3536
3565
|
const o = this.options.searchMode || "filter", i = t.toLowerCase();
|
|
3537
3566
|
if (o === "filter")
|
|
3538
|
-
this.filteredOptions = this.allOptions.filter((r) => this.getItemSearchValue(r).toLowerCase().includes(i)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1,
|
|
3567
|
+
this.filteredOptions = this.allOptions.filter((r) => this.getItemSearchValue(r).toLowerCase().includes(i)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, K.debug(`[${this.instanceId}] Filter mode: ${this.filteredOptions.length} matches for "${t}"`);
|
|
3539
3568
|
else {
|
|
3540
3569
|
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear();
|
|
3541
3570
|
let r = -1;
|
|
3542
3571
|
this.allOptions.forEach((n, a) => {
|
|
3543
3572
|
this.getItemSearchValue(n).toLowerCase().includes(i) && (this.matchingIndices.add(a), r === -1 && (r = a));
|
|
3544
|
-
}), r >= 0 ? (this.focusedIndex = r,
|
|
3573
|
+
}), r >= 0 ? (this.focusedIndex = r, K.debug(`[${this.instanceId}] Navigate mode: ${this.matchingIndices.size} matches, jumped to index ${r}`)) : K.debug(`[${this.instanceId}] Navigate mode: No matches found, keeping previous focus`);
|
|
3545
3574
|
}
|
|
3546
3575
|
}
|
|
3547
3576
|
this.renderDropdown(), this.options.searchMode === "navigate" && this.focusedIndex >= 0 && this.scrollToFocused(), this.updateFullscreenNav();
|
|
@@ -3565,15 +3594,15 @@ class wr {
|
|
|
3565
3594
|
async performAsyncSearch(e, t) {
|
|
3566
3595
|
this.abortInFlightSearch();
|
|
3567
3596
|
const o = new AbortController();
|
|
3568
|
-
this.searchAbortController = o, this.isLoading = !0, this.renderDropdown(),
|
|
3597
|
+
this.searchAbortController = o, this.isLoading = !0, this.renderDropdown(), K.debug(`[${this.instanceId}] Loading data for search term:`, t);
|
|
3569
3598
|
try {
|
|
3570
3599
|
const i = await this.options.searchCallback(t, o.signal);
|
|
3571
3600
|
if (o.signal.aborted || this.searchTerm !== e) return;
|
|
3572
3601
|
const r = i || [];
|
|
3573
|
-
this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(r) : this.filteredOptions = [...r], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(),
|
|
3602
|
+
this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(r) : this.filteredOptions = [...r], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), K.debug(`[${this.instanceId}] Loaded ${r.length} results`);
|
|
3574
3603
|
} catch (i) {
|
|
3575
3604
|
if (o.signal.aborted) return;
|
|
3576
|
-
|
|
3605
|
+
K.error(`[${this.instanceId}] Error loading data:`, i), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions] : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
|
|
3577
3606
|
} finally {
|
|
3578
3607
|
this.searchAbortController === o && (this.searchAbortController = void 0);
|
|
3579
3608
|
}
|
|
@@ -3815,11 +3844,11 @@ class wr {
|
|
|
3815
3844
|
async handleAddNew(e) {
|
|
3816
3845
|
if (this.options.addNewCallback)
|
|
3817
3846
|
try {
|
|
3818
|
-
|
|
3847
|
+
K.debug(`[${this.instanceId}] Adding new option:`, e);
|
|
3819
3848
|
const t = await this.options.addNewCallback(e);
|
|
3820
3849
|
this.allOptions.push(t), this.filteredOptions.push(t), this.selectOption(t), this.input.value = "", this.renderDropdown(), this.renderBadges(), this.options.isCloseOnSelect && this.close();
|
|
3821
3850
|
} catch (t) {
|
|
3822
|
-
|
|
3851
|
+
K.error(`[${this.instanceId}] Error adding new option:`, t);
|
|
3823
3852
|
}
|
|
3824
3853
|
}
|
|
3825
3854
|
selectOption(e) {
|
|
@@ -3973,6 +4002,32 @@ class wr {
|
|
|
3973
4002
|
unlockBodyScroll() {
|
|
3974
4003
|
this.bodyScrollUnlock && (this.bodyScrollUnlock(), this.bodyScrollUnlock = null);
|
|
3975
4004
|
}
|
|
4005
|
+
/**
|
|
4006
|
+
* Clip the host document's horizontal overflow while a fullscreen sheet is open.
|
|
4007
|
+
*
|
|
4008
|
+
* A page that overflows horizontally (e.g. an unbreakable-wide token in a heading)
|
|
4009
|
+
* makes the mobile browser SHRINK-TO-FIT: it zooms the page out so the overflow fits,
|
|
4010
|
+
* which desyncs the visual viewport from the layout viewport. Our fullscreen sheet is
|
|
4011
|
+
* `position: fixed` — anchored to the LAYOUT viewport — so under that zoom it no longer
|
|
4012
|
+
* lands flush against the physical screen edges, and the top slips under the system bar
|
|
4013
|
+
* (looks like "the bar covers the sheet"). This is NOT a safe-area problem; safe-area
|
|
4014
|
+
* insets are 0 in that state. Clamping `overflow-x: hidden` on <html>/<body> removes the
|
|
4015
|
+
* overflow, so the browser drops the zoom and the sheet sits flush. Complements
|
|
4016
|
+
* lockBodyScroll() (vertical axis); the saved inline value is restored on close.
|
|
4017
|
+
*
|
|
4018
|
+
* Only <html> is touched (not <body>): clipping the root's horizontal overflow is
|
|
4019
|
+
* enough to collapse the scrollWidth and cancel the shrink-to-fit, and it avoids
|
|
4020
|
+
* conflicting with core's lockBodyScroll(), which owns <body>'s `overflow`. Idempotent.
|
|
4021
|
+
*/
|
|
4022
|
+
clampDocumentOverflowX() {
|
|
4023
|
+
if (this.overflowXClamp || typeof document > "u") return;
|
|
4024
|
+
const e = document.documentElement;
|
|
4025
|
+
this.overflowXClamp = { html: e.style.overflowX }, e.style.overflowX = "hidden";
|
|
4026
|
+
}
|
|
4027
|
+
/** Restore the <html> `overflow-x` clamped by clampDocumentOverflowX() (no-op if unset). */
|
|
4028
|
+
releaseDocumentOverflowX() {
|
|
4029
|
+
!this.overflowXClamp || typeof document > "u" || (document.documentElement.style.overflowX = this.overflowXClamp.html, this.overflowXClamp = null);
|
|
4030
|
+
}
|
|
3976
4031
|
/**
|
|
3977
4032
|
* While the fullscreen dropdown is open, keep it sitting above the soft keyboard.
|
|
3978
4033
|
* Delegates to core's `observeKeyboardInset` (which tracks `window.visualViewport`
|
|
@@ -4041,11 +4096,11 @@ class wr {
|
|
|
4041
4096
|
/** Stand up the fullscreen dropdown overlay: modifier class, header, scroll lock, focus. */
|
|
4042
4097
|
enterFullscreen() {
|
|
4043
4098
|
var e;
|
|
4044
|
-
this.clearFloatingInlineGeometry(this.dropdown), this.dropdown.classList.add("ms__dropdown--fullscreen"), this.buildFullscreenHeader(), this.lockBodyScroll(), this.pushOverlayHistory(), this.observeKeyboardInset(), this.fullscreenSearchInput && (this.fullscreenSearchInput.value = this.searchTerm), this.updateFullscreenSearchClear(), this.options.fullscreenAutofocus ? (e = this.fullscreenSearchInput) == null || e.focus() : this.input.blur();
|
|
4099
|
+
this.clearFloatingInlineGeometry(this.dropdown), this.dropdown.classList.add("ms__dropdown--fullscreen"), this.buildFullscreenHeader(), this.lockBodyScroll(), this.clampDocumentOverflowX(), this.pushOverlayHistory(), this.observeKeyboardInset(), this.fullscreenSearchInput && (this.fullscreenSearchInput.value = this.searchTerm), this.updateFullscreenSearchClear(), this.options.fullscreenAutofocus ? (e = this.fullscreenSearchInput) == null || e.focus() : this.input.blur();
|
|
4045
4100
|
}
|
|
4046
4101
|
/** Tear down the fullscreen dropdown chrome and restore page scroll (no-op if floating). */
|
|
4047
4102
|
exitFullscreen() {
|
|
4048
|
-
this.unobserveKeyboardInset(), this.popOverlayHistory(), this.dropdown.classList.remove("ms__dropdown--fullscreen"), this.fullscreenHeader && (this.fullscreenHeader.remove(), this.fullscreenHeader = null, this.fullscreenSearchInput = null, this.fullscreenSearchClear = null, this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null), this.unlockBodyScroll();
|
|
4103
|
+
this.unobserveKeyboardInset(), this.popOverlayHistory(), this.dropdown.classList.remove("ms__dropdown--fullscreen"), this.fullscreenHeader && (this.fullscreenHeader.remove(), this.fullscreenHeader = null, this.fullscreenSearchInput = null, this.fullscreenSearchClear = null, this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null), this.unlockBodyScroll(), this.releaseDocumentOverflowX();
|
|
4049
4104
|
}
|
|
4050
4105
|
/**
|
|
4051
4106
|
* Back-gesture handling for the fullscreen sheet. On open we push a history entry
|
|
@@ -4060,7 +4115,7 @@ class wr {
|
|
|
4060
4115
|
/** Back gesture/button fired: our pushed entry is already gone, so just close the
|
|
4061
4116
|
* sheet — WITHOUT popping history again (popOverlayHistory becomes a no-op). */
|
|
4062
4117
|
handleOverlayPopstate() {
|
|
4063
|
-
this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), this.isOpen
|
|
4118
|
+
this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), this.isOpen ? this.close() : this.showSelectedPopover && this.hideSelectedPopover());
|
|
4064
4119
|
}
|
|
4065
4120
|
/** Programmatic close: remove the listener and pop the entry we pushed (so the
|
|
4066
4121
|
* history stack returns to its pre-open state). No-op if a Back gesture already
|
|
@@ -4166,7 +4221,7 @@ class wr {
|
|
|
4166
4221
|
this.selectedValues.add(String(o));
|
|
4167
4222
|
}), this.reconcileSelectedOptions(), this.renderBadges();
|
|
4168
4223
|
} catch (t) {
|
|
4169
|
-
|
|
4224
|
+
K.error(`[${this.instanceId}] Failed to parse initial values:`, t);
|
|
4170
4225
|
}
|
|
4171
4226
|
}
|
|
4172
4227
|
/**
|
|
@@ -4190,11 +4245,11 @@ class wr {
|
|
|
4190
4245
|
showPopover() {
|
|
4191
4246
|
Q.debug(`[${this.instanceId}] showPopover() called`), this.isOpen && this.close(), this.hideMessage(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ms__selected-popover--visible");
|
|
4192
4247
|
const e = this.options.virtualScrollThreshold ?? 100;
|
|
4193
|
-
this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.presentationMode === "fullscreen" ? (this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll()) : this.positionSelectedPopover();
|
|
4248
|
+
this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.presentationMode === "fullscreen" ? (this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll(), this.clampDocumentOverflowX(), this.pushOverlayHistory()) : this.positionSelectedPopover();
|
|
4194
4249
|
}
|
|
4195
4250
|
hideSelectedPopover() {
|
|
4196
4251
|
var e;
|
|
4197
|
-
Q.debug(`[${this.instanceId}] hideSelectedPopover() called`), this.showSelectedPopover = !1, this.selectedPopover.classList.remove("ms__selected-popover--visible"), this.selectedPopover.classList.remove("ms__selected-popover--virtual"), this.selectedPopover.classList.remove("ms__selected-popover--fullscreen"), this.unlockBodyScroll(), this.hideMessage(), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
|
|
4252
|
+
Q.debug(`[${this.instanceId}] hideSelectedPopover() called`), this.showSelectedPopover = !1, this.selectedPopover.classList.remove("ms__selected-popover--visible"), this.selectedPopover.classList.remove("ms__selected-popover--virtual"), this.selectedPopover.classList.remove("ms__selected-popover--fullscreen"), this.unlockBodyScroll(), this.releaseDocumentOverflowX(), this.popOverlayHistory(), this.hideMessage(), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
|
|
4198
4253
|
for (const t of Array.from(this.tooltips.keys()))
|
|
4199
4254
|
t.startsWith("popover-") && ((e = this.tooltips.get(t)) == null || e.destroy(), this.tooltips.delete(t));
|
|
4200
4255
|
}
|
|
@@ -4749,7 +4804,7 @@ function Or(s, e, t) {
|
|
|
4749
4804
|
}
|
|
4750
4805
|
return i.push(r), o.push(i), o;
|
|
4751
4806
|
}
|
|
4752
|
-
const Qs = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: 10px;font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#e5e7eb, #3a3a3a));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: var(--ms-primary-bg-hover);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-remove-bg: var(--ms-text-color-3);--ms-badge-counter-remove-bg-hover: var(--ms-text-color-1);--ms-badge-counter-remove-color: var(--ms-text-color-on-accent);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-input-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-input-padding-right: calc(4 * var(--ms-rem));--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: rgba(107, 114, 128, .05);--ms-toggle-right: calc(1.2 * var(--ms-rem));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-center-y: translateY(-50%);--ms-transform-rotate-180: 180deg;--ms-counter-offset: calc(3.2 * var(--ms-rem));--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: var(--ms-accent-color-light, var(--ms-option-bg-matched, transparent));--ms-icon-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 15l7-7 7 7' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>");--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: calc(.2 * var(--ms-rem));--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1 * var(--ms-rem));--ms-icon-remove: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 6L18 18M18 6L6 18' stroke='black' stroke-width='2.5' stroke-linecap='round' fill='none'/></svg>");--ms-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-count-clear-color-hover: var(--ms-accent-color);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--ms-icon-remove);--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--ms-z-index-popover: 10000;--ms-selected-popover-width: calc(32 * var(--ms-rem));--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-selected-popover-close-color-hover: var(--ms-accent-color);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}:host{-webkit-tap-highlight-color:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{position:relative;display:flex;align-items:center}.ms__input{box-sizing:border-box;width:100%;font-family:inherit;height:var(--ms-input-height);padding:var(--ms-input-padding);padding-inline-end:var(--ms-input-padding-right);font-size:var(--ms-input-font-size);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);background:var(--ms-input-bg);color:var(--ms-input-color);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input:hover:not(:focus):not(:disabled){border:var(--ms-input-border-hover)}.ms__input:focus{outline:none;border:var(--ms-input-border-focus)}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{position:absolute;inset-inline-end:var(--ms-toggle-right);top:50%;transform:var(--ms-transform-center-y);pointer-events:none;color:var(--ms-toggle-icon-color);transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{transform:var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));color:var(--ms-toggle-icon-color-open)}.ms__counter{position:absolute;inset-inline-end:var(--ms-counter-offset);top:50%;transform:var(--ms-transform-center-y);padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover))}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}@media (hover: hover){.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);width:var(--ms-dropdown-width);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat}.ms__fullscreen-nav-btn--next:before{transform:scaleY(-1)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 auto;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.ms__dropdown-inner{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow-y:visible}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.ms__selected-popover{display:none;position:fixed;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed);flex-shrink:0}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input{opacity:var(--ms-disabled-input-opacity);cursor:not-allowed;background:var(--ms-input-bg-disabled)}.ms--disabled .ms__toggle{opacity:var(--ms-disabled-input-opacity)}.ms--no-checkboxes .ms__option{gap:0;padding-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start:0}}@layer component;@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-radius:0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-inline-end:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-inline-start:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover)}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit);border-inline-start:var(--ms-option-border-matched)}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}@media (hover: hover){.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched);border-inline-start:var(--ms-option-border-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;left:50%;top:40%;width:30%;height:55%;transform:translate(-50%,-50%) rotate(45deg);border:solid var(--ms-checkbox-checkmark-color);border-width:0 var(--ms-checkbox-checkmark-thickness, 2px) var(--ms-checkbox-checkmark-thickness, 2px) 0}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;top:50%;left:50%;width:55%;height:0;transform:translate(-50%,-50%);border:none;border-bottom:var(--ms-checkbox-checkmark-thickness, 2px) solid var(--ms-checkbox-checkmark-color)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}@media (hover: hover){.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}@media (hover: hover){.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, Os = [
|
|
4807
|
+
const Qs = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: 10px;font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#e5e7eb, #3a3a3a));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: var(--ms-primary-bg-hover);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-remove-bg: var(--ms-text-color-3);--ms-badge-counter-remove-bg-hover: var(--ms-text-color-1);--ms-badge-counter-remove-color: var(--ms-text-color-on-accent);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-input-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-input-padding-right: calc(4 * var(--ms-rem));--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: rgba(107, 114, 128, .05);--ms-toggle-right: calc(1.2 * var(--ms-rem));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-center-y: translateY(-50%);--ms-transform-rotate-180: 180deg;--ms-counter-offset: calc(3.2 * var(--ms-rem));--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: var(--ms-accent-color-light, var(--ms-option-bg-matched, transparent));--ms-icon-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 15l7-7 7 7' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>");--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: calc(.2 * var(--ms-rem));--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1 * var(--ms-rem));--ms-icon-remove: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 6L18 18M18 6L6 18' stroke='black' stroke-width='2.5' stroke-linecap='round' fill='none'/></svg>");--ms-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-count-clear-color-hover: var(--ms-accent-color);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--ms-icon-remove);--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--ms-z-index-popover: 10000;--ms-selected-popover-width: calc(32 * var(--ms-rem));--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-selected-popover-close-color-hover: var(--ms-accent-color);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}:host{-webkit-tap-highlight-color:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{position:relative;display:flex;align-items:center}.ms__input{box-sizing:border-box;width:100%;font-family:inherit;height:var(--ms-input-height);padding:var(--ms-input-padding);padding-inline-end:var(--ms-input-padding-right);font-size:var(--ms-input-font-size);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);background:var(--ms-input-bg);color:var(--ms-input-color);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input:hover:not(:focus):not(:disabled){border:var(--ms-input-border-hover)}.ms__input:focus{outline:none;border:var(--ms-input-border-focus)}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{position:absolute;inset-inline-end:var(--ms-toggle-right);top:50%;transform:var(--ms-transform-center-y);pointer-events:none;color:var(--ms-toggle-icon-color);transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{transform:var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));color:var(--ms-toggle-icon-color-open)}.ms__counter{position:absolute;inset-inline-end:var(--ms-counter-offset);top:50%;transform:var(--ms-transform-center-y);padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover))}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}@media (hover: hover){.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);width:var(--ms-dropdown-width);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat}.ms__fullscreen-nav-btn--next:before{transform:scaleY(-1)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 auto;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.ms__dropdown-inner{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow-y:visible}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.ms__selected-popover{display:none;position:fixed;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed);flex-shrink:0}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input{opacity:var(--ms-disabled-input-opacity);cursor:not-allowed;background:var(--ms-input-bg-disabled)}.ms--disabled .ms__toggle{opacity:var(--ms-disabled-input-opacity)}.ms--no-checkboxes .ms__option{gap:0;padding-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start:0}}@layer component;@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-radius:0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-inline-end:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-inline-start:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover)}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);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__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;left:50%;top:40%;width:30%;height:55%;transform:translate(-50%,-50%) rotate(45deg);border:solid var(--ms-checkbox-checkmark-color);border-width:0 var(--ms-checkbox-checkmark-thickness, 2px) var(--ms-checkbox-checkmark-thickness, 2px) 0}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;top:50%;left:50%;width:55%;height:0;transform:translate(-50%,-50%);border:none;border-bottom:var(--ms-checkbox-checkmark-thickness, 2px) solid var(--ms-checkbox-checkmark-color)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}@media (hover: hover){.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}@media (hover: hover){.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, Os = [
|
|
4753
4808
|
"top",
|
|
4754
4809
|
"top-start",
|
|
4755
4810
|
"top-end",
|
|
@@ -4762,39 +4817,39 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
4762
4817
|
"right",
|
|
4763
4818
|
"right-start",
|
|
4764
4819
|
"right-end"
|
|
4765
|
-
],
|
|
4820
|
+
], $ = () => fo(), Ir = [
|
|
4766
4821
|
// ── Strings (cosmetic → update). Optional ones are nullable: absent → null ─
|
|
4767
|
-
{ configKey: "searchHint", attribute: "search-hint", converter:
|
|
4768
|
-
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter:
|
|
4769
|
-
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter:
|
|
4770
|
-
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter:
|
|
4771
|
-
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter:
|
|
4772
|
-
{ configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter:
|
|
4773
|
-
{ configKey: "maxHeight", attribute: "max-height", converter:
|
|
4774
|
-
{ configKey: "emptyMessage", attribute: "empty-message", converter:
|
|
4775
|
-
{ configKey: "loadingMessage", attribute: "loading-message", converter:
|
|
4776
|
-
{ configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter:
|
|
4777
|
-
{ configKey: "formFieldId", attribute: "name", converter:
|
|
4822
|
+
{ configKey: "searchHint", attribute: "search-hint", converter: A({ isNullable: !0 }), on: "update", description: "Small hint text shown beneath the search input." },
|
|
4823
|
+
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter: A({ default: "Search..." }), on: "update", description: "Placeholder text for the search input." },
|
|
4824
|
+
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter: A({ default: "Pick an option..." }), on: "update", description: "Placeholder shown on the control when nothing is selected." },
|
|
4825
|
+
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter: A({ isNullable: !0 }), on: "update", description: "Text shown when there are no options at all." },
|
|
4826
|
+
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter: A({ isNullable: !0 }), on: "update", description: "Minimum width of the dropdown panel (any CSS length)." },
|
|
4827
|
+
{ configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter: A({ isNullable: !0 }), on: "update", description: "Maximum width of the dropdown panel (any CSS length)." },
|
|
4828
|
+
{ configKey: "maxHeight", attribute: "max-height", converter: A({ default: "20rem" }), on: "update", description: "Maximum height of the dropdown list before it scrolls." },
|
|
4829
|
+
{ configKey: "emptyMessage", attribute: "empty-message", converter: A({ default: "No results found" }), on: "update", description: "Message shown when a search yields no matches." },
|
|
4830
|
+
{ configKey: "loadingMessage", attribute: "loading-message", converter: A({ default: "Loading..." }), on: "update", description: "Message shown while options are loading." },
|
|
4831
|
+
{ configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter: A({ isNullable: !0 }), on: "update", description: "Tooltip text for a badge remove (×) button." },
|
|
4832
|
+
{ configKey: "formFieldId", attribute: "name", converter: A({ isNullable: !0 }), on: "reinit", description: "HTML form field name/id used for the hidden input(s)." },
|
|
4778
4833
|
// ── CSS-var sugar (mirrored to a host style prop in reinit()/update()) ────
|
|
4779
|
-
{ configKey: "dropdownWidth", attribute: "dropdown-width", converter:
|
|
4780
|
-
{ configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter:
|
|
4834
|
+
{ configKey: "dropdownWidth", attribute: "dropdown-width", converter: A({ isNullable: !0 }), on: "update", description: "Fixed dropdown width; mirrored to the `--ms-dropdown-width` CSS variable." },
|
|
4835
|
+
{ configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter: A({ isNullable: !0 }), on: "update", description: "Selected-items popover width; mirrored to `--ms-selected-popover-width`." },
|
|
4781
4836
|
// ── Member properties (structural → reinit; optional → nullable) ─────────
|
|
4782
|
-
{ configKey: "valueMember", attribute: "value-member", converter:
|
|
4783
|
-
{ configKey: "displayValueMember", attribute: "display-value-member", converter:
|
|
4784
|
-
{ configKey: "searchValueMember", attribute: "search-value-member", converter:
|
|
4785
|
-
{ configKey: "iconMember", attribute: "icon-member", converter:
|
|
4786
|
-
{ configKey: "subtitleMember", attribute: "subtitle-member", converter:
|
|
4787
|
-
{ configKey: "fullTitleMember", attribute: "full-title-member", converter:
|
|
4788
|
-
{ configKey: "groupMember", attribute: "group-member", converter:
|
|
4789
|
-
{ configKey: "disabledMember", attribute: "disabled-member", converter:
|
|
4837
|
+
{ configKey: "valueMember", attribute: "value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name on an option object that holds its value." },
|
|
4838
|
+
{ configKey: "displayValueMember", attribute: "display-value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option display label." },
|
|
4839
|
+
{ configKey: "searchValueMember", attribute: "search-value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name searched against (falls back to the display value)." },
|
|
4840
|
+
{ configKey: "iconMember", attribute: "icon-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option icon." },
|
|
4841
|
+
{ configKey: "subtitleMember", attribute: "subtitle-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option subtitle." },
|
|
4842
|
+
{ configKey: "fullTitleMember", attribute: "full-title-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option full/long title." },
|
|
4843
|
+
{ configKey: "groupMember", attribute: "group-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name used to group options under headers." },
|
|
4844
|
+
{ configKey: "disabledMember", attribute: "disabled-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that marks an option disabled." },
|
|
4790
4845
|
// ── Tree of options (structural → reinit; optional → nullable) ───────────
|
|
4791
|
-
{ configKey: "pathMember", attribute: "path-member", converter:
|
|
4792
|
-
{ configKey: "parentPathMember", attribute: "parent-path-member", converter:
|
|
4793
|
-
{ configKey: "levelMember", attribute: "level-member", converter:
|
|
4794
|
-
{ configKey: "hasChildrenMember", attribute: "has-children-member", converter:
|
|
4795
|
-
{ configKey: "isSelectableMember", attribute: "is-selectable-member", converter:
|
|
4796
|
-
{ configKey: "treePathSeparator", attribute: "tree-path-separator", converter:
|
|
4797
|
-
{ configKey: "isTreeEnabled", converter:
|
|
4846
|
+
{ configKey: "pathMember", attribute: "path-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node materialized tree path." },
|
|
4847
|
+
{ configKey: "parentPathMember", attribute: "parent-path-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node parent path." },
|
|
4848
|
+
{ configKey: "levelMember", attribute: "level-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node depth level." },
|
|
4849
|
+
{ configKey: "hasChildrenMember", attribute: "has-children-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name flagging that a node has children." },
|
|
4850
|
+
{ configKey: "isSelectableMember", attribute: "is-selectable-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name marking whether a node can be selected." },
|
|
4851
|
+
{ configKey: "treePathSeparator", attribute: "tree-path-separator", converter: A({ default: "." }), reflect: !0, on: "reinit", description: "Separator between segments in a materialized tree path." },
|
|
4852
|
+
{ configKey: "isTreeEnabled", converter: B("tristate"), on: "reinit", type: "boolean", description: "Force tree mode on/off. Property-only; when unset (null) tree mode auto-enables if a path source (path-member / getPathCallback) is present." },
|
|
4798
4853
|
{
|
|
4799
4854
|
configKey: "checkboxMode",
|
|
4800
4855
|
attribute: "checkbox-mode",
|
|
@@ -4835,84 +4890,84 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
4835
4890
|
{
|
|
4836
4891
|
configKey: "fullscreenAutofocus",
|
|
4837
4892
|
attribute: "fullscreen-autofocus",
|
|
4838
|
-
converter:
|
|
4893
|
+
converter: B("default-false"),
|
|
4839
4894
|
on: "update",
|
|
4840
4895
|
description: "In the phone fullscreen overlay, auto-focus the search field on open (pops the soft keyboard immediately). Default `false`: the sheet opens with the list visible and the keyboard closed, appearing only when the user taps the search. Set `true` to type-to-filter right away. No effect in the floating presentation."
|
|
4841
4896
|
},
|
|
4842
4897
|
// ── Numbers ──────────────────────────────────────────────────────────────
|
|
4843
|
-
{ configKey: "badgesThreshold", attribute: "badges-threshold", converter:
|
|
4844
|
-
{ configKey: "badgesMaxVisible", attribute: "badges-max-visible", converter:
|
|
4845
|
-
{ configKey: "minSearchLength", attribute: "min-search-length", converter:
|
|
4846
|
-
{ configKey: "searchDebounce", attribute: "search-debounce", converter:
|
|
4847
|
-
{ configKey: "virtualScrollThreshold", attribute: "virtual-scroll-threshold", converter:
|
|
4848
|
-
{ configKey: "optionHeight", attribute: "option-height", converter:
|
|
4849
|
-
{ configKey: "badgeHeight", attribute: "badge-height", converter:
|
|
4850
|
-
{ configKey: "virtualScrollBuffer", attribute: "virtual-scroll-buffer", converter:
|
|
4851
|
-
{ configKey: "badgeTooltipDelay", attribute: "badge-tooltip-delay", converter:
|
|
4852
|
-
{ configKey: "badgeTooltipOffset", attribute: "badge-tooltip-offset", converter:
|
|
4853
|
-
{ configKey: "optionTooltipDelay", attribute: "option-tooltip-delay", converter:
|
|
4854
|
-
{ configKey: "optionTooltipOffset", attribute: "option-tooltip-offset", converter:
|
|
4898
|
+
{ configKey: "badgesThreshold", attribute: "badges-threshold", converter: X(), on: "update", description: "Threshold at which badges collapse to a count/compact view." },
|
|
4899
|
+
{ configKey: "badgesMaxVisible", attribute: "badges-max-visible", converter: X(), on: "update", description: "Maximum number of badges rendered before overflow." },
|
|
4900
|
+
{ configKey: "minSearchLength", attribute: "min-search-length", converter: X({ default: 0 }), on: "update", description: "Minimum characters before searching/filtering starts." },
|
|
4901
|
+
{ configKey: "searchDebounce", attribute: "search-debounce", converter: X({ default: 0 }), on: "update", description: "Debounce delay in ms applied to the search input." },
|
|
4902
|
+
{ configKey: "virtualScrollThreshold", attribute: "virtual-scroll-threshold", converter: X({ default: 100 }), on: "reinit", description: "Option count above which virtual scrolling turns on." },
|
|
4903
|
+
{ configKey: "optionHeight", attribute: "option-height", converter: X({ default: 50 }), on: "update", description: "Fixed row height in px used by virtual scrolling." },
|
|
4904
|
+
{ configKey: "badgeHeight", attribute: "badge-height", converter: X({ default: 36 }), on: "update", description: "Fixed badge height in px used for layout/virtualization." },
|
|
4905
|
+
{ configKey: "virtualScrollBuffer", attribute: "virtual-scroll-buffer", converter: X({ default: 10 }), on: "update", description: "Extra rows rendered above/below the viewport when virtualizing." },
|
|
4906
|
+
{ configKey: "badgeTooltipDelay", attribute: "badge-tooltip-delay", converter: X({ default: 100 }), on: "update", description: "Delay in ms before a badge tooltip appears." },
|
|
4907
|
+
{ configKey: "badgeTooltipOffset", attribute: "badge-tooltip-offset", converter: X({ default: 8 }), on: "update", description: "Gap in px between a badge and its tooltip." },
|
|
4908
|
+
{ configKey: "optionTooltipDelay", attribute: "option-tooltip-delay", converter: X(), on: "update", description: "Delay in ms before an option tooltip appears (falls back to badgeTooltipDelay)." },
|
|
4909
|
+
{ configKey: "optionTooltipOffset", attribute: "option-tooltip-offset", converter: X(), on: "update", description: "Gap in px between an option and its tooltip." },
|
|
4855
4910
|
// ── Booleans (default true) ──────────────────────────────────────────────
|
|
4856
|
-
{ configKey: "isMultipleEnabled", attribute: "multiple", converter:
|
|
4857
|
-
{ configKey: "isGroupsAllowed", attribute: "allow-groups", converter:
|
|
4858
|
-
{ configKey: "isCheckboxesShown", attribute: "show-checkboxes", converter:
|
|
4859
|
-
{ configKey: "isActionsSticky", attribute: "sticky-actions", converter:
|
|
4860
|
-
{ configKey: "isPlacementLocked", attribute: "lock-placement", converter:
|
|
4861
|
-
{ configKey: "isSearchEnabled", attribute: "enable-search", converter:
|
|
4862
|
-
{ configKey: "isKeepOptionsOnSearch", attribute: "keep-options-on-search", converter:
|
|
4863
|
-
{ configKey: "shouldKeepSearchOnClose", attribute: "should-keep-search-on-close", converter:
|
|
4911
|
+
{ configKey: "isMultipleEnabled", attribute: "multiple", converter: B("default-true"), on: "reinit", description: "Allow selecting multiple options. When off, selecting one replaces the previous." },
|
|
4912
|
+
{ configKey: "isGroupsAllowed", attribute: "allow-groups", converter: B("default-true"), on: "reinit", description: "Allow grouping options under group headers." },
|
|
4913
|
+
{ configKey: "isCheckboxesShown", attribute: "show-checkboxes", converter: B("default-true"), on: "reinit", description: "Show a checkbox on each option." },
|
|
4914
|
+
{ configKey: "isActionsSticky", attribute: "sticky-actions", converter: B("default-true"), on: "update", description: "Keep the action bar pinned while the list scrolls." },
|
|
4915
|
+
{ configKey: "isPlacementLocked", attribute: "lock-placement", converter: B("default-true"), on: "update", description: "Keep the dropdown initial placement instead of flipping when it fits." },
|
|
4916
|
+
{ configKey: "isSearchEnabled", attribute: "enable-search", converter: B("default-true"), on: "reinit", description: "Show the search input." },
|
|
4917
|
+
{ configKey: "isKeepOptionsOnSearch", attribute: "keep-options-on-search", converter: B("default-true"), on: "update", description: "Keep already-selected options visible while filtering." },
|
|
4918
|
+
{ configKey: "shouldKeepSearchOnClose", attribute: "should-keep-search-on-close", converter: B("default-true"), on: "update", description: "Preserve the search text after the dropdown closes." },
|
|
4864
4919
|
// ── Booleans (default false) ─────────────────────────────────────────────
|
|
4865
|
-
{ configKey: "isCloseOnSelect", attribute: "close-on-select", converter:
|
|
4866
|
-
{ configKey: "isAddNewAllowed", attribute: "allow-add-new", converter:
|
|
4867
|
-
{ configKey: "isCounterShown", attribute: "show-counter", converter:
|
|
4868
|
-
{ configKey: "isBadgeFullTitleShown", attribute: "show-badge-full-title", converter:
|
|
4869
|
-
{ configKey: "isVirtualScrollEnabled", attribute: "enable-virtual-scroll", converter:
|
|
4870
|
-
{ configKey: "isBadgeTooltipsEnabled", attribute: "enable-badge-tooltips", converter:
|
|
4871
|
-
{ configKey: "isOptionTooltipsEnabled", attribute: "enable-option-tooltips", converter:
|
|
4872
|
-
{ configKey: "isOptionTooltipFollowCursor", attribute: "option-tooltip-follow-cursor", converter:
|
|
4920
|
+
{ configKey: "isCloseOnSelect", attribute: "close-on-select", converter: B("default-false"), on: "update", description: "Close the dropdown immediately after a selection." },
|
|
4921
|
+
{ configKey: "isAddNewAllowed", attribute: "allow-add-new", converter: B("default-false"), on: "reinit", description: "Allow adding a new option from the search text." },
|
|
4922
|
+
{ configKey: "isCounterShown", attribute: "show-counter", converter: B("default-false"), on: "update", description: "Show a selected-count indicator." },
|
|
4923
|
+
{ configKey: "isBadgeFullTitleShown", attribute: "show-badge-full-title", converter: B("default-false"), on: "update", description: "Show the full title on badges instead of the short label." },
|
|
4924
|
+
{ configKey: "isVirtualScrollEnabled", attribute: "enable-virtual-scroll", converter: B("default-false"), on: "reinit", description: "Force virtual scrolling on regardless of the threshold." },
|
|
4925
|
+
{ configKey: "isBadgeTooltipsEnabled", attribute: "enable-badge-tooltips", converter: B("default-false"), on: "update", description: "Enable tooltips on badges." },
|
|
4926
|
+
{ configKey: "isOptionTooltipsEnabled", attribute: "enable-option-tooltips", converter: B("default-false"), on: "update", description: "Enable tooltips on options." },
|
|
4927
|
+
{ configKey: "isOptionTooltipFollowCursor", attribute: "option-tooltip-follow-cursor", converter: B("default-false"), on: "update", description: "Make option tooltips follow the pointer." },
|
|
4873
4928
|
// ── Special attributes ───────────────────────────────────────────────────
|
|
4874
4929
|
{ configKey: "initialValues", attribute: "initial-values", converter: xr(), default: [], on: "reinit", type: "Array<string | number>", description: 'Values selected on first render. Accepts a JSON array (`["a","b"]`) or a bare CSV (`a,b,c`).' },
|
|
4875
|
-
{ configKey: "showDebugInfo", attribute: "show-debug-info", converter:
|
|
4930
|
+
{ configKey: "showDebugInfo", attribute: "show-debug-info", converter: B("default-false"), on: "update", description: "Render an in-component debug panel.", deprecated: "Use per-instance logging (el.enableLogging()) instead." },
|
|
4876
4931
|
// ── Complex property (data) ──────────────────────────────────────────────
|
|
4877
4932
|
{ configKey: "options", converter: po(), 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." },
|
|
4878
|
-
{ configKey: "optionsSource", attribute: "data-options", converter:
|
|
4933
|
+
{ configKey: "optionsSource", attribute: "data-options", converter: A({ isNullable: !0 }), on: "reinit", type: "string", description: "HTML-authoring source for the option list, parsed per `data-options-format`. Reactive: changing either attribute re-renders. Prefer the `options` property in JS; a set `options` property and declarative <option> children both win over this." },
|
|
4879
4934
|
{ configKey: "optionsFormat", attribute: "data-options-format", converter: F(_r, { 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`." },
|
|
4880
|
-
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter:
|
|
4881
|
-
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter:
|
|
4935
|
+
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter: A({ default: "," }), on: "reinit", type: "string", description: 'Field/cell delimiter for the `csv` and `plain` `data-options` formats. Default `,`. Escapes `\\t` `\\n` `\\r` are honoured (e.g. `data-options-splitter="\\t"` for TSV). Ignored for `json`.' },
|
|
4936
|
+
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter: A({ default: `
|
|
4882
4937
|
` }), on: "reinit", type: "string", description: 'Row/record delimiter for the `csv` and `plain` `data-options` formats. Default newline. Escapes honoured (e.g. `data-options-row-splitter=";"` for single-line data). Ignored for `json`.' },
|
|
4883
4938
|
{ configKey: "actionButtons", converter: mo({ validate: (s) => Array.isArray(s) }), on: "reinit", type: "Array<Record<string, unknown>>", description: "Custom action buttons for the dropdown footer/header. Property-only; when unset the default Select-All / Clear buttons apply." },
|
|
4884
4939
|
// ── Callbacks: data shape (structural → reinit) ──────────────────────────
|
|
4885
|
-
{ configKey: "getValueCallback", converter:
|
|
4886
|
-
{ configKey: "getPathCallback", converter:
|
|
4887
|
-
{ configKey: "getGroupCallback", converter:
|
|
4888
|
-
{ configKey: "getDisabledCallback", converter:
|
|
4889
|
-
{ configKey: "getIsSelectableCallback", converter:
|
|
4890
|
-
{ configKey: "getSearchValueCallback", converter:
|
|
4891
|
-
{ configKey: "searchCallback", converter:
|
|
4940
|
+
{ configKey: "getValueCallback", converter: $(), on: "reinit", type: "(item: unknown) => string | number", description: "Extract an option value (overrides valueMember)." },
|
|
4941
|
+
{ configKey: "getPathCallback", converter: $(), on: "reinit", type: "(item: unknown) => string", description: "Extract a node tree path (enables tree mode; overrides pathMember)." },
|
|
4942
|
+
{ configKey: "getGroupCallback", converter: $(), on: "reinit", type: "(item: unknown) => string", description: "Extract the group name from an option (overrides groupMember)." },
|
|
4943
|
+
{ configKey: "getDisabledCallback", converter: $(), on: "reinit", type: "(item: unknown) => boolean", description: "Whether an option is disabled (overrides disabledMember)." },
|
|
4944
|
+
{ configKey: "getIsSelectableCallback", converter: $(), on: "reinit", type: "(node: unknown) => boolean", description: "Whether a tree node can be selected (overrides is-selectable-member)." },
|
|
4945
|
+
{ configKey: "getSearchValueCallback", converter: $(), on: "reinit", type: "(item: unknown) => string", description: "Text an option is searched against (overrides searchValueMember)." },
|
|
4946
|
+
{ configKey: "searchCallback", converter: $(), on: "reinit", type: "(searchTerm: string, signal?: AbortSignal) => Promise<unknown[]>", description: "Custom / async search; return the filtered options." },
|
|
4892
4947
|
// ── Callbacks: display / render (cosmetic → update) ──────────────────────
|
|
4893
|
-
{ configKey: "getDisplayValueCallback", converter:
|
|
4894
|
-
{ configKey: "getBadgeDisplayCallback", converter:
|
|
4895
|
-
{ configKey: "getBadgeClassCallback", converter:
|
|
4896
|
-
{ configKey: "getIconCallback", converter:
|
|
4897
|
-
{ configKey: "getSubtitleCallback", converter:
|
|
4898
|
-
{ configKey: "getFullTitleCallback", converter:
|
|
4899
|
-
{ configKey: "getCounterCallback", converter:
|
|
4900
|
-
{ configKey: "getValueFormatCallback", converter:
|
|
4901
|
-
{ configKey: "getBadgeTooltipCallback", converter:
|
|
4902
|
-
{ configKey: "getOptionTooltipCallback", converter:
|
|
4903
|
-
{ configKey: "getRemoveButtonTooltipCallback", converter:
|
|
4904
|
-
{ configKey: "getSelectedItemClassCallback", converter:
|
|
4905
|
-
{ configKey: "renderOptionContentCallback", converter:
|
|
4906
|
-
{ configKey: "renderBadgeContentCallback", converter:
|
|
4907
|
-
{ configKey: "renderGroupLabelContentCallback", converter:
|
|
4908
|
-
{ configKey: "renderSelectedContentCallback", converter:
|
|
4909
|
-
{ configKey: "renderSelectedItemContentCallback", converter:
|
|
4910
|
-
{ configKey: "customStylesCallback", converter:
|
|
4948
|
+
{ configKey: "getDisplayValueCallback", converter: $(), on: "update", type: "(item: unknown) => string", description: "Compute the display label for an option (overrides displayValueMember)." },
|
|
4949
|
+
{ configKey: "getBadgeDisplayCallback", converter: $(), on: "update", type: "(item: unknown) => string", description: "Compute the text shown on an option badge." },
|
|
4950
|
+
{ configKey: "getBadgeClassCallback", converter: $(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for an option badge." },
|
|
4951
|
+
{ configKey: "getIconCallback", converter: $(), on: "update", type: "(item: unknown) => string", description: "Icon for an option (overrides iconMember)." },
|
|
4952
|
+
{ configKey: "getSubtitleCallback", converter: $(), on: "update", type: "(item: unknown) => string", description: "Subtitle for an option (overrides subtitleMember)." },
|
|
4953
|
+
{ configKey: "getFullTitleCallback", converter: $(), on: "update", type: "(item: unknown) => string", description: "Full title for an option (used by badges when show-badge-full-title is on)." },
|
|
4954
|
+
{ configKey: "getCounterCallback", converter: $(), on: "update", type: "(count: number, moreCount?: number) => string", description: "Render the selected-count label." },
|
|
4955
|
+
{ configKey: "getValueFormatCallback", converter: $(), on: "update", type: "(selectedValues: (string | number)[]) => string", description: "Serialize the selected values for form submission." },
|
|
4956
|
+
{ configKey: "getBadgeTooltipCallback", converter: $(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option badge." },
|
|
4957
|
+
{ configKey: "getOptionTooltipCallback", converter: $(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option row." },
|
|
4958
|
+
{ configKey: "getRemoveButtonTooltipCallback", converter: $(), on: "update", type: "(item: unknown) => string", description: "Tooltip text for a badge remove button." },
|
|
4959
|
+
{ configKey: "getSelectedItemClassCallback", converter: $(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for a selected item." },
|
|
4960
|
+
{ configKey: "renderOptionContentCallback", converter: $(), on: "update", type: "(item: unknown, context: OptionContentRenderContext) => string | HTMLElement", description: "Custom render for an option row; may return HTML or an element." },
|
|
4961
|
+
{ configKey: "renderBadgeContentCallback", converter: $(), on: "update", type: "(item: unknown, context: BadgeContentRenderContext) => string | HTMLElement", description: "Custom render for a badge; may return HTML or an element." },
|
|
4962
|
+
{ configKey: "renderGroupLabelContentCallback", converter: $(), on: "update", type: "(groupName: string) => string | HTMLElement", description: "Customize a group label; may return an HTML string or element." },
|
|
4963
|
+
{ configKey: "renderSelectedContentCallback", converter: $(), on: "update", type: "(item: unknown) => string", description: "Custom render for the whole selected area." },
|
|
4964
|
+
{ configKey: "renderSelectedItemContentCallback", converter: $(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Custom render for one selected item." },
|
|
4965
|
+
{ configKey: "customStylesCallback", converter: $(), on: "update", type: "() => string", description: "Returns a CSS string injected into the component via a replaceable style slot (§12.8)." },
|
|
4911
4966
|
// ── Callbacks: before-hooks (behavior-shaping) ───────────────────────────
|
|
4912
|
-
{ configKey: "beforeSearchCallback", converter:
|
|
4913
|
-
{ configKey: "beforeSelectCallback", converter:
|
|
4914
|
-
{ configKey: "beforeDeselectCallback", converter:
|
|
4915
|
-
{ configKey: "addNewCallback", converter:
|
|
4967
|
+
{ configKey: "beforeSearchCallback", converter: $(), on: "update", type: "(searchTerm: string) => string | null", description: "Runs before a search; return a rewritten term or null to veto." },
|
|
4968
|
+
{ configKey: "beforeSelectCallback", converter: $(), 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." },
|
|
4969
|
+
{ configKey: "beforeDeselectCallback", converter: $(), 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." },
|
|
4970
|
+
{ configKey: "addNewCallback", converter: $(), on: "update", type: "(value: string) => unknown | Promise<unknown>", description: "Create a new option from the typed text." }
|
|
4916
4971
|
], Pr = [
|
|
4917
4972
|
{ name: "select", description: "An option was selected. `detail.option` is the selected option; `detail.selectedOptions`/`detail.selectedValues` are the full selection." },
|
|
4918
4973
|
{ name: "deselect", description: "An option was removed from the selection. `detail.option` is that option." },
|
|
@@ -4933,23 +4988,23 @@ const Er = [
|
|
|
4933
4988
|
{ key: "subtitleMember", member: "subtitle", callbackKey: "getSubtitleCallback" },
|
|
4934
4989
|
{ key: "disabledMember", member: "disabled", callbackKey: "getDisabledCallback" }
|
|
4935
4990
|
];
|
|
4936
|
-
var J,
|
|
4991
|
+
var J, z, me, et, tt, st, ze, De, ke, _, ct, Bt, Kt, Zs, eo, to, dt, Ft, so, oo, io, Wt, ro, no, jt, Ut;
|
|
4937
4992
|
class Ge extends zt {
|
|
4938
4993
|
constructor() {
|
|
4939
4994
|
super();
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
|
|
4943
|
-
|
|
4944
|
-
|
|
4995
|
+
E(this, _);
|
|
4996
|
+
E(this, J);
|
|
4997
|
+
E(this, z);
|
|
4998
|
+
E(this, me);
|
|
4999
|
+
E(this, et, null);
|
|
4945
5000
|
// Dev-mode customStylesCallback lint: unknown --ms-* names already warned about.
|
|
4946
|
-
|
|
5001
|
+
E(this, tt, /* @__PURE__ */ new Set());
|
|
4947
5002
|
// Declarative <option>/<optgroup> state (parsed once from light DOM).
|
|
4948
|
-
|
|
4949
|
-
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
|
|
5003
|
+
E(this, st, !1);
|
|
5004
|
+
E(this, ze, !1);
|
|
5005
|
+
E(this, De);
|
|
5006
|
+
E(this, ke);
|
|
5007
|
+
D(this, J, this.attachShadow({ mode: "open" })), qo(p(this, J), Qs), typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => this.setAttribute("data-ready", "")) : this.setAttribute("data-ready", "");
|
|
4953
5008
|
}
|
|
4954
5009
|
/**
|
|
4955
5010
|
* Called by the browser when the surrounding <form> is reset. Clears the
|
|
@@ -4957,7 +5012,7 @@ class Ge extends zt {
|
|
|
4957
5012
|
*/
|
|
4958
5013
|
formResetCallback() {
|
|
4959
5014
|
var t;
|
|
4960
|
-
(t = p(this,
|
|
5015
|
+
(t = p(this, z)) == null || t.clearAll();
|
|
4961
5016
|
}
|
|
4962
5017
|
// ── core lifecycle hooks ──────────────────────────────────────────────────
|
|
4963
5018
|
/** Runtime writing-direction switch (core observes `dir`): re-mirror the live
|
|
@@ -4966,28 +5021,28 @@ class Ge extends zt {
|
|
|
4966
5021
|
* and the panels' explicit `dir`). The initial direction is read by the build. */
|
|
4967
5022
|
directionChanged(t) {
|
|
4968
5023
|
var o;
|
|
4969
|
-
(o = p(this,
|
|
5024
|
+
(o = p(this, z)) == null || o.refreshDirection();
|
|
4970
5025
|
}
|
|
4971
5026
|
/** Structural change (or first connect): mirror CSS vars, then (re)build the picker. */
|
|
4972
5027
|
reinit() {
|
|
4973
|
-
|
|
5028
|
+
x(this, _, oo).call(this), this.isConnected && x(this, _, Bt).call(this);
|
|
4974
5029
|
}
|
|
4975
5030
|
/** Cosmetic change: mirror CSS vars / custom styles / debug, patch the picker in place. */
|
|
4976
5031
|
update(t) {
|
|
4977
|
-
|
|
5032
|
+
x(this, _, io).call(this, t), "customStylesCallback" in t && x(this, _, Ft).call(this), "showDebugInfo" in t && x(this, _, jt).call(this);
|
|
4978
5033
|
const o = {};
|
|
4979
5034
|
for (const [i, r] of Object.entries(t))
|
|
4980
5035
|
Is.has(i) || (o[i] = r === null ? void 0 : r);
|
|
4981
|
-
p(this,
|
|
5036
|
+
p(this, z) && Object.keys(o).length > 0 && (p(this, z).updateOptions(o) || x(this, _, Bt).call(this)), "mobilePresentation" in t && x(this, _, ct).call(this, At());
|
|
4982
5037
|
}
|
|
4983
5038
|
/** Activate: ensure the picker exists (a DOM move destroyed it in disconnect()). */
|
|
4984
5039
|
connect() {
|
|
4985
|
-
p(this,
|
|
5040
|
+
p(this, z) || x(this, _, Kt).call(this);
|
|
4986
5041
|
}
|
|
4987
5042
|
/** Deactivate: tear the picker down (rebuilt on the next connect). */
|
|
4988
5043
|
disconnect() {
|
|
4989
5044
|
var t;
|
|
4990
|
-
(t = p(this,
|
|
5045
|
+
(t = p(this, z)) == null || t.destroy(), D(this, z, void 0);
|
|
4991
5046
|
}
|
|
4992
5047
|
/**
|
|
4993
5048
|
* Device/viewport/orientation changed (core §12.9). Overriding this opts the
|
|
@@ -4998,7 +5053,7 @@ class Ge extends zt {
|
|
|
4998
5053
|
* set before the dropdown can open.
|
|
4999
5054
|
*/
|
|
5000
5055
|
environmentChanged(t) {
|
|
5001
|
-
|
|
5056
|
+
x(this, _, ct).call(this, t);
|
|
5002
5057
|
}
|
|
5003
5058
|
// ── non-input public API ──────────────────────────────────────────────────
|
|
5004
5059
|
/** Form field name (mirrors the `name` attribute → `formFieldId`). */
|
|
@@ -5010,21 +5065,21 @@ class Ge extends zt {
|
|
|
5010
5065
|
}
|
|
5011
5066
|
get selectedValue() {
|
|
5012
5067
|
var t;
|
|
5013
|
-
return this.flush(), ((t = p(this,
|
|
5068
|
+
return this.flush(), ((t = p(this, z)) == null ? void 0 : t.selectedValue) ?? null;
|
|
5014
5069
|
}
|
|
5015
5070
|
get selectedItem() {
|
|
5016
5071
|
var t;
|
|
5017
|
-
return this.flush(), ((t = p(this,
|
|
5072
|
+
return this.flush(), ((t = p(this, z)) == null ? void 0 : t.selectedItem) ?? null;
|
|
5018
5073
|
}
|
|
5019
5074
|
getSelected() {
|
|
5020
|
-
return this.flush(), p(this,
|
|
5075
|
+
return this.flush(), p(this, z) ? p(this, z).getSelected() : [];
|
|
5021
5076
|
}
|
|
5022
5077
|
setSelected(t, o = {}) {
|
|
5023
5078
|
var i;
|
|
5024
|
-
this.flush(), (i = p(this,
|
|
5079
|
+
this.flush(), (i = p(this, z)) == null || i.setSelected(t, o);
|
|
5025
5080
|
}
|
|
5026
5081
|
getValue() {
|
|
5027
|
-
return this.flush(), p(this,
|
|
5082
|
+
return this.flush(), p(this, z) ? p(this, z).getValue() : null;
|
|
5028
5083
|
}
|
|
5029
5084
|
/**
|
|
5030
5085
|
* Surface a transient message ("toast") on top of the component — visible even in the
|
|
@@ -5035,35 +5090,35 @@ class Ge extends zt {
|
|
|
5035
5090
|
*/
|
|
5036
5091
|
showMessage(t, o) {
|
|
5037
5092
|
var i;
|
|
5038
|
-
this.flush(), (i = p(this,
|
|
5093
|
+
this.flush(), (i = p(this, z)) == null || i.showMessage(t, o);
|
|
5039
5094
|
}
|
|
5040
5095
|
/** Dismiss the transient message shown by {@link showMessage}, if any. */
|
|
5041
5096
|
hideMessage() {
|
|
5042
5097
|
var t;
|
|
5043
|
-
(t = p(this,
|
|
5098
|
+
(t = p(this, z)) == null || t.hideMessage();
|
|
5044
5099
|
}
|
|
5045
5100
|
destroy() {
|
|
5046
5101
|
var t;
|
|
5047
|
-
(t = p(this,
|
|
5102
|
+
(t = p(this, z)) == null || t.destroy();
|
|
5048
5103
|
}
|
|
5049
5104
|
}
|
|
5050
|
-
J = new WeakMap(),
|
|
5105
|
+
J = new WeakMap(), z = new WeakMap(), me = new WeakMap(), et = new WeakMap(), tt = new WeakMap(), st = new WeakMap(), ze = new WeakMap(), De = new WeakMap(), ke = new WeakMap(), _ = new WeakSet(), /** Resolve `mobile-presentation` against `env` and relay it to the live picker. */
|
|
5051
5106
|
ct = function(t) {
|
|
5052
5107
|
var r;
|
|
5053
5108
|
const o = this.config.mobilePresentation ?? "auto", i = si(o, t);
|
|
5054
|
-
(r = p(this,
|
|
5109
|
+
(r = p(this, z)) == null || r.setPresentation(i === "modal" ? "fullscreen" : i);
|
|
5055
5110
|
}, // ── picker lifecycle ──────────────────────────────────────────────────────
|
|
5056
5111
|
Bt = function() {
|
|
5057
5112
|
var t;
|
|
5058
|
-
(t = p(this,
|
|
5113
|
+
(t = p(this, z)) == null || t.destroy(), D(this, z, void 0), x(this, _, Kt).call(this);
|
|
5059
5114
|
}, Kt = function() {
|
|
5060
|
-
|
|
5061
|
-
const t =
|
|
5062
|
-
o && o.length > 0 ? p(this, me).dataset.initialValues = JSON.stringify(o) : delete p(this, me).dataset.initialValues,
|
|
5115
|
+
x(this, _, Zs).call(this), x(this, _, ro).call(this);
|
|
5116
|
+
const t = x(this, _, eo).call(this), o = x(this, _, to).call(this);
|
|
5117
|
+
o && o.length > 0 ? p(this, me).dataset.initialValues = JSON.stringify(o) : delete p(this, me).dataset.initialValues, D(this, z, new wr(p(this, me), t)), x(this, _, Ft).call(this), x(this, _, jt).call(this), x(this, _, ct).call(this, At());
|
|
5063
5118
|
}, Zs = function() {
|
|
5064
5119
|
if (p(this, me)) return;
|
|
5065
5120
|
const t = document.createElement("div");
|
|
5066
|
-
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), p(this, J).appendChild(t),
|
|
5121
|
+
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), p(this, J).appendChild(t), D(this, et, Yo(p(this, J), { position: "first", className: "ms-custom-styles" })), D(this, me, t);
|
|
5067
5122
|
}, /**
|
|
5068
5123
|
* Build the picker config from the merged `this.config`, minus the keys the
|
|
5069
5124
|
* picker doesn't own, plus the runtime wiring (event bridges, container, host,
|
|
@@ -5075,8 +5130,8 @@ eo = function() {
|
|
|
5075
5130
|
for (const i of Object.keys(t))
|
|
5076
5131
|
t[i] === null && delete t[i];
|
|
5077
5132
|
let o = t.options;
|
|
5078
|
-
if (p(this, ze) && p(this,
|
|
5079
|
-
o && o.length > 0 &&
|
|
5133
|
+
if (p(this, ze) && p(this, De))
|
|
5134
|
+
o && o.length > 0 && K.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = p(this, De);
|
|
5080
5135
|
else if (!o || o.length === 0) {
|
|
5081
5136
|
const i = this.config.optionsSource;
|
|
5082
5137
|
if (i != null) {
|
|
@@ -5084,7 +5139,7 @@ eo = function() {
|
|
|
5084
5139
|
splitter: this.config.optionsSplitter,
|
|
5085
5140
|
rowSplitter: this.config.optionsRowSplitter
|
|
5086
5141
|
});
|
|
5087
|
-
a &&
|
|
5142
|
+
a && K.error(`[MultiSelectElement] ${a}`), o = n;
|
|
5088
5143
|
}
|
|
5089
5144
|
}
|
|
5090
5145
|
if (t.options = o, p(this, ze))
|
|
@@ -5094,20 +5149,20 @@ eo = function() {
|
|
|
5094
5149
|
var r;
|
|
5095
5150
|
this.emit("select", {
|
|
5096
5151
|
option: i,
|
|
5097
|
-
selectedOptions: ((r = p(this,
|
|
5098
|
-
selectedValues:
|
|
5152
|
+
selectedOptions: ((r = p(this, z)) == null ? void 0 : r.getSelected()) ?? [],
|
|
5153
|
+
selectedValues: x(this, _, dt).call(this)
|
|
5099
5154
|
});
|
|
5100
5155
|
}, t.onDeselect = (i) => {
|
|
5101
5156
|
var r;
|
|
5102
5157
|
this.emit("deselect", {
|
|
5103
5158
|
option: i,
|
|
5104
|
-
selectedOptions: ((r = p(this,
|
|
5105
|
-
selectedValues:
|
|
5159
|
+
selectedOptions: ((r = p(this, z)) == null ? void 0 : r.getSelected()) ?? [],
|
|
5160
|
+
selectedValues: x(this, _, dt).call(this)
|
|
5106
5161
|
});
|
|
5107
5162
|
}, t.onChange = (i) => {
|
|
5108
5163
|
this.emit("change", {
|
|
5109
5164
|
selectedOptions: i,
|
|
5110
|
-
selectedValues:
|
|
5165
|
+
selectedValues: x(this, _, dt).call(this)
|
|
5111
5166
|
});
|
|
5112
5167
|
}, t.container = p(this, J), t.hostElement = this, t;
|
|
5113
5168
|
}, to = function() {
|
|
@@ -5117,7 +5172,7 @@ eo = function() {
|
|
|
5117
5172
|
return t && t.length > 0 ? t : void 0;
|
|
5118
5173
|
}, dt = function() {
|
|
5119
5174
|
var o;
|
|
5120
|
-
const t = (o = p(this,
|
|
5175
|
+
const t = (o = p(this, z)) == null ? void 0 : o.getValue();
|
|
5121
5176
|
return t == null ? [] : Array.isArray(t) ? t : [t];
|
|
5122
5177
|
}, // ── §12.8 custom styles ───────────────────────────────────────────────────
|
|
5123
5178
|
Ft = function() {
|
|
@@ -5130,9 +5185,9 @@ Ft = function() {
|
|
|
5130
5185
|
}
|
|
5131
5186
|
try {
|
|
5132
5187
|
const i = o();
|
|
5133
|
-
t.set(i), i &&
|
|
5188
|
+
t.set(i), i && x(this, _, so).call(this, i);
|
|
5134
5189
|
} catch (i) {
|
|
5135
|
-
|
|
5190
|
+
K.warn("[MultiSelectElement] customStylesCallback threw", i), t.clear();
|
|
5136
5191
|
}
|
|
5137
5192
|
}, /**
|
|
5138
5193
|
* Dev-only lint: warn when `customStylesCallback` *sets* a `--ms-*` variable
|
|
@@ -5152,18 +5207,18 @@ so = function(t) {
|
|
|
5152
5207
|
));
|
|
5153
5208
|
}, // ── CSS-var sugar ─────────────────────────────────────────────────────────
|
|
5154
5209
|
oo = function() {
|
|
5155
|
-
for (const t of Object.keys(at))
|
|
5210
|
+
for (const t of Object.keys(at)) x(this, _, Wt).call(this, at[t], this.config[t]);
|
|
5156
5211
|
}, io = function(t) {
|
|
5157
5212
|
for (const o of Object.keys(at))
|
|
5158
|
-
o in t &&
|
|
5213
|
+
o in t && x(this, _, Wt).call(this, at[o], t[o]);
|
|
5159
5214
|
}, Wt = function(t, o) {
|
|
5160
5215
|
o == null || o === "" ? this.style.removeProperty(t) : this.style.setProperty(t, String(o));
|
|
5161
5216
|
}, // ── declarative <option> parsing (light DOM, once) ────────────────────────
|
|
5162
5217
|
ro = function() {
|
|
5163
5218
|
if (p(this, st)) return;
|
|
5164
|
-
|
|
5165
|
-
const t =
|
|
5166
|
-
t && (
|
|
5219
|
+
D(this, st, !0);
|
|
5220
|
+
const t = x(this, _, no).call(this);
|
|
5221
|
+
t && (D(this, De, t), D(this, ze, !0));
|
|
5167
5222
|
}, no = function() {
|
|
5168
5223
|
const t = Array.from(this.children);
|
|
5169
5224
|
if (t.length === 0) return null;
|
|
@@ -5175,7 +5230,7 @@ ro = function() {
|
|
|
5175
5230
|
value: n.value || ((c = n.textContent) == null ? void 0 : c.trim()) || "",
|
|
5176
5231
|
label: ((d = n.textContent) == null ? void 0 : d.trim()) || n.value || ""
|
|
5177
5232
|
};
|
|
5178
|
-
a && (l.group = a), n.hasAttribute("selected") && (p(this, ke) ??
|
|
5233
|
+
a && (l.group = a), n.hasAttribute("selected") && (p(this, ke) ?? D(this, ke, [])).push(l.value), n.hasAttribute("disabled") && (l.disabled = !0), n.hasAttribute("data-icon") && (l.icon = n.getAttribute("data-icon")), n.hasAttribute("data-subtitle") && (l.subtitle = n.getAttribute("data-subtitle")), o.push(l), i = !0;
|
|
5179
5234
|
};
|
|
5180
5235
|
for (const n of t)
|
|
5181
5236
|
if (n.tagName === "OPTION")
|
|
@@ -5186,7 +5241,7 @@ ro = function() {
|
|
|
5186
5241
|
r(c, l);
|
|
5187
5242
|
}
|
|
5188
5243
|
if (!i) return null;
|
|
5189
|
-
|
|
5244
|
+
K.debug(`[MultiSelectElement] Parsed ${o.length} declarative options from Light DOM`);
|
|
5190
5245
|
for (const n of t)
|
|
5191
5246
|
(n.tagName === "OPTION" || n.tagName === "OPTGROUP") && n.remove();
|
|
5192
5247
|
return o;
|
|
@@ -5199,12 +5254,12 @@ jt = function() {
|
|
|
5199
5254
|
const i = document.createElement("details"), r = document.createElement("summary");
|
|
5200
5255
|
r.textContent = "Debug Info";
|
|
5201
5256
|
const n = document.createElement("div");
|
|
5202
|
-
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), p(this, J).appendChild(o),
|
|
5257
|
+
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), p(this, J).appendChild(o), x(this, _, Ut).call(this);
|
|
5203
5258
|
}, Ut = function() {
|
|
5204
5259
|
var l, c, d, h;
|
|
5205
5260
|
const t = p(this, J).querySelector(".ms__debug-stats");
|
|
5206
|
-
if (!t || !p(this,
|
|
5207
|
-
const o = "2.0.0-
|
|
5261
|
+
if (!t || !p(this, z)) return;
|
|
5262
|
+
const o = "2.0.0-rc06", i = typeof window < "u" && ((c = (l = window.components) == null ? void 0 : l["web-multiselect"]) == null ? void 0 : c.getInstances().length) || 0, r = p(this, z).getSelected().length, n = ((d = this.config.options) == null ? void 0 : d.length) || 0, a = p(this, z);
|
|
5208
5263
|
t.innerHTML = `
|
|
5209
5264
|
<span>Version: ${o}</span>
|
|
5210
5265
|
<span>Total Instances: ${i}</span>
|
|
@@ -5215,7 +5270,7 @@ jt = function() {
|
|
|
5215
5270
|
<span>Search: ${a.searchTerm || "none"}</span>
|
|
5216
5271
|
<span>Loading: ${a.isLoading ? "Yes" : "No"}</span>
|
|
5217
5272
|
`, setTimeout(() => {
|
|
5218
|
-
this.config.showDebugInfo &&
|
|
5273
|
+
this.config.showDebugInfo && x(this, _, Ut).call(this);
|
|
5219
5274
|
}, 500);
|
|
5220
5275
|
}, // Opt into the form-associated custom element lifecycle so form.reset() and
|
|
5221
5276
|
// form.elements see the control.
|
|
@@ -5224,7 +5279,7 @@ typeof customElements < "u" && !customElements.get("web-multiselect") && customE
|
|
|
5224
5279
|
Go("web-multiselect", Ge, {
|
|
5225
5280
|
config: {
|
|
5226
5281
|
name: "@keenmate/web-multiselect",
|
|
5227
|
-
version: "2.0.0-
|
|
5282
|
+
version: "2.0.0-rc06",
|
|
5228
5283
|
author: "Keenmate",
|
|
5229
5284
|
license: "MIT",
|
|
5230
5285
|
repository: "git+https://github.com/keenmate/web-multiselect.git",
|
|
@@ -5237,9 +5292,9 @@ export {
|
|
|
5237
5292
|
Ge as MultiSelectElement,
|
|
5238
5293
|
_r as OPTIONS_FORMATS,
|
|
5239
5294
|
wr as WebMultiSelect,
|
|
5240
|
-
|
|
5241
|
-
|
|
5242
|
-
|
|
5295
|
+
K as dataLogger,
|
|
5296
|
+
$r as disableLogging,
|
|
5297
|
+
Dr as enableLogging,
|
|
5243
5298
|
nt as initLogger,
|
|
5244
5299
|
W as interactionLogger,
|
|
5245
5300
|
kr as parseOptionsData,
|