@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.
@@ -1,10 +1,10 @@
1
1
  var Ho = Object.defineProperty;
2
- var Ss = (s) => {
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) || Ss("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) ? Ss("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), v = (s, e, t) => (Ut(s, e, "access private method"), t);
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 z(s = {}) {
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 to = {
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 = so(Yo);
180
+ let xt = oo(Yo);
181
181
  const rt = /* @__PURE__ */ new Set(), nt = /* @__PURE__ */ new Set();
182
- let Oe = null, It = [], _t = !1;
183
- const Ts = 30;
184
- let Ae, kt = 0;
185
- function so(s) {
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 fs() {
195
+ function gs() {
196
196
  return typeof window < "u" && typeof window.matchMedia == "function";
197
197
  }
198
- function Is() {
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 Is() ? "ios" : "macos";
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) ? Is() ? "ios" : "macos" : /windows/i.test(t) ? "windows" : /linux/i.test(t) ? "linux" : "unknown";
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 qe(s) {
226
- return fs() && window.matchMedia(s).matches;
225
+ function Xe(s) {
226
+ return gs() && window.matchMedia(s).matches;
227
227
  }
228
- function gs() {
229
- if (!fs())
230
- return { ...to };
231
- const s = qe("(any-pointer: coarse)"), e = qe("(pointer: coarse)"), t = qe("(pointer: fine)"), o = qe("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a = ti();
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: qe("(orientation: portrait)") ? "portrait" : "landscape",
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 = gs(), e = Oe;
254
- if (Oe = s, !e || !si(e, s))
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 Os() {
260
- const s = Oe;
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 (Ae !== void 0)
266
+ if (ze !== void 0)
267
267
  return;
268
268
  const s = Date.now() - kt;
269
- s >= Ts ? (kt = Date.now(), Os()) : Ae = setTimeout(() => {
270
- Ae = void 0, kt = Date.now(), Os();
271
- }, Ts - s);
269
+ s >= Is ? (kt = Date.now(), Ms()) : ze = setTimeout(() => {
270
+ ze = void 0, kt = Date.now(), Ms();
271
+ }, Is - s);
272
272
  }
273
- const Pt = () => Ot(), oo = () => {
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", Pt) : typeof s.addListener == "function" && s.addListener(Pt);
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", Pt) : typeof s.removeListener == "function" && s.removeListener(Pt);
287
+ typeof s.removeEventListener == "function" ? s.removeEventListener("change", Mt) : typeof s.removeListener == "function" && s.removeListener(Mt);
288
288
  }
289
- function io() {
290
- if (!fs()) {
291
- Oe = { ...to };
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", oo), Oe = gs();
303
+ typeof window.addEventListener == "function" && window.addEventListener("resize", io), Me = bs();
304
304
  }
305
- function ro() {
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", oo), _t = !1, Ae !== void 0 && (clearTimeout(Ae), Ae = void 0), kt = 0, Oe = null;
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 Mt() {
310
+ function Pt() {
311
311
  return rt.size + nt.size;
312
312
  }
313
313
  function Lt() {
314
- return Oe ?? gs();
314
+ return Me ?? bs();
315
315
  }
316
316
  function ai(s, e = {}) {
317
- const t = Mt() === 0;
318
- rt.add(s), t && io(), e.immediate !== !1 && s(Lt());
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), Mt() === 0 && ro());
321
+ o && (o = !1, rt.delete(s), Pt() === 0 && no());
322
322
  };
323
323
  }
324
324
  function li(s, e = {}) {
325
- const t = Mt() === 0;
326
- nt.add(s), t && io(), e.immediate !== !1 && s(Lt());
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), Mt() === 0 && ro());
329
+ o && (o = !1, nt.delete(s), Pt() === 0 && no());
330
330
  };
331
331
  }
332
332
  function Sn(s) {
333
- xt = so(s), rt.size > 0 && Ot();
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 no(s) {
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 = no(e.target);
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 = no(s);
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 ao = /* @__PURE__ */ new Map();
417
+ const lo = /* @__PURE__ */ new Map();
418
418
  function xi(s, e) {
419
- ao.set(s.toLowerCase(), e);
419
+ lo.set(s.toLowerCase(), e);
420
420
  }
421
421
  function _i(s) {
422
- return ao.get(s.toLowerCase());
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
- }, Ms = /* @__PURE__ */ new WeakSet();
445
+ }, Ls = /* @__PURE__ */ new WeakSet();
446
446
  let Oi = 0;
447
- const Pi = { trace() {
447
+ const Mi = { trace() {
448
448
  }, debug() {
449
449
  }, info() {
450
450
  }, warn() {
451
451
  }, error() {
452
- } }, Mi = new Proxy({}, { get: () => Pi });
453
- var me, ct, _e, dt, ke, ht, Bt, Ce, pe, Se, Te, Ne, $e, Ve, De, Re, Be, Ht, ie, He, O, lo, co, ho, Z, uo, mo, es, ts, tt, ss, po;
454
- const xe = class xe extends Ii {
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, O);
458
- L(this, me, {});
457
+ L(this, M);
458
+ L(this, pe, {});
459
459
  L(this, ct, /* @__PURE__ */ new Map());
460
- L(this, _e, /* @__PURE__ */ new Map());
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, ke, /* @__PURE__ */ new Map());
463
+ L(this, Ce, /* @__PURE__ */ new Map());
464
464
  L(this, ht, Jo());
465
- L(this, Bt, () => v(this, O, ss).call(this));
466
- L(this, Ce, null);
467
- L(this, pe, !1);
468
- L(this, Se, []);
469
- L(this, Te, !1);
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, Ne, null);
480
- L(this, $e, !1);
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 per-element ResizeObserver; set only while connected AND `resized` is overridden. */
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, He);
490
+ L(this, Fe);
491
491
  const t = this.constructor, o = t.inputs ?? [], i = Ti(t.events);
492
- v(this, O, ho).call(this, o, i);
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, _e).set(r.attribute, r);
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
- v(this, O, lo).call(this, o), v(this, O, uo).call(this, o), v(this, O, mo).call(this, i);
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, $e))
506
+ if (h(this, Ve))
507
507
  return;
508
- if (t === "dir" && !h(this, _e).has("dir")) {
509
- h(this, Te) && this.directionChanged(this.isRTL);
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, _e).get(t);
513
- if (!r || !h(this, Te) && ((a = h(this, Ne)) != null && a.has(r.configKey)))
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
- v(this, O, Z).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = v(this, O, co).call(this, r);
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
- v(this, O, ts).call(this, n);
521
+ b(this, M, ts).call(this, n);
522
522
  }
523
523
  connectedCallback() {
524
- vi(this.localName, this), h(this, Te) || (I(this, Te, !0), I(this, Ne, null), I(this, pe, !0)), v(this, O, tt).call(this), this.connect(), this.environmentChanged !== xe.prototype.environmentChanged && I(this, Ve, ai((t) => this.environmentChanged(t))), this.viewportChanged !== xe.prototype.viewportChanged && I(this, De, li((t) => this.viewportChanged(t))), this.resized !== xe.prototype.resized && I(this, Re, bi(this, (t) => this.resized(t), { immediate: !1 }));
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, Ve)) == null || t.call(this), I(this, Ve, void 0), (o = h(this, De)) == null || o.call(this), I(this, De, void 0), (i = h(this, Re)) == null || i.call(this), I(this, Re, void 0), this.disconnect();
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, _e).get(o);
535
- r && v(this, O, es).call(this, r, i);
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
- v(this, O, tt).call(this);
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(), v(this, O, tt).call(this);
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
- v(this, O, tt).call(this);
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, Ce) && !h(this, pe) ? Promise.resolve() : new Promise((t) => h(this, Se).push(t));
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, me);
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, He))
594
- return h(this, He);
593
+ if (h(this, Fe))
594
+ return h(this, Fe);
595
595
  const t = _i(this.localName);
