@keenmate/web-multiselect 2.2.0-rc01 → 2.2.0
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 +9 -13
- package/custom-elements.json +107 -1
- package/dist/index.d.ts +175 -36
- package/dist/multiselect.js +775 -684
- package/dist/multiselect.umd.js +12 -12
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/css/options.css +6 -4
- package/vscode.html-custom-data.json +5 -0
- package/web-types.json +11 -1
package/dist/multiselect.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var Ho = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var Ts = (s) => {
|
|
3
3
|
throw TypeError(s);
|
|
4
4
|
};
|
|
5
5
|
var Fo = (s, e, t) => e in s ? Ho(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
|
|
6
|
-
var m = (s, e, t) => Fo(s, typeof e != "symbol" ? e + "" : e, t), Ut = (s, e, t) => e.has(s) ||
|
|
7
|
-
var h = (s, e, t) => (Ut(s, e, "read from private field"), t ? t.call(s) : e.get(s)), L = (s, e, t) => e.has(s) ?
|
|
6
|
+
var m = (s, e, t) => Fo(s, typeof e != "symbol" ? e + "" : e, t), Ut = (s, e, t) => e.has(s) || Ts("Cannot " + t);
|
|
7
|
+
var h = (s, e, t) => (Ut(s, e, "read from private field"), t ? t.call(s) : e.get(s)), L = (s, e, t) => e.has(s) ? Ts("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), I = (s, e, t, o) => (Ut(s, e, "write to private field"), o ? o.call(s, t) : e.set(s, t), t), b = (s, e, t) => (Ut(s, e, "access private method"), t);
|
|
8
8
|
function K(s, e = {}) {
|
|
9
9
|
const t = new Set(s), o = e.shouldNullOnInvalid ? null : e.default ?? null;
|
|
10
10
|
return {
|
|
@@ -37,7 +37,7 @@ function X(s = {}) {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function E(s = {}) {
|
|
41
41
|
const e = s.isNullable === !0, t = s.default ?? (e ? null : ""), o = (i) => s.shouldTrim ? i.trim() : i;
|
|
42
42
|
return {
|
|
43
43
|
fromAttribute(i) {
|
|
@@ -164,7 +164,7 @@ function Jo() {
|
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
|
-
const
|
|
167
|
+
const so = {
|
|
168
168
|
pointer: "fine",
|
|
169
169
|
hasCoarsePointer: !1,
|
|
170
170
|
canHover: !0,
|
|
@@ -177,12 +177,12 @@ const to = {
|
|
|
177
177
|
isApple: !1,
|
|
178
178
|
isAndroid: !1
|
|
179
179
|
}, Yo = { mobile: 640, tablet: 1024, desktop: 1 / 0 };
|
|
180
|
-
let xt =
|
|
180
|
+
let xt = oo(Yo);
|
|
181
181
|
const rt = /* @__PURE__ */ new Set(), nt = /* @__PURE__ */ new Set();
|
|
182
|
-
let
|
|
183
|
-
const
|
|
184
|
-
let
|
|
185
|
-
function
|
|
182
|
+
let Me = null, It = [], _t = !1;
|
|
183
|
+
const Is = 30;
|
|
184
|
+
let ze, kt = 0;
|
|
185
|
+
function oo(s) {
|
|
186
186
|
return Object.entries(s).sort((e, t) => e[1] - t[1]);
|
|
187
187
|
}
|
|
188
188
|
function Zo(s) {
|
|
@@ -192,10 +192,10 @@ function Zo(s) {
|
|
|
192
192
|
const e = xt[xt.length - 1];
|
|
193
193
|
return e ? e[0] : "desktop";
|
|
194
194
|
}
|
|
195
|
-
function
|
|
195
|
+
function gs() {
|
|
196
196
|
return typeof window < "u" && typeof window.matchMedia == "function";
|
|
197
197
|
}
|
|
198
|
-
function
|
|
198
|
+
function Os() {
|
|
199
199
|
return typeof navigator < "u" && (navigator.maxTouchPoints ?? 0) > 1;
|
|
200
200
|
}
|
|
201
201
|
function Qo() {
|
|
@@ -209,32 +209,32 @@ function Qo() {
|
|
|
209
209
|
if (e.includes("ios"))
|
|
210
210
|
return "ios";
|
|
211
211
|
if (e.includes("mac"))
|
|
212
|
-
return
|
|
212
|
+
return Os() ? "ios" : "macos";
|
|
213
213
|
if (e.includes("windows"))
|
|
214
214
|
return "windows";
|
|
215
215
|
if (e.includes("linux"))
|
|
216
216
|
return "linux";
|
|
217
217
|
}
|
|
218
218
|
const t = navigator.userAgent ?? "";
|
|
219
|
-
return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ?
|
|
219
|
+
return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ? Os() ? "ios" : "macos" : /windows/i.test(t) ? "windows" : /linux/i.test(t) ? "linux" : "unknown";
|
|
220
220
|
}
|
|
221
221
|
let ei;
|
|
222
222
|
function ti() {
|
|
223
223
|
return ei ?? (ei = Qo());
|
|
224
224
|
}
|
|
225
|
-
function
|
|
226
|
-
return
|
|
225
|
+
function Xe(s) {
|
|
226
|
+
return gs() && window.matchMedia(s).matches;
|
|
227
227
|
}
|
|
228
|
-
function
|
|
229
|
-
if (!
|
|
230
|
-
return { ...
|
|
231
|
-
const s =
|
|
228
|
+
function bs() {
|
|
229
|
+
if (!gs())
|
|
230
|
+
return { ...so };
|
|
231
|
+
const s = Xe("(any-pointer: coarse)"), e = Xe("(pointer: coarse)"), t = Xe("(pointer: fine)"), o = Xe("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a = ti();
|
|
232
232
|
return {
|
|
233
233
|
pointer: i,
|
|
234
234
|
hasCoarsePointer: s,
|
|
235
235
|
canHover: o,
|
|
236
236
|
isTouchPrimary: e && !o,
|
|
237
|
-
orientation:
|
|
237
|
+
orientation: Xe("(orientation: portrait)") ? "portrait" : "landscape",
|
|
238
238
|
viewportWidth: r,
|
|
239
239
|
viewportHeight: n,
|
|
240
240
|
breakpoint: Zo(r),
|
|
@@ -250,27 +250,27 @@ function oi(s, e) {
|
|
|
250
250
|
return s.viewportWidth === e.viewportWidth && s.viewportHeight === e.viewportHeight;
|
|
251
251
|
}
|
|
252
252
|
function Ot() {
|
|
253
|
-
const s =
|
|
254
|
-
if (
|
|
253
|
+
const s = bs(), e = Me;
|
|
254
|
+
if (Me = s, !e || !si(e, s))
|
|
255
255
|
for (const t of [...rt])
|
|
256
256
|
t(s);
|
|
257
257
|
nt.size > 0 && (!e || !oi(e, s)) && ii();
|
|
258
258
|
}
|
|
259
|
-
function
|
|
260
|
-
const s =
|
|
259
|
+
function Ms() {
|
|
260
|
+
const s = Me;
|
|
261
261
|
if (s)
|
|
262
262
|
for (const e of [...nt])
|
|
263
263
|
e(s);
|
|
264
264
|
}
|
|
265
265
|
function ii() {
|
|
266
|
-
if (
|
|
266
|
+
if (ze !== void 0)
|
|
267
267
|
return;
|
|
268
268
|
const s = Date.now() - kt;
|
|
269
|
-
s >=
|
|
270
|
-
|
|
271
|
-
},
|
|
269
|
+
s >= Is ? (kt = Date.now(), Ms()) : ze = setTimeout(() => {
|
|
270
|
+
ze = void 0, kt = Date.now(), Ms();
|
|
271
|
+
}, Is - s);
|
|
272
272
|
}
|
|
273
|
-
const
|
|
273
|
+
const Mt = () => Ot(), io = () => {
|
|
274
274
|
if (typeof requestAnimationFrame == "function") {
|
|
275
275
|
if (_t)
|
|
276
276
|
return;
|
|
@@ -281,14 +281,14 @@ const Pt = () => Ot(), oo = () => {
|
|
|
281
281
|
Ot();
|
|
282
282
|
};
|
|
283
283
|
function ri(s) {
|
|
284
|
-
typeof s.addEventListener == "function" ? s.addEventListener("change",
|
|
284
|
+
typeof s.addEventListener == "function" ? s.addEventListener("change", Mt) : typeof s.addListener == "function" && s.addListener(Mt);
|
|
285
285
|
}
|
|
286
286
|
function ni(s) {
|
|
287
|
-
typeof s.removeEventListener == "function" ? s.removeEventListener("change",
|
|
287
|
+
typeof s.removeEventListener == "function" ? s.removeEventListener("change", Mt) : typeof s.removeListener == "function" && s.removeListener(Mt);
|
|
288
288
|
}
|
|
289
|
-
function
|
|
290
|
-
if (!
|
|
291
|
-
|
|
289
|
+
function ro() {
|
|
290
|
+
if (!gs()) {
|
|
291
|
+
Me = { ...so };
|
|
292
292
|
return;
|
|
293
293
|
}
|
|
294
294
|
It = [
|
|
@@ -300,37 +300,37 @@ function io() {
|
|
|
300
300
|
];
|
|
301
301
|
for (const s of It)
|
|
302
302
|
ri(s);
|
|
303
|
-
typeof window.addEventListener == "function" && window.addEventListener("resize",
|
|
303
|
+
typeof window.addEventListener == "function" && window.addEventListener("resize", io), Me = bs();
|
|
304
304
|
}
|
|
305
|
-
function
|
|
305
|
+
function no() {
|
|
306
306
|
for (const s of It)
|
|
307
307
|
ni(s);
|
|
308
|
-
It = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize",
|
|
308
|
+
It = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize", io), _t = !1, ze !== void 0 && (clearTimeout(ze), ze = void 0), kt = 0, Me = null;
|
|
309
309
|
}
|
|
310
|
-
function
|
|
310
|
+
function Pt() {
|
|
311
311
|
return rt.size + nt.size;
|
|
312
312
|
}
|
|
313
313
|
function Lt() {
|
|
314
|
-
return
|
|
314
|
+
return Me ?? bs();
|
|
315
315
|
}
|
|
316
316
|
function ai(s, e = {}) {
|
|
317
|
-
const t =
|
|
318
|
-
rt.add(s), t &&
|
|
317
|
+
const t = Pt() === 0;
|
|
318
|
+
rt.add(s), t && ro(), e.immediate !== !1 && s(Lt());
|
|
319
319
|
let o = !0;
|
|
320
320
|
return () => {
|
|
321
|
-
o && (o = !1, rt.delete(s),
|
|
321
|
+
o && (o = !1, rt.delete(s), Pt() === 0 && no());
|
|
322
322
|
};
|
|
323
323
|
}
|
|
324
324
|
function li(s, e = {}) {
|
|
325
|
-
const t =
|
|
326
|
-
nt.add(s), t &&
|
|
325
|
+
const t = Pt() === 0;
|
|
326
|
+
nt.add(s), t && ro(), e.immediate !== !1 && s(Lt());
|
|
327
327
|
let o = !0;
|
|
328
328
|
return () => {
|
|
329
|
-
o && (o = !1, nt.delete(s),
|
|
329
|
+
o && (o = !1, nt.delete(s), Pt() === 0 && no());
|
|
330
330
|
};
|
|
331
331
|
}
|
|
332
332
|
function Sn(s) {
|
|
333
|
-
xt =
|
|
333
|
+
xt = oo(s), rt.size > 0 && Ot();
|
|
334
334
|
}
|
|
335
335
|
const ci = 600;
|
|
336
336
|
function di(s) {
|
|
@@ -343,7 +343,7 @@ let qt = 0;
|
|
|
343
343
|
function ui() {
|
|
344
344
|
return typeof ResizeObserver < "u";
|
|
345
345
|
}
|
|
346
|
-
function
|
|
346
|
+
function ao(s) {
|
|
347
347
|
if (typeof s.getBoundingClientRect != "function")
|
|
348
348
|
return { width: 0, height: 0 };
|
|
349
349
|
const e = s.getBoundingClientRect();
|
|
@@ -369,7 +369,7 @@ function fi(s) {
|
|
|
369
369
|
const t = et.get(e.target);
|
|
370
370
|
if (!t)
|
|
371
371
|
continue;
|
|
372
|
-
const o =
|
|
372
|
+
const o = ao(e.target);
|
|
373
373
|
for (const i of [...t])
|
|
374
374
|
pi(i, o);
|
|
375
375
|
}
|
|
@@ -385,7 +385,7 @@ function bi(s, e, t = {}) {
|
|
|
385
385
|
lastNotify: 0
|
|
386
386
|
};
|
|
387
387
|
if (t.immediate !== !1) {
|
|
388
|
-
const n =
|
|
388
|
+
const n = ao(s);
|
|
389
389
|
o.lastFired = n, o.lastNotify = Date.now(), e(n, s);
|
|
390
390
|
}
|
|
391
391
|
const i = gi();
|
|
@@ -414,12 +414,12 @@ function wi(s, e) {
|
|
|
414
414
|
function yi(s) {
|
|
415
415
|
return Array.from(Et.get(s) ?? []);
|
|
416
416
|
}
|
|
417
|
-
const
|
|
417
|
+
const lo = /* @__PURE__ */ new Map();
|
|
418
418
|
function xi(s, e) {
|
|
419
|
-
|
|
419
|
+
lo.set(s.toLowerCase(), e);
|
|
420
420
|
}
|
|
421
421
|
function _i(s) {
|
|
422
|
-
return
|
|
422
|
+
return lo.get(s.toLowerCase());
|
|
423
423
|
}
|
|
424
424
|
function ki(s, e, t, o = {}) {
|
|
425
425
|
return s.dispatchEvent(new CustomEvent(e, {
|
|
@@ -442,31 +442,31 @@ function Ti(s) {
|
|
|
442
442
|
}) : [];
|
|
443
443
|
}
|
|
444
444
|
const Ii = typeof HTMLElement < "u" ? HTMLElement : class {
|
|
445
|
-
},
|
|
445
|
+
}, Ls = /* @__PURE__ */ new WeakSet();
|
|
446
446
|
let Oi = 0;
|
|
447
|
-
const
|
|
447
|
+
const Mi = { trace() {
|
|
448
448
|
}, debug() {
|
|
449
449
|
}, info() {
|
|
450
450
|
}, warn() {
|
|
451
451
|
}, error() {
|
|
452
|
-
} },
|
|
453
|
-
var
|
|
454
|
-
const
|
|
452
|
+
} }, Pi = new Proxy({}, { get: () => Mi });
|
|
453
|
+
var pe, ct, ke, dt, Ce, ht, Bt, Se, fe, Te, Ie, $e, Ve, De, Re, Be, He, Ht, ie, Fe, M, co, ho, uo, Z, mo, po, es, ts, tt, ss, fo;
|
|
454
|
+
const _e = class _e extends Ii {
|
|
455
455
|
constructor() {
|
|
456
456
|
super();
|
|
457
|
-
L(this,
|
|
458
|
-
L(this,
|
|
457
|
+
L(this, M);
|
|
458
|
+
L(this, pe, {});
|
|
459
459
|
L(this, ct, /* @__PURE__ */ new Map());
|
|
460
|
-
L(this,
|
|
460
|
+
L(this, ke, /* @__PURE__ */ new Map());
|
|
461
461
|
L(this, dt, /* @__PURE__ */ new Map());
|
|
462
462
|
/** Live handler currently bound via each managed `on<Name>` property, keyed by event name. */
|
|
463
|
-
L(this,
|
|
463
|
+
L(this, Ce, /* @__PURE__ */ new Map());
|
|
464
464
|
L(this, ht, Jo());
|
|
465
|
-
L(this, Bt, () =>
|
|
466
|
-
L(this,
|
|
467
|
-
L(this,
|
|
468
|
-
L(this,
|
|
469
|
-
L(this,
|
|
465
|
+
L(this, Bt, () => b(this, M, ss).call(this));
|
|
466
|
+
L(this, Se, null);
|
|
467
|
+
L(this, fe, !1);
|
|
468
|
+
L(this, Te, []);
|
|
469
|
+
L(this, Ie, !1);
|
|
470
470
|
/**
|
|
471
471
|
* configKeys that carried a value assigned BEFORE the element was upgraded
|
|
472
472
|
* (`el.foo = …` before its class was defined). The browser fires the initial
|
|
@@ -476,25 +476,25 @@ const xe = class xe extends Ii {
|
|
|
476
476
|
* guarantee); post-connect attribute changes react normally. Cleared on first
|
|
477
477
|
* connect.
|
|
478
478
|
*/
|
|
479
|
-
L(this,
|
|
480
|
-
L(this,
|
|
479
|
+
L(this, $e, null);
|
|
480
|
+
L(this, Ve, !1);
|
|
481
481
|
/** Unsubscribe from the environment observable; set only while connected AND `environmentChanged` is overridden. */
|
|
482
|
-
L(this, Ve);
|
|
483
|
-
/** Unsubscribe from the throttled viewport observable; set only while connected AND `viewportChanged` is overridden. */
|
|
484
482
|
L(this, De);
|
|
485
|
-
/** Unsubscribe from the
|
|
483
|
+
/** Unsubscribe from the throttled viewport observable; set only while connected AND `viewportChanged` is overridden. */
|
|
486
484
|
L(this, Re);
|
|
485
|
+
/** Unsubscribe from the per-element ResizeObserver; set only while connected AND `resized` is overridden. */
|
|
487
486
|
L(this, Be);
|
|
487
|
+
L(this, He);
|
|
488
488
|
L(this, Ht);
|
|
489
489
|
L(this, ie);
|
|
490
|
-
L(this,
|
|
490
|
+
L(this, Fe);
|
|
491
491
|
const t = this.constructor, o = t.inputs ?? [], i = Ti(t.events);
|
|
492
|
-
|
|
492
|
+
b(this, M, uo).call(this, o, i);
|
|
493
493
|
for (const r of o)
|
|
494
|
-
h(this, ct).set(r.configKey, r), r.attribute && h(this,
|
|
494
|
+
h(this, ct).set(r.configKey, r), r.attribute && h(this, ke).set(r.attribute, r);
|
|
495
495
|
for (const r of i)
|
|
496
496
|
h(this, dt).set(r.name, r);
|
|
497
|
-
|
|
497
|
+
b(this, M, co).call(this, o), b(this, M, mo).call(this, o), b(this, M, po).call(this, i);
|
|
498
498
|
}
|
|
499
499
|
static get observedAttributes() {
|
|
500
500
|
const t = (this.inputs ?? []).filter((o) => o.attribute).map((o) => o.attribute);
|
|
@@ -503,42 +503,42 @@ const xe = class xe extends Ii {
|
|
|
503
503
|
// ── lifecycle ──────────────────────────────────────────────────────────
|
|
504
504
|
attributeChangedCallback(t, o, i) {
|
|
505
505
|
var a;
|
|
506
|
-
if (h(this,
|
|
506
|
+
if (h(this, Ve))
|
|
507
507
|
return;
|
|
508
|
-
if (t === "dir" && !h(this,
|
|
509
|
-
h(this,
|
|
508
|
+
if (t === "dir" && !h(this, ke).has("dir")) {
|
|
509
|
+
h(this, Ie) && this.directionChanged(this.isRTL);
|
|
510
510
|
return;
|
|
511
511
|
}
|
|
512
|
-
const r = h(this,
|
|
513
|
-
if (!r || !h(this,
|
|
512
|
+
const r = h(this, ke).get(t);
|
|
513
|
+
if (!r || !h(this, Ie) && ((a = h(this, $e)) != null && a.has(r.configKey)))
|
|
514
514
|
return;
|
|
515
515
|
let n;
|
|
516
516
|
try {
|
|
517
517
|
n = qo(r, i, this);
|
|
518
518
|
} catch (l) {
|
|
519
|
-
|
|
519
|
+
b(this, M, Z).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = b(this, M, ho).call(this, r);
|
|
520
520
|
}
|
|
521
|
-
|
|
521
|
+
b(this, M, ts).call(this, n);
|
|
522
522
|
}
|
|
523
523
|
connectedCallback() {
|
|
524
|
-
vi(this.localName, this), h(this,
|
|
524
|
+
vi(this.localName, this), h(this, Ie) || (I(this, Ie, !0), I(this, $e, null), I(this, fe, !0)), b(this, M, tt).call(this), this.connect(), this.environmentChanged !== _e.prototype.environmentChanged && I(this, De, ai((t) => this.environmentChanged(t))), this.viewportChanged !== _e.prototype.viewportChanged && I(this, Re, li((t) => this.viewportChanged(t))), this.resized !== _e.prototype.resized && I(this, Be, bi(this, (t) => this.resized(t), { immediate: !1 }));
|
|
525
525
|
}
|
|
526
526
|
disconnectedCallback() {
|
|
527
527
|
var t, o, i;
|
|
528
|
-
wi(this.localName, this), (t = h(this,
|
|
528
|
+
wi(this.localName, this), (t = h(this, De)) == null || t.call(this), I(this, De, void 0), (o = h(this, Re)) == null || o.call(this), I(this, Re, void 0), (i = h(this, Be)) == null || i.call(this), I(this, Be, void 0), this.disconnect();
|
|
529
529
|
}
|
|
530
530
|
// ── public batching API ─────────────────────────────────────────────────
|
|
531
531
|
/** Apply many inputs (by `configKey` or attribute name) as ONE reinit/update. */
|
|
532
532
|
setAttributes(t) {
|
|
533
533
|
for (const [o, i] of Object.entries(t)) {
|
|
534
|
-
const r = h(this, ct).get(o) ?? h(this,
|
|
535
|
-
r &&
|
|
534
|
+
const r = h(this, ct).get(o) ?? h(this, ke).get(o);
|
|
535
|
+
r && b(this, M, es).call(this, r, i);
|
|
536
536
|
}
|
|
537
|
-
|
|
537
|
+
b(this, M, tt).call(this);
|
|
538
538
|
}
|
|
539
539
|
/** Run `fn` and coalesce every input change it makes into a single reinit/update. */
|
|
540
540
|
batch(t) {
|
|
541
|
-
t(),
|
|
541
|
+
t(), b(this, M, tt).call(this);
|
|
542
542
|
}
|
|
543
543
|
/**
|
|
544
544
|
* Apply any pending input writes **synchronously, now** — running the
|
|
@@ -554,7 +554,7 @@ const xe = class xe extends Ii {
|
|
|
554
554
|
* `await whenSettled()` between the two.
|
|
555
555
|
*/
|
|
556
556
|
flush() {
|
|
557
|
-
|
|
557
|
+
b(this, M, tt).call(this);
|
|
558
558
|
}
|
|
559
559
|
/**
|
|
560
560
|
* Resolves once the element is **settled** — i.e. every staged input change
|
|
@@ -572,12 +572,12 @@ const xe = class xe extends Ii {
|
|
|
572
572
|
* flush — not before the change is actually applied.
|
|
573
573
|
*/
|
|
574
574
|
whenSettled() {
|
|
575
|
-
return !h(this,
|
|
575
|
+
return !h(this, Se) && !h(this, fe) ? Promise.resolve() : new Promise((t) => h(this, Te).push(t));
|
|
576
576
|
}
|
|
577
577
|
// ── subclass surface ─────────────────────────────────────────────────────
|
|
578
578
|
/** The current validated config. */
|
|
579
579
|
get config() {
|
|
580
|
-
return h(this,
|
|
580
|
+
return h(this, pe);
|
|
581
581
|
}
|
|
582
582
|
/**
|
|
583
583
|
* Instance-scoped loggers, one per category of the bundle this component
|
|
@@ -590,13 +590,13 @@ const xe = class xe extends Ii {
|
|
|
590
590
|
* loggers inside a component.
|
|
591
591
|
*/
|
|
592
592
|
get log() {
|
|
593
|
-
if (h(this,
|
|
594
|
-
return h(this,
|
|
593
|
+
if (h(this, Fe))
|
|
594
|
+
return h(this, Fe);
|
|
595
595
|
const t = _i(this.localName);
|
|
596
596
|
if (!t)
|
|
597
|
-
return
|
|
597
|
+
return Pi;
|
|
598
598
|
const o = h(this, Ht) ?? I(this, Ht, `${this.localName}#${this.id || ++Oi}`);
|
|
599
|
-
return I(this,
|
|
599
|
+
return I(this, Fe, t.forInstance(o, () => h(this, ie)));
|
|
600
600
|
}
|
|
601
601
|
/**
|
|
602
602
|
* Turn on verbose logging for THIS element only (default `debug`), independent
|
|
@@ -727,12 +727,12 @@ const xe = class xe extends Ii {
|
|
|
727
727
|
* instead (e.g. `this.internals?.setFormValue(value)`).
|
|
728
728
|
*/
|
|
729
729
|
get internals() {
|
|
730
|
-
if (h(this,
|
|
731
|
-
return h(this,
|
|
730
|
+
if (h(this, He))
|
|
731
|
+
return h(this, He);
|
|
732
732
|
if (typeof this.attachInternals != "function")
|
|
733
733
|
return null;
|
|
734
734
|
try {
|
|
735
|
-
return I(this,
|
|
735
|
+
return I(this, He, this.attachInternals());
|
|
736
736
|
} catch {
|
|
737
737
|
return null;
|
|
738
738
|
}
|
|
@@ -789,7 +789,7 @@ const xe = class xe extends Ii {
|
|
|
789
789
|
* lives here once.
|
|
790
790
|
*/
|
|
791
791
|
async runHook(t, o, i) {
|
|
792
|
-
const r = h(this,
|
|
792
|
+
const r = h(this, pe)[t];
|
|
793
793
|
if (typeof r != "function")
|
|
794
794
|
return i.whenUnset;
|
|
795
795
|
try {
|
|
@@ -801,8 +801,8 @@ const xe = class xe extends Ii {
|
|
|
801
801
|
}
|
|
802
802
|
}
|
|
803
803
|
};
|
|
804
|
-
|
|
805
|
-
|
|
804
|
+
pe = new WeakMap(), ct = new WeakMap(), ke = new WeakMap(), dt = new WeakMap(), Ce = new WeakMap(), ht = new WeakMap(), Bt = new WeakMap(), Se = new WeakMap(), fe = new WeakMap(), Te = new WeakMap(), Ie = new WeakMap(), $e = new WeakMap(), Ve = new WeakMap(), De = new WeakMap(), Re = new WeakMap(), Be = new WeakMap(), He = new WeakMap(), Ht = new WeakMap(), ie = new WeakMap(), Fe = new WeakMap(), M = new WeakSet(), // ── internals ─────────────────────────────────────────────────────────────
|
|
805
|
+
co = function(t) {
|
|
806
806
|
var o;
|
|
807
807
|
for (const i of t) {
|
|
808
808
|
let r = i.default;
|
|
@@ -810,25 +810,25 @@ lo = function(t) {
|
|
|
810
810
|
try {
|
|
811
811
|
r = i.converter.fromAttribute(null, this, i.attribute ?? i.configKey);
|
|
812
812
|
} catch (n) {
|
|
813
|
-
|
|
813
|
+
b(this, M, Z).call(this, `converter for "${i.configKey}" threw computing its default; using \`default\``, n), r = i.default;
|
|
814
814
|
}
|
|
815
|
-
h(this,
|
|
815
|
+
h(this, pe)[i.configKey] = r, i.field && (this[i.field] = r);
|
|
816
816
|
}
|
|
817
|
-
},
|
|
817
|
+
}, ho = function(t) {
|
|
818
818
|
return { configKey: t.configKey, field: t.field, value: t.default, on: t.on ?? "update" };
|
|
819
819
|
}, /** Sanity-check the input + event tables once per class; warn (never throw) on mistakes. */
|
|
820
|
-
|
|
820
|
+
uo = function(t, o) {
|
|
821
821
|
var l;
|
|
822
822
|
const i = this.constructor;
|
|
823
|
-
if (
|
|
823
|
+
if (Ls.has(i))
|
|
824
824
|
return;
|
|
825
|
-
|
|
825
|
+
Ls.add(i);
|
|
826
826
|
const r = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
|
|
827
827
|
for (const c of t)
|
|
828
|
-
r.has(c.configKey) &&
|
|
828
|
+
r.has(c.configKey) && b(this, M, Z).call(this, `invalid input table: duplicate configKey "${c.configKey}"`), r.add(c.configKey), c.attribute && (n.has(c.attribute) && b(this, M, Z).call(this, `invalid input table: duplicate attribute "${c.attribute}"`), n.add(c.attribute)), c.reflect && !c.attribute && b(this, M, Z).call(this, `invalid input table: "${c.configKey}" has reflect:true but no attribute to reflect to`), c.reflect && !((l = c.converter) != null && l.toAttribute) && b(this, M, Z).call(this, `invalid input table: "${c.configKey}" has reflect:true but its converter has no toAttribute`);
|
|
829
829
|
const a = /* @__PURE__ */ new Set();
|
|
830
830
|
for (const c of o)
|
|
831
|
-
a.has(c.name) &&
|
|
831
|
+
a.has(c.name) && b(this, M, Z).call(this, `invalid event table: duplicate event "${c.name}"`), a.add(c.name), /^[a-z][a-z0-9-]*$/.test(c.name) || b(this, M, Z).call(this, `invalid event table: event "${c.name}" should be lowercase kebab-case (e.g. "date-select")`), c.property && r.has(c.property) && b(this, M, Z).call(this, `invalid event table: event "${c.name}" property "${c.property}" collides with an input configKey`);
|
|
832
832
|
}, /**
|
|
833
833
|
* Always-on console warning for input validation failures. Deliberately uses
|
|
834
834
|
* `console.warn` directly — NOT the (future) categorized logger — so rejected
|
|
@@ -836,22 +836,22 @@ ho = function(t, o) {
|
|
|
836
836
|
*/
|
|
837
837
|
Z = function(t, ...o) {
|
|
838
838
|
console.warn(`[BlissElement] <${this.localName ?? "unknown"}> ${t}`, ...o);
|
|
839
|
-
},
|
|
839
|
+
}, mo = function(t) {
|
|
840
840
|
for (const o of t) {
|
|
841
841
|
const i = o.configKey, r = Object.prototype.hasOwnProperty.call(this, i), n = r ? this[i] : void 0;
|
|
842
842
|
r && delete this[i], Object.defineProperty(this, i, {
|
|
843
843
|
configurable: !0,
|
|
844
844
|
enumerable: !0,
|
|
845
|
-
get: () => h(this,
|
|
846
|
-
set: (a) =>
|
|
847
|
-
}), r && ((h(this,
|
|
845
|
+
get: () => h(this, pe)[i],
|
|
846
|
+
set: (a) => b(this, M, es).call(this, o, a)
|
|
847
|
+
}), r && ((h(this, $e) ?? I(this, $e, /* @__PURE__ */ new Set())).add(i), this[i] = n);
|
|
848
848
|
}
|
|
849
849
|
}, /**
|
|
850
850
|
* Install a managed `on<Name>` handler property per event. Assigning it
|
|
851
851
|
* (de)registers a real listener for the event, so the property behaves like
|
|
852
852
|
* `addEventListener(name, …)` and its handler receives the `CustomEvent`.
|
|
853
853
|
*/
|
|
854
|
-
|
|
854
|
+
po = function(t) {
|
|
855
855
|
for (const o of t) {
|
|
856
856
|
const i = o.property;
|
|
857
857
|
if (!i)
|
|
@@ -860,14 +860,14 @@ mo = function(t) {
|
|
|
860
860
|
n && delete this[i], Object.defineProperty(this, i, {
|
|
861
861
|
configurable: !0,
|
|
862
862
|
enumerable: !0,
|
|
863
|
-
get: () => h(this,
|
|
863
|
+
get: () => h(this, Ce).get(r) ?? null,
|
|
864
864
|
set: (l) => {
|
|
865
|
-
const c = h(this,
|
|
865
|
+
const c = h(this, Ce).get(r);
|
|
866
866
|
if (c && this.removeEventListener(r, c), typeof l == "function") {
|
|
867
867
|
const d = l;
|
|
868
|
-
h(this,
|
|
868
|
+
h(this, Ce).set(r, d), this.addEventListener(r, d);
|
|
869
869
|
} else
|
|
870
|
-
h(this,
|
|
870
|
+
h(this, Ce).delete(r);
|
|
871
871
|
}
|
|
872
872
|
}), n && (this[i] = a);
|
|
873
873
|
}
|
|
@@ -875,45 +875,45 @@ mo = function(t) {
|
|
|
875
875
|
var r;
|
|
876
876
|
const i = Xo(t, o);
|
|
877
877
|
if (!i) {
|
|
878
|
-
|
|
878
|
+
b(this, M, Z).call(this, `rejected invalid value for property "${t.configKey}"; keeping previous value`, o);
|
|
879
879
|
return;
|
|
880
880
|
}
|
|
881
|
-
if (
|
|
881
|
+
if (b(this, M, ts).call(this, i), t.reflect && t.attribute && ((r = t.converter) != null && r.toAttribute)) {
|
|
882
882
|
const n = t.converter.toAttribute(i.value);
|
|
883
|
-
I(this,
|
|
883
|
+
I(this, Ve, !0);
|
|
884
884
|
try {
|
|
885
885
|
n === null ? this.removeAttribute(t.attribute) : this.setAttribute(t.attribute, n);
|
|
886
886
|
} finally {
|
|
887
|
-
I(this,
|
|
887
|
+
I(this, Ve, !1);
|
|
888
888
|
}
|
|
889
889
|
}
|
|
890
890
|
}, ts = function(t) {
|
|
891
|
-
h(this,
|
|
891
|
+
h(this, pe)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" && I(this, fe, !0), (h(this, Se) ?? I(this, Se, {}))[t.configKey] = t.value, h(this, ht).schedule(h(this, Bt)));
|
|
892
892
|
}, /** Cancel any queued microtask and flush pending changes synchronously now. */
|
|
893
893
|
tt = function() {
|
|
894
|
-
h(this, ht).cancel(),
|
|
894
|
+
h(this, ht).cancel(), b(this, M, ss).call(this);
|
|
895
895
|
}, ss = function() {
|
|
896
896
|
if (!this.isConnected)
|
|
897
897
|
return;
|
|
898
|
-
const t = h(this,
|
|
899
|
-
I(this,
|
|
898
|
+
const t = h(this, fe), o = h(this, Se);
|
|
899
|
+
I(this, fe, !1), I(this, Se, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o), b(this, M, fo).call(this);
|
|
900
900
|
}, /** Resolve everyone awaiting {@link whenSettled} for the flush that just ran. */
|
|
901
|
-
|
|
902
|
-
if (h(this,
|
|
901
|
+
fo = function() {
|
|
902
|
+
if (h(this, Te).length === 0)
|
|
903
903
|
return;
|
|
904
|
-
const t = h(this,
|
|
905
|
-
I(this,
|
|
904
|
+
const t = h(this, Te);
|
|
905
|
+
I(this, Te, []);
|
|
906
906
|
for (const o of t)
|
|
907
907
|
o();
|
|
908
908
|
}, /** The opt-in input table. Subclasses set this to enable attribute/property reactivity. */
|
|
909
|
-
m(
|
|
909
|
+
m(_e, "inputs"), /**
|
|
910
910
|
* The opt-in event table (SPEC §12.5). Each entry (a bare name, or an
|
|
911
911
|
* {@link EventDef} for overrides) declares an outward notification that
|
|
912
912
|
* {@link emit} can fire and installs a managed `on<Name>` handler property.
|
|
913
913
|
*/
|
|
914
|
-
m(
|
|
915
|
-
let Qt =
|
|
916
|
-
function
|
|
914
|
+
m(_e, "events");
|
|
915
|
+
let Qt = _e;
|
|
916
|
+
function Es(s, e, t) {
|
|
917
917
|
typeof customElements > "u" || customElements.get(s) || customElements.define(s, e, t);
|
|
918
918
|
}
|
|
919
919
|
function Li(s) {
|
|
@@ -932,12 +932,12 @@ function Ei(s, e, t) {
|
|
|
932
932
|
version: () => o.version,
|
|
933
933
|
config: o,
|
|
934
934
|
...i ? { logging: Li(i) } : {},
|
|
935
|
-
register: () =>
|
|
935
|
+
register: () => Es(s, e),
|
|
936
936
|
getInstances: () => yi(s)
|
|
937
937
|
};
|
|
938
|
-
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r &&
|
|
938
|
+
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && Es(s, e), n;
|
|
939
939
|
}
|
|
940
|
-
const
|
|
940
|
+
const As = /* @__PURE__ */ new Map(), zs = /* @__PURE__ */ new WeakMap();
|
|
941
941
|
let gt;
|
|
942
942
|
function Ai(s) {
|
|
943
943
|
if (typeof CSSStyleSheet > "u" || !("adoptedStyleSheets" in s))
|
|
@@ -953,8 +953,8 @@ function Ai(s) {
|
|
|
953
953
|
function zi(s, ...e) {
|
|
954
954
|
if (typeof document > "u")
|
|
955
955
|
return;
|
|
956
|
-
let t =
|
|
957
|
-
t ||
|
|
956
|
+
let t = zs.get(s);
|
|
957
|
+
t || zs.set(s, t = /* @__PURE__ */ new Set());
|
|
958
958
|
const o = e.filter((r) => r && !t.has(r));
|
|
959
959
|
if (o.length === 0)
|
|
960
960
|
return;
|
|
@@ -962,8 +962,8 @@ function zi(s, ...e) {
|
|
|
962
962
|
t.add(r);
|
|
963
963
|
if (Ai(s)) {
|
|
964
964
|
const r = o.map((n) => {
|
|
965
|
-
let a =
|
|
966
|
-
return a || (a = new CSSStyleSheet(), a.replaceSync(n),
|
|
965
|
+
let a = As.get(n);
|
|
966
|
+
return a || (a = new CSSStyleSheet(), a.replaceSync(n), As.set(n, a)), a;
|
|
967
967
|
});
|
|
968
968
|
s.adoptedStyleSheets = [...s.adoptedStyleSheets, ...r];
|
|
969
969
|
return;
|
|
@@ -995,18 +995,18 @@ function Ni(s, e = {}) {
|
|
|
995
995
|
}
|
|
996
996
|
};
|
|
997
997
|
}
|
|
998
|
-
function
|
|
998
|
+
function go(s) {
|
|
999
999
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1000
1000
|
}
|
|
1001
1001
|
function $i(s, e) {
|
|
1002
|
-
const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${
|
|
1002
|
+
const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${go(e)}[a-z0-9-]+)`, "gi");
|
|
1003
1003
|
let i;
|
|
1004
1004
|
for (; i = o.exec(s); )
|
|
1005
1005
|
i[1] && t.add(i[1]);
|
|
1006
1006
|
return t;
|
|
1007
1007
|
}
|
|
1008
1008
|
function Vi(s, e) {
|
|
1009
|
-
const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${
|
|
1009
|
+
const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${go(e)}[a-z0-9-]+)\\s*:`, "gi");
|
|
1010
1010
|
let i;
|
|
1011
1011
|
for (; i = o.exec(s); )
|
|
1012
1012
|
i[1] && t.add(i[1]);
|
|
@@ -1035,7 +1035,7 @@ function Hi(s, e, t = {}) {
|
|
|
1035
1035
|
const o = di(e);
|
|
1036
1036
|
return t[o] ?? Bi[o];
|
|
1037
1037
|
}
|
|
1038
|
-
function
|
|
1038
|
+
function he(s) {
|
|
1039
1039
|
return {
|
|
1040
1040
|
presentation: s,
|
|
1041
1041
|
isFullscreen: s === "fullscreen",
|
|
@@ -1068,27 +1068,27 @@ function Ki(s) {
|
|
|
1068
1068
|
e.removeEventListener("resize", i), e.removeEventListener("scroll", i), s.style.height = "", s.style.top = "";
|
|
1069
1069
|
};
|
|
1070
1070
|
}
|
|
1071
|
-
const
|
|
1071
|
+
const vs = "km-overlay-activated", Wi = Symbol("km-overlay-all-groups"), At = /* @__PURE__ */ new Set(), Ye = /* @__PURE__ */ new Map();
|
|
1072
1072
|
let zt = !1;
|
|
1073
|
-
function
|
|
1073
|
+
function ws() {
|
|
1074
1074
|
return typeof document < "u";
|
|
1075
1075
|
}
|
|
1076
1076
|
function ji(s, e) {
|
|
1077
1077
|
return e === Wi || s === e;
|
|
1078
1078
|
}
|
|
1079
|
-
function
|
|
1079
|
+
function bo(s) {
|
|
1080
1080
|
const e = s.detail, t = e == null ? void 0 : e.source, o = e == null ? void 0 : e.group;
|
|
1081
1081
|
for (const i of Array.from(At))
|
|
1082
1082
|
i.id !== t && ji(i.group, o) && i.dismiss();
|
|
1083
1083
|
}
|
|
1084
1084
|
function Gi() {
|
|
1085
|
-
zt || !
|
|
1085
|
+
zt || !ws() || (document.addEventListener(vs, bo), zt = !0);
|
|
1086
1086
|
}
|
|
1087
1087
|
function Ui() {
|
|
1088
|
-
zt && At.size === 0 &&
|
|
1088
|
+
zt && At.size === 0 && ws() && (document.removeEventListener(vs, bo), zt = !1);
|
|
1089
1089
|
}
|
|
1090
1090
|
function qi(s, e) {
|
|
1091
|
-
|
|
1091
|
+
ws() && document.dispatchEvent(new CustomEvent(vs, { detail: { source: s, group: e } }));
|
|
1092
1092
|
}
|
|
1093
1093
|
function Xi(s, e) {
|
|
1094
1094
|
const t = { id: {}, group: e, dismiss: s };
|
|
@@ -1111,10 +1111,10 @@ const G = {
|
|
|
1111
1111
|
WARN: 3,
|
|
1112
1112
|
ERROR: 4,
|
|
1113
1113
|
SILENT: 5
|
|
1114
|
-
},
|
|
1114
|
+
}, Ns = ["trace", "debug", "info", "warn", "error"], Nt = () => {
|
|
1115
1115
|
};
|
|
1116
1116
|
let Ji = "km-log";
|
|
1117
|
-
function
|
|
1117
|
+
function $s(s) {
|
|
1118
1118
|
const t = console[s];
|
|
1119
1119
|
return typeof t == "function" ? t.bind(console) : Nt;
|
|
1120
1120
|
}
|
|
@@ -1122,7 +1122,7 @@ function Yi(s) {
|
|
|
1122
1122
|
if (s === "debug" && (s = "log"), typeof console > "u")
|
|
1123
1123
|
return Nt;
|
|
1124
1124
|
const e = console;
|
|
1125
|
-
return e[s] !== void 0 ?
|
|
1125
|
+
return e[s] !== void 0 ? $s(s) : e.log !== void 0 ? $s("log") : Nt;
|
|
1126
1126
|
}
|
|
1127
1127
|
const Zi = (s) => Yi(s);
|
|
1128
1128
|
function Ze(s) {
|
|
@@ -1132,9 +1132,9 @@ function Ze(s) {
|
|
|
1132
1132
|
return e;
|
|
1133
1133
|
throw new TypeError(`setLevel() called with an invalid level: ${String(s)}`);
|
|
1134
1134
|
}
|
|
1135
|
-
let
|
|
1135
|
+
let me;
|
|
1136
1136
|
const $t = {};
|
|
1137
|
-
class
|
|
1137
|
+
class vo {
|
|
1138
1138
|
constructor(e, t) {
|
|
1139
1139
|
m(this, "name");
|
|
1140
1140
|
m(this, "levels", G);
|
|
@@ -1152,7 +1152,7 @@ class bo {
|
|
|
1152
1152
|
m(this, "defaultLevel", null);
|
|
1153
1153
|
/** Optional user-set level; overrides default. */
|
|
1154
1154
|
m(this, "userLevel", null);
|
|
1155
|
-
this.name = e, this.methodFactory = t, this.inheritedLevel = Ze(
|
|
1155
|
+
this.name = e, this.methodFactory = t, this.inheritedLevel = Ze(me ? me.getLevel() : "WARN");
|
|
1156
1156
|
const o = this.getPersistedLevel();
|
|
1157
1157
|
o != null && (this.userLevel = Ze(o)), this.replaceLoggingMethods();
|
|
1158
1158
|
}
|
|
@@ -1163,7 +1163,7 @@ class bo {
|
|
|
1163
1163
|
const t = this.storageKey();
|
|
1164
1164
|
if (typeof window > "u" || !t)
|
|
1165
1165
|
return;
|
|
1166
|
-
const o = (
|
|
1166
|
+
const o = (Ns[e] ?? "silent").toUpperCase();
|
|
1167
1167
|
try {
|
|
1168
1168
|
window.localStorage[t] = o;
|
|
1169
1169
|
} catch {
|
|
@@ -1191,7 +1191,7 @@ class bo {
|
|
|
1191
1191
|
}
|
|
1192
1192
|
replaceLoggingMethods() {
|
|
1193
1193
|
const e = this.getLevel();
|
|
1194
|
-
|
|
1194
|
+
Ns.forEach((t, o) => {
|
|
1195
1195
|
this[t] = o < e ? Nt : this.methodFactory(t, e, this.name);
|
|
1196
1196
|
}), this.log = this.debug;
|
|
1197
1197
|
}
|
|
@@ -1214,19 +1214,19 @@ class bo {
|
|
|
1214
1214
|
this.setLevel(G.SILENT, e);
|
|
1215
1215
|
}
|
|
1216
1216
|
rebuild() {
|
|
1217
|
-
if (
|
|
1217
|
+
if (me && me !== this && (this.inheritedLevel = Ze(me.getLevel())), this.replaceLoggingMethods(), me === this)
|
|
1218
1218
|
for (const e in $t)
|
|
1219
1219
|
$t[e].rebuild();
|
|
1220
1220
|
}
|
|
1221
1221
|
}
|
|
1222
|
-
|
|
1222
|
+
me = new vo(void 0, Zi);
|
|
1223
1223
|
function Qi(s) {
|
|
1224
1224
|
if (typeof s != "string" || s === "")
|
|
1225
1225
|
throw new TypeError("You must supply a non-empty name when creating a logger.");
|
|
1226
1226
|
let e = $t[s];
|
|
1227
|
-
return e || (e = $t[s] = new
|
|
1227
|
+
return e || (e = $t[s] = new vo(s, me.methodFactory)), e;
|
|
1228
1228
|
}
|
|
1229
|
-
const er = ["INIT", "DATA", "UI"], tr = "debug",
|
|
1229
|
+
const er = ["INIT", "DATA", "UI"], tr = "debug", Vs = [
|
|
1230
1230
|
"#4c8bf5",
|
|
1231
1231
|
// blue
|
|
1232
1232
|
"#2ea043",
|
|
@@ -1243,11 +1243,11 @@ const er = ["INIT", "DATA", "UI"], tr = "debug", $s = [
|
|
|
1243
1243
|
// teal
|
|
1244
1244
|
"#8a6d3b"
|
|
1245
1245
|
// brown
|
|
1246
|
-
],
|
|
1246
|
+
], Ds = /* @__PURE__ */ new WeakSet();
|
|
1247
1247
|
function sr(s, e, t) {
|
|
1248
|
-
if (
|
|
1248
|
+
if (Ds.has(s))
|
|
1249
1249
|
return;
|
|
1250
|
-
|
|
1250
|
+
Ds.add(s);
|
|
1251
1251
|
const o = s.methodFactory, i = `color:${t};font-weight:bold`;
|
|
1252
1252
|
s.methodFactory = (r, n, a) => {
|
|
1253
1253
|
const l = o(r, n, a);
|
|
@@ -1278,7 +1278,7 @@ function rr(s, e, t) {
|
|
|
1278
1278
|
function nr(s, e = er) {
|
|
1279
1279
|
const t = {}, o = {};
|
|
1280
1280
|
e.forEach((r, n) => {
|
|
1281
|
-
const a = `${s}:${r}`, l =
|
|
1281
|
+
const a = `${s}:${r}`, l = Vs[n % Vs.length], c = Qi(a);
|
|
1282
1282
|
sr(c, a, l), t[r] = c, o[r] = { label: a, color: l, logger: c };
|
|
1283
1283
|
});
|
|
1284
1284
|
const i = (r) => {
|
|
@@ -1309,7 +1309,7 @@ function nr(s, e = er) {
|
|
|
1309
1309
|
}
|
|
1310
1310
|
};
|
|
1311
1311
|
}
|
|
1312
|
-
const
|
|
1312
|
+
const ve = Math.min, ne = Math.max, Vt = Math.round, vt = Math.floor, ae = (s) => ({
|
|
1313
1313
|
x: s,
|
|
1314
1314
|
y: s
|
|
1315
1315
|
}), ar = {
|
|
@@ -1318,34 +1318,34 @@ const be = Math.min, ne = Math.max, Vt = Math.round, vt = Math.floor, ae = (s) =
|
|
|
1318
1318
|
bottom: "top",
|
|
1319
1319
|
top: "bottom"
|
|
1320
1320
|
};
|
|
1321
|
-
function
|
|
1322
|
-
return ne(s,
|
|
1321
|
+
function wo(s, e, t) {
|
|
1322
|
+
return ne(s, ve(e, t));
|
|
1323
1323
|
}
|
|
1324
|
-
function
|
|
1324
|
+
function Ge(s, e) {
|
|
1325
1325
|
return typeof s == "function" ? s(e) : s;
|
|
1326
1326
|
}
|
|
1327
1327
|
function Pe(s) {
|
|
1328
1328
|
return s.split("-")[0];
|
|
1329
1329
|
}
|
|
1330
|
-
function
|
|
1330
|
+
function Ue(s) {
|
|
1331
1331
|
return s.split("-")[1];
|
|
1332
1332
|
}
|
|
1333
|
-
function
|
|
1333
|
+
function yo(s) {
|
|
1334
1334
|
return s === "x" ? "y" : "x";
|
|
1335
1335
|
}
|
|
1336
|
-
function
|
|
1336
|
+
function ys(s) {
|
|
1337
1337
|
return s === "y" ? "height" : "width";
|
|
1338
1338
|
}
|
|
1339
1339
|
function re(s) {
|
|
1340
1340
|
const e = s[0];
|
|
1341
1341
|
return e === "t" || e === "b" ? "y" : "x";
|
|
1342
1342
|
}
|
|
1343
|
-
function
|
|
1344
|
-
return
|
|
1343
|
+
function xs(s) {
|
|
1344
|
+
return yo(re(s));
|
|
1345
1345
|
}
|
|
1346
1346
|
function lr(s, e, t) {
|
|
1347
1347
|
t === void 0 && (t = !1);
|
|
1348
|
-
const o =
|
|
1348
|
+
const o = Ue(s), i = xs(s), r = ys(i);
|
|
1349
1349
|
let n = i === "x" ? o === (t ? "end" : "start") ? "right" : "left" : o === "start" ? "bottom" : "top";
|
|
1350
1350
|
return e.reference[r] > e.floating[r] && (n = Dt(n)), [n, Dt(n)];
|
|
1351
1351
|
}
|
|
@@ -1356,12 +1356,12 @@ function cr(s) {
|
|
|
1356
1356
|
function os(s) {
|
|
1357
1357
|
return s.includes("start") ? s.replace("start", "end") : s.replace("end", "start");
|
|
1358
1358
|
}
|
|
1359
|
-
const
|
|
1359
|
+
const Rs = ["left", "right"], Bs = ["right", "left"], dr = ["top", "bottom"], hr = ["bottom", "top"];
|
|
1360
1360
|
function ur(s, e, t) {
|
|
1361
1361
|
switch (s) {
|
|
1362
1362
|
case "top":
|
|
1363
1363
|
case "bottom":
|
|
1364
|
-
return t ? e ?
|
|
1364
|
+
return t ? e ? Bs : Rs : e ? Rs : Bs;
|
|
1365
1365
|
case "left":
|
|
1366
1366
|
case "right":
|
|
1367
1367
|
return e ? dr : hr;
|
|
@@ -1370,7 +1370,7 @@ function ur(s, e, t) {
|
|
|
1370
1370
|
}
|
|
1371
1371
|
}
|
|
1372
1372
|
function mr(s, e, t, o) {
|
|
1373
|
-
const i =
|
|
1373
|
+
const i = Ue(s);
|
|
1374
1374
|
let r = ur(Pe(s), t === "start", o);
|
|
1375
1375
|
return i && (r = r.map((n) => n + "-" + i), e && (r = r.concat(r.map(os)))), r;
|
|
1376
1376
|
}
|
|
@@ -1387,7 +1387,7 @@ function pr(s) {
|
|
|
1387
1387
|
left: (i = s.left) != null ? i : 0
|
|
1388
1388
|
};
|
|
1389
1389
|
}
|
|
1390
|
-
function
|
|
1390
|
+
function xo(s) {
|
|
1391
1391
|
return typeof s != "number" ? pr(s) : {
|
|
1392
1392
|
top: s,
|
|
1393
1393
|
right: s,
|
|
@@ -1413,12 +1413,12 @@ function Rt(s) {
|
|
|
1413
1413
|
y: t
|
|
1414
1414
|
};
|
|
1415
1415
|
}
|
|
1416
|
-
function
|
|
1416
|
+
function Hs(s, e, t) {
|
|
1417
1417
|
let {
|
|
1418
1418
|
reference: o,
|
|
1419
1419
|
floating: i
|
|
1420
1420
|
} = s;
|
|
1421
|
-
const r = re(e), n =
|
|
1421
|
+
const r = re(e), n = xs(e), a = ys(n), l = Pe(e), c = r === "y", d = o.x + o.width / 2 - i.width / 2, u = o.y + o.height / 2 - i.height / 2, f = o[a] / 2 - i[a] / 2;
|
|
1422
1422
|
let p;
|
|
1423
1423
|
switch (l) {
|
|
1424
1424
|
case "top":
|
|
@@ -1451,7 +1451,7 @@ function Bs(s, e, t) {
|
|
|
1451
1451
|
y: o.y
|
|
1452
1452
|
};
|
|
1453
1453
|
}
|
|
1454
|
-
const g =
|
|
1454
|
+
const g = Ue(e);
|
|
1455
1455
|
return g && (p[n] += f * (g === "end" ? 1 : -1) * (t && c ? -1 : 1)), p;
|
|
1456
1456
|
}
|
|
1457
1457
|
async function fr(s, e) {
|
|
@@ -1470,30 +1470,30 @@ async function fr(s, e) {
|
|
|
1470
1470
|
elementContext: u = "floating",
|
|
1471
1471
|
altBoundary: f = !1,
|
|
1472
1472
|
padding: p = 0
|
|
1473
|
-
} =
|
|
1474
|
-
element: (t = await (r.isElement == null ? void 0 : r.isElement(
|
|
1473
|
+
} = Ge(e, s), g = xo(p), _ = a[f ? u === "floating" ? "reference" : "floating" : u], v = Rt(await r.getClippingRect({
|
|
1474
|
+
element: (t = await (r.isElement == null ? void 0 : r.isElement(_))) == null || t ? _ : _.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(a.floating)),
|
|
1475
1475
|
boundary: c,
|
|
1476
1476
|
rootBoundary: d,
|
|
1477
1477
|
strategy: l
|
|
1478
|
-
})),
|
|
1478
|
+
})), y = u === "floating" ? {
|
|
1479
1479
|
x: o,
|
|
1480
1480
|
y: i,
|
|
1481
1481
|
width: n.floating.width,
|
|
1482
1482
|
height: n.floating.height
|
|
1483
|
-
} : n.reference, k = await (r.getOffsetParent == null ? void 0 : r.getOffsetParent(a.floating)),
|
|
1483
|
+
} : n.reference, k = await (r.getOffsetParent == null ? void 0 : r.getOffsetParent(a.floating)), O = await (r.isElement == null ? void 0 : r.isElement(k)) && await (r.getScale == null ? void 0 : r.getScale(k)) || {
|
|
1484
1484
|
x: 1,
|
|
1485
1485
|
y: 1
|
|
1486
|
-
},
|
|
1486
|
+
}, $ = Rt(r.convertOffsetParentRelativeRectToViewportRelativeRect ? await r.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
1487
1487
|
elements: a,
|
|
1488
|
-
rect:
|
|
1488
|
+
rect: y,
|
|
1489
1489
|
offsetParent: k,
|
|
1490
1490
|
strategy: l
|
|
1491
|
-
}) :
|
|
1491
|
+
}) : y);
|
|
1492
1492
|
return {
|
|
1493
|
-
top: (
|
|
1494
|
-
bottom: (
|
|
1495
|
-
left: (
|
|
1496
|
-
right: (
|
|
1493
|
+
top: (v.top - $.top + g.top) / O.y,
|
|
1494
|
+
bottom: ($.bottom - v.bottom + g.bottom) / O.y,
|
|
1495
|
+
left: (v.left - $.left + g.left) / O.x,
|
|
1496
|
+
right: ($.right - v.right + g.right) / O.x
|
|
1497
1497
|
};
|
|
1498
1498
|
}
|
|
1499
1499
|
const gr = 50, br = async (s, e, t) => {
|
|
@@ -1513,21 +1513,21 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1513
1513
|
}), {
|
|
1514
1514
|
x: d,
|
|
1515
1515
|
y: u
|
|
1516
|
-
} =
|
|
1516
|
+
} = Hs(c, o, l), f = o, p = 0;
|
|
1517
1517
|
const g = {};
|
|
1518
1518
|
for (let w = 0; w < r.length; w++) {
|
|
1519
|
-
const
|
|
1520
|
-
if (!
|
|
1519
|
+
const _ = r[w];
|
|
1520
|
+
if (!_)
|
|
1521
1521
|
continue;
|
|
1522
1522
|
const {
|
|
1523
|
-
name:
|
|
1524
|
-
fn:
|
|
1525
|
-
} =
|
|
1523
|
+
name: v,
|
|
1524
|
+
fn: y
|
|
1525
|
+
} = _, {
|
|
1526
1526
|
x: k,
|
|
1527
|
-
y:
|
|
1528
|
-
data:
|
|
1527
|
+
y: O,
|
|
1528
|
+
data: $,
|
|
1529
1529
|
reset: D
|
|
1530
|
-
} = await
|
|
1530
|
+
} = await y({
|
|
1531
1531
|
x: d,
|
|
1532
1532
|
y: u,
|
|
1533
1533
|
initialPlacement: o,
|
|
@@ -1541,9 +1541,9 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1541
1541
|
floating: e
|
|
1542
1542
|
}
|
|
1543
1543
|
});
|
|
1544
|
-
d = k ?? d, u =
|
|
1545
|
-
...g[
|
|
1546
|
-
|
|
1544
|
+
d = k ?? d, u = O ?? u, g[v] = {
|
|
1545
|
+
...g[v],
|
|
1546
|
+
...$
|
|
1547
1547
|
}, D && p < gr && (p++, typeof D == "object" && (D.placement && (f = D.placement), D.rects && (c = D.rects === !0 ? await n.getElementRects({
|
|
1548
1548
|
reference: s,
|
|
1549
1549
|
floating: e,
|
|
@@ -1551,7 +1551,7 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1551
1551
|
}) : D.rects), {
|
|
1552
1552
|
x: d,
|
|
1553
1553
|
y: u
|
|
1554
|
-
} =
|
|
1554
|
+
} = Hs(c, f, l)), w = -1);
|
|
1555
1555
|
}
|
|
1556
1556
|
return {
|
|
1557
1557
|
x: d,
|
|
@@ -1575,16 +1575,16 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1575
1575
|
} = e, {
|
|
1576
1576
|
element: c,
|
|
1577
1577
|
padding: d = 0
|
|
1578
|
-
} =
|
|
1578
|
+
} = Ge(s, e) || {};
|
|
1579
1579
|
if (c == null)
|
|
1580
1580
|
return {};
|
|
1581
|
-
const u =
|
|
1581
|
+
const u = xo(d), f = {
|
|
1582
1582
|
x: t,
|
|
1583
1583
|
y: o
|
|
1584
|
-
}, p =
|
|
1584
|
+
}, p = xs(i), g = ys(p), w = await n.getDimensions(c), _ = p === "y", v = _ ? "top" : "left", y = _ ? "bottom" : "right", k = _ ? "clientHeight" : "clientWidth", O = r.reference[g] + r.reference[p] - f[p] - r.floating[g], $ = f[p] - r.reference[p], D = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(c));
|
|
1585
1585
|
let j = D ? D[k] : 0;
|
|
1586
1586
|
(!j || !await (n.isElement == null ? void 0 : n.isElement(D))) && (j = a.floating[k] || r.floating[g]);
|
|
1587
|
-
const q =
|
|
1587
|
+
const q = O / 2 - $ / 2, V = j / 2 - w[g] / 2 - 1, S = ve(u[v], V), P = ve(u[y], V), z = j - w[g] - P, B = j / 2 - w[g] / 2 + q, T = wo(S, B, z), F = !l.arrow && Ue(i) != null && B !== T && r.reference[g] / 2 - (B < S ? S : P) - w[g] / 2 < 0, se = F ? B < S ? B - S : B - z : 0;
|
|
1588
1588
|
return {
|
|
1589
1589
|
[p]: f[p] + se,
|
|
1590
1590
|
data: {
|
|
@@ -1617,27 +1617,27 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1617
1617
|
fallbackStrategy: p = "bestFit",
|
|
1618
1618
|
fallbackAxisSideDirection: g = "none",
|
|
1619
1619
|
flipAlignment: w = !0,
|
|
1620
|
-
...
|
|
1621
|
-
} =
|
|
1620
|
+
..._
|
|
1621
|
+
} = Ge(s, e);
|
|
1622
1622
|
if ((t = r.arrow) != null && t.alignmentOffset)
|
|
1623
1623
|
return {};
|
|
1624
|
-
const
|
|
1625
|
-
!f && D &&
|
|
1626
|
-
const j = [a,
|
|
1624
|
+
const v = Pe(i), y = re(a), k = Pe(a) === a, O = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), $ = f || (k || !w ? [Dt(a)] : cr(a)), D = g !== "none";
|
|
1625
|
+
!f && D && $.push(...mr(a, w, g, O));
|
|
1626
|
+
const j = [a, ...$], q = await l.detectOverflow(e, _), V = [];
|
|
1627
1627
|
let S = ((o = r.flip) == null ? void 0 : o.overflows) || [];
|
|
1628
|
-
if (d && V.push(q[
|
|
1629
|
-
const T = lr(i, n,
|
|
1628
|
+
if (d && V.push(q[v]), u) {
|
|
1629
|
+
const T = lr(i, n, O);
|
|
1630
1630
|
V.push(q[T[0]], q[T[1]]);
|
|
1631
1631
|
}
|
|
1632
1632
|
if (S = [...S, {
|
|
1633
1633
|
placement: i,
|
|
1634
1634
|
overflows: V
|
|
1635
1635
|
}], !V.every((T) => T <= 0)) {
|
|
1636
|
-
var
|
|
1637
|
-
const T = (((
|
|
1638
|
-
if (F && (!(u === "alignment" ?
|
|
1636
|
+
var P, z;
|
|
1637
|
+
const T = (((P = r.flip) == null ? void 0 : P.index) || 0) + 1, F = j[T];
|
|
1638
|
+
if (F && (!(u === "alignment" ? y !== re(F) : !1) || // We leave the current main axis only if every placement on that axis
|
|
1639
1639
|
// overflows the main axis.
|
|
1640
|
-
S.every((J) => re(J.placement) ===
|
|
1640
|
+
S.every((J) => re(J.placement) === y ? J.overflows[0] > 0 : !0)))
|
|
1641
1641
|
return {
|
|
1642
1642
|
data: {
|
|
1643
1643
|
index: T,
|
|
@@ -1647,21 +1647,21 @@ const gr = 50, br = async (s, e, t) => {
|
|
|
1647
1647
|
placement: F
|
|
1648
1648
|
}
|
|
1649
1649
|
};
|
|
1650
|
-
let se = (
|
|
1650
|
+
let se = (z = S.filter((ye) => ye.overflows[0] <= 0).sort((ye, J) => ye.overflows[1] - J.overflows[1])[0]) == null ? void 0 : z.placement;
|
|
1651
1651
|
if (!se)
|
|
1652
1652
|
switch (p) {
|
|
1653
1653
|
case "bestFit": {
|
|
1654
1654
|
var B;
|
|
1655
|
-
const
|
|
1655
|
+
const ye = (B = S.filter((J) => {
|
|
1656
1656
|
if (D) {
|
|
1657
1657
|
const de = re(J.placement);
|
|
1658
|
-
return de ===
|
|
1658
|
+
return de === y || // Create a bias to the `y` side axis due to horizontal
|
|
1659
1659
|
// reading directions favoring greater width.
|
|
1660
1660
|
de === "y";
|
|
1661
1661
|
}
|
|
1662
1662
|
return !0;
|
|
1663
1663
|
}).map((J) => [J.placement, J.overflows.filter((de) => de > 0).reduce((de, Bo) => de + Bo, 0)]).sort((J, de) => J[1] - de[1])[0]) == null ? void 0 : B[0];
|
|
1664
|
-
|
|
1664
|
+
ye && (se = ye);
|
|
1665
1665
|
break;
|
|
1666
1666
|
}
|
|
1667
1667
|
case "initialPlacement":
|
|
@@ -1684,7 +1684,7 @@ async function xr(s, e) {
|
|
|
1684
1684
|
placement: t,
|
|
1685
1685
|
platform: o,
|
|
1686
1686
|
elements: i
|
|
1687
|
-
} = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Pe(t), a =
|
|
1687
|
+
} = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Pe(t), a = Ue(t), l = re(t) === "y", c = yr.has(n) ? -1 : 1, d = r && l ? -1 : 1, u = Ge(e, s);
|
|
1688
1688
|
let {
|
|
1689
1689
|
mainAxis: f,
|
|
1690
1690
|
crossAxis: p,
|
|
@@ -1742,35 +1742,35 @@ const _r = function(s) {
|
|
|
1742
1742
|
mainAxis: n = !0,
|
|
1743
1743
|
crossAxis: a = !1,
|
|
1744
1744
|
limiter: l = {
|
|
1745
|
-
fn: (
|
|
1745
|
+
fn: (y) => {
|
|
1746
1746
|
let {
|
|
1747
1747
|
x: k,
|
|
1748
|
-
y:
|
|
1749
|
-
} =
|
|
1748
|
+
y: O
|
|
1749
|
+
} = y;
|
|
1750
1750
|
return {
|
|
1751
1751
|
x: k,
|
|
1752
|
-
y:
|
|
1752
|
+
y: O
|
|
1753
1753
|
};
|
|
1754
1754
|
}
|
|
1755
1755
|
},
|
|
1756
1756
|
...c
|
|
1757
|
-
} =
|
|
1757
|
+
} = Ge(s, e), d = {
|
|
1758
1758
|
x: t,
|
|
1759
1759
|
y: o
|
|
1760
|
-
}, u = await r.detectOverflow(e, c), f = re(i), p =
|
|
1760
|
+
}, u = await r.detectOverflow(e, c), f = re(i), p = yo(f);
|
|
1761
1761
|
let g = d[p], w = d[f];
|
|
1762
|
-
const
|
|
1763
|
-
n && (g =
|
|
1764
|
-
const
|
|
1762
|
+
const _ = (y, k) => wo(k + u[y === "y" ? "top" : "left"], k, k - u[y === "y" ? "bottom" : "right"]);
|
|
1763
|
+
n && (g = _(p, g)), a && (w = _(f, w));
|
|
1764
|
+
const v = l.fn({
|
|
1765
1765
|
...e,
|
|
1766
1766
|
[p]: g,
|
|
1767
1767
|
[f]: w
|
|
1768
1768
|
});
|
|
1769
1769
|
return {
|
|
1770
|
-
...
|
|
1770
|
+
...v,
|
|
1771
1771
|
data: {
|
|
1772
|
-
x:
|
|
1773
|
-
y:
|
|
1772
|
+
x: v.x - t,
|
|
1773
|
+
y: v.y - o,
|
|
1774
1774
|
enabled: {
|
|
1775
1775
|
[p]: n,
|
|
1776
1776
|
[f]: a
|
|
@@ -1793,15 +1793,15 @@ const _r = function(s) {
|
|
|
1793
1793
|
apply: n = () => {
|
|
1794
1794
|
},
|
|
1795
1795
|
...a
|
|
1796
|
-
} =
|
|
1796
|
+
} = Ge(s, e), l = await i.detectOverflow(e, a), c = Pe(t), d = Ue(t), u = re(t) === "y", {
|
|
1797
1797
|
width: f,
|
|
1798
1798
|
height: p
|
|
1799
1799
|
} = o.floating;
|
|
1800
1800
|
let g, w;
|
|
1801
1801
|
c === "top" || c === "bottom" ? (g = c, w = d === (await (i.isRTL == null ? void 0 : i.isRTL(r.floating)) ? "start" : "end") ? "left" : "right") : (w = c, g = d === "end" ? "top" : "bottom");
|
|
1802
|
-
const
|
|
1803
|
-
let D =
|
|
1804
|
-
|
|
1802
|
+
const _ = p - l.top - l.bottom, v = f - l.left - l.right, y = ve(p - l[g], _), k = ve(f - l[w], v), O = e.middlewareData.shift, $ = !O;
|
|
1803
|
+
let D = y, j = k;
|
|
1804
|
+
O != null && O.enabled.x && (j = v), O != null && O.enabled.y && (D = _), $ && !d && (u ? j = f - 2 * ne(l.left, l.right) : D = p - 2 * ne(l.top, l.bottom)), await n({
|
|
1805
1805
|
...e,
|
|
1806
1806
|
availableWidth: j,
|
|
1807
1807
|
availableHeight: D
|
|
@@ -1818,8 +1818,8 @@ const _r = function(s) {
|
|
|
1818
1818
|
function Ft() {
|
|
1819
1819
|
return typeof window < "u";
|
|
1820
1820
|
}
|
|
1821
|
-
function
|
|
1822
|
-
return
|
|
1821
|
+
function qe(s) {
|
|
1822
|
+
return _o(s) ? (s.nodeName || "").toLowerCase() : "#document";
|
|
1823
1823
|
}
|
|
1824
1824
|
function U(s) {
|
|
1825
1825
|
var e;
|
|
@@ -1827,18 +1827,18 @@ function U(s) {
|
|
|
1827
1827
|
}
|
|
1828
1828
|
function le(s) {
|
|
1829
1829
|
var e;
|
|
1830
|
-
return (e = (
|
|
1830
|
+
return (e = (_o(s) ? s.ownerDocument : s.document) || window.document) == null ? void 0 : e.documentElement;
|
|
1831
1831
|
}
|
|
1832
|
-
function
|
|
1832
|
+
function _o(s) {
|
|
1833
1833
|
return Ft() ? s instanceof Node || s instanceof U(s).Node : !1;
|
|
1834
1834
|
}
|
|
1835
1835
|
function ee(s) {
|
|
1836
1836
|
return Ft() ? s instanceof Element || s instanceof U(s).Element : !1;
|
|
1837
1837
|
}
|
|
1838
|
-
function
|
|
1838
|
+
function we(s) {
|
|
1839
1839
|
return Ft() ? s instanceof HTMLElement || s instanceof U(s).HTMLElement : !1;
|
|
1840
1840
|
}
|
|
1841
|
-
function
|
|
1841
|
+
function Fs(s) {
|
|
1842
1842
|
return !Ft() || typeof ShadowRoot > "u" ? !1 : s instanceof ShadowRoot || s instanceof U(s).ShadowRoot;
|
|
1843
1843
|
}
|
|
1844
1844
|
function Kt(s) {
|
|
@@ -1851,7 +1851,7 @@ function Kt(s) {
|
|
|
1851
1851
|
return /auto|scroll|overlay|hidden|clip/.test(e + o + t) && i !== "inline" && i !== "contents";
|
|
1852
1852
|
}
|
|
1853
1853
|
function Sr(s) {
|
|
1854
|
-
return /^(table|td|th)$/.test(
|
|
1854
|
+
return /^(table|td|th)$/.test(qe(s));
|
|
1855
1855
|
}
|
|
1856
1856
|
function Wt(s) {
|
|
1857
1857
|
try {
|
|
@@ -1865,28 +1865,28 @@ function Wt(s) {
|
|
|
1865
1865
|
return !1;
|
|
1866
1866
|
}
|
|
1867
1867
|
}
|
|
1868
|
-
const Tr = /transform|translate|scale|rotate|perspective|filter/, Ir = /paint|layout|strict|content/,
|
|
1868
|
+
const Tr = /transform|translate|scale|rotate|perspective|filter/, Ir = /paint|layout|strict|content/, xe = (s) => !!s && s !== "none";
|
|
1869
1869
|
let Xt;
|
|
1870
|
-
function
|
|
1870
|
+
function _s(s) {
|
|
1871
1871
|
const e = ee(s) ? te(s) : s;
|
|
1872
|
-
return
|
|
1872
|
+
return xe(e.transform) || xe(e.translate) || xe(e.scale) || xe(e.rotate) || xe(e.perspective) || !ks() && (xe(e.backdropFilter) || xe(e.filter)) || Tr.test(e.willChange || "") || Ir.test(e.contain || "");
|
|
1873
1873
|
}
|
|
1874
1874
|
function Or(s) {
|
|
1875
|
-
let e =
|
|
1876
|
-
for (;
|
|
1877
|
-
if (
|
|
1875
|
+
let e = Le(s);
|
|
1876
|
+
for (; we(e) && !at(e); ) {
|
|
1877
|
+
if (_s(e))
|
|
1878
1878
|
return e;
|
|
1879
1879
|
if (Wt(e))
|
|
1880
1880
|
return null;
|
|
1881
|
-
e =
|
|
1881
|
+
e = Le(e);
|
|
1882
1882
|
}
|
|
1883
1883
|
return null;
|
|
1884
1884
|
}
|
|
1885
|
-
function
|
|
1885
|
+
function ks() {
|
|
1886
1886
|
return Xt == null && (Xt = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), Xt;
|
|
1887
1887
|
}
|
|
1888
1888
|
function at(s) {
|
|
1889
|
-
return /^(html|body|#document)$/.test(
|
|
1889
|
+
return /^(html|body|#document)$/.test(qe(s));
|
|
1890
1890
|
}
|
|
1891
1891
|
function te(s) {
|
|
1892
1892
|
return U(s).getComputedStyle(s);
|
|
@@ -1900,26 +1900,26 @@ function jt(s) {
|
|
|
1900
1900
|
scrollTop: s.scrollY
|
|
1901
1901
|
};
|
|
1902
1902
|
}
|
|
1903
|
-
function
|
|
1904
|
-
if (
|
|
1903
|
+
function Le(s) {
|
|
1904
|
+
if (qe(s) === "html")
|
|
1905
1905
|
return s;
|
|
1906
1906
|
const e = (
|
|
1907
1907
|
// Step into the shadow DOM of the parent of a slotted node.
|
|
1908
1908
|
s.assignedSlot || // DOM Element detected.
|
|
1909
1909
|
s.parentNode || // ShadowRoot detected.
|
|
1910
|
-
|
|
1910
|
+
Fs(s) && s.host || // Fallback.
|
|
1911
1911
|
le(s)
|
|
1912
1912
|
);
|
|
1913
|
-
return
|
|
1913
|
+
return Fs(e) ? e.host : e;
|
|
1914
1914
|
}
|
|
1915
|
-
function
|
|
1916
|
-
const e =
|
|
1917
|
-
return at(e) ? (s.ownerDocument || s).body :
|
|
1915
|
+
function ko(s) {
|
|
1916
|
+
const e = Le(s);
|
|
1917
|
+
return at(e) ? (s.ownerDocument || s).body : we(e) && Kt(e) ? e : ko(e);
|
|
1918
1918
|
}
|
|
1919
1919
|
function lt(s, e, t) {
|
|
1920
1920
|
var o;
|
|
1921
1921
|
e === void 0 && (e = []), t === void 0 && (t = !0);
|
|
1922
|
-
const i =
|
|
1922
|
+
const i = ko(s), r = i === ((o = s.ownerDocument) == null ? void 0 : o.body), n = U(i);
|
|
1923
1923
|
if (r) {
|
|
1924
1924
|
const a = is(n);
|
|
1925
1925
|
return e.concat(n, n.visualViewport || [], Kt(i) ? i : [], a && t ? lt(a) : []);
|
|
@@ -1929,58 +1929,58 @@ function lt(s, e, t) {
|
|
|
1929
1929
|
function is(s) {
|
|
1930
1930
|
return s.parent && Object.getPrototypeOf(s.parent) ? s.frameElement : null;
|
|
1931
1931
|
}
|
|
1932
|
-
function
|
|
1932
|
+
function Co(s) {
|
|
1933
1933
|
const e = te(s);
|
|
1934
1934
|
let t = parseFloat(e.width) || 0, o = parseFloat(e.height) || 0;
|
|
1935
|
-
const i =
|
|
1935
|
+
const i = we(s), r = i ? s.offsetWidth : t, n = i ? s.offsetHeight : o, a = Vt(t) !== r || Vt(o) !== n;
|
|
1936
1936
|
return a && (t = r, o = n), {
|
|
1937
1937
|
width: t,
|
|
1938
1938
|
height: o,
|
|
1939
1939
|
$: a
|
|
1940
1940
|
};
|
|
1941
1941
|
}
|
|
1942
|
-
function
|
|
1942
|
+
function Cs(s) {
|
|
1943
1943
|
return ee(s) ? s : s.contextElement;
|
|
1944
1944
|
}
|
|
1945
|
-
function
|
|
1946
|
-
const e =
|
|
1947
|
-
if (!
|
|
1945
|
+
function Ne(s) {
|
|
1946
|
+
const e = Cs(s);
|
|
1947
|
+
if (!we(e))
|
|
1948
1948
|
return ae(1);
|
|
1949
1949
|
const t = e.getBoundingClientRect(), {
|
|
1950
1950
|
width: o,
|
|
1951
1951
|
height: i,
|
|
1952
1952
|
$: r
|
|
1953
|
-
} =
|
|
1953
|
+
} = Co(e);
|
|
1954
1954
|
let n = (r ? Vt(t.width) : t.width) / o, a = (r ? Vt(t.height) : t.height) / i;
|
|
1955
1955
|
return (!n || !Number.isFinite(n)) && (n = 1), (!a || !Number.isFinite(a)) && (a = 1), {
|
|
1956
1956
|
x: n,
|
|
1957
1957
|
y: a
|
|
1958
1958
|
};
|
|
1959
1959
|
}
|
|
1960
|
-
const
|
|
1961
|
-
function
|
|
1960
|
+
const Mr = /* @__PURE__ */ ae(0);
|
|
1961
|
+
function So(s) {
|
|
1962
1962
|
const e = U(s);
|
|
1963
|
-
return !
|
|
1963
|
+
return !ks() || !e.visualViewport ? Mr : {
|
|
1964
1964
|
x: e.visualViewport.offsetLeft,
|
|
1965
1965
|
y: e.visualViewport.offsetTop
|
|
1966
1966
|
};
|
|
1967
1967
|
}
|
|
1968
|
-
function
|
|
1968
|
+
function Pr(s, e, t) {
|
|
1969
1969
|
return e === void 0 && (e = !1), !!t && e && t === U(s);
|
|
1970
1970
|
}
|
|
1971
|
-
function
|
|
1971
|
+
function Ee(s, e, t, o) {
|
|
1972
1972
|
e === void 0 && (e = !1), t === void 0 && (t = !1);
|
|
1973
|
-
const i = s.getBoundingClientRect(), r =
|
|
1973
|
+
const i = s.getBoundingClientRect(), r = Cs(s);
|
|
1974
1974
|
let n = ae(1);
|
|
1975
|
-
e && (o ? ee(o) && (n =
|
|
1976
|
-
const a =
|
|
1975
|
+
e && (o ? ee(o) && (n = Ne(o)) : n = Ne(s));
|
|
1976
|
+
const a = Pr(r, t, o) ? So(r) : ae(0);
|
|
1977
1977
|
let l = (i.left + a.x) / n.x, c = (i.top + a.y) / n.y, d = i.width / n.x, u = i.height / n.y;
|
|
1978
1978
|
if (r && o) {
|
|
1979
1979
|
const f = U(r), p = ee(o) ? U(o) : o;
|
|
1980
1980
|
let g = f, w = is(g);
|
|
1981
1981
|
for (; w && p !== g; ) {
|
|
1982
|
-
const
|
|
1983
|
-
l *=
|
|
1982
|
+
const _ = Ne(w), v = w.getBoundingClientRect(), y = te(w), k = v.left + (w.clientLeft + parseFloat(y.paddingLeft)) * _.x, O = v.top + (w.clientTop + parseFloat(y.paddingTop)) * _.y;
|
|
1983
|
+
l *= _.x, c *= _.y, d *= _.x, u *= _.y, l += k, c += O, g = U(w), w = is(g);
|
|
1984
1984
|
}
|
|
1985
1985
|
}
|
|
1986
1986
|
return Rt({
|
|
@@ -1992,9 +1992,9 @@ function Le(s, e, t, o) {
|
|
|
1992
1992
|
}
|
|
1993
1993
|
function Gt(s, e) {
|
|
1994
1994
|
const t = jt(s).scrollLeft;
|
|
1995
|
-
return e ? e.left + t :
|
|
1995
|
+
return e ? e.left + t : Ee(le(s)).left + t;
|
|
1996
1996
|
}
|
|
1997
|
-
function
|
|
1997
|
+
function To(s, e) {
|
|
1998
1998
|
const t = s.getBoundingClientRect(), o = t.left + e.scrollLeft - Gt(s, t), i = t.top + e.scrollTop;
|
|
1999
1999
|
return {
|
|
2000
2000
|
x: o,
|
|
@@ -2015,12 +2015,12 @@ function Lr(s) {
|
|
|
2015
2015
|
scrollLeft: 0,
|
|
2016
2016
|
scrollTop: 0
|
|
2017
2017
|
}, c = ae(1);
|
|
2018
|
-
const d = ae(0), u =
|
|
2019
|
-
if ((u || !r) && ((
|
|
2020
|
-
const p =
|
|
2021
|
-
c =
|
|
2018
|
+
const d = ae(0), u = we(o);
|
|
2019
|
+
if ((u || !r) && ((qe(o) !== "body" || Kt(n)) && (l = jt(o)), u)) {
|
|
2020
|
+
const p = Ee(o);
|
|
2021
|
+
c = Ne(o), d.x = p.x + o.clientLeft, d.y = p.y + o.clientTop;
|
|
2022
2022
|
}
|
|
2023
|
-
const f = n && !u && !r ?
|
|
2023
|
+
const f = n && !u && !r ? To(n, l) : ae(0);
|
|
2024
2024
|
return {
|
|
2025
2025
|
width: t.width * c.x,
|
|
2026
2026
|
height: t.height * c.y,
|
|
@@ -2048,12 +2048,12 @@ function Nr(s, e, t) {
|
|
|
2048
2048
|
const o = t === "layoutViewport", i = U(s), r = le(s), n = i.visualViewport;
|
|
2049
2049
|
let a = r.clientWidth, l = r.clientHeight, c = 0, d = 0;
|
|
2050
2050
|
if (n) {
|
|
2051
|
-
const f = !
|
|
2051
|
+
const f = !ks() || e === "fixed";
|
|
2052
2052
|
o ? f || (c = -n.offsetLeft, d = -n.offsetTop) : (a = n.width, l = n.height, f && (c = n.offsetLeft, d = n.offsetTop));
|
|
2053
2053
|
}
|
|
2054
2054
|
if (Gt(r) <= 0) {
|
|
2055
|
-
const f = r.ownerDocument, p = f.body, g = getComputedStyle(p), w = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0,
|
|
2056
|
-
|
|
2055
|
+
const f = r.ownerDocument, p = f.body, g = getComputedStyle(p), w = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0, _ = Math.abs(r.clientWidth - p.clientWidth - w), v = getComputedStyle(r).scrollbarGutter === "stable both-edges" ? _ / 2 : _;
|
|
2056
|
+
v <= zr && (a -= v);
|
|
2057
2057
|
}
|
|
2058
2058
|
return {
|
|
2059
2059
|
width: a,
|
|
@@ -2063,7 +2063,7 @@ function Nr(s, e, t) {
|
|
|
2063
2063
|
};
|
|
2064
2064
|
}
|
|
2065
2065
|
function $r(s, e) {
|
|
2066
|
-
const t =
|
|
2066
|
+
const t = Ee(s, !0, e === "fixed"), o = t.top + s.clientTop, i = t.left + s.clientLeft, r = Ne(s), n = s.clientWidth * r.x, a = s.clientHeight * r.y, l = i * r.x, c = o * r.y;
|
|
2067
2067
|
return {
|
|
2068
2068
|
width: n,
|
|
2069
2069
|
height: a,
|
|
@@ -2071,7 +2071,7 @@ function $r(s, e) {
|
|
|
2071
2071
|
y: c
|
|
2072
2072
|
};
|
|
2073
2073
|
}
|
|
2074
|
-
function
|
|
2074
|
+
function Ks(s, e, t) {
|
|
2075
2075
|
let o;
|
|
2076
2076
|
if (e === "viewport" || e === "layoutViewport")
|
|
2077
2077
|
o = Nr(s, t, e);
|
|
@@ -2080,7 +2080,7 @@ function Fs(s, e, t) {
|
|
|
2080
2080
|
else if (ee(e))
|
|
2081
2081
|
o = $r(e, t);
|
|
2082
2082
|
else {
|
|
2083
|
-
const i =
|
|
2083
|
+
const i = So(s);
|
|
2084
2084
|
o = {
|
|
2085
2085
|
x: e.x - i.x,
|
|
2086
2086
|
y: e.y - i.y,
|
|
@@ -2094,12 +2094,12 @@ function Vr(s, e) {
|
|
|
2094
2094
|
const t = e.get(s);
|
|
2095
2095
|
if (t)
|
|
2096
2096
|
return t;
|
|
2097
|
-
let o = lt(s, [], !1).filter((a) => ee(a) &&
|
|
2097
|
+
let o = lt(s, [], !1).filter((a) => ee(a) && qe(a) !== "body"), i = null;
|
|
2098
2098
|
const r = te(s).position === "fixed";
|
|
2099
|
-
let n = r ?
|
|
2099
|
+
let n = r ? Le(s) : s;
|
|
2100
2100
|
for (; ee(n) && !at(n); ) {
|
|
2101
|
-
const a = te(n), l =
|
|
2102
|
-
!l && (c === "fixed" || c === "absolute" && a.position === "static") ? o = o.filter((u) => u !== n) : i = a, n =
|
|
2101
|
+
const a = te(n), l = _s(n), c = i ? i.position : r ? "fixed" : "";
|
|
2102
|
+
!l && (c === "fixed" || c === "absolute" && a.position === "static") ? o = o.filter((u) => u !== n) : i = a, n = Le(n);
|
|
2103
2103
|
}
|
|
2104
2104
|
return e.set(s, o), o;
|
|
2105
2105
|
}
|
|
@@ -2110,11 +2110,11 @@ function Dr(s) {
|
|
|
2110
2110
|
rootBoundary: o,
|
|
2111
2111
|
strategy: i
|
|
2112
2112
|
} = s;
|
|
2113
|
-
const n = [...t === "clippingAncestors" ? Wt(e) ? [] : Vr(e, this._c) : [].concat(t), o], a =
|
|
2113
|
+
const n = [...t === "clippingAncestors" ? Wt(e) ? [] : Vr(e, this._c) : [].concat(t), o], a = Ks(e, n[0], i);
|
|
2114
2114
|
let l = a.top, c = a.right, d = a.bottom, u = a.left;
|
|
2115
2115
|
for (let f = 1; f < n.length; f++) {
|
|
2116
|
-
const p =
|
|
2117
|
-
l = ne(p.top, l), c =
|
|
2116
|
+
const p = Ks(e, n[f], i);
|
|
2117
|
+
l = ne(p.top, l), c = ve(p.right, c), d = ve(p.bottom, d), u = ne(p.left, u);
|
|
2118
2118
|
}
|
|
2119
2119
|
return {
|
|
2120
2120
|
width: c - u,
|
|
@@ -2127,25 +2127,25 @@ function Rr(s) {
|
|
|
2127
2127
|
const {
|
|
2128
2128
|
width: e,
|
|
2129
2129
|
height: t
|
|
2130
|
-
} =
|
|
2130
|
+
} = Co(s);
|
|
2131
2131
|
return {
|
|
2132
2132
|
width: e,
|
|
2133
2133
|
height: t
|
|
2134
2134
|
};
|
|
2135
2135
|
}
|
|
2136
2136
|
function Br(s, e, t) {
|
|
2137
|
-
const o =
|
|
2137
|
+
const o = we(e), i = le(e), r = t === "fixed", n = Ee(s, !0, r, e);
|
|
2138
2138
|
let a = {
|
|
2139
2139
|
scrollLeft: 0,
|
|
2140
2140
|
scrollTop: 0
|
|
2141
2141
|
};
|
|
2142
2142
|
const l = ae(0);
|
|
2143
|
-
if ((o || !r) && ((
|
|
2144
|
-
const f =
|
|
2143
|
+
if ((o || !r) && ((qe(e) !== "body" || Kt(i)) && (a = jt(e)), o)) {
|
|
2144
|
+
const f = Ee(e, !0, r, e);
|
|
2145
2145
|
l.x = f.x + e.clientLeft, l.y = f.y + e.clientTop;
|
|
2146
2146
|
}
|
|
2147
2147
|
!o && i && (l.x = Gt(i));
|
|
2148
|
-
const c = i && !o && !r ?
|
|
2148
|
+
const c = i && !o && !r ? To(i, a) : ae(0), d = n.left + a.scrollLeft - l.x - c.x, u = n.top + a.scrollTop - l.y - c.y;
|
|
2149
2149
|
return {
|
|
2150
2150
|
x: d,
|
|
2151
2151
|
y: u,
|
|
@@ -2156,34 +2156,34 @@ function Br(s, e, t) {
|
|
|
2156
2156
|
function Jt(s) {
|
|
2157
2157
|
return te(s).position === "static";
|
|
2158
2158
|
}
|
|
2159
|
-
function
|
|
2160
|
-
if (!
|
|
2159
|
+
function Ws(s, e) {
|
|
2160
|
+
if (!we(s) || te(s).position === "fixed")
|
|
2161
2161
|
return null;
|
|
2162
2162
|
if (e)
|
|
2163
2163
|
return e(s);
|
|
2164
2164
|
let t = s.offsetParent;
|
|
2165
2165
|
return le(s) === t && (t = t.ownerDocument.body), t;
|
|
2166
2166
|
}
|
|
2167
|
-
function
|
|
2167
|
+
function Io(s, e) {
|
|
2168
2168
|
const t = U(s);
|
|
2169
2169
|
if (Wt(s))
|
|
2170
2170
|
return t;
|
|
2171
|
-
if (!
|
|
2172
|
-
let i =
|
|
2171
|
+
if (!we(s)) {
|
|
2172
|
+
let i = Le(s);
|
|
2173
2173
|
for (; i && !at(i); ) {
|
|
2174
2174
|
if (ee(i) && !Jt(i))
|
|
2175
2175
|
return i;
|
|
2176
|
-
i =
|
|
2176
|
+
i = Le(i);
|
|
2177
2177
|
}
|
|
2178
2178
|
return t;
|
|
2179
2179
|
}
|
|
2180
|
-
let o =
|
|
2180
|
+
let o = Ws(s, e);
|
|
2181
2181
|
for (; o && Sr(o) && Jt(o); )
|
|
2182
|
-
o =
|
|
2183
|
-
return o && at(o) && Jt(o) && !
|
|
2182
|
+
o = Ws(o, e);
|
|
2183
|
+
return o && at(o) && Jt(o) && !_s(o) ? t : o || Or(s) || t;
|
|
2184
2184
|
}
|
|
2185
2185
|
const Hr = async function(s) {
|
|
2186
|
-
const e = this.getOffsetParent ||
|
|
2186
|
+
const e = this.getOffsetParent || Io, t = this.getDimensions, o = await t(s.floating);
|
|
2187
2187
|
return {
|
|
2188
2188
|
reference: Br(s.reference, await e(s.floating), s.strategy),
|
|
2189
2189
|
floating: {
|
|
@@ -2197,19 +2197,19 @@ const Hr = async function(s) {
|
|
|
2197
2197
|
function Fr(s) {
|
|
2198
2198
|
return te(s).direction === "rtl";
|
|
2199
2199
|
}
|
|
2200
|
-
const
|
|
2200
|
+
const Oo = {
|
|
2201
2201
|
convertOffsetParentRelativeRectToViewportRelativeRect: Lr,
|
|
2202
2202
|
getDocumentElement: le,
|
|
2203
2203
|
getClippingRect: Dr,
|
|
2204
|
-
getOffsetParent:
|
|
2204
|
+
getOffsetParent: Io,
|
|
2205
2205
|
getElementRects: Hr,
|
|
2206
2206
|
getClientRects: Er,
|
|
2207
2207
|
getDimensions: Rr,
|
|
2208
|
-
getScale:
|
|
2208
|
+
getScale: Ne,
|
|
2209
2209
|
isElement: ee,
|
|
2210
2210
|
isRTL: Fr
|
|
2211
2211
|
};
|
|
2212
|
-
function
|
|
2212
|
+
function Mo(s, e) {
|
|
2213
2213
|
return s.x === e.x && s.y === e.y && s.width === e.width && s.height === e.height;
|
|
2214
2214
|
}
|
|
2215
2215
|
function Kr(s, e, t) {
|
|
@@ -2225,18 +2225,18 @@ function Kr(s, e, t) {
|
|
|
2225
2225
|
left: p,
|
|
2226
2226
|
top: g,
|
|
2227
2227
|
width: w,
|
|
2228
|
-
height:
|
|
2228
|
+
height: _
|
|
2229
2229
|
} = f;
|
|
2230
|
-
if (d || e(), !w || !
|
|
2230
|
+
if (d || e(), !w || !_)
|
|
2231
2231
|
return;
|
|
2232
|
-
const
|
|
2233
|
-
rootMargin: -
|
|
2234
|
-
threshold: ne(0,
|
|
2232
|
+
const v = vt(g), y = vt(r.clientWidth - (p + w)), k = vt(r.clientHeight - (g + _)), O = vt(p), D = {
|
|
2233
|
+
rootMargin: -v + "px " + -y + "px " + -k + "px " + -O + "px",
|
|
2234
|
+
threshold: ne(0, ve(1, u)) || 1
|
|
2235
2235
|
};
|
|
2236
2236
|
let j = !0;
|
|
2237
2237
|
function q(V) {
|
|
2238
2238
|
const S = V[0].intersectionRatio;
|
|
2239
|
-
if (!
|
|
2239
|
+
if (!Mo(f, s.getBoundingClientRect()))
|
|
2240
2240
|
return a();
|
|
2241
2241
|
if (S !== u) {
|
|
2242
2242
|
if (!j)
|
|
@@ -2271,35 +2271,35 @@ function Wr(s, e, t, o) {
|
|
|
2271
2271
|
elementResize: n = typeof ResizeObserver == "function",
|
|
2272
2272
|
layoutShift: a = typeof IntersectionObserver == "function",
|
|
2273
2273
|
animationFrame: l = !1
|
|
2274
|
-
} = o, c =
|
|
2275
|
-
d.forEach((
|
|
2276
|
-
i &&
|
|
2274
|
+
} = o, c = Cs(s), d = i || r ? [...c ? lt(c) : [], ...e ? lt(e) : []] : [];
|
|
2275
|
+
d.forEach((v) => {
|
|
2276
|
+
i && v.addEventListener("scroll", t), r && v.addEventListener("resize", t);
|
|
2277
2277
|
});
|
|
2278
2278
|
const u = c && a ? Kr(c, t, r) : null;
|
|
2279
2279
|
let f = -1, p = null;
|
|
2280
|
-
n && (p = new ResizeObserver((
|
|
2281
|
-
let [
|
|
2282
|
-
|
|
2280
|
+
n && (p = new ResizeObserver((v) => {
|
|
2281
|
+
let [y] = v;
|
|
2282
|
+
y && y.target === c && p && e && (p.unobserve(e), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
|
|
2283
2283
|
var k;
|
|
2284
2284
|
(k = p) == null || k.observe(e);
|
|
2285
2285
|
})), t();
|
|
2286
2286
|
}), c && !l && p.observe(c), e && p.observe(e));
|
|
2287
|
-
let g, w = l ?
|
|
2288
|
-
l &&
|
|
2289
|
-
function
|
|
2290
|
-
const
|
|
2291
|
-
w && !
|
|
2287
|
+
let g, w = l ? Ee(s) : null;
|
|
2288
|
+
l && _();
|
|
2289
|
+
function _() {
|
|
2290
|
+
const v = Ee(s);
|
|
2291
|
+
w && !Mo(w, v) && t(), w = v, g = requestAnimationFrame(_);
|
|
2292
2292
|
}
|
|
2293
2293
|
return t(), () => {
|
|
2294
|
-
var
|
|
2295
|
-
d.forEach((
|
|
2296
|
-
i &&
|
|
2297
|
-
}), u == null || u(), (
|
|
2294
|
+
var v;
|
|
2295
|
+
d.forEach((y) => {
|
|
2296
|
+
i && y.removeEventListener("scroll", t), r && y.removeEventListener("resize", t);
|
|
2297
|
+
}), u == null || u(), (v = p) == null || v.disconnect(), p = null, l && cancelAnimationFrame(g);
|
|
2298
2298
|
};
|
|
2299
2299
|
}
|
|
2300
2300
|
const jr = _r, Gr = kr, Ur = wr, Yt = Cr, qr = vr, Xr = (s, e, t) => {
|
|
2301
2301
|
const o = /* @__PURE__ */ new Map(), i = t ?? {}, r = {
|
|
2302
|
-
...
|
|
2302
|
+
...Oo,
|
|
2303
2303
|
...i.platform,
|
|
2304
2304
|
_c: o
|
|
2305
2305
|
};
|
|
@@ -2382,7 +2382,7 @@ function sn(s, e, t) {
|
|
|
2382
2382
|
const o = e.split("-")[0], i = tn[o];
|
|
2383
2383
|
s.style.left = t.x != null ? `${t.x}px` : "", s.style.top = t.y != null ? `${t.y}px` : "", s.style.right = "", s.style.bottom = "", s.style[i] = `-${s.offsetWidth / 2}px`;
|
|
2384
2384
|
}
|
|
2385
|
-
function
|
|
2385
|
+
function js(s, e) {
|
|
2386
2386
|
const t = [jr(s.offset ?? 4)];
|
|
2387
2387
|
if (s.matchWidth) {
|
|
2388
2388
|
const i = s.matchWidth;
|
|
@@ -2421,21 +2421,21 @@ function Ws(s, e) {
|
|
|
2421
2421
|
function ot(s, e, t = {}) {
|
|
2422
2422
|
const o = t.strategy ?? "fixed";
|
|
2423
2423
|
t.inheritThemeFrom && en(t.inheritThemeFrom, s), s.style.position = o, s.style.left = "0", s.style.top = "0";
|
|
2424
|
-
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n =
|
|
2424
|
+
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n = js(t, r);
|
|
2425
2425
|
const a = t.lockPlacement === "freeze";
|
|
2426
2426
|
let l = !1;
|
|
2427
|
-
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...
|
|
2427
|
+
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...Oo, getOffsetParent: () => ns(s) } : void 0), u = () => {
|
|
2428
2428
|
var p;
|
|
2429
2429
|
(p = t.beforeCompute) == null || p.call(t), Xr(e, s, {
|
|
2430
2430
|
placement: i,
|
|
2431
2431
|
strategy: o,
|
|
2432
2432
|
middleware: n,
|
|
2433
2433
|
...d ? { platform: d } : {}
|
|
2434
|
-
}).then(({ x: g, y: w, placement:
|
|
2435
|
-
var
|
|
2436
|
-
if (s.style.left = `${g}px`, s.style.top = `${w}px`, t.arrow && sn(t.arrow.element,
|
|
2437
|
-
const
|
|
2438
|
-
|
|
2434
|
+
}).then(({ x: g, y: w, placement: _, middlewareData: v }) => {
|
|
2435
|
+
var y, k;
|
|
2436
|
+
if (s.style.left = `${g}px`, s.style.top = `${w}px`, t.arrow && sn(t.arrow.element, _, v.arrow), a && !l && (l = !0, i = _, r = !1, n = js(t, !1)), (y = t.onPlaced) == null || y.call(t, _), (k = t.onComputed) == null || k.call(t, { x: g, y: w, placement: _ }), t.onDrift && e instanceof Element) {
|
|
2437
|
+
const O = c ? ns(s) : window, $ = Qr({ panel: s, reference: e, expectedX: g, expectedY: w, offsetParent: O });
|
|
2438
|
+
$ && t.onDrift($);
|
|
2439
2439
|
}
|
|
2440
2440
|
});
|
|
2441
2441
|
};
|
|
@@ -2457,8 +2457,8 @@ function rn(s) {
|
|
|
2457
2457
|
const u = {
|
|
2458
2458
|
getBoundingClientRect: () => d ?? s.trigger.getBoundingClientRect(),
|
|
2459
2459
|
contextElement: s.trigger
|
|
2460
|
-
}, f = (
|
|
2461
|
-
d = new DOMRect(
|
|
2460
|
+
}, f = (y) => {
|
|
2461
|
+
d = new DOMRect(y.clientX, y.clientY, 0, 0), n == null || n.update();
|
|
2462
2462
|
}, p = () => {
|
|
2463
2463
|
l && clearTimeout(l), c && clearTimeout(c), l = c = void 0;
|
|
2464
2464
|
}, g = () => {
|
|
@@ -2466,8 +2466,8 @@ function rn(s) {
|
|
|
2466
2466
|
if (p(), a)
|
|
2467
2467
|
return;
|
|
2468
2468
|
(k = s.onBeforeShow) == null || k.call(s), a = !0, e.append(r);
|
|
2469
|
-
const
|
|
2470
|
-
n = ot(r,
|
|
2469
|
+
const y = s.followCursor ? u : s.trigger;
|
|
2470
|
+
n = ot(r, y, {
|
|
2471
2471
|
placement: t,
|
|
2472
2472
|
strategy: s.strategy,
|
|
2473
2473
|
offset: s.offset ?? 8,
|
|
@@ -2475,12 +2475,12 @@ function rn(s) {
|
|
|
2475
2475
|
}), s.followCursor && s.trigger.addEventListener("mousemove", f), r.classList.add(o);
|
|
2476
2476
|
}, w = () => {
|
|
2477
2477
|
p(), a && (a = !1, r.classList.remove(o), s.followCursor && s.trigger.removeEventListener("mousemove", f), n == null || n.destroy(), n = void 0, r.remove());
|
|
2478
|
-
},
|
|
2478
|
+
}, _ = () => {
|
|
2479
2479
|
p(), i.show > 0 ? l = setTimeout(g, i.show) : g();
|
|
2480
|
-
},
|
|
2480
|
+
}, v = () => {
|
|
2481
2481
|
p(), i.hide > 0 ? c = setTimeout(w, i.hide) : w();
|
|
2482
2482
|
};
|
|
2483
|
-
return s.trigger.addEventListener("mouseenter",
|
|
2483
|
+
return s.trigger.addEventListener("mouseenter", _), s.trigger.addEventListener("mouseleave", v), s.trigger.addEventListener("focusin", _), s.trigger.addEventListener("focusout", v), {
|
|
2484
2484
|
element: r,
|
|
2485
2485
|
get isVisible() {
|
|
2486
2486
|
return a;
|
|
@@ -2488,7 +2488,7 @@ function rn(s) {
|
|
|
2488
2488
|
show: g,
|
|
2489
2489
|
hide: w,
|
|
2490
2490
|
destroy() {
|
|
2491
|
-
s.trigger.removeEventListener("mouseenter",
|
|
2491
|
+
s.trigger.removeEventListener("mouseenter", _), s.trigger.removeEventListener("mouseleave", v), s.trigger.removeEventListener("focusin", _), s.trigger.removeEventListener("focusout", v), w();
|
|
2492
2492
|
}
|
|
2493
2493
|
};
|
|
2494
2494
|
}
|
|
@@ -2527,21 +2527,21 @@ function nn(s) {
|
|
|
2527
2527
|
}
|
|
2528
2528
|
};
|
|
2529
2529
|
}
|
|
2530
|
-
const
|
|
2530
|
+
const Lo = ["INIT", "DATA", "UI", "INTERACTION"], ce = nr("MULTISELECT", Lo), wt = ce.loggers.INIT, W = ce.loggers.DATA, Y = ce.loggers.UI, R = ce.loggers.INTERACTION, Tn = Lo.map((s) => `MULTISELECT:${s}`);
|
|
2531
2531
|
function In() {
|
|
2532
2532
|
ce.enableLogging();
|
|
2533
2533
|
}
|
|
2534
2534
|
function On() {
|
|
2535
2535
|
ce.disableLogging();
|
|
2536
2536
|
}
|
|
2537
|
-
function
|
|
2537
|
+
function Mn(s) {
|
|
2538
2538
|
ce.setLogLevel(s);
|
|
2539
2539
|
}
|
|
2540
|
-
function
|
|
2540
|
+
function Pn(s, e) {
|
|
2541
2541
|
const t = s.includes(":") ? s.split(":").pop() : s;
|
|
2542
2542
|
ce.setCategoryLevel(t, e);
|
|
2543
2543
|
}
|
|
2544
|
-
class
|
|
2544
|
+
class Gs {
|
|
2545
2545
|
constructor(e) {
|
|
2546
2546
|
m(this, "container");
|
|
2547
2547
|
m(this, "wrapper");
|
|
@@ -2673,7 +2673,7 @@ class js {
|
|
|
2673
2673
|
this.container.removeEventListener("scroll", this.scrollHandler), this.resizeObserver && this.resizeObserver.disconnect(), this.container.innerHTML = "";
|
|
2674
2674
|
}
|
|
2675
2675
|
}
|
|
2676
|
-
function
|
|
2676
|
+
function Us(s) {
|
|
2677
2677
|
return {
|
|
2678
2678
|
treeId: "",
|
|
2679
2679
|
id: -1,
|
|
@@ -2694,109 +2694,109 @@ function an(s, e = ".") {
|
|
|
2694
2694
|
const t = s.lastIndexOf(e);
|
|
2695
2695
|
return t === -1 ? "" : s.substring(0, t);
|
|
2696
2696
|
}
|
|
2697
|
-
function
|
|
2697
|
+
function qs(s, e, t = ".") {
|
|
2698
2698
|
return st(e) ? s : s.startsWith(e + t) ? s.substring(e.length + t.length) : s;
|
|
2699
2699
|
}
|
|
2700
|
-
function
|
|
2700
|
+
function Xs(s, e = 0, t = 1, o = ".") {
|
|
2701
2701
|
return s.split(o).slice(e, e + t).join(o);
|
|
2702
2702
|
}
|
|
2703
2703
|
function ln(s, e) {
|
|
2704
2704
|
return s.split(e).length;
|
|
2705
2705
|
}
|
|
2706
|
-
function
|
|
2706
|
+
function ue(s, e) {
|
|
2707
2707
|
return s[e];
|
|
2708
2708
|
}
|
|
2709
2709
|
function cn(s = {}) {
|
|
2710
|
-
const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, u = s.getDisplayValueCallback, f = st(i), p = st(r), g = st(n), w = st(a),
|
|
2711
|
-
let k = 0,
|
|
2712
|
-
const
|
|
2713
|
-
treePathSeparator:
|
|
2714
|
-
root:
|
|
2710
|
+
const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, u = s.getDisplayValueCallback, f = st(i), p = st(r), g = st(n), w = st(a), _ = "x", v = s.treePathSeparator || ".", y = Us();
|
|
2711
|
+
let k = 0, O = null;
|
|
2712
|
+
const $ = (V) => o ? o(V) : t ? ue(V, t) : void 0, D = {
|
|
2713
|
+
treePathSeparator: v,
|
|
2714
|
+
root: y,
|
|
2715
2715
|
get tree() {
|
|
2716
|
-
return Object.values(
|
|
2716
|
+
return Object.values(y.children);
|
|
2717
2717
|
},
|
|
2718
2718
|
/**
|
|
2719
2719
|
* Every node in depth-first render order (a parent immediately precedes
|
|
2720
2720
|
* its subtree). Computed once per `insertArray` and cached.
|
|
2721
2721
|
*/
|
|
2722
2722
|
get flatNodes() {
|
|
2723
|
-
if (
|
|
2724
|
-
const V = [], S = s.isSorted ?? !1,
|
|
2725
|
-
function
|
|
2723
|
+
if (O) return O;
|
|
2724
|
+
const V = [], S = s.isSorted ?? !1, P = s.sortCallback;
|
|
2725
|
+
function z(B) {
|
|
2726
2726
|
let T = Object.values(B.children);
|
|
2727
|
-
S &&
|
|
2727
|
+
S && P && T.length > 0 && (T = P(T));
|
|
2728
2728
|
for (const F of T)
|
|
2729
|
-
V.push(F), F.hasChildren &&
|
|
2729
|
+
V.push(F), F.hasChildren && z(F);
|
|
2730
2730
|
}
|
|
2731
|
-
return
|
|
2731
|
+
return z(y), O = V, V;
|
|
2732
2732
|
},
|
|
2733
2733
|
insertArray(V) {
|
|
2734
|
-
V = V || [],
|
|
2734
|
+
V = V || [], y.children = {}, k = 0, O = null;
|
|
2735
2735
|
const S = [];
|
|
2736
|
-
let
|
|
2737
|
-
const T =
|
|
2738
|
-
T.treeId = c, T.id = e ?
|
|
2739
|
-
const F =
|
|
2740
|
-
return F == null || F === "" || typeof F != "string" ? (S.push(`index ${B}`), null) : (T.path = F, (T.id === void 0 || T.id === -1) && (T.id = F), f ? T.parentPath = an(T.path,
|
|
2741
|
-
|
|
2736
|
+
let P = V.map((z, B) => {
|
|
2737
|
+
const T = Us();
|
|
2738
|
+
T.treeId = c, T.id = e ? ue(z, e) : void 0;
|
|
2739
|
+
const F = $(z);
|
|
2740
|
+
return F == null || F === "" || typeof F != "string" ? (S.push(`index ${B}`), null) : (T.path = F, (T.id === void 0 || T.id === -1) && (T.id = F), f ? T.parentPath = an(T.path, v) : T.parentPath = ue(z, i), T.pathSegment = Xs(
|
|
2741
|
+
qs(T.path, T.parentPath ?? "", v),
|
|
2742
2742
|
0,
|
|
2743
2743
|
1,
|
|
2744
|
-
|
|
2745
|
-
), p ? T.level = ln(T.path,
|
|
2746
|
-
}).filter((
|
|
2747
|
-
s.isSorted || (s.sortCallback ?
|
|
2748
|
-
for (const
|
|
2749
|
-
j(
|
|
2744
|
+
v
|
|
2745
|
+
), p ? T.level = ln(T.path, v) : T.level = ue(z, r), g || (T.hasChildren = ue(z, n)), T.data = z, T);
|
|
2746
|
+
}).filter((z) => z !== null);
|
|
2747
|
+
s.isSorted || (s.sortCallback ? P = s.sortCallback(P) : P = q(P));
|
|
2748
|
+
for (const z of P)
|
|
2749
|
+
j(z.parentPath ?? "", z);
|
|
2750
2750
|
if (l || !w)
|
|
2751
|
-
for (const
|
|
2751
|
+
for (const z of P)
|
|
2752
2752
|
if (l)
|
|
2753
|
-
|
|
2753
|
+
z.isSelectable = l(z) !== !1;
|
|
2754
2754
|
else {
|
|
2755
|
-
const B =
|
|
2756
|
-
|
|
2755
|
+
const B = ue(z.data, a);
|
|
2756
|
+
z.isSelectable = B == null ? !0 : !!B;
|
|
2757
2757
|
}
|
|
2758
2758
|
S.length > 0 && console.warn(
|
|
2759
2759
|
`[ltree ${c}] ${S.length} option(s) had an invalid path and were skipped (pathMember="${t}"). Offending: ${S.slice(0, 5).join(", ")}` + (S.length > 5 ? ", …" : "")
|
|
2760
2760
|
);
|
|
2761
2761
|
},
|
|
2762
2762
|
getNodeByPath(V, S) {
|
|
2763
|
-
let
|
|
2763
|
+
let P = S || y;
|
|
2764
2764
|
if (V) {
|
|
2765
|
-
const
|
|
2766
|
-
for (let B = 0; B <
|
|
2767
|
-
const T =
|
|
2768
|
-
if (!
|
|
2765
|
+
const z = V.split(v);
|
|
2766
|
+
for (let B = 0; B < z.length; B++) {
|
|
2767
|
+
const T = _ + z[B];
|
|
2768
|
+
if (!P.children.hasOwnProperty(T))
|
|
2769
2769
|
return null;
|
|
2770
|
-
|
|
2770
|
+
P = P.children[T];
|
|
2771
2771
|
}
|
|
2772
2772
|
}
|
|
2773
|
-
return
|
|
2773
|
+
return P;
|
|
2774
2774
|
}
|
|
2775
2775
|
};
|
|
2776
2776
|
function j(V, S) {
|
|
2777
|
-
const
|
|
2778
|
-
if (!
|
|
2777
|
+
const P = D.getNodeByPath(V);
|
|
2778
|
+
if (!P)
|
|
2779
2779
|
return `Node: ${S.path} - Could not find parent node: ${V}`;
|
|
2780
|
-
p && (S.level = (
|
|
2781
|
-
const
|
|
2782
|
-
return
|
|
2780
|
+
p && (S.level = (P.level || 0) + 1);
|
|
2781
|
+
const z = _ + Xs(qs(S.path, V, v), 0, 1, v);
|
|
2782
|
+
return P.children.hasOwnProperty(z) || (P.children[z] = S, g && !P.hasChildren && (P.hasChildren = !0), k = Math.max(k, S.level || 0)), null;
|
|
2783
2783
|
}
|
|
2784
2784
|
function q(V) {
|
|
2785
|
-
return V.sort((S,
|
|
2786
|
-
const
|
|
2787
|
-
if (
|
|
2788
|
-
if (S.parentPath !==
|
|
2789
|
-
return S.parentPath ?
|
|
2790
|
-
if (d && S.data &&
|
|
2791
|
-
const T =
|
|
2785
|
+
return V.sort((S, P) => {
|
|
2786
|
+
const z = S.level || 0, B = P.level || 0;
|
|
2787
|
+
if (z !== B) return z - B;
|
|
2788
|
+
if (S.parentPath !== P.parentPath)
|
|
2789
|
+
return S.parentPath ? P.parentPath ? S.parentPath.localeCompare(P.parentPath) : 1 : -1;
|
|
2790
|
+
if (d && S.data && P.data) {
|
|
2791
|
+
const T = ue(S.data, d) ?? 0, F = ue(P.data, d) ?? 0;
|
|
2792
2792
|
if (T !== F) return T - F;
|
|
2793
2793
|
}
|
|
2794
|
-
return u ? u(S).localeCompare(u(
|
|
2794
|
+
return u ? u(S).localeCompare(u(P)) : S.path.localeCompare(P.path);
|
|
2795
2795
|
});
|
|
2796
2796
|
}
|
|
2797
2797
|
return D;
|
|
2798
2798
|
}
|
|
2799
|
-
function
|
|
2799
|
+
function Js(s, e) {
|
|
2800
2800
|
const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), r = (l) => String(e(l.data)), n = (l) => {
|
|
2801
2801
|
t.set(r(l), l);
|
|
2802
2802
|
const c = [];
|
|
@@ -2808,7 +2808,7 @@ function Xs(s, e) {
|
|
|
2808
2808
|
for (const l of a) n(l);
|
|
2809
2809
|
return { nodeByValue: t, atomsUnder: o, atomPaths: i, roots: a };
|
|
2810
2810
|
}
|
|
2811
|
-
function
|
|
2811
|
+
function Ss(s, e, t) {
|
|
2812
2812
|
const o = s.atomsUnder.get(e.path);
|
|
2813
2813
|
if (!o || o.length === 0) return "unchecked";
|
|
2814
2814
|
let i = 0;
|
|
@@ -2825,7 +2825,7 @@ function Qe(s, e) {
|
|
|
2825
2825
|
return t;
|
|
2826
2826
|
}
|
|
2827
2827
|
function dn(s, e, t) {
|
|
2828
|
-
const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r =
|
|
2828
|
+
const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r = Ss(s, e, t), n = [], a = [];
|
|
2829
2829
|
if (r === "checked")
|
|
2830
2830
|
for (const l of o) i.delete(l) && a.push(l);
|
|
2831
2831
|
else
|
|
@@ -2834,7 +2834,7 @@ function dn(s, e, t) {
|
|
|
2834
2834
|
}
|
|
2835
2835
|
function Zt(s, e, t, o) {
|
|
2836
2836
|
const i = (a) => String(o(a.data)), r = [], n = (a) => {
|
|
2837
|
-
const l =
|
|
2837
|
+
const l = Ss(s, a, e);
|
|
2838
2838
|
if (l === "unchecked") return;
|
|
2839
2839
|
const c = a.isSelectable !== !1, d = Object.values(a.children);
|
|
2840
2840
|
if (t === "leaves") {
|
|
@@ -2856,7 +2856,7 @@ function Zt(s, e, t, o) {
|
|
|
2856
2856
|
for (const a of s.roots) n(a);
|
|
2857
2857
|
return r;
|
|
2858
2858
|
}
|
|
2859
|
-
var
|
|
2859
|
+
var N;
|
|
2860
2860
|
class hn {
|
|
2861
2861
|
constructor(e, t = {}) {
|
|
2862
2862
|
m(this, "element");
|
|
@@ -2865,7 +2865,7 @@ class hn {
|
|
|
2865
2865
|
// Backing field for the open state. Read/written internally via `this.#isOpen`
|
|
2866
2866
|
// so the public `isOpen` accessor (get/set) can drive open()/close() without
|
|
2867
2867
|
// recursing. See the imperative API at the bottom of the class.
|
|
2868
|
-
L(this,
|
|
2868
|
+
L(this, N, !1);
|
|
2869
2869
|
m(this, "selectedValues", /* @__PURE__ */ new Set());
|
|
2870
2870
|
m(this, "selectedOptions", /* @__PURE__ */ new Map());
|
|
2871
2871
|
m(this, "allOptions", []);
|
|
@@ -3103,11 +3103,11 @@ class hn {
|
|
|
3103
3103
|
* Badge display falls back to the regular display value rather than '[N/A]', so consumers can override badge
|
|
3104
3104
|
* text independently. Doesn't fit the extractField shape (no tuple/member layer of its own).
|
|
3105
3105
|
*/
|
|
3106
|
-
getItemBadgeDisplayValue(e) {
|
|
3107
|
-
if (this.options.getBadgeDisplayCallback) return this.options.getBadgeDisplayCallback(e);
|
|
3106
|
+
getItemBadgeDisplayValue(e, t) {
|
|
3107
|
+
if (this.options.getBadgeDisplayCallback) return this.options.getBadgeDisplayCallback(e, t);
|
|
3108
3108
|
if (this.options.isBadgeFullTitleShown) {
|
|
3109
|
-
const
|
|
3110
|
-
if (
|
|
3109
|
+
const o = this.getItemFullTitle(e);
|
|
3110
|
+
if (o) return o;
|
|
3111
3111
|
}
|
|
3112
3112
|
return this.getItemDisplayValue(e);
|
|
3113
3113
|
}
|
|
@@ -3264,7 +3264,7 @@ class hn {
|
|
|
3264
3264
|
treePathSeparator: this.options.treePathSeparator,
|
|
3265
3265
|
treeId: this.instanceId,
|
|
3266
3266
|
getDisplayValueCallback: (e) => this.getItemDisplayValue(e.data)
|
|
3267
|
-
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ?
|
|
3267
|
+
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ? Js(this.tree, (e) => String(this.getItemValue(e))) : null, this.rebuildTreeVisible();
|
|
3268
3268
|
}
|
|
3269
3269
|
/**
|
|
3270
3270
|
* Whether cascade checkbox mode is active: a multi-select tree with
|
|
@@ -3466,7 +3466,7 @@ class hn {
|
|
|
3466
3466
|
t.className = "ms__input-wrapper", this.inputWrapper = t, this.input = document.createElement("input"), this.input.type = "text", this.input.className = "ms__input", this.input.placeholder = this.getPlaceholderText(), this.input.autocomplete = "off", this.options.searchInputMode === "readonly" ? this.input.readOnly = !0 : this.options.searchInputMode === "hidden" && (this.input.style.visibility = "hidden");
|
|
3467
3467
|
const o = document.createElement("span");
|
|
3468
3468
|
o.className = "ms__toggle", o.addEventListener("mousedown", (n) => {
|
|
3469
|
-
n.preventDefault(), n.stopPropagation(), h(this,
|
|
3469
|
+
n.preventDefault(), n.stopPropagation(), h(this, N) ? (this.justClosedViaClick = !0, this.close(), setTimeout(() => {
|
|
3470
3470
|
this.justClosedViaClick = !1;
|
|
3471
3471
|
}, 0)) : (this.open(), this.presentationMode !== "fullscreen" && this.input.focus());
|
|
3472
3472
|
}), this.counter = document.createElement("span"), this.counter.className = "ms__counter", this.counter.style.display = "none", this.clearButton = document.createElement("button"), this.clearButton.type = "button", this.clearButton.className = "ms__input-clear", this.clearButton.tabIndex = -1, this.clearButton.setAttribute("aria-label", "Clear selection"), this.clearButton.style.display = "none", this.clearButton.addEventListener("mousedown", (n) => n.preventDefault()), this.clearButton.addEventListener("click", (n) => {
|
|
@@ -3599,26 +3599,26 @@ class hn {
|
|
|
3599
3599
|
const d = this.isGroupCascadeActive();
|
|
3600
3600
|
Object.keys(l).forEach((u) => {
|
|
3601
3601
|
if (t += '<div class="ms__group">', u !== "__ungrouped__") {
|
|
3602
|
-
const f = ` data-group="${this.escapeHtml(u)}"`, p = d ? ' data-group-select="cascade"' : "", g = this.groupSelectionInfo(l[u]), w = d ? this.groupCheckboxHtml(g.checkState) : "",
|
|
3602
|
+
const f = ` data-group="${this.escapeHtml(u)}"`, p = d ? ' data-group-select="cascade"' : "", g = this.groupSelectionInfo(l[u]), w = d ? this.groupCheckboxHtml(g.checkState) : "", _ = d ? "ms__group-label ms__group-label--selectable" : "ms__group-label";
|
|
3603
3603
|
if (this.options.renderGroupLabelContentCallback) {
|
|
3604
|
-
const
|
|
3605
|
-
...
|
|
3604
|
+
const v = {
|
|
3605
|
+
...he(this.presentationMode),
|
|
3606
3606
|
groupName: u,
|
|
3607
3607
|
...g
|
|
3608
|
-
},
|
|
3609
|
-
if (
|
|
3608
|
+
}, y = this.options.renderGroupLabelContentCallback(u, v);
|
|
3609
|
+
if (y instanceof HTMLElement) {
|
|
3610
3610
|
const k = document.createElement("div");
|
|
3611
|
-
if (k.className =
|
|
3611
|
+
if (k.className = _, k.dataset.group = u, d) {
|
|
3612
3612
|
k.dataset.groupSelect = "cascade";
|
|
3613
|
-
const
|
|
3614
|
-
|
|
3613
|
+
const O = document.createElement("template");
|
|
3614
|
+
O.innerHTML = w, O.content.firstChild && k.appendChild(O.content.firstChild);
|
|
3615
3615
|
}
|
|
3616
|
-
k.appendChild(
|
|
3616
|
+
k.appendChild(y), t += k.outerHTML;
|
|
3617
3617
|
} else
|
|
3618
|
-
t += `<div class="${
|
|
3618
|
+
t += `<div class="${_}"${f}${p}>${w}${y}</div>`;
|
|
3619
3619
|
} else {
|
|
3620
|
-
const
|
|
3621
|
-
t += `<div class="${
|
|
3620
|
+
const v = this.groupCountHtml(g.selectedCount, g.memberCount), y = v ? `${_} ms__group-label--has-count` : _;
|
|
3621
|
+
t += `<div class="${y}"${f}${p}>${w}${this.escapeHtml(u)}${v}</div>`;
|
|
3622
3622
|
}
|
|
3623
3623
|
}
|
|
3624
3624
|
l[u].forEach((f) => {
|
|
@@ -3687,7 +3687,7 @@ class hn {
|
|
|
3687
3687
|
}
|
|
3688
3688
|
const e = this.scaledOptionHeight(), t = this.options.virtualScrollBuffer ?? 10;
|
|
3689
3689
|
requestAnimationFrame(() => {
|
|
3690
|
-
this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new
|
|
3690
|
+
this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new Gs({
|
|
3691
3691
|
container: this.optionsContainer,
|
|
3692
3692
|
itemHeight: e,
|
|
3693
3693
|
items: this.filteredOptions,
|
|
@@ -3718,17 +3718,18 @@ class hn {
|
|
|
3718
3718
|
if (!this.options.isMultipleEnabled || !e || e.length === 0) return "";
|
|
3719
3719
|
const t = this.options.actionsPosition === "bottom" ? "bottom" : "top", o = this.options.actionsAlign ?? "stretch", i = ` ms__actions--${t}`, r = this.options.isActionsSticky ? " ms__actions--sticky" : "", n = this.options.actionsLayout === "wrap" ? " ms__actions--wrap" : "", a = ` ms__actions--align-${o}`, l = /* @__PURE__ */ new Map();
|
|
3720
3720
|
if (e.forEach((d, u) => {
|
|
3721
|
-
|
|
3722
|
-
|
|
3723
|
-
|
|
3724
|
-
|
|
3725
|
-
|
|
3721
|
+
const f = this.buildActionContext(d);
|
|
3722
|
+
if (!(d.getIsVisibleCallback ? d.getIsVisibleCallback(this, f) : d.isVisible ?? !0)) return;
|
|
3723
|
+
let g;
|
|
3724
|
+
d.getIsDisabledCallback ? g = d.getIsDisabledCallback(this, f) : d.isDisabled !== void 0 ? g = d.isDisabled : g = this.getBuiltInActionDisabled(d.action);
|
|
3725
|
+
const w = g ? " disabled" : "", _ = d.getTextCallback ? d.getTextCallback(this, f) : d.text;
|
|
3726
|
+
let v = "";
|
|
3726
3727
|
if (d.getClassCallback) {
|
|
3727
|
-
const
|
|
3728
|
-
|
|
3729
|
-
} else d.cssClass && (
|
|
3730
|
-
const
|
|
3731
|
-
l.has(
|
|
3728
|
+
const O = this.classSuffix(d.getClassCallback(this, f));
|
|
3729
|
+
O && (v = ` ${O}`);
|
|
3730
|
+
} else d.cssClass && (v = ` ${d.cssClass}`);
|
|
3731
|
+
const y = Math.max(1, Math.floor(d.row ?? 1)), k = `<button type="button"${w} class="ms__action-btn${v}" data-action="${d.action}" data-button-index="${u}">${_}</button>`;
|
|
3732
|
+
l.has(y) || l.set(y, []), l.get(y).push(k);
|
|
3732
3733
|
}), l.size === 0) return "";
|
|
3733
3734
|
const c = Array.from(l.keys()).sort((d, u) => d - u).map((d) => `<div class="ms__actions-row" data-row="${d}">${l.get(d).join("")}</div>`).join("");
|
|
3734
3735
|
return `<div class="ms__actions${i}${r}${n}${a}">${c}</div>`;
|
|
@@ -3745,7 +3746,7 @@ class hn {
|
|
|
3745
3746
|
isFocused: c,
|
|
3746
3747
|
isMatched: d,
|
|
3747
3748
|
isDisabled: a,
|
|
3748
|
-
...
|
|
3749
|
+
...he(this.presentationMode),
|
|
3749
3750
|
isTreeNode: !1
|
|
3750
3751
|
};
|
|
3751
3752
|
p += this.toHtml(this.options.renderOptionContentCallback(e, g));
|
|
@@ -3772,34 +3773,34 @@ class hn {
|
|
|
3772
3773
|
* chevron/toggle — every node is just a normal, selectable option.
|
|
3773
3774
|
*/
|
|
3774
3775
|
renderTreeNode(e, t) {
|
|
3775
|
-
const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ?
|
|
3776
|
-
|
|
3777
|
-
const k = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "",
|
|
3778
|
-
let
|
|
3779
|
-
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && w && (
|
|
3776
|
+
const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ? Ss(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, u = c ? d === "checked" : this.selectedValues.has(String(i)), f = d === "indeterminate", p = t === this.focusedIndex, g = this.matchingIndices.has(t), w = e.isSelectable !== !1, _ = e.level ?? 1, v = Math.max(0, _ - 1), y = ["ms__option", "ms__option--tree"];
|
|
3777
|
+
y.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), u && y.push("ms__option--selected"), f && y.push("ms__option--indeterminate"), p && y.push("ms__option--focused"), g && y.push("ms__option--matched"), l && y.push("ms__option--disabled"), w || y.push("ms__option--tree-unselectable");
|
|
3778
|
+
const k = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", O = w ? "" : ' data-selectable="false"';
|
|
3779
|
+
let $ = `<div class="${y.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${_}" style="--ms-tree-depth: ${v};"${k}${O}>`;
|
|
3780
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && w && ($ += this.checkboxHtml({ checked: u, indeterminate: f, disabled: l })), $ += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
3780
3781
|
const D = {
|
|
3781
3782
|
index: t,
|
|
3782
3783
|
isSelected: u,
|
|
3783
3784
|
isFocused: p,
|
|
3784
3785
|
isMatched: g,
|
|
3785
3786
|
isDisabled: l,
|
|
3786
|
-
...
|
|
3787
|
+
...he(this.presentationMode),
|
|
3787
3788
|
// Tree metadata — lets the callback branch on depth / branch-vs-leaf /
|
|
3788
3789
|
// tristate without re-deriving any of it from the raw data item.
|
|
3789
3790
|
isTreeNode: !0,
|
|
3790
3791
|
isBranch: e.hasChildren,
|
|
3791
3792
|
isLeaf: !e.hasChildren,
|
|
3792
3793
|
childCount: Object.keys(e.children).length,
|
|
3793
|
-
level:
|
|
3794
|
-
depth:
|
|
3794
|
+
level: _,
|
|
3795
|
+
depth: v,
|
|
3795
3796
|
path: e.path,
|
|
3796
3797
|
isSelectable: w,
|
|
3797
3798
|
isIndeterminate: f
|
|
3798
3799
|
};
|
|
3799
|
-
|
|
3800
|
+
$ += this.toHtml(this.options.renderOptionContentCallback(o, D));
|
|
3800
3801
|
} else
|
|
3801
|
-
n && (
|
|
3802
|
-
return
|
|
3802
|
+
n && ($ += `<span class="ms__option-icon">${n}</span>`), $ += '<div class="ms__option-text">', $ += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, a && ($ += `<div class="ms__option-subtitle">${a}</div>`), $ += "</div>";
|
|
3803
|
+
return $ += this.renderOptionInfoButton(), $ += "</div>", $ += "</div>", $;
|
|
3803
3804
|
}
|
|
3804
3805
|
/**
|
|
3805
3806
|
* Empty-dropdown content. When "add new" is enabled (isAddNewAllowed) AND the user has typed
|
|
@@ -3881,12 +3882,12 @@ class hn {
|
|
|
3881
3882
|
let r;
|
|
3882
3883
|
e[0] && (this.options.renderSelectedContentCallback ? r = this.options.renderSelectedContentCallback(
|
|
3883
3884
|
e[0],
|
|
3884
|
-
|
|
3885
|
-
) : r = this.getItemDisplayValue(e[0])), !h(this,
|
|
3885
|
+
he(this.presentationMode)
|
|
3886
|
+
) : r = this.getItemDisplayValue(e[0])), !h(this, N) && t > 0 && e.length > 0 ? this.input.value = r : h(this, N) || (this.input.value = "");
|
|
3886
3887
|
return;
|
|
3887
3888
|
}
|
|
3888
3889
|
let o = this.options.badgesDisplayMode;
|
|
3889
|
-
if (this.options.badgesThreshold !== null && t > this.options.badgesThreshold && o !== "none" && (o = this.options.badgesThresholdMode || "count"), !h(this,
|
|
3890
|
+
if (this.options.badgesThreshold !== null && t > this.options.badgesThreshold && o !== "none" && (o = this.options.badgesThresholdMode || "count"), !h(this, N))
|
|
3890
3891
|
if (t > 0 && o === "count") {
|
|
3891
3892
|
const r = this.options.getCounterCallback ? this.options.getCounterCallback(t) : `${t} selected`;
|
|
3892
3893
|
this.input.placeholder = r;
|
|
@@ -3943,14 +3944,14 @@ class hn {
|
|
|
3943
3944
|
}
|
|
3944
3945
|
attachEvents() {
|
|
3945
3946
|
this.input.addEventListener("mousedown", (e) => {
|
|
3946
|
-
e.stopPropagation(), h(this,
|
|
3947
|
+
e.stopPropagation(), h(this, N) ? (this.justClosedViaClick = !0, this.close(), setTimeout(() => {
|
|
3947
3948
|
this.justClosedViaClick = !1;
|
|
3948
3949
|
}, 0)) : (this.presentationMode === "fullscreen" && e.preventDefault(), this.open());
|
|
3949
3950
|
}), this.input.addEventListener("focus", () => {
|
|
3950
|
-
!h(this,
|
|
3951
|
+
!h(this, N) && !this.justClosedViaClick && this.open();
|
|
3951
3952
|
}), this.input.addEventListener("input", (e) => {
|
|
3952
3953
|
const t = e.target.value;
|
|
3953
|
-
this.options.isSearchEnabled && !h(this,
|
|
3954
|
+
this.options.isSearchEnabled && !h(this, N) && this.open(), this.handleSearch(t);
|
|
3954
3955
|
}), this.input.addEventListener("keydown", (e) => this.handleKeydown(e)), this.documentClickHandler = (e) => this.handleClickOutside(e), setTimeout(() => {
|
|
3955
3956
|
document.addEventListener("click", this.documentClickHandler);
|
|
3956
3957
|
}, 0), this.overlayCoord = Xi(() => this.close(), this.options.overlayGroup || void 0), this.documentKeydownHandler = (e) => {
|
|
@@ -4046,10 +4047,10 @@ class hn {
|
|
|
4046
4047
|
const i = await this.options.searchCallback(t, o.signal);
|
|
4047
4048
|
if (o.signal.aborted || this.searchTerm !== e) return;
|
|
4048
4049
|
const r = i || [];
|
|
4049
|
-
this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(r) : this.filteredOptions = [...r], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), W.debug(`[${this.instanceId}] Loaded ${r.length} results`);
|
|
4050
|
+
this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(r) : this.filteredOptions = [...r], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), this.repositionDropdown(), W.debug(`[${this.instanceId}] Loaded ${r.length} results`);
|
|
4050
4051
|
} catch (i) {
|
|
4051
4052
|
if (o.signal.aborted) return;
|
|
4052
|
-
W.error(`[${this.instanceId}] Error loading data:`, i), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions] : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
|
|
4053
|
+
W.error(`[${this.instanceId}] Error loading data:`, i), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions] : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown(), this.repositionDropdown();
|
|
4053
4054
|
} finally {
|
|
4054
4055
|
this.searchAbortController === o && (this.searchAbortController = void 0);
|
|
4055
4056
|
}
|
|
@@ -4059,7 +4060,7 @@ class hn {
|
|
|
4059
4060
|
if (!(this.options.keydownCallback && this.options.keydownCallback({
|
|
4060
4061
|
event: e,
|
|
4061
4062
|
key: e.key,
|
|
4062
|
-
isOpen: h(this,
|
|
4063
|
+
isOpen: h(this, N),
|
|
4063
4064
|
presentation: this.presentationMode,
|
|
4064
4065
|
searchTerm: this.searchTerm,
|
|
4065
4066
|
focusedIndex: this.focusedIndex,
|
|
@@ -4068,7 +4069,7 @@ class hn {
|
|
|
4068
4069
|
selectedValues: [...this.selectedValues],
|
|
4069
4070
|
controller: this.getKeyboardController()
|
|
4070
4071
|
}) === !0)) {
|
|
4071
|
-
if (!h(this,
|
|
4072
|
+
if (!h(this, N)) {
|
|
4072
4073
|
(e.key === "Enter" || e.key === "ArrowDown") && (e.preventDefault(), this.open());
|
|
4073
4074
|
return;
|
|
4074
4075
|
}
|
|
@@ -4141,13 +4142,13 @@ class hn {
|
|
|
4141
4142
|
d && this.handleAddNew(d);
|
|
4142
4143
|
} else if (c === "custom") {
|
|
4143
4144
|
const d = parseInt(o.dataset.buttonIndex || "-1"), u = (n = this.options.actionButtons) == null ? void 0 : n[d];
|
|
4144
|
-
u != null && u.onClick && u.onClick(this);
|
|
4145
|
+
u != null && u.onClick && u.onClick(this, this.buildActionContext(u));
|
|
4145
4146
|
}
|
|
4146
4147
|
return;
|
|
4147
4148
|
}
|
|
4148
4149
|
const i = e.target.closest('.ms__group-label[data-group-select="cascade"]');
|
|
4149
4150
|
if (i && i.dataset.group) {
|
|
4150
|
-
e.preventDefault(), R.debug(`[${this.instanceId}] Group header cascade toggle:`, i.dataset.group), this.toggleGroup(i.dataset.group), h(this,
|
|
4151
|
+
e.preventDefault(), R.debug(`[${this.instanceId}] Group header cascade toggle:`, i.dataset.group), this.toggleGroup(i.dataset.group), h(this, N) && this.presentationMode !== "fullscreen" ? this.input.focus() : this.presentationMode === "fullscreen" && ((a = this.fullscreenSearchInput) == null || a.blur());
|
|
4151
4152
|
return;
|
|
4152
4153
|
}
|
|
4153
4154
|
const r = e.target.closest(".ms__option");
|
|
@@ -4159,7 +4160,7 @@ class hn {
|
|
|
4159
4160
|
optionIndex: d,
|
|
4160
4161
|
closeOnSelect: this.options.isCloseOnSelect,
|
|
4161
4162
|
placeholder: this.options.searchPlaceholder
|
|
4162
|
-
}), d >= 0 && (this.focusedIndex = d, this.toggleOption(this.filteredOptions[d]), h(this,
|
|
4163
|
+
}), d >= 0 && (this.focusedIndex = d, this.toggleOption(this.filteredOptions[d]), h(this, N) && this.presentationMode !== "fullscreen" ? this.input.focus() : this.presentationMode === "fullscreen" && ((l = this.fullscreenSearchInput) == null || l.blur()));
|
|
4163
4164
|
}
|
|
4164
4165
|
}
|
|
4165
4166
|
handleBadgeClick(e) {
|
|
@@ -4194,7 +4195,7 @@ class hn {
|
|
|
4194
4195
|
Y.debug(`[${this.instanceId}] Closing selected popover due to click outside`), this.hideSelectedPopover();
|
|
4195
4196
|
return;
|
|
4196
4197
|
}
|
|
4197
|
-
if (!h(this,
|
|
4198
|
+
if (!h(this, N) || this.justOpenedViaClick) return;
|
|
4198
4199
|
const o = t.some(
|
|
4199
4200
|
(r) => r instanceof Node && (this.element.contains(r) || this.dropdown.contains(r) || this.hint && this.hint.contains(r))
|
|
4200
4201
|
);
|
|
@@ -4271,6 +4272,27 @@ class hn {
|
|
|
4271
4272
|
* same private actions the built-in key handling uses, so consumer shortcuts behave identically. */
|
|
4272
4273
|
getKeyboardController() {
|
|
4273
4274
|
return this.keyboardController ? this.keyboardController : (this.keyboardController = {
|
|
4275
|
+
// ── shared MultiSelectController surface (also used by ActionContext) ──
|
|
4276
|
+
getSelected: () => this.getSelected(),
|
|
4277
|
+
getValue: () => this.getValue(),
|
|
4278
|
+
getOptions: () => this.allOptions,
|
|
4279
|
+
setSelected: (e, t) => this.setSelected(e, t),
|
|
4280
|
+
selectAll: () => this.selectAll(),
|
|
4281
|
+
clearAll: () => this.clearAll(),
|
|
4282
|
+
toggle: () => this.toggle(),
|
|
4283
|
+
search: (e) => this.search(e),
|
|
4284
|
+
scrollToValue: (e) => {
|
|
4285
|
+
this.scrollToValue(e);
|
|
4286
|
+
},
|
|
4287
|
+
scrollToGroup: (e) => {
|
|
4288
|
+
this.scrollToGroup(e);
|
|
4289
|
+
},
|
|
4290
|
+
scrollToIndex: (e) => {
|
|
4291
|
+
this.scrollToIndex(e);
|
|
4292
|
+
},
|
|
4293
|
+
showMessage: (e, t) => this.showMessage(e, t),
|
|
4294
|
+
hideMessage: () => this.hideMessage(),
|
|
4295
|
+
// ── keyboard-navigation surface ──
|
|
4274
4296
|
focusNext: () => this.focusNext(),
|
|
4275
4297
|
focusPrevious: () => this.focusPrevious(),
|
|
4276
4298
|
focusFirst: () => this.focusFirst(),
|
|
@@ -4305,6 +4327,35 @@ class hn {
|
|
|
4305
4327
|
clearSearch: () => this.clearSearch()
|
|
4306
4328
|
}, this.keyboardController);
|
|
4307
4329
|
}
|
|
4330
|
+
/**
|
|
4331
|
+
* The host custom element — `this.element` is the internal `.ms` mount (inside the shadow
|
|
4332
|
+
* root), so the host is its root node's `host` when shadowed, else the mount itself. Used as
|
|
4333
|
+
* the {@link ActionContext} escape hatch (and where a wrapper hangs a server bridge).
|
|
4334
|
+
*/
|
|
4335
|
+
hostEl() {
|
|
4336
|
+
const e = this.element.getRootNode();
|
|
4337
|
+
return e instanceof ShadowRoot ? e.host : this.element;
|
|
4338
|
+
}
|
|
4339
|
+
/**
|
|
4340
|
+
* Build the {@link ActionContext} passed (as the additive 2nd arg) to every action-button
|
|
4341
|
+
* callback and the `onClick` event: a snapshot of live state plus the shared controller.
|
|
4342
|
+
*/
|
|
4343
|
+
buildActionContext(e) {
|
|
4344
|
+
const t = this.getSelected();
|
|
4345
|
+
return {
|
|
4346
|
+
button: e,
|
|
4347
|
+
selectedValues: t.map((o) => this.getItemValue(o)),
|
|
4348
|
+
selectedOptions: t,
|
|
4349
|
+
options: this.allOptions,
|
|
4350
|
+
selectedCount: t.length,
|
|
4351
|
+
optionCount: this.allOptions.length,
|
|
4352
|
+
isOpen: this.isOpen,
|
|
4353
|
+
searchTerm: this.searchTerm,
|
|
4354
|
+
controller: this.getKeyboardController(),
|
|
4355
|
+
element: this.hostEl(),
|
|
4356
|
+
...he(this.presentationMode)
|
|
4357
|
+
};
|
|
4358
|
+
}
|
|
4308
4359
|
/** Clear the search box (both the main input and the fullscreen search) and reset the visible
|
|
4309
4360
|
* list. Shared by Escape and the keyboard controller. */
|
|
4310
4361
|
/**
|
|
@@ -4353,7 +4404,7 @@ class hn {
|
|
|
4353
4404
|
*/
|
|
4354
4405
|
scrollToIndex(e, t) {
|
|
4355
4406
|
const o = (t == null ? void 0 : t.block) ?? "start";
|
|
4356
|
-
return h(this,
|
|
4407
|
+
return h(this, N) ? e < 0 || e >= this.filteredOptions.length ? (R.debug(`[${this.instanceId}] scrollToIndex(${e}) → false (out of range, ${this.filteredOptions.length} options)`), !1) : (R.debug(`[${this.instanceId}] scrollToIndex(${e}, block=${o}) — virtual=${!!this.virtualScroll}, mode=${this.presentationMode}`), this.armClickGuard(), this.scrollToRenderedIndex(e, { block: o }), !0) : (R.debug(`[${this.instanceId}] scrollToIndex(${e}) → false (closed)`), !1);
|
|
4357
4408
|
}
|
|
4358
4409
|
/**
|
|
4359
4410
|
* Scroll to the option whose value matches `value` (resolved within the current
|
|
@@ -4373,7 +4424,7 @@ class hn {
|
|
|
4373
4424
|
*/
|
|
4374
4425
|
scrollToGroup(e, t) {
|
|
4375
4426
|
const o = (t == null ? void 0 : t.block) ?? "start";
|
|
4376
|
-
if (!h(this,
|
|
4427
|
+
if (!h(this, N) || this.isTreeMode())
|
|
4377
4428
|
return R.debug(`[${this.instanceId}] scrollToGroup(${e}) → false (${this.isTreeMode() ? "tree mode" : "closed"})`), !1;
|
|
4378
4429
|
if (this.armClickGuard(), !this.virtualScroll) {
|
|
4379
4430
|
const r = this.dropdown.querySelector(
|
|
@@ -4392,7 +4443,7 @@ class hn {
|
|
|
4392
4443
|
* (post-open virtual init / fullscreen sheet build), then retries once.
|
|
4393
4444
|
*/
|
|
4394
4445
|
scrollToRenderedIndex(e, t, o = !1) {
|
|
4395
|
-
if (!h(this,
|
|
4446
|
+
if (!h(this, N) || e < 0 || e >= this.filteredOptions.length) return;
|
|
4396
4447
|
if (this.virtualScroll) {
|
|
4397
4448
|
const r = (t == null ? void 0 : t.block) === "center" ? "center" : (t == null ? void 0 : t.block) === "nearest" ? "nearest" : "start";
|
|
4398
4449
|
this.virtualScroll.scrollToIndex(e, r), R.debug(`[${this.instanceId}] scrollToRenderedIndex(${e}) via virtual (block=${r})`);
|
|
@@ -4598,20 +4649,20 @@ class hn {
|
|
|
4598
4649
|
/** Open the dropdown (no-op if already open, or if there is nothing to show). */
|
|
4599
4650
|
open() {
|
|
4600
4651
|
var e;
|
|
4601
|
-
Y.debug(`[${this.instanceId}] open() called`, { isOpen: h(this,
|
|
4652
|
+
Y.debug(`[${this.instanceId}] open() called`, { isOpen: h(this, N) }), this.armClickGuard(), !h(this, N) && (this.hideMessage(), I(this, N, !0), this.element.classList.add("ms--open"), this.dropdown.classList.add("ms__dropdown--visible"), Y.info(`[${this.instanceId}] Dropdown opened`), this.input.placeholder = this.getPlaceholderText(), !this.options.isMultipleEnabled && this.options.isSearchEnabled && (this.input.value = this.searchTerm), this.options.searchCallback && this.options.isKeepOptionsOnSearch && !this.searchTerm && (this.filteredOptions = [...this.allOptions], Y.debug(`[${this.instanceId}] Showing ${this.allOptions.length} initial options on open`)), this.presentationMode === "fullscreen" && this.enterFullscreen(), this.renderDropdown(), this.presentationMode !== "fullscreen" && this.positionDropdown(), this.dropdown.addEventListener("scroll", this.onDropdownScroll, !0), this.hint && this.presentationMode === "floating" && (this.hint.classList.add("ms__hint--visible"), this.positionHint()), (e = this.overlayCoord) == null || e.activate());
|
|
4602
4653
|
}
|
|
4603
4654
|
/** Close the dropdown (no-op if already closed). */
|
|
4604
4655
|
close() {
|
|
4605
4656
|
var e;
|
|
4606
|
-
Y.debug(`[${this.instanceId}] close() called`, { isOpen: h(this,
|
|
4657
|
+
Y.debug(`[${this.instanceId}] close() called`, { isOpen: h(this, N) }), h(this, N) && (I(this, N, !1), this.element.classList.remove("ms--open"), this.dropdown.classList.remove("ms__dropdown--visible"), this.hint && this.hint.classList.remove("ms__hint--visible"), this.options.shouldKeepSearchOnClose || (this.searchTerm = "", (this.options.isMultipleEnabled || this.options.isSearchEnabled) && (this.input.value = ""), this.resetVisibleToAll()), this.focusedIndex = -1, this.dropdown.removeEventListener("scroll", this.onDropdownScroll, !0), this.destroyAllOptionTooltips(), this.hideLabelReveal(), this.hideMessage(), this.renderBadges(), this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.hintCleanup && (this.hintCleanup(), this.hintCleanup = null), this.exitFullscreen(), this.dropdownPlacement = null, (e = this.overlayCoord) == null || e.deactivate(), Y.debug(`[${this.instanceId}] Dropdown closed`));
|
|
4607
4658
|
}
|
|
4608
4659
|
/** Toggle the dropdown open/closed. */
|
|
4609
4660
|
toggle() {
|
|
4610
|
-
h(this,
|
|
4661
|
+
h(this, N) ? this.close() : this.open();
|
|
4611
4662
|
}
|
|
4612
4663
|
/** Whether the dropdown is currently open. Assigning opens/closes it. */
|
|
4613
4664
|
get isOpen() {
|
|
4614
|
-
return h(this,
|
|
4665
|
+
return h(this, N);
|
|
4615
4666
|
}
|
|
4616
4667
|
set isOpen(e) {
|
|
4617
4668
|
e ? this.open() : this.close();
|
|
@@ -4704,6 +4755,24 @@ class hn {
|
|
|
4704
4755
|
An ancestor of <web-multiselect> establishes a fixed-positioning containing block (transform / perspective / filter / backdrop-filter / will-change). Fix on your side: move the component out of that ancestor's subtree, OR remove/replace that property. If neither is acceptable, please file an issue at https://github.com/keenmate/web-multiselect/issues with the ancestor's computed CSS.`
|
|
4705
4756
|
);
|
|
4706
4757
|
}
|
|
4758
|
+
/**
|
|
4759
|
+
* Re-anchor an already-open floating dropdown from scratch so a frozen placement
|
|
4760
|
+
* is re-evaluated against the panel's CURRENT height.
|
|
4761
|
+
*
|
|
4762
|
+
* Why it's needed: an async `searchCallback` opens the panel while it's still
|
|
4763
|
+
* empty / showing the loader — short, so it fits below the input and (with the
|
|
4764
|
+
* default `lock-placement`) freezes to `bottom`. When results arrive the panel
|
|
4765
|
+
* grows to full height, but the frozen placement pins it below the input, so it
|
|
4766
|
+
* overflows the viewport bottom instead of flipping above into the free space.
|
|
4767
|
+
* `renderDropdown()` only rewrites the inner HTML; it never re-anchors. Tearing
|
|
4768
|
+
* down and recreating the anchor re-runs core's flip-on-first-compute against the
|
|
4769
|
+
* new height (picking the side that fits), then re-freezes — so `lock-placement`
|
|
4770
|
+
* still holds for the common case (panels that open already-populated, e.g. local
|
|
4771
|
+
* filtering, never hit this path). No-op unless a floating dropdown is open.
|
|
4772
|
+
*/
|
|
4773
|
+
repositionDropdown() {
|
|
4774
|
+
!h(this, N) || this.presentationMode === "fullscreen" || (this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.dropdownPlacement = null, this.positionDropdown());
|
|
4775
|
+
}
|
|
4707
4776
|
positionDropdown() {
|
|
4708
4777
|
this.presentationMode !== "fullscreen" && (this.dropdownCleanup = this.anchorFloatingPanel(this.dropdown, {
|
|
4709
4778
|
getPlacement: () => this.dropdownPlacement,
|
|
@@ -4713,7 +4782,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
4713
4782
|
isLocked: () => !!this.options.isPlacementLocked,
|
|
4714
4783
|
applyMaxWidth: !0,
|
|
4715
4784
|
afterPosition: () => {
|
|
4716
|
-
this.hint && h(this,
|
|
4785
|
+
this.hint && h(this, N) && this.positionHint();
|
|
4717
4786
|
}
|
|
4718
4787
|
}));
|
|
4719
4788
|
}
|
|
@@ -4727,7 +4796,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
4727
4796
|
* resize can swap presentation without a reopen.
|
|
4728
4797
|
*/
|
|
4729
4798
|
setPresentation(e) {
|
|
4730
|
-
e !== this.presentationMode && (this.presentationMode = e, h(this,
|
|
4799
|
+
e !== this.presentationMode && (this.presentationMode = e, h(this, N) ? e === "fullscreen" ? (this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.hintCleanup && (this.hintCleanup(), this.hintCleanup = null), this.hint && this.hint.classList.remove("ms__hint--visible"), this.dropdownPlacement = null, this.enterFullscreen(), this.renderDropdown()) : (this.exitFullscreen(), this.renderDropdown(), this.positionDropdown(), this.hint && (this.hint.classList.add("ms__hint--visible"), this.positionHint())) : this.showSelectedPopover && (e === "fullscreen" ? (this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null), this.selectedPopoverPlacement = null, this.clearFloatingInlineGeometry(this.selectedPopover), this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll()) : (this.selectedPopover.classList.remove("ms__selected-popover--fullscreen"), this.unlockBodyScroll(), this.positionSelectedPopover())));
|
|
4731
4800
|
}
|
|
4732
4801
|
/**
|
|
4733
4802
|
* Lock page scroll behind a fullscreen overlay via the core ref-counted helper.
|
|
@@ -4855,7 +4924,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
4855
4924
|
/** Back gesture/button fired: our pushed entry is already gone, so just close the
|
|
4856
4925
|
* sheet — WITHOUT popping history again (popOverlayHistory becomes a no-op). */
|
|
4857
4926
|
handleOverlayPopstate() {
|
|
4858
|
-
this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), h(this,
|
|
4927
|
+
this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), h(this, N) ? this.close() : this.showSelectedPopover && this.hideSelectedPopover());
|
|
4859
4928
|
}
|
|
4860
4929
|
/** Programmatic close: remove the listener and pop the entry we pushed (so the
|
|
4861
4930
|
* history stack returns to its pre-open state). No-op if a Back gesture already
|
|
@@ -4994,8 +5063,9 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
4994
5063
|
const e = this.element.dataset.initialValues;
|
|
4995
5064
|
if (e)
|
|
4996
5065
|
try {
|
|
4997
|
-
JSON.parse(e)
|
|
4998
|
-
|
|
5066
|
+
const t = JSON.parse(e);
|
|
5067
|
+
(this.options.isMultipleEnabled === !1 ? t.slice(0, 1) : t).forEach((i) => {
|
|
5068
|
+
this.selectedValues.add(String(i));
|
|
4999
5069
|
}), this.reconcileSelectedOptions(), this.renderBadges();
|
|
5000
5070
|
} catch (t) {
|
|
5001
5071
|
W.error(`[${this.instanceId}] Failed to parse initial values:`, t);
|
|
@@ -5024,7 +5094,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5024
5094
|
Y.debug(`[${this.instanceId}] showPopover() suppressed (isSelectedPopoverEnabled=false)`);
|
|
5025
5095
|
return;
|
|
5026
5096
|
}
|
|
5027
|
-
h(this,
|
|
5097
|
+
h(this, N) && this.close(), this.hideMessage(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ms__selected-popover--visible");
|
|
5028
5098
|
const e = this.options.virtualScrollThreshold ?? 100;
|
|
5029
5099
|
this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.presentationMode === "fullscreen" ? (this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll(), this.clampDocumentOverflowX(), this.pushOverlayHistory()) : this.positionSelectedPopover();
|
|
5030
5100
|
}
|
|
@@ -5067,7 +5137,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5067
5137
|
if (!this.selectedPopoverContainer) return;
|
|
5068
5138
|
const o = this.scaledBadgeHeight(), i = Math.round(4 * this.fullscreenScale()), r = o + i, n = this.options.virtualScrollBuffer ?? 10;
|
|
5069
5139
|
requestAnimationFrame(() => {
|
|
5070
|
-
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new
|
|
5140
|
+
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new Gs({
|
|
5071
5141
|
container: this.selectedPopoverContainer,
|
|
5072
5142
|
itemHeight: r,
|
|
5073
5143
|
items: e,
|
|
@@ -5097,6 +5167,18 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5097
5167
|
classSuffix(e) {
|
|
5098
5168
|
return (e == null ? [] : Array.isArray(e) ? e : [e]).filter(Boolean).join(" ");
|
|
5099
5169
|
}
|
|
5170
|
+
/**
|
|
5171
|
+
* Build the {@link BadgeContentRenderContext} handed to the sibling `get*` callbacks
|
|
5172
|
+
* (badge display / class / tooltip), so they see the same context the `render*` badge
|
|
5173
|
+
* callbacks get: `displayMode`, `isInPopover`, plus the shared presentation fields.
|
|
5174
|
+
*/
|
|
5175
|
+
badgeRenderContext(e) {
|
|
5176
|
+
return {
|
|
5177
|
+
displayMode: this.options.badgesDisplayMode ?? "badges",
|
|
5178
|
+
isInPopover: e,
|
|
5179
|
+
...he(this.presentationMode)
|
|
5180
|
+
};
|
|
5181
|
+
}
|
|
5100
5182
|
/**
|
|
5101
5183
|
* Render a removable badge for a selected option (used by the badges/partial display modes
|
|
5102
5184
|
* and by the selected-items popover).
|
|
@@ -5109,7 +5191,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5109
5191
|
renderBadgeHTML(e, t) {
|
|
5110
5192
|
const o = this.getItemValue(e), i = {
|
|
5111
5193
|
...t,
|
|
5112
|
-
...
|
|
5194
|
+
...he(this.presentationMode)
|
|
5113
5195
|
};
|
|
5114
5196
|
if (!t.isInPopover && this.options.renderBadgeCallback) {
|
|
5115
5197
|
const d = this.toHtml(this.options.renderBadgeCallback(e, i));
|
|
@@ -5117,7 +5199,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5117
5199
|
const u = this.options.getBadgeClassCallback;
|
|
5118
5200
|
let f = "ms__badge ms__badge--custom";
|
|
5119
5201
|
if (u) {
|
|
5120
|
-
const p = this.classSuffix(u(e));
|
|
5202
|
+
const p = this.classSuffix(u(e, i));
|
|
5121
5203
|
p && (f += " " + p);
|
|
5122
5204
|
}
|
|
5123
5205
|
return `<div class="${f}" data-value="${o}">${d}</div>`;
|
|
@@ -5125,14 +5207,14 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5125
5207
|
}
|
|
5126
5208
|
let r;
|
|
5127
5209
|
const n = t.isInPopover ? this.options.renderSelectedItemContentCallback : void 0;
|
|
5128
|
-
n ? r = this.toHtml(n(e, i)) : this.options.renderBadgeContentCallback ? r = this.toHtml(this.options.renderBadgeContentCallback(e, i)) : r = this.getItemBadgeDisplayValue(e);
|
|
5210
|
+
n ? r = this.toHtml(n(e, i)) : this.options.renderBadgeContentCallback ? r = this.toHtml(this.options.renderBadgeContentCallback(e, i)) : r = this.getItemBadgeDisplayValue(e, i);
|
|
5129
5211
|
const a = t.isInPopover ? this.options.getSelectedItemClassCallback || this.options.getBadgeClassCallback : this.options.getBadgeClassCallback;
|
|
5130
5212
|
let l = "ms__badge";
|
|
5131
5213
|
if (a) {
|
|
5132
|
-
const d = this.classSuffix(a(e));
|
|
5214
|
+
const d = this.classSuffix(a(e, i));
|
|
5133
5215
|
d && (l += " " + d);
|
|
5134
5216
|
}
|
|
5135
|
-
const c = this.getItemBadgeDisplayValue(e);
|
|
5217
|
+
const c = this.getItemBadgeDisplayValue(e, i);
|
|
5136
5218
|
return `
|
|
5137
5219
|
<div class="${l}">
|
|
5138
5220
|
<span class="ms__badge-text">${r}</span>
|
|
@@ -5219,7 +5301,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5219
5301
|
if (t !== o) return !1;
|
|
5220
5302
|
Object.assign(this.options, e);
|
|
5221
5303
|
const i = "pathMember" in e || "getPathCallback" in e || "parentPathMember" in e || "levelMember" in e || "hasChildrenMember" in e || "treePathSeparator" in e || "isTreeEnabled" in e || "isSelectableMember" in e || "getIsSelectableCallback" in e;
|
|
5222
|
-
if ("options" in e && e.options !== void 0 ? (this.allOptions = e.options, this.reconcileSelectedOptions(), this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]) : i && (this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]), ("checkboxMode" in e || "cascadeSelectPolicy" in e) && !i && !("options" in e) && this.isTreeMode() && (this.cascadeIndex = this.isCascadeMode() ?
|
|
5304
|
+
if ("options" in e && e.options !== void 0 ? (this.allOptions = e.options, this.reconcileSelectedOptions(), this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]) : i && (this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]), ("checkboxMode" in e || "cascadeSelectPolicy" in e) && !i && !("options" in e) && this.isTreeMode() && (this.cascadeIndex = this.isCascadeMode() ? Js(this.tree, (a) => String(this.getItemValue(a))) : null, this.isCascadeMode() && this.cascadeIndex)) {
|
|
5223
5305
|
this.cascadeCheckedAtoms = Qe(this.cascadeIndex, this.selectedValues);
|
|
5224
5306
|
const a = Zt(
|
|
5225
5307
|
this.cascadeIndex,
|
|
@@ -5247,7 +5329,7 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5247
5329
|
this.effectiveBadgesPosition === "left" || this.effectiveBadgesPosition === "right"
|
|
5248
5330
|
);
|
|
5249
5331
|
}
|
|
5250
|
-
return h(this,
|
|
5332
|
+
return h(this, N) || (this.input.placeholder = this.getPlaceholderText()), "searchInputMode" in e && (this.input.readOnly = this.options.searchInputMode === "readonly", this.input.style.visibility = this.options.searchInputMode === "hidden" ? "hidden" : ""), "searchHint" in e && this.hint && (this.hint.textContent = this.options.searchHint || ""), this.renderDropdown(), this.renderBadges(), this.updateHiddenInput(), !0;
|
|
5251
5333
|
}
|
|
5252
5334
|
get selectedItem() {
|
|
5253
5335
|
return this.selectedOptions.size === 0 ? null : Array.from(this.selectedOptions.values())[0];
|
|
@@ -5302,59 +5384,59 @@ An ancestor of <web-multiselect> establishes a fixed-positioning containing bloc
|
|
|
5302
5384
|
this.tooltips.forEach((e) => e.destroy()), this.tooltips.clear();
|
|
5303
5385
|
}
|
|
5304
5386
|
/** Build the badge-text tooltip content (callback overrides; default = displayValue + optional subtitle on next line). */
|
|
5305
|
-
buildBadgeTooltipContent(e) {
|
|
5306
|
-
if (this.options.getBadgeTooltipCallback) return this.options.getBadgeTooltipCallback(e);
|
|
5307
|
-
const
|
|
5308
|
-
return
|
|
5309
|
-
${
|
|
5387
|
+
buildBadgeTooltipContent(e, t) {
|
|
5388
|
+
if (this.options.getBadgeTooltipCallback) return this.options.getBadgeTooltipCallback(e, t);
|
|
5389
|
+
const o = this.getItemBadgeDisplayValue(e, t), i = this.getItemSubtitle(e);
|
|
5390
|
+
return i ? `${o}
|
|
5391
|
+
${i}` : o;
|
|
5310
5392
|
}
|
|
5311
5393
|
/** Build the remove-button tooltip text (callback > format string with {0} > "Remove {name}"). */
|
|
5312
|
-
buildRemoveButtonTooltipText(e, t) {
|
|
5313
|
-
return t && this.options.getRemoveButtonTooltipCallback ? this.options.getRemoveButtonTooltipCallback(t) : this.options.removeButtonTooltipText ? this.options.removeButtonTooltipText.replace("{0}", e) : `Remove ${e}`;
|
|
5394
|
+
buildRemoveButtonTooltipText(e, t, o) {
|
|
5395
|
+
return t && this.options.getRemoveButtonTooltipCallback ? this.options.getRemoveButtonTooltipCallback(t, o) : this.options.removeButtonTooltipText ? this.options.removeButtonTooltipText.replace("{0}", e) : `Remove ${e}`;
|
|
5314
5396
|
}
|
|
5315
5397
|
attachBadgeTooltips(e) {
|
|
5316
5398
|
if (!this.options.isBadgeTooltipsEnabled) return;
|
|
5317
|
-
const t = !!e, o = e || this.badgesContainer,
|
|
5318
|
-
if (
|
|
5319
|
-
const
|
|
5320
|
-
if (!
|
|
5321
|
-
const
|
|
5322
|
-
if (!
|
|
5323
|
-
const
|
|
5324
|
-
|
|
5325
|
-
id:
|
|
5326
|
-
trigger:
|
|
5327
|
-
content: this.buildBadgeTooltipContent(
|
|
5399
|
+
const t = !!e, o = this.badgeRenderContext(t), i = e || this.badgesContainer, r = t ? "popover-" : "";
|
|
5400
|
+
if (i.querySelectorAll(".ms__badge:not(.ms__badge--more)").forEach((a) => {
|
|
5401
|
+
const l = a.querySelector(".ms__badge-remove");
|
|
5402
|
+
if (!l) return;
|
|
5403
|
+
const c = l.dataset.value, d = this.selectedOptions.get(c);
|
|
5404
|
+
if (!d) return;
|
|
5405
|
+
const u = `${r}${c}`, f = `${r}${c}-remove`, p = a.querySelector(".ms__badge-text");
|
|
5406
|
+
p && this.spawnTooltip({
|
|
5407
|
+
id: u,
|
|
5408
|
+
trigger: p,
|
|
5409
|
+
content: this.buildBadgeTooltipContent(d, o)
|
|
5328
5410
|
});
|
|
5329
|
-
const
|
|
5411
|
+
const g = this.getItemBadgeDisplayValue(d, o);
|
|
5330
5412
|
this.spawnTooltip({
|
|
5331
|
-
id:
|
|
5332
|
-
trigger:
|
|
5333
|
-
content: this.buildRemoveButtonTooltipText(
|
|
5413
|
+
id: f,
|
|
5414
|
+
trigger: l,
|
|
5415
|
+
content: this.buildRemoveButtonTooltipText(g, d, o),
|
|
5334
5416
|
// Keep parent badge tooltip from overlapping the remove-button tooltip.
|
|
5335
5417
|
onBeforeShow: () => {
|
|
5336
|
-
var
|
|
5337
|
-
return (
|
|
5418
|
+
var w;
|
|
5419
|
+
return (w = this.tooltips.get(u)) == null ? void 0 : w.hide();
|
|
5338
5420
|
}
|
|
5339
5421
|
});
|
|
5340
5422
|
}), !t) {
|
|
5341
|
-
const
|
|
5342
|
-
if (
|
|
5343
|
-
const
|
|
5423
|
+
const a = this.badgesContainer.querySelector(".ms__badge--more"), l = a == null ? void 0 : a.querySelector(".ms__badge-remove");
|
|
5424
|
+
if (l && l.dataset.action === "remove-hidden") {
|
|
5425
|
+
const c = this.options.badgesMaxVisible || 3, d = this.selectedOptions.size - c;
|
|
5344
5426
|
this.spawnTooltip({
|
|
5345
5427
|
id: "more-badge-remove",
|
|
5346
|
-
trigger:
|
|
5347
|
-
content: this.buildRemoveButtonTooltipText(`${
|
|
5428
|
+
trigger: l,
|
|
5429
|
+
content: this.buildRemoveButtonTooltipText(`${d} hidden items`)
|
|
5348
5430
|
});
|
|
5349
5431
|
}
|
|
5350
5432
|
}
|
|
5351
5433
|
}
|
|
5352
5434
|
/** Build the option tooltip content (callback overrides; default = displayValue + optional subtitle on next line). */
|
|
5353
|
-
buildOptionTooltipContent(e) {
|
|
5354
|
-
if (this.options.getOptionTooltipCallback) return this.options.getOptionTooltipCallback(e);
|
|
5355
|
-
const
|
|
5356
|
-
return
|
|
5357
|
-
${
|
|
5435
|
+
buildOptionTooltipContent(e, t) {
|
|
5436
|
+
if (this.options.getOptionTooltipCallback) return this.options.getOptionTooltipCallback(e, t);
|
|
5437
|
+
const o = this.getItemDisplayValue(e), i = this.getItemSubtitle(e);
|
|
5438
|
+
return i ? `${o}
|
|
5439
|
+
${i}` : o;
|
|
5358
5440
|
}
|
|
5359
5441
|
/**
|
|
5360
5442
|
* Attach hover tooltips to the currently rendered dropdown options. Prunes existing option
|
|
@@ -5369,11 +5451,19 @@ ${o}` : t;
|
|
|
5369
5451
|
if (i < 0) return;
|
|
5370
5452
|
const r = this.filteredOptions[i];
|
|
5371
5453
|
if (!r) return;
|
|
5372
|
-
const n = this.
|
|
5373
|
-
|
|
5454
|
+
const n = this.getItemValue(r), a = {
|
|
5455
|
+
index: i,
|
|
5456
|
+
isSelected: this.selectedValues.has(String(n)),
|
|
5457
|
+
isFocused: i === this.focusedIndex,
|
|
5458
|
+
isMatched: this.matchingIndices.has(i),
|
|
5459
|
+
isDisabled: this.getItemDisabled(r),
|
|
5460
|
+
...he(this.presentationMode),
|
|
5461
|
+
isTreeNode: !1
|
|
5462
|
+
}, l = this.buildOptionTooltipContent(r, a);
|
|
5463
|
+
l && this.spawnTooltip({
|
|
5374
5464
|
id: `option-${i}`,
|
|
5375
5465
|
trigger: o,
|
|
5376
|
-
content:
|
|
5466
|
+
content: l,
|
|
5377
5467
|
// Default to `top-start` (anchored to the row's start edge) so the tooltip doesn't
|
|
5378
5468
|
// center on a full-width row. Falls through to the badge settings for delay/offset.
|
|
5379
5469
|
placement: this.options.optionTooltipPlacement ?? "top-start",
|
|
@@ -5459,7 +5549,7 @@ ${o}` : t;
|
|
|
5459
5549
|
const o = (t == null ? void 0 : t.variant) ?? "info", i = (t == null ? void 0 : t.duration) ?? 3e3, r = o === "error" || o === "warning", n = document.createElement("div");
|
|
5460
5550
|
n.className = `ms__message ms__message--${o}`, n.setAttribute("role", r ? "alert" : "status"), n.setAttribute("aria-live", r ? "assertive" : "polite"), typeof e == "string" ? n.textContent = e : n.appendChild(e), n.addEventListener("click", () => this.hideMessage());
|
|
5461
5551
|
const a = this.element.getRootNode(), l = a instanceof ShadowRoot ? a : null;
|
|
5462
|
-
if ((this.options.container ?? l ?? document.body).appendChild(n), this.messageEl = n, this.presentationMode === "fullscreen" && (h(this,
|
|
5552
|
+
if ((this.options.container ?? l ?? document.body).appendChild(n), this.messageEl = n, this.presentationMode === "fullscreen" && (h(this, N) || this.showSelectedPopover))
|
|
5463
5553
|
n.classList.add("ms__message--fullscreen");
|
|
5464
5554
|
else {
|
|
5465
5555
|
const u = ot(n, this.inputWrapper, {
|
|
@@ -5506,7 +5596,7 @@ ${o}` : t;
|
|
|
5506
5596
|
if (!i) return;
|
|
5507
5597
|
const r = parseInt(o.dataset.buttonIndex || "-1"), n = r >= 0 ? (c = this.options.actionButtons) == null ? void 0 : c[r] : (d = this.options.actionButtons) == null ? void 0 : d.find((u) => u.action === i);
|
|
5508
5598
|
if (!n) return;
|
|
5509
|
-
const a = n.getTooltipCallback ? n.getTooltipCallback(this) : n.tooltip;
|
|
5599
|
+
const a = n.getTooltipCallback ? n.getTooltipCallback(this, this.buildActionContext(n)) : n.tooltip;
|
|
5510
5600
|
if (!a) return;
|
|
5511
5601
|
const l = `action-${r >= 0 ? r : i}`;
|
|
5512
5602
|
this.spawnTooltip({ id: l, trigger: o, content: a });
|
|
@@ -5539,7 +5629,7 @@ ${o}` : t;
|
|
|
5539
5629
|
this.destroyAllTooltips(), this.hideLabelReveal(), this.hideMessage(), this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0), this.abortInFlightSearch(), this.dropdownCleanup && this.dropdownCleanup(), this.hintCleanup && this.hintCleanup(), this.selectedPopoverCleanup && this.selectedPopoverCleanup(), this.overlayHistoryActive && (this.overlayHistoryActive = !1, typeof window < "u" && window.removeEventListener("popstate", this.onOverlayPopstate)), this.exitFullscreen(), this.documentClickHandler && (document.removeEventListener("click", this.documentClickHandler), this.documentClickHandler = null), this.documentKeydownHandler && (document.removeEventListener("keydown", this.documentKeydownHandler), this.documentKeydownHandler = null), (e = this.overlayCoord) == null || e.dispose(), this.overlayCoord = null, this.virtualScroll && (this.virtualScroll.destroy(), this.virtualScroll = null), this.dropdown && this.dropdown.remove(), this.hint && this.hint.remove(), this.selectedPopover && this.selectedPopover.remove(), this.element.innerHTML = "", this.element.classList.remove("ms", "ms--open", "ms--no-checkboxes"), wt.info(`[${this.instanceId}] Component destroyed`);
|
|
5540
5630
|
}
|
|
5541
5631
|
}
|
|
5542
|
-
|
|
5632
|
+
N = new WeakMap();
|
|
5543
5633
|
function un() {
|
|
5544
5634
|
return {
|
|
5545
5635
|
fromAttribute(s) {
|
|
@@ -5561,11 +5651,11 @@ function un() {
|
|
|
5561
5651
|
}
|
|
5562
5652
|
};
|
|
5563
5653
|
}
|
|
5564
|
-
const mn = ["json", "csv", "plain"],
|
|
5654
|
+
const mn = ["json", "csv", "plain"], Ys = ",", Zs = `
|
|
5565
5655
|
`;
|
|
5566
5656
|
function pn(s, e, t = {}) {
|
|
5567
5657
|
if (s == null || s.trim() === "") return { options: [] };
|
|
5568
|
-
const o =
|
|
5658
|
+
const o = Qs(t.splitter ?? Ys) || Ys, i = Qs(t.rowSplitter ?? Zs) || Zs;
|
|
5569
5659
|
switch (e) {
|
|
5570
5660
|
case "csv":
|
|
5571
5661
|
return bn(s, o, i);
|
|
@@ -5576,7 +5666,7 @@ function pn(s, e, t = {}) {
|
|
|
5576
5666
|
return fn(s);
|
|
5577
5667
|
}
|
|
5578
5668
|
}
|
|
5579
|
-
function
|
|
5669
|
+
function Qs(s) {
|
|
5580
5670
|
return s.replace(
|
|
5581
5671
|
/\\[ntr\\]/g,
|
|
5582
5672
|
(e) => e === "\\n" ? `
|
|
@@ -5620,7 +5710,7 @@ function vn(s, e, t) {
|
|
|
5620
5710
|
}
|
|
5621
5711
|
return i.push(r), o.push(i), o;
|
|
5622
5712
|
}
|
|
5623
|
-
const Lo = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: var(--base-rem, 10px);font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#cbd5e1, #52525b));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-toggle-icon-size: calc(1.6 * var(--ms-rem));--ms-toggle-rotate-closed: 90deg;--ms-toggle-rotate-open: -90deg;--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: color-mix(in srgb, var(--ms-badge-bg) 88%, var(--ms-badge-text-color) 12%);--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: color-mix(in srgb, var(--ms-badge-text-bg) 88%, var(--ms-badge-text-color) 12%);--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: color-mix(in srgb, var(--ms-text-color-1) 10%, transparent);--ms-badge-counter-text-bg-hover: color-mix(in srgb, var(--ms-text-color-1) 16%, transparent);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-text-color-hover: var(--ms-text-color-1);--ms-badge-counter-remove-bg: color-mix(in srgb, var(--ms-text-color-1) 10%, transparent);--ms-badge-counter-remove-bg-hover: color-mix(in srgb, var(--ms-text-color-1) 16%, transparent);--ms-badge-counter-remove-color: var(--ms-text-color-3);--ms-badge-counter-remove-color-hover: var(--ms-text-color-1);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-gap: calc(.6 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-rotate-180: 180deg;--ms-input-clear-size: calc(2.4 * var(--ms-rem));--ms-input-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-input-clear-color: var(--base-input-clear-color, var(--ms-text-secondary));--ms-input-clear-bg-hover: var(--base-input-clear-bg-hover, var(--ms-option-bg-matched, transparent));--ms-input-clear-border-radius: var(--ms-border-radius);--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-inner-border-radius: max(0px, calc(var(--ms-dropdown-border-radius) - 1px));--ms-dropdown-box-shadow: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-mode-toggle-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-icon-size: calc(1.5 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-gap: var(--ms-fullscreen-header-gap);--ms-fullscreen-mode-toggle-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-mode-toggle-bg: transparent;--ms-fullscreen-mode-toggle-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: color-mix(in srgb, var(--ms-accent-color) 22%, transparent);--ms-fullscreen-nav-btn-icon: var(--ms-icon-chevron);--ms-icon-chevron: var(--base-icon-chevron, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m9 18 6-6-6-6'/></svg>"));--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: 0;--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-add-new-padding: var(--ms-option-padding);--ms-add-new-gap: var(--ms-option-gap);--ms-add-new-font-size: var(--ms-empty-font-size);--ms-add-new-color: var(--ms-accent-color);--ms-add-new-color-hover: var(--ms-accent-color);--ms-add-new-bg-hover: var(--ms-option-bg-hover);--ms-add-new-icon-size: calc(1.6 * var(--ms-rem));--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-remove: var(--base-icon-remove, var(--base-icon-close, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M18 6 6 18'/><path d='m6 6 12 12'/></svg>")));--ms-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-icon-search: var(--base-icon-search, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>"));--ms-icon-filter: var(--base-icon-filter, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polygon points='22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3'/></svg>"));--ms-icon-check: var(--base-icon-check, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>"));--ms-icon-indeterminate: var(--base-icon-indeterminate, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/></svg>"));--ms-icon-check-size: var(--base-icon-check-size, 68%);--ms-icon-add-new: var(--base-icon-plus, var(--base-icon-add, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/><path d='M12 5v14'/></svg>")));--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-count-clear-color-hover: var(--ms-text-color-on-accent);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--base-icon-clear, var(--ms-icon-remove));--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--ms-z-index-popover: 10000;--ms-selected-popover-width: var(--ms-input-current-width);--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-selected-popover-close-color-hover: var(--ms-text-color-on-accent);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: var(--base-ease-standard, cubic-bezier(.4, 0, .2, 1));--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}:host([defer]:not([is-ready])){display:block;min-height:calc(3.5 * var(--ms-rem))}:host{-webkit-tap-highlight-color:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{box-sizing:border-box;position:relative;display:flex;align-items:center;gap:var(--ms-input-gap);height:var(--ms-input-height);padding-inline:var(--ms-input-padding-h);background:var(--ms-input-bg);color:var(--ms-input-color);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input-wrapper:hover:not(:focus-within){border:var(--ms-input-border-hover)}.ms__input-wrapper:focus-within{border:var(--ms-input-border-focus)}.ms__input{flex:1 1 auto;min-width:0;box-sizing:border-box;font-family:inherit;height:100%;padding:0;border:none;background:transparent;font-size:var(--ms-input-font-size);color:var(--ms-input-color);cursor:pointer;outline:none}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-placeholder-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{flex:0 0 auto;display:block;width:var(--ms-toggle-icon-size);height:var(--ms-toggle-icon-size);color:var(--ms-toggle-icon-color);cursor:pointer}.ms__toggle:before{content:"";display:block;width:100%;height:100%;background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat;transform:rotate(var(--ms-toggle-rotate-closed, 90deg));transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{color:var(--ms-toggle-icon-color-open)}.ms--open .ms__toggle:before{transform:rotate(var(--ms-toggle-rotate-open, -90deg))}.ms__counter{flex:0 0 auto;padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:scale(var(--ms-transform-scale-hover))}.ms__input-clear{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-input-clear-size);height:var(--ms-input-clear-size);padding:0;color:var(--ms-input-clear-color);background:transparent;border:none;border-radius:var(--ms-input-clear-border-radius);cursor:pointer;transition:background var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input-clear:hover{background:var(--ms-input-clear-bg-hover)}.ms__input-clear:before{content:"";display:block;width:var(--ms-input-clear-icon-size);height:var(--ms-input-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}@media (hover: hover){.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;box-sizing:border-box;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);width:var(--ms-dropdown-width);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;--ms-dropdown-inner-border-radius: 0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-header{align-content:flex-start}.ms__fullscreen-header>.ms__fullscreen-search-wrapper{min-height:var(--ms-fullscreen-header-min-height)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-fullscreen-nav-btn-icon) center / contain no-repeat;mask:var(--ms-fullscreen-nav-btn-icon) center / contain no-repeat;transform:rotate(-90deg)}.ms__fullscreen-nav-btn--next:before{transform:rotate(90deg)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 0;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex;align-items:center}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-mode-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-mode-toggle-size);height:var(--ms-fullscreen-mode-toggle-size);margin-inline-end:var(--ms-fullscreen-mode-toggle-gap);margin-inline-start:calc((var(--ms-fullscreen-close-size) - var(--ms-fullscreen-mode-toggle-size)) / 2 - var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-mode-toggle-color);background:var(--ms-fullscreen-mode-toggle-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-mode-toggle:hover{background:var(--ms-fullscreen-mode-toggle-bg-hover)}.ms__fullscreen-mode-toggle:before{content:"";display:block;width:var(--ms-fullscreen-mode-toggle-icon-size);height:var(--ms-fullscreen-mode-toggle-icon-size);background-color:currentColor;-webkit-mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat;mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat}.ms__fullscreen-mode-toggle[data-mode=navigate]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-search)}.ms__fullscreen-mode-toggle[data-mode=filter]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-filter)}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.ms__dropdown-inner{flex:1;overflow-y:auto;border-radius:var(--ms-dropdown-inner-border-radius);overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow:hidden}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.ms__selected-popover{display:none;position:fixed;box-sizing:border-box;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed);flex-shrink:0}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input-wrapper{opacity:var(--ms-disabled-input-opacity);background:var(--ms-input-bg-disabled);cursor:not-allowed}.ms--disabled .ms__input{cursor:not-allowed}.ms--no-checkboxes .ms__option{gap:0;padding-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start:0}.ms--no-selected-popover .ms__counter,.ms--no-selected-popover .ms__badge[data-action=show-selected],.ms--no-selected-popover .ms__badge--counter,.ms--no-selected-popover .ms__badge--more{cursor:default}}@layer component{@keyframes ms-spin{to{transform:rotate(360deg)}}}@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge--custom{display:block;height:auto;max-width:none;overflow:visible;border-radius:0;font-size:inherit;font-weight:inherit}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-radius:0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-inline-end:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-inline-start:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover);color:var(--ms-badge-counter-remove-color-hover, var(--ms-badge-counter-remove-color))}.ms__badge--counter:hover .ms__badge-text{background:var(--ms-badge-counter-text-bg-hover, var(--ms-badge-counter-text-bg));color:var(--ms-badge-counter-text-color-hover, var(--ms-badge-counter-text-color))}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__group-label--selectable{display:flex;align-items:center;gap:var(--ms-option-gap);cursor:pointer;-webkit-user-select:none;user-select:none}@media (hover: hover){.ms__group-label--selectable:hover{background:var(--ms-option-bg-hover)}}.ms__group-label--has-count{display:flex;align-items:center;gap:var(--ms-option-gap)}.ms__group-count{margin-inline-start:auto;flex:0 0 auto;box-sizing:border-box;min-width:calc(2 * var(--ms-rem));padding-block:0;padding-inline:calc(.4 * var(--ms-rem));background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);text-align:center}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);position:relative;min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit)}.ms__option--matched:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;border-inline-start:var(--ms-option-border-matched);pointer-events:none}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}@media (hover: hover){.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start;--ms-checkbox-margin-top: calc(.2 * var(--ms-rem))}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;top:0;right:0;bottom:0;left:0;background-color:var(--ms-checkbox-checkmark-color);-webkit-mask:var(--ms-icon-check) no-repeat center / var(--ms-icon-check-size);mask:var(--ms-icon-check) no-repeat center / var(--ms-icon-check-size)}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;-webkit-mask-image:var(--ms-icon-indeterminate);mask-image:var(--ms-icon-indeterminate)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}@media (hover: hover){.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}@media (hover: hover){.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__add-new{display:flex;align-items:center;gap:var(--ms-add-new-gap);padding:var(--ms-add-new-padding);font-size:var(--ms-add-new-font-size);color:var(--ms-add-new-color);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__add-new:hover{background:var(--ms-add-new-bg-hover);color:var(--ms-add-new-color-hover)}}.ms__add-new--focused{background:var(--ms-add-new-bg-hover);color:var(--ms-add-new-color-hover)}.ms__add-new--loading{cursor:default}.ms__add-new-spinner{flex-shrink:0;width:var(--ms-add-new-icon-size);height:var(--ms-add-new-icon-size);border-radius:50%;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;animation:ms-spin .6s linear infinite}@media (prefers-reduced-motion: reduce){.ms__add-new-spinner{animation-duration:1.5s}}.ms__add-new-icon{flex-shrink:0;width:var(--ms-add-new-icon-size);height:var(--ms-add-new-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-add-new) center / contain no-repeat;mask:var(--ms-icon-add-new) center / contain no-repeat}.ms__add-new-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, Qs = [
|
|
5713
|
+
const Eo = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: var(--base-rem, 10px);font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#cbd5e1, #52525b));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-toggle-icon-size: calc(1.6 * var(--ms-rem));--ms-toggle-rotate-closed: 90deg;--ms-toggle-rotate-open: -90deg;--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: color-mix(in srgb, var(--ms-badge-bg) 88%, var(--ms-badge-text-color) 12%);--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: color-mix(in srgb, var(--ms-badge-text-bg) 88%, var(--ms-badge-text-color) 12%);--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: color-mix(in srgb, var(--ms-text-color-1) 10%, transparent);--ms-badge-counter-text-bg-hover: color-mix(in srgb, var(--ms-text-color-1) 16%, transparent);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-text-color-hover: var(--ms-text-color-1);--ms-badge-counter-remove-bg: color-mix(in srgb, var(--ms-text-color-1) 10%, transparent);--ms-badge-counter-remove-bg-hover: color-mix(in srgb, var(--ms-text-color-1) 16%, transparent);--ms-badge-counter-remove-color: var(--ms-text-color-3);--ms-badge-counter-remove-color-hover: var(--ms-text-color-1);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-gap: calc(.6 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-rotate-180: 180deg;--ms-input-clear-size: calc(2.4 * var(--ms-rem));--ms-input-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-input-clear-color: var(--base-input-clear-color, var(--ms-text-secondary));--ms-input-clear-bg-hover: var(--base-input-clear-bg-hover, var(--ms-option-bg-matched, transparent));--ms-input-clear-border-radius: var(--ms-border-radius);--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-inner-border-radius: max(0px, calc(var(--ms-dropdown-border-radius) - 1px));--ms-dropdown-box-shadow: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-mode-toggle-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-icon-size: calc(1.5 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-gap: var(--ms-fullscreen-header-gap);--ms-fullscreen-mode-toggle-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-mode-toggle-bg: transparent;--ms-fullscreen-mode-toggle-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: color-mix(in srgb, var(--ms-accent-color) 22%, transparent);--ms-fullscreen-nav-btn-icon: var(--ms-icon-chevron);--ms-icon-chevron: var(--base-icon-chevron, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m9 18 6-6-6-6'/></svg>"));--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: 0;--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-add-new-padding: var(--ms-option-padding);--ms-add-new-gap: var(--ms-option-gap);--ms-add-new-font-size: var(--ms-empty-font-size);--ms-add-new-color: var(--ms-accent-color);--ms-add-new-color-hover: var(--ms-accent-color);--ms-add-new-bg-hover: var(--ms-option-bg-hover);--ms-add-new-icon-size: calc(1.6 * var(--ms-rem));--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-remove: var(--base-icon-remove, var(--base-icon-close, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M18 6 6 18'/><path d='m6 6 12 12'/></svg>")));--ms-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-icon-search: var(--base-icon-search, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>"));--ms-icon-filter: var(--base-icon-filter, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polygon points='22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3'/></svg>"));--ms-icon-check: var(--base-icon-check, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>"));--ms-icon-indeterminate: var(--base-icon-indeterminate, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/></svg>"));--ms-icon-check-size: var(--base-icon-check-size, 68%);--ms-icon-add-new: var(--base-icon-plus, var(--base-icon-add, url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14'/><path d='M12 5v14'/></svg>")));--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-count-clear-color-hover: var(--ms-text-color-on-accent);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--base-icon-clear, var(--ms-icon-remove));--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--ms-z-index-popover: 10000;--ms-selected-popover-width: var(--ms-input-current-width);--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-selected-popover-close-color-hover: var(--ms-text-color-on-accent);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: var(--base-ease-standard, cubic-bezier(.4, 0, .2, 1));--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}:host([defer]:not([is-ready])){display:block;min-height:calc(3.5 * var(--ms-rem))}:host{-webkit-tap-highlight-color:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{box-sizing:border-box;position:relative;display:flex;align-items:center;gap:var(--ms-input-gap);height:var(--ms-input-height);padding-inline:var(--ms-input-padding-h);background:var(--ms-input-bg);color:var(--ms-input-color);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input-wrapper:hover:not(:focus-within){border:var(--ms-input-border-hover)}.ms__input-wrapper:focus-within{border:var(--ms-input-border-focus)}.ms__input{flex:1 1 auto;min-width:0;box-sizing:border-box;font-family:inherit;height:100%;padding:0;border:none;background:transparent;font-size:var(--ms-input-font-size);color:var(--ms-input-color);cursor:pointer;outline:none}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-placeholder-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{flex:0 0 auto;display:block;width:var(--ms-toggle-icon-size);height:var(--ms-toggle-icon-size);color:var(--ms-toggle-icon-color);cursor:pointer}.ms__toggle:before{content:"";display:block;width:100%;height:100%;background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat;transform:rotate(var(--ms-toggle-rotate-closed, 90deg));transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{color:var(--ms-toggle-icon-color-open)}.ms--open .ms__toggle:before{transform:rotate(var(--ms-toggle-rotate-open, -90deg))}.ms__counter{flex:0 0 auto;padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:scale(var(--ms-transform-scale-hover))}.ms__input-clear{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-input-clear-size);height:var(--ms-input-clear-size);padding:0;color:var(--ms-input-clear-color);background:transparent;border:none;border-radius:var(--ms-input-clear-border-radius);cursor:pointer;transition:background var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input-clear:hover{background:var(--ms-input-clear-bg-hover)}.ms__input-clear:before{content:"";display:block;width:var(--ms-input-clear-icon-size);height:var(--ms-input-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}@media (hover: hover){.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;box-sizing:border-box;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);width:var(--ms-dropdown-width);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;--ms-dropdown-inner-border-radius: 0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-header{align-content:flex-start}.ms__fullscreen-header>.ms__fullscreen-search-wrapper{min-height:var(--ms-fullscreen-header-min-height)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-fullscreen-nav-btn-icon) center / contain no-repeat;mask:var(--ms-fullscreen-nav-btn-icon) center / contain no-repeat;transform:rotate(-90deg)}.ms__fullscreen-nav-btn--next:before{transform:rotate(90deg)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 0;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex;align-items:center}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-mode-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-mode-toggle-size);height:var(--ms-fullscreen-mode-toggle-size);margin-inline-end:var(--ms-fullscreen-mode-toggle-gap);margin-inline-start:calc((var(--ms-fullscreen-close-size) - var(--ms-fullscreen-mode-toggle-size)) / 2 - var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-mode-toggle-color);background:var(--ms-fullscreen-mode-toggle-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-mode-toggle:hover{background:var(--ms-fullscreen-mode-toggle-bg-hover)}.ms__fullscreen-mode-toggle:before{content:"";display:block;width:var(--ms-fullscreen-mode-toggle-icon-size);height:var(--ms-fullscreen-mode-toggle-icon-size);background-color:currentColor;-webkit-mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat;mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat}.ms__fullscreen-mode-toggle[data-mode=navigate]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-search)}.ms__fullscreen-mode-toggle[data-mode=filter]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-filter)}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.ms__dropdown-inner{flex:1;overflow-y:auto;border-radius:var(--ms-dropdown-inner-border-radius);overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow:hidden}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.ms__selected-popover{display:none;position:fixed;box-sizing:border-box;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed);flex-shrink:0}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input-wrapper{opacity:var(--ms-disabled-input-opacity);background:var(--ms-input-bg-disabled);cursor:not-allowed}.ms--disabled .ms__input{cursor:not-allowed}.ms--no-checkboxes .ms__option{gap:0;padding-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start:0}.ms--no-selected-popover .ms__counter,.ms--no-selected-popover .ms__badge[data-action=show-selected],.ms--no-selected-popover .ms__badge--counter,.ms--no-selected-popover .ms__badge--more{cursor:default}}@layer component{@keyframes ms-spin{to{transform:rotate(360deg)}}}@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge--custom{display:block;height:auto;max-width:none;overflow:visible;border-radius:0;font-size:inherit;font-weight:inherit}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-radius:0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-inline-end:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-inline-start:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover);color:var(--ms-badge-counter-remove-color-hover, var(--ms-badge-counter-remove-color))}.ms__badge--counter:hover .ms__badge-text{background:var(--ms-badge-counter-text-bg-hover, var(--ms-badge-counter-text-bg));color:var(--ms-badge-counter-text-color-hover, var(--ms-badge-counter-text-color))}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__group-label--selectable{display:flex;align-items:center;gap:var(--ms-option-gap);cursor:pointer;-webkit-user-select:none;user-select:none}@media (hover: hover){.ms__group-label--selectable:hover{background:var(--ms-option-bg-hover)}}.ms__group-label--has-count{display:flex;align-items:center;gap:var(--ms-option-gap)}.ms__group-count{margin-inline-start:auto;flex:0 0 auto;box-sizing:border-box;min-width:calc(2 * var(--ms-rem));padding-block:0;padding-inline:calc(.4 * var(--ms-rem));background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);text-align:center}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);position:relative;min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit)}.ms__option--matched:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;border-inline-start:var(--ms-option-border-matched);pointer-events:none}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}@media (hover: hover){.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start;--ms-checkbox-margin-top: calc(.2 * var(--ms-rem))}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;top:0;right:0;bottom:0;left:0;background-color:var(--ms-checkbox-checkmark-color);-webkit-mask:var(--ms-icon-check) no-repeat center / var(--ms-icon-check-size);mask:var(--ms-icon-check) no-repeat center / var(--ms-icon-check-size)}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;-webkit-mask-image:var(--ms-icon-indeterminate);mask-image:var(--ms-icon-indeterminate)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}@media (hover: hover){.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}@media (hover: hover){.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__add-new{display:flex;align-items:center;gap:var(--ms-add-new-gap);padding:var(--ms-add-new-padding);font-size:var(--ms-add-new-font-size);color:var(--ms-add-new-color);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__add-new:hover{background:var(--ms-add-new-bg-hover);color:var(--ms-add-new-color-hover)}}.ms__add-new--focused{background:var(--ms-add-new-bg-hover);color:var(--ms-add-new-color-hover)}.ms__add-new--loading{cursor:default}.ms__add-new-spinner{flex-shrink:0;width:var(--ms-add-new-icon-size);height:var(--ms-add-new-icon-size);border-radius:50%;border:2px solid color-mix(in srgb,currentColor 25%,transparent);border-top-color:currentColor;animation:ms-spin .6s linear infinite}@media (prefers-reduced-motion: reduce){.ms__add-new-spinner{animation-duration:1.5s}}.ms__add-new-icon{flex-shrink:0;width:var(--ms-add-new-icon-size);height:var(--ms-add-new-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-add-new) center / contain no-repeat;mask:var(--ms-icon-add-new) center / contain no-repeat}.ms__add-new-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, eo = [
|
|
5624
5714
|
"top",
|
|
5625
5715
|
"top-start",
|
|
5626
5716
|
"top-end",
|
|
@@ -5633,40 +5723,41 @@ const Lo = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
5633
5723
|
"right",
|
|
5634
5724
|
"right-start",
|
|
5635
5725
|
"right-end"
|
|
5636
|
-
],
|
|
5726
|
+
], A = () => Uo(), wn = [
|
|
5637
5727
|
// ── Strings (cosmetic → update). Optional ones are nullable: absent → null ─
|
|
5638
|
-
{ configKey: "searchHint", attribute: "search-hint", converter:
|
|
5639
|
-
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter:
|
|
5640
|
-
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter:
|
|
5641
|
-
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter:
|
|
5642
|
-
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter:
|
|
5643
|
-
{ configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter:
|
|
5644
|
-
{ configKey: "maxHeight", attribute: "max-height", converter:
|
|
5645
|
-
{ configKey: "emptyMessage", attribute: "empty-message", converter:
|
|
5646
|
-
{ configKey: "addNewText", attribute: "add-new-text", converter:
|
|
5647
|
-
{ configKey: "addNewPendingText", attribute: "add-new-pending-text", converter:
|
|
5648
|
-
{ configKey: "loadingMessage", attribute: "loading-message", converter:
|
|
5649
|
-
{ configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter:
|
|
5650
|
-
{ configKey: "formFieldId", attribute: "name", converter:
|
|
5728
|
+
{ configKey: "searchHint", attribute: "search-hint", converter: E({ isNullable: !0 }), on: "update", description: "Small hint text shown beneath the search input." },
|
|
5729
|
+
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter: E({ isNullable: !0 }), on: "update", description: 'Placeholder text for the search input. When unset it defaults to "Search..."; if `show-search-mode-toggle` is on, the default instead becomes mode-aware ("Search…" in navigate, "Filter…" in filter). An explicit value always wins and stays fixed.' },
|
|
5730
|
+
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter: E({ default: "Pick an option..." }), on: "update", description: "Placeholder shown on the control when nothing is selected." },
|
|
5731
|
+
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter: E({ isNullable: !0 }), on: "update", description: "Text shown when there are no options at all." },
|
|
5732
|
+
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter: E({ isNullable: !0 }), on: "update", description: "Minimum width of the dropdown panel (any CSS length)." },
|
|
5733
|
+
{ configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter: E({ isNullable: !0 }), on: "update", description: "Maximum width of the dropdown panel (any CSS length)." },
|
|
5734
|
+
{ configKey: "maxHeight", attribute: "max-height", converter: E({ default: "20rem" }), on: "update", description: "Maximum height of the dropdown list before it scrolls." },
|
|
5735
|
+
{ configKey: "emptyMessage", attribute: "empty-message", converter: E({ default: "No results found" }), on: "update", description: "Message shown when a search yields no matches." },
|
|
5736
|
+
{ configKey: "addNewText", attribute: "add-new-text", converter: E({ isNullable: !0 }), on: "update", description: 'Template for the clickable "add new" prompt shown (when `allow-add-new` is on) in place of the empty message once a search yields no matches. `{value}` is replaced with the typed text. Default: `Add "{value}"`. A `getAddNewTextCallback` wins.' },
|
|
5737
|
+
{ configKey: "addNewPendingText", attribute: "add-new-pending-text", converter: E({ isNullable: !0 }), on: "update", description: 'Template for the pending prompt (spinner + text) shown while an async `addNewCallback` runs. `{value}` is replaced with the typed text. Default: `Adding "{value}"…`.' },
|
|
5738
|
+
{ configKey: "loadingMessage", attribute: "loading-message", converter: E({ default: "Loading..." }), on: "update", description: "Message shown while options are loading." },
|
|
5739
|
+
{ configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter: E({ isNullable: !0 }), on: "update", description: "Tooltip text for a badge remove (×) button." },
|
|
5740
|
+
{ configKey: "formFieldId", attribute: "name", converter: E({ isNullable: !0 }), on: "reinit", description: "HTML form field name/id used for the hidden input(s)." },
|
|
5741
|
+
{ configKey: "customStyles", attribute: "custom-styles", converter: E({ isNullable: !0 }), on: "update", description: "Raw CSS injected into the Shadow DOM — the declarative alternative to `customStylesCallback`. The value is a full stylesheet (selectors and all), dropped verbatim into a replaceable style slot at the top of the shadow root. `customStylesCallback` takes precedence when both are set." },
|
|
5651
5742
|
// ── CSS-var sugar (mirrored to a host style prop in reinit()/update()) ────
|
|
5652
|
-
{ configKey: "dropdownWidth", attribute: "dropdown-width", converter:
|
|
5653
|
-
{ configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter:
|
|
5743
|
+
{ configKey: "dropdownWidth", attribute: "dropdown-width", converter: E({ isNullable: !0 }), on: "update", description: "Fixed dropdown width; mirrored to the `--ms-dropdown-width` CSS variable." },
|
|
5744
|
+
{ configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter: E({ isNullable: !0 }), on: "update", description: "Selected-items popover width; mirrored to `--ms-selected-popover-width`." },
|
|
5654
5745
|
// ── Member properties (structural → reinit; optional → nullable) ─────────
|
|
5655
|
-
{ configKey: "valueMember", attribute: "value-member", converter:
|
|
5656
|
-
{ configKey: "displayValueMember", attribute: "display-value-member", converter:
|
|
5657
|
-
{ configKey: "searchValueMember", attribute: "search-value-member", converter:
|
|
5658
|
-
{ configKey: "iconMember", attribute: "icon-member", converter:
|
|
5659
|
-
{ configKey: "subtitleMember", attribute: "subtitle-member", converter:
|
|
5660
|
-
{ configKey: "fullTitleMember", attribute: "full-title-member", converter:
|
|
5661
|
-
{ configKey: "groupMember", attribute: "group-member", converter:
|
|
5662
|
-
{ configKey: "disabledMember", attribute: "disabled-member", converter:
|
|
5746
|
+
{ configKey: "valueMember", attribute: "value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name on an option object that holds its value." },
|
|
5747
|
+
{ configKey: "displayValueMember", attribute: "display-value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option display label." },
|
|
5748
|
+
{ configKey: "searchValueMember", attribute: "search-value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name searched against (falls back to the display value)." },
|
|
5749
|
+
{ configKey: "iconMember", attribute: "icon-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option icon." },
|
|
5750
|
+
{ configKey: "subtitleMember", attribute: "subtitle-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option subtitle." },
|
|
5751
|
+
{ configKey: "fullTitleMember", attribute: "full-title-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option full/long title." },
|
|
5752
|
+
{ configKey: "groupMember", attribute: "group-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name used to group options under headers." },
|
|
5753
|
+
{ configKey: "disabledMember", attribute: "disabled-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that marks an option disabled." },
|
|
5663
5754
|
// ── Tree of options (structural → reinit; optional → nullable) ───────────
|
|
5664
|
-
{ configKey: "pathMember", attribute: "path-member", converter:
|
|
5665
|
-
{ configKey: "parentPathMember", attribute: "parent-path-member", converter:
|
|
5666
|
-
{ configKey: "levelMember", attribute: "level-member", converter:
|
|
5667
|
-
{ configKey: "hasChildrenMember", attribute: "has-children-member", converter:
|
|
5668
|
-
{ configKey: "isSelectableMember", attribute: "is-selectable-member", converter:
|
|
5669
|
-
{ configKey: "treePathSeparator", attribute: "tree-path-separator", converter:
|
|
5755
|
+
{ configKey: "pathMember", attribute: "path-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node materialized tree path." },
|
|
5756
|
+
{ configKey: "parentPathMember", attribute: "parent-path-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node parent path." },
|
|
5757
|
+
{ configKey: "levelMember", attribute: "level-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node depth level." },
|
|
5758
|
+
{ configKey: "hasChildrenMember", attribute: "has-children-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name flagging that a node has children." },
|
|
5759
|
+
{ configKey: "isSelectableMember", attribute: "is-selectable-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name marking whether a node can be selected." },
|
|
5760
|
+
{ configKey: "treePathSeparator", attribute: "tree-path-separator", converter: E({ default: "." }), reflect: !0, on: "reinit", description: "Separator between segments in a materialized tree path." },
|
|
5670
5761
|
{ configKey: "isTreeEnabled", converter: H("tristate"), on: "reinit", type: "boolean", description: "Force tree mode on/off. Property-only; when unset (null) tree mode auto-enables if a path source (path-member / getPathCallback) is present." },
|
|
5671
5762
|
{
|
|
5672
5763
|
configKey: "checkboxMode",
|
|
@@ -5704,17 +5795,17 @@ const Lo = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
5704
5795
|
on: "update",
|
|
5705
5796
|
description: 'Order of the CURRENTLY-SELECTED items where they are displayed — badges, partial mode (which items sit behind the "+N more" badge), and the selected-items popover. Display only: `getValue()`, the form output, and `getSelected()` keep as-selected (insertion) order, and the options dropdown is never reordered.\n- `as-selected` (default) — the order items were picked.\n- `label-asc` / `label-desc` — by the badge label, A→Z / Z→A (locale-aware).\n- `member` — by the `selected-order-member` property (or `getSelectedOrderCallback`); numeric keys sort numerically, everything else with a locale string compare.\n- `custom` — delegate to `selectedOrderCompareCallback`.'
|
|
5706
5797
|
},
|
|
5707
|
-
{ configKey: "selectedOrderMember", attribute: "selected-order-member", converter:
|
|
5798
|
+
{ configKey: "selectedOrderMember", attribute: "selected-order-member", converter: E({ isNullable: !0 }), reflect: !0, on: "update", description: 'Property name used as the sort key when `selected-order="member"`. Sorts the SELECTED-items display only (not the dropdown). Overridden by `getSelectedOrderCallback`.' },
|
|
5708
5799
|
{ configKey: "searchInputMode", attribute: "search-input-mode", converter: K(["normal", "readonly", "hidden"], { default: "normal" }), on: "reinit", description: "Search field mode: editable, read-only, or hidden." },
|
|
5709
5800
|
{ configKey: "searchMode", attribute: "search-mode", converter: K(["filter", "navigate"], { default: "filter" }), on: "reinit", description: "Whether typing filters the list or navigates it." },
|
|
5710
|
-
{ configKey: "overlayGroup", attribute: "overlay-group", converter:
|
|
5801
|
+
{ configKey: "overlayGroup", attribute: "overlay-group", converter: E({ isNullable: !0 }), on: "reinit", description: 'Scope the "one overlay open at a time" coordination to a named group. Overlays (multiselects, datepickers, external popovers) sharing a group dismiss each other when one opens; different groups are independent. Unset = the default (ungrouped) group.' },
|
|
5711
5802
|
{ configKey: "actionsLayout", attribute: "actions-layout", converter: K(["nowrap", "wrap"], { default: "nowrap" }), on: "reinit", description: "Whether the action bar wraps or stays on one line." },
|
|
5712
5803
|
{ configKey: "actionsPosition", attribute: "actions-position", converter: K(["top", "bottom"], { default: "top" }), on: "reinit", description: "Whether the action bar sits above or below the list." },
|
|
5713
5804
|
{ configKey: "actionsAlign", attribute: "actions-align", converter: K(["stretch", "left", "right", "center", "space-between"], { default: "stretch" }), on: "update", description: "Horizontal alignment of the action buttons." },
|
|
5714
5805
|
{ configKey: "checkboxAlign", attribute: "checkbox-align", converter: K(["top", "center", "bottom"], { default: "center" }), on: "update", description: "Vertical alignment of an option checkbox." },
|
|
5715
5806
|
{ configKey: "valueFormat", attribute: "value-format", converter: K(["json", "csv", "array"], { default: "json" }), on: "reinit", description: "Serialization format the control emits its value in." },
|
|
5716
|
-
{ configKey: "badgeTooltipPlacement", attribute: "badge-tooltip-placement", converter: K(
|
|
5717
|
-
{ configKey: "optionTooltipPlacement", attribute: "option-tooltip-placement", converter: K(
|
|
5807
|
+
{ configKey: "badgeTooltipPlacement", attribute: "badge-tooltip-placement", converter: K(eo, { default: "top" }), on: "update", description: "Preferred placement of a badge tooltip relative to its badge (floating-ui placement)." },
|
|
5808
|
+
{ configKey: "optionTooltipPlacement", attribute: "option-tooltip-placement", converter: K(eo, { default: "top-start" }), on: "update", description: "Preferred placement of an option tooltip (floating-ui placement)." },
|
|
5718
5809
|
{
|
|
5719
5810
|
configKey: "mobilePresentation",
|
|
5720
5811
|
attribute: "mobile-presentation",
|
|
@@ -5778,63 +5869,63 @@ const Lo = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
5778
5869
|
},
|
|
5779
5870
|
// ── Complex property (data) ──────────────────────────────────────────────
|
|
5780
5871
|
{ configKey: "options", converter: Go(), on: "reinit", type: "ReadonlyArray<Record<string, unknown>>", description: "The array of option objects to render. The JS API — assign `el.options` directly. For HTML authoring use the `data-options` attribute (parsed per `data-options-format`) or declarative <option> children; both feed the same list and take precedence over this property in the order: <option> children > property > data-options." },
|
|
5781
|
-
{ configKey: "optionsSource", attribute: "data-options", converter:
|
|
5872
|
+
{ configKey: "optionsSource", attribute: "data-options", converter: E({ isNullable: !0 }), on: "reinit", type: "string", description: "HTML-authoring source for the option list, parsed per `data-options-format`. Reactive: changing either attribute re-renders. Prefer the `options` property in JS; a set `options` property and declarative <option> children both win over this." },
|
|
5782
5873
|
{ configKey: "optionsFormat", attribute: "data-options-format", converter: K(mn, { default: "json" }), on: "reinit", type: "'json' | 'csv' | 'plain'", description: "How to parse the `data-options` attribute: `json` (a JSON array of objects or [value, label] tuples), `csv` (rows split on `data-options-row-splitter`, cells on `data-options-splitter`; the first row is a header — map columns via *-member), or `plain` (bare values split on both splitters -> [value, label] tuples, value === label). Default `json`." },
|
|
5783
|
-
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter:
|
|
5784
|
-
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter:
|
|
5874
|
+
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter: E({ default: "," }), on: "reinit", type: "string", description: 'Field/cell delimiter for the `csv` and `plain` `data-options` formats. Default `,`. Escapes `\\t` `\\n` `\\r` are honoured (e.g. `data-options-splitter="\\t"` for TSV). Ignored for `json`.' },
|
|
5875
|
+
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter: E({ default: `
|
|
5785
5876
|
` }), on: "reinit", type: "string", description: 'Row/record delimiter for the `csv` and `plain` `data-options` formats. Default newline. Escapes honoured (e.g. `data-options-row-splitter=";"` for single-line data). Ignored for `json`.' },
|
|
5786
5877
|
{ configKey: "actionButtons", converter: jo({ validate: (s) => Array.isArray(s) }), on: "reinit", type: "Array<Record<string, unknown>>", description: "Custom action buttons for the dropdown footer/header. Property-only; when unset the default Select-All / Clear buttons apply." },
|
|
5787
5878
|
// ── Callbacks: data shape (structural → reinit) ──────────────────────────
|
|
5788
|
-
{ configKey: "getValueCallback", converter:
|
|
5789
|
-
{ configKey: "getPathCallback", converter:
|
|
5790
|
-
{ configKey: "getGroupCallback", converter:
|
|
5791
|
-
{ configKey: "getDisabledCallback", converter:
|
|
5792
|
-
{ configKey: "getIsSelectableCallback", converter:
|
|
5793
|
-
{ configKey: "getSearchValueCallback", converter:
|
|
5794
|
-
{ configKey: "searchCallback", converter:
|
|
5879
|
+
{ configKey: "getValueCallback", converter: A(), on: "reinit", type: "(item: unknown) => string | number", description: "Extract an option value (overrides valueMember)." },
|
|
5880
|
+
{ configKey: "getPathCallback", converter: A(), on: "reinit", type: "(item: unknown) => string", description: "Extract a node tree path (enables tree mode; overrides pathMember)." },
|
|
5881
|
+
{ configKey: "getGroupCallback", converter: A(), on: "reinit", type: "(item: unknown) => string", description: "Extract the group name from an option (overrides groupMember)." },
|
|
5882
|
+
{ configKey: "getDisabledCallback", converter: A(), on: "reinit", type: "(item: unknown) => boolean", description: "Whether an option is disabled (overrides disabledMember)." },
|
|
5883
|
+
{ configKey: "getIsSelectableCallback", converter: A(), on: "reinit", type: "(node: unknown) => boolean", description: "Whether a tree node can be selected (overrides is-selectable-member)." },
|
|
5884
|
+
{ configKey: "getSearchValueCallback", converter: A(), on: "reinit", type: "(item: unknown) => string", description: "Text an option is searched against (overrides searchValueMember)." },
|
|
5885
|
+
{ configKey: "searchCallback", converter: A(), on: "reinit", type: "(searchTerm: string, signal?: AbortSignal) => Promise<unknown[]>", description: "Custom / async search; return the filtered options." },
|
|
5795
5886
|
// ── Callbacks: display / render (cosmetic → update) ──────────────────────
|
|
5796
|
-
{ configKey: "getDisplayValueCallback", converter:
|
|
5797
|
-
{ configKey: "getBadgeDisplayCallback", converter:
|
|
5798
|
-
{ configKey: "getBadgeClassCallback", converter:
|
|
5799
|
-
{ configKey: "getSelectedOrderCallback", converter:
|
|
5800
|
-
{ configKey: "selectedOrderCompareCallback", converter:
|
|
5801
|
-
{ configKey: "getIconCallback", converter:
|
|
5802
|
-
{ configKey: "getSubtitleCallback", converter:
|
|
5803
|
-
{ configKey: "getFullTitleCallback", converter:
|
|
5804
|
-
{ configKey: "getCounterCallback", converter:
|
|
5805
|
-
{ configKey: "getCountLabelCallback", converter:
|
|
5806
|
-
{ configKey: "getValueFormatCallback", converter:
|
|
5807
|
-
{ configKey: "getBadgeTooltipCallback", converter:
|
|
5808
|
-
{ configKey: "getOptionTooltipCallback", converter:
|
|
5809
|
-
{ configKey: "getRemoveButtonTooltipCallback", converter:
|
|
5810
|
-
{ configKey: "getSelectedItemClassCallback", converter:
|
|
5811
|
-
{ configKey: "renderOptionContentCallback", converter:
|
|
5812
|
-
{ configKey: "renderBadgeContentCallback", converter:
|
|
5813
|
-
{ configKey: "renderBadgeCallback", converter:
|
|
5814
|
-
{ configKey: "renderGroupLabelContentCallback", converter:
|
|
5815
|
-
{ configKey: "renderSelectedContentCallback", converter:
|
|
5816
|
-
{ configKey: "renderSelectedItemContentCallback", converter:
|
|
5817
|
-
{ configKey: "customStylesCallback", converter:
|
|
5887
|
+
{ configKey: "getDisplayValueCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Compute the display label for an option (overrides displayValueMember)." },
|
|
5888
|
+
{ configKey: "getBadgeDisplayCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Compute the text shown on an option badge." },
|
|
5889
|
+
{ configKey: "getBadgeClassCallback", converter: A(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for an option badge." },
|
|
5890
|
+
{ configKey: "getSelectedOrderCallback", converter: A(), on: "update", type: "(item: unknown) => string | number", description: 'Sort key for the selected-items display when `selected-order="member"` (overrides `selected-order-member`).' },
|
|
5891
|
+
{ configKey: "selectedOrderCompareCallback", converter: A(), on: "update", type: "(a: unknown, b: unknown) => number", description: 'Comparator for the selected-items display when `selected-order="custom"`.' },
|
|
5892
|
+
{ configKey: "getIconCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Icon for an option (overrides iconMember)." },
|
|
5893
|
+
{ configKey: "getSubtitleCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Subtitle for an option (overrides subtitleMember)." },
|
|
5894
|
+
{ configKey: "getFullTitleCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Full title for an option (used by badges when show-badge-full-title is on)." },
|
|
5895
|
+
{ configKey: "getCounterCallback", converter: A(), on: "update", type: "(count: number, moreCount?: number) => string", description: "Render the selected-count label." },
|
|
5896
|
+
{ configKey: "getCountLabelCallback", converter: A(), on: "update", type: "(selected: number, total: number) => string", description: "Format the small count chip shared by the in-input counter and each group header count (default `[selected]`; e.g. `(s,t)=>`${s}/${t}``). One callback drives both." },
|
|
5897
|
+
{ configKey: "getValueFormatCallback", converter: A(), on: "update", type: "(selectedValues: (string | number)[]) => string", description: "Serialize the selected values for form submission." },
|
|
5898
|
+
{ configKey: "getBadgeTooltipCallback", converter: A(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option badge." },
|
|
5899
|
+
{ configKey: "getOptionTooltipCallback", converter: A(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option row." },
|
|
5900
|
+
{ configKey: "getRemoveButtonTooltipCallback", converter: A(), on: "update", type: "(item: unknown) => string", description: "Tooltip text for a badge remove button." },
|
|
5901
|
+
{ configKey: "getSelectedItemClassCallback", converter: A(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for a selected item." },
|
|
5902
|
+
{ configKey: "renderOptionContentCallback", converter: A(), on: "update", type: "(item: unknown, context: OptionContentRenderContext) => string | HTMLElement", description: "Custom render for an option row; may return HTML or an element." },
|
|
5903
|
+
{ configKey: "renderBadgeContentCallback", converter: A(), on: "update", type: "(item: unknown, context: BadgeContentRenderContext) => string | HTMLElement", description: "Custom render for a badge content (fills the built-in pill); may return HTML or an element." },
|
|
5904
|
+
{ configKey: "renderBadgeCallback", converter: A(), on: "update", type: "(item: unknown, context: BadgeContentRenderContext) => string | HTMLElement | null", description: 'Custom render for the WHOLE badge (main area), not just its content — return the entire pill/card. The component wraps it in `.ms__badge.ms__badge--custom` with `data-value` and delegates removal to any inner element with `data-action="remove"` (or `.ms__badge-remove`). Return null/empty to fall back to the default pill for that item.' },
|
|
5905
|
+
{ configKey: "renderGroupLabelContentCallback", converter: A(), on: "update", type: "(groupName: string, context: GroupLabelRenderContext) => string | HTMLElement", description: "Customize a group label; may return an HTML string or element. The second arg carries the group members + selection (e.g. `context.selectedCount`) so a custom header can show a per-group count." },
|
|
5906
|
+
{ configKey: "renderSelectedContentCallback", converter: A(), on: "update", type: "(item: unknown, context: SelectedContentRenderContext) => string", description: "Custom render for the single-select selected value (2nd arg carries the presentation context)." },
|
|
5907
|
+
{ configKey: "renderSelectedItemContentCallback", converter: A(), on: "update", type: "(item: unknown, context: BadgeContentRenderContext) => string | HTMLElement", description: "Custom render for one selected item in the popover (2nd arg is a BadgeContentRenderContext; isInPopover=true)." },
|
|
5908
|
+
{ configKey: "customStylesCallback", converter: A(), on: "update", type: "() => string", description: "Returns a CSS string injected into the component via a replaceable style slot (§12.8)." },
|
|
5818
5909
|
// ── Callbacks: before-hooks (behavior-shaping) ───────────────────────────
|
|
5819
|
-
{ configKey: "beforeSearchCallback", converter:
|
|
5820
|
-
{ configKey: "beforeSelectCallback", converter:
|
|
5821
|
-
{ configKey: "beforeDeselectCallback", converter:
|
|
5822
|
-
{ configKey: "addNewCallback", converter:
|
|
5823
|
-
{ configKey: "getAddNewTextCallback", converter:
|
|
5824
|
-
{ configKey: "keydownCallback", converter:
|
|
5910
|
+
{ configKey: "beforeSearchCallback", converter: A(), on: "update", type: "(searchTerm: string) => string | null", description: "Runs before a search; return a rewritten term or null to veto." },
|
|
5911
|
+
{ configKey: "beforeSelectCallback", converter: A(), on: "update", type: "(option: unknown, selectedOptions: unknown[]) => boolean | string | void", description: "Runs before selecting; return false to veto, or a string to veto and show it as a message." },
|
|
5912
|
+
{ configKey: "beforeDeselectCallback", converter: A(), on: "update", type: "(option: unknown, selectedOptions: unknown[]) => boolean | string | void", description: "Runs before deselecting; return false to veto, or a string to veto and show it as a message." },
|
|
5913
|
+
{ configKey: "addNewCallback", converter: A(), on: "update", type: "(value: string) => unknown | null | undefined | Promise<unknown | null | undefined>", description: "Create a new option from the typed text. May return a rich option object (renders via the same get*/render* callbacks as any option). Async + cancelable: return null/undefined to abort (no add, no `add` event). Omit entirely to handle creation yourself via the `add` event." },
|
|
5914
|
+
{ configKey: "getAddNewTextCallback", converter: A(), on: "update", type: "(value: string) => string", description: 'Dynamically compute the "add new" prompt label from the typed text (returns plain text). Takes precedence over `add-new-text`.' },
|
|
5915
|
+
{ configKey: "keydownCallback", converter: A(), on: "update", type: "(context: MultiSelectKeydownContext) => boolean | void", description: "Intercept keydown before built-in handling; return true to suppress the default. Gets the event, current state, and an imperative controller." }
|
|
5825
5916
|
], yn = [
|
|
5826
5917
|
{ name: "select", description: "An option was selected. `detail.option` is the selected option; `detail.selectedOptions`/`detail.selectedValues` are the full selection." },
|
|
5827
5918
|
{ name: "deselect", description: "An option was removed from the selection. `detail.option` is that option." },
|
|
5828
5919
|
{ name: "change", description: "The selection changed. `detail.selectedOptions`/`detail.selectedValues` are the full selection." },
|
|
5829
5920
|
{ name: "add", description: 'The user chose to create a new option from the typed text (via the "add new" prompt or Enter) — requires `allow-add-new`. `detail.value` is the typed text; `detail.option` is the created item when `addNewCallback` produced one.' },
|
|
5830
5921
|
{ name: "ready", description: "The picker was built and painted for the first time (once per element lifetime). Fires right after the first build — synchronously during upgrade for a normal element, or when the render gate is released (`el.ready()` / removing `defer`) for a deferred one. No detail." }
|
|
5831
|
-
],
|
|
5922
|
+
], to = /* @__PURE__ */ new Set(["dropdownWidth", "selectedPopoverWidth", "showDebugInfo", "initialValues", "optionsSource", "optionsFormat", "optionsSplitter", "optionsRowSplitter", "mobilePresentation", "collapseBadgesBelow", "deferRender", "customStyles"]), yt = {
|
|
5832
5923
|
dropdownWidth: "--ms-dropdown-width",
|
|
5833
5924
|
selectedPopoverWidth: "--ms-selected-popover-width"
|
|
5834
5925
|
};
|
|
5835
5926
|
let xn = null;
|
|
5836
5927
|
function _n() {
|
|
5837
|
-
return xn ?? (xn = $i(
|
|
5928
|
+
return xn ?? (xn = $i(Eo, "--ms-"));
|
|
5838
5929
|
}
|
|
5839
5930
|
const kn = [
|
|
5840
5931
|
{ key: "valueMember", member: "value", callbackKey: "getValueCallback" },
|
|
@@ -5844,33 +5935,33 @@ const kn = [
|
|
|
5844
5935
|
{ key: "subtitleMember", member: "subtitle", callbackKey: "getSubtitleCallback" },
|
|
5845
5936
|
{ key: "disabledMember", member: "disabled", callbackKey: "getDisabledCallback" }
|
|
5846
5937
|
];
|
|
5847
|
-
var Q, C,
|
|
5938
|
+
var Q, C, ge, ut, Ke, mt, pt, ft, We, je, Oe, x, as, Ct, be, St, ls, cs, ds, Tt, Ao, zo, No, Ae, hs, us, $o, Vo, ms, Do, Ro, ps, fs;
|
|
5848
5939
|
class it extends Qt {
|
|
5849
5940
|
constructor() {
|
|
5850
5941
|
super();
|
|
5851
5942
|
L(this, x);
|
|
5852
5943
|
L(this, Q);
|
|
5853
5944
|
L(this, C);
|
|
5854
|
-
L(this,
|
|
5945
|
+
L(this, ge);
|
|
5855
5946
|
// The `initial-values` JSON applied at the last build. Lets a rebuild (reinit)
|
|
5856
5947
|
// tell an explicit `initial-values` change (honour the new values) apart from a
|
|
5857
5948
|
// cosmetic/structural reinit (preserve the user's runtime selection). See #buildPicker.
|
|
5858
5949
|
L(this, ut);
|
|
5859
5950
|
// Render gate (`defer`): true once released via ready() / attribute removal /
|
|
5860
5951
|
// the first build. Latched — the gate never re-closes. See #renderHeld().
|
|
5861
|
-
L(this,
|
|
5952
|
+
L(this, Ke, !1);
|
|
5862
5953
|
L(this, mt, null);
|
|
5863
5954
|
// Dev-mode customStylesCallback lint: unknown --ms-* names already warned about.
|
|
5864
5955
|
L(this, pt, /* @__PURE__ */ new Set());
|
|
5865
5956
|
// Declarative <option>/<optgroup> state (parsed once from light DOM).
|
|
5866
5957
|
L(this, ft, !1);
|
|
5867
|
-
L(this,
|
|
5868
|
-
L(this,
|
|
5869
|
-
L(this,
|
|
5958
|
+
L(this, We, !1);
|
|
5959
|
+
L(this, je);
|
|
5960
|
+
L(this, Oe);
|
|
5870
5961
|
// ── container-responsive badge collapse (core §12.9 `resized`) ─────────────
|
|
5871
5962
|
/** Whether the live picker is currently forced to the collapsed count view. */
|
|
5872
|
-
L(this,
|
|
5873
|
-
I(this, Q, this.attachShadow({ mode: "open" })), zi(h(this, Q),
|
|
5963
|
+
L(this, be, !1);
|
|
5964
|
+
I(this, Q, this.attachShadow({ mode: "open" })), zi(h(this, Q), Eo), typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => this.setAttribute("data-placeholder-ready", "")) : this.setAttribute("data-placeholder-ready", "");
|
|
5874
5965
|
}
|
|
5875
5966
|
/**
|
|
5876
5967
|
* Called by the browser when the surrounding <form> is reset. Clears the
|
|
@@ -5891,19 +5982,19 @@ class it extends Qt {
|
|
|
5891
5982
|
}
|
|
5892
5983
|
/** Structural change (or first connect): mirror CSS vars, then (re)build the picker. */
|
|
5893
5984
|
reinit() {
|
|
5894
|
-
|
|
5985
|
+
b(this, x, $o).call(this), this.isConnected && !b(this, x, as).call(this) && b(this, x, ds).call(this);
|
|
5895
5986
|
}
|
|
5896
5987
|
/** Cosmetic change: mirror CSS vars / custom styles / debug, patch the picker in place. */
|
|
5897
5988
|
update(t) {
|
|
5898
|
-
|
|
5989
|
+
b(this, x, Vo).call(this, t), ("customStylesCallback" in t || "customStyles" in t) && b(this, x, hs).call(this), "showDebugInfo" in t && b(this, x, ps).call(this);
|
|
5899
5990
|
const o = {};
|
|
5900
5991
|
for (const [i, r] of Object.entries(t))
|
|
5901
|
-
|
|
5902
|
-
h(this, C) && Object.keys(o).length > 0 && (h(this, C).updateOptions(o) ||
|
|
5992
|
+
to.has(i) || (o[i] = r === null ? void 0 : r);
|
|
5993
|
+
h(this, C) && Object.keys(o).length > 0 && (h(this, C).updateOptions(o) || b(this, x, ds).call(this)), "mobilePresentation" in t && b(this, x, Ct).call(this, Lt()), "collapseBadgesBelow" in t && b(this, x, St).call(this, this.getBoundingClientRect().width);
|
|
5903
5994
|
}
|
|
5904
5995
|
/** Activate: ensure the picker exists (a DOM move destroyed it in disconnect()). */
|
|
5905
5996
|
connect() {
|
|
5906
|
-
!h(this, C) && !
|
|
5997
|
+
!h(this, C) && !b(this, x, as).call(this) && b(this, x, Tt).call(this);
|
|
5907
5998
|
}
|
|
5908
5999
|
/** Deactivate: tear the picker down (rebuilt on the next connect). */
|
|
5909
6000
|
disconnect() {
|
|
@@ -5919,7 +6010,7 @@ class it extends Qt {
|
|
|
5919
6010
|
* set before the dropdown can open.
|
|
5920
6011
|
*/
|
|
5921
6012
|
environmentChanged(t) {
|
|
5922
|
-
|
|
6013
|
+
b(this, x, Ct).call(this, t);
|
|
5923
6014
|
}
|
|
5924
6015
|
/**
|
|
5925
6016
|
* This element's own border box changed (core §12.9 `resized`). Overriding the
|
|
@@ -5930,7 +6021,7 @@ class it extends Qt {
|
|
|
5930
6021
|
* below` is set; otherwise it's a cheap no-op.
|
|
5931
6022
|
*/
|
|
5932
6023
|
resized({ width: t }) {
|
|
5933
|
-
|
|
6024
|
+
b(this, x, St).call(this, t);
|
|
5934
6025
|
}
|
|
5935
6026
|
// ── non-input public API ──────────────────────────────────────────────────
|
|
5936
6027
|
/** Form field name (mirrors the `name` attribute → `formFieldId`). */
|
|
@@ -6062,22 +6153,22 @@ class it extends Qt {
|
|
|
6062
6153
|
* gate never re-closes. Fires the `ready` event on the first build.
|
|
6063
6154
|
*/
|
|
6064
6155
|
ready() {
|
|
6065
|
-
I(this,
|
|
6156
|
+
I(this, Ke, !0), this.flush(), this.isConnected && !h(this, C) && b(this, x, Tt).call(this);
|
|
6066
6157
|
}
|
|
6067
6158
|
/** Whether the picker has been built (the `ready` event has fired). False while a `defer` gate is still held. */
|
|
6068
6159
|
get isReady() {
|
|
6069
6160
|
return this.hasAttribute("is-ready");
|
|
6070
6161
|
}
|
|
6071
6162
|
}
|
|
6072
|
-
Q = new WeakMap(), C = new WeakMap(),
|
|
6163
|
+
Q = new WeakMap(), C = new WeakMap(), ge = new WeakMap(), ut = new WeakMap(), Ke = new WeakMap(), mt = new WeakMap(), pt = new WeakMap(), ft = new WeakMap(), We = new WeakMap(), je = new WeakMap(), Oe = new WeakMap(), x = new WeakSet(), /** Whether the initial render is being held by the `defer` gate (not yet released). */
|
|
6073
6164
|
as = function() {
|
|
6074
|
-
return this.config.deferRender === !0 && !h(this,
|
|
6165
|
+
return this.config.deferRender === !0 && !h(this, Ke);
|
|
6075
6166
|
}, /** Resolve `mobile-presentation` against `env` and relay it to the live picker. */
|
|
6076
6167
|
Ct = function(t) {
|
|
6077
6168
|
var r;
|
|
6078
6169
|
const o = this.config.mobilePresentation ?? "auto", i = Hi(o, t);
|
|
6079
6170
|
(r = h(this, C)) == null || r.setPresentation(i === "modal" ? "fullscreen" : i);
|
|
6080
|
-
},
|
|
6171
|
+
}, be = new WeakMap(), /**
|
|
6081
6172
|
* Resolve `collapse-badges-below` against `width` and relay the decision to the
|
|
6082
6173
|
* live picker. The override is pushed via `updateOptions` (never written back to
|
|
6083
6174
|
* `this.config`), so `this.config.badgesDisplayMode` stays the consumer's truth
|
|
@@ -6087,15 +6178,15 @@ Ct = function(t) {
|
|
|
6087
6178
|
St = function(t) {
|
|
6088
6179
|
const o = this.config.collapseBadgesBelow;
|
|
6089
6180
|
if (o == null) {
|
|
6090
|
-
h(this,
|
|
6181
|
+
h(this, be) && (I(this, be, !1), b(this, x, ls).call(this));
|
|
6091
6182
|
return;
|
|
6092
6183
|
}
|
|
6093
6184
|
const i = t > 0 && t < o;
|
|
6094
|
-
i !== h(this,
|
|
6185
|
+
i !== h(this, be) && (I(this, be, i), i ? b(this, x, cs).call(this, "count") : b(this, x, ls).call(this));
|
|
6095
6186
|
}, /** Re-assert the consumer's configured badges mode from the pristine base config. */
|
|
6096
6187
|
ls = function() {
|
|
6097
6188
|
const t = this.config.badgesDisplayMode ?? "badges";
|
|
6098
|
-
|
|
6189
|
+
b(this, x, cs).call(this, t);
|
|
6099
6190
|
}, /** Relay a badges-display-mode override to the live picker (never written to `this.config`). */
|
|
6100
6191
|
cs = function(t) {
|
|
6101
6192
|
var o;
|
|
@@ -6103,29 +6194,29 @@ cs = function(t) {
|
|
|
6103
6194
|
}, // ── picker lifecycle ──────────────────────────────────────────────────────
|
|
6104
6195
|
ds = function() {
|
|
6105
6196
|
var o;
|
|
6106
|
-
const t = h(this, C) ?
|
|
6107
|
-
(o = h(this, C)) == null || o.destroy(), I(this, C, void 0),
|
|
6197
|
+
const t = h(this, C) ? b(this, x, Ae).call(this) : void 0;
|
|
6198
|
+
(o = h(this, C)) == null || o.destroy(), I(this, C, void 0), b(this, x, Tt).call(this, t);
|
|
6108
6199
|
}, Tt = function(t) {
|
|
6109
|
-
|
|
6110
|
-
const o =
|
|
6111
|
-
I(this, ut, r), a && a.length > 0 ? h(this,
|
|
6112
|
-
},
|
|
6113
|
-
if (h(this,
|
|
6200
|
+
b(this, x, Ao).call(this), b(this, x, Do).call(this);
|
|
6201
|
+
const o = b(this, x, zo).call(this), i = b(this, x, No).call(this), r = JSON.stringify(i ?? null), a = t !== void 0 && t.length > 0 && r === h(this, ut) ? t : i;
|
|
6202
|
+
I(this, ut, r), a && a.length > 0 ? h(this, ge).dataset.initialValues = JSON.stringify(a) : delete h(this, ge).dataset.initialValues, I(this, C, new hn(h(this, ge), o)), b(this, x, hs).call(this), b(this, x, ps).call(this), b(this, x, Ct).call(this, Lt()), I(this, be, !1), b(this, x, St).call(this, this.getBoundingClientRect().width), this.hasAttribute("is-ready") || (I(this, Ke, !0), this.setAttribute("is-ready", ""), this.emit("ready"));
|
|
6203
|
+
}, Ao = function() {
|
|
6204
|
+
if (h(this, ge)) return;
|
|
6114
6205
|
const t = document.createElement("div");
|
|
6115
|
-
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), h(this, Q).appendChild(t), I(this, mt, Ni(h(this, Q), { position: "first", className: "ms-custom-styles" })), I(this,
|
|
6206
|
+
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), h(this, Q).appendChild(t), I(this, mt, Ni(h(this, Q), { position: "first", className: "ms-custom-styles" })), I(this, ge, t);
|
|
6116
6207
|
}, /**
|
|
6117
6208
|
* Build the picker config from the merged `this.config`, minus the keys the
|
|
6118
6209
|
* picker doesn't own, plus the runtime wiring (event bridges, container, host,
|
|
6119
6210
|
* declarative option data + member defaults, counter default).
|
|
6120
6211
|
*/
|
|
6121
|
-
|
|
6212
|
+
zo = function() {
|
|
6122
6213
|
const t = { ...this.config };
|
|
6123
|
-
for (const i of
|
|
6214
|
+
for (const i of to) delete t[i];
|
|
6124
6215
|
for (const i of Object.keys(t))
|
|
6125
6216
|
t[i] === null && delete t[i];
|
|
6126
6217
|
let o = t.options;
|
|
6127
|
-
if (h(this,
|
|
6128
|
-
o && o.length > 0 && W.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = h(this,
|
|
6218
|
+
if (h(this, We) && h(this, je))
|
|
6219
|
+
o && o.length > 0 && W.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = h(this, je);
|
|
6129
6220
|
else if (!o || o.length === 0) {
|
|
6130
6221
|
const i = this.config.optionsSource;
|
|
6131
6222
|
if (i != null) {
|
|
@@ -6136,7 +6227,7 @@ Ao = function() {
|
|
|
6136
6227
|
a && W.error(`[MultiSelectElement] ${a}`), o = n;
|
|
6137
6228
|
}
|
|
6138
6229
|
}
|
|
6139
|
-
if (t.options = o, h(this,
|
|
6230
|
+
if (t.options = o, h(this, We))
|
|
6140
6231
|
for (const { key: i, member: r, callbackKey: n } of kn)
|
|
6141
6232
|
t[i] === void 0 && !t[n] && (t[i] = r);
|
|
6142
6233
|
return t.getCounterCallback || (t.getCounterCallback = (i, r) => r !== void 0 ? `+${r} more` : `${i} selected`), t.onSelect = (i) => {
|
|
@@ -6144,19 +6235,19 @@ Ao = function() {
|
|
|
6144
6235
|
this.emit("select", {
|
|
6145
6236
|
option: i,
|
|
6146
6237
|
selectedOptions: ((r = h(this, C)) == null ? void 0 : r.getSelected()) ?? [],
|
|
6147
|
-
selectedValues:
|
|
6238
|
+
selectedValues: b(this, x, Ae).call(this)
|
|
6148
6239
|
});
|
|
6149
6240
|
}, t.onDeselect = (i) => {
|
|
6150
6241
|
var r;
|
|
6151
6242
|
this.emit("deselect", {
|
|
6152
6243
|
option: i,
|
|
6153
6244
|
selectedOptions: ((r = h(this, C)) == null ? void 0 : r.getSelected()) ?? [],
|
|
6154
|
-
selectedValues:
|
|
6245
|
+
selectedValues: b(this, x, Ae).call(this)
|
|
6155
6246
|
});
|
|
6156
6247
|
}, t.onChange = (i) => {
|
|
6157
6248
|
this.emit("change", {
|
|
6158
6249
|
selectedOptions: i,
|
|
6159
|
-
selectedValues:
|
|
6250
|
+
selectedValues: b(this, x, Ae).call(this)
|
|
6160
6251
|
});
|
|
6161
6252
|
}, t.onAddNew = (i) => {
|
|
6162
6253
|
var r;
|
|
@@ -6164,15 +6255,15 @@ Ao = function() {
|
|
|
6164
6255
|
value: i.value,
|
|
6165
6256
|
option: i.option,
|
|
6166
6257
|
selectedOptions: ((r = h(this, C)) == null ? void 0 : r.getSelected()) ?? [],
|
|
6167
|
-
selectedValues:
|
|
6258
|
+
selectedValues: b(this, x, Ae).call(this)
|
|
6168
6259
|
});
|
|
6169
6260
|
}, t.container = h(this, Q), t.hostElement = this, t;
|
|
6170
|
-
},
|
|
6171
|
-
if (h(this,
|
|
6172
|
-
return h(this,
|
|
6261
|
+
}, No = function() {
|
|
6262
|
+
if (h(this, Oe) && h(this, Oe).length > 0)
|
|
6263
|
+
return h(this, Oe);
|
|
6173
6264
|
const t = this.config.initialValues;
|
|
6174
6265
|
return t && t.length > 0 ? t : void 0;
|
|
6175
|
-
},
|
|
6266
|
+
}, Ae = function() {
|
|
6176
6267
|
var o;
|
|
6177
6268
|
const t = (o = h(this, C)) == null ? void 0 : o.getValue();
|
|
6178
6269
|
return t == null ? [] : Array.isArray(t) ? t : [t];
|
|
@@ -6180,16 +6271,16 @@ Ao = function() {
|
|
|
6180
6271
|
hs = function() {
|
|
6181
6272
|
const t = h(this, mt);
|
|
6182
6273
|
if (!t) return;
|
|
6183
|
-
const o = this.config.customStylesCallback;
|
|
6274
|
+
const o = this.config.customStylesCallback, i = this.config.customStyles ?? null;
|
|
6184
6275
|
if (typeof o != "function") {
|
|
6185
|
-
t.
|
|
6276
|
+
t.set(i), i && b(this, x, us).call(this, i);
|
|
6186
6277
|
return;
|
|
6187
6278
|
}
|
|
6188
6279
|
try {
|
|
6189
|
-
const
|
|
6190
|
-
t.set(
|
|
6191
|
-
} catch (
|
|
6192
|
-
W.warn("[MultiSelectElement] customStylesCallback threw",
|
|
6280
|
+
const r = o();
|
|
6281
|
+
t.set(r), r && b(this, x, us).call(this, r);
|
|
6282
|
+
} catch (r) {
|
|
6283
|
+
W.warn("[MultiSelectElement] customStylesCallback threw", r), t.set(i);
|
|
6193
6284
|
}
|
|
6194
6285
|
}, /**
|
|
6195
6286
|
* Dev-only lint: warn when `customStylesCallback` *sets* a `--ms-*` variable
|
|
@@ -6200,7 +6291,7 @@ hs = function() {
|
|
|
6200
6291
|
* De-duped per instance. If you genuinely define a `--ms-*` var for your own
|
|
6201
6292
|
* custom-rendered content, ignore the warning (or use a different prefix).
|
|
6202
6293
|
*/
|
|
6203
|
-
|
|
6294
|
+
us = function(t) {
|
|
6204
6295
|
const o = _n();
|
|
6205
6296
|
if (o.size !== 0)
|
|
6206
6297
|
for (const { name: i, suggestions: r } of Ri(t, { prefix: "--ms-", consumed: o }))
|
|
@@ -6209,18 +6300,18 @@ No = function(t) {
|
|
|
6209
6300
|
));
|
|
6210
6301
|
}, // ── CSS-var sugar ─────────────────────────────────────────────────────────
|
|
6211
6302
|
$o = function() {
|
|
6212
|
-
for (const t of Object.keys(yt))
|
|
6303
|
+
for (const t of Object.keys(yt)) b(this, x, ms).call(this, yt[t], this.config[t]);
|
|
6213
6304
|
}, Vo = function(t) {
|
|
6214
6305
|
for (const o of Object.keys(yt))
|
|
6215
|
-
o in t &&
|
|
6216
|
-
},
|
|
6306
|
+
o in t && b(this, x, ms).call(this, yt[o], t[o]);
|
|
6307
|
+
}, ms = function(t, o) {
|
|
6217
6308
|
o == null || o === "" ? this.style.removeProperty(t) : this.style.setProperty(t, String(o));
|
|
6218
6309
|
}, // ── declarative <option> parsing (light DOM, once) ────────────────────────
|
|
6219
6310
|
Do = function() {
|
|
6220
6311
|
if (h(this, ft)) return;
|
|
6221
6312
|
I(this, ft, !0);
|
|
6222
|
-
const t =
|
|
6223
|
-
t && (I(this,
|
|
6313
|
+
const t = b(this, x, Ro).call(this);
|
|
6314
|
+
t && (I(this, je, t), I(this, We, !0));
|
|
6224
6315
|
}, Ro = function() {
|
|
6225
6316
|
const t = Array.from(this.children);
|
|
6226
6317
|
if (t.length === 0) return null;
|
|
@@ -6232,7 +6323,7 @@ Do = function() {
|
|
|
6232
6323
|
value: n.value || ((c = n.textContent) == null ? void 0 : c.trim()) || "",
|
|
6233
6324
|
label: ((d = n.textContent) == null ? void 0 : d.trim()) || n.value || ""
|
|
6234
6325
|
};
|
|
6235
|
-
a && (l.group = a), n.hasAttribute("selected") && (h(this,
|
|
6326
|
+
a && (l.group = a), n.hasAttribute("selected") && (h(this, Oe) ?? I(this, Oe, [])).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;
|
|
6236
6327
|
};
|
|
6237
6328
|
for (const n of t)
|
|
6238
6329
|
if (n.tagName === "OPTION")
|
|
@@ -6248,7 +6339,7 @@ Do = function() {
|
|
|
6248
6339
|
(n.tagName === "OPTION" || n.tagName === "OPTGROUP") && n.remove();
|
|
6249
6340
|
return o;
|
|
6250
6341
|
}, // ── debug panel (deprecated; kept for back-compat) ────────────────────────
|
|
6251
|
-
|
|
6342
|
+
ps = function() {
|
|
6252
6343
|
const t = h(this, Q).querySelector(".ms__debug-info");
|
|
6253
6344
|
if (t && t.remove(), !this.config.showDebugInfo) return;
|
|
6254
6345
|
const o = document.createElement("div");
|
|
@@ -6256,12 +6347,12 @@ ms = function() {
|
|
|
6256
6347
|
const i = document.createElement("details"), r = document.createElement("summary");
|
|
6257
6348
|
r.textContent = "Debug Info";
|
|
6258
6349
|
const n = document.createElement("div");
|
|
6259
|
-
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), h(this, Q).appendChild(o),
|
|
6260
|
-
},
|
|
6350
|
+
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), h(this, Q).appendChild(o), b(this, x, fs).call(this);
|
|
6351
|
+
}, fs = function() {
|
|
6261
6352
|
var l, c, d, u;
|
|
6262
6353
|
const t = h(this, Q).querySelector(".ms__debug-stats");
|
|
6263
6354
|
if (!t || !h(this, C)) return;
|
|
6264
|
-
const o = "2.2.0
|
|
6355
|
+
const o = "2.2.0", i = typeof window < "u" && ((c = (l = window.components) == null ? void 0 : l["web-multiselect"]) == null ? void 0 : c.getInstances().length) || 0, r = h(this, C).getSelected().length, n = ((d = this.config.options) == null ? void 0 : d.length) || 0, a = h(this, C);
|
|
6265
6356
|
t.innerHTML = `
|
|
6266
6357
|
<span>Version: ${o}</span>
|
|
6267
6358
|
<span>Total Instances: ${i}</span>
|
|
@@ -6272,7 +6363,7 @@ ms = function() {
|
|
|
6272
6363
|
<span>Search: ${a.searchTerm || "none"}</span>
|
|
6273
6364
|
<span>Loading: ${a.isLoading ? "Yes" : "No"}</span>
|
|
6274
6365
|
`, setTimeout(() => {
|
|
6275
|
-
this.config.showDebugInfo &&
|
|
6366
|
+
this.config.showDebugInfo && b(this, x, fs).call(this);
|
|
6276
6367
|
}, 500);
|
|
6277
6368
|
}, // Opt into the form-associated custom element lifecycle so form.reset() and
|
|
6278
6369
|
// form.elements see the control.
|
|
@@ -6281,7 +6372,7 @@ typeof customElements < "u" && !customElements.get("web-multiselect") && customE
|
|
|
6281
6372
|
Ei("web-multiselect", it, {
|
|
6282
6373
|
config: {
|
|
6283
6374
|
name: "@keenmate/web-multiselect",
|
|
6284
|
-
version: "2.2.0
|
|
6375
|
+
version: "2.2.0",
|
|
6285
6376
|
author: "Keenmate s.r.o.",
|
|
6286
6377
|
license: "MIT",
|
|
6287
6378
|
repository: "git+https://github.com/keenmate/web-multiselect.git",
|
|
@@ -6306,7 +6397,7 @@ export {
|
|
|
6306
6397
|
ai as observeEnvironment,
|
|
6307
6398
|
li as observeViewport,
|
|
6308
6399
|
pn as parseOptionsData,
|
|
6309
|
-
|
|
6310
|
-
|
|
6400
|
+
Pn as setCategoryLevel,
|
|
6401
|
+
Mn as setLogLevel,
|
|
6311
6402
|
Y as uiLogger
|
|
6312
6403
|
};
|