@keenmate/web-multiselect 2.0.0-rc06 → 2.0.0-rc08
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -7
- package/custom-elements.json +159 -9
- package/dist/index.d.ts +133 -3
- package/dist/multiselect.js +960 -822
- package/dist/multiselect.umd.js +14 -14
- package/dist/style.css +1 -1
- package/docs/examples.md +22 -1
- package/docs/usage.md +25 -1
- package/package.json +2 -2
- package/src/css/floating.css +61 -1
- package/src/css/options.css +4 -0
- package/src/css/variables.css +32 -3
- package/vscode.html-custom-data.json +6 -1
- package/web-types.json +20 -5
package/dist/multiselect.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
1
|
+
var co = Object.defineProperty;
|
|
2
|
+
var ss = (s) => {
|
|
3
3
|
throw TypeError(s);
|
|
4
4
|
};
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var p = (s, e, t) => (Tt(s, e, "read from private field"), t ? t.call(s) : e.get(s)), E = (s, e, t) => e.has(s) ?
|
|
5
|
+
var ho = (s, e, t) => e in s ? co(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
|
|
6
|
+
var u = (s, e, t) => ho(s, typeof e != "symbol" ? e + "" : e, t), Tt = (s, e, t) => e.has(s) || ss("Cannot " + t);
|
|
7
|
+
var p = (s, e, t) => (Tt(s, e, "read from private field"), t ? t.call(s) : e.get(s)), E = (s, e, t) => e.has(s) ? ss("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), V = (s, e, t, o) => (Tt(s, e, "write to private field"), o ? o.call(s, t) : e.set(s, t), t), x = (s, e, t) => (Tt(s, e, "access private method"), t);
|
|
8
8
|
function F(s, e = {}) {
|
|
9
9
|
const t = new Set(s), o = e.shouldNullOnInvalid ? null : e.default ?? null;
|
|
10
10
|
return {
|
|
@@ -54,11 +54,11 @@ function A(s = {}) {
|
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
const
|
|
57
|
+
const uo = /* @__PURE__ */ new Set(["", "true", "1", "yes", "on"]), mo = /* @__PURE__ */ new Set(["false", "0", "no", "off"]);
|
|
58
58
|
function B(s = "presence") {
|
|
59
59
|
const e = (t) => {
|
|
60
60
|
const o = t.trim().toLowerCase();
|
|
61
|
-
return
|
|
61
|
+
return uo.has(o) ? !0 : mo.has(o) ? !1 : null;
|
|
62
62
|
};
|
|
63
63
|
return {
|
|
64
64
|
fromAttribute(t) {
|
|
@@ -81,7 +81,7 @@ function B(s = "presence") {
|
|
|
81
81
|
}
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
function
|
|
84
|
+
function po(s = {}) {
|
|
85
85
|
const e = s.default;
|
|
86
86
|
return {
|
|
87
87
|
fromAttribute(t) {
|
|
@@ -101,7 +101,7 @@ function mo(s = {}) {
|
|
|
101
101
|
}
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
|
-
function
|
|
104
|
+
function fo(s = {}) {
|
|
105
105
|
const e = s.default ?? [], t = (o) => Array.isArray(o) && (!s.validateItem || o.every(s.validateItem));
|
|
106
106
|
return {
|
|
107
107
|
fromAttribute(o) {
|
|
@@ -121,22 +121,22 @@ function po(s = {}) {
|
|
|
121
121
|
}
|
|
122
122
|
};
|
|
123
123
|
}
|
|
124
|
-
function
|
|
124
|
+
function go() {
|
|
125
125
|
return {
|
|
126
126
|
validate(s) {
|
|
127
127
|
return s == null || typeof s == "function";
|
|
128
128
|
}
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
|
-
function
|
|
131
|
+
function bo(s, e, t) {
|
|
132
132
|
const o = s.converter, i = o != null && o.fromAttribute ? o.fromAttribute(e, t, s.attribute ?? s.configKey) : e ?? s.default;
|
|
133
133
|
return { configKey: s.configKey, field: s.field, value: i, on: s.on ?? "update" };
|
|
134
134
|
}
|
|
135
|
-
function
|
|
135
|
+
function vo(s, e) {
|
|
136
136
|
const t = s.converter;
|
|
137
137
|
return t != null && t.validate && !t.validate(e) ? null : { configKey: s.configKey, field: s.field, value: e, on: s.on ?? "update" };
|
|
138
138
|
}
|
|
139
|
-
function
|
|
139
|
+
function yo() {
|
|
140
140
|
const s = /* @__PURE__ */ new Set();
|
|
141
141
|
let e = !1;
|
|
142
142
|
const t = () => {
|
|
@@ -164,7 +164,7 @@ function vo() {
|
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
|
-
const
|
|
167
|
+
const Ms = {
|
|
168
168
|
pointer: "fine",
|
|
169
169
|
hasCoarsePointer: !1,
|
|
170
170
|
canHover: !0,
|
|
@@ -176,27 +176,27 @@ const Ps = {
|
|
|
176
176
|
os: "unknown",
|
|
177
177
|
isApple: !1,
|
|
178
178
|
isAndroid: !1
|
|
179
|
-
},
|
|
180
|
-
let
|
|
179
|
+
}, wo = { mobile: 640, tablet: 1024, desktop: 1 / 0 };
|
|
180
|
+
let It = xo(wo);
|
|
181
181
|
const Fe = /* @__PURE__ */ new Set();
|
|
182
182
|
let Ce = null, ht = [], lt = !1;
|
|
183
|
-
function
|
|
183
|
+
function xo(s) {
|
|
184
184
|
return Object.entries(s).sort((e, t) => e[1] - t[1]);
|
|
185
185
|
}
|
|
186
|
-
function
|
|
187
|
-
for (const [t, o] of
|
|
186
|
+
function _o(s) {
|
|
187
|
+
for (const [t, o] of It)
|
|
188
188
|
if (s <= o)
|
|
189
189
|
return t;
|
|
190
|
-
const e =
|
|
190
|
+
const e = It[It.length - 1];
|
|
191
191
|
return e ? e[0] : "desktop";
|
|
192
192
|
}
|
|
193
|
-
function
|
|
193
|
+
function Xt() {
|
|
194
194
|
return typeof window < "u" && typeof window.matchMedia == "function";
|
|
195
195
|
}
|
|
196
|
-
function
|
|
196
|
+
function os() {
|
|
197
197
|
return typeof navigator < "u" && (navigator.maxTouchPoints ?? 0) > 1;
|
|
198
198
|
}
|
|
199
|
-
function
|
|
199
|
+
function ko() {
|
|
200
200
|
var o;
|
|
201
201
|
if (typeof navigator > "u")
|
|
202
202
|
return "unknown";
|
|
@@ -207,26 +207,26 @@ function _o() {
|
|
|
207
207
|
if (e.includes("ios"))
|
|
208
208
|
return "ios";
|
|
209
209
|
if (e.includes("mac"))
|
|
210
|
-
return
|
|
210
|
+
return os() ? "ios" : "macos";
|
|
211
211
|
if (e.includes("windows"))
|
|
212
212
|
return "windows";
|
|
213
213
|
if (e.includes("linux"))
|
|
214
214
|
return "linux";
|
|
215
215
|
}
|
|
216
216
|
const t = navigator.userAgent ?? "";
|
|
217
|
-
return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ?
|
|
217
|
+
return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ? os() ? "ios" : "macos" : /windows/i.test(t) ? "windows" : /linux/i.test(t) ? "linux" : "unknown";
|
|
218
218
|
}
|
|
219
|
-
let
|
|
220
|
-
function
|
|
221
|
-
return
|
|
219
|
+
let Co;
|
|
220
|
+
function So() {
|
|
221
|
+
return Co ?? (Co = ko());
|
|
222
222
|
}
|
|
223
223
|
function Re(s) {
|
|
224
|
-
return
|
|
224
|
+
return Xt() && window.matchMedia(s).matches;
|
|
225
225
|
}
|
|
226
|
-
function
|
|
227
|
-
if (!
|
|
228
|
-
return { ...
|
|
229
|
-
const s = Re("(any-pointer: coarse)"), e = Re("(pointer: coarse)"), t = Re("(pointer: fine)"), o = Re("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a =
|
|
226
|
+
function qt() {
|
|
227
|
+
if (!Xt())
|
|
228
|
+
return { ...Ms };
|
|
229
|
+
const s = Re("(any-pointer: coarse)"), e = Re("(pointer: coarse)"), t = Re("(pointer: fine)"), o = Re("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a = So();
|
|
230
230
|
return {
|
|
231
231
|
pointer: i,
|
|
232
232
|
hasCoarsePointer: s,
|
|
@@ -235,42 +235,42 @@ function Xt() {
|
|
|
235
235
|
orientation: Re("(orientation: portrait)") ? "portrait" : "landscape",
|
|
236
236
|
viewportWidth: r,
|
|
237
237
|
viewportHeight: n,
|
|
238
|
-
breakpoint:
|
|
238
|
+
breakpoint: _o(r),
|
|
239
239
|
os: a,
|
|
240
240
|
isApple: a === "ios" || a === "macos",
|
|
241
241
|
isAndroid: a === "android"
|
|
242
242
|
};
|
|
243
243
|
}
|
|
244
|
-
function
|
|
244
|
+
function To(s, e) {
|
|
245
245
|
return s.pointer === e.pointer && s.hasCoarsePointer === e.hasCoarsePointer && s.canHover === e.canHover && s.isTouchPrimary === e.isTouchPrimary && s.orientation === e.orientation && s.viewportWidth === e.viewportWidth && s.viewportHeight === e.viewportHeight && s.breakpoint === e.breakpoint;
|
|
246
246
|
}
|
|
247
|
-
function
|
|
248
|
-
const s =
|
|
249
|
-
if (!(Ce &&
|
|
247
|
+
function At() {
|
|
248
|
+
const s = qt();
|
|
249
|
+
if (!(Ce && To(Ce, s))) {
|
|
250
250
|
Ce = s;
|
|
251
251
|
for (const e of [...Fe])
|
|
252
252
|
e(s);
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
const ut = () =>
|
|
255
|
+
const ut = () => At(), Ls = () => {
|
|
256
256
|
if (typeof requestAnimationFrame == "function") {
|
|
257
257
|
if (lt)
|
|
258
258
|
return;
|
|
259
259
|
lt = !0, requestAnimationFrame(() => {
|
|
260
|
-
lt = !1,
|
|
260
|
+
lt = !1, At();
|
|
261
261
|
});
|
|
262
262
|
} else
|
|
263
|
-
|
|
263
|
+
At();
|
|
264
264
|
};
|
|
265
|
-
function
|
|
265
|
+
function Io(s) {
|
|
266
266
|
typeof s.addEventListener == "function" ? s.addEventListener("change", ut) : typeof s.addListener == "function" && s.addListener(ut);
|
|
267
267
|
}
|
|
268
268
|
function Oo(s) {
|
|
269
269
|
typeof s.removeEventListener == "function" ? s.removeEventListener("change", ut) : typeof s.removeListener == "function" && s.removeListener(ut);
|
|
270
270
|
}
|
|
271
|
-
function
|
|
272
|
-
if (!
|
|
273
|
-
Ce = { ...
|
|
271
|
+
function Po() {
|
|
272
|
+
if (!Xt()) {
|
|
273
|
+
Ce = { ...Ms };
|
|
274
274
|
return;
|
|
275
275
|
}
|
|
276
276
|
ht = [
|
|
@@ -281,49 +281,49 @@ function Io() {
|
|
|
281
281
|
window.matchMedia("(orientation: portrait)")
|
|
282
282
|
];
|
|
283
283
|
for (const s of ht)
|
|
284
|
-
|
|
285
|
-
typeof window.addEventListener == "function" && window.addEventListener("resize",
|
|
284
|
+
Io(s);
|
|
285
|
+
typeof window.addEventListener == "function" && window.addEventListener("resize", Ls), Ce = qt();
|
|
286
286
|
}
|
|
287
|
-
function
|
|
287
|
+
function Mo() {
|
|
288
288
|
for (const s of ht)
|
|
289
289
|
Oo(s);
|
|
290
|
-
ht = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize",
|
|
290
|
+
ht = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize", Ls), lt = !1, Ce = null;
|
|
291
291
|
}
|
|
292
|
-
function
|
|
293
|
-
return Ce ??
|
|
292
|
+
function zt() {
|
|
293
|
+
return Ce ?? qt();
|
|
294
294
|
}
|
|
295
|
-
function
|
|
295
|
+
function Lo(s, e = {}) {
|
|
296
296
|
const t = Fe.size === 0;
|
|
297
|
-
Fe.add(s), t &&
|
|
297
|
+
Fe.add(s), t && Po(), e.immediate !== !1 && s(zt());
|
|
298
298
|
let o = !0;
|
|
299
299
|
return () => {
|
|
300
|
-
o && (o = !1, Fe.delete(s), Fe.size === 0 &&
|
|
300
|
+
o && (o = !1, Fe.delete(s), Fe.size === 0 && Mo());
|
|
301
301
|
};
|
|
302
302
|
}
|
|
303
|
-
const
|
|
304
|
-
function
|
|
305
|
-
return s.isTouchPrimary ? Math.min(s.viewportWidth, s.viewportHeight) <
|
|
303
|
+
const Eo = 600;
|
|
304
|
+
function Ao(s) {
|
|
305
|
+
return s.isTouchPrimary ? Math.min(s.viewportWidth, s.viewportHeight) < Eo ? "mobile" : "tablet" : "desktop";
|
|
306
306
|
}
|
|
307
307
|
const mt = /* @__PURE__ */ new Map();
|
|
308
|
-
function
|
|
308
|
+
function zo(s, e) {
|
|
309
309
|
let t = mt.get(s);
|
|
310
310
|
t || mt.set(s, t = /* @__PURE__ */ new Set()), t.add(e);
|
|
311
311
|
}
|
|
312
|
-
function
|
|
312
|
+
function No(s, e) {
|
|
313
313
|
var t;
|
|
314
314
|
(t = mt.get(s)) == null || t.delete(e);
|
|
315
315
|
}
|
|
316
|
-
function
|
|
316
|
+
function Vo(s) {
|
|
317
317
|
return Array.from(mt.get(s) ?? []);
|
|
318
318
|
}
|
|
319
|
-
const
|
|
320
|
-
function
|
|
321
|
-
|
|
319
|
+
const Es = /* @__PURE__ */ new Map();
|
|
320
|
+
function Do(s, e) {
|
|
321
|
+
Es.set(s.toLowerCase(), e);
|
|
322
322
|
}
|
|
323
|
-
function
|
|
324
|
-
return
|
|
323
|
+
function $o(s) {
|
|
324
|
+
return Es.get(s.toLowerCase());
|
|
325
325
|
}
|
|
326
|
-
function
|
|
326
|
+
function Ro(s, e, t, o = {}) {
|
|
327
327
|
return s.dispatchEvent(new CustomEvent(e, {
|
|
328
328
|
detail: t,
|
|
329
329
|
bubbles: o.bubbles ?? !0,
|
|
@@ -331,29 +331,29 @@ function No(s, e, t, o = {}) {
|
|
|
331
331
|
cancelable: o.cancelable ?? !1
|
|
332
332
|
}));
|
|
333
333
|
}
|
|
334
|
-
function Ro(s) {
|
|
335
|
-
return s.split(/[-_]/).filter(Boolean).map((e) => e[0].toUpperCase() + e.slice(1)).join("");
|
|
336
|
-
}
|
|
337
334
|
function Ho(s) {
|
|
338
|
-
return
|
|
335
|
+
return s.split(/[-_]/).filter(Boolean).map((e) => e[0].toUpperCase() + e.slice(1)).join("");
|
|
339
336
|
}
|
|
340
337
|
function Bo(s) {
|
|
338
|
+
return `on${Ho(s)}`;
|
|
339
|
+
}
|
|
340
|
+
function Ko(s) {
|
|
341
341
|
return s ? s.map((e) => {
|
|
342
|
-
const t = typeof e == "string" ? { name: e } : e, o = t.property === !1 ? null : t.property ??
|
|
342
|
+
const t = typeof e == "string" ? { name: e } : e, o = t.property === !1 ? null : t.property ?? Bo(t.name);
|
|
343
343
|
return { name: t.name, property: o, bubbles: t.bubbles, composed: t.composed, cancelable: t.cancelable };
|
|
344
344
|
}) : [];
|
|
345
345
|
}
|
|
346
|
-
const
|
|
347
|
-
},
|
|
348
|
-
let
|
|
349
|
-
const
|
|
346
|
+
const Fo = typeof HTMLElement < "u" ? HTMLElement : class {
|
|
347
|
+
}, is = /* @__PURE__ */ new WeakSet();
|
|
348
|
+
let Wo = 0;
|
|
349
|
+
const jo = { trace() {
|
|
350
350
|
}, debug() {
|
|
351
351
|
}, info() {
|
|
352
352
|
}, warn() {
|
|
353
353
|
}, error() {
|
|
354
|
-
} },
|
|
355
|
-
var he, Je, ve, Qe, ye, Ze, yt, we, ue, xe, _e, Pe, Me, Le, Ee, wt, se, Ae, T,
|
|
356
|
-
const Xe = class Xe extends
|
|
354
|
+
} }, Uo = new Proxy({}, { get: () => jo });
|
|
355
|
+
var he, Je, ve, Qe, ye, Ze, yt, we, ue, xe, _e, Pe, Me, Le, Ee, wt, se, Ae, T, As, zs, Ns, Y, Vs, Ds, Vt, Dt, We, $t, $s;
|
|
356
|
+
const Xe = class Xe extends Fo {
|
|
357
357
|
constructor() {
|
|
358
358
|
super();
|
|
359
359
|
E(this, T);
|
|
@@ -363,8 +363,8 @@ const Xe = class Xe extends Ko {
|
|
|
363
363
|
E(this, Qe, /* @__PURE__ */ new Map());
|
|
364
364
|
/** Live handler currently bound via each managed `on<Name>` property, keyed by event name. */
|
|
365
365
|
E(this, ye, /* @__PURE__ */ new Map());
|
|
366
|
-
E(this, Ze,
|
|
367
|
-
E(this, yt, () => x(this, T,
|
|
366
|
+
E(this, Ze, yo());
|
|
367
|
+
E(this, yt, () => x(this, T, $t).call(this));
|
|
368
368
|
E(this, we, null);
|
|
369
369
|
E(this, ue, !1);
|
|
370
370
|
E(this, xe, []);
|
|
@@ -386,13 +386,13 @@ const Xe = class Xe extends Ko {
|
|
|
386
386
|
E(this, wt);
|
|
387
387
|
E(this, se);
|
|
388
388
|
E(this, Ae);
|
|
389
|
-
const t = this.constructor, o = t.inputs ?? [], i =
|
|
390
|
-
x(this, T,
|
|
389
|
+
const t = this.constructor, o = t.inputs ?? [], i = Ko(t.events);
|
|
390
|
+
x(this, T, Ns).call(this, o, i);
|
|
391
391
|
for (const r of o)
|
|
392
392
|
p(this, Je).set(r.configKey, r), r.attribute && p(this, ve).set(r.attribute, r);
|
|
393
393
|
for (const r of i)
|
|
394
394
|
p(this, Qe).set(r.name, r);
|
|
395
|
-
x(this, T,
|
|
395
|
+
x(this, T, As).call(this, o), x(this, T, Vs).call(this, o), x(this, T, Ds).call(this, i);
|
|
396
396
|
}
|
|
397
397
|
static get observedAttributes() {
|
|
398
398
|
const t = (this.inputs ?? []).filter((o) => o.attribute).map((o) => o.attribute);
|
|
@@ -412,25 +412,25 @@ const Xe = class Xe extends Ko {
|
|
|
412
412
|
return;
|
|
413
413
|
let n;
|
|
414
414
|
try {
|
|
415
|
-
n =
|
|
415
|
+
n = bo(r, i, this);
|
|
416
416
|
} catch (l) {
|
|
417
|
-
x(this, T, Y).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = x(this, T,
|
|
417
|
+
x(this, T, Y).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = x(this, T, zs).call(this, r);
|
|
418
418
|
}
|
|
419
|
-
x(this, T,
|
|
419
|
+
x(this, T, Dt).call(this, n);
|
|
420
420
|
}
|
|
421
421
|
connectedCallback() {
|
|
422
|
-
|
|
422
|
+
zo(this.localName, this), p(this, _e) || (V(this, _e, !0), V(this, Pe, null), V(this, ue, !0)), x(this, T, We).call(this), this.connect(), this.environmentChanged !== Xe.prototype.environmentChanged && V(this, Le, Lo((t) => this.environmentChanged(t)));
|
|
423
423
|
}
|
|
424
424
|
disconnectedCallback() {
|
|
425
425
|
var t;
|
|
426
|
-
|
|
426
|
+
No(this.localName, this), (t = p(this, Le)) == null || t.call(this), V(this, Le, void 0), this.disconnect();
|
|
427
427
|
}
|
|
428
428
|
// ── public batching API ─────────────────────────────────────────────────
|
|
429
429
|
/** Apply many inputs (by `configKey` or attribute name) as ONE reinit/update. */
|
|
430
430
|
setAttributes(t) {
|
|
431
431
|
for (const [o, i] of Object.entries(t)) {
|
|
432
432
|
const r = p(this, Je).get(o) ?? p(this, ve).get(o);
|
|
433
|
-
r && x(this, T,
|
|
433
|
+
r && x(this, T, Vt).call(this, r, i);
|
|
434
434
|
}
|
|
435
435
|
x(this, T, We).call(this);
|
|
436
436
|
}
|
|
@@ -490,11 +490,11 @@ const Xe = class Xe extends Ko {
|
|
|
490
490
|
get log() {
|
|
491
491
|
if (p(this, Ae))
|
|
492
492
|
return p(this, Ae);
|
|
493
|
-
const t =
|
|
493
|
+
const t = $o(this.localName);
|
|
494
494
|
if (!t)
|
|
495
|
-
return
|
|
496
|
-
const o = p(this, wt) ??
|
|
497
|
-
return
|
|
495
|
+
return Uo;
|
|
496
|
+
const o = p(this, wt) ?? V(this, wt, `${this.localName}#${this.id || ++Wo}`);
|
|
497
|
+
return V(this, Ae, t.forInstance(o, () => p(this, se)));
|
|
498
498
|
}
|
|
499
499
|
/**
|
|
500
500
|
* Turn on verbose logging for THIS element only (default `debug`), independent
|
|
@@ -502,11 +502,11 @@ const Xe = class Xe extends Ko {
|
|
|
502
502
|
* picks one instance. Pairs with {@link disableLogging}.
|
|
503
503
|
*/
|
|
504
504
|
enableLogging(t = "debug") {
|
|
505
|
-
|
|
505
|
+
V(this, se, t);
|
|
506
506
|
}
|
|
507
507
|
/** Clear this element's logging override (falls back to the type-level level). */
|
|
508
508
|
disableLogging() {
|
|
509
|
-
|
|
509
|
+
V(this, se, void 0);
|
|
510
510
|
}
|
|
511
511
|
/** Whether this element has an active logging override (not unset/`silent`). */
|
|
512
512
|
get isLoggingEnabled() {
|
|
@@ -596,7 +596,7 @@ const Xe = class Xe extends Ko {
|
|
|
596
596
|
if (typeof this.attachInternals != "function")
|
|
597
597
|
return null;
|
|
598
598
|
try {
|
|
599
|
-
return
|
|
599
|
+
return V(this, Ee, this.attachInternals());
|
|
600
600
|
} catch {
|
|
601
601
|
return null;
|
|
602
602
|
}
|
|
@@ -627,7 +627,7 @@ const Xe = class Xe extends Ko {
|
|
|
627
627
|
*/
|
|
628
628
|
emit(t, o, i) {
|
|
629
629
|
const r = p(this, Qe).get(t);
|
|
630
|
-
return
|
|
630
|
+
return Ro(this, t, o, {
|
|
631
631
|
bubbles: (i == null ? void 0 : i.bubbles) ?? (r == null ? void 0 : r.bubbles),
|
|
632
632
|
composed: (i == null ? void 0 : i.composed) ?? (r == null ? void 0 : r.composed),
|
|
633
633
|
cancelable: (i == null ? void 0 : i.cancelable) ?? (r == null ? void 0 : r.cancelable)
|
|
@@ -666,7 +666,7 @@ const Xe = class Xe extends Ko {
|
|
|
666
666
|
}
|
|
667
667
|
};
|
|
668
668
|
he = new WeakMap(), Je = new WeakMap(), ve = new WeakMap(), Qe = new WeakMap(), ye = new WeakMap(), Ze = new WeakMap(), yt = new WeakMap(), we = new WeakMap(), ue = new WeakMap(), xe = new WeakMap(), _e = new WeakMap(), Pe = new WeakMap(), Me = new WeakMap(), Le = new WeakMap(), Ee = new WeakMap(), wt = new WeakMap(), se = new WeakMap(), Ae = new WeakMap(), T = new WeakSet(), // ── internals ─────────────────────────────────────────────────────────────
|
|
669
|
-
|
|
669
|
+
As = function(t) {
|
|
670
670
|
var o;
|
|
671
671
|
for (const i of t) {
|
|
672
672
|
let r = i.default;
|
|
@@ -678,15 +678,15 @@ Es = function(t) {
|
|
|
678
678
|
}
|
|
679
679
|
p(this, he)[i.configKey] = r, i.field && (this[i.field] = r);
|
|
680
680
|
}
|
|
681
|
-
},
|
|
681
|
+
}, zs = function(t) {
|
|
682
682
|
return { configKey: t.configKey, field: t.field, value: t.default, on: t.on ?? "update" };
|
|
683
683
|
}, /** Sanity-check the input + event tables once per class; warn (never throw) on mistakes. */
|
|
684
|
-
|
|
684
|
+
Ns = function(t, o) {
|
|
685
685
|
var l;
|
|
686
686
|
const i = this.constructor;
|
|
687
|
-
if (
|
|
687
|
+
if (is.has(i))
|
|
688
688
|
return;
|
|
689
|
-
|
|
689
|
+
is.add(i);
|
|
690
690
|
const r = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
|
|
691
691
|
for (const c of t)
|
|
692
692
|
r.has(c.configKey) && x(this, T, Y).call(this, `invalid input table: duplicate configKey "${c.configKey}"`), r.add(c.configKey), c.attribute && (n.has(c.attribute) && x(this, T, Y).call(this, `invalid input table: duplicate attribute "${c.attribute}"`), n.add(c.attribute)), c.reflect && !c.attribute && x(this, T, Y).call(this, `invalid input table: "${c.configKey}" has reflect:true but no attribute to reflect to`), c.reflect && !((l = c.converter) != null && l.toAttribute) && x(this, T, Y).call(this, `invalid input table: "${c.configKey}" has reflect:true but its converter has no toAttribute`);
|
|
@@ -700,22 +700,22 @@ zs = function(t, o) {
|
|
|
700
700
|
*/
|
|
701
701
|
Y = function(t, ...o) {
|
|
702
702
|
console.warn(`[BlissElement] <${this.localName ?? "unknown"}> ${t}`, ...o);
|
|
703
|
-
},
|
|
703
|
+
}, Vs = function(t) {
|
|
704
704
|
for (const o of t) {
|
|
705
705
|
const i = o.configKey, r = Object.prototype.hasOwnProperty.call(this, i), n = r ? this[i] : void 0;
|
|
706
706
|
r && delete this[i], Object.defineProperty(this, i, {
|
|
707
707
|
configurable: !0,
|
|
708
708
|
enumerable: !0,
|
|
709
709
|
get: () => p(this, he)[i],
|
|
710
|
-
set: (a) => x(this, T,
|
|
711
|
-
}), r && ((p(this, Pe) ??
|
|
710
|
+
set: (a) => x(this, T, Vt).call(this, o, a)
|
|
711
|
+
}), r && ((p(this, Pe) ?? V(this, Pe, /* @__PURE__ */ new Set())).add(i), this[i] = n);
|
|
712
712
|
}
|
|
713
713
|
}, /**
|
|
714
714
|
* Install a managed `on<Name>` handler property per event. Assigning it
|
|
715
715
|
* (de)registers a real listener for the event, so the property behaves like
|
|
716
716
|
* `addEventListener(name, …)` and its handler receives the `CustomEvent`.
|
|
717
717
|
*/
|
|
718
|
-
|
|
718
|
+
Ds = function(t) {
|
|
719
719
|
for (const o of t) {
|
|
720
720
|
const i = o.property;
|
|
721
721
|
if (!i)
|
|
@@ -735,52 +735,52 @@ $s = function(t) {
|
|
|
735
735
|
}
|
|
736
736
|
}), n && (this[i] = a);
|
|
737
737
|
}
|
|
738
|
-
},
|
|
738
|
+
}, Vt = function(t, o) {
|
|
739
739
|
var r;
|
|
740
|
-
const i =
|
|
740
|
+
const i = vo(t, o);
|
|
741
741
|
if (!i) {
|
|
742
742
|
x(this, T, Y).call(this, `rejected invalid value for property "${t.configKey}"; keeping previous value`, o);
|
|
743
743
|
return;
|
|
744
744
|
}
|
|
745
|
-
if (x(this, T,
|
|
745
|
+
if (x(this, T, Dt).call(this, i), t.reflect && t.attribute && ((r = t.converter) != null && r.toAttribute)) {
|
|
746
746
|
const n = t.converter.toAttribute(i.value);
|
|
747
|
-
|
|
747
|
+
V(this, Me, !0);
|
|
748
748
|
try {
|
|
749
749
|
n === null ? this.removeAttribute(t.attribute) : this.setAttribute(t.attribute, n);
|
|
750
750
|
} finally {
|
|
751
|
-
|
|
751
|
+
V(this, Me, !1);
|
|
752
752
|
}
|
|
753
753
|
}
|
|
754
|
-
},
|
|
755
|
-
p(this, he)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" &&
|
|
754
|
+
}, Dt = function(t) {
|
|
755
|
+
p(this, he)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" && V(this, ue, !0), (p(this, we) ?? V(this, we, {}))[t.configKey] = t.value, p(this, Ze).schedule(p(this, yt)));
|
|
756
756
|
}, /** Cancel any queued microtask and flush pending changes synchronously now. */
|
|
757
757
|
We = function() {
|
|
758
|
-
p(this, Ze).cancel(), x(this, T,
|
|
759
|
-
},
|
|
758
|
+
p(this, Ze).cancel(), x(this, T, $t).call(this);
|
|
759
|
+
}, $t = function() {
|
|
760
760
|
if (!this.isConnected)
|
|
761
761
|
return;
|
|
762
762
|
const t = p(this, ue), o = p(this, we);
|
|
763
|
-
|
|
763
|
+
V(this, ue, !1), V(this, we, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o), x(this, T, $s).call(this);
|
|
764
764
|
}, /** Resolve everyone awaiting {@link whenSettled} for the flush that just ran. */
|
|
765
|
-
|
|
765
|
+
$s = function() {
|
|
766
766
|
if (p(this, xe).length === 0)
|
|
767
767
|
return;
|
|
768
768
|
const t = p(this, xe);
|
|
769
|
-
|
|
769
|
+
V(this, xe, []);
|
|
770
770
|
for (const o of t)
|
|
771
771
|
o();
|
|
772
772
|
}, /** The opt-in input table. Subclasses set this to enable attribute/property reactivity. */
|
|
773
|
-
|
|
773
|
+
u(Xe, "inputs"), /**
|
|
774
774
|
* The opt-in event table (SPEC §12.5). Each entry (a bare name, or an
|
|
775
775
|
* {@link EventDef} for overrides) declares an outward notification that
|
|
776
776
|
* {@link emit} can fire and installs a managed `on<Name>` handler property.
|
|
777
777
|
*/
|
|
778
|
-
|
|
779
|
-
let
|
|
780
|
-
function
|
|
778
|
+
u(Xe, "events");
|
|
779
|
+
let Nt = Xe;
|
|
780
|
+
function rs(s, e, t) {
|
|
781
781
|
typeof customElements > "u" || customElements.get(s) || customElements.define(s, e, t);
|
|
782
782
|
}
|
|
783
|
-
function
|
|
783
|
+
function Go(s) {
|
|
784
784
|
return {
|
|
785
785
|
enableLogging: (e) => s.enableLogging(e),
|
|
786
786
|
disableLogging: () => s.disableLogging(),
|
|
@@ -789,21 +789,21 @@ function Uo(s) {
|
|
|
789
789
|
getCategories: () => [...s.LOGGING_CATEGORIES]
|
|
790
790
|
};
|
|
791
791
|
}
|
|
792
|
-
function
|
|
792
|
+
function Xo(s, e, t) {
|
|
793
793
|
const { config: o, logging: i, shouldAutoDefine: r = !0 } = t;
|
|
794
|
-
i &&
|
|
794
|
+
i && Do(s, i);
|
|
795
795
|
const n = {
|
|
796
796
|
version: () => o.version,
|
|
797
797
|
config: o,
|
|
798
|
-
...i ? { logging:
|
|
799
|
-
register: () =>
|
|
800
|
-
getInstances: () =>
|
|
798
|
+
...i ? { logging: Go(i) } : {},
|
|
799
|
+
register: () => rs(s, e),
|
|
800
|
+
getInstances: () => Vo(s)
|
|
801
801
|
};
|
|
802
|
-
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r &&
|
|
802
|
+
return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && rs(s, e), n;
|
|
803
803
|
}
|
|
804
|
-
const
|
|
804
|
+
const ns = /* @__PURE__ */ new Map(), as = /* @__PURE__ */ new WeakMap();
|
|
805
805
|
let ot;
|
|
806
|
-
function
|
|
806
|
+
function qo(s) {
|
|
807
807
|
if (typeof CSSStyleSheet > "u" || !("adoptedStyleSheets" in s))
|
|
808
808
|
return !1;
|
|
809
809
|
if (ot === void 0)
|
|
@@ -814,20 +814,20 @@ function Xo(s) {
|
|
|
814
814
|
}
|
|
815
815
|
return ot;
|
|
816
816
|
}
|
|
817
|
-
function
|
|
817
|
+
function Yo(s, ...e) {
|
|
818
818
|
if (typeof document > "u")
|
|
819
819
|
return;
|
|
820
|
-
let t =
|
|
821
|
-
t ||
|
|
820
|
+
let t = as.get(s);
|
|
821
|
+
t || as.set(s, t = /* @__PURE__ */ new Set());
|
|
822
822
|
const o = e.filter((r) => r && !t.has(r));
|
|
823
823
|
if (o.length === 0)
|
|
824
824
|
return;
|
|
825
825
|
for (const r of o)
|
|
826
826
|
t.add(r);
|
|
827
|
-
if (
|
|
827
|
+
if (qo(s)) {
|
|
828
828
|
const r = o.map((n) => {
|
|
829
|
-
let a =
|
|
830
|
-
return a || (a = new CSSStyleSheet(), a.replaceSync(n),
|
|
829
|
+
let a = ns.get(n);
|
|
830
|
+
return a || (a = new CSSStyleSheet(), a.replaceSync(n), ns.set(n, a)), a;
|
|
831
831
|
});
|
|
832
832
|
s.adoptedStyleSheets = [...s.adoptedStyleSheets, ...r];
|
|
833
833
|
return;
|
|
@@ -838,7 +838,7 @@ function qo(s, ...e) {
|
|
|
838
838
|
n.textContent = r, i.appendChild(n);
|
|
839
839
|
}
|
|
840
840
|
}
|
|
841
|
-
function
|
|
841
|
+
function Jo(s, e = {}) {
|
|
842
842
|
const t = e.position ?? "last", o = s.head ?? s;
|
|
843
843
|
let i = null;
|
|
844
844
|
const r = () => typeof document > "u" ? null : (i || (i = document.createElement("style"), e.className && (i.className = e.className)), i.parentNode !== o && (t === "first" && o.firstChild ? o.insertBefore(i, o.firstChild) : o.appendChild(i)), i), n = () => {
|
|
@@ -859,48 +859,55 @@ function Yo(s, e = {}) {
|
|
|
859
859
|
}
|
|
860
860
|
};
|
|
861
861
|
}
|
|
862
|
-
function
|
|
862
|
+
function Rs(s) {
|
|
863
863
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
864
864
|
}
|
|
865
|
-
function
|
|
866
|
-
const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${
|
|
865
|
+
function Qo(s, e) {
|
|
866
|
+
const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${Rs(e)}[a-z0-9-]+)`, "gi");
|
|
867
867
|
let i;
|
|
868
868
|
for (; i = o.exec(s); )
|
|
869
869
|
i[1] && t.add(i[1]);
|
|
870
870
|
return t;
|
|
871
871
|
}
|
|
872
|
-
function
|
|
873
|
-
const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${
|
|
872
|
+
function Zo(s, e) {
|
|
873
|
+
const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${Rs(e)}[a-z0-9-]+)\\s*:`, "gi");
|
|
874
874
|
let i;
|
|
875
875
|
for (; i = o.exec(s); )
|
|
876
876
|
i[1] && t.add(i[1]);
|
|
877
877
|
return [...t];
|
|
878
878
|
}
|
|
879
|
-
function
|
|
879
|
+
function ei(s, e, t = {}) {
|
|
880
880
|
const o = t.minScore ?? 3, i = t.limit ?? 3, r = new Set(s.split("-").filter(Boolean));
|
|
881
881
|
return [...e].map((n) => ({ k: n, score: n.split("-").filter((a) => r.has(a)).length })).filter((n) => n.score >= o).sort((n, a) => a.score - n.score).slice(0, i).map((n) => n.k);
|
|
882
882
|
}
|
|
883
|
-
function
|
|
883
|
+
function ti(s, e) {
|
|
884
884
|
if (e.consumed.size === 0)
|
|
885
885
|
return [];
|
|
886
886
|
const t = [];
|
|
887
|
-
for (const o of
|
|
888
|
-
e.consumed.has(o) || t.push({ name: o, suggestions:
|
|
887
|
+
for (const o of Zo(s, e.prefix))
|
|
888
|
+
e.consumed.has(o) || t.push({ name: o, suggestions: ei(o, e.consumed, { minScore: e.minScore }) });
|
|
889
889
|
return t;
|
|
890
890
|
}
|
|
891
|
-
const
|
|
891
|
+
const si = {
|
|
892
892
|
mobile: "fullscreen",
|
|
893
893
|
tablet: "floating",
|
|
894
894
|
desktop: "floating"
|
|
895
895
|
};
|
|
896
|
-
function
|
|
896
|
+
function oi(s, e, t = {}) {
|
|
897
897
|
if (s !== "auto")
|
|
898
898
|
return s;
|
|
899
|
-
const o =
|
|
900
|
-
return t[o] ??
|
|
899
|
+
const o = Ao(e);
|
|
900
|
+
return t[o] ?? si[o];
|
|
901
|
+
}
|
|
902
|
+
function Ot(s) {
|
|
903
|
+
return {
|
|
904
|
+
presentation: s,
|
|
905
|
+
isFullscreen: s === "fullscreen",
|
|
906
|
+
isModal: s === "modal"
|
|
907
|
+
};
|
|
901
908
|
}
|
|
902
909
|
let He = 0, it = null;
|
|
903
|
-
function
|
|
910
|
+
function ii() {
|
|
904
911
|
if (typeof document > "u")
|
|
905
912
|
return () => {
|
|
906
913
|
};
|
|
@@ -910,7 +917,7 @@ function oi() {
|
|
|
910
917
|
s || (s = !0, He = Math.max(0, He - 1), He === 0 && it !== null && (document.body.style.overflow = it, it = null));
|
|
911
918
|
};
|
|
912
919
|
}
|
|
913
|
-
function
|
|
920
|
+
function ri(s) {
|
|
914
921
|
const e = typeof window < "u" ? window.visualViewport : null;
|
|
915
922
|
if (!e)
|
|
916
923
|
return () => {
|
|
@@ -932,20 +939,20 @@ const j = {
|
|
|
932
939
|
WARN: 3,
|
|
933
940
|
ERROR: 4,
|
|
934
941
|
SILENT: 5
|
|
935
|
-
},
|
|
942
|
+
}, ls = ["trace", "debug", "info", "warn", "error"], pt = () => {
|
|
936
943
|
};
|
|
937
|
-
let
|
|
938
|
-
function
|
|
944
|
+
let ni = "km-log";
|
|
945
|
+
function cs(s) {
|
|
939
946
|
const t = console[s];
|
|
940
947
|
return typeof t == "function" ? t.bind(console) : pt;
|
|
941
948
|
}
|
|
942
|
-
function
|
|
949
|
+
function ai(s) {
|
|
943
950
|
if (s === "debug" && (s = "log"), typeof console > "u")
|
|
944
951
|
return pt;
|
|
945
952
|
const e = console;
|
|
946
|
-
return e[s] !== void 0 ?
|
|
953
|
+
return e[s] !== void 0 ? cs(s) : e.log !== void 0 ? cs("log") : pt;
|
|
947
954
|
}
|
|
948
|
-
const
|
|
955
|
+
const li = (s) => ai(s);
|
|
949
956
|
function Be(s) {
|
|
950
957
|
let e = s;
|
|
951
958
|
const t = j;
|
|
@@ -955,36 +962,36 @@ function Be(s) {
|
|
|
955
962
|
}
|
|
956
963
|
let de;
|
|
957
964
|
const ft = {};
|
|
958
|
-
class
|
|
965
|
+
class Hs {
|
|
959
966
|
constructor(e, t) {
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
967
|
+
u(this, "name");
|
|
968
|
+
u(this, "levels", j);
|
|
969
|
+
u(this, "methodFactory");
|
|
963
970
|
// Installed by replaceLoggingMethods(); definite-assignment via `!`.
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
971
|
+
u(this, "trace");
|
|
972
|
+
u(this, "debug");
|
|
973
|
+
u(this, "info");
|
|
974
|
+
u(this, "warn");
|
|
975
|
+
u(this, "error");
|
|
976
|
+
u(this, "log");
|
|
970
977
|
/** Level inherited from the root (cached so it stays in sync with installed methods). */
|
|
971
|
-
|
|
978
|
+
u(this, "inheritedLevel");
|
|
972
979
|
/** Optional per-logger default; overrides inherited. */
|
|
973
|
-
|
|
980
|
+
u(this, "defaultLevel", null);
|
|
974
981
|
/** Optional user-set level; overrides default. */
|
|
975
|
-
|
|
982
|
+
u(this, "userLevel", null);
|
|
976
983
|
this.name = e, this.methodFactory = t, this.inheritedLevel = Be(de ? de.getLevel() : "WARN");
|
|
977
984
|
const o = this.getPersistedLevel();
|
|
978
985
|
o != null && (this.userLevel = Be(o)), this.replaceLoggingMethods();
|
|
979
986
|
}
|
|
980
987
|
storageKey() {
|
|
981
|
-
return typeof this.name == "string" ? `${
|
|
988
|
+
return typeof this.name == "string" ? `${ni}:${this.name}` : void 0;
|
|
982
989
|
}
|
|
983
990
|
persist(e) {
|
|
984
991
|
const t = this.storageKey();
|
|
985
992
|
if (typeof window > "u" || !t)
|
|
986
993
|
return;
|
|
987
|
-
const o = (
|
|
994
|
+
const o = (ls[e] ?? "silent").toUpperCase();
|
|
988
995
|
try {
|
|
989
996
|
window.localStorage[t] = o;
|
|
990
997
|
} catch {
|
|
@@ -1012,7 +1019,7 @@ class Rs {
|
|
|
1012
1019
|
}
|
|
1013
1020
|
replaceLoggingMethods() {
|
|
1014
1021
|
const e = this.getLevel();
|
|
1015
|
-
|
|
1022
|
+
ls.forEach((t, o) => {
|
|
1016
1023
|
this[t] = o < e ? pt : this.methodFactory(t, e, this.name);
|
|
1017
1024
|
}), this.log = this.debug;
|
|
1018
1025
|
}
|
|
@@ -1040,14 +1047,14 @@ class Rs {
|
|
|
1040
1047
|
ft[e].rebuild();
|
|
1041
1048
|
}
|
|
1042
1049
|
}
|
|
1043
|
-
de = new
|
|
1044
|
-
function
|
|
1050
|
+
de = new Hs(void 0, li);
|
|
1051
|
+
function ci(s) {
|
|
1045
1052
|
if (typeof s != "string" || s === "")
|
|
1046
1053
|
throw new TypeError("You must supply a non-empty name when creating a logger.");
|
|
1047
1054
|
let e = ft[s];
|
|
1048
|
-
return e || (e = ft[s] = new
|
|
1055
|
+
return e || (e = ft[s] = new Hs(s, de.methodFactory)), e;
|
|
1049
1056
|
}
|
|
1050
|
-
const
|
|
1057
|
+
const di = ["INIT", "DATA", "UI"], hi = "debug", ds = [
|
|
1051
1058
|
"#4c8bf5",
|
|
1052
1059
|
// blue
|
|
1053
1060
|
"#2ea043",
|
|
@@ -1064,43 +1071,43 @@ const ci = ["INIT", "DATA", "UI"], di = "debug", cs = [
|
|
|
1064
1071
|
// teal
|
|
1065
1072
|
"#8a6d3b"
|
|
1066
1073
|
// brown
|
|
1067
|
-
],
|
|
1068
|
-
function
|
|
1069
|
-
if (
|
|
1074
|
+
], hs = /* @__PURE__ */ new WeakSet();
|
|
1075
|
+
function ui(s, e, t) {
|
|
1076
|
+
if (hs.has(s))
|
|
1070
1077
|
return;
|
|
1071
|
-
|
|
1078
|
+
hs.add(s);
|
|
1072
1079
|
const o = s.methodFactory, i = `color:${t};font-weight:bold`;
|
|
1073
1080
|
s.methodFactory = (r, n, a) => {
|
|
1074
1081
|
const l = o(r, n, a);
|
|
1075
1082
|
return (...c) => l(`%c[${e}]`, i, ...c);
|
|
1076
1083
|
}, s.setLevel(s.getLevel(), !1);
|
|
1077
1084
|
}
|
|
1078
|
-
function
|
|
1085
|
+
function mi(s) {
|
|
1079
1086
|
return typeof s == "number" ? s : j[s.toUpperCase()] ?? j.SILENT;
|
|
1080
1087
|
}
|
|
1081
|
-
const
|
|
1088
|
+
const pi = [
|
|
1082
1089
|
["trace", j.TRACE, "debug"],
|
|
1083
1090
|
["debug", j.DEBUG, "debug"],
|
|
1084
1091
|
["info", j.INFO, "info"],
|
|
1085
1092
|
["warn", j.WARN, "warn"],
|
|
1086
1093
|
["error", j.ERROR, "error"]
|
|
1087
1094
|
];
|
|
1088
|
-
function
|
|
1095
|
+
function fi(s, e, t) {
|
|
1089
1096
|
const o = `color:${s.color};font-weight:bold`, i = "color:#888", r = {};
|
|
1090
|
-
for (const [n, a, l] of
|
|
1097
|
+
for (const [n, a, l] of pi)
|
|
1091
1098
|
r[n] = (...c) => {
|
|
1092
|
-
const d = t(), h = Math.min(s.logger.getLevel(), d == null ? j.SILENT :
|
|
1099
|
+
const d = t(), h = Math.min(s.logger.getLevel(), d == null ? j.SILENT : mi(d));
|
|
1093
1100
|
if (a < h)
|
|
1094
1101
|
return;
|
|
1095
1102
|
(console[l] ?? console.log).bind(console)(`%c[${s.label}]%c ${e}`, o, i, ...c);
|
|
1096
1103
|
};
|
|
1097
1104
|
return r;
|
|
1098
1105
|
}
|
|
1099
|
-
function
|
|
1106
|
+
function gi(s, e = di) {
|
|
1100
1107
|
const t = {}, o = {};
|
|
1101
1108
|
e.forEach((r, n) => {
|
|
1102
|
-
const a = `${s}:${r}`, l =
|
|
1103
|
-
|
|
1109
|
+
const a = `${s}:${r}`, l = ds[n % ds.length], c = ci(a);
|
|
1110
|
+
ui(c, a, l), t[r] = c, o[r] = { label: a, color: l, logger: c };
|
|
1104
1111
|
});
|
|
1105
1112
|
const i = (r) => {
|
|
1106
1113
|
for (const n of e)
|
|
@@ -1109,7 +1116,7 @@ function fi(s, e = ci) {
|
|
|
1109
1116
|
return {
|
|
1110
1117
|
loggers: t,
|
|
1111
1118
|
LOGGING_CATEGORIES: e,
|
|
1112
|
-
enableLogging(r =
|
|
1119
|
+
enableLogging(r = hi) {
|
|
1113
1120
|
i(r);
|
|
1114
1121
|
},
|
|
1115
1122
|
disableLogging() {
|
|
@@ -1125,7 +1132,7 @@ function fi(s, e = ci) {
|
|
|
1125
1132
|
forInstance(r, n) {
|
|
1126
1133
|
const a = {};
|
|
1127
1134
|
for (const l of e)
|
|
1128
|
-
a[l] =
|
|
1135
|
+
a[l] = fi(o[l], r, n);
|
|
1129
1136
|
return a;
|
|
1130
1137
|
}
|
|
1131
1138
|
};
|
|
@@ -1133,73 +1140,73 @@ function fi(s, e = ci) {
|
|
|
1133
1140
|
const pe = Math.min, ie = Math.max, gt = Math.round, rt = Math.floor, re = (s) => ({
|
|
1134
1141
|
x: s,
|
|
1135
1142
|
y: s
|
|
1136
|
-
}),
|
|
1143
|
+
}), bi = {
|
|
1137
1144
|
left: "right",
|
|
1138
1145
|
right: "left",
|
|
1139
1146
|
bottom: "top",
|
|
1140
1147
|
top: "bottom"
|
|
1141
1148
|
};
|
|
1142
|
-
function
|
|
1149
|
+
function Bs(s, e, t) {
|
|
1143
1150
|
return ie(s, pe(e, t));
|
|
1144
1151
|
}
|
|
1145
|
-
function
|
|
1152
|
+
function Ve(s, e) {
|
|
1146
1153
|
return typeof s == "function" ? s(e) : s;
|
|
1147
1154
|
}
|
|
1148
1155
|
function Se(s) {
|
|
1149
1156
|
return s.split("-")[0];
|
|
1150
1157
|
}
|
|
1151
|
-
function
|
|
1158
|
+
function De(s) {
|
|
1152
1159
|
return s.split("-")[1];
|
|
1153
1160
|
}
|
|
1154
|
-
function
|
|
1161
|
+
function Ks(s) {
|
|
1155
1162
|
return s === "x" ? "y" : "x";
|
|
1156
1163
|
}
|
|
1157
|
-
function
|
|
1164
|
+
function Yt(s) {
|
|
1158
1165
|
return s === "y" ? "height" : "width";
|
|
1159
1166
|
}
|
|
1160
1167
|
function oe(s) {
|
|
1161
1168
|
const e = s[0];
|
|
1162
1169
|
return e === "t" || e === "b" ? "y" : "x";
|
|
1163
1170
|
}
|
|
1164
|
-
function
|
|
1165
|
-
return
|
|
1171
|
+
function Jt(s) {
|
|
1172
|
+
return Ks(oe(s));
|
|
1166
1173
|
}
|
|
1167
|
-
function
|
|
1174
|
+
function vi(s, e, t) {
|
|
1168
1175
|
t === void 0 && (t = !1);
|
|
1169
|
-
const o =
|
|
1176
|
+
const o = De(s), i = Jt(s), r = Yt(i);
|
|
1170
1177
|
let n = i === "x" ? o === (t ? "end" : "start") ? "right" : "left" : o === "start" ? "bottom" : "top";
|
|
1171
1178
|
return e.reference[r] > e.floating[r] && (n = bt(n)), [n, bt(n)];
|
|
1172
1179
|
}
|
|
1173
|
-
function
|
|
1180
|
+
function yi(s) {
|
|
1174
1181
|
const e = bt(s);
|
|
1175
|
-
return [
|
|
1182
|
+
return [Rt(s), e, Rt(e)];
|
|
1176
1183
|
}
|
|
1177
|
-
function
|
|
1184
|
+
function Rt(s) {
|
|
1178
1185
|
return s.includes("start") ? s.replace("start", "end") : s.replace("end", "start");
|
|
1179
1186
|
}
|
|
1180
|
-
const
|
|
1181
|
-
function
|
|
1187
|
+
const us = ["left", "right"], ms = ["right", "left"], wi = ["top", "bottom"], xi = ["bottom", "top"];
|
|
1188
|
+
function _i(s, e, t) {
|
|
1182
1189
|
switch (s) {
|
|
1183
1190
|
case "top":
|
|
1184
1191
|
case "bottom":
|
|
1185
|
-
return t ? e ?
|
|
1192
|
+
return t ? e ? ms : us : e ? us : ms;
|
|
1186
1193
|
case "left":
|
|
1187
1194
|
case "right":
|
|
1188
|
-
return e ?
|
|
1195
|
+
return e ? wi : xi;
|
|
1189
1196
|
default:
|
|
1190
1197
|
return [];
|
|
1191
1198
|
}
|
|
1192
1199
|
}
|
|
1193
|
-
function
|
|
1194
|
-
const i =
|
|
1195
|
-
let r =
|
|
1196
|
-
return i && (r = r.map((n) => n + "-" + i), e && (r = r.concat(r.map(
|
|
1200
|
+
function ki(s, e, t, o) {
|
|
1201
|
+
const i = De(s);
|
|
1202
|
+
let r = _i(Se(s), t === "start", o);
|
|
1203
|
+
return i && (r = r.map((n) => n + "-" + i), e && (r = r.concat(r.map(Rt)))), r;
|
|
1197
1204
|
}
|
|
1198
1205
|
function bt(s) {
|
|
1199
1206
|
const e = Se(s);
|
|
1200
|
-
return
|
|
1207
|
+
return bi[e] + s.slice(e.length);
|
|
1201
1208
|
}
|
|
1202
|
-
function
|
|
1209
|
+
function Ci(s) {
|
|
1203
1210
|
var e, t, o, i;
|
|
1204
1211
|
return {
|
|
1205
1212
|
top: (e = s.top) != null ? e : 0,
|
|
@@ -1208,8 +1215,8 @@ function ki(s) {
|
|
|
1208
1215
|
left: (i = s.left) != null ? i : 0
|
|
1209
1216
|
};
|
|
1210
1217
|
}
|
|
1211
|
-
function
|
|
1212
|
-
return typeof s != "number" ?
|
|
1218
|
+
function Fs(s) {
|
|
1219
|
+
return typeof s != "number" ? Ci(s) : {
|
|
1213
1220
|
top: s,
|
|
1214
1221
|
right: s,
|
|
1215
1222
|
bottom: s,
|
|
@@ -1234,48 +1241,48 @@ function vt(s) {
|
|
|
1234
1241
|
y: t
|
|
1235
1242
|
};
|
|
1236
1243
|
}
|
|
1237
|
-
function
|
|
1244
|
+
function ps(s, e, t) {
|
|
1238
1245
|
let {
|
|
1239
1246
|
reference: o,
|
|
1240
1247
|
floating: i
|
|
1241
1248
|
} = s;
|
|
1242
|
-
const r = oe(e), n =
|
|
1243
|
-
let
|
|
1249
|
+
const r = oe(e), n = Jt(e), a = Yt(n), l = Se(e), c = r === "y", d = o.x + o.width / 2 - i.width / 2, h = o.y + o.height / 2 - i.height / 2, f = o[a] / 2 - i[a] / 2;
|
|
1250
|
+
let m;
|
|
1244
1251
|
switch (l) {
|
|
1245
1252
|
case "top":
|
|
1246
|
-
|
|
1253
|
+
m = {
|
|
1247
1254
|
x: d,
|
|
1248
1255
|
y: o.y - i.height
|
|
1249
1256
|
};
|
|
1250
1257
|
break;
|
|
1251
1258
|
case "bottom":
|
|
1252
|
-
|
|
1259
|
+
m = {
|
|
1253
1260
|
x: d,
|
|
1254
1261
|
y: o.y + o.height
|
|
1255
1262
|
};
|
|
1256
1263
|
break;
|
|
1257
1264
|
case "right":
|
|
1258
|
-
|
|
1265
|
+
m = {
|
|
1259
1266
|
x: o.x + o.width,
|
|
1260
1267
|
y: h
|
|
1261
1268
|
};
|
|
1262
1269
|
break;
|
|
1263
1270
|
case "left":
|
|
1264
|
-
|
|
1271
|
+
m = {
|
|
1265
1272
|
x: o.x - i.width,
|
|
1266
1273
|
y: h
|
|
1267
1274
|
};
|
|
1268
1275
|
break;
|
|
1269
1276
|
default:
|
|
1270
|
-
|
|
1277
|
+
m = {
|
|
1271
1278
|
x: o.x,
|
|
1272
1279
|
y: o.y
|
|
1273
1280
|
};
|
|
1274
1281
|
}
|
|
1275
|
-
const g =
|
|
1276
|
-
return g && (
|
|
1282
|
+
const g = De(e);
|
|
1283
|
+
return g && (m[n] += f * (g === "end" ? 1 : -1) * (t && c ? -1 : 1)), m;
|
|
1277
1284
|
}
|
|
1278
|
-
async function
|
|
1285
|
+
async function Si(s, e) {
|
|
1279
1286
|
var t;
|
|
1280
1287
|
e === void 0 && (e = {});
|
|
1281
1288
|
const {
|
|
@@ -1290,8 +1297,8 @@ async function Ci(s, e) {
|
|
|
1290
1297
|
rootBoundary: d = "viewport",
|
|
1291
1298
|
elementContext: h = "floating",
|
|
1292
1299
|
altBoundary: f = !1,
|
|
1293
|
-
padding:
|
|
1294
|
-
} =
|
|
1300
|
+
padding: m = 0
|
|
1301
|
+
} = Ve(e, s), g = Fs(m), y = a[f ? h === "floating" ? "reference" : "floating" : h], v = vt(await r.getClippingRect({
|
|
1295
1302
|
element: (t = await (r.isElement == null ? void 0 : r.isElement(y))) == null || t ? y : y.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(a.floating)),
|
|
1296
1303
|
boundary: c,
|
|
1297
1304
|
rootBoundary: d,
|
|
@@ -1317,7 +1324,7 @@ async function Ci(s, e) {
|
|
|
1317
1324
|
right: (M.right - v.right + g.right) / P.x
|
|
1318
1325
|
};
|
|
1319
1326
|
}
|
|
1320
|
-
const
|
|
1327
|
+
const Ti = 50, Ii = async (s, e, t) => {
|
|
1321
1328
|
const {
|
|
1322
1329
|
placement: o = "bottom",
|
|
1323
1330
|
strategy: i = "absolute",
|
|
@@ -1325,7 +1332,7 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1325
1332
|
platform: n
|
|
1326
1333
|
} = t, a = n.detectOverflow ? n : {
|
|
1327
1334
|
...n,
|
|
1328
|
-
detectOverflow:
|
|
1335
|
+
detectOverflow: Si
|
|
1329
1336
|
}, l = await (n.isRTL == null ? void 0 : n.isRTL(e));
|
|
1330
1337
|
let c = await n.getElementRects({
|
|
1331
1338
|
reference: s,
|
|
@@ -1334,7 +1341,7 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1334
1341
|
}), {
|
|
1335
1342
|
x: d,
|
|
1336
1343
|
y: h
|
|
1337
|
-
} =
|
|
1344
|
+
} = ps(c, o, l), f = o, m = 0;
|
|
1338
1345
|
const g = {};
|
|
1339
1346
|
for (let b = 0; b < r.length; b++) {
|
|
1340
1347
|
const y = r[b];
|
|
@@ -1347,7 +1354,7 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1347
1354
|
x: k,
|
|
1348
1355
|
y: P,
|
|
1349
1356
|
data: M,
|
|
1350
|
-
reset:
|
|
1357
|
+
reset: D
|
|
1351
1358
|
} = await w({
|
|
1352
1359
|
x: d,
|
|
1353
1360
|
y: h,
|
|
@@ -1365,14 +1372,14 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1365
1372
|
d = k ?? d, h = P ?? h, g[v] = {
|
|
1366
1373
|
...g[v],
|
|
1367
1374
|
...M
|
|
1368
|
-
},
|
|
1375
|
+
}, D && m < Ti && (m++, typeof D == "object" && (D.placement && (f = D.placement), D.rects && (c = D.rects === !0 ? await n.getElementRects({
|
|
1369
1376
|
reference: s,
|
|
1370
1377
|
floating: e,
|
|
1371
1378
|
strategy: i
|
|
1372
|
-
}) :
|
|
1379
|
+
}) : D.rects), {
|
|
1373
1380
|
x: d,
|
|
1374
1381
|
y: h
|
|
1375
|
-
} =
|
|
1382
|
+
} = ps(c, f, l)), b = -1);
|
|
1376
1383
|
}
|
|
1377
1384
|
return {
|
|
1378
1385
|
x: d,
|
|
@@ -1396,21 +1403,21 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1396
1403
|
} = e, {
|
|
1397
1404
|
element: c,
|
|
1398
1405
|
padding: d = 0
|
|
1399
|
-
} =
|
|
1406
|
+
} = Ve(s, e) || {};
|
|
1400
1407
|
if (c == null)
|
|
1401
1408
|
return {};
|
|
1402
|
-
const h =
|
|
1409
|
+
const h = Fs(d), f = {
|
|
1403
1410
|
x: t,
|
|
1404
1411
|
y: o
|
|
1405
|
-
},
|
|
1406
|
-
let R =
|
|
1407
|
-
(!R || !await (n.isElement == null ? void 0 : n.isElement(
|
|
1408
|
-
const G = P / 2 - M / 2, L = R / 2 - b[g] / 2 - 1, C = pe(h[v], L),
|
|
1412
|
+
}, m = Jt(i), g = Yt(m), b = await n.getDimensions(c), y = m === "y", v = y ? "top" : "left", w = y ? "bottom" : "right", k = y ? "clientHeight" : "clientWidth", P = r.reference[g] + r.reference[m] - f[m] - r.floating[g], M = f[m] - r.reference[m], D = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(c));
|
|
1413
|
+
let R = D ? D[k] : 0;
|
|
1414
|
+
(!R || !await (n.isElement == null ? void 0 : n.isElement(D))) && (R = a.floating[k] || r.floating[g]);
|
|
1415
|
+
const G = P / 2 - M / 2, L = R / 2 - b[g] / 2 - 1, C = pe(h[v], L), I = pe(h[w], L), O = R - b[g] - I, $ = R / 2 - b[g] / 2 + G, S = Bs(C, $, O), H = !l.arrow && De(i) != null && $ !== S && r.reference[g] / 2 - ($ < C ? C : I) - b[g] / 2 < 0, te = H ? $ < C ? $ - C : $ - O : 0;
|
|
1409
1416
|
return {
|
|
1410
|
-
[
|
|
1417
|
+
[m]: f[m] + te,
|
|
1411
1418
|
data: {
|
|
1412
|
-
[
|
|
1413
|
-
centerOffset:
|
|
1419
|
+
[m]: S,
|
|
1420
|
+
centerOffset: $ - S - te,
|
|
1414
1421
|
...H && {
|
|
1415
1422
|
alignmentOffset: te
|
|
1416
1423
|
}
|
|
@@ -1418,7 +1425,7 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1418
1425
|
reset: H
|
|
1419
1426
|
};
|
|
1420
1427
|
}
|
|
1421
|
-
}),
|
|
1428
|
+
}), Pi = function(s) {
|
|
1422
1429
|
return s === void 0 && (s = {}), {
|
|
1423
1430
|
name: "flip",
|
|
1424
1431
|
options: s,
|
|
@@ -1435,27 +1442,27 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1435
1442
|
mainAxis: d = !0,
|
|
1436
1443
|
crossAxis: h = !0,
|
|
1437
1444
|
fallbackPlacements: f,
|
|
1438
|
-
fallbackStrategy:
|
|
1445
|
+
fallbackStrategy: m = "bestFit",
|
|
1439
1446
|
fallbackAxisSideDirection: g = "none",
|
|
1440
1447
|
flipAlignment: b = !0,
|
|
1441
1448
|
...y
|
|
1442
|
-
} =
|
|
1449
|
+
} = Ve(s, e);
|
|
1443
1450
|
if ((t = r.arrow) != null && t.alignmentOffset)
|
|
1444
1451
|
return {};
|
|
1445
|
-
const v = Se(i), w = oe(a), k = Se(a) === a, P = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), M = f || (k || !b ? [bt(a)] :
|
|
1446
|
-
!f &&
|
|
1452
|
+
const v = Se(i), w = oe(a), k = Se(a) === a, P = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), M = f || (k || !b ? [bt(a)] : yi(a)), D = g !== "none";
|
|
1453
|
+
!f && D && M.push(...ki(a, b, g, P));
|
|
1447
1454
|
const R = [a, ...M], G = await l.detectOverflow(e, y), L = [];
|
|
1448
1455
|
let C = ((o = r.flip) == null ? void 0 : o.overflows) || [];
|
|
1449
1456
|
if (d && L.push(G[v]), h) {
|
|
1450
|
-
const S =
|
|
1457
|
+
const S = vi(i, n, P);
|
|
1451
1458
|
L.push(G[S[0]], G[S[1]]);
|
|
1452
1459
|
}
|
|
1453
1460
|
if (C = [...C, {
|
|
1454
1461
|
placement: i,
|
|
1455
1462
|
overflows: L
|
|
1456
1463
|
}], !L.every((S) => S <= 0)) {
|
|
1457
|
-
var
|
|
1458
|
-
const S = (((
|
|
1464
|
+
var I, O;
|
|
1465
|
+
const S = (((I = r.flip) == null ? void 0 : I.index) || 0) + 1, H = R[S];
|
|
1459
1466
|
if (H && (!(h === "alignment" ? w !== oe(H) : !1) || // We leave the current main axis only if every placement on that axis
|
|
1460
1467
|
// overflows the main axis.
|
|
1461
1468
|
C.every((q) => oe(q.placement) === w ? q.overflows[0] > 0 : !0)))
|
|
@@ -1468,20 +1475,20 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1468
1475
|
placement: H
|
|
1469
1476
|
}
|
|
1470
1477
|
};
|
|
1471
|
-
let te = (
|
|
1478
|
+
let te = (O = C.filter((ge) => ge.overflows[0] <= 0).sort((ge, q) => ge.overflows[1] - q.overflows[1])[0]) == null ? void 0 : O.placement;
|
|
1472
1479
|
if (!te)
|
|
1473
|
-
switch (
|
|
1480
|
+
switch (m) {
|
|
1474
1481
|
case "bestFit": {
|
|
1475
|
-
var
|
|
1476
|
-
const ge = (
|
|
1477
|
-
if (
|
|
1482
|
+
var $;
|
|
1483
|
+
const ge = ($ = C.filter((q) => {
|
|
1484
|
+
if (D) {
|
|
1478
1485
|
const le = oe(q.placement);
|
|
1479
1486
|
return le === w || // Create a bias to the `y` side axis due to horizontal
|
|
1480
1487
|
// reading directions favoring greater width.
|
|
1481
1488
|
le === "y";
|
|
1482
1489
|
}
|
|
1483
1490
|
return !0;
|
|
1484
|
-
}).map((q) => [q.placement, q.overflows.filter((le) => le > 0).reduce((le,
|
|
1491
|
+
}).map((q) => [q.placement, q.overflows.filter((le) => le > 0).reduce((le, lo) => le + lo, 0)]).sort((q, le) => q[1] - le[1])[0]) == null ? void 0 : $[0];
|
|
1485
1492
|
ge && (te = ge);
|
|
1486
1493
|
break;
|
|
1487
1494
|
}
|
|
@@ -1499,16 +1506,16 @@ const Si = 50, Ti = async (s, e, t) => {
|
|
|
1499
1506
|
return {};
|
|
1500
1507
|
}
|
|
1501
1508
|
};
|
|
1502
|
-
},
|
|
1503
|
-
async function
|
|
1509
|
+
}, Mi = /* @__PURE__ */ new Set(["left", "top"]);
|
|
1510
|
+
async function Li(s, e) {
|
|
1504
1511
|
const {
|
|
1505
1512
|
placement: t,
|
|
1506
1513
|
platform: o,
|
|
1507
1514
|
elements: i
|
|
1508
|
-
} = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Se(t), a =
|
|
1515
|
+
} = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Se(t), a = De(t), l = oe(t) === "y", c = Mi.has(n) ? -1 : 1, d = r && l ? -1 : 1, h = Ve(e, s);
|
|
1509
1516
|
let {
|
|
1510
1517
|
mainAxis: f,
|
|
1511
|
-
crossAxis:
|
|
1518
|
+
crossAxis: m,
|
|
1512
1519
|
alignmentAxis: g
|
|
1513
1520
|
} = typeof h == "number" ? {
|
|
1514
1521
|
mainAxis: h,
|
|
@@ -1519,15 +1526,15 @@ async function Mi(s, e) {
|
|
|
1519
1526
|
crossAxis: h.crossAxis || 0,
|
|
1520
1527
|
alignmentAxis: h.alignmentAxis
|
|
1521
1528
|
};
|
|
1522
|
-
return a && typeof g == "number" && (
|
|
1523
|
-
x:
|
|
1529
|
+
return a && typeof g == "number" && (m = a === "end" ? g * -1 : g), l ? {
|
|
1530
|
+
x: m * d,
|
|
1524
1531
|
y: f * c
|
|
1525
1532
|
} : {
|
|
1526
1533
|
x: f * c,
|
|
1527
|
-
y:
|
|
1534
|
+
y: m * d
|
|
1528
1535
|
};
|
|
1529
1536
|
}
|
|
1530
|
-
const
|
|
1537
|
+
const Ei = function(s) {
|
|
1531
1538
|
return s === void 0 && (s = 0), {
|
|
1532
1539
|
name: "offset",
|
|
1533
1540
|
options: s,
|
|
@@ -1538,7 +1545,7 @@ const Li = function(s) {
|
|
|
1538
1545
|
y: r,
|
|
1539
1546
|
placement: n,
|
|
1540
1547
|
middlewareData: a
|
|
1541
|
-
} = e, l = await
|
|
1548
|
+
} = e, l = await Li(e, s);
|
|
1542
1549
|
return n === ((t = a.offset) == null ? void 0 : t.placement) && (o = a.arrow) != null && o.alignmentOffset ? {} : {
|
|
1543
1550
|
x: i + l.x,
|
|
1544
1551
|
y: r + l.y,
|
|
@@ -1549,7 +1556,7 @@ const Li = function(s) {
|
|
|
1549
1556
|
};
|
|
1550
1557
|
}
|
|
1551
1558
|
};
|
|
1552
|
-
},
|
|
1559
|
+
}, Ai = function(s) {
|
|
1553
1560
|
return s === void 0 && (s = {}), {
|
|
1554
1561
|
name: "shift",
|
|
1555
1562
|
options: s,
|
|
@@ -1575,16 +1582,16 @@ const Li = function(s) {
|
|
|
1575
1582
|
}
|
|
1576
1583
|
},
|
|
1577
1584
|
...c
|
|
1578
|
-
} =
|
|
1585
|
+
} = Ve(s, e), d = {
|
|
1579
1586
|
x: t,
|
|
1580
1587
|
y: o
|
|
1581
|
-
}, h = await r.detectOverflow(e, c), f = oe(i),
|
|
1582
|
-
let g = d[
|
|
1583
|
-
const y = (w, k) =>
|
|
1584
|
-
n && (g = y(
|
|
1588
|
+
}, h = await r.detectOverflow(e, c), f = oe(i), m = Ks(f);
|
|
1589
|
+
let g = d[m], b = d[f];
|
|
1590
|
+
const y = (w, k) => Bs(k + h[w === "y" ? "top" : "left"], k, k - h[w === "y" ? "bottom" : "right"]);
|
|
1591
|
+
n && (g = y(m, g)), a && (b = y(f, b));
|
|
1585
1592
|
const v = l.fn({
|
|
1586
1593
|
...e,
|
|
1587
|
-
[
|
|
1594
|
+
[m]: g,
|
|
1588
1595
|
[f]: b
|
|
1589
1596
|
});
|
|
1590
1597
|
return {
|
|
@@ -1593,14 +1600,14 @@ const Li = function(s) {
|
|
|
1593
1600
|
x: v.x - t,
|
|
1594
1601
|
y: v.y - o,
|
|
1595
1602
|
enabled: {
|
|
1596
|
-
[
|
|
1603
|
+
[m]: n,
|
|
1597
1604
|
[f]: a
|
|
1598
1605
|
}
|
|
1599
1606
|
}
|
|
1600
1607
|
};
|
|
1601
1608
|
}
|
|
1602
1609
|
};
|
|
1603
|
-
},
|
|
1610
|
+
}, zi = function(s) {
|
|
1604
1611
|
return s === void 0 && (s = {}), {
|
|
1605
1612
|
name: "size",
|
|
1606
1613
|
options: s,
|
|
@@ -1614,21 +1621,21 @@ const Li = function(s) {
|
|
|
1614
1621
|
apply: n = () => {
|
|
1615
1622
|
},
|
|
1616
1623
|
...a
|
|
1617
|
-
} =
|
|
1624
|
+
} = Ve(s, e), l = await i.detectOverflow(e, a), c = Se(t), d = De(t), h = oe(t) === "y", {
|
|
1618
1625
|
width: f,
|
|
1619
|
-
height:
|
|
1626
|
+
height: m
|
|
1620
1627
|
} = o.floating;
|
|
1621
1628
|
let g, b;
|
|
1622
1629
|
c === "top" || c === "bottom" ? (g = c, b = d === (await (i.isRTL == null ? void 0 : i.isRTL(r.floating)) ? "start" : "end") ? "left" : "right") : (b = c, g = d === "end" ? "top" : "bottom");
|
|
1623
|
-
const y =
|
|
1624
|
-
let
|
|
1625
|
-
P != null && P.enabled.x && (R = v), P != null && P.enabled.y && (
|
|
1630
|
+
const y = m - l.top - l.bottom, v = f - l.left - l.right, w = pe(m - l[g], y), k = pe(f - l[b], v), P = e.middlewareData.shift, M = !P;
|
|
1631
|
+
let D = w, R = k;
|
|
1632
|
+
P != null && P.enabled.x && (R = v), P != null && P.enabled.y && (D = y), M && !d && (h ? R = f - 2 * ie(l.left, l.right) : D = m - 2 * ie(l.top, l.bottom)), await n({
|
|
1626
1633
|
...e,
|
|
1627
1634
|
availableWidth: R,
|
|
1628
|
-
availableHeight:
|
|
1635
|
+
availableHeight: D
|
|
1629
1636
|
});
|
|
1630
1637
|
const G = await i.getDimensions(r.floating);
|
|
1631
|
-
return f !== G.width ||
|
|
1638
|
+
return f !== G.width || m !== G.height ? {
|
|
1632
1639
|
reset: {
|
|
1633
1640
|
rects: !0
|
|
1634
1641
|
}
|
|
@@ -1639,8 +1646,8 @@ const Li = function(s) {
|
|
|
1639
1646
|
function xt() {
|
|
1640
1647
|
return typeof window < "u";
|
|
1641
1648
|
}
|
|
1642
|
-
function
|
|
1643
|
-
return
|
|
1649
|
+
function $e(s) {
|
|
1650
|
+
return Ws(s) ? (s.nodeName || "").toLowerCase() : "#document";
|
|
1644
1651
|
}
|
|
1645
1652
|
function U(s) {
|
|
1646
1653
|
var e;
|
|
@@ -1648,9 +1655,9 @@ function U(s) {
|
|
|
1648
1655
|
}
|
|
1649
1656
|
function ne(s) {
|
|
1650
1657
|
var e;
|
|
1651
|
-
return (e = (
|
|
1658
|
+
return (e = (Ws(s) ? s.ownerDocument : s.document) || window.document) == null ? void 0 : e.documentElement;
|
|
1652
1659
|
}
|
|
1653
|
-
function
|
|
1660
|
+
function Ws(s) {
|
|
1654
1661
|
return xt() ? s instanceof Node || s instanceof U(s).Node : !1;
|
|
1655
1662
|
}
|
|
1656
1663
|
function Z(s) {
|
|
@@ -1659,7 +1666,7 @@ function Z(s) {
|
|
|
1659
1666
|
function fe(s) {
|
|
1660
1667
|
return xt() ? s instanceof HTMLElement || s instanceof U(s).HTMLElement : !1;
|
|
1661
1668
|
}
|
|
1662
|
-
function
|
|
1669
|
+
function fs(s) {
|
|
1663
1670
|
return !xt() || typeof ShadowRoot > "u" ? !1 : s instanceof ShadowRoot || s instanceof U(s).ShadowRoot;
|
|
1664
1671
|
}
|
|
1665
1672
|
function _t(s) {
|
|
@@ -1671,8 +1678,8 @@ function _t(s) {
|
|
|
1671
1678
|
} = ee(s);
|
|
1672
1679
|
return /auto|scroll|overlay|hidden|clip/.test(e + o + t) && i !== "inline" && i !== "contents";
|
|
1673
1680
|
}
|
|
1674
|
-
function
|
|
1675
|
-
return /^(table|td|th)$/.test(
|
|
1681
|
+
function Ni(s) {
|
|
1682
|
+
return /^(table|td|th)$/.test($e(s));
|
|
1676
1683
|
}
|
|
1677
1684
|
function kt(s) {
|
|
1678
1685
|
try {
|
|
@@ -1686,16 +1693,16 @@ function kt(s) {
|
|
|
1686
1693
|
return !1;
|
|
1687
1694
|
}
|
|
1688
1695
|
}
|
|
1689
|
-
const
|
|
1690
|
-
let
|
|
1691
|
-
function
|
|
1696
|
+
const Vi = /transform|translate|scale|rotate|perspective|filter/, Di = /paint|layout|strict|content/, be = (s) => !!s && s !== "none";
|
|
1697
|
+
let Pt;
|
|
1698
|
+
function Qt(s) {
|
|
1692
1699
|
const e = Z(s) ? ee(s) : s;
|
|
1693
|
-
return be(e.transform) || be(e.translate) || be(e.scale) || be(e.rotate) || be(e.perspective) || !
|
|
1700
|
+
return be(e.transform) || be(e.translate) || be(e.scale) || be(e.rotate) || be(e.perspective) || !Zt() && (be(e.backdropFilter) || be(e.filter)) || Vi.test(e.willChange || "") || Di.test(e.contain || "");
|
|
1694
1701
|
}
|
|
1695
|
-
function
|
|
1702
|
+
function $i(s) {
|
|
1696
1703
|
let e = Te(s);
|
|
1697
1704
|
for (; fe(e) && !qe(e); ) {
|
|
1698
|
-
if (
|
|
1705
|
+
if (Qt(e))
|
|
1699
1706
|
return e;
|
|
1700
1707
|
if (kt(e))
|
|
1701
1708
|
return null;
|
|
@@ -1703,11 +1710,11 @@ function Vi(s) {
|
|
|
1703
1710
|
}
|
|
1704
1711
|
return null;
|
|
1705
1712
|
}
|
|
1706
|
-
function
|
|
1707
|
-
return
|
|
1713
|
+
function Zt() {
|
|
1714
|
+
return Pt == null && (Pt = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), Pt;
|
|
1708
1715
|
}
|
|
1709
1716
|
function qe(s) {
|
|
1710
|
-
return /^(html|body|#document)$/.test(
|
|
1717
|
+
return /^(html|body|#document)$/.test($e(s));
|
|
1711
1718
|
}
|
|
1712
1719
|
function ee(s) {
|
|
1713
1720
|
return U(s).getComputedStyle(s);
|
|
@@ -1722,35 +1729,35 @@ function Ct(s) {
|
|
|
1722
1729
|
};
|
|
1723
1730
|
}
|
|
1724
1731
|
function Te(s) {
|
|
1725
|
-
if (
|
|
1732
|
+
if ($e(s) === "html")
|
|
1726
1733
|
return s;
|
|
1727
1734
|
const e = (
|
|
1728
1735
|
// Step into the shadow DOM of the parent of a slotted node.
|
|
1729
1736
|
s.assignedSlot || // DOM Element detected.
|
|
1730
1737
|
s.parentNode || // ShadowRoot detected.
|
|
1731
|
-
|
|
1738
|
+
fs(s) && s.host || // Fallback.
|
|
1732
1739
|
ne(s)
|
|
1733
1740
|
);
|
|
1734
|
-
return
|
|
1741
|
+
return fs(e) ? e.host : e;
|
|
1735
1742
|
}
|
|
1736
|
-
function
|
|
1743
|
+
function js(s) {
|
|
1737
1744
|
const e = Te(s);
|
|
1738
|
-
return qe(e) ? (s.ownerDocument || s).body : fe(e) && _t(e) ? e :
|
|
1745
|
+
return qe(e) ? (s.ownerDocument || s).body : fe(e) && _t(e) ? e : js(e);
|
|
1739
1746
|
}
|
|
1740
1747
|
function Ye(s, e, t) {
|
|
1741
1748
|
var o;
|
|
1742
1749
|
e === void 0 && (e = []), t === void 0 && (t = !0);
|
|
1743
|
-
const i =
|
|
1750
|
+
const i = js(s), r = i === ((o = s.ownerDocument) == null ? void 0 : o.body), n = U(i);
|
|
1744
1751
|
if (r) {
|
|
1745
|
-
const a =
|
|
1752
|
+
const a = Ht(n);
|
|
1746
1753
|
return e.concat(n, n.visualViewport || [], _t(i) ? i : [], a && t ? Ye(a) : []);
|
|
1747
1754
|
} else
|
|
1748
1755
|
return e.concat(i, Ye(i, [], t));
|
|
1749
1756
|
}
|
|
1750
|
-
function
|
|
1757
|
+
function Ht(s) {
|
|
1751
1758
|
return s.parent && Object.getPrototypeOf(s.parent) ? s.frameElement : null;
|
|
1752
1759
|
}
|
|
1753
|
-
function
|
|
1760
|
+
function Us(s) {
|
|
1754
1761
|
const e = ee(s);
|
|
1755
1762
|
let t = parseFloat(e.width) || 0, o = parseFloat(e.height) || 0;
|
|
1756
1763
|
const i = fe(s), r = i ? s.offsetWidth : t, n = i ? s.offsetHeight : o, a = gt(t) !== r || gt(o) !== n;
|
|
@@ -1760,48 +1767,48 @@ function js(s) {
|
|
|
1760
1767
|
$: a
|
|
1761
1768
|
};
|
|
1762
1769
|
}
|
|
1763
|
-
function
|
|
1770
|
+
function es(s) {
|
|
1764
1771
|
return Z(s) ? s : s.contextElement;
|
|
1765
1772
|
}
|
|
1766
|
-
function
|
|
1767
|
-
const e =
|
|
1773
|
+
function Oe(s) {
|
|
1774
|
+
const e = es(s);
|
|
1768
1775
|
if (!fe(e))
|
|
1769
1776
|
return re(1);
|
|
1770
1777
|
const t = e.getBoundingClientRect(), {
|
|
1771
1778
|
width: o,
|
|
1772
1779
|
height: i,
|
|
1773
1780
|
$: r
|
|
1774
|
-
} =
|
|
1781
|
+
} = Us(e);
|
|
1775
1782
|
let n = (r ? gt(t.width) : t.width) / o, a = (r ? gt(t.height) : t.height) / i;
|
|
1776
1783
|
return (!n || !Number.isFinite(n)) && (n = 1), (!a || !Number.isFinite(a)) && (a = 1), {
|
|
1777
1784
|
x: n,
|
|
1778
1785
|
y: a
|
|
1779
1786
|
};
|
|
1780
1787
|
}
|
|
1781
|
-
const
|
|
1782
|
-
function
|
|
1788
|
+
const Ri = /* @__PURE__ */ re(0);
|
|
1789
|
+
function Gs(s) {
|
|
1783
1790
|
const e = U(s);
|
|
1784
|
-
return !
|
|
1791
|
+
return !Zt() || !e.visualViewport ? Ri : {
|
|
1785
1792
|
x: e.visualViewport.offsetLeft,
|
|
1786
1793
|
y: e.visualViewport.offsetTop
|
|
1787
1794
|
};
|
|
1788
1795
|
}
|
|
1789
|
-
function
|
|
1796
|
+
function Hi(s, e, t) {
|
|
1790
1797
|
return e === void 0 && (e = !1), !!t && e && t === U(s);
|
|
1791
1798
|
}
|
|
1792
|
-
function
|
|
1799
|
+
function Ie(s, e, t, o) {
|
|
1793
1800
|
e === void 0 && (e = !1), t === void 0 && (t = !1);
|
|
1794
|
-
const i = s.getBoundingClientRect(), r =
|
|
1801
|
+
const i = s.getBoundingClientRect(), r = es(s);
|
|
1795
1802
|
let n = re(1);
|
|
1796
|
-
e && (o ? Z(o) && (n =
|
|
1797
|
-
const a =
|
|
1803
|
+
e && (o ? Z(o) && (n = Oe(o)) : n = Oe(s));
|
|
1804
|
+
const a = Hi(r, t, o) ? Gs(r) : re(0);
|
|
1798
1805
|
let l = (i.left + a.x) / n.x, c = (i.top + a.y) / n.y, d = i.width / n.x, h = i.height / n.y;
|
|
1799
1806
|
if (r && o) {
|
|
1800
|
-
const f = U(r),
|
|
1801
|
-
let g = f, b =
|
|
1802
|
-
for (; b &&
|
|
1803
|
-
const y =
|
|
1804
|
-
l *= y.x, c *= y.y, d *= y.x, h *= y.y, l += k, c += P, g = U(b), b =
|
|
1807
|
+
const f = U(r), m = Z(o) ? U(o) : o;
|
|
1808
|
+
let g = f, b = Ht(g);
|
|
1809
|
+
for (; b && m !== g; ) {
|
|
1810
|
+
const y = Oe(b), v = b.getBoundingClientRect(), w = ee(b), k = v.left + (b.clientLeft + parseFloat(w.paddingLeft)) * y.x, P = v.top + (b.clientTop + parseFloat(w.paddingTop)) * y.y;
|
|
1811
|
+
l *= y.x, c *= y.y, d *= y.x, h *= y.y, l += k, c += P, g = U(b), b = Ht(g);
|
|
1805
1812
|
}
|
|
1806
1813
|
}
|
|
1807
1814
|
return vt({
|
|
@@ -1813,16 +1820,16 @@ function Oe(s, e, t, o) {
|
|
|
1813
1820
|
}
|
|
1814
1821
|
function St(s, e) {
|
|
1815
1822
|
const t = Ct(s).scrollLeft;
|
|
1816
|
-
return e ? e.left + t :
|
|
1823
|
+
return e ? e.left + t : Ie(ne(s)).left + t;
|
|
1817
1824
|
}
|
|
1818
|
-
function
|
|
1825
|
+
function Xs(s, e) {
|
|
1819
1826
|
const t = s.getBoundingClientRect(), o = t.left + e.scrollLeft - St(s, t), i = t.top + e.scrollTop;
|
|
1820
1827
|
return {
|
|
1821
1828
|
x: o,
|
|
1822
1829
|
y: i
|
|
1823
1830
|
};
|
|
1824
1831
|
}
|
|
1825
|
-
function
|
|
1832
|
+
function Bi(s) {
|
|
1826
1833
|
let {
|
|
1827
1834
|
elements: e,
|
|
1828
1835
|
rect: t,
|
|
@@ -1837,11 +1844,11 @@ function Hi(s) {
|
|
|
1837
1844
|
scrollTop: 0
|
|
1838
1845
|
}, c = re(1);
|
|
1839
1846
|
const d = re(0), h = fe(o);
|
|
1840
|
-
if ((h || !r) && ((
|
|
1841
|
-
const
|
|
1842
|
-
c =
|
|
1847
|
+
if ((h || !r) && (($e(o) !== "body" || _t(n)) && (l = Ct(o)), h)) {
|
|
1848
|
+
const m = Ie(o);
|
|
1849
|
+
c = Oe(o), d.x = m.x + o.clientLeft, d.y = m.y + o.clientTop;
|
|
1843
1850
|
}
|
|
1844
|
-
const f = n && !h && !r ?
|
|
1851
|
+
const f = n && !h && !r ? Xs(n, l) : re(0);
|
|
1845
1852
|
return {
|
|
1846
1853
|
width: t.width * c.x,
|
|
1847
1854
|
height: t.height * c.y,
|
|
@@ -1849,10 +1856,10 @@ function Hi(s) {
|
|
|
1849
1856
|
y: t.y * c.y - l.scrollTop * c.y + d.y + f.y
|
|
1850
1857
|
};
|
|
1851
1858
|
}
|
|
1852
|
-
function
|
|
1859
|
+
function Ki(s) {
|
|
1853
1860
|
return s.getClientRects ? Array.from(s.getClientRects()) : [];
|
|
1854
1861
|
}
|
|
1855
|
-
function
|
|
1862
|
+
function Fi(s) {
|
|
1856
1863
|
const e = Ct(s), t = s.ownerDocument.body, o = ie(s.scrollWidth, s.clientWidth, t.scrollWidth, t.clientWidth), i = ie(s.scrollHeight, s.clientHeight, t.scrollHeight, t.clientHeight);
|
|
1857
1864
|
let r = -e.scrollLeft + St(s);
|
|
1858
1865
|
const n = -e.scrollTop;
|
|
@@ -1863,18 +1870,18 @@ function Ki(s) {
|
|
|
1863
1870
|
y: n
|
|
1864
1871
|
};
|
|
1865
1872
|
}
|
|
1866
|
-
const
|
|
1867
|
-
function
|
|
1873
|
+
const Wi = 25;
|
|
1874
|
+
function ji(s, e, t) {
|
|
1868
1875
|
t === void 0 && (t = "viewport");
|
|
1869
1876
|
const o = t === "layoutViewport", i = U(s), r = ne(s), n = i.visualViewport;
|
|
1870
1877
|
let a = r.clientWidth, l = r.clientHeight, c = 0, d = 0;
|
|
1871
1878
|
if (n) {
|
|
1872
|
-
const f = !
|
|
1879
|
+
const f = !Zt() || e === "fixed";
|
|
1873
1880
|
o ? f || (c = -n.offsetLeft, d = -n.offsetTop) : (a = n.width, l = n.height, f && (c = n.offsetLeft, d = n.offsetTop));
|
|
1874
1881
|
}
|
|
1875
1882
|
if (St(r) <= 0) {
|
|
1876
|
-
const f = r.ownerDocument,
|
|
1877
|
-
v <=
|
|
1883
|
+
const f = r.ownerDocument, m = f.body, g = getComputedStyle(m), b = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0, y = Math.abs(r.clientWidth - m.clientWidth - b), v = getComputedStyle(r).scrollbarGutter === "stable both-edges" ? y / 2 : y;
|
|
1884
|
+
v <= Wi && (a -= v);
|
|
1878
1885
|
}
|
|
1879
1886
|
return {
|
|
1880
1887
|
width: a,
|
|
@@ -1883,8 +1890,8 @@ function Wi(s, e, t) {
|
|
|
1883
1890
|
y: d
|
|
1884
1891
|
};
|
|
1885
1892
|
}
|
|
1886
|
-
function
|
|
1887
|
-
const t =
|
|
1893
|
+
function Ui(s, e) {
|
|
1894
|
+
const t = Ie(s, !0, e === "fixed"), o = t.top + s.clientTop, i = t.left + s.clientLeft, r = Oe(s), n = s.clientWidth * r.x, a = s.clientHeight * r.y, l = i * r.x, c = o * r.y;
|
|
1888
1895
|
return {
|
|
1889
1896
|
width: n,
|
|
1890
1897
|
height: a,
|
|
@@ -1892,16 +1899,16 @@ function ji(s, e) {
|
|
|
1892
1899
|
y: c
|
|
1893
1900
|
};
|
|
1894
1901
|
}
|
|
1895
|
-
function
|
|
1902
|
+
function gs(s, e, t) {
|
|
1896
1903
|
let o;
|
|
1897
1904
|
if (e === "viewport" || e === "layoutViewport")
|
|
1898
|
-
o =
|
|
1905
|
+
o = ji(s, t, e);
|
|
1899
1906
|
else if (e === "document")
|
|
1900
|
-
o =
|
|
1907
|
+
o = Fi(ne(s));
|
|
1901
1908
|
else if (Z(e))
|
|
1902
|
-
o =
|
|
1909
|
+
o = Ui(e, t);
|
|
1903
1910
|
else {
|
|
1904
|
-
const i =
|
|
1911
|
+
const i = Gs(s);
|
|
1905
1912
|
o = {
|
|
1906
1913
|
x: e.x - i.x,
|
|
1907
1914
|
y: e.y - i.y,
|
|
@@ -1911,31 +1918,31 @@ function fs(s, e, t) {
|
|
|
1911
1918
|
}
|
|
1912
1919
|
return vt(o);
|
|
1913
1920
|
}
|
|
1914
|
-
function
|
|
1921
|
+
function Gi(s, e) {
|
|
1915
1922
|
const t = e.get(s);
|
|
1916
1923
|
if (t)
|
|
1917
1924
|
return t;
|
|
1918
|
-
let o = Ye(s, [], !1).filter((a) => Z(a) &&
|
|
1925
|
+
let o = Ye(s, [], !1).filter((a) => Z(a) && $e(a) !== "body"), i = null;
|
|
1919
1926
|
const r = ee(s).position === "fixed";
|
|
1920
1927
|
let n = r ? Te(s) : s;
|
|
1921
1928
|
for (; Z(n) && !qe(n); ) {
|
|
1922
|
-
const a = ee(n), l =
|
|
1929
|
+
const a = ee(n), l = Qt(n), c = i ? i.position : r ? "fixed" : "";
|
|
1923
1930
|
!l && (c === "fixed" || c === "absolute" && a.position === "static") ? o = o.filter((h) => h !== n) : i = a, n = Te(n);
|
|
1924
1931
|
}
|
|
1925
1932
|
return e.set(s, o), o;
|
|
1926
1933
|
}
|
|
1927
|
-
function
|
|
1934
|
+
function Xi(s) {
|
|
1928
1935
|
let {
|
|
1929
1936
|
element: e,
|
|
1930
1937
|
boundary: t,
|
|
1931
1938
|
rootBoundary: o,
|
|
1932
1939
|
strategy: i
|
|
1933
1940
|
} = s;
|
|
1934
|
-
const n = [...t === "clippingAncestors" ? kt(e) ? [] :
|
|
1941
|
+
const n = [...t === "clippingAncestors" ? kt(e) ? [] : Gi(e, this._c) : [].concat(t), o], a = gs(e, n[0], i);
|
|
1935
1942
|
let l = a.top, c = a.right, d = a.bottom, h = a.left;
|
|
1936
1943
|
for (let f = 1; f < n.length; f++) {
|
|
1937
|
-
const
|
|
1938
|
-
l = ie(
|
|
1944
|
+
const m = gs(e, n[f], i);
|
|
1945
|
+
l = ie(m.top, l), c = pe(m.right, c), d = pe(m.bottom, d), h = ie(m.left, h);
|
|
1939
1946
|
}
|
|
1940
1947
|
return {
|
|
1941
1948
|
width: c - h,
|
|
@@ -1944,29 +1951,29 @@ function Gi(s) {
|
|
|
1944
1951
|
y: l
|
|
1945
1952
|
};
|
|
1946
1953
|
}
|
|
1947
|
-
function
|
|
1954
|
+
function qi(s) {
|
|
1948
1955
|
const {
|
|
1949
1956
|
width: e,
|
|
1950
1957
|
height: t
|
|
1951
|
-
} =
|
|
1958
|
+
} = Us(s);
|
|
1952
1959
|
return {
|
|
1953
1960
|
width: e,
|
|
1954
1961
|
height: t
|
|
1955
1962
|
};
|
|
1956
1963
|
}
|
|
1957
|
-
function
|
|
1958
|
-
const o = fe(e), i = ne(e), r = t === "fixed", n =
|
|
1964
|
+
function Yi(s, e, t) {
|
|
1965
|
+
const o = fe(e), i = ne(e), r = t === "fixed", n = Ie(s, !0, r, e);
|
|
1959
1966
|
let a = {
|
|
1960
1967
|
scrollLeft: 0,
|
|
1961
1968
|
scrollTop: 0
|
|
1962
1969
|
};
|
|
1963
1970
|
const l = re(0);
|
|
1964
|
-
if ((o || !r) && ((
|
|
1965
|
-
const f =
|
|
1971
|
+
if ((o || !r) && (($e(e) !== "body" || _t(i)) && (a = Ct(e)), o)) {
|
|
1972
|
+
const f = Ie(e, !0, r, e);
|
|
1966
1973
|
l.x = f.x + e.clientLeft, l.y = f.y + e.clientTop;
|
|
1967
1974
|
}
|
|
1968
1975
|
!o && i && (l.x = St(i));
|
|
1969
|
-
const c = i && !o && !r ?
|
|
1976
|
+
const c = i && !o && !r ? Xs(i, a) : re(0), d = n.left + a.scrollLeft - l.x - c.x, h = n.top + a.scrollTop - l.y - c.y;
|
|
1970
1977
|
return {
|
|
1971
1978
|
x: d,
|
|
1972
1979
|
y: h,
|
|
@@ -1974,10 +1981,10 @@ function qi(s, e, t) {
|
|
|
1974
1981
|
height: n.height
|
|
1975
1982
|
};
|
|
1976
1983
|
}
|
|
1977
|
-
function
|
|
1984
|
+
function Mt(s) {
|
|
1978
1985
|
return ee(s).position === "static";
|
|
1979
1986
|
}
|
|
1980
|
-
function
|
|
1987
|
+
function bs(s, e) {
|
|
1981
1988
|
if (!fe(s) || ee(s).position === "fixed")
|
|
1982
1989
|
return null;
|
|
1983
1990
|
if (e)
|
|
@@ -1985,28 +1992,28 @@ function gs(s, e) {
|
|
|
1985
1992
|
let t = s.offsetParent;
|
|
1986
1993
|
return ne(s) === t && (t = t.ownerDocument.body), t;
|
|
1987
1994
|
}
|
|
1988
|
-
function
|
|
1995
|
+
function qs(s, e) {
|
|
1989
1996
|
const t = U(s);
|
|
1990
1997
|
if (kt(s))
|
|
1991
1998
|
return t;
|
|
1992
1999
|
if (!fe(s)) {
|
|
1993
2000
|
let i = Te(s);
|
|
1994
2001
|
for (; i && !qe(i); ) {
|
|
1995
|
-
if (Z(i) && !
|
|
2002
|
+
if (Z(i) && !Mt(i))
|
|
1996
2003
|
return i;
|
|
1997
2004
|
i = Te(i);
|
|
1998
2005
|
}
|
|
1999
2006
|
return t;
|
|
2000
2007
|
}
|
|
2001
|
-
let o =
|
|
2002
|
-
for (; o &&
|
|
2003
|
-
o =
|
|
2004
|
-
return o && qe(o) &&
|
|
2008
|
+
let o = bs(s, e);
|
|
2009
|
+
for (; o && Ni(o) && Mt(o); )
|
|
2010
|
+
o = bs(o, e);
|
|
2011
|
+
return o && qe(o) && Mt(o) && !Qt(o) ? t : o || $i(s) || t;
|
|
2005
2012
|
}
|
|
2006
|
-
const
|
|
2007
|
-
const e = this.getOffsetParent ||
|
|
2013
|
+
const Ji = async function(s) {
|
|
2014
|
+
const e = this.getOffsetParent || qs, t = this.getDimensions, o = await t(s.floating);
|
|
2008
2015
|
return {
|
|
2009
|
-
reference:
|
|
2016
|
+
reference: Yi(s.reference, await e(s.floating), s.strategy),
|
|
2010
2017
|
floating: {
|
|
2011
2018
|
x: 0,
|
|
2012
2019
|
y: 0,
|
|
@@ -2015,25 +2022,25 @@ const Yi = async function(s) {
|
|
|
2015
2022
|
}
|
|
2016
2023
|
};
|
|
2017
2024
|
};
|
|
2018
|
-
function
|
|
2025
|
+
function Qi(s) {
|
|
2019
2026
|
return ee(s).direction === "rtl";
|
|
2020
2027
|
}
|
|
2021
|
-
const
|
|
2022
|
-
convertOffsetParentRelativeRectToViewportRelativeRect:
|
|
2028
|
+
const Ys = {
|
|
2029
|
+
convertOffsetParentRelativeRectToViewportRelativeRect: Bi,
|
|
2023
2030
|
getDocumentElement: ne,
|
|
2024
|
-
getClippingRect:
|
|
2025
|
-
getOffsetParent:
|
|
2026
|
-
getElementRects:
|
|
2027
|
-
getClientRects:
|
|
2028
|
-
getDimensions:
|
|
2029
|
-
getScale:
|
|
2031
|
+
getClippingRect: Xi,
|
|
2032
|
+
getOffsetParent: qs,
|
|
2033
|
+
getElementRects: Ji,
|
|
2034
|
+
getClientRects: Ki,
|
|
2035
|
+
getDimensions: qi,
|
|
2036
|
+
getScale: Oe,
|
|
2030
2037
|
isElement: Z,
|
|
2031
|
-
isRTL:
|
|
2038
|
+
isRTL: Qi
|
|
2032
2039
|
};
|
|
2033
|
-
function
|
|
2040
|
+
function Js(s, e) {
|
|
2034
2041
|
return s.x === e.x && s.y === e.y && s.width === e.width && s.height === e.height;
|
|
2035
2042
|
}
|
|
2036
|
-
function
|
|
2043
|
+
function Zi(s, e, t) {
|
|
2037
2044
|
let o = null, i;
|
|
2038
2045
|
const r = ne(s);
|
|
2039
2046
|
function n() {
|
|
@@ -2043,21 +2050,21 @@ function Qi(s, e, t) {
|
|
|
2043
2050
|
function a(d, h) {
|
|
2044
2051
|
d === void 0 && (d = !1), h === void 0 && (h = 1), n();
|
|
2045
2052
|
const f = s.getBoundingClientRect(), {
|
|
2046
|
-
left:
|
|
2053
|
+
left: m,
|
|
2047
2054
|
top: g,
|
|
2048
2055
|
width: b,
|
|
2049
2056
|
height: y
|
|
2050
2057
|
} = f;
|
|
2051
2058
|
if (d || e(), !b || !y)
|
|
2052
2059
|
return;
|
|
2053
|
-
const v = rt(g), w = rt(r.clientWidth - (
|
|
2060
|
+
const v = rt(g), w = rt(r.clientWidth - (m + b)), k = rt(r.clientHeight - (g + y)), P = rt(m), D = {
|
|
2054
2061
|
rootMargin: -v + "px " + -w + "px " + -k + "px " + -P + "px",
|
|
2055
2062
|
threshold: ie(0, pe(1, h)) || 1
|
|
2056
2063
|
};
|
|
2057
2064
|
let R = !0;
|
|
2058
2065
|
function G(L) {
|
|
2059
2066
|
const C = L[0].intersectionRatio;
|
|
2060
|
-
if (!
|
|
2067
|
+
if (!Js(f, s.getBoundingClientRect()))
|
|
2061
2068
|
return a();
|
|
2062
2069
|
if (C !== h) {
|
|
2063
2070
|
if (!R)
|
|
@@ -2070,12 +2077,12 @@ function Qi(s, e, t) {
|
|
|
2070
2077
|
}
|
|
2071
2078
|
try {
|
|
2072
2079
|
o = new IntersectionObserver(G, {
|
|
2073
|
-
...
|
|
2080
|
+
...D,
|
|
2074
2081
|
// Handle <iframe>s
|
|
2075
2082
|
root: r.ownerDocument
|
|
2076
2083
|
});
|
|
2077
2084
|
} catch {
|
|
2078
|
-
o = new IntersectionObserver(G,
|
|
2085
|
+
o = new IntersectionObserver(G, D);
|
|
2079
2086
|
}
|
|
2080
2087
|
o.observe(s);
|
|
2081
2088
|
}
|
|
@@ -2084,7 +2091,7 @@ function Qi(s, e, t) {
|
|
|
2084
2091
|
l.removeEventListener("resize", c), n();
|
|
2085
2092
|
};
|
|
2086
2093
|
}
|
|
2087
|
-
function
|
|
2094
|
+
function er(s, e, t, o) {
|
|
2088
2095
|
o === void 0 && (o = {});
|
|
2089
2096
|
const {
|
|
2090
2097
|
ancestorScroll: i = !0,
|
|
@@ -2092,63 +2099,63 @@ function Zi(s, e, t, o) {
|
|
|
2092
2099
|
elementResize: n = typeof ResizeObserver == "function",
|
|
2093
2100
|
layoutShift: a = typeof IntersectionObserver == "function",
|
|
2094
2101
|
animationFrame: l = !1
|
|
2095
|
-
} = o, c =
|
|
2102
|
+
} = o, c = es(s), d = i || r ? [...c ? Ye(c) : [], ...e ? Ye(e) : []] : [];
|
|
2096
2103
|
d.forEach((v) => {
|
|
2097
2104
|
i && v.addEventListener("scroll", t), r && v.addEventListener("resize", t);
|
|
2098
2105
|
});
|
|
2099
|
-
const h = c && a ?
|
|
2100
|
-
let f = -1,
|
|
2101
|
-
n && (
|
|
2106
|
+
const h = c && a ? Zi(c, t, r) : null;
|
|
2107
|
+
let f = -1, m = null;
|
|
2108
|
+
n && (m = new ResizeObserver((v) => {
|
|
2102
2109
|
let [w] = v;
|
|
2103
|
-
w && w.target === c &&
|
|
2110
|
+
w && w.target === c && m && e && (m.unobserve(e), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
|
|
2104
2111
|
var k;
|
|
2105
|
-
(k =
|
|
2112
|
+
(k = m) == null || k.observe(e);
|
|
2106
2113
|
})), t();
|
|
2107
|
-
}), c && !l &&
|
|
2108
|
-
let g, b = l ?
|
|
2114
|
+
}), c && !l && m.observe(c), e && m.observe(e));
|
|
2115
|
+
let g, b = l ? Ie(s) : null;
|
|
2109
2116
|
l && y();
|
|
2110
2117
|
function y() {
|
|
2111
|
-
const v =
|
|
2112
|
-
b && !
|
|
2118
|
+
const v = Ie(s);
|
|
2119
|
+
b && !Js(b, v) && t(), b = v, g = requestAnimationFrame(y);
|
|
2113
2120
|
}
|
|
2114
2121
|
return t(), () => {
|
|
2115
2122
|
var v;
|
|
2116
2123
|
d.forEach((w) => {
|
|
2117
2124
|
i && w.removeEventListener("scroll", t), r && w.removeEventListener("resize", t);
|
|
2118
|
-
}), h == null || h(), (v =
|
|
2125
|
+
}), h == null || h(), (v = m) == null || v.disconnect(), m = null, l && cancelAnimationFrame(g);
|
|
2119
2126
|
};
|
|
2120
2127
|
}
|
|
2121
|
-
const
|
|
2128
|
+
const tr = Ei, sr = Ai, or = Pi, Lt = zi, ir = Oi, rr = (s, e, t) => {
|
|
2122
2129
|
const o = /* @__PURE__ */ new Map(), i = t ?? {}, r = {
|
|
2123
|
-
...
|
|
2130
|
+
...Ys,
|
|
2124
2131
|
...i.platform,
|
|
2125
2132
|
_c: o
|
|
2126
2133
|
};
|
|
2127
|
-
return
|
|
2134
|
+
return Ii(s, e, {
|
|
2128
2135
|
...i,
|
|
2129
2136
|
platform: r
|
|
2130
2137
|
});
|
|
2131
2138
|
};
|
|
2132
|
-
function
|
|
2139
|
+
function Bt(s) {
|
|
2133
2140
|
const e = s.parentNode ?? null;
|
|
2134
2141
|
return e instanceof ShadowRoot ? e.host : e;
|
|
2135
2142
|
}
|
|
2136
|
-
function
|
|
2143
|
+
function nr(s) {
|
|
2137
2144
|
if (s.transform !== "none" || s.perspective !== "none" || s.filter !== "none")
|
|
2138
2145
|
return !0;
|
|
2139
2146
|
const e = s.backdropFilter;
|
|
2140
2147
|
return !!(e && e !== "none" || s.willChange && /\b(transform|filter|perspective)\b/.test(s.willChange));
|
|
2141
2148
|
}
|
|
2142
|
-
function
|
|
2143
|
-
let e =
|
|
2149
|
+
function vs(s) {
|
|
2150
|
+
let e = Bt(s);
|
|
2144
2151
|
for (; e && !(e === document.body || e === document.documentElement); ) {
|
|
2145
|
-
if (e instanceof Element &&
|
|
2152
|
+
if (e instanceof Element && nr(getComputedStyle(e)))
|
|
2146
2153
|
return e;
|
|
2147
|
-
e =
|
|
2154
|
+
e = Bt(e);
|
|
2148
2155
|
}
|
|
2149
2156
|
return window;
|
|
2150
2157
|
}
|
|
2151
|
-
function
|
|
2158
|
+
function ar(s, e, t) {
|
|
2152
2159
|
let o = s;
|
|
2153
2160
|
for (; o && !(o === document.body || o === document.documentElement); ) {
|
|
2154
2161
|
if (o instanceof Element) {
|
|
@@ -2156,11 +2163,11 @@ function nr(s, e, t) {
|
|
|
2156
2163
|
if (Math.abs(i.x - e) < 2 && Math.abs(i.y - t) < 2)
|
|
2157
2164
|
return o;
|
|
2158
2165
|
}
|
|
2159
|
-
o =
|
|
2166
|
+
o = Bt(o);
|
|
2160
2167
|
}
|
|
2161
2168
|
return null;
|
|
2162
2169
|
}
|
|
2163
|
-
function
|
|
2170
|
+
function lr(s) {
|
|
2164
2171
|
const e = getComputedStyle(s), t = [];
|
|
2165
2172
|
e.transform !== "none" && t.push(`transform: ${e.transform}`), e.perspective !== "none" && t.push(`perspective: ${e.perspective}`), e.filter !== "none" && t.push(`filter: ${e.filter}`);
|
|
2166
2173
|
const o = e.backdropFilter;
|
|
@@ -2168,11 +2175,11 @@ function ar(s) {
|
|
|
2168
2175
|
const i = e.containerType;
|
|
2169
2176
|
return i && i !== "normal" && t.push(`container-type: ${i}`), t.join("; ");
|
|
2170
2177
|
}
|
|
2171
|
-
function
|
|
2178
|
+
function cr(s) {
|
|
2172
2179
|
const e = s.id ? `#${s.id}` : "", t = typeof s.className == "string" && s.className ? "." + s.className.split(/\s+/).filter(Boolean).slice(0, 2).join(".") : "";
|
|
2173
2180
|
return `<${s.tagName.toLowerCase()}${e}${t}>`;
|
|
2174
2181
|
}
|
|
2175
|
-
function
|
|
2182
|
+
function dr(s) {
|
|
2176
2183
|
const e = s.tolerance ?? 1.5;
|
|
2177
2184
|
let t = 0, o = 0;
|
|
2178
2185
|
if (s.offsetParent instanceof Element) {
|
|
@@ -2182,46 +2189,46 @@ function cr(s) {
|
|
|
2182
2189
|
const i = s.panel.getBoundingClientRect(), r = i.x - (t + s.expectedX), n = i.y - (o + s.expectedY);
|
|
2183
2190
|
if (Math.abs(r) < e && Math.abs(n) < e)
|
|
2184
2191
|
return null;
|
|
2185
|
-
const a =
|
|
2192
|
+
const a = ar(s.reference, r, n);
|
|
2186
2193
|
return {
|
|
2187
2194
|
driftX: r,
|
|
2188
2195
|
driftY: n,
|
|
2189
2196
|
culprit: a,
|
|
2190
|
-
culpritDescription: a ?
|
|
2191
|
-
culpritCss: a ?
|
|
2197
|
+
culpritDescription: a ? cr(a) : "an ancestor element (could not auto-identify)",
|
|
2198
|
+
culpritCss: a ? lr(a) : ""
|
|
2192
2199
|
};
|
|
2193
2200
|
}
|
|
2194
|
-
function
|
|
2201
|
+
function hr(s, e) {
|
|
2195
2202
|
var i;
|
|
2196
2203
|
const t = (i = s.closest) == null ? void 0 : i.call(s, "[data-theme]"), o = t == null ? void 0 : t.getAttribute("data-theme");
|
|
2197
2204
|
o != null && e.setAttribute("data-theme", o);
|
|
2198
2205
|
}
|
|
2199
|
-
const
|
|
2200
|
-
function
|
|
2206
|
+
const ur = { top: "bottom", right: "left", bottom: "top", left: "right" };
|
|
2207
|
+
function mr(s, e, t) {
|
|
2201
2208
|
if (!t)
|
|
2202
2209
|
return;
|
|
2203
|
-
const o = e.split("-")[0], i =
|
|
2210
|
+
const o = e.split("-")[0], i = ur[o];
|
|
2204
2211
|
s.style.left = t.x != null ? `${t.x}px` : "", s.style.top = t.y != null ? `${t.y}px` : "", s.style.right = "", s.style.bottom = "", s.style[i] = `-${s.offsetWidth / 2}px`;
|
|
2205
2212
|
}
|
|
2206
|
-
function
|
|
2207
|
-
const t = [
|
|
2213
|
+
function ys(s, e) {
|
|
2214
|
+
const t = [tr(s.offset ?? 4)];
|
|
2208
2215
|
if (s.matchWidth) {
|
|
2209
2216
|
const i = s.matchWidth;
|
|
2210
|
-
t.push(
|
|
2217
|
+
t.push(Lt({
|
|
2211
2218
|
apply({ rects: r, elements: n }) {
|
|
2212
2219
|
const a = `${r.reference.width}px`;
|
|
2213
2220
|
i === "exact" ? n.floating.style.width = a : n.floating.style.minWidth = a;
|
|
2214
2221
|
}
|
|
2215
2222
|
}));
|
|
2216
2223
|
}
|
|
2217
|
-
e && t.push(
|
|
2224
|
+
e && t.push(or({
|
|
2218
2225
|
...s.lockPlacement === !0 ? { fallbackStrategy: "initialPlacement" } : {},
|
|
2219
2226
|
...s.flipPadding != null ? { padding: s.flipPadding } : {}
|
|
2220
2227
|
}));
|
|
2221
2228
|
const o = s.shift ?? 8;
|
|
2222
|
-
if (o !== !1 && t.push(
|
|
2229
|
+
if (o !== !1 && t.push(sr({ padding: o })), s.maxHeight) {
|
|
2223
2230
|
const i = typeof s.maxHeight == "object" ? s.maxHeight.padding : void 0;
|
|
2224
|
-
t.push(
|
|
2231
|
+
t.push(Lt({
|
|
2225
2232
|
padding: i,
|
|
2226
2233
|
apply({ availableHeight: r, elements: n }) {
|
|
2227
2234
|
n.floating.style.maxHeight = `${Math.max(0, r)}px`;
|
|
@@ -2230,49 +2237,49 @@ function vs(s, e) {
|
|
|
2230
2237
|
}
|
|
2231
2238
|
if (s.maxWidth) {
|
|
2232
2239
|
const i = typeof s.maxWidth == "object" ? s.maxWidth.padding : void 0;
|
|
2233
|
-
t.push(
|
|
2240
|
+
t.push(Lt({
|
|
2234
2241
|
padding: i,
|
|
2235
2242
|
apply({ availableWidth: r, elements: n }) {
|
|
2236
2243
|
n.floating.style.maxWidth = `${Math.max(0, r)}px`;
|
|
2237
2244
|
}
|
|
2238
2245
|
}));
|
|
2239
2246
|
}
|
|
2240
|
-
return s.arrow && t.push(
|
|
2247
|
+
return s.arrow && t.push(ir({ element: s.arrow.element, padding: s.arrow.padding })), t;
|
|
2241
2248
|
}
|
|
2242
2249
|
function Ue(s, e, t = {}) {
|
|
2243
2250
|
const o = t.strategy ?? "fixed";
|
|
2244
|
-
t.inheritThemeFrom &&
|
|
2245
|
-
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n =
|
|
2251
|
+
t.inheritThemeFrom && hr(t.inheritThemeFrom, s), s.style.position = o, s.style.left = "0", s.style.top = "0";
|
|
2252
|
+
let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n = ys(t, r);
|
|
2246
2253
|
const a = t.lockPlacement === "freeze";
|
|
2247
2254
|
let l = !1;
|
|
2248
|
-
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...
|
|
2249
|
-
var
|
|
2250
|
-
(
|
|
2255
|
+
const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...Ys, getOffsetParent: () => vs(s) } : void 0), h = () => {
|
|
2256
|
+
var m;
|
|
2257
|
+
(m = t.beforeCompute) == null || m.call(t), rr(e, s, {
|
|
2251
2258
|
placement: i,
|
|
2252
2259
|
strategy: o,
|
|
2253
2260
|
middleware: n,
|
|
2254
2261
|
...d ? { platform: d } : {}
|
|
2255
2262
|
}).then(({ x: g, y: b, placement: y, middlewareData: v }) => {
|
|
2256
2263
|
var w, k;
|
|
2257
|
-
if (s.style.left = `${g}px`, s.style.top = `${b}px`, t.arrow &&
|
|
2258
|
-
const P = c ?
|
|
2264
|
+
if (s.style.left = `${g}px`, s.style.top = `${b}px`, t.arrow && mr(t.arrow.element, y, v.arrow), a && !l && (l = !0, i = y, r = !1, n = ys(t, !1)), (w = t.onPlaced) == null || w.call(t, y), (k = t.onComputed) == null || k.call(t, { x: g, y: b, placement: y }), t.onDrift && e instanceof Element) {
|
|
2265
|
+
const P = c ? vs(s) : window, M = dr({ panel: s, reference: e, expectedX: g, expectedY: b, offsetParent: P });
|
|
2259
2266
|
M && t.onDrift(M);
|
|
2260
2267
|
}
|
|
2261
2268
|
});
|
|
2262
2269
|
};
|
|
2263
2270
|
let f;
|
|
2264
|
-
return t.autoUpdate ?? !0 ? f =
|
|
2271
|
+
return t.autoUpdate ?? !0 ? f = er(e, s, h, t.autoUpdateOptions) : h(), {
|
|
2265
2272
|
update: h,
|
|
2266
2273
|
destroy() {
|
|
2267
2274
|
f == null || f(), f = void 0;
|
|
2268
2275
|
}
|
|
2269
2276
|
};
|
|
2270
2277
|
}
|
|
2271
|
-
function
|
|
2278
|
+
function pr(s) {
|
|
2272
2279
|
return typeof s == "number" ? { show: s, hide: s } : { show: (s == null ? void 0 : s.show) ?? 0, hide: (s == null ? void 0 : s.hide) ?? 0 };
|
|
2273
2280
|
}
|
|
2274
|
-
function
|
|
2275
|
-
const e = s.container ?? document.body, t = s.placement ?? "top", o = s.visibleClass ?? "is-visible", i =
|
|
2281
|
+
function fr(s) {
|
|
2282
|
+
const e = s.container ?? document.body, t = s.placement ?? "top", o = s.visibleClass ?? "is-visible", i = pr(s.delay), r = document.createElement("div");
|
|
2276
2283
|
r.setAttribute("role", "tooltip"), s.cssClass && (r.className = s.cssClass), typeof s.content == "string" ? r.textContent = s.content : r.append(s.content);
|
|
2277
2284
|
let n, a = !1, l, c, d;
|
|
2278
2285
|
const h = {
|
|
@@ -2280,11 +2287,11 @@ function pr(s) {
|
|
|
2280
2287
|
contextElement: s.trigger
|
|
2281
2288
|
}, f = (w) => {
|
|
2282
2289
|
d = new DOMRect(w.clientX, w.clientY, 0, 0), n == null || n.update();
|
|
2283
|
-
},
|
|
2290
|
+
}, m = () => {
|
|
2284
2291
|
l && clearTimeout(l), c && clearTimeout(c), l = c = void 0;
|
|
2285
2292
|
}, g = () => {
|
|
2286
2293
|
var k;
|
|
2287
|
-
if (
|
|
2294
|
+
if (m(), a)
|
|
2288
2295
|
return;
|
|
2289
2296
|
(k = s.onBeforeShow) == null || k.call(s), a = !0, e.append(r);
|
|
2290
2297
|
const w = s.followCursor ? h : s.trigger;
|
|
@@ -2295,11 +2302,11 @@ function pr(s) {
|
|
|
2295
2302
|
inheritThemeFrom: s.inheritThemeFrom ?? s.trigger
|
|
2296
2303
|
}), s.followCursor && s.trigger.addEventListener("mousemove", f), r.classList.add(o);
|
|
2297
2304
|
}, b = () => {
|
|
2298
|
-
|
|
2305
|
+
m(), a && (a = !1, r.classList.remove(o), s.followCursor && s.trigger.removeEventListener("mousemove", f), n == null || n.destroy(), n = void 0, r.remove());
|
|
2299
2306
|
}, y = () => {
|
|
2300
|
-
|
|
2307
|
+
m(), i.show > 0 ? l = setTimeout(g, i.show) : g();
|
|
2301
2308
|
}, v = () => {
|
|
2302
|
-
|
|
2309
|
+
m(), i.hide > 0 ? c = setTimeout(b, i.hide) : b();
|
|
2303
2310
|
};
|
|
2304
2311
|
return s.trigger.addEventListener("mouseenter", y), s.trigger.addEventListener("mouseleave", v), s.trigger.addEventListener("focusin", y), s.trigger.addEventListener("focusout", v), {
|
|
2305
2312
|
element: r,
|
|
@@ -2313,7 +2320,7 @@ function pr(s) {
|
|
|
2313
2320
|
}
|
|
2314
2321
|
};
|
|
2315
2322
|
}
|
|
2316
|
-
function
|
|
2323
|
+
function gr(s) {
|
|
2317
2324
|
const e = s.container ?? document.body;
|
|
2318
2325
|
let t, o = !1;
|
|
2319
2326
|
const i = s.inheritThemeFrom ?? (s.reference instanceof HTMLElement ? s.reference : void 0);
|
|
@@ -2348,37 +2355,37 @@ function fr(s) {
|
|
|
2348
2355
|
}
|
|
2349
2356
|
};
|
|
2350
2357
|
}
|
|
2351
|
-
const
|
|
2352
|
-
function
|
|
2358
|
+
const Qs = ["INIT", "DATA", "UI", "INTERACTION"], ae = gi("MULTISELECT", Qs), nt = ae.loggers.INIT, K = ae.loggers.DATA, Q = ae.loggers.UI, W = ae.loggers.INTERACTION, Nr = Qs.map((s) => `MULTISELECT:${s}`);
|
|
2359
|
+
function Vr() {
|
|
2353
2360
|
ae.enableLogging();
|
|
2354
2361
|
}
|
|
2355
|
-
function
|
|
2362
|
+
function Dr() {
|
|
2356
2363
|
ae.disableLogging();
|
|
2357
2364
|
}
|
|
2358
|
-
function
|
|
2365
|
+
function $r(s) {
|
|
2359
2366
|
ae.setLogLevel(s);
|
|
2360
2367
|
}
|
|
2361
|
-
function
|
|
2368
|
+
function Rr(s, e) {
|
|
2362
2369
|
const t = s.includes(":") ? s.split(":").pop() : s;
|
|
2363
2370
|
ae.setCategoryLevel(t, e);
|
|
2364
2371
|
}
|
|
2365
|
-
class
|
|
2372
|
+
class ws {
|
|
2366
2373
|
constructor(e) {
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2374
|
+
u(this, "container");
|
|
2375
|
+
u(this, "wrapper");
|
|
2376
|
+
u(this, "viewport");
|
|
2377
|
+
u(this, "itemHeight");
|
|
2378
|
+
u(this, "items");
|
|
2379
|
+
u(this, "renderItem");
|
|
2380
|
+
u(this, "bufferSize");
|
|
2381
|
+
u(this, "onVisibleRangeChange");
|
|
2382
|
+
u(this, "onScroll");
|
|
2383
|
+
u(this, "scrollTop", 0);
|
|
2384
|
+
u(this, "viewportHeight", 0);
|
|
2385
|
+
u(this, "visibleStart", 0);
|
|
2386
|
+
u(this, "visibleEnd", 0);
|
|
2387
|
+
u(this, "scrollHandler");
|
|
2388
|
+
u(this, "resizeObserver");
|
|
2382
2389
|
this.container = e.container, this.itemHeight = e.itemHeight, this.items = e.items, this.renderItem = e.renderItem, this.bufferSize = e.bufferSize ?? 10, this.onVisibleRangeChange = e.onVisibleRangeChange, this.onScroll = e.onScroll, this.scrollHandler = this.handleScroll.bind(this), this.init();
|
|
2383
2390
|
}
|
|
2384
2391
|
/**
|
|
@@ -2484,7 +2491,7 @@ class ys {
|
|
|
2484
2491
|
this.container.removeEventListener("scroll", this.scrollHandler), this.resizeObserver && this.resizeObserver.disconnect(), this.container.innerHTML = "";
|
|
2485
2492
|
}
|
|
2486
2493
|
}
|
|
2487
|
-
function
|
|
2494
|
+
function xs(s) {
|
|
2488
2495
|
return {
|
|
2489
2496
|
treeId: "",
|
|
2490
2497
|
id: -1,
|
|
@@ -2500,27 +2507,27 @@ function ws(s) {
|
|
|
2500
2507
|
};
|
|
2501
2508
|
}
|
|
2502
2509
|
const je = (s) => !s || typeof s == "string" && s.trim() === "";
|
|
2503
|
-
function
|
|
2510
|
+
function br(s, e = ".") {
|
|
2504
2511
|
if (!s || typeof s != "string") return null;
|
|
2505
2512
|
const t = s.lastIndexOf(e);
|
|
2506
2513
|
return t === -1 ? "" : s.substring(0, t);
|
|
2507
2514
|
}
|
|
2508
|
-
function
|
|
2515
|
+
function _s(s, e, t = ".") {
|
|
2509
2516
|
return je(e) ? s : s.startsWith(e + t) ? s.substring(e.length + t.length) : s;
|
|
2510
2517
|
}
|
|
2511
|
-
function
|
|
2518
|
+
function ks(s, e = 0, t = 1, o = ".") {
|
|
2512
2519
|
return s.split(o).slice(e, e + t).join(o);
|
|
2513
2520
|
}
|
|
2514
|
-
function
|
|
2521
|
+
function vr(s, e) {
|
|
2515
2522
|
return s.split(e).length;
|
|
2516
2523
|
}
|
|
2517
2524
|
function ce(s, e) {
|
|
2518
2525
|
return s[e];
|
|
2519
2526
|
}
|
|
2520
|
-
function
|
|
2521
|
-
const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, h = s.getDisplayValueCallback, f = je(i),
|
|
2527
|
+
function yr(s = {}) {
|
|
2528
|
+
const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, h = s.getDisplayValueCallback, f = je(i), m = je(r), g = je(n), b = je(a), y = "x", v = s.treePathSeparator || ".", w = xs();
|
|
2522
2529
|
let k = 0, P = null;
|
|
2523
|
-
const M = (L) => o ? o(L) : t ? ce(L, t) : void 0,
|
|
2530
|
+
const M = (L) => o ? o(L) : t ? ce(L, t) : void 0, D = {
|
|
2524
2531
|
treePathSeparator: v,
|
|
2525
2532
|
root: w,
|
|
2526
2533
|
get tree() {
|
|
@@ -2532,82 +2539,82 @@ function vr(s = {}) {
|
|
|
2532
2539
|
*/
|
|
2533
2540
|
get flatNodes() {
|
|
2534
2541
|
if (P) return P;
|
|
2535
|
-
const L = [], C = s.isSorted ?? !1,
|
|
2536
|
-
function
|
|
2537
|
-
let S = Object.values(
|
|
2538
|
-
C &&
|
|
2542
|
+
const L = [], C = s.isSorted ?? !1, I = s.sortCallback;
|
|
2543
|
+
function O($) {
|
|
2544
|
+
let S = Object.values($.children);
|
|
2545
|
+
C && I && S.length > 0 && (S = I(S));
|
|
2539
2546
|
for (const H of S)
|
|
2540
|
-
L.push(H), H.hasChildren &&
|
|
2547
|
+
L.push(H), H.hasChildren && O(H);
|
|
2541
2548
|
}
|
|
2542
|
-
return
|
|
2549
|
+
return O(w), P = L, L;
|
|
2543
2550
|
},
|
|
2544
2551
|
insertArray(L) {
|
|
2545
2552
|
L = L || [], w.children = {}, k = 0, P = null;
|
|
2546
2553
|
const C = [];
|
|
2547
|
-
let
|
|
2548
|
-
const S =
|
|
2549
|
-
S.treeId = c, S.id = e ? ce(
|
|
2550
|
-
const H = M(
|
|
2551
|
-
return H == null || H === "" || typeof H != "string" ? (C.push(`index ${
|
|
2552
|
-
|
|
2554
|
+
let I = L.map((O, $) => {
|
|
2555
|
+
const S = xs();
|
|
2556
|
+
S.treeId = c, S.id = e ? ce(O, e) : void 0;
|
|
2557
|
+
const H = M(O);
|
|
2558
|
+
return H == null || H === "" || typeof H != "string" ? (C.push(`index ${$}`), null) : (S.path = H, (S.id === void 0 || S.id === -1) && (S.id = H), f ? S.parentPath = br(S.path, v) : S.parentPath = ce(O, i), S.pathSegment = ks(
|
|
2559
|
+
_s(S.path, S.parentPath ?? "", v),
|
|
2553
2560
|
0,
|
|
2554
2561
|
1,
|
|
2555
2562
|
v
|
|
2556
|
-
),
|
|
2557
|
-
}).filter((
|
|
2558
|
-
s.isSorted || (s.sortCallback ?
|
|
2559
|
-
for (const
|
|
2560
|
-
R(
|
|
2563
|
+
), m ? S.level = vr(S.path, v) : S.level = ce(O, r), g || (S.hasChildren = ce(O, n)), S.data = O, S);
|
|
2564
|
+
}).filter((O) => O !== null);
|
|
2565
|
+
s.isSorted || (s.sortCallback ? I = s.sortCallback(I) : I = G(I));
|
|
2566
|
+
for (const O of I)
|
|
2567
|
+
R(O.parentPath ?? "", O);
|
|
2561
2568
|
if (l || !b)
|
|
2562
|
-
for (const
|
|
2569
|
+
for (const O of I)
|
|
2563
2570
|
if (l)
|
|
2564
|
-
|
|
2571
|
+
O.isSelectable = l(O) !== !1;
|
|
2565
2572
|
else {
|
|
2566
|
-
const
|
|
2567
|
-
|
|
2573
|
+
const $ = ce(O.data, a);
|
|
2574
|
+
O.isSelectable = $ == null ? !0 : !!$;
|
|
2568
2575
|
}
|
|
2569
2576
|
C.length > 0 && console.warn(
|
|
2570
2577
|
`[ltree ${c}] ${C.length} option(s) had an invalid path and were skipped (pathMember="${t}"). Offending: ${C.slice(0, 5).join(", ")}` + (C.length > 5 ? ", …" : "")
|
|
2571
2578
|
);
|
|
2572
2579
|
},
|
|
2573
2580
|
getNodeByPath(L, C) {
|
|
2574
|
-
let
|
|
2581
|
+
let I = C || w;
|
|
2575
2582
|
if (L) {
|
|
2576
|
-
const
|
|
2577
|
-
for (let
|
|
2578
|
-
const S = y +
|
|
2579
|
-
if (!
|
|
2583
|
+
const O = L.split(v);
|
|
2584
|
+
for (let $ = 0; $ < O.length; $++) {
|
|
2585
|
+
const S = y + O[$];
|
|
2586
|
+
if (!I.children.hasOwnProperty(S))
|
|
2580
2587
|
return null;
|
|
2581
|
-
|
|
2588
|
+
I = I.children[S];
|
|
2582
2589
|
}
|
|
2583
2590
|
}
|
|
2584
|
-
return
|
|
2591
|
+
return I;
|
|
2585
2592
|
}
|
|
2586
2593
|
};
|
|
2587
2594
|
function R(L, C) {
|
|
2588
|
-
const
|
|
2589
|
-
if (!
|
|
2595
|
+
const I = D.getNodeByPath(L);
|
|
2596
|
+
if (!I)
|
|
2590
2597
|
return `Node: ${C.path} - Could not find parent node: ${L}`;
|
|
2591
|
-
|
|
2592
|
-
const
|
|
2593
|
-
return
|
|
2598
|
+
m && (C.level = (I.level || 0) + 1);
|
|
2599
|
+
const O = y + ks(_s(C.path, L, v), 0, 1, v);
|
|
2600
|
+
return I.children.hasOwnProperty(O) || (I.children[O] = C, g && !I.hasChildren && (I.hasChildren = !0), k = Math.max(k, C.level || 0)), null;
|
|
2594
2601
|
}
|
|
2595
2602
|
function G(L) {
|
|
2596
|
-
return L.sort((C,
|
|
2597
|
-
const
|
|
2598
|
-
if (
|
|
2599
|
-
if (C.parentPath !==
|
|
2600
|
-
return C.parentPath ?
|
|
2601
|
-
if (d && C.data &&
|
|
2602
|
-
const S = ce(C.data, d) ?? 0, H = ce(
|
|
2603
|
+
return L.sort((C, I) => {
|
|
2604
|
+
const O = C.level || 0, $ = I.level || 0;
|
|
2605
|
+
if (O !== $) return O - $;
|
|
2606
|
+
if (C.parentPath !== I.parentPath)
|
|
2607
|
+
return C.parentPath ? I.parentPath ? C.parentPath.localeCompare(I.parentPath) : 1 : -1;
|
|
2608
|
+
if (d && C.data && I.data) {
|
|
2609
|
+
const S = ce(C.data, d) ?? 0, H = ce(I.data, d) ?? 0;
|
|
2603
2610
|
if (S !== H) return S - H;
|
|
2604
2611
|
}
|
|
2605
|
-
return h ? h(C).localeCompare(h(
|
|
2612
|
+
return h ? h(C).localeCompare(h(I)) : C.path.localeCompare(I.path);
|
|
2606
2613
|
});
|
|
2607
2614
|
}
|
|
2608
|
-
return
|
|
2615
|
+
return D;
|
|
2609
2616
|
}
|
|
2610
|
-
function
|
|
2617
|
+
function Cs(s, e) {
|
|
2611
2618
|
const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), r = (l) => String(e(l.data)), n = (l) => {
|
|
2612
2619
|
t.set(r(l), l);
|
|
2613
2620
|
const c = [];
|
|
@@ -2619,7 +2626,7 @@ function ks(s, e) {
|
|
|
2619
2626
|
for (const l of a) n(l);
|
|
2620
2627
|
return { nodeByValue: t, atomsUnder: o, atomPaths: i, roots: a };
|
|
2621
2628
|
}
|
|
2622
|
-
function
|
|
2629
|
+
function ts(s, e, t) {
|
|
2623
2630
|
const o = s.atomsUnder.get(e.path);
|
|
2624
2631
|
if (!o || o.length === 0) return "unchecked";
|
|
2625
2632
|
let i = 0;
|
|
@@ -2635,17 +2642,17 @@ function Ke(s, e) {
|
|
|
2635
2642
|
}
|
|
2636
2643
|
return t;
|
|
2637
2644
|
}
|
|
2638
|
-
function
|
|
2639
|
-
const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r =
|
|
2645
|
+
function wr(s, e, t) {
|
|
2646
|
+
const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r = ts(s, e, t), n = [], a = [];
|
|
2640
2647
|
if (r === "checked")
|
|
2641
2648
|
for (const l of o) i.delete(l) && a.push(l);
|
|
2642
2649
|
else
|
|
2643
2650
|
for (const l of o) i.has(l) || (i.add(l), n.push(l));
|
|
2644
2651
|
return { checkedAtoms: i, addedAtoms: n, removedAtoms: a };
|
|
2645
2652
|
}
|
|
2646
|
-
function
|
|
2653
|
+
function Et(s, e, t, o) {
|
|
2647
2654
|
const i = (a) => String(o(a.data)), r = [], n = (a) => {
|
|
2648
|
-
const l =
|
|
2655
|
+
const l = ts(s, a, e);
|
|
2649
2656
|
if (l === "unchecked") return;
|
|
2650
2657
|
const c = a.isSelectable !== !1, d = Object.values(a.children);
|
|
2651
2658
|
if (t === "leaves") {
|
|
@@ -2667,127 +2674,133 @@ function Lt(s, e, t, o) {
|
|
|
2667
2674
|
for (const a of s.roots) n(a);
|
|
2668
2675
|
return r;
|
|
2669
2676
|
}
|
|
2670
|
-
class
|
|
2677
|
+
class xr {
|
|
2671
2678
|
constructor(e, t = {}) {
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2679
|
+
u(this, "element");
|
|
2680
|
+
u(this, "instanceId");
|
|
2681
|
+
u(this, "options");
|
|
2682
|
+
u(this, "isOpen", !1);
|
|
2683
|
+
u(this, "selectedValues", /* @__PURE__ */ new Set());
|
|
2684
|
+
u(this, "selectedOptions", /* @__PURE__ */ new Map());
|
|
2685
|
+
u(this, "allOptions", []);
|
|
2686
|
+
u(this, "filteredOptions", []);
|
|
2680
2687
|
// Tree mode: the hierarchy built from option paths, and the flat list of
|
|
2681
2688
|
// nodes currently shown. `treeNodes` stays index-aligned with
|
|
2682
2689
|
// `filteredOptions` so focus/keyboard/virtual-scroll keep working unchanged.
|
|
2683
|
-
|
|
2684
|
-
|
|
2690
|
+
u(this, "tree", null);
|
|
2691
|
+
u(this, "treeNodes", []);
|
|
2685
2692
|
// Cascade checkbox mode (tree + multiple + checkbox-mode="cascade"): the index
|
|
2686
2693
|
// is rebuilt with the tree; `cascadeCheckedAtoms` is the derived set of checked
|
|
2687
2694
|
// leaf-level atoms, refreshed from `selectedValues` before each render.
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2695
|
+
u(this, "cascadeIndex", null);
|
|
2696
|
+
u(this, "cascadeCheckedAtoms", /* @__PURE__ */ new Set());
|
|
2697
|
+
u(this, "hiddenInputs", []);
|
|
2698
|
+
u(this, "focusedIndex", -1);
|
|
2699
|
+
// Stable imperative facade handed to keydownCallback (built once, reused). See getKeyboardController().
|
|
2700
|
+
u(this, "keyboardController", null);
|
|
2701
|
+
u(this, "matchingIndices", /* @__PURE__ */ new Set());
|
|
2702
|
+
u(this, "searchTerm", "");
|
|
2703
|
+
u(this, "isLoading", !1);
|
|
2704
|
+
u(this, "searchDebounceTimer");
|
|
2705
|
+
u(this, "searchAbortController");
|
|
2706
|
+
u(this, "showSelectedPopover", !1);
|
|
2707
|
+
u(this, "selectedPopoverPlacement", null);
|
|
2708
|
+
u(this, "dropdownPlacement", null);
|
|
2709
|
+
u(this, "isRTL", !1);
|
|
2710
|
+
u(this, "effectiveBadgesPosition", "bottom");
|
|
2711
|
+
u(this, "justClosedViaClick", !1);
|
|
2703
2712
|
// Set for one tick when the dropdown is opened by a pointer gesture. A fullscreen
|
|
2704
2713
|
// overlay (position:fixed, inset:0) appears over the pointer between mousedown and
|
|
2705
2714
|
// the follow-up click, so that click can target a common ancestor above the
|
|
2706
2715
|
// portaled panel and be misread as an outside-click. This guard swallows exactly
|
|
2707
2716
|
// that one click. See attachEvents() (mousedown) and handleClickOutside().
|
|
2708
|
-
|
|
2709
|
-
|
|
2717
|
+
u(this, "justOpenedViaClick", !1);
|
|
2718
|
+
u(this, "positioningDriftWarned", !1);
|
|
2710
2719
|
// How the open dropdown is presented. 'floating' anchors it to the input (the
|
|
2711
2720
|
// default); 'fullscreen' renders it as a full-viewport overlay with its own
|
|
2712
2721
|
// search header + close button — the phone pattern, driven from the element's
|
|
2713
2722
|
// environmentChanged() hook via setPresentation(). See open()/enterFullscreen().
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2723
|
+
u(this, "presentationMode", "floating");
|
|
2724
|
+
u(this, "fullscreenHeader", null);
|
|
2725
|
+
u(this, "fullscreenSearchInput", null);
|
|
2717
2726
|
// Inline ✕ inside the fullscreen search box that clears the term. Shown only while
|
|
2718
2727
|
// there's text; touch has no keyboard Escape, so this is the way to reset a search.
|
|
2719
|
-
|
|
2728
|
+
u(this, "fullscreenSearchClear", null);
|
|
2729
|
+
// Leading mode toggle inside the fullscreen search box (opt-in via
|
|
2730
|
+
// isSearchModeToggleShown) that flips searchMode filter<->navigate live. Its icon
|
|
2731
|
+
// reflects the current mode; clicking re-projects the current term in place.
|
|
2732
|
+
u(this, "fullscreenModeToggle", null);
|
|
2720
2733
|
// Navigate-mode match navigator shown under the fullscreen search box: a result
|
|
2721
2734
|
// count ("3 of 12") plus prev/next buttons that step through matches. Touch has no
|
|
2722
2735
|
// Ctrl+Arrow shortcut, so these buttons are the on-screen substitute. Only built in
|
|
2723
2736
|
// searchMode 'navigate' (filter mode narrows the list, so it needs no jump UI).
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2737
|
+
u(this, "fullscreenNav", null);
|
|
2738
|
+
u(this, "fullscreenNavCount", null);
|
|
2739
|
+
u(this, "fullscreenNavPrev", null);
|
|
2740
|
+
u(this, "fullscreenNavNext", null);
|
|
2728
2741
|
// Releases this instance's page-scroll lock (null when not locked). The core
|
|
2729
2742
|
// helper is ref-counted; we hold at most one lock per instance. See lockBodyScroll().
|
|
2730
|
-
|
|
2743
|
+
u(this, "bodyScrollUnlock", null);
|
|
2731
2744
|
// Saved inline `overflow-x` of <html> while a fullscreen sheet clamps the host
|
|
2732
2745
|
// document's horizontal overflow (null when not clamped). See clampDocumentOverflowX().
|
|
2733
|
-
|
|
2746
|
+
u(this, "overflowXClamp", null);
|
|
2734
2747
|
// Detaches the visualViewport listener that shrinks the fullscreen sheet to sit
|
|
2735
2748
|
// above the soft keyboard (null when not attached). See observeKeyboardInset().
|
|
2736
|
-
|
|
2749
|
+
u(this, "keyboardInsetCleanup", null);
|
|
2737
2750
|
// True while a history entry is pushed for the open fullscreen sheet, so the phone
|
|
2738
2751
|
// Back gesture/button pops it (closing the sheet) instead of navigating the page.
|
|
2739
2752
|
// See pushOverlayHistory()/popOverlayHistory()/onOverlayPopstate().
|
|
2740
|
-
|
|
2741
|
-
|
|
2753
|
+
u(this, "overlayHistoryActive", !1);
|
|
2754
|
+
u(this, "onOverlayPopstate", () => this.handleOverlayPopstate());
|
|
2742
2755
|
// Floating UI cleanup functions
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2756
|
+
u(this, "dropdownCleanup", null);
|
|
2757
|
+
u(this, "hintCleanup", null);
|
|
2758
|
+
u(this, "selectedPopoverCleanup", null);
|
|
2746
2759
|
// All hover tooltips (badge text, badge-remove buttons, action buttons), keyed by id.
|
|
2747
|
-
|
|
2760
|
+
u(this, "tooltips", /* @__PURE__ */ new Map());
|
|
2748
2761
|
// Full-label reveal shown when a clipped row's info button is tapped (fullscreen
|
|
2749
2762
|
// only). A manually-controlled popover — NOT a hover tooltip — so it stays put
|
|
2750
2763
|
// until explicitly dismissed (a hover tooltip's synthetic mouseleave on touch
|
|
2751
2764
|
// would flash it away). `labelRevealTrigger` tracks the button so a second tap
|
|
2752
2765
|
// toggles it off. See toggleLabelReveal() / hideLabelReveal().
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2766
|
+
u(this, "labelRevealTrigger", null);
|
|
2767
|
+
u(this, "labelRevealPanel", null);
|
|
2768
|
+
u(this, "labelRevealPopover", null);
|
|
2756
2769
|
// Transient message ("toast") surface — see showMessage(). Rendered above the panel
|
|
2757
2770
|
// so a veto reason (or any consumer feedback) is visible even in the fullscreen
|
|
2758
2771
|
// overlay, where page-level UI is hidden behind the sheet.
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2772
|
+
u(this, "messageEl", null);
|
|
2773
|
+
u(this, "messageCleanup", null);
|
|
2774
|
+
u(this, "messageTimer", null);
|
|
2762
2775
|
// Dismiss option tooltips the instant the list scrolls. Without this, a shown
|
|
2763
2776
|
// tooltip's floating-ui autoUpdate keeps chasing its anchor row as it scrolls
|
|
2764
2777
|
// (most visible under virtual scroll, where the row also recycles), so the
|
|
2765
2778
|
// tooltip visibly slides to the viewport edge before the next render clears it.
|
|
2766
2779
|
// Capturing so it catches scroll from the inner options container (scroll
|
|
2767
2780
|
// doesn't bubble). Same function ref → addEventListener dedupes across opens.
|
|
2768
|
-
|
|
2781
|
+
u(this, "onDropdownScroll", () => {
|
|
2769
2782
|
this.hideOptionTooltips(), this.hideLabelReveal();
|
|
2770
2783
|
});
|
|
2771
2784
|
// Virtual scroll instance
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2785
|
+
u(this, "virtualScroll", null);
|
|
2786
|
+
u(this, "optionsContainer", null);
|
|
2787
|
+
u(this, "selectedPopoverVirtualScroll", null);
|
|
2788
|
+
u(this, "selectedPopoverContainer", null);
|
|
2776
2789
|
// DOM elements
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2790
|
+
u(this, "input");
|
|
2791
|
+
u(this, "dropdown");
|
|
2792
|
+
u(this, "dropdownInner");
|
|
2793
|
+
u(this, "badgesContainer");
|
|
2794
|
+
u(this, "counter");
|
|
2795
|
+
u(this, "hint");
|
|
2796
|
+
u(this, "selectedPopover");
|
|
2784
2797
|
// Document-level event handlers (stored for cleanup)
|
|
2785
|
-
|
|
2786
|
-
|
|
2798
|
+
u(this, "documentKeydownHandler", null);
|
|
2799
|
+
u(this, "documentClickHandler", null);
|
|
2787
2800
|
this.element = e, this.instanceId = `MS-${Math.random().toString(36).slice(2, 11)}`, this.options = {
|
|
2788
2801
|
// String options
|
|
2789
2802
|
searchHint: e.dataset.searchHint || "",
|
|
2790
|
-
searchPlaceholder: e.dataset.searchPlaceholder ||
|
|
2803
|
+
searchPlaceholder: e.dataset.searchPlaceholder || void 0,
|
|
2791
2804
|
selectPlaceholder: e.dataset.selectPlaceholder || "Pick an option...",
|
|
2792
2805
|
noDataPlaceholder: e.dataset.noDataPlaceholder || void 0,
|
|
2793
2806
|
dropdownMinWidth: e.dataset.dropdownMinWidth || void 0,
|
|
@@ -2814,6 +2827,7 @@ class wr {
|
|
|
2814
2827
|
isSearchEnabled: e.dataset.enableSearch !== "false",
|
|
2815
2828
|
isAddNewAllowed: e.dataset.allowAddNew === "true",
|
|
2816
2829
|
isCounterShown: e.dataset.showCounter === "true",
|
|
2830
|
+
isSearchModeToggleShown: e.dataset.showSearchModeToggle === "true",
|
|
2817
2831
|
isKeepOptionsOnSearch: e.dataset.keepOptionsOnSearch !== "false",
|
|
2818
2832
|
shouldKeepSearchOnClose: e.dataset.keepSearchOnClose !== "false",
|
|
2819
2833
|
// Data and callbacks
|
|
@@ -2988,7 +3002,7 @@ class wr {
|
|
|
2988
3002
|
}
|
|
2989
3003
|
/** (Re)build the ltree from `allOptions` and derive the visible flat list. */
|
|
2990
3004
|
buildTree() {
|
|
2991
|
-
this.tree =
|
|
3005
|
+
this.tree = yr({
|
|
2992
3006
|
idMember: this.options.valueMember,
|
|
2993
3007
|
pathMember: this.options.pathMember,
|
|
2994
3008
|
getPathCallback: this.options.getPathCallback,
|
|
@@ -3000,7 +3014,7 @@ class wr {
|
|
|
3000
3014
|
treePathSeparator: this.options.treePathSeparator,
|
|
3001
3015
|
treeId: this.instanceId,
|
|
3002
3016
|
getDisplayValueCallback: (e) => this.getItemDisplayValue(e.data)
|
|
3003
|
-
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ?
|
|
3017
|
+
}), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ? Cs(this.tree, (e) => String(this.getItemValue(e))) : null, this.rebuildTreeVisible();
|
|
3004
3018
|
}
|
|
3005
3019
|
/**
|
|
3006
3020
|
* Whether cascade checkbox mode is active: a multi-select tree with
|
|
@@ -3023,7 +3037,7 @@ class wr {
|
|
|
3023
3037
|
* so badges / form / change events reflect the policy (rolled-up branches, etc.).
|
|
3024
3038
|
*/
|
|
3025
3039
|
toggleTreeCascade(e) {
|
|
3026
|
-
const t = this.cascadeIndex, o = Ke(t, this.selectedValues), { checkedAtoms: i } =
|
|
3040
|
+
const t = this.cascadeIndex, o = Ke(t, this.selectedValues), { checkedAtoms: i } = wr(t, e, o);
|
|
3027
3041
|
this.commitCascadeAtoms(i);
|
|
3028
3042
|
}
|
|
3029
3043
|
/**
|
|
@@ -3034,7 +3048,7 @@ class wr {
|
|
|
3034
3048
|
*/
|
|
3035
3049
|
commitCascadeAtoms(e) {
|
|
3036
3050
|
var l;
|
|
3037
|
-
const t = this.cascadeIndex, o =
|
|
3051
|
+
const t = this.cascadeIndex, o = Et(
|
|
3038
3052
|
t,
|
|
3039
3053
|
e,
|
|
3040
3054
|
this.cascadePolicy(),
|
|
@@ -3059,7 +3073,7 @@ class wr {
|
|
|
3059
3073
|
*/
|
|
3060
3074
|
counterSelection() {
|
|
3061
3075
|
if (this.isCascadeMode() && this.cascadeIndex) {
|
|
3062
|
-
const e =
|
|
3076
|
+
const e = Et(
|
|
3063
3077
|
this.cascadeIndex,
|
|
3064
3078
|
this.cascadeCheckedAtoms,
|
|
3065
3079
|
"rolled-up",
|
|
@@ -3291,7 +3305,7 @@ class wr {
|
|
|
3291
3305
|
}
|
|
3292
3306
|
const e = this.scaledOptionHeight(), t = this.options.virtualScrollBuffer ?? 10;
|
|
3293
3307
|
requestAnimationFrame(() => {
|
|
3294
|
-
this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new
|
|
3308
|
+
this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new ws({
|
|
3295
3309
|
container: this.optionsContainer,
|
|
3296
3310
|
itemHeight: e,
|
|
3297
3311
|
items: this.filteredOptions,
|
|
@@ -3323,9 +3337,9 @@ class wr {
|
|
|
3323
3337
|
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();
|
|
3324
3338
|
if (e.forEach((d, h) => {
|
|
3325
3339
|
if (!(d.getIsVisibleCallback ? d.getIsVisibleCallback(this) : d.isVisible ?? !0)) return;
|
|
3326
|
-
let
|
|
3327
|
-
d.getIsDisabledCallback ?
|
|
3328
|
-
const g =
|
|
3340
|
+
let m;
|
|
3341
|
+
d.getIsDisabledCallback ? m = d.getIsDisabledCallback(this) : d.isDisabled !== void 0 ? m = d.isDisabled : m = this.getBuiltInActionDisabled(d.action);
|
|
3342
|
+
const g = m ? " disabled" : "", b = d.getTextCallback ? d.getTextCallback(this) : d.text;
|
|
3329
3343
|
let y = "";
|
|
3330
3344
|
if (d.getClassCallback) {
|
|
3331
3345
|
const k = d.getClassCallback(this);
|
|
@@ -3341,20 +3355,21 @@ class wr {
|
|
|
3341
3355
|
const o = this.getItemValue(e), i = this.getItemDisplayValue(e), r = this.getItemIcon(e), n = this.getItemSubtitle(e), a = this.getItemDisabled(e), l = this.selectedValues.has(String(o)), c = t === this.focusedIndex, d = this.matchingIndices.has(t), h = ["ms__option"];
|
|
3342
3356
|
l && h.push("ms__option--selected"), c && h.push("ms__option--focused"), d && h.push("ms__option--matched"), a && h.push("ms__option--disabled");
|
|
3343
3357
|
const f = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "";
|
|
3344
|
-
let
|
|
3345
|
-
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && (
|
|
3358
|
+
let m = `<div class="${h.join(" ")}" data-value="${o}" data-index="${t}"${f}>`;
|
|
3359
|
+
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && (m += `<input type="checkbox" class="ms__checkbox" ${l ? "checked" : ""} ${a ? "disabled" : ""}>`), m += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
3346
3360
|
const g = {
|
|
3347
3361
|
index: t,
|
|
3348
3362
|
isSelected: l,
|
|
3349
3363
|
isFocused: c,
|
|
3350
3364
|
isMatched: d,
|
|
3351
3365
|
isDisabled: a,
|
|
3366
|
+
...Ot(this.presentationMode),
|
|
3352
3367
|
isTreeNode: !1
|
|
3353
3368
|
}, b = this.options.renderOptionContentCallback(e, g);
|
|
3354
|
-
typeof b == "string" ?
|
|
3369
|
+
typeof b == "string" ? m += b : m += b.outerHTML;
|
|
3355
3370
|
} else
|
|
3356
|
-
r && (
|
|
3357
|
-
return
|
|
3371
|
+
r && (m += `<span class="ms__option-icon">${r}</span>`), m += '<div class="ms__option-text">', m += `<div class="ms__option-title">${this.highlightMatch(i, this.searchTerm)}</div>`, n && (m += `<div class="ms__option-subtitle">${n}</div>`), m += "</div>";
|
|
3372
|
+
return m += this.renderOptionInfoButton(), m += "</div>", m += "</div>", m;
|
|
3358
3373
|
}
|
|
3359
3374
|
/**
|
|
3360
3375
|
* Trailing info affordance for an option row, emitted only for the fullscreen
|
|
@@ -3375,17 +3390,18 @@ class wr {
|
|
|
3375
3390
|
* chevron/toggle — every node is just a normal, selectable option.
|
|
3376
3391
|
*/
|
|
3377
3392
|
renderTreeNode(e, t) {
|
|
3378
|
-
const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ?
|
|
3379
|
-
w.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), h && w.push("ms__option--selected"), f && w.push("ms__option--indeterminate"),
|
|
3393
|
+
const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ? ts(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, h = c ? d === "checked" : this.selectedValues.has(String(i)), f = d === "indeterminate", m = t === this.focusedIndex, g = this.matchingIndices.has(t), b = e.isSelectable !== !1, y = e.level ?? 1, v = Math.max(0, y - 1), w = ["ms__option", "ms__option--tree"];
|
|
3394
|
+
w.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), h && w.push("ms__option--selected"), f && w.push("ms__option--indeterminate"), m && w.push("ms__option--focused"), g && w.push("ms__option--matched"), l && w.push("ms__option--disabled"), b || w.push("ms__option--tree-unselectable");
|
|
3380
3395
|
const k = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", P = b ? "" : ' data-selectable="false"';
|
|
3381
3396
|
let M = `<div class="${w.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${y}" style="--ms-tree-depth: ${v};"${k}${P}>`;
|
|
3382
3397
|
if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && b && (M += `<input type="checkbox" class="${f ? "ms__checkbox ms__checkbox--indeterminate" : "ms__checkbox"}" ${h ? "checked" : ""}${f ? ' aria-checked="mixed"' : ""} ${l ? "disabled" : ""}>`), M += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
|
|
3383
|
-
const
|
|
3398
|
+
const D = {
|
|
3384
3399
|
index: t,
|
|
3385
3400
|
isSelected: h,
|
|
3386
|
-
isFocused:
|
|
3401
|
+
isFocused: m,
|
|
3387
3402
|
isMatched: g,
|
|
3388
3403
|
isDisabled: l,
|
|
3404
|
+
...Ot(this.presentationMode),
|
|
3389
3405
|
// Tree metadata — lets the callback branch on depth / branch-vs-leaf /
|
|
3390
3406
|
// tristate without re-deriving any of it from the raw data item.
|
|
3391
3407
|
isTreeNode: !0,
|
|
@@ -3397,7 +3413,7 @@ class wr {
|
|
|
3397
3413
|
path: e.path,
|
|
3398
3414
|
isSelectable: b,
|
|
3399
3415
|
isIndeterminate: f
|
|
3400
|
-
}, R = this.options.renderOptionContentCallback(o,
|
|
3416
|
+
}, R = this.options.renderOptionContentCallback(o, D);
|
|
3401
3417
|
M += typeof R == "string" ? R : R.outerHTML;
|
|
3402
3418
|
} else
|
|
3403
3419
|
n && (M += `<span class="ms__option-icon">${n}</span>`), M += '<div class="ms__option-text">', M += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, a && (M += `<div class="ms__option-subtitle">${a}</div>`), M += "</div>";
|
|
@@ -3425,7 +3441,22 @@ class wr {
|
|
|
3425
3441
|
* search is unusable → the search placeholder.
|
|
3426
3442
|
*/
|
|
3427
3443
|
getPlaceholderText() {
|
|
3428
|
-
return this.options.noDataPlaceholder && this.allOptions.length === 0 ? this.options.noDataPlaceholder : this.isSearchUsable ? this.
|
|
3444
|
+
return this.options.noDataPlaceholder && this.allOptions.length === 0 ? this.options.noDataPlaceholder : this.isSearchUsable ? this.getSearchPlaceholder() : this.options.selectPlaceholder || this.getSearchPlaceholder();
|
|
3445
|
+
}
|
|
3446
|
+
/**
|
|
3447
|
+
* The search field placeholder. An explicit `searchPlaceholder` always wins and stays
|
|
3448
|
+
* fixed. Otherwise the default is "Search..." — except when the in-overlay mode toggle
|
|
3449
|
+
* is enabled (`isSearchModeToggleShown`), where it becomes mode-aware so the field labels
|
|
3450
|
+
* the current behavior: "Search…" in navigate mode, "Filter…" in filter mode. Refreshed
|
|
3451
|
+
* on a live mode switch (see setSearchModeLive → refreshSearchPlaceholder).
|
|
3452
|
+
*/
|
|
3453
|
+
getSearchPlaceholder() {
|
|
3454
|
+
return this.options.searchPlaceholder ? this.options.searchPlaceholder : this.options.isSearchModeToggleShown ? (this.options.searchMode || "filter") === "navigate" ? "Search…" : "Filter…" : "Search...";
|
|
3455
|
+
}
|
|
3456
|
+
/** Re-apply the (possibly mode-aware) placeholder to the live inputs after a mode switch. */
|
|
3457
|
+
refreshSearchPlaceholder() {
|
|
3458
|
+
const e = this.getPlaceholderText();
|
|
3459
|
+
this.input && (this.input.placeholder = e), this.fullscreenSearchInput && (this.fullscreenSearchInput.placeholder = e);
|
|
3429
3460
|
}
|
|
3430
3461
|
renderBadges() {
|
|
3431
3462
|
this.destroyAllBadgeTooltips();
|
|
@@ -3553,14 +3584,14 @@ class wr {
|
|
|
3553
3584
|
if (this.isTreeMode()) {
|
|
3554
3585
|
if ((this.options.searchMode || "filter") === "navigate") {
|
|
3555
3586
|
const o = this.rebuildTreeVisibleForNavigate();
|
|
3556
|
-
this.searchTerm.trim() ? o >= 0 && (this.focusedIndex = o) : this.focusedIndex =
|
|
3587
|
+
this.searchTerm.trim() ? o >= 0 && (this.focusedIndex = o) : this.focusedIndex = -1, this.renderDropdown(), this.focusedIndex >= 0 && this.scrollToFocused(), this.updateFullscreenNav();
|
|
3557
3588
|
return;
|
|
3558
3589
|
}
|
|
3559
|
-
this.rebuildTreeVisible(), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown();
|
|
3590
|
+
this.rebuildTreeVisible(), this.matchingIndices.clear(), this.focusedIndex = this.searchTerm.trim() && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown();
|
|
3560
3591
|
return;
|
|
3561
3592
|
}
|
|
3562
3593
|
if (!t)
|
|
3563
|
-
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex =
|
|
3594
|
+
this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex = -1;
|
|
3564
3595
|
else {
|
|
3565
3596
|
const o = this.options.searchMode || "filter", i = t.toLowerCase();
|
|
3566
3597
|
if (o === "filter")
|
|
@@ -3609,45 +3640,67 @@ class wr {
|
|
|
3609
3640
|
}
|
|
3610
3641
|
handleKeydown(e) {
|
|
3611
3642
|
var t;
|
|
3612
|
-
if (!this.
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
|
|
3643
|
+
if (!(this.options.keydownCallback && this.options.keydownCallback({
|
|
3644
|
+
event: e,
|
|
3645
|
+
key: e.key,
|
|
3646
|
+
isOpen: this.isOpen,
|
|
3647
|
+
presentation: this.presentationMode,
|
|
3648
|
+
searchTerm: this.searchTerm,
|
|
3649
|
+
focusedIndex: this.focusedIndex,
|
|
3650
|
+
focusedOption: (this.focusedIndex >= 0 ? this.filteredOptions[this.focusedIndex] : null) ?? null,
|
|
3651
|
+
filteredOptions: this.filteredOptions,
|
|
3652
|
+
selectedValues: [...this.selectedValues],
|
|
3653
|
+
controller: this.getKeyboardController()
|
|
3654
|
+
}) === !0)) {
|
|
3655
|
+
if (!this.isOpen) {
|
|
3656
|
+
(e.key === "Enter" || e.key === "ArrowDown") && (e.preventDefault(), this.open());
|
|
3620
3657
|
return;
|
|
3621
3658
|
}
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
3643
|
-
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
|
|
3659
|
+
if (!this.options.isSearchEnabled) {
|
|
3660
|
+
const o = e.key.length === 1 || e.key === "Backspace" || e.key === "Delete", i = ["ArrowUp", "ArrowDown", "PageUp", "PageDown", "Home", "End", "Enter", "Escape", "Tab"].includes(e.key);
|
|
3661
|
+
if (o && !i) {
|
|
3662
|
+
e.preventDefault();
|
|
3663
|
+
return;
|
|
3664
|
+
}
|
|
3665
|
+
}
|
|
3666
|
+
switch (e.key) {
|
|
3667
|
+
case "ArrowDown":
|
|
3668
|
+
e.preventDefault(), e.ctrlKey || e.metaKey ? this.focusNextMatch() : this.focusNext();
|
|
3669
|
+
break;
|
|
3670
|
+
case "ArrowUp":
|
|
3671
|
+
e.preventDefault(), e.ctrlKey || e.metaKey ? this.focusPreviousMatch() : this.focusPrevious();
|
|
3672
|
+
break;
|
|
3673
|
+
case "Enter":
|
|
3674
|
+
e.preventDefault(), this.focusedIndex >= 0 ? this.toggleOption(this.filteredOptions[this.focusedIndex]) : this.options.isAddNewAllowed && this.options.addNewCallback && this.input.value.trim() && this.handleAddNew(this.input.value.trim()), this.presentationMode === "fullscreen" && ((t = this.fullscreenSearchInput) == null || t.blur());
|
|
3675
|
+
break;
|
|
3676
|
+
case "Escape":
|
|
3677
|
+
e.preventDefault(), this.showSelectedPopover ? this.hideSelectedPopover() : this.input.value ? this.clearSearch() : this.close();
|
|
3678
|
+
break;
|
|
3679
|
+
case "Tab":
|
|
3680
|
+
this.close();
|
|
3681
|
+
break;
|
|
3682
|
+
case "PageUp":
|
|
3683
|
+
e.preventDefault(), this.focusPageUp();
|
|
3684
|
+
break;
|
|
3685
|
+
case "PageDown":
|
|
3686
|
+
e.preventDefault(), this.focusPageDown();
|
|
3687
|
+
break;
|
|
3688
|
+
case "Home":
|
|
3689
|
+
case "End": {
|
|
3690
|
+
const o = e.target instanceof HTMLInputElement ? e.target : null;
|
|
3691
|
+
let i;
|
|
3692
|
+
if (!o)
|
|
3693
|
+
i = !0;
|
|
3694
|
+
else if (o.selectionStart !== o.selectionEnd)
|
|
3695
|
+
i = !1;
|
|
3696
|
+
else {
|
|
3697
|
+
const r = o.selectionStart ?? 0;
|
|
3698
|
+
i = e.key === "Home" ? r === 0 : r === o.value.length;
|
|
3699
|
+
}
|
|
3700
|
+
i && (e.preventDefault(), e.key === "Home" ? this.focusFirst() : this.focusLast());
|
|
3701
|
+
break;
|
|
3702
|
+
}
|
|
3703
|
+
}
|
|
3651
3704
|
}
|
|
3652
3705
|
}
|
|
3653
3706
|
handleDropdownClick(e) {
|
|
@@ -3789,6 +3842,49 @@ class wr {
|
|
|
3789
3842
|
const e = Array.from(this.matchingIndices).sort((i, r) => i - r), t = e.findIndex((i) => i === this.focusedIndex), o = t <= 0 ? e.length - 1 : t - 1;
|
|
3790
3843
|
this.focusBy(() => e[o]), W.debug(`[${this.instanceId}] Jumped to previous match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
|
|
3791
3844
|
}
|
|
3845
|
+
/** Lazily build (and cache) the imperative facade passed to `keydownCallback`. Bound to the
|
|
3846
|
+
* same private actions the built-in key handling uses, so consumer shortcuts behave identically. */
|
|
3847
|
+
getKeyboardController() {
|
|
3848
|
+
return this.keyboardController ? this.keyboardController : (this.keyboardController = {
|
|
3849
|
+
focusNext: () => this.focusNext(),
|
|
3850
|
+
focusPrevious: () => this.focusPrevious(),
|
|
3851
|
+
focusFirst: () => this.focusFirst(),
|
|
3852
|
+
focusLast: () => this.focusLast(),
|
|
3853
|
+
focusPageUp: () => this.focusPageUp(),
|
|
3854
|
+
focusPageDown: () => this.focusPageDown(),
|
|
3855
|
+
focusNextMatch: () => this.focusNextMatch(),
|
|
3856
|
+
focusPreviousMatch: () => this.focusPreviousMatch(),
|
|
3857
|
+
focusIndex: (e) => this.focusBy(() => e, 1),
|
|
3858
|
+
toggleFocused: () => {
|
|
3859
|
+
this.focusedIndex >= 0 && this.toggleOption(this.filteredOptions[this.focusedIndex]);
|
|
3860
|
+
},
|
|
3861
|
+
toggleValue: (e) => {
|
|
3862
|
+
const t = this.allOptions.find((o) => String(this.getItemValue(o)) === String(e));
|
|
3863
|
+
t && this.toggleOption(t);
|
|
3864
|
+
},
|
|
3865
|
+
selectValue: (e) => {
|
|
3866
|
+
if (this.selectedValues.has(String(e))) return;
|
|
3867
|
+
const t = this.allOptions.find((o) => String(this.getItemValue(o)) === String(e));
|
|
3868
|
+
t && this.toggleOption(t);
|
|
3869
|
+
},
|
|
3870
|
+
deselectValue: (e) => {
|
|
3871
|
+
if (!this.selectedValues.has(String(e))) return;
|
|
3872
|
+
const t = this.selectedOptions.get(String(e)) ?? this.allOptions.find((o) => String(this.getItemValue(o)) === String(e));
|
|
3873
|
+
t && this.toggleOption(t);
|
|
3874
|
+
},
|
|
3875
|
+
open: () => this.open(),
|
|
3876
|
+
close: () => this.close(),
|
|
3877
|
+
setSearch: (e) => {
|
|
3878
|
+
this.input.value = e, this.fullscreenSearchInput && (this.fullscreenSearchInput.value = e), this.handleSearch(e);
|
|
3879
|
+
},
|
|
3880
|
+
clearSearch: () => this.clearSearch()
|
|
3881
|
+
}, this.keyboardController);
|
|
3882
|
+
}
|
|
3883
|
+
/** Clear the search box (both the main input and the fullscreen search) and reset the visible
|
|
3884
|
+
* list. Shared by Escape and the keyboard controller. */
|
|
3885
|
+
clearSearch() {
|
|
3886
|
+
this.input.value = "", this.fullscreenSearchInput && (this.fullscreenSearchInput.value = ""), this.searchTerm = "", this.resetVisibleToAll(), this.matchingIndices.clear(), this.focusedIndex = -1, this.renderDropdown(), this.updateFullscreenNav(), this.updateFullscreenSearchClear();
|
|
3887
|
+
}
|
|
3792
3888
|
scrollToFocused() {
|
|
3793
3889
|
if (this.virtualScroll && this.focusedIndex >= 0) {
|
|
3794
3890
|
this.virtualScroll.scrollToIndex(this.focusedIndex);
|
|
@@ -3996,7 +4092,7 @@ class wr {
|
|
|
3996
4092
|
* and a redundant call is a no-op rather than acquiring a second.
|
|
3997
4093
|
*/
|
|
3998
4094
|
lockBodyScroll() {
|
|
3999
|
-
this.bodyScrollUnlock || (this.bodyScrollUnlock =
|
|
4095
|
+
this.bodyScrollUnlock || (this.bodyScrollUnlock = ii());
|
|
4000
4096
|
}
|
|
4001
4097
|
/** Restore page scroll (no-op if it wasn't locked). */
|
|
4002
4098
|
unlockBodyScroll() {
|
|
@@ -4035,7 +4131,7 @@ class wr {
|
|
|
4035
4131
|
* we just hold the returned cleanup. No-op where `visualViewport` is unavailable.
|
|
4036
4132
|
*/
|
|
4037
4133
|
observeKeyboardInset() {
|
|
4038
|
-
this.keyboardInsetCleanup =
|
|
4134
|
+
this.keyboardInsetCleanup = ri(this.dropdown);
|
|
4039
4135
|
}
|
|
4040
4136
|
/** Detach keyboard-inset tracking and restore the panel's CSS-driven geometry. */
|
|
4041
4137
|
unobserveKeyboardInset() {
|
|
@@ -4100,7 +4196,7 @@ class wr {
|
|
|
4100
4196
|
}
|
|
4101
4197
|
/** Tear down the fullscreen dropdown chrome and restore page scroll (no-op if floating). */
|
|
4102
4198
|
exitFullscreen() {
|
|
4103
|
-
this.unobserveKeyboardInset(), this.popOverlayHistory(), this.dropdown.classList.remove("ms__dropdown--fullscreen"), this.fullscreenHeader && (this.fullscreenHeader.remove(), this.fullscreenHeader = null, this.fullscreenSearchInput = null, this.fullscreenSearchClear = null, this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null), this.unlockBodyScroll(), this.releaseDocumentOverflowX();
|
|
4199
|
+
this.unobserveKeyboardInset(), this.popOverlayHistory(), this.dropdown.classList.remove("ms__dropdown--fullscreen"), this.fullscreenHeader && (this.fullscreenHeader.remove(), this.fullscreenHeader = null, this.fullscreenSearchInput = null, this.fullscreenSearchClear = null, this.fullscreenModeToggle = null, this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null), this.unlockBodyScroll(), this.releaseDocumentOverflowX();
|
|
4104
4200
|
}
|
|
4105
4201
|
/**
|
|
4106
4202
|
* Back-gesture handling for the fullscreen sheet. On open we push a history entry
|
|
@@ -4135,7 +4231,10 @@ class wr {
|
|
|
4135
4231
|
const e = document.createElement("div");
|
|
4136
4232
|
if (e.className = "ms__fullscreen-header", this.options.isSearchEnabled && this.options.searchInputMode !== "hidden") {
|
|
4137
4233
|
const o = document.createElement("div");
|
|
4138
|
-
o.className = "ms__fullscreen-search-wrapper"
|
|
4234
|
+
if (o.className = "ms__fullscreen-search-wrapper", this.options.isSearchModeToggleShown) {
|
|
4235
|
+
const r = document.createElement("button");
|
|
4236
|
+
r.type = "button", r.className = "ms__fullscreen-mode-toggle", r.addEventListener("mousedown", (n) => n.preventDefault()), r.addEventListener("click", () => this.toggleSearchModeLive()), o.appendChild(r), this.fullscreenModeToggle = r;
|
|
4237
|
+
}
|
|
4139
4238
|
const i = document.createElement("input");
|
|
4140
4239
|
if (i.type = "text", i.className = "ms__fullscreen-search", i.placeholder = this.getPlaceholderText(), i.autocomplete = "off", this.options.searchInputMode === "readonly" && (i.readOnly = !0), i.addEventListener("input", (r) => {
|
|
4141
4240
|
const n = r.target.value;
|
|
@@ -4147,19 +4246,53 @@ class wr {
|
|
|
4147
4246
|
e.appendChild(o);
|
|
4148
4247
|
}
|
|
4149
4248
|
const t = document.createElement("button");
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4249
|
+
t.type = "button", t.className = "ms__fullscreen-close", t.setAttribute("aria-label", "Close"), t.addEventListener("click", () => this.close()), e.appendChild(t), this.dropdown.insertBefore(e, this.dropdownInner), this.fullscreenHeader = e, this.options.isSearchEnabled && (this.options.searchMode || "filter") === "navigate" && this.ensureFullscreenNav(), this.updateFullscreenModeToggle(), this.updateFullscreenNav(), this.updateFullscreenSearchClear();
|
|
4250
|
+
}
|
|
4251
|
+
/** Build the navigate-mode match navigator (count + prev/next) and append it to the
|
|
4252
|
+
* fullscreen header, once. No-op if already built or the header isn't present. The
|
|
4253
|
+
* nav wraps onto its own full-width row under the search box (header is flex-wrap;
|
|
4254
|
+
* the nav takes 100% basis). */
|
|
4255
|
+
ensureFullscreenNav() {
|
|
4256
|
+
if (this.fullscreenNav || !this.fullscreenHeader) return;
|
|
4257
|
+
const e = document.createElement("div");
|
|
4258
|
+
e.className = "ms__fullscreen-nav";
|
|
4259
|
+
const t = document.createElement("span");
|
|
4260
|
+
t.className = "ms__fullscreen-nav-count", e.appendChild(t);
|
|
4261
|
+
const o = document.createElement("div");
|
|
4262
|
+
o.className = "ms__fullscreen-nav-controls";
|
|
4263
|
+
const i = document.createElement("button");
|
|
4264
|
+
i.type = "button", i.className = "ms__fullscreen-nav-btn ms__fullscreen-nav-btn--prev", i.setAttribute("aria-label", "Previous match"), i.addEventListener("click", () => this.focusPreviousMatch());
|
|
4265
|
+
const r = document.createElement("button");
|
|
4266
|
+
r.type = "button", r.className = "ms__fullscreen-nav-btn ms__fullscreen-nav-btn--next", r.setAttribute("aria-label", "Next match"), r.addEventListener("click", () => this.focusNextMatch()), o.appendChild(i), o.appendChild(r), e.appendChild(o), this.fullscreenHeader.appendChild(e), this.fullscreenNav = e, this.fullscreenNavCount = t, this.fullscreenNavPrev = i, this.fullscreenNavNext = r;
|
|
4267
|
+
}
|
|
4268
|
+
/** Remove the match navigator (switching to filter mode, which has no jump UI). */
|
|
4269
|
+
removeFullscreenNav() {
|
|
4270
|
+
this.fullscreenNav && (this.fullscreenNav.remove(), this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null);
|
|
4271
|
+
}
|
|
4272
|
+
/** Flip searchMode filter<->navigate from the in-overlay toggle. */
|
|
4273
|
+
toggleSearchModeLive() {
|
|
4274
|
+
const e = (this.options.searchMode || "filter") === "navigate" ? "filter" : "navigate";
|
|
4275
|
+
this.setSearchModeLive(e);
|
|
4276
|
+
}
|
|
4277
|
+
/**
|
|
4278
|
+
* Switch searchMode in place — the overlay's toggle path. The `search-mode` attribute
|
|
4279
|
+
* is reinit-on-change (it rebuilds and closes the overlay); this instead mutates the
|
|
4280
|
+
* live config, adds/removes the match navigator to match, and re-projects the current
|
|
4281
|
+
* term under the new mode (filter narrows the list / navigate keeps all + highlights),
|
|
4282
|
+
* all without tearing the open sheet down. Focus stays on the search field.
|
|
4283
|
+
*/
|
|
4284
|
+
setSearchModeLive(e) {
|
|
4285
|
+
var t;
|
|
4286
|
+
(this.options.searchMode || "filter") !== e && (this.options.searchMode = e, e === "navigate" ? this.ensureFullscreenNav() : this.removeFullscreenNav(), this.updateFullscreenModeToggle(), this.refreshSearchPlaceholder(), this.handleSearch(this.searchTerm), (t = this.fullscreenSearchInput) == null || t.focus());
|
|
4287
|
+
}
|
|
4288
|
+
/** Sync the mode toggle's icon (via data-mode) and labels with the current searchMode.
|
|
4289
|
+
* No-op when the toggle isn't built (opt-out, floating panel, or search hidden). */
|
|
4290
|
+
updateFullscreenModeToggle() {
|
|
4291
|
+
if (!this.fullscreenModeToggle) return;
|
|
4292
|
+
const e = this.options.searchMode || "filter";
|
|
4293
|
+
this.fullscreenModeToggle.dataset.mode = e;
|
|
4294
|
+
const t = e === "navigate" ? "filter" : "navigate";
|
|
4295
|
+
this.fullscreenModeToggle.setAttribute("aria-label", `Switch to ${t} mode`), this.fullscreenModeToggle.setAttribute("title", `Switch to ${t} mode`), this.fullscreenModeToggle.setAttribute("aria-pressed", String(e === "navigate"));
|
|
4163
4296
|
}
|
|
4164
4297
|
/**
|
|
4165
4298
|
* Sync the fullscreen match navigator (navigate mode only) with the current search
|
|
@@ -4286,7 +4419,7 @@ class wr {
|
|
|
4286
4419
|
if (!this.selectedPopoverContainer) return;
|
|
4287
4420
|
const o = this.scaledBadgeHeight(), i = Math.round(4 * this.fullscreenScale()), r = o + i, n = this.options.virtualScrollBuffer ?? 10;
|
|
4288
4421
|
requestAnimationFrame(() => {
|
|
4289
|
-
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new
|
|
4422
|
+
this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new ws({
|
|
4290
4423
|
container: this.selectedPopoverContainer,
|
|
4291
4424
|
itemHeight: r,
|
|
4292
4425
|
items: e,
|
|
@@ -4308,28 +4441,31 @@ class wr {
|
|
|
4308
4441
|
* accessible name stay in sync.
|
|
4309
4442
|
*/
|
|
4310
4443
|
renderBadgeHTML(e, t) {
|
|
4311
|
-
const o = this.getItemValue(e)
|
|
4312
|
-
|
|
4313
|
-
|
|
4314
|
-
|
|
4315
|
-
|
|
4316
|
-
|
|
4444
|
+
const o = this.getItemValue(e), i = {
|
|
4445
|
+
...t,
|
|
4446
|
+
...Ot(this.presentationMode)
|
|
4447
|
+
};
|
|
4448
|
+
let r;
|
|
4449
|
+
const n = t.isInPopover ? this.options.renderSelectedItemContentCallback : void 0;
|
|
4450
|
+
if (n) {
|
|
4451
|
+
const d = n(e);
|
|
4452
|
+
r = typeof d == "string" ? d : d.outerHTML;
|
|
4317
4453
|
} else if (this.options.renderBadgeContentCallback) {
|
|
4318
|
-
const
|
|
4319
|
-
|
|
4454
|
+
const d = this.options.renderBadgeContentCallback(e, i);
|
|
4455
|
+
r = typeof d == "string" ? d : d.outerHTML;
|
|
4320
4456
|
} else
|
|
4321
|
-
|
|
4322
|
-
const
|
|
4323
|
-
let
|
|
4324
|
-
if (
|
|
4325
|
-
const
|
|
4326
|
-
|
|
4457
|
+
r = this.getItemBadgeDisplayValue(e);
|
|
4458
|
+
const a = t.isInPopover ? this.options.getSelectedItemClassCallback || this.options.getBadgeClassCallback : this.options.getBadgeClassCallback;
|
|
4459
|
+
let l = "ms__badge";
|
|
4460
|
+
if (a) {
|
|
4461
|
+
const d = a(e), h = Array.isArray(d) ? d : [d];
|
|
4462
|
+
l += " " + h.filter((f) => f).join(" ");
|
|
4327
4463
|
}
|
|
4328
|
-
const
|
|
4464
|
+
const c = this.getItemBadgeDisplayValue(e);
|
|
4329
4465
|
return `
|
|
4330
|
-
<div class="${
|
|
4331
|
-
<span class="ms__badge-text">${
|
|
4332
|
-
<button type="button" class="ms__badge-remove" data-value="${o}" aria-label="Remove ${
|
|
4466
|
+
<div class="${l}">
|
|
4467
|
+
<span class="ms__badge-text">${r}</span>
|
|
4468
|
+
<button type="button" class="ms__badge-remove" data-value="${o}" aria-label="Remove ${c}"></button>
|
|
4333
4469
|
</div>
|
|
4334
4470
|
`;
|
|
4335
4471
|
}
|
|
@@ -4412,9 +4548,9 @@ class wr {
|
|
|
4412
4548
|
if (t !== o) return !1;
|
|
4413
4549
|
Object.assign(this.options, e);
|
|
4414
4550
|
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;
|
|
4415
|
-
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() ?
|
|
4551
|
+
if ("options" in e && e.options !== void 0 ? (this.allOptions = e.options, this.reconcileSelectedOptions(), this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]) : i && (this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]), ("checkboxMode" in e || "cascadeSelectPolicy" in e) && !i && !("options" in e) && this.isTreeMode() && (this.cascadeIndex = this.isCascadeMode() ? Cs(this.tree, (a) => String(this.getItemValue(a))) : null, this.isCascadeMode() && this.cascadeIndex)) {
|
|
4416
4552
|
this.cascadeCheckedAtoms = Ke(this.cascadeIndex, this.selectedValues);
|
|
4417
|
-
const a =
|
|
4553
|
+
const a = Et(
|
|
4418
4554
|
this.cascadeIndex,
|
|
4419
4555
|
this.cascadeCheckedAtoms,
|
|
4420
4556
|
this.cascadePolicy(),
|
|
@@ -4466,7 +4602,7 @@ class wr {
|
|
|
4466
4602
|
spawnTooltip(e) {
|
|
4467
4603
|
var r;
|
|
4468
4604
|
(r = this.tooltips.get(e.id)) == null || r.destroy();
|
|
4469
|
-
const t = this.element.getRootNode(), o = t instanceof ShadowRoot ? t : null, i =
|
|
4605
|
+
const t = this.element.getRootNode(), o = t instanceof ShadowRoot ? t : null, i = fr({
|
|
4470
4606
|
trigger: e.trigger,
|
|
4471
4607
|
container: this.options.container ?? o ?? document.body,
|
|
4472
4608
|
content: e.content,
|
|
@@ -4512,11 +4648,11 @@ ${o}` : t;
|
|
|
4512
4648
|
trigger: f,
|
|
4513
4649
|
content: this.buildBadgeTooltipContent(c)
|
|
4514
4650
|
});
|
|
4515
|
-
const
|
|
4651
|
+
const m = this.getItemBadgeDisplayValue(c);
|
|
4516
4652
|
this.spawnTooltip({
|
|
4517
4653
|
id: h,
|
|
4518
4654
|
trigger: a,
|
|
4519
|
-
content: this.buildRemoveButtonTooltipText(
|
|
4655
|
+
content: this.buildRemoveButtonTooltipText(m, c),
|
|
4520
4656
|
// Keep parent badge tooltip from overlapping the remove-button tooltip.
|
|
4521
4657
|
onBeforeShow: () => {
|
|
4522
4658
|
var g;
|
|
@@ -4613,7 +4749,7 @@ ${o}` : t;
|
|
|
4613
4749
|
const n = document.createElement("div");
|
|
4614
4750
|
n.className = "ms__option-tooltip ms__option-tooltip--fullscreen", typeof r == "string" ? n.textContent = r : n.appendChild(r);
|
|
4615
4751
|
const a = this.element.getRootNode(), l = a instanceof ShadowRoot ? a : null, c = this.options.container ?? l ?? document.body;
|
|
4616
|
-
this.labelRevealTrigger = e, this.labelRevealPanel = n, this.labelRevealPopover =
|
|
4752
|
+
this.labelRevealTrigger = e, this.labelRevealPanel = n, this.labelRevealPopover = gr({
|
|
4617
4753
|
reference: e,
|
|
4618
4754
|
panel: n,
|
|
4619
4755
|
container: c,
|
|
@@ -4724,7 +4860,7 @@ ${o}` : t;
|
|
|
4724
4860
|
this.destroyAllTooltips(), this.hideLabelReveal(), this.hideMessage(), this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0), this.abortInFlightSearch(), this.dropdownCleanup && this.dropdownCleanup(), this.hintCleanup && this.hintCleanup(), this.selectedPopoverCleanup && this.selectedPopoverCleanup(), this.overlayHistoryActive && (this.overlayHistoryActive = !1, typeof window < "u" && window.removeEventListener("popstate", this.onOverlayPopstate)), this.exitFullscreen(), this.documentClickHandler && (document.removeEventListener("click", this.documentClickHandler), this.documentClickHandler = null), this.documentKeydownHandler && (document.removeEventListener("keydown", this.documentKeydownHandler), this.documentKeydownHandler = null), this.virtualScroll && (this.virtualScroll.destroy(), this.virtualScroll = null), this.dropdown && this.dropdown.remove(), this.hint && this.hint.remove(), this.selectedPopover && this.selectedPopover.remove(), this.element.innerHTML = "", this.element.classList.remove("ms", "ms--open", "ms--no-checkboxes"), nt.info(`[${this.instanceId}] Component destroyed`);
|
|
4725
4861
|
}
|
|
4726
4862
|
}
|
|
4727
|
-
function
|
|
4863
|
+
function _r() {
|
|
4728
4864
|
return {
|
|
4729
4865
|
fromAttribute(s) {
|
|
4730
4866
|
if (s === null || s.trim() === "") return [];
|
|
@@ -4745,29 +4881,29 @@ function xr() {
|
|
|
4745
4881
|
}
|
|
4746
4882
|
};
|
|
4747
4883
|
}
|
|
4748
|
-
const
|
|
4884
|
+
const kr = ["json", "csv", "plain"], Ss = ",", Ts = `
|
|
4749
4885
|
`;
|
|
4750
|
-
function
|
|
4886
|
+
function Cr(s, e, t = {}) {
|
|
4751
4887
|
if (s == null || s.trim() === "") return { options: [] };
|
|
4752
|
-
const o =
|
|
4888
|
+
const o = Is(t.splitter ?? Ss) || Ss, i = Is(t.rowSplitter ?? Ts) || Ts;
|
|
4753
4889
|
switch (e) {
|
|
4754
4890
|
case "csv":
|
|
4755
|
-
return
|
|
4891
|
+
return Ir(s, o, i);
|
|
4756
4892
|
case "plain":
|
|
4757
|
-
return
|
|
4893
|
+
return Tr(s, o, i);
|
|
4758
4894
|
case "json":
|
|
4759
4895
|
default:
|
|
4760
|
-
return
|
|
4896
|
+
return Sr(s);
|
|
4761
4897
|
}
|
|
4762
4898
|
}
|
|
4763
|
-
function
|
|
4899
|
+
function Is(s) {
|
|
4764
4900
|
return s.replace(
|
|
4765
4901
|
/\\[ntr\\]/g,
|
|
4766
4902
|
(e) => e === "\\n" ? `
|
|
4767
4903
|
` : e === "\\t" ? " " : e === "\\r" ? "\r" : "\\"
|
|
4768
4904
|
);
|
|
4769
4905
|
}
|
|
4770
|
-
function
|
|
4906
|
+
function Sr(s) {
|
|
4771
4907
|
let e;
|
|
4772
4908
|
try {
|
|
4773
4909
|
e = JSON.parse(s);
|
|
@@ -4776,10 +4912,10 @@ function Cr(s) {
|
|
|
4776
4912
|
}
|
|
4777
4913
|
return Array.isArray(e) ? { options: e } : { options: [], error: "data-options JSON must be an array" };
|
|
4778
4914
|
}
|
|
4779
|
-
function
|
|
4915
|
+
function Tr(s, e, t) {
|
|
4780
4916
|
return { options: s.split(t).flatMap((i) => i.split(e)).map((i) => i.trim()).filter((i) => i.length > 0).map((i) => [i, i]) };
|
|
4781
4917
|
}
|
|
4782
|
-
function
|
|
4918
|
+
function Ir(s, e, t) {
|
|
4783
4919
|
const o = Or(s, e, t).filter((n) => !(n.length === 1 && n[0].trim() === ""));
|
|
4784
4920
|
if (o.length < 2)
|
|
4785
4921
|
return { options: [], error: "data-options CSV needs a header row and at least one data row" };
|
|
@@ -4804,7 +4940,7 @@ function Or(s, e, t) {
|
|
|
4804
4940
|
}
|
|
4805
4941
|
return i.push(r), o.push(i), o;
|
|
4806
4942
|
}
|
|
4807
|
-
const Qs = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: 10px;font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#e5e7eb, #3a3a3a));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: var(--ms-primary-bg-hover);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-remove-bg: var(--ms-text-color-3);--ms-badge-counter-remove-bg-hover: var(--ms-text-color-1);--ms-badge-counter-remove-color: var(--ms-text-color-on-accent);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-input-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-input-padding-right: calc(4 * var(--ms-rem));--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: rgba(107, 114, 128, .05);--ms-toggle-right: calc(1.2 * var(--ms-rem));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-center-y: translateY(-50%);--ms-transform-rotate-180: 180deg;--ms-counter-offset: calc(3.2 * var(--ms-rem));--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: var(--ms-accent-color-light, var(--ms-option-bg-matched, transparent));--ms-icon-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 15l7-7 7 7' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>");--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: calc(.2 * var(--ms-rem));--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1 * var(--ms-rem));--ms-icon-remove: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 6L18 18M18 6L6 18' stroke='black' stroke-width='2.5' stroke-linecap='round' fill='none'/></svg>");--ms-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-count-clear-color-hover: var(--ms-accent-color);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--ms-icon-remove);--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--ms-z-index-popover: 10000;--ms-selected-popover-width: calc(32 * var(--ms-rem));--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-selected-popover-close-color-hover: var(--ms-accent-color);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}:host{-webkit-tap-highlight-color:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{position:relative;display:flex;align-items:center}.ms__input{box-sizing:border-box;width:100%;font-family:inherit;height:var(--ms-input-height);padding:var(--ms-input-padding);padding-inline-end:var(--ms-input-padding-right);font-size:var(--ms-input-font-size);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);background:var(--ms-input-bg);color:var(--ms-input-color);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input:hover:not(:focus):not(:disabled){border:var(--ms-input-border-hover)}.ms__input:focus{outline:none;border:var(--ms-input-border-focus)}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{position:absolute;inset-inline-end:var(--ms-toggle-right);top:50%;transform:var(--ms-transform-center-y);pointer-events:none;color:var(--ms-toggle-icon-color);transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{transform:var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));color:var(--ms-toggle-icon-color-open)}.ms__counter{position:absolute;inset-inline-end:var(--ms-counter-offset);top:50%;transform:var(--ms-transform-center-y);padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover))}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}@media (hover: hover){.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);width:var(--ms-dropdown-width);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat}.ms__fullscreen-nav-btn--next:before{transform:scaleY(-1)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 auto;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.ms__dropdown-inner{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow-y:visible}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.ms__selected-popover{display:none;position:fixed;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed);flex-shrink:0}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input{opacity:var(--ms-disabled-input-opacity);cursor:not-allowed;background:var(--ms-input-bg-disabled)}.ms--disabled .ms__toggle{opacity:var(--ms-disabled-input-opacity)}.ms--no-checkboxes .ms__option{gap:0;padding-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start:0}}@layer component;@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-radius:0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-inline-end:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-inline-start:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover)}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);position:relative;min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit)}.ms__option--matched:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;border-inline-start:var(--ms-option-border-matched);pointer-events:none}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}@media (hover: hover){.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;left:50%;top:40%;width:30%;height:55%;transform:translate(-50%,-50%) rotate(45deg);border:solid var(--ms-checkbox-checkmark-color);border-width:0 var(--ms-checkbox-checkmark-thickness, 2px) var(--ms-checkbox-checkmark-thickness, 2px) 0}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;top:50%;left:50%;width:55%;height:0;transform:translate(-50%,-50%);border:none;border-bottom:var(--ms-checkbox-checkmark-thickness, 2px) solid var(--ms-checkbox-checkmark-color)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}@media (hover: hover){.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}@media (hover: hover){.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, Os = [
|
|
4943
|
+
const Zs = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: 10px;font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#cbd5e1, #52525b));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: var(--ms-primary-bg-hover);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-remove-bg: var(--ms-text-color-3);--ms-badge-counter-remove-bg-hover: var(--ms-text-color-1);--ms-badge-counter-remove-color: var(--ms-text-color-on-accent);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-input-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-input-padding-right: calc(4 * var(--ms-rem));--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: rgba(107, 114, 128, .05);--ms-toggle-right: calc(1.2 * var(--ms-rem));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-center-y: translateY(-50%);--ms-transform-rotate-180: 180deg;--ms-counter-offset: calc(3.2 * var(--ms-rem));--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-mode-toggle-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-icon-size: calc(1.5 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-gap: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-mode-toggle-bg: transparent;--ms-fullscreen-mode-toggle-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: color-mix(in srgb, var(--ms-accent-color) 22%, transparent);--ms-icon-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 15l7-7 7 7' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>");--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: 0;--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1 * var(--ms-rem));--ms-icon-remove: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 6L18 18M18 6L6 18' stroke='black' stroke-width='2.5' stroke-linecap='round' fill='none'/></svg>");--ms-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-icon-search: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-icon-filter: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polygon points='22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3'/></svg>");--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-count-clear-color-hover: var(--ms-accent-color);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--ms-icon-remove);--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--ms-z-index-popover: 10000;--ms-selected-popover-width: calc(32 * var(--ms-rem));--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-selected-popover-close-color-hover: var(--ms-accent-color);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}:host{-webkit-tap-highlight-color:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{position:relative;display:flex;align-items:center}.ms__input{box-sizing:border-box;width:100%;font-family:inherit;height:var(--ms-input-height);padding:var(--ms-input-padding);padding-inline-end:var(--ms-input-padding-right);font-size:var(--ms-input-font-size);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);background:var(--ms-input-bg);color:var(--ms-input-color);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input:hover:not(:focus):not(:disabled){border:var(--ms-input-border-hover)}.ms__input:focus{outline:none;border:var(--ms-input-border-focus)}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{position:absolute;inset-inline-end:var(--ms-toggle-right);top:50%;transform:var(--ms-transform-center-y);pointer-events:none;color:var(--ms-toggle-icon-color);transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{transform:var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));color:var(--ms-toggle-icon-color-open)}.ms__counter{position:absolute;inset-inline-end:var(--ms-counter-offset);top:50%;transform:var(--ms-transform-center-y);padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover))}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}@media (hover: hover){.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);width:var(--ms-dropdown-width);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-header{align-content:flex-start}.ms__fullscreen-header>.ms__fullscreen-search-wrapper{min-height:var(--ms-fullscreen-header-min-height)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat}.ms__fullscreen-nav-btn--next:before{transform:scaleY(-1)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 auto;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex;align-items:center}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-mode-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-mode-toggle-size);height:var(--ms-fullscreen-mode-toggle-size);margin-inline-end:var(--ms-fullscreen-mode-toggle-gap);padding:0;color:var(--ms-fullscreen-mode-toggle-color);background:var(--ms-fullscreen-mode-toggle-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-mode-toggle:hover{background:var(--ms-fullscreen-mode-toggle-bg-hover)}.ms__fullscreen-mode-toggle:before{content:"";display:block;width:var(--ms-fullscreen-mode-toggle-icon-size);height:var(--ms-fullscreen-mode-toggle-icon-size);background-color:currentColor;-webkit-mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat;mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat}.ms__fullscreen-mode-toggle[data-mode=navigate]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-search)}.ms__fullscreen-mode-toggle[data-mode=filter]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-filter)}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.ms__dropdown-inner{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow-y:visible}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.ms__selected-popover{display:none;position:fixed;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed);flex-shrink:0}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input{opacity:var(--ms-disabled-input-opacity);cursor:not-allowed;background:var(--ms-input-bg-disabled)}.ms--disabled .ms__toggle{opacity:var(--ms-disabled-input-opacity)}.ms--no-checkboxes .ms__option{gap:0;padding-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start:0}}@layer component;@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-radius:0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-inline-end:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-inline-start:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover)}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);position:relative;min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit)}.ms__option--matched:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;border-inline-start:var(--ms-option-border-matched);pointer-events:none}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}@media (hover: hover){.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start;--ms-checkbox-margin-top: calc(.2 * var(--ms-rem))}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;left:50%;top:40%;width:30%;height:55%;transform:translate(-50%,-50%) rotate(45deg);border:solid var(--ms-checkbox-checkmark-color);border-width:0 var(--ms-checkbox-checkmark-thickness, 2px) var(--ms-checkbox-checkmark-thickness, 2px) 0}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;top:50%;left:50%;width:55%;height:0;transform:translate(-50%,-50%);border:none;border-bottom:var(--ms-checkbox-checkmark-thickness, 2px) solid var(--ms-checkbox-checkmark-color)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}@media (hover: hover){.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}@media (hover: hover){.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, Os = [
|
|
4808
4944
|
"top",
|
|
4809
4945
|
"top-start",
|
|
4810
4946
|
"top-end",
|
|
@@ -4817,10 +4953,10 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
4817
4953
|
"right",
|
|
4818
4954
|
"right-start",
|
|
4819
4955
|
"right-end"
|
|
4820
|
-
],
|
|
4956
|
+
], z = () => go(), Pr = [
|
|
4821
4957
|
// ── Strings (cosmetic → update). Optional ones are nullable: absent → null ─
|
|
4822
4958
|
{ configKey: "searchHint", attribute: "search-hint", converter: A({ isNullable: !0 }), on: "update", description: "Small hint text shown beneath the search input." },
|
|
4823
|
-
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter: A({
|
|
4959
|
+
{ configKey: "searchPlaceholder", attribute: "search-placeholder", converter: A({ isNullable: !0 }), on: "update", description: 'Placeholder text for the search input. When unset it defaults to "Search..."; if `show-search-mode-toggle` is on, the default instead becomes mode-aware ("Search…" in navigate, "Filter…" in filter). An explicit value always wins and stays fixed.' },
|
|
4824
4960
|
{ configKey: "selectPlaceholder", attribute: "select-placeholder", converter: A({ default: "Pick an option..." }), on: "update", description: "Placeholder shown on the control when nothing is selected." },
|
|
4825
4961
|
{ configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter: A({ isNullable: !0 }), on: "update", description: "Text shown when there are no options at all." },
|
|
4826
4962
|
{ configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter: A({ isNullable: !0 }), on: "update", description: "Minimum width of the dropdown panel (any CSS length)." },
|
|
@@ -4925,62 +5061,64 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
|
|
|
4925
5061
|
{ configKey: "isBadgeTooltipsEnabled", attribute: "enable-badge-tooltips", converter: B("default-false"), on: "update", description: "Enable tooltips on badges." },
|
|
4926
5062
|
{ configKey: "isOptionTooltipsEnabled", attribute: "enable-option-tooltips", converter: B("default-false"), on: "update", description: "Enable tooltips on options." },
|
|
4927
5063
|
{ configKey: "isOptionTooltipFollowCursor", attribute: "option-tooltip-follow-cursor", converter: B("default-false"), on: "update", description: "Make option tooltips follow the pointer." },
|
|
5064
|
+
{ configKey: "isSearchModeToggleShown", attribute: "show-search-mode-toggle", converter: B("default-false"), on: "update", description: "Show a clickable toggle in the phone fullscreen overlay search header that flips `search-mode` between `filter` and `navigate` live. Fullscreen-only; no effect in the floating presentation or when search is disabled." },
|
|
4928
5065
|
// ── Special attributes ───────────────────────────────────────────────────
|
|
4929
|
-
{ configKey: "initialValues", attribute: "initial-values", converter:
|
|
5066
|
+
{ configKey: "initialValues", attribute: "initial-values", converter: _r(), default: [], on: "reinit", type: "Array<string | number>", description: 'Values selected on first render. Accepts a JSON array (`["a","b"]`) or a bare CSV (`a,b,c`).' },
|
|
4930
5067
|
{ configKey: "showDebugInfo", attribute: "show-debug-info", converter: B("default-false"), on: "update", description: "Render an in-component debug panel.", deprecated: "Use per-instance logging (el.enableLogging()) instead." },
|
|
4931
5068
|
// ── Complex property (data) ──────────────────────────────────────────────
|
|
4932
|
-
{ configKey: "options", converter:
|
|
5069
|
+
{ configKey: "options", converter: fo(), on: "reinit", type: "ReadonlyArray<Record<string, unknown>>", description: "The array of option objects to render. The JS API — assign `el.options` directly. For HTML authoring use the `data-options` attribute (parsed per `data-options-format`) or declarative <option> children; both feed the same list and take precedence over this property in the order: <option> children > property > data-options." },
|
|
4933
5070
|
{ configKey: "optionsSource", attribute: "data-options", converter: A({ isNullable: !0 }), on: "reinit", type: "string", description: "HTML-authoring source for the option list, parsed per `data-options-format`. Reactive: changing either attribute re-renders. Prefer the `options` property in JS; a set `options` property and declarative <option> children both win over this." },
|
|
4934
|
-
{ configKey: "optionsFormat", attribute: "data-options-format", converter: F(
|
|
5071
|
+
{ configKey: "optionsFormat", attribute: "data-options-format", converter: F(kr, { default: "json" }), on: "reinit", type: "'json' | 'csv' | 'plain'", description: "How to parse the `data-options` attribute: `json` (a JSON array of objects or [value, label] tuples), `csv` (rows split on `data-options-row-splitter`, cells on `data-options-splitter`; the first row is a header — map columns via *-member), or `plain` (bare values split on both splitters -> [value, label] tuples, value === label). Default `json`." },
|
|
4935
5072
|
{ configKey: "optionsSplitter", attribute: "data-options-splitter", converter: A({ default: "," }), on: "reinit", type: "string", description: 'Field/cell delimiter for the `csv` and `plain` `data-options` formats. Default `,`. Escapes `\\t` `\\n` `\\r` are honoured (e.g. `data-options-splitter="\\t"` for TSV). Ignored for `json`.' },
|
|
4936
5073
|
{ configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter: A({ default: `
|
|
4937
5074
|
` }), 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`.' },
|
|
4938
|
-
{ configKey: "actionButtons", converter:
|
|
5075
|
+
{ configKey: "actionButtons", converter: po({ validate: (s) => Array.isArray(s) }), on: "reinit", type: "Array<Record<string, unknown>>", description: "Custom action buttons for the dropdown footer/header. Property-only; when unset the default Select-All / Clear buttons apply." },
|
|
4939
5076
|
// ── Callbacks: data shape (structural → reinit) ──────────────────────────
|
|
4940
|
-
{ configKey: "getValueCallback", converter:
|
|
4941
|
-
{ configKey: "getPathCallback", converter:
|
|
4942
|
-
{ configKey: "getGroupCallback", converter:
|
|
4943
|
-
{ configKey: "getDisabledCallback", converter:
|
|
4944
|
-
{ configKey: "getIsSelectableCallback", converter:
|
|
4945
|
-
{ configKey: "getSearchValueCallback", converter:
|
|
4946
|
-
{ configKey: "searchCallback", converter:
|
|
5077
|
+
{ configKey: "getValueCallback", converter: z(), on: "reinit", type: "(item: unknown) => string | number", description: "Extract an option value (overrides valueMember)." },
|
|
5078
|
+
{ configKey: "getPathCallback", converter: z(), on: "reinit", type: "(item: unknown) => string", description: "Extract a node tree path (enables tree mode; overrides pathMember)." },
|
|
5079
|
+
{ configKey: "getGroupCallback", converter: z(), on: "reinit", type: "(item: unknown) => string", description: "Extract the group name from an option (overrides groupMember)." },
|
|
5080
|
+
{ configKey: "getDisabledCallback", converter: z(), on: "reinit", type: "(item: unknown) => boolean", description: "Whether an option is disabled (overrides disabledMember)." },
|
|
5081
|
+
{ configKey: "getIsSelectableCallback", converter: z(), on: "reinit", type: "(node: unknown) => boolean", description: "Whether a tree node can be selected (overrides is-selectable-member)." },
|
|
5082
|
+
{ configKey: "getSearchValueCallback", converter: z(), on: "reinit", type: "(item: unknown) => string", description: "Text an option is searched against (overrides searchValueMember)." },
|
|
5083
|
+
{ configKey: "searchCallback", converter: z(), on: "reinit", type: "(searchTerm: string, signal?: AbortSignal) => Promise<unknown[]>", description: "Custom / async search; return the filtered options." },
|
|
4947
5084
|
// ── Callbacks: display / render (cosmetic → update) ──────────────────────
|
|
4948
|
-
{ configKey: "getDisplayValueCallback", converter:
|
|
4949
|
-
{ configKey: "getBadgeDisplayCallback", converter:
|
|
4950
|
-
{ configKey: "getBadgeClassCallback", converter:
|
|
4951
|
-
{ configKey: "getIconCallback", converter:
|
|
4952
|
-
{ configKey: "getSubtitleCallback", converter:
|
|
4953
|
-
{ configKey: "getFullTitleCallback", converter:
|
|
4954
|
-
{ configKey: "getCounterCallback", converter:
|
|
4955
|
-
{ configKey: "getValueFormatCallback", converter:
|
|
4956
|
-
{ configKey: "getBadgeTooltipCallback", converter:
|
|
4957
|
-
{ configKey: "getOptionTooltipCallback", converter:
|
|
4958
|
-
{ configKey: "getRemoveButtonTooltipCallback", converter:
|
|
4959
|
-
{ configKey: "getSelectedItemClassCallback", converter:
|
|
4960
|
-
{ configKey: "renderOptionContentCallback", converter:
|
|
4961
|
-
{ configKey: "renderBadgeContentCallback", converter:
|
|
4962
|
-
{ configKey: "renderGroupLabelContentCallback", converter:
|
|
4963
|
-
{ configKey: "renderSelectedContentCallback", converter:
|
|
4964
|
-
{ configKey: "renderSelectedItemContentCallback", converter:
|
|
4965
|
-
{ configKey: "customStylesCallback", converter:
|
|
5085
|
+
{ configKey: "getDisplayValueCallback", converter: z(), on: "update", type: "(item: unknown) => string", description: "Compute the display label for an option (overrides displayValueMember)." },
|
|
5086
|
+
{ configKey: "getBadgeDisplayCallback", converter: z(), on: "update", type: "(item: unknown) => string", description: "Compute the text shown on an option badge." },
|
|
5087
|
+
{ configKey: "getBadgeClassCallback", converter: z(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for an option badge." },
|
|
5088
|
+
{ configKey: "getIconCallback", converter: z(), on: "update", type: "(item: unknown) => string", description: "Icon for an option (overrides iconMember)." },
|
|
5089
|
+
{ configKey: "getSubtitleCallback", converter: z(), on: "update", type: "(item: unknown) => string", description: "Subtitle for an option (overrides subtitleMember)." },
|
|
5090
|
+
{ configKey: "getFullTitleCallback", converter: z(), on: "update", type: "(item: unknown) => string", description: "Full title for an option (used by badges when show-badge-full-title is on)." },
|
|
5091
|
+
{ configKey: "getCounterCallback", converter: z(), on: "update", type: "(count: number, moreCount?: number) => string", description: "Render the selected-count label." },
|
|
5092
|
+
{ configKey: "getValueFormatCallback", converter: z(), on: "update", type: "(selectedValues: (string | number)[]) => string", description: "Serialize the selected values for form submission." },
|
|
5093
|
+
{ configKey: "getBadgeTooltipCallback", converter: z(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option badge." },
|
|
5094
|
+
{ configKey: "getOptionTooltipCallback", converter: z(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Tooltip content for an option row." },
|
|
5095
|
+
{ configKey: "getRemoveButtonTooltipCallback", converter: z(), on: "update", type: "(item: unknown) => string", description: "Tooltip text for a badge remove button." },
|
|
5096
|
+
{ configKey: "getSelectedItemClassCallback", converter: z(), on: "update", type: "(item: unknown) => string | string[]", description: "Extra CSS class(es) for a selected item." },
|
|
5097
|
+
{ configKey: "renderOptionContentCallback", converter: z(), on: "update", type: "(item: unknown, context: OptionContentRenderContext) => string | HTMLElement", description: "Custom render for an option row; may return HTML or an element." },
|
|
5098
|
+
{ configKey: "renderBadgeContentCallback", converter: z(), on: "update", type: "(item: unknown, context: BadgeContentRenderContext) => string | HTMLElement", description: "Custom render for a badge; may return HTML or an element." },
|
|
5099
|
+
{ configKey: "renderGroupLabelContentCallback", converter: z(), on: "update", type: "(groupName: string) => string | HTMLElement", description: "Customize a group label; may return an HTML string or element." },
|
|
5100
|
+
{ configKey: "renderSelectedContentCallback", converter: z(), on: "update", type: "(item: unknown) => string", description: "Custom render for the whole selected area." },
|
|
5101
|
+
{ configKey: "renderSelectedItemContentCallback", converter: z(), on: "update", type: "(item: unknown) => string | HTMLElement", description: "Custom render for one selected item." },
|
|
5102
|
+
{ configKey: "customStylesCallback", converter: z(), on: "update", type: "() => string", description: "Returns a CSS string injected into the component via a replaceable style slot (§12.8)." },
|
|
4966
5103
|
// ── Callbacks: before-hooks (behavior-shaping) ───────────────────────────
|
|
4967
|
-
{ configKey: "beforeSearchCallback", converter:
|
|
4968
|
-
{ configKey: "beforeSelectCallback", converter:
|
|
4969
|
-
{ configKey: "beforeDeselectCallback", converter:
|
|
4970
|
-
{ configKey: "addNewCallback", converter:
|
|
4971
|
-
|
|
5104
|
+
{ configKey: "beforeSearchCallback", converter: z(), on: "update", type: "(searchTerm: string) => string | null", description: "Runs before a search; return a rewritten term or null to veto." },
|
|
5105
|
+
{ configKey: "beforeSelectCallback", converter: z(), 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." },
|
|
5106
|
+
{ configKey: "beforeDeselectCallback", converter: z(), 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." },
|
|
5107
|
+
{ configKey: "addNewCallback", converter: z(), on: "update", type: "(value: string) => unknown | Promise<unknown>", description: "Create a new option from the typed text." },
|
|
5108
|
+
{ configKey: "keydownCallback", converter: z(), 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." }
|
|
5109
|
+
], Mr = [
|
|
4972
5110
|
{ name: "select", description: "An option was selected. `detail.option` is the selected option; `detail.selectedOptions`/`detail.selectedValues` are the full selection." },
|
|
4973
5111
|
{ name: "deselect", description: "An option was removed from the selection. `detail.option` is that option." },
|
|
4974
5112
|
{ name: "change", description: "The selection changed. `detail.selectedOptions`/`detail.selectedValues` are the full selection." }
|
|
4975
|
-
],
|
|
5113
|
+
], Ps = /* @__PURE__ */ new Set(["dropdownWidth", "selectedPopoverWidth", "showDebugInfo", "initialValues", "optionsSource", "optionsFormat", "optionsSplitter", "optionsRowSplitter", "mobilePresentation"]), at = {
|
|
4976
5114
|
dropdownWidth: "--ms-dropdown-width",
|
|
4977
5115
|
selectedPopoverWidth: "--ms-selected-popover-width"
|
|
4978
5116
|
};
|
|
4979
|
-
let
|
|
4980
|
-
function
|
|
4981
|
-
return
|
|
5117
|
+
let Lr = null;
|
|
5118
|
+
function Er() {
|
|
5119
|
+
return Lr ?? (Lr = Qo(Zs, "--ms-"));
|
|
4982
5120
|
}
|
|
4983
|
-
const
|
|
5121
|
+
const Ar = [
|
|
4984
5122
|
{ key: "valueMember", member: "value", callbackKey: "getValueCallback" },
|
|
4985
5123
|
{ key: "displayValueMember", member: "label", callbackKey: "getDisplayValueCallback" },
|
|
4986
5124
|
{ key: "groupMember", member: "group", callbackKey: "getGroupCallback" },
|
|
@@ -4988,13 +5126,13 @@ const Er = [
|
|
|
4988
5126
|
{ key: "subtitleMember", member: "subtitle", callbackKey: "getSubtitleCallback" },
|
|
4989
5127
|
{ key: "disabledMember", member: "disabled", callbackKey: "getDisabledCallback" }
|
|
4990
5128
|
];
|
|
4991
|
-
var J,
|
|
4992
|
-
class Ge extends
|
|
5129
|
+
var J, N, me, et, tt, st, ze, Ne, ke, _, ct, Kt, Ft, eo, to, so, dt, Wt, oo, io, ro, jt, no, ao, Ut, Gt;
|
|
5130
|
+
class Ge extends Nt {
|
|
4993
5131
|
constructor() {
|
|
4994
5132
|
super();
|
|
4995
5133
|
E(this, _);
|
|
4996
5134
|
E(this, J);
|
|
4997
|
-
E(this,
|
|
5135
|
+
E(this, N);
|
|
4998
5136
|
E(this, me);
|
|
4999
5137
|
E(this, et, null);
|
|
5000
5138
|
// Dev-mode customStylesCallback lint: unknown --ms-* names already warned about.
|
|
@@ -5002,9 +5140,9 @@ class Ge extends zt {
|
|
|
5002
5140
|
// Declarative <option>/<optgroup> state (parsed once from light DOM).
|
|
5003
5141
|
E(this, st, !1);
|
|
5004
5142
|
E(this, ze, !1);
|
|
5005
|
-
E(this,
|
|
5143
|
+
E(this, Ne);
|
|
5006
5144
|
E(this, ke);
|
|
5007
|
-
|
|
5145
|
+
V(this, J, this.attachShadow({ mode: "open" })), Yo(p(this, J), Zs), typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => this.setAttribute("data-ready", "")) : this.setAttribute("data-ready", "");
|
|
5008
5146
|
}
|
|
5009
5147
|
/**
|
|
5010
5148
|
* Called by the browser when the surrounding <form> is reset. Clears the
|
|
@@ -5012,7 +5150,7 @@ class Ge extends zt {
|
|
|
5012
5150
|
*/
|
|
5013
5151
|
formResetCallback() {
|
|
5014
5152
|
var t;
|
|
5015
|
-
(t = p(this,
|
|
5153
|
+
(t = p(this, N)) == null || t.clearAll();
|
|
5016
5154
|
}
|
|
5017
5155
|
// ── core lifecycle hooks ──────────────────────────────────────────────────
|
|
5018
5156
|
/** Runtime writing-direction switch (core observes `dir`): re-mirror the live
|
|
@@ -5021,28 +5159,28 @@ class Ge extends zt {
|
|
|
5021
5159
|
* and the panels' explicit `dir`). The initial direction is read by the build. */
|
|
5022
5160
|
directionChanged(t) {
|
|
5023
5161
|
var o;
|
|
5024
|
-
(o = p(this,
|
|
5162
|
+
(o = p(this, N)) == null || o.refreshDirection();
|
|
5025
5163
|
}
|
|
5026
5164
|
/** Structural change (or first connect): mirror CSS vars, then (re)build the picker. */
|
|
5027
5165
|
reinit() {
|
|
5028
|
-
x(this, _,
|
|
5166
|
+
x(this, _, io).call(this), this.isConnected && x(this, _, Kt).call(this);
|
|
5029
5167
|
}
|
|
5030
5168
|
/** Cosmetic change: mirror CSS vars / custom styles / debug, patch the picker in place. */
|
|
5031
5169
|
update(t) {
|
|
5032
|
-
x(this, _,
|
|
5170
|
+
x(this, _, ro).call(this, t), "customStylesCallback" in t && x(this, _, Wt).call(this), "showDebugInfo" in t && x(this, _, Ut).call(this);
|
|
5033
5171
|
const o = {};
|
|
5034
5172
|
for (const [i, r] of Object.entries(t))
|
|
5035
|
-
|
|
5036
|
-
p(this,
|
|
5173
|
+
Ps.has(i) || (o[i] = r === null ? void 0 : r);
|
|
5174
|
+
p(this, N) && Object.keys(o).length > 0 && (p(this, N).updateOptions(o) || x(this, _, Kt).call(this)), "mobilePresentation" in t && x(this, _, ct).call(this, zt());
|
|
5037
5175
|
}
|
|
5038
5176
|
/** Activate: ensure the picker exists (a DOM move destroyed it in disconnect()). */
|
|
5039
5177
|
connect() {
|
|
5040
|
-
p(this,
|
|
5178
|
+
p(this, N) || x(this, _, Ft).call(this);
|
|
5041
5179
|
}
|
|
5042
5180
|
/** Deactivate: tear the picker down (rebuilt on the next connect). */
|
|
5043
5181
|
disconnect() {
|
|
5044
5182
|
var t;
|
|
5045
|
-
(t = p(this,
|
|
5183
|
+
(t = p(this, N)) == null || t.destroy(), V(this, N, void 0);
|
|
5046
5184
|
}
|
|
5047
5185
|
/**
|
|
5048
5186
|
* Device/viewport/orientation changed (core §12.9). Overriding this opts the
|
|
@@ -5065,21 +5203,21 @@ class Ge extends zt {
|
|
|
5065
5203
|
}
|
|
5066
5204
|
get selectedValue() {
|
|
5067
5205
|
var t;
|
|
5068
|
-
return this.flush(), ((t = p(this,
|
|
5206
|
+
return this.flush(), ((t = p(this, N)) == null ? void 0 : t.selectedValue) ?? null;
|
|
5069
5207
|
}
|
|
5070
5208
|
get selectedItem() {
|
|
5071
5209
|
var t;
|
|
5072
|
-
return this.flush(), ((t = p(this,
|
|
5210
|
+
return this.flush(), ((t = p(this, N)) == null ? void 0 : t.selectedItem) ?? null;
|
|
5073
5211
|
}
|
|
5074
5212
|
getSelected() {
|
|
5075
|
-
return this.flush(), p(this,
|
|
5213
|
+
return this.flush(), p(this, N) ? p(this, N).getSelected() : [];
|
|
5076
5214
|
}
|
|
5077
5215
|
setSelected(t, o = {}) {
|
|
5078
5216
|
var i;
|
|
5079
|
-
this.flush(), (i = p(this,
|
|
5217
|
+
this.flush(), (i = p(this, N)) == null || i.setSelected(t, o);
|
|
5080
5218
|
}
|
|
5081
5219
|
getValue() {
|
|
5082
|
-
return this.flush(), p(this,
|
|
5220
|
+
return this.flush(), p(this, N) ? p(this, N).getValue() : null;
|
|
5083
5221
|
}
|
|
5084
5222
|
/**
|
|
5085
5223
|
* Surface a transient message ("toast") on top of the component — visible even in the
|
|
@@ -5090,52 +5228,52 @@ class Ge extends zt {
|
|
|
5090
5228
|
*/
|
|
5091
5229
|
showMessage(t, o) {
|
|
5092
5230
|
var i;
|
|
5093
|
-
this.flush(), (i = p(this,
|
|
5231
|
+
this.flush(), (i = p(this, N)) == null || i.showMessage(t, o);
|
|
5094
5232
|
}
|
|
5095
5233
|
/** Dismiss the transient message shown by {@link showMessage}, if any. */
|
|
5096
5234
|
hideMessage() {
|
|
5097
5235
|
var t;
|
|
5098
|
-
(t = p(this,
|
|
5236
|
+
(t = p(this, N)) == null || t.hideMessage();
|
|
5099
5237
|
}
|
|
5100
5238
|
destroy() {
|
|
5101
5239
|
var t;
|
|
5102
|
-
(t = p(this,
|
|
5240
|
+
(t = p(this, N)) == null || t.destroy();
|
|
5103
5241
|
}
|
|
5104
5242
|
}
|
|
5105
|
-
J = new WeakMap(),
|
|
5243
|
+
J = new WeakMap(), N = new WeakMap(), me = new WeakMap(), et = new WeakMap(), tt = new WeakMap(), st = new WeakMap(), ze = new WeakMap(), Ne = new WeakMap(), ke = new WeakMap(), _ = new WeakSet(), /** Resolve `mobile-presentation` against `env` and relay it to the live picker. */
|
|
5106
5244
|
ct = function(t) {
|
|
5107
5245
|
var r;
|
|
5108
|
-
const o = this.config.mobilePresentation ?? "auto", i =
|
|
5109
|
-
(r = p(this,
|
|
5246
|
+
const o = this.config.mobilePresentation ?? "auto", i = oi(o, t);
|
|
5247
|
+
(r = p(this, N)) == null || r.setPresentation(i === "modal" ? "fullscreen" : i);
|
|
5110
5248
|
}, // ── picker lifecycle ──────────────────────────────────────────────────────
|
|
5111
|
-
|
|
5249
|
+
Kt = function() {
|
|
5112
5250
|
var t;
|
|
5113
|
-
(t = p(this,
|
|
5114
|
-
},
|
|
5115
|
-
x(this, _,
|
|
5116
|
-
const t = x(this, _,
|
|
5117
|
-
o && o.length > 0 ? p(this, me).dataset.initialValues = JSON.stringify(o) : delete p(this, me).dataset.initialValues,
|
|
5118
|
-
},
|
|
5251
|
+
(t = p(this, N)) == null || t.destroy(), V(this, N, void 0), x(this, _, Ft).call(this);
|
|
5252
|
+
}, Ft = function() {
|
|
5253
|
+
x(this, _, eo).call(this), x(this, _, no).call(this);
|
|
5254
|
+
const t = x(this, _, to).call(this), o = x(this, _, so).call(this);
|
|
5255
|
+
o && o.length > 0 ? p(this, me).dataset.initialValues = JSON.stringify(o) : delete p(this, me).dataset.initialValues, V(this, N, new xr(p(this, me), t)), x(this, _, Wt).call(this), x(this, _, Ut).call(this), x(this, _, ct).call(this, zt());
|
|
5256
|
+
}, eo = function() {
|
|
5119
5257
|
if (p(this, me)) return;
|
|
5120
5258
|
const t = document.createElement("div");
|
|
5121
|
-
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), p(this, J).appendChild(t),
|
|
5259
|
+
t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), p(this, J).appendChild(t), V(this, et, Jo(p(this, J), { position: "first", className: "ms-custom-styles" })), V(this, me, t);
|
|
5122
5260
|
}, /**
|
|
5123
5261
|
* Build the picker config from the merged `this.config`, minus the keys the
|
|
5124
5262
|
* picker doesn't own, plus the runtime wiring (event bridges, container, host,
|
|
5125
5263
|
* declarative option data + member defaults, counter default).
|
|
5126
5264
|
*/
|
|
5127
|
-
|
|
5265
|
+
to = function() {
|
|
5128
5266
|
const t = { ...this.config };
|
|
5129
|
-
for (const i of
|
|
5267
|
+
for (const i of Ps) delete t[i];
|
|
5130
5268
|
for (const i of Object.keys(t))
|
|
5131
5269
|
t[i] === null && delete t[i];
|
|
5132
5270
|
let o = t.options;
|
|
5133
|
-
if (p(this, ze) && p(this,
|
|
5134
|
-
o && o.length > 0 && K.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = p(this,
|
|
5271
|
+
if (p(this, ze) && p(this, Ne))
|
|
5272
|
+
o && o.length > 0 && K.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = p(this, Ne);
|
|
5135
5273
|
else if (!o || o.length === 0) {
|
|
5136
5274
|
const i = this.config.optionsSource;
|
|
5137
5275
|
if (i != null) {
|
|
5138
|
-
const r = this.config.optionsFormat ?? "json", { options: n, error: a } =
|
|
5276
|
+
const r = this.config.optionsFormat ?? "json", { options: n, error: a } = Cr(i, r, {
|
|
5139
5277
|
splitter: this.config.optionsSplitter,
|
|
5140
5278
|
rowSplitter: this.config.optionsRowSplitter
|
|
5141
5279
|
});
|
|
@@ -5143,20 +5281,20 @@ eo = function() {
|
|
|
5143
5281
|
}
|
|
5144
5282
|
}
|
|
5145
5283
|
if (t.options = o, p(this, ze))
|
|
5146
|
-
for (const { key: i, member: r, callbackKey: n } of
|
|
5284
|
+
for (const { key: i, member: r, callbackKey: n } of Ar)
|
|
5147
5285
|
t[i] === void 0 && !t[n] && (t[i] = r);
|
|
5148
5286
|
return t.getCounterCallback || (t.getCounterCallback = (i, r) => r !== void 0 ? `+${r} more` : `${i} selected`), t.onSelect = (i) => {
|
|
5149
5287
|
var r;
|
|
5150
5288
|
this.emit("select", {
|
|
5151
5289
|
option: i,
|
|
5152
|
-
selectedOptions: ((r = p(this,
|
|
5290
|
+
selectedOptions: ((r = p(this, N)) == null ? void 0 : r.getSelected()) ?? [],
|
|
5153
5291
|
selectedValues: x(this, _, dt).call(this)
|
|
5154
5292
|
});
|
|
5155
5293
|
}, t.onDeselect = (i) => {
|
|
5156
5294
|
var r;
|
|
5157
5295
|
this.emit("deselect", {
|
|
5158
5296
|
option: i,
|
|
5159
|
-
selectedOptions: ((r = p(this,
|
|
5297
|
+
selectedOptions: ((r = p(this, N)) == null ? void 0 : r.getSelected()) ?? [],
|
|
5160
5298
|
selectedValues: x(this, _, dt).call(this)
|
|
5161
5299
|
});
|
|
5162
5300
|
}, t.onChange = (i) => {
|
|
@@ -5165,17 +5303,17 @@ eo = function() {
|
|
|
5165
5303
|
selectedValues: x(this, _, dt).call(this)
|
|
5166
5304
|
});
|
|
5167
5305
|
}, t.container = p(this, J), t.hostElement = this, t;
|
|
5168
|
-
},
|
|
5306
|
+
}, so = function() {
|
|
5169
5307
|
if (p(this, ke) && p(this, ke).length > 0)
|
|
5170
5308
|
return p(this, ke);
|
|
5171
5309
|
const t = this.config.initialValues;
|
|
5172
5310
|
return t && t.length > 0 ? t : void 0;
|
|
5173
5311
|
}, dt = function() {
|
|
5174
5312
|
var o;
|
|
5175
|
-
const t = (o = p(this,
|
|
5313
|
+
const t = (o = p(this, N)) == null ? void 0 : o.getValue();
|
|
5176
5314
|
return t == null ? [] : Array.isArray(t) ? t : [t];
|
|
5177
5315
|
}, // ── §12.8 custom styles ───────────────────────────────────────────────────
|
|
5178
|
-
|
|
5316
|
+
Wt = function() {
|
|
5179
5317
|
const t = p(this, et);
|
|
5180
5318
|
if (!t) return;
|
|
5181
5319
|
const o = this.config.customStylesCallback;
|
|
@@ -5185,7 +5323,7 @@ Ft = function() {
|
|
|
5185
5323
|
}
|
|
5186
5324
|
try {
|
|
5187
5325
|
const i = o();
|
|
5188
|
-
t.set(i), i && x(this, _,
|
|
5326
|
+
t.set(i), i && x(this, _, oo).call(this, i);
|
|
5189
5327
|
} catch (i) {
|
|
5190
5328
|
K.warn("[MultiSelectElement] customStylesCallback threw", i), t.clear();
|
|
5191
5329
|
}
|
|
@@ -5198,28 +5336,28 @@ Ft = function() {
|
|
|
5198
5336
|
* De-duped per instance. If you genuinely define a `--ms-*` var for your own
|
|
5199
5337
|
* custom-rendered content, ignore the warning (or use a different prefix).
|
|
5200
5338
|
*/
|
|
5201
|
-
|
|
5202
|
-
const o =
|
|
5339
|
+
oo = function(t) {
|
|
5340
|
+
const o = Er();
|
|
5203
5341
|
if (o.size !== 0)
|
|
5204
|
-
for (const { name: i, suggestions: r } of
|
|
5342
|
+
for (const { name: i, suggestions: r } of ti(t, { prefix: "--ms-", consumed: o }))
|
|
5205
5343
|
p(this, tt).has(i) || (p(this, tt).add(i), console.warn(
|
|
5206
5344
|
`[web-multiselect] customStylesCallback sets "${i}", which no web-multiselect style consumes — it will have no effect.` + (r.length ? ` Did you mean: ${r.join(", ")}?` : "") + " (If it's for your own custom-rendered content, ignore this.)"
|
|
5207
5345
|
));
|
|
5208
5346
|
}, // ── CSS-var sugar ─────────────────────────────────────────────────────────
|
|
5209
|
-
|
|
5210
|
-
for (const t of Object.keys(at)) x(this, _,
|
|
5211
|
-
},
|
|
5347
|
+
io = function() {
|
|
5348
|
+
for (const t of Object.keys(at)) x(this, _, jt).call(this, at[t], this.config[t]);
|
|
5349
|
+
}, ro = function(t) {
|
|
5212
5350
|
for (const o of Object.keys(at))
|
|
5213
|
-
o in t && x(this, _,
|
|
5214
|
-
},
|
|
5351
|
+
o in t && x(this, _, jt).call(this, at[o], t[o]);
|
|
5352
|
+
}, jt = function(t, o) {
|
|
5215
5353
|
o == null || o === "" ? this.style.removeProperty(t) : this.style.setProperty(t, String(o));
|
|
5216
5354
|
}, // ── declarative <option> parsing (light DOM, once) ────────────────────────
|
|
5217
|
-
|
|
5355
|
+
no = function() {
|
|
5218
5356
|
if (p(this, st)) return;
|
|
5219
|
-
|
|
5220
|
-
const t = x(this, _,
|
|
5221
|
-
t && (
|
|
5222
|
-
},
|
|
5357
|
+
V(this, st, !0);
|
|
5358
|
+
const t = x(this, _, ao).call(this);
|
|
5359
|
+
t && (V(this, Ne, t), V(this, ze, !0));
|
|
5360
|
+
}, ao = function() {
|
|
5223
5361
|
const t = Array.from(this.children);
|
|
5224
5362
|
if (t.length === 0) return null;
|
|
5225
5363
|
const o = [];
|
|
@@ -5230,7 +5368,7 @@ ro = function() {
|
|
|
5230
5368
|
value: n.value || ((c = n.textContent) == null ? void 0 : c.trim()) || "",
|
|
5231
5369
|
label: ((d = n.textContent) == null ? void 0 : d.trim()) || n.value || ""
|
|
5232
5370
|
};
|
|
5233
|
-
a && (l.group = a), n.hasAttribute("selected") && (p(this, ke) ??
|
|
5371
|
+
a && (l.group = a), n.hasAttribute("selected") && (p(this, ke) ?? V(this, ke, [])).push(l.value), n.hasAttribute("disabled") && (l.disabled = !0), n.hasAttribute("data-icon") && (l.icon = n.getAttribute("data-icon")), n.hasAttribute("data-subtitle") && (l.subtitle = n.getAttribute("data-subtitle")), o.push(l), i = !0;
|
|
5234
5372
|
};
|
|
5235
5373
|
for (const n of t)
|
|
5236
5374
|
if (n.tagName === "OPTION")
|
|
@@ -5246,7 +5384,7 @@ ro = function() {
|
|
|
5246
5384
|
(n.tagName === "OPTION" || n.tagName === "OPTGROUP") && n.remove();
|
|
5247
5385
|
return o;
|
|
5248
5386
|
}, // ── debug panel (deprecated; kept for back-compat) ────────────────────────
|
|
5249
|
-
|
|
5387
|
+
Ut = function() {
|
|
5250
5388
|
const t = p(this, J).querySelector(".ms__debug-info");
|
|
5251
5389
|
if (t && t.remove(), !this.config.showDebugInfo) return;
|
|
5252
5390
|
const o = document.createElement("div");
|
|
@@ -5254,12 +5392,12 @@ jt = function() {
|
|
|
5254
5392
|
const i = document.createElement("details"), r = document.createElement("summary");
|
|
5255
5393
|
r.textContent = "Debug Info";
|
|
5256
5394
|
const n = document.createElement("div");
|
|
5257
|
-
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), p(this, J).appendChild(o), x(this, _,
|
|
5258
|
-
},
|
|
5395
|
+
n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), p(this, J).appendChild(o), x(this, _, Gt).call(this);
|
|
5396
|
+
}, Gt = function() {
|
|
5259
5397
|
var l, c, d, h;
|
|
5260
5398
|
const t = p(this, J).querySelector(".ms__debug-stats");
|
|
5261
|
-
if (!t || !p(this,
|
|
5262
|
-
const o = "2.0.0-
|
|
5399
|
+
if (!t || !p(this, N)) return;
|
|
5400
|
+
const o = "2.0.0-rc08", i = typeof window < "u" && ((c = (l = window.components) == null ? void 0 : l["web-multiselect"]) == null ? void 0 : c.getInstances().length) || 0, r = p(this, N).getSelected().length, n = ((d = this.config.options) == null ? void 0 : d.length) || 0, a = p(this, N);
|
|
5263
5401
|
t.innerHTML = `
|
|
5264
5402
|
<span>Version: ${o}</span>
|
|
5265
5403
|
<span>Total Instances: ${i}</span>
|
|
@@ -5270,16 +5408,16 @@ jt = function() {
|
|
|
5270
5408
|
<span>Search: ${a.searchTerm || "none"}</span>
|
|
5271
5409
|
<span>Loading: ${a.isLoading ? "Yes" : "No"}</span>
|
|
5272
5410
|
`, setTimeout(() => {
|
|
5273
|
-
this.config.showDebugInfo && x(this, _,
|
|
5411
|
+
this.config.showDebugInfo && x(this, _, Gt).call(this);
|
|
5274
5412
|
}, 500);
|
|
5275
5413
|
}, // Opt into the form-associated custom element lifecycle so form.reset() and
|
|
5276
5414
|
// form.elements see the control.
|
|
5277
|
-
|
|
5415
|
+
u(Ge, "formAssociated", !0), u(Ge, "inputs", Pr), u(Ge, "events", Mr);
|
|
5278
5416
|
typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect", Ge);
|
|
5279
|
-
|
|
5417
|
+
Xo("web-multiselect", Ge, {
|
|
5280
5418
|
config: {
|
|
5281
5419
|
name: "@keenmate/web-multiselect",
|
|
5282
|
-
version: "2.0.0-
|
|
5420
|
+
version: "2.0.0-rc08",
|
|
5283
5421
|
author: "Keenmate",
|
|
5284
5422
|
license: "MIT",
|
|
5285
5423
|
repository: "git+https://github.com/keenmate/web-multiselect.git",
|
|
@@ -5288,17 +5426,17 @@ Go("web-multiselect", Ge, {
|
|
|
5288
5426
|
logging: ae
|
|
5289
5427
|
});
|
|
5290
5428
|
export {
|
|
5291
|
-
|
|
5429
|
+
Nr as LOGGING_CATEGORIES,
|
|
5292
5430
|
Ge as MultiSelectElement,
|
|
5293
|
-
|
|
5294
|
-
|
|
5431
|
+
kr as OPTIONS_FORMATS,
|
|
5432
|
+
xr as WebMultiSelect,
|
|
5295
5433
|
K as dataLogger,
|
|
5296
|
-
|
|
5297
|
-
|
|
5434
|
+
Dr as disableLogging,
|
|
5435
|
+
Vr as enableLogging,
|
|
5298
5436
|
nt as initLogger,
|
|
5299
5437
|
W as interactionLogger,
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5438
|
+
Cr as parseOptionsData,
|
|
5439
|
+
Rr as setCategoryLevel,
|
|
5440
|
+
$r as setLogLevel,
|
|
5303
5441
|
Q as uiLogger
|
|
5304
5442
|
};
|