596
596
  if (!t)
597
- return Mi;
597
+ return Pi;
598
598
  const o = h(this, Ht) ?? I(this, Ht, `${this.localName}#${this.id || ++Oi}`);
599
- return I(this, He, t.forInstance(o, () => h(this, ie)));
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, Be))
731
- return h(this, Be);
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, Be, this.attachInternals());
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, me)[t];
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
- me = new WeakMap(), ct = new WeakMap(), _e = new WeakMap(), dt = new WeakMap(), ke = new WeakMap(), ht = new WeakMap(), Bt = new WeakMap(), Ce = new WeakMap(), pe = new WeakMap(), Se = new WeakMap(), Te = new WeakMap(), Ne = new WeakMap(), $e = new WeakMap(), Ve = new WeakMap(), De = new WeakMap(), Re = new WeakMap(), Be = new WeakMap(), Ht = new WeakMap(), ie = new WeakMap(), He = new WeakMap(), O = new WeakSet(), // ── internals ─────────────────────────────────────────────────────────────
805
- lo = function(t) {
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
- v(this, O, Z).call(this, `converter for "${i.configKey}" threw computing its default; using \`default\``, n), r = i.default;
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, me)[i.configKey] = r, i.field && (this[i.field] = r);
815
+ h(this, pe)[i.configKey] = r, i.field && (this[i.field] = r);
816
816
  }
817
- }, co = function(t) {
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
- ho = function(t, o) {
820
+ uo = function(t, o) {
821
821
  var l;
822
822
  const i = this.constructor;
823
- if (Ms.has(i))
823
+ if (Ls.has(i))
824
824
  return;
825
- Ms.add(i);
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) && v(this, O, Z).call(this, `invalid input table: duplicate configKey "${c.configKey}"`), r.add(c.configKey), c.attribute && (n.has(c.attribute) && v(this, O, Z).call(this, `invalid input table: duplicate attribute "${c.attribute}"`), n.add(c.attribute)), c.reflect && !c.attribute && v(this, O, Z).call(this, `invalid input table: "${c.configKey}" has reflect:true but no attribute to reflect to`), c.reflect && !((l = c.converter) != null && l.toAttribute) && v(this, O, Z).call(this, `invalid input table: "${c.configKey}" has reflect:true but its converter has no toAttribute`);
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) && v(this, O, Z).call(this, `invalid event table: duplicate event "${c.name}"`), a.add(c.name), /^[a-z][a-z0-9-]*$/.test(c.name) || v(this, O, Z).call(this, `invalid event table: event "${c.name}" should be lowercase kebab-case (e.g. "date-select")`), c.property && r.has(c.property) && v(this, O, Z).call(this, `invalid event table: event "${c.name}" property "${c.property}" collides with an input configKey`);
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
- }, uo = function(t) {
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, me)[i],
846
- set: (a) => v(this, O, es).call(this, o, a)
847
- }), r && ((h(this, Ne) ?? I(this, Ne, /* @__PURE__ */ new Set())).add(i), this[i] = n);
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
- mo = function(t) {
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, ke).get(r) ?? null,
863
+ get: () => h(this, Ce).get(r) ?? null,
864
864
  set: (l) => {
865
- const c = h(this, ke).get(r);
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, ke).set(r, d), this.addEventListener(r, d);
868
+ h(this, Ce).set(r, d), this.addEventListener(r, d);
869
869
  } else
870
- h(this, ke).delete(r);
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
- v(this, O, Z).call(this, `rejected invalid value for property "${t.configKey}"; keeping previous value`, o);
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 (v(this, O, ts).call(this, i), t.reflect && t.attribute && ((r = t.converter) != null && r.toAttribute)) {
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, $e, !0);
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, $e, !1);
887
+ I(this, Ve, !1);
888
888
  }
889
889
  }
890
890
  }, ts = function(t) {
891
- h(this, me)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" && I(this, pe, !0), (h(this, Ce) ?? I(this, Ce, {}))[t.configKey] = t.value, h(this, ht).schedule(h(this, Bt)));
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(), v(this, O, ss).call(this);
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, pe), o = h(this, Ce);
899
- I(this, pe, !1), I(this, Ce, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o), v(this, O, po).call(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
- po = function() {
902
- if (h(this, Se).length === 0)
901
+ fo = function() {
902
+ if (h(this, Te).length === 0)
903
903
  return;
904
- const t = h(this, Se);
905
- I(this, Se, []);
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(xe, "inputs"), /**
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(xe, "events");
915
- let Qt = xe;
916
- function Ls(s, e, t) {
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: () => Ls(s, e),
935
+ register: () => Es(s, e),
936
936
  getInstances: () => yi(s)
937
937
  };
938
- return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && Ls(s, e), n;
938
+ return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && Es(s, e), n;
939
939
  }
940
- const Es = /* @__PURE__ */ new Map(), As = /* @__PURE__ */ new WeakMap();
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 = As.get(s);
957
- t || As.set(s, t = /* @__PURE__ */ new Set());
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 = Es.get(n);
966
- return a || (a = new CSSStyleSheet(), a.replaceSync(n), Es.set(n, a)), a;
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 fo(s) {
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*(${fo(e)}[a-z0-9-]+)`, "gi");
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(`(${fo(e)}[a-z0-9-]+)\\s*:`, "gi");
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 Xe(s) {
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 bs = "km-overlay-activated", Wi = Symbol("km-overlay-all-groups"), At = /* @__PURE__ */ new Set(), Ye = /* @__PURE__ */ new Map();
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 vs() {
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 go(s) {
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 || !vs() || (document.addEventListener(bs, go), zt = !0);
1085
+ zt || !ws() || (document.addEventListener(vs, bo), zt = !0);
1086
1086
  }
1087
1087
  function Ui() {
1088
- zt && At.size === 0 && vs() && (document.removeEventListener(bs, go), zt = !1);
1088
+ zt && At.size === 0 && ws() && (document.removeEventListener(vs, bo), zt = !1);
1089
1089
  }
1090
1090
  function qi(s, e) {
1091
- vs() && document.dispatchEvent(new CustomEvent(bs, { detail: { source: s, group: e } }));
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
- }, zs = ["trace", "debug", "info", "warn", "error"], Nt = () => {
1114
+ }, Ns = ["trace", "debug", "info", "warn", "error"], Nt = () => {
1115
1115
  };
1116
1116
  let Ji = "km-log";
1117
- function Ns(s) {
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 ? Ns(s) : e.log !== void 0 ? Ns("log") : Nt;
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 ue;
1135
+ let me;
1136
1136
  const $t = {};
1137
- class bo {
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(ue ? ue.getLevel() : "WARN");
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 = (zs[e] ?? "silent").toUpperCase();
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
- zs.forEach((t, o) => {
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 (ue && ue !== this && (this.inheritedLevel = Ze(ue.getLevel())), this.replaceLoggingMethods(), ue === this)
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
- ue = new bo(void 0, Zi);
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 bo(s, ue.methodFactory)), e;
1227
+ return e || (e = $t[s] = new vo(s, me.methodFactory)), e;
1228
1228
  }
1229
- const er = ["INIT", "DATA", "UI"], tr = "debug", $s = [
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
- ], Vs = /* @__PURE__ */ new WeakSet();
1246
+ ], Ds = /* @__PURE__ */ new WeakSet();
1247
1247
  function sr(s, e, t) {
1248
- if (Vs.has(s))
1248
+ if (Ds.has(s))
1249
1249
  return;
1250
- Vs.add(s);
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 = $s[n % $s.length], c = Qi(a);
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 be = Math.min, ne = Math.max, Vt = Math.round, vt = Math.floor, ae = (s) => ({
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 vo(s, e, t) {
1322
- return ne(s, be(e, t));
1321
+ function wo(s, e, t) {
1322
+ return ne(s, ve(e, t));
1323
1323
  }
1324
- function je(s, e) {
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 Ge(s) {
1330
+ function Ue(s) {
1331
1331
  return s.split("-")[1];
1332
1332
  }
1333
- function wo(s) {
1333
+ function yo(s) {
1334
1334
  return s === "x" ? "y" : "x";
1335
1335
  }
1336
- function ws(s) {
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 ys(s) {
1344
- return wo(re(s));
1343
+ function xs(s) {
1344
+ return yo(re(s));
1345
1345
  }
1346
1346
  function lr(s, e, t) {
1347
1347
  t === void 0 && (t = !1);
1348
- const o = Ge(s), i = ys(s), r = ws(i);
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 Ds = ["left", "right"], Rs = ["right", "left"], dr = ["top", "bottom"], hr = ["bottom", "top"];
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 ? Rs : Ds : e ? Ds : Rs;
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 = Ge(s);
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 yo(s) {
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 Bs(s, e, t) {
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 = ys(e), a = ws(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;
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 = Ge(e);
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
- } = je(e, s), g = yo(p), y = a[f ? u === "floating" ? "reference" : "floating" : u], b = Rt(await r.getClippingRect({
1474
- element: (t = await (r.isElement == null ? void 0 : r.isElement(y))) == null || t ? y : y.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(a.floating)),
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
- })), _ = u === "floating" ? {
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)), P = await (r.isElement == null ? void 0 : r.isElement(k)) && await (r.getScale == null ? void 0 : r.getScale(k)) || {
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
- }, N = Rt(r.convertOffsetParentRelativeRectToViewportRelativeRect ? await r.convertOffsetParentRelativeRectToViewportRelativeRect({
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: (b.top - N.top + g.top) / P.y,
1494
- bottom: (N.bottom - b.bottom + g.bottom) / P.y,
1495
- left: (b.left - N.left + g.left) / P.x,
1496
- right: (N.right - b.right + g.right) / P.x
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
- } = Bs(c, o, l), f = o, p = 0;
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 y = r[w];
1520
- if (!y)
1519
+ const _ = r[w];
1520
+ if (!_)
1521
1521
  continue;
1522
1522
  const {
1523
- name: b,
1524
- fn: _
1525
- } = y, {
1523
+ name: v,
1524
+ fn: y
1525
+ } = _, {
1526
1526
  x: k,
1527
- y: P,
1528
- data: N,
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 = P ?? u, g[b] = {
1545
- ...g[b],
1546
- ...N
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
- } = Bs(c, f, l)), w = -1);
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
- } = je(s, e) || {};
1578
+ } = Ge(s, e) || {};
1579
1579
  if (c == null)
1580
1580
  return {};
1581
- const u = yo(d), f = {
1581
+ const u = xo(d), f = {
1582
1582
  x: t,
1583
1583
  y: o
1584
- }, p = ys(i), g = ws(p), w = await n.getDimensions(c), y = p === "y", b = y ? "top" : "left", _ = y ? "bottom" : "right", k = y ? "clientHeight" : "clientWidth", P = r.reference[g] + r.reference[p] - f[p] - r.floating[g], N = f[p] - r.reference[p], D = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(c));
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 = P / 2 - N / 2, V = j / 2 - w[g] / 2 - 1, S = be(u[b], V), M = be(u[_], V), A = j - w[g] - M, B = j / 2 - w[g] / 2 + q, T = vo(S, B, A), F = !l.arrow && Ge(i) != null && B !== T && r.reference[g] / 2 - (B < S ? S : M) - w[g] / 2 < 0, se = F ? B < S ? B - S : B - A : 0;
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
- ...y
1621
- } = je(s, e);
1620
+ ..._
1621
+ } = Ge(s, e);
1622
1622
  if ((t = r.arrow) != null && t.alignmentOffset)
1623
1623
  return {};
1624
- const b = Pe(i), _ = re(a), k = Pe(a) === a, P = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), N = f || (k || !w ? [Dt(a)] : cr(a)), D = g !== "none";
1625
- !f && D && N.push(...mr(a, w, g, P));
1626
- const j = [a, ...N], q = await l.detectOverflow(e, y), V = [];
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[b]), u) {
1629
- const T = lr(i, n, P);
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 M, A;
1637
- const T = (((M = r.flip) == null ? void 0 : M.index) || 0) + 1, F = j[T];
1638
- if (F && (!(u === "alignment" ? _ !== re(F) : !1) || // We leave the current main axis only if every placement on that axis
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) === _ ? J.overflows[0] > 0 : !0)))
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 = (A = S.filter((we) => we.overflows[0] <= 0).sort((we, J) => we.overflows[1] - J.overflows[1])[0]) == null ? void 0 : A.placement;
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 we = (B = S.filter((J) => {
1655
+ const ye = (B = S.filter((J) => {
1656
1656
  if (D) {
1657
1657
  const de = re(J.placement);
1658
- return de === _ || // Create a bias to the `y` side axis due to horizontal
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
- we && (se = we);
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 = Ge(t), l = re(t) === "y", c = yr.has(n) ? -1 : 1, d = r && l ? -1 : 1, u = je(e, s);
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: P
1749
- } = _;
1748
+ y: O
1749
+ } = y;
1750
1750
  return {
1751
1751
  x: k,
1752
- y: P
1752
+ y: O
1753
1753
  };
1754
1754
  }
1755
1755
  },
1756
1756
  ...c
1757
- } = je(s, e), d = {
1757
+ } = Ge(s, e), d = {
1758
1758
  x: t,
1759
1759
  y: o
1760
- }, u = await r.detectOverflow(e, c), f = re(i), p = wo(f);
1760
+ }, u = await r.detectOverflow(e, c), f = re(i), p = yo(f);
1761
1761
  let g = d[p], w = d[f];
1762
- const y = (_, k) => vo(k + u[_ === "y" ? "top" : "left"], k, k - u[_ === "y" ? "bottom" : "right"]);
1763
- n && (g = y(p, g)), a && (w = y(f, w));
1764
- const b = l.fn({
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
- ...b,
1770
+ ...v,
1771
1771
  data: {
1772
- x: b.x - t,
1773
- y: b.y - o,
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
- } = je(s, e), l = await i.detectOverflow(e, a), c = Pe(t), d = Ge(t), u = re(t) === "y", {
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 y = p - l.top - l.bottom, b = f - l.left - l.right, _ = be(p - l[g], y), k = be(f - l[w], b), P = e.middlewareData.shift, N = !P;
1803
- let D = _, j = k;
1804
- P != null && P.enabled.x && (j = b), P != null && P.enabled.y && (D = y), N && !d && (u ? j = f - 2 * ne(l.left, l.right) : D = p - 2 * ne(l.top, l.bottom)), await n({
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 Ue(s) {
1822
- return xo(s) ? (s.nodeName || "").toLowerCase() : "#document";
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 = (xo(s) ? s.ownerDocument : s.document) || window.document) == null ? void 0 : e.documentElement;
1830
+ return (e = (_o(s) ? s.ownerDocument : s.document) || window.document) == null ? void 0 : e.documentElement;
1831
1831
  }
1832
- function xo(s) {
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 ve(s) {
1838
+ function we(s) {
1839
1839
  return Ft() ? s instanceof HTMLElement || s instanceof U(s).HTMLElement : !1;
1840
1840
  }
1841
- function Hs(s) {
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(Ue(s));
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/, ye = (s) => !!s && s !== "none";
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 xs(s) {
1870
+ function _s(s) {
1871
1871
  const e = ee(s) ? te(s) : s;
1872
- return ye(e.transform) || ye(e.translate) || ye(e.scale) || ye(e.rotate) || ye(e.perspective) || !_s() && (ye(e.backdropFilter) || ye(e.filter)) || Tr.test(e.willChange || "") || Ir.test(e.contain || "");
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 = Me(s);
1876
- for (; ve(e) && !at(e); ) {
1877
- if (xs(e))
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 = Me(e);
1881
+ e = Le(e);
1882
1882
  }
1883
1883
  return null;
1884
1884
  }
1885
- function _s() {
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(Ue(s));
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 Me(s) {
1904
- if (Ue(s) === "html")
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
- Hs(s) && s.host || // Fallback.
1910
+ Fs(s) && s.host || // Fallback.
1911
1911
  le(s)
1912
1912
  );
1913
- return Hs(e) ? e.host : e;
1913
+ return Fs(e) ? e.host : e;
1914
1914
  }
1915
- function _o(s) {
1916
- const e = Me(s);
1917
- return at(e) ? (s.ownerDocument || s).body : ve(e) && Kt(e) ? e : _o(e);
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 = _o(s), r = i === ((o = s.ownerDocument) == null ? void 0 : o.body), n = U(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 ko(s) {
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 = ve(s), r = i ? s.offsetWidth : t, n = i ? s.offsetHeight : o, a = Vt(t) !== r || Vt(o) !== n;
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 ks(s) {
1942
+ function Cs(s) {
1943
1943
  return ee(s) ? s : s.contextElement;
1944
1944
  }
1945
- function ze(s) {
1946
- const e = ks(s);
1947
- if (!ve(e))
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
- } = ko(e);
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 Pr = /* @__PURE__ */ ae(0);
1961
- function Co(s) {
1960
+ const Mr = /* @__PURE__ */ ae(0);
1961
+ function So(s) {
1962
1962
  const e = U(s);
1963
- return !_s() || !e.visualViewport ? Pr : {
1963
+ return !ks() || !e.visualViewport ? Mr : {
1964
1964
  x: e.visualViewport.offsetLeft,
1965
1965
  y: e.visualViewport.offsetTop
1966
1966
  };
1967
1967
  }
1968
- function Mr(s, e, t) {
1968
+ function Pr(s, e, t) {
1969
1969
  return e === void 0 && (e = !1), !!t && e && t === U(s);
1970
1970
  }
1971
- function Le(s, e, t, o) {
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 = ks(s);
1973
+ const i = s.getBoundingClientRect(), r = Cs(s);
1974
1974
  let n = ae(1);
1975
- e && (o ? ee(o) && (n = ze(o)) : n = ze(s));
1976
- const a = Mr(r, t, o) ? Co(r) : ae(0);
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 y = ze(w), b = w.getBoundingClientRect(), _ = te(w), k = b.left + (w.clientLeft + parseFloat(_.paddingLeft)) * y.x, P = b.top + (w.clientTop + parseFloat(_.paddingTop)) * y.y;
1983
- l *= y.x, c *= y.y, d *= y.x, u *= y.y, l += k, c += P, g = U(w), w = is(g);
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 : Le(le(s)).left + t;
1995
+ return e ? e.left + t : Ee(le(s)).left + t;
1996
1996
  }
1997
- function So(s, e) {
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 = ve(o);
2019
- if ((u || !r) && ((Ue(o) !== "body" || Kt(n)) && (l = jt(o)), u)) {
2020
- const p = Le(o);
2021
- c = ze(o), d.x = p.x + o.clientLeft, d.y = p.y + o.clientTop;
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 ? So(n, l) : ae(0);
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 = !_s() || e === "fixed";
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, y = Math.abs(r.clientWidth - p.clientWidth - w), b = getComputedStyle(r).scrollbarGutter === "stable both-edges" ? y / 2 : y;
2056
- b <= zr && (a -= b);
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 = Le(s, !0, e === "fixed"), o = t.top + s.clientTop, i = t.left + s.clientLeft, r = ze(s), n = s.clientWidth * r.x, a = s.clientHeight * r.y, l = i * r.x, c = o * r.y;
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 Fs(s, e, t) {
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 = Co(s);
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) && Ue(a) !== "body"), i = null;
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 ? Me(s) : s;
2099
+ let n = r ? Le(s) : s;
2100
2100
  for (; ee(n) && !at(n); ) {
2101
- const a = te(n), l = xs(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 = Me(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 = Fs(e, n[0], i);
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 = Fs(e, n[f], i);
2117
- l = ne(p.top, l), c = be(p.right, c), d = be(p.bottom, d), u = ne(p.left, u);
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
- } = ko(s);
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 = ve(e), i = le(e), r = t === "fixed", n = Le(s, !0, r, e);
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) && ((Ue(e) !== "body" || Kt(i)) && (a = jt(e)), o)) {
2144
- const f = Le(e, !0, r, e);
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 ? So(i, a) : ae(0), d = n.left + a.scrollLeft - l.x - c.x, u = n.top + a.scrollTop - l.y - c.y;
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 Ks(s, e) {
2160
- if (!ve(s) || te(s).position === "fixed")
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 To(s, e) {
2167
+ function Io(s, e) {
2168
2168
  const t = U(s);
2169
2169
  if (Wt(s))
2170
2170
  return t;
2171
- if (!ve(s)) {
2172
- let i = Me(s);
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 = Me(i);
2176
+ i = Le(i);
2177
2177
  }
2178
2178
  return t;
2179
2179
  }
2180
- let o = Ks(s, e);
2180
+ let o = Ws(s, e);
2181
2181
  for (; o && Sr(o) && Jt(o); )
2182
- o = Ks(o, e);
2183
- return o && at(o) && Jt(o) && !xs(o) ? t : o || Or(s) || t;
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 || To, t = this.getDimensions, o = await t(s.floating);
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 Io = {
2200
+ const Oo = {
2201
2201
  convertOffsetParentRelativeRectToViewportRelativeRect: Lr,
2202
2202
  getDocumentElement: le,
2203
2203
  getClippingRect: Dr,
2204
- getOffsetParent: To,
2204
+ getOffsetParent: Io,
2205
2205
  getElementRects: Hr,
2206
2206
  getClientRects: Er,
2207
2207
  getDimensions: Rr,
2208
- getScale: ze,
2208
+ getScale: Ne,
2209
2209
  isElement: ee,
2210
2210
  isRTL: Fr
2211
2211
  };
2212
- function Oo(s, e) {
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: y
2228
+ height: _
2229
2229
  } = f;
2230
- if (d || e(), !w || !y)
2230
+ if (d || e(), !w || !_)
2231
2231
  return;
2232
- const b = vt(g), _ = vt(r.clientWidth - (p + w)), k = vt(r.clientHeight - (g + y)), P = vt(p), D = {
2233
- rootMargin: -b + "px " + -_ + "px " + -k + "px " + -P + "px",
2234
- threshold: ne(0, be(1, u)) || 1
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 (!Oo(f, s.getBoundingClientRect()))
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 = ks(s), d = i || r ? [...c ? lt(c) : [], ...e ? lt(e) : []] : [];
2275
- d.forEach((b) => {
2276
- i && b.addEventListener("scroll", t), r && b.addEventListener("resize", t);
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((b) => {
2281
- let [_] = b;
2282
- _ && _.target === c && p && e && (p.unobserve(e), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
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 ? Le(s) : null;
2288
- l && y();
2289
- function y() {
2290
- const b = Le(s);
2291
- w && !Oo(w, b) && t(), w = b, g = requestAnimationFrame(y);
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 b;
2295
- d.forEach((_) => {
2296
- i && _.removeEventListener("scroll", t), r && _.removeEventListener("resize", t);
2297
- }), u == null || u(), (b = p) == null || b.disconnect(), p = null, l && cancelAnimationFrame(g);
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
- ...Io,
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 Ws(s, e) {
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 = Ws(t, r);
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 ? { ...Io, getOffsetParent: () => ns(s) } : void 0), u = () => {
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: y, middlewareData: b }) => {
2435
- var _, k;
2436
- if (s.style.left = `${g}px`, s.style.top = `${w}px`, t.arrow && sn(t.arrow.element, y, b.arrow), a && !l && (l = !0, i = y, r = !1, n = Ws(t, !1)), (_ = t.onPlaced) == null || _.call(t, y), (k = t.onComputed) == null || k.call(t, { x: g, y: w, placement: y }), t.onDrift && e instanceof Element) {
2437
- const P = c ? ns(s) : window, N = Qr({ panel: s, reference: e, expectedX: g, expectedY: w, offsetParent: P });
2438
- N && t.onDrift(N);
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(_.clientX, _.clientY, 0, 0), n == null || n.update();
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 _ = s.followCursor ? u : s.trigger;
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
- }, y = () => {
2478
+ }, _ = () => {
2479
2479
  p(), i.show > 0 ? l = setTimeout(g, i.show) : g();
2480
- }, b = () => {
2480
+ }, v = () => {
2481
2481
  p(), i.hide > 0 ? c = setTimeout(w, i.hide) : w();
2482
2482
  };
2483
- return s.trigger.addEventListener("mouseenter", y), s.trigger.addEventListener("mouseleave", b), s.trigger.addEventListener("focusin", y), s.trigger.addEventListener("focusout", b), {
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", y), s.trigger.removeEventListener("mouseleave", b), s.trigger.removeEventListener("focusin", y), s.trigger.removeEventListener("focusout", b), w();
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 Mo = ["INIT", "DATA", "UI", "INTERACTION"], ce = nr("MULTISELECT", Mo), wt = ce.loggers.INIT, W = ce.loggers.DATA, Y = ce.loggers.UI, R = ce.loggers.INTERACTION, Tn = Mo.map((s) => `MULTISELECT:${s}`);
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 Pn(s) {
2537
+ function Mn(s) {
2538
2538
  ce.setLogLevel(s);
2539
2539
  }
2540
- function Mn(s, e) {
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 js {
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 Gs(s) {
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 Us(s, e, t = ".") {
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 qs(s, e = 0, t = 1, o = ".") {
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 he(s, e) {
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), y = "x", b = s.treePathSeparator || ".", _ = Gs();
2711
- let k = 0, P = null;
2712
- const N = (V) => o ? o(V) : t ? he(V, t) : void 0, D = {
2713
- treePathSeparator: b,
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(_.children);
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 (P) return P;
2724
- const V = [], S = s.isSorted ?? !1, M = s.sortCallback;
2725
- function A(B) {
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 && M && T.length > 0 && (T = M(T));
2727
+ S && P && T.length > 0 && (T = P(T));
2728
2728
  for (const F of T)
2729
- V.push(F), F.hasChildren && A(F);
2729
+ V.push(F), F.hasChildren && z(F);
2730
2730
  }
2731
- return A(_), P = V, V;
2731
+ return z(y), O = V, V;
2732
2732
  },
2733
2733
  insertArray(V) {
2734
- V = V || [], _.children = {}, k = 0, P = null;
2734
+ V = V || [], y.children = {}, k = 0, O = null;
2735
2735
  const S = [];
2736
- let M = V.map((A, B) => {
2737
- const T = Gs();
2738
- T.treeId = c, T.id = e ? he(A, e) : void 0;
2739
- const F = N(A);
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, b) : T.parentPath = he(A, i), T.pathSegment = qs(
2741
- Us(T.path, T.parentPath ?? "", b),
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
- b
2745
- ), p ? T.level = ln(T.path, b) : T.level = he(A, r), g || (T.hasChildren = he(A, n)), T.data = A, T);
2746
- }).filter((A) => A !== null);
2747
- s.isSorted || (s.sortCallback ? M = s.sortCallback(M) : M = q(M));
2748
- for (const A of M)
2749
- j(A.parentPath ?? "", A);
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 A of M)
2751
+ for (const z of P)
2752
2752
  if (l)
2753
- A.isSelectable = l(A) !== !1;
2753
+ z.isSelectable = l(z) !== !1;
2754
2754
  else {
2755
- const B = he(A.data, a);
2756
- A.isSelectable = B == null ? !0 : !!B;
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 M = S || _;
2763
+ let P = S || y;
2764
2764
  if (V) {
2765
- const A = V.split(b);
2766
- for (let B = 0; B < A.length; B++) {
2767
- const T = y + A[B];
2768
- if (!M.children.hasOwnProperty(T))
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
- M = M.children[T];
2770
+ P = P.children[T];
2771
2771
  }
2772
2772
  }
2773
- return M;
2773
+ return P;
2774
2774
  }
2775
2775
  };
2776
2776
  function j(V, S) {
2777
- const M = D.getNodeByPath(V);
2778
- if (!M)
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 = (M.level || 0) + 1);
2781
- const A = y + qs(Us(S.path, V, b), 0, 1, b);
2782
- return M.children.hasOwnProperty(A) || (M.children[A] = S, g && !M.hasChildren && (M.hasChildren = !0), k = Math.max(k, S.level || 0)), null;
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, M) => {
2786
- const A = S.level || 0, B = M.level || 0;
2787
- if (A !== B) return A - B;
2788
- if (S.parentPath !== M.parentPath)
2789
- return S.parentPath ? M.parentPath ? S.parentPath.localeCompare(M.parentPath) : 1 : -1;
2790
- if (d && S.data && M.data) {
2791
- const T = he(S.data, d) ?? 0, F = he(M.data, d) ?? 0;
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(M)) : S.path.localeCompare(M.path);
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 Xs(s, e) {
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 Cs(s, e, t) {
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 = Cs(s, e, t), n = [], a = [];
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 = Cs(s, a, e);
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, $, !1);
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 t = this.getItemFullTitle(e);
3110
- if (t) return t;
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() ? Xs(this.tree, (e) => String(this.getItemValue(e))) : null, this.rebuildTreeVisible();
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, $) ? (this.justClosedViaClick = !0, this.close(), setTimeout(() => {
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) : "", y = d ? "ms__group-label ms__group-label--selectable" : "ms__group-label";
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 b = {
3605
- ...Xe(this.presentationMode),
3604
+ const v = {
3605
+ ...he(this.presentationMode),
3606
3606
  groupName: u,
3607
3607
  ...g
3608
- }, _ = this.options.renderGroupLabelContentCallback(u, b);
3609
- if (_ instanceof HTMLElement) {
3608
+ }, y = this.options.renderGroupLabelContentCallback(u, v);
3609
+ if (y instanceof HTMLElement) {
3610
3610
  const k = document.createElement("div");
3611
- if (k.className = y, k.dataset.group = u, d) {
3611
+ if (k.className = _, k.dataset.group = u, d) {
3612
3612
  k.dataset.groupSelect = "cascade";
3613
- const P = document.createElement("template");
3614
- P.innerHTML = w, P.content.firstChild && k.appendChild(P.content.firstChild);
3613
+ const O = document.createElement("template");
3614
+ O.innerHTML = w, O.content.firstChild && k.appendChild(O.content.firstChild);
3615
3615
  }
3616
- k.appendChild(_), t += k.outerHTML;
3616
+ k.appendChild(y), t += k.outerHTML;
3617
3617
  } else
3618
- t += `<div class="${y}"${f}${p}>${w}${_}</div>`;
3618
+ t += `<div class="${_}"${f}${p}>${w}${y}</div>`;
3619
3619
  } else {
3620
- const b = this.groupCountHtml(g.selectedCount, g.memberCount), _ = b ? `${y} ms__group-label--has-count` : y;
3621
- t += `<div class="${_}"${f}${p}>${w}${this.escapeHtml(u)}${b}</div>`;
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 js({
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
- if (!(d.getIsVisibleCallback ? d.getIsVisibleCallback(this) : d.isVisible ?? !0)) return;
3722
- let p;
3723
- d.getIsDisabledCallback ? p = d.getIsDisabledCallback(this) : d.isDisabled !== void 0 ? p = d.isDisabled : p = this.getBuiltInActionDisabled(d.action);
3724
- const g = p ? " disabled" : "", w = d.getTextCallback ? d.getTextCallback(this) : d.text;
3725
- let y = "";
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 k = this.classSuffix(d.getClassCallback(this));
3728
- k && (y = ` ${k}`);
3729
- } else d.cssClass && (y = ` ${d.cssClass}`);
3730
- const b = Math.max(1, Math.floor(d.row ?? 1)), _ = `<button type="button"${g} class="ms__action-btn${y}" data-action="${d.action}" data-button-index="${u}">${w}</button>`;
3731
- l.has(b) || l.set(b, []), l.get(b).push(_);
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
- ...Xe(this.presentationMode),
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 ? Cs(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, y = e.level ?? 1, b = Math.max(0, y - 1), _ = ["ms__option", "ms__option--tree"];
3776
- _.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), u && _.push("ms__option--selected"), f && _.push("ms__option--indeterminate"), p && _.push("ms__option--focused"), g && _.push("ms__option--matched"), l && _.push("ms__option--disabled"), w || _.push("ms__option--tree-unselectable");
3777
- const k = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", P = w ? "" : ' data-selectable="false"';
3778
- let N = `<div class="${_.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${y}" style="--ms-tree-depth: ${b};"${k}${P}>`;
3779
- if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && w && (N += this.checkboxHtml({ checked: u, indeterminate: f, disabled: l })), N += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
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
- ...Xe(this.presentationMode),
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: y,
3794
- depth: b,
3794
+ level: _,
3795
+ depth: v,
3795
3796
  path: e.path,
3796
3797
  isSelectable: w,
3797
3798
  isIndeterminate: f
3798
3799
  };
3799
- N += this.toHtml(this.options.renderOptionContentCallback(o, D));
3800
+ $ += this.toHtml(this.options.renderOptionContentCallback(o, D));
3800
3801
  } else
3801
- n && (N += `<span class="ms__option-icon">${n}</span>`), N += '<div class="ms__option-text">', N += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, a && (N += `<div class="ms__option-subtitle">${a}</div>`), N += "</div>";
3802
- return N += this.renderOptionInfoButton(), N += "</div>", N += "</div>", N;
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
- Xe(this.presentationMode)
3885
- ) : r = this.getItemDisplayValue(e[0])), !h(this, $) && t > 0 && e.length > 0 ? this.input.value = r : h(this, $) || (this.input.value = "");
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, $) ? (this.justClosedViaClick = !0, this.close(), setTimeout(() => {
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, $) && !this.justClosedViaClick && this.open();
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, $) && this.open(), this.handleSearch(t);
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, $) && this.presentationMode !== "fullscreen" ? this.input.focus() : this.presentationMode === "fullscreen" && ((a = this.fullscreenSearchInput) == null || a.blur());
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, $) && this.presentationMode !== "fullscreen" ? this.input.focus() : this.presentationMode === "fullscreen" && ((l = this.fullscreenSearchInput) == null || l.blur()));
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, $) || this.justOpenedViaClick) return;
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, $) ? 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);
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, $) || this.isTreeMode())
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, $) || e < 0 || e >= this.filteredOptions.length) return;
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, $) }), this.armClickGuard(), !h(this, $) && (this.hideMessage(), I(this, $, !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());
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, $) }), h(this, $) && (I(this, $, !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`));
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, $) ? this.close() : this.open();
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, $) && this.positionHint();
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, $) ? 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())));
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, $) ? this.close() : this.showSelectedPopover && this.hideSelectedPopover());
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).forEach((o) => {
4998
- this.selectedValues.add(String(o));
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, $) && this.close(), this.hideMessage(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ms__selected-popover--visible");
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 js({
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
- ...Xe(this.presentationMode)
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() ? Xs(this.tree, (a) => String(this.getItemValue(a))) : null, this.isCascadeMode() && this.cascadeIndex)) {
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, $) || (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;
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 t = this.getItemBadgeDisplayValue(e), o = this.getItemSubtitle(e);
5308
- return o ? `${t}
5309
- ${o}` : t;
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, i = t ? "popover-" : "";
5318
- if (o.querySelectorAll(".ms__badge:not(.ms__badge--more)").forEach((n) => {
5319
- const a = n.querySelector(".ms__badge-remove");
5320
- if (!a) return;
5321
- const l = a.dataset.value, c = this.selectedOptions.get(l);
5322
- if (!c) return;
5323
- const d = `${i}${l}`, u = `${i}${l}-remove`, f = n.querySelector(".ms__badge-text");
5324
- f && this.spawnTooltip({
5325
- id: d,
5326
- trigger: f,
5327
- content: this.buildBadgeTooltipContent(c)
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 p = this.getItemBadgeDisplayValue(c);
5411
+ const g = this.getItemBadgeDisplayValue(d, o);
5330
5412
  this.spawnTooltip({
5331
- id: u,
5332
- trigger: a,
5333
- content: this.buildRemoveButtonTooltipText(p, c),
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 g;
5337
- return (g = this.tooltips.get(d)) == null ? void 0 : g.hide();
5418
+ var w;
5419
+ return (w = this.tooltips.get(u)) == null ? void 0 : w.hide();
5338
5420
  }
5339
5421
  });
5340
5422
  }), !t) {
5341
- const n = this.badgesContainer.querySelector(".ms__badge--more"), a = n == null ? void 0 : n.querySelector(".ms__badge-remove");
5342
- if (a && a.dataset.action === "remove-hidden") {
5343
- const l = this.options.badgesMaxVisible || 3, c = this.selectedOptions.size - l;
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: a,
5347
- content: this.buildRemoveButtonTooltipText(`${c} hidden items`)
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 t = this.getItemDisplayValue(e), o = this.getItemSubtitle(e);
5356
- return o ? `${t}
5357
- ${o}` : t;
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.buildOptionTooltipContent(r);
5373
- n && this.spawnTooltip({
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: n,
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, $) || this.showSelectedPopover))
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
- $ = new WeakMap();
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"], Js = ",", Ys = `
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 = Zs(t.splitter ?? Js) || Js, i = Zs(t.rowSplitter ?? Ys) || Ys;
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 Zs(s) {
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
- ], E = () => Uo(), wn = [
5726
+ ], A = () => Uo(), wn = [
5637
5727
  // ── Strings (cosmetic → update). Optional ones are nullable: absent → null ─
5638
- { configKey: "searchHint", attribute: "search-hint", converter: z({ isNullable: !0 }), on: "update", description: "Small hint text shown beneath the search input." },
5639
- { configKey: "searchPlaceholder", attribute: "search-placeholder", converter: z({ 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.' },
5640
- { configKey: "selectPlaceholder", attribute: "select-placeholder", converter: z({ default: "Pick an option..." }), on: "update", description: "Placeholder shown on the control when nothing is selected." },
5641
- { configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter: z({ isNullable: !0 }), on: "update", description: "Text shown when there are no options at all." },
5642
- { configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter: z({ isNullable: !0 }), on: "update", description: "Minimum width of the dropdown panel (any CSS length)." },
5643
- { configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter: z({ isNullable: !0 }), on: "update", description: "Maximum width of the dropdown panel (any CSS length)." },
5644
- { configKey: "maxHeight", attribute: "max-height", converter: z({ default: "20rem" }), on: "update", description: "Maximum height of the dropdown list before it scrolls." },
5645
- { configKey: "emptyMessage", attribute: "empty-message", converter: z({ default: "No results found" }), on: "update", description: "Message shown when a search yields no matches." },
5646
- { configKey: "addNewText", attribute: "add-new-text", converter: z({ 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.' },
5647
- { configKey: "addNewPendingText", attribute: "add-new-pending-text", converter: z({ 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}"…`.' },
5648
- { configKey: "loadingMessage", attribute: "loading-message", converter: z({ default: "Loading..." }), on: "update", description: "Message shown while options are loading." },
5649
- { configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter: z({ isNullable: !0 }), on: "update", description: "Tooltip text for a badge remove (×) button." },
5650
- { configKey: "formFieldId", attribute: "name", converter: z({ isNullable: !0 }), on: "reinit", description: "HTML form field name/id used for the hidden input(s)." },
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: z({ isNullable: !0 }), on: "update", description: "Fixed dropdown width; mirrored to the `--ms-dropdown-width` CSS variable." },
5653
- { configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter: z({ isNullable: !0 }), on: "update", description: "Selected-items popover width; mirrored to `--ms-selected-popover-width`." },
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: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name on an option object that holds its value." },
5656
- { configKey: "displayValueMember", attribute: "display-value-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option display label." },
5657
- { configKey: "searchValueMember", attribute: "search-value-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name searched against (falls back to the display value)." },
5658
- { configKey: "iconMember", attribute: "icon-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option icon." },
5659
- { configKey: "subtitleMember", attribute: "subtitle-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option subtitle." },
5660
- { configKey: "fullTitleMember", attribute: "full-title-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option full/long title." },
5661
- { configKey: "groupMember", attribute: "group-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name used to group options under headers." },
5662
- { configKey: "disabledMember", attribute: "disabled-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that marks an option disabled." },
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: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node materialized tree path." },
5665
- { configKey: "parentPathMember", attribute: "parent-path-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node parent path." },
5666
- { configKey: "levelMember", attribute: "level-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node depth level." },
5667
- { configKey: "hasChildrenMember", attribute: "has-children-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name flagging that a node has children." },
5668
- { configKey: "isSelectableMember", attribute: "is-selectable-member", converter: z({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name marking whether a node can be selected." },
5669
- { configKey: "treePathSeparator", attribute: "tree-path-separator", converter: z({ default: "." }), reflect: !0, on: "reinit", description: "Separator between segments in a materialized tree path." },
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: z({ 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`.' },
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: z({ 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.' },
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(Qs, { default: "top" }), on: "update", description: "Preferred placement of a badge tooltip relative to its badge (floating-ui placement)." },
5717
- { configKey: "optionTooltipPlacement", attribute: "option-tooltip-placement", converter: K(Qs, { default: "top-start" }), on: "update", description: "Preferred placement of an option tooltip (floating-ui placement)." },
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: z({ 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." },
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: z({ 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`.' },
5784
- { configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter: z({ default: `
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: E(), on: "reinit", type: "(item: unknown) => string | number", description: "Extract an option value (overrides valueMember)." },
5789
- { configKey: "getPathCallback", converter: E(), on: "reinit", type: "(item: unknown) => string", description: "Extract a node tree path (enables tree mode; overrides pathMember)." },
5790
- { configKey: "getGroupCallback", converter: E(), on: "reinit", type: "(item: unknown) => string", description: "Extract the group name from an option (overrides groupMember)." },
5791
- { configKey: "getDisabledCallback", converter: E(), on: "reinit", type: "(item: unknown) => boolean", description: "Whether an option is disabled (overrides disabledMember)." },
5792
- { configKey: "getIsSelectableCallback", converter: E(), on: "reinit", type: "(node: unknown) => boolean", description: "Whether a tree node can be selected (overrides is-selectable-member)." },
5793
- { configKey: "getSearchValueCallback", converter: E(), on: "reinit", type: "(item: unknown) => string", description: "Text an option is searched against (overrides searchValueMember)." },
5794
- { configKey: "searchCallback", converter: E(), on: "reinit", type: "(searchTerm: string, signal?: AbortSignal) => Promise<unknown[]>", description: "Custom / async search; return the filtered options." },
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: E(), on: "update", type: "(item: unknown) => string", description: "Compute the display label for an option (overrides displayValueMember)." },
5797
- { configKey: "getBadgeDisplayCallback", converter: E(), on: "update", type: "(item: unknown) => string", description: "Compute the text shown on an option badge." },
5798
- { configKey: "getBadgeClassCallback", converter: E(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for an option badge." },
5799
- { configKey: "getSelectedOrderCallback", converter: E(), on: "update", type: "(item: unknown) => string | number", description: 'Sort key for the selected-items display when `selected-order="member"` (overrides `selected-order-member`).' },
5800
- { configKey: "selectedOrderCompareCallback", converter: E(), on: "update", type: "(a: unknown, b: unknown) => number", description: 'Comparator for the selected-items display when `selected-order="custom"`.' },
5801
- { configKey: "getIconCallback", converter: E(), on: "update", type: "(item: unknown) => string", description: "Icon for an option (overrides iconMember)." },
5802
- { configKey: "getSubtitleCallback", converter: E(), on: "update", type: "(item: unknown) => string", description: "Subtitle for an option (overrides subtitleMember)." },
5803
- { configKey: "getFullTitleCallback", converter: E(), on: "update", type: "(item: unknown) => string", description: "Full title for an option (used by badges when show-badge-full-title is on)." },
5804
- { configKey: "getCounterCallback", converter: E(), on: "update", type: "(count: number, moreCount?: number) => string", description: "Render the selected-count label." },
5805
- { configKey: "getCountLabelCallback", converter: E(), 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." },
5806
- { configKey: "getValueFormatCallback", converter: E(), on: "update", type: "(selectedValues: (string | number)[]) => string", description: "Serialize the selected values for form submission." },
5807
- { configKey: "getBadgeTooltipCallback", converter: E(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option badge." },
5808
- { configKey: "getOptionTooltipCallback", converter: E(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option row." },
5809
- { configKey: "getRemoveButtonTooltipCallback", converter: E(), on: "update", type: "(item: unknown) => string", description: "Tooltip text for a badge remove button." },
5810
- { configKey: "getSelectedItemClassCallback", converter: E(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for a selected item." },
5811
- { configKey: "renderOptionContentCallback", converter: E(), on: "update", type: "(item: unknown, context: OptionContentRenderContext) => string | HTMLElement", description: "Custom render for an option row; may return HTML or an element." },
5812
- { configKey: "renderBadgeContentCallback", converter: E(), 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." },
5813
- { configKey: "renderBadgeCallback", converter: E(), 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.' },
5814
- { configKey: "renderGroupLabelContentCallback", converter: E(), 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." },
5815
- { configKey: "renderSelectedContentCallback", converter: E(), on: "update", type: "(item: unknown, context: SelectedContentRenderContext) => string", description: "Custom render for the single-select selected value (2nd arg carries the presentation context)." },
5816
- { configKey: "renderSelectedItemContentCallback", converter: E(), 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)." },
5817
- { configKey: "customStylesCallback", converter: E(), on: "update", type: "() => string", description: "Returns a CSS string injected into the component via a replaceable style slot (§12.8)." },
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: E(), on: "update", type: "(searchTerm: string) => string | null", description: "Runs before a search; return a rewritten term or null to veto." },
5820
- { configKey: "beforeSelectCallback", converter: E(), 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." },
5821
- { configKey: "beforeDeselectCallback", converter: E(), 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." },
5822
- { configKey: "addNewCallback", converter: E(), 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." },
5823
- { configKey: "getAddNewTextCallback", converter: E(), 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`.' },
5824
- { configKey: "keydownCallback", converter: E(), 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." }
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
- ], eo = /* @__PURE__ */ new Set(["dropdownWidth", "selectedPopoverWidth", "showDebugInfo", "initialValues", "optionsSource", "optionsFormat", "optionsSplitter", "optionsRowSplitter", "mobilePresentation", "collapseBadgesBelow", "deferRender"]), yt = {
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(Lo, "--ms-"));
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, fe, ut, Fe, mt, pt, ft, Ke, We, Ie, x, as, Ct, ge, St, ls, cs, ds, Tt, Eo, Ao, zo, Ee, hs, No, $o, Vo, us, Do, Ro, ms, ps;
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, fe);
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, Fe, !1);
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, Ke, !1);
5868
- L(this, We);
5869
- L(this, Ie);
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, ge, !1);
5873
- I(this, Q, this.attachShadow({ mode: "open" })), zi(h(this, Q), Lo), typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => this.setAttribute("data-placeholder-ready", "")) : this.setAttribute("data-placeholder-ready", "");
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
- v(this, x, $o).call(this), this.isConnected && !v(this, x, as).call(this) && v(this, x, ds).call(this);
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
- v(this, x, Vo).call(this, t), "customStylesCallback" in t && v(this, x, hs).call(this), "showDebugInfo" in t && v(this, x, ms).call(this);
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
- eo.has(i) || (o[i] = r === null ? void 0 : r);
5902
- h(this, C) && Object.keys(o).length > 0 && (h(this, C).updateOptions(o) || v(this, x, ds).call(this)), "mobilePresentation" in t && v(this, x, Ct).call(this, Lt()), "collapseBadgesBelow" in t && v(this, x, St).call(this, this.getBoundingClientRect().width);
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) && !v(this, x, as).call(this) && v(this, x, Tt).call(this);
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
- v(this, x, Ct).call(this, t);
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
- v(this, x, St).call(this, t);
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, Fe, !0), this.flush(), this.isConnected && !h(this, C) && v(this, x, Tt).call(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(), fe = new WeakMap(), ut = new WeakMap(), Fe = new WeakMap(), mt = new WeakMap(), pt = new WeakMap(), ft = new WeakMap(), Ke = new WeakMap(), We = new WeakMap(), Ie = new WeakMap(), x = new WeakSet(), /** Whether the initial render is being held by the `defer` gate (not yet released). */
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, Fe);
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
- }, ge = new WeakMap(), /**
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, ge) && (I(this, ge, !1), v(this, x, ls).call(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, ge) && (I(this, ge, i), i ? v(this, x, cs).call(this, "count") : v(this, x, ls).call(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
- v(this, x, cs).call(this, t);
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) ? v(this, x, Ee).call(this) : void 0;
6107
- (o = h(this, C)) == null || o.destroy(), I(this, C, void 0), v(this, x, Tt).call(this, t);
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
- v(this, x, Eo).call(this), v(this, x, Do).call(this);
6110
- const o = v(this, x, Ao).call(this), i = v(this, x, zo).call(this), r = JSON.stringify(i ?? null), a = t !== void 0 && t.length > 0 && r === h(this, ut) ? t : i;
6111
- I(this, ut, r), a && a.length > 0 ? h(this, fe).dataset.initialValues = JSON.stringify(a) : delete h(this, fe).dataset.initialValues, I(this, C, new hn(h(this, fe), o)), v(this, x, hs).call(this), v(this, x, ms).call(this), v(this, x, Ct).call(this, Lt()), I(this, ge, !1), v(this, x, St).call(this, this.getBoundingClientRect().width), this.hasAttribute("is-ready") || (I(this, Fe, !0), this.setAttribute("is-ready", ""), this.emit("ready"));
6112
- }, Eo = function() {
6113
- if (h(this, fe)) return;
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, fe, t);
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
- Ao = function() {
6212
+ zo = function() {
6122
6213
  const t = { ...this.config };
6123
- for (const i of eo) delete t[i];
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, Ke) && h(this, We))
6128
- o && o.length > 0 && W.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = h(this, We);
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, Ke))
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: v(this, x, Ee).call(this)
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: v(this, x, Ee).call(this)
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: v(this, x, Ee).call(this)
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: v(this, x, Ee).call(this)
6258
+ selectedValues: b(this, x, Ae).call(this)
6168
6259
  });
6169
6260
  }, t.container = h(this, Q), t.hostElement = this, t;
6170
- }, zo = function() {
6171
- if (h(this, Ie) && h(this, Ie).length > 0)
6172
- return h(this, Ie);
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
- }, Ee = function() {
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.clear();
6276
+ t.set(i), i && b(this, x, us).call(this, i);
6186
6277
  return;
6187
6278
  }
6188
6279
  try {
6189
- const i = o();
6190
- t.set(i), i && v(this, x, No).call(this, i);
6191
- } catch (i) {
6192
- W.warn("[MultiSelectElement] customStylesCallback threw", i), t.clear();
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
- No = function(t) {
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)) v(this, x, us).call(this, yt[t], this.config[t]);
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 && v(this, x, us).call(this, yt[o], t[o]);
6216
- }, us = function(t, o) {
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 = v(this, x, Ro).call(this);
6223
- t && (I(this, We, t), I(this, Ke, !0));
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, Ie) ?? I(this, Ie, [])).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;
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
- ms = function() {
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), v(this, x, ps).call(this);
6260
- }, ps = function() {
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-rc01", 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);
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 && v(this, x, ps).call(this);
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-rc01",
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
- Mn as setCategoryLevel,
6310
- Pn as setLogLevel,
6400
+ Pn as setCategoryLevel,
6401
+ Mn as setLogLevel,
6311
6402
  Y as uiLogger
6312
6403
  };