@keenmate/web-multiselect 1.0.0-rc10 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
- var ct = Object.defineProperty;
2
- var dt = (i, e, t) => e in i ? ct(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
- var u = (i, e, t) => dt(i, typeof e != "symbol" ? e + "" : e, t);
4
- const ae = Math.min, B = Math.max, ce = Math.round, le = Math.floor, M = (i) => ({
1
+ var at = Object.defineProperty;
2
+ var ct = (i, e, t) => e in i ? at(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
+ var m = (i, e, t) => ct(i, typeof e != "symbol" ? e + "" : e, t);
4
+ const ce = Math.min, F = Math.max, de = Math.round, le = Math.floor, $ = (i) => ({
5
5
  x: i,
6
6
  y: i
7
- }), pt = {
7
+ }), dt = {
8
8
  left: "right",
9
9
  right: "left",
10
10
  bottom: "top",
@@ -13,50 +13,50 @@ const ae = Math.min, B = Math.max, ce = Math.round, le = Math.floor, M = (i) =>
13
13
  start: "end",
14
14
  end: "start"
15
15
  };
16
- function Ee(i, e, t) {
17
- return B(i, ae(e, t));
16
+ function $e(i, e, t) {
17
+ return F(i, ce(e, t));
18
18
  }
19
19
  function me(i, e) {
20
20
  return typeof i == "function" ? i(e) : i;
21
21
  }
22
- function W(i) {
22
+ function H(i) {
23
23
  return i.split("-")[0];
24
24
  }
25
25
  function ue(i) {
26
26
  return i.split("-")[1];
27
27
  }
28
- function je(i) {
28
+ function He(i) {
29
29
  return i === "x" ? "y" : "x";
30
30
  }
31
- function Ge(i) {
31
+ function Ue(i) {
32
32
  return i === "y" ? "height" : "width";
33
33
  }
34
- const mt = /* @__PURE__ */ new Set(["top", "bottom"]);
35
- function z(i) {
36
- return mt.has(W(i)) ? "y" : "x";
34
+ const pt = /* @__PURE__ */ new Set(["top", "bottom"]);
35
+ function B(i) {
36
+ return pt.has(H(i)) ? "y" : "x";
37
37
  }
38
- function Ue(i) {
39
- return je(z(i));
38
+ function Ge(i) {
39
+ return He(B(i));
40
40
  }
41
- function ut(i, e, t) {
41
+ function mt(i, e, t) {
42
42
  t === void 0 && (t = !1);
43
- const l = ue(i), o = Ue(i), s = Ge(o);
44
- let n = o === "x" ? l === (t ? "end" : "start") ? "right" : "left" : l === "start" ? "bottom" : "top";
45
- return e.reference[s] > e.floating[s] && (n = de(n)), [n, de(n)];
43
+ const o = ue(i), s = Ge(i), n = Ue(s);
44
+ let l = s === "x" ? o === (t ? "end" : "start") ? "right" : "left" : o === "start" ? "bottom" : "top";
45
+ return e.reference[n] > e.floating[n] && (l = he(l)), [l, he(l)];
46
46
  }
47
- function ft(i) {
48
- const e = de(i);
49
- return [Ce(i), e, Ce(e)];
47
+ function ut(i) {
48
+ const e = he(i);
49
+ return [ye(i), e, ye(e)];
50
50
  }
51
- function Ce(i) {
51
+ function ye(i) {
52
52
  return i.replace(/start|end/g, (e) => ht[e]);
53
53
  }
54
- const $e = ["left", "right"], ze = ["right", "left"], gt = ["top", "bottom"], bt = ["bottom", "top"];
55
- function vt(i, e, t) {
54
+ const Ve = ["left", "right"], Me = ["right", "left"], gt = ["top", "bottom"], bt = ["bottom", "top"];
55
+ function ft(i, e, t) {
56
56
  switch (i) {
57
57
  case "top":
58
58
  case "bottom":
59
- return t ? e ? ze : $e : e ? $e : ze;
59
+ return t ? e ? Me : Ve : e ? Ve : Me;
60
60
  case "left":
61
61
  case "right":
62
62
  return e ? gt : bt;
@@ -64,15 +64,15 @@ function vt(i, e, t) {
64
64
  return [];
65
65
  }
66
66
  }
67
- function wt(i, e, t, l) {
68
- const o = ue(i);
69
- let s = vt(W(i), t === "start", l);
70
- return o && (s = s.map((n) => n + "-" + o), e && (s = s.concat(s.map(Ce)))), s;
67
+ function vt(i, e, t, o) {
68
+ const s = ue(i);
69
+ let n = ft(H(i), t === "start", o);
70
+ return s && (n = n.map((l) => l + "-" + s), e && (n = n.concat(n.map(ye)))), n;
71
71
  }
72
- function de(i) {
73
- return i.replace(/left|right|bottom|top/g, (e) => pt[e]);
72
+ function he(i) {
73
+ return i.replace(/left|right|bottom|top/g, (e) => dt[e]);
74
74
  }
75
- function _t(i) {
75
+ function wt(i) {
76
76
  return {
77
77
  top: 0,
78
78
  right: 0,
@@ -81,8 +81,8 @@ function _t(i) {
81
81
  ...i
82
82
  };
83
83
  }
84
- function yt(i) {
85
- return typeof i != "number" ? _t(i) : {
84
+ function Ct(i) {
85
+ return typeof i != "number" ? wt(i) : {
86
86
  top: i,
87
87
  right: i,
88
88
  bottom: i,
@@ -93,404 +93,404 @@ function pe(i) {
93
93
  const {
94
94
  x: e,
95
95
  y: t,
96
- width: l,
97
- height: o
96
+ width: o,
97
+ height: s
98
98
  } = i;
99
99
  return {
100
- width: l,
101
- height: o,
100
+ width: o,
101
+ height: s,
102
102
  top: t,
103
103
  left: e,
104
- right: e + l,
105
- bottom: t + o,
104
+ right: e + o,
105
+ bottom: t + s,
106
106
  x: e,
107
107
  y: t
108
108
  };
109
109
  }
110
- function De(i, e, t) {
110
+ function Pe(i, e, t) {
111
111
  let {
112
- reference: l,
113
- floating: o
112
+ reference: o,
113
+ floating: s
114
114
  } = i;
115
- const s = z(e), n = Ue(e), r = Ge(n), a = W(e), d = s === "y", c = l.x + l.width / 2 - o.width / 2, m = l.y + l.height / 2 - o.height / 2, p = l[r] / 2 - o[r] / 2;
115
+ const n = B(e), l = Ge(e), r = Ue(l), a = H(e), d = n === "y", c = o.x + o.width / 2 - s.width / 2, p = o.y + o.height / 2 - s.height / 2, u = o[r] / 2 - s[r] / 2;
116
116
  let h;
117
117
  switch (a) {
118
118
  case "top":
119
119
  h = {
120
120
  x: c,
121
- y: l.y - o.height
121
+ y: o.y - s.height
122
122
  };
123
123
  break;
124
124
  case "bottom":
125
125
  h = {
126
126
  x: c,
127
- y: l.y + l.height
127
+ y: o.y + o.height
128
128
  };
129
129
  break;
130
130
  case "right":
131
131
  h = {
132
- x: l.x + l.width,
133
- y: m
132
+ x: o.x + o.width,
133
+ y: p
134
134
  };
135
135
  break;
136
136
  case "left":
137
137
  h = {
138
- x: l.x - o.width,
139
- y: m
138
+ x: o.x - s.width,
139
+ y: p
140
140
  };
141
141
  break;
142
142
  default:
143
143
  h = {
144
- x: l.x,
145
- y: l.y
144
+ x: o.x,
145
+ y: o.y
146
146
  };
147
147
  }
148
148
  switch (ue(e)) {
149
149
  case "start":
150
- h[n] -= p * (t && d ? -1 : 1);
150
+ h[l] -= u * (t && d ? -1 : 1);
151
151
  break;
152
152
  case "end":
153
- h[n] += p * (t && d ? -1 : 1);
153
+ h[l] += u * (t && d ? -1 : 1);
154
154
  break;
155
155
  }
156
156
  return h;
157
157
  }
158
- const xt = async (i, e, t) => {
158
+ const _t = async (i, e, t) => {
159
159
  const {
160
- placement: l = "bottom",
161
- strategy: o = "absolute",
162
- middleware: s = [],
163
- platform: n
164
- } = t, r = s.filter(Boolean), a = await (n.isRTL == null ? void 0 : n.isRTL(e));
165
- let d = await n.getElementRects({
160
+ placement: o = "bottom",
161
+ strategy: s = "absolute",
162
+ middleware: n = [],
163
+ platform: l
164
+ } = t, r = n.filter(Boolean), a = await (l.isRTL == null ? void 0 : l.isRTL(e));
165
+ let d = await l.getElementRects({
166
166
  reference: i,
167
167
  floating: e,
168
- strategy: o
168
+ strategy: s
169
169
  }), {
170
170
  x: c,
171
- y: m
172
- } = De(d, l, a), p = l, h = {}, f = 0;
173
- for (let w = 0; w < r.length; w++) {
171
+ y: p
172
+ } = Pe(d, o, a), u = o, h = {}, g = 0;
173
+ for (let b = 0; b < r.length; b++) {
174
174
  const {
175
- name: g,
176
- fn: b
177
- } = r[w], {
178
- x: _,
179
- y: x,
180
- data: A,
181
- reset: S
182
- } = await b({
175
+ name: v,
176
+ fn: w
177
+ } = r[b], {
178
+ x: C,
179
+ y,
180
+ data: k,
181
+ reset: x
182
+ } = await w({
183
183
  x: c,
184
- y: m,
185
- initialPlacement: l,
186
- placement: p,
187
- strategy: o,
184
+ y: p,
185
+ initialPlacement: o,
186
+ placement: u,
187
+ strategy: s,
188
188
  middlewareData: h,
189
189
  rects: d,
190
- platform: n,
190
+ platform: l,
191
191
  elements: {
192
192
  reference: i,
193
193
  floating: e
194
194
  }
195
195
  });
196
- c = _ ?? c, m = x ?? m, h = {
196
+ c = C ?? c, p = y ?? p, h = {
197
197
  ...h,
198
- [g]: {
199
- ...h[g],
200
- ...A
198
+ [v]: {
199
+ ...h[v],
200
+ ...k
201
201
  }
202
- }, S && f <= 50 && (f++, typeof S == "object" && (S.placement && (p = S.placement), S.rects && (d = S.rects === !0 ? await n.getElementRects({
202
+ }, x && g <= 50 && (g++, typeof x == "object" && (x.placement && (u = x.placement), x.rects && (d = x.rects === !0 ? await l.getElementRects({
203
203
  reference: i,
204
204
  floating: e,
205
- strategy: o
206
- }) : S.rects), {
205
+ strategy: s
206
+ }) : x.rects), {
207
207
  x: c,
208
- y: m
209
- } = De(d, p, a)), w = -1);
208
+ y: p
209
+ } = Pe(d, u, a)), b = -1);
210
210
  }
211
211
  return {
212
212
  x: c,
213
- y: m,
214
- placement: p,
215
- strategy: o,
213
+ y: p,
214
+ placement: u,
215
+ strategy: s,
216
216
  middlewareData: h
217
217
  };
218
218
  };
219
- async function Ke(i, e) {
219
+ async function We(i, e) {
220
220
  var t;
221
221
  e === void 0 && (e = {});
222
222
  const {
223
- x: l,
224
- y: o,
225
- platform: s,
226
- rects: n,
223
+ x: o,
224
+ y: s,
225
+ platform: n,
226
+ rects: l,
227
227
  elements: r,
228
228
  strategy: a
229
229
  } = i, {
230
230
  boundary: d = "clippingAncestors",
231
231
  rootBoundary: c = "viewport",
232
- elementContext: m = "floating",
233
- altBoundary: p = !1,
232
+ elementContext: p = "floating",
233
+ altBoundary: u = !1,
234
234
  padding: h = 0
235
- } = me(e, i), f = yt(h), g = r[p ? m === "floating" ? "reference" : "floating" : m], b = pe(await s.getClippingRect({
236
- element: (t = await (s.isElement == null ? void 0 : s.isElement(g))) == null || t ? g : g.contextElement || await (s.getDocumentElement == null ? void 0 : s.getDocumentElement(r.floating)),
235
+ } = me(e, i), g = Ct(h), v = r[u ? p === "floating" ? "reference" : "floating" : p], w = pe(await n.getClippingRect({
236
+ element: (t = await (n.isElement == null ? void 0 : n.isElement(v))) == null || t ? v : v.contextElement || await (n.getDocumentElement == null ? void 0 : n.getDocumentElement(r.floating)),
237
237
  boundary: d,
238
238
  rootBoundary: c,
239
239
  strategy: a
240
- })), _ = m === "floating" ? {
241
- x: l,
242
- y: o,
243
- width: n.floating.width,
244
- height: n.floating.height
245
- } : n.reference, x = await (s.getOffsetParent == null ? void 0 : s.getOffsetParent(r.floating)), A = await (s.isElement == null ? void 0 : s.isElement(x)) ? await (s.getScale == null ? void 0 : s.getScale(x)) || {
240
+ })), C = p === "floating" ? {
241
+ x: o,
242
+ y: s,
243
+ width: l.floating.width,
244
+ height: l.floating.height
245
+ } : l.reference, y = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(r.floating)), k = await (n.isElement == null ? void 0 : n.isElement(y)) ? await (n.getScale == null ? void 0 : n.getScale(y)) || {
246
246
  x: 1,
247
247
  y: 1
248
248
  } : {
249
249
  x: 1,
250
250
  y: 1
251
- }, S = pe(s.convertOffsetParentRelativeRectToViewportRelativeRect ? await s.convertOffsetParentRelativeRectToViewportRelativeRect({
251
+ }, x = pe(n.convertOffsetParentRelativeRectToViewportRelativeRect ? await n.convertOffsetParentRelativeRectToViewportRelativeRect({
252
252
  elements: r,
253
- rect: _,
254
- offsetParent: x,
253
+ rect: C,
254
+ offsetParent: y,
255
255
  strategy: a
256
- }) : _);
256
+ }) : C);
257
257
  return {
258
- top: (b.top - S.top + f.top) / A.y,
259
- bottom: (S.bottom - b.bottom + f.bottom) / A.y,
260
- left: (b.left - S.left + f.left) / A.x,
261
- right: (S.right - b.right + f.right) / A.x
258
+ top: (w.top - x.top + g.top) / k.y,
259
+ bottom: (x.bottom - w.bottom + g.bottom) / k.y,
260
+ left: (w.left - x.left + g.left) / k.x,
261
+ right: (x.right - w.right + g.right) / k.x
262
262
  };
263
263
  }
264
- const Ct = function(i) {
264
+ const yt = function(i) {
265
265
  return i === void 0 && (i = {}), {
266
266
  name: "flip",
267
267
  options: i,
268
268
  async fn(e) {
269
- var t, l;
269
+ var t, o;
270
270
  const {
271
- placement: o,
272
- middlewareData: s,
273
- rects: n,
271
+ placement: s,
272
+ middlewareData: n,
273
+ rects: l,
274
274
  initialPlacement: r,
275
275
  platform: a,
276
276
  elements: d
277
277
  } = e, {
278
278
  mainAxis: c = !0,
279
- crossAxis: m = !0,
280
- fallbackPlacements: p,
279
+ crossAxis: p = !0,
280
+ fallbackPlacements: u,
281
281
  fallbackStrategy: h = "bestFit",
282
- fallbackAxisSideDirection: f = "none",
283
- flipAlignment: w = !0,
284
- ...g
282
+ fallbackAxisSideDirection: g = "none",
283
+ flipAlignment: b = !0,
284
+ ...v
285
285
  } = me(i, e);
286
- if ((t = s.arrow) != null && t.alignmentOffset)
286
+ if ((t = n.arrow) != null && t.alignmentOffset)
287
287
  return {};
288
- const b = W(o), _ = z(r), x = W(r) === r, A = await (a.isRTL == null ? void 0 : a.isRTL(d.floating)), S = p || (x || !w ? [de(r)] : ft(r)), J = f !== "none";
289
- !p && J && S.push(...wt(r, w, f, A));
290
- const G = [r, ...S], we = await Ke(e, g), ie = [];
291
- let U = ((l = s.flip) == null ? void 0 : l.overflows) || [];
292
- if (c && ie.push(we[b]), m) {
293
- const R = ut(o, n, A);
294
- ie.push(we[R[0]], we[R[1]]);
288
+ const w = H(s), C = B(r), y = H(r) === r, k = await (a.isRTL == null ? void 0 : a.isRTL(d.floating)), x = u || (y || !b ? [he(r)] : ut(r)), X = g !== "none";
289
+ !u && X && x.push(...vt(r, b, g, k));
290
+ const G = [r, ...x], we = await We(e, v), ne = [];
291
+ let W = ((o = n.flip) == null ? void 0 : o.overflows) || [];
292
+ if (c && ne.push(we[w]), p) {
293
+ const z = mt(s, l, k);
294
+ ne.push(we[z[0]], we[z[1]]);
295
295
  }
296
- if (U = [...U, {
297
- placement: o,
298
- overflows: ie
299
- }], !ie.every((R) => R <= 0)) {
300
- var Le, Me;
301
- const R = (((Le = s.flip) == null ? void 0 : Le.index) || 0) + 1, _e = G[R];
302
- if (_e && (!(m === "alignment" ? _ !== z(_e) : !1) || // We leave the current main axis only if every placement on that axis
296
+ if (W = [...W, {
297
+ placement: s,
298
+ overflows: ne
299
+ }], !ne.every((z) => z <= 0)) {
300
+ var Oe, Le;
301
+ const z = (((Oe = n.flip) == null ? void 0 : Oe.index) || 0) + 1, Ce = G[z];
302
+ if (Ce && (!(p === "alignment" ? C !== B(Ce) : !1) || // We leave the current main axis only if every placement on that axis
303
303
  // overflows the main axis.
304
- U.every((I) => z(I.placement) === _ ? I.overflows[0] > 0 : !0)))
304
+ W.every((T) => B(T.placement) === C ? T.overflows[0] > 0 : !0)))
305
305
  return {
306
306
  data: {
307
- index: R,
308
- overflows: U
307
+ index: z,
308
+ overflows: W
309
309
  },
310
310
  reset: {
311
- placement: _e
311
+ placement: Ce
312
312
  }
313
313
  };
314
- let X = (Me = U.filter((F) => F.overflows[0] <= 0).sort((F, I) => F.overflows[1] - I.overflows[1])[0]) == null ? void 0 : Me.placement;
315
- if (!X)
314
+ let J = (Le = W.filter((R) => R.overflows[0] <= 0).sort((R, T) => R.overflows[1] - T.overflows[1])[0]) == null ? void 0 : Le.placement;
315
+ if (!J)
316
316
  switch (h) {
317
317
  case "bestFit": {
318
- var Ve;
319
- const F = (Ve = U.filter((I) => {
320
- if (J) {
321
- const $ = z(I.placement);
322
- return $ === _ || // Create a bias to the `y` side axis due to horizontal
318
+ var Ee;
319
+ const R = (Ee = W.filter((T) => {
320
+ if (X) {
321
+ const P = B(T.placement);
322
+ return P === C || // Create a bias to the `y` side axis due to horizontal
323
323
  // reading directions favoring greater width.
324
- $ === "y";
324
+ P === "y";
325
325
  }
326
326
  return !0;
327
- }).map((I) => [I.placement, I.overflows.filter(($) => $ > 0).reduce(($, at) => $ + at, 0)]).sort((I, $) => I[1] - $[1])[0]) == null ? void 0 : Ve[0];
328
- F && (X = F);
327
+ }).map((T) => [T.placement, T.overflows.filter((P) => P > 0).reduce((P, rt) => P + rt, 0)]).sort((T, P) => T[1] - P[1])[0]) == null ? void 0 : Ee[0];
328
+ R && (J = R);
329
329
  break;
330
330
  }
331
331
  case "initialPlacement":
332
- X = r;
332
+ J = r;
333
333
  break;
334
334
  }
335
- if (o !== X)
335
+ if (s !== J)
336
336
  return {
337
337
  reset: {
338
- placement: X
338
+ placement: J
339
339
  }
340
340
  };
341
341
  }
342
342
  return {};
343
343
  }
344
344
  };
345
- }, kt = /* @__PURE__ */ new Set(["left", "top"]);
346
- async function St(i, e) {
345
+ }, xt = /* @__PURE__ */ new Set(["left", "top"]);
346
+ async function kt(i, e) {
347
347
  const {
348
348
  placement: t,
349
- platform: l,
350
- elements: o
351
- } = i, s = await (l.isRTL == null ? void 0 : l.isRTL(o.floating)), n = W(t), r = ue(t), a = z(t) === "y", d = kt.has(n) ? -1 : 1, c = s && a ? -1 : 1, m = me(e, i);
349
+ platform: o,
350
+ elements: s
351
+ } = i, n = await (o.isRTL == null ? void 0 : o.isRTL(s.floating)), l = H(t), r = ue(t), a = B(t) === "y", d = xt.has(l) ? -1 : 1, c = n && a ? -1 : 1, p = me(e, i);
352
352
  let {
353
- mainAxis: p,
353
+ mainAxis: u,
354
354
  crossAxis: h,
355
- alignmentAxis: f
356
- } = typeof m == "number" ? {
357
- mainAxis: m,
355
+ alignmentAxis: g
356
+ } = typeof p == "number" ? {
357
+ mainAxis: p,
358
358
  crossAxis: 0,
359
359
  alignmentAxis: null
360
360
  } : {
361
- mainAxis: m.mainAxis || 0,
362
- crossAxis: m.crossAxis || 0,
363
- alignmentAxis: m.alignmentAxis
361
+ mainAxis: p.mainAxis || 0,
362
+ crossAxis: p.crossAxis || 0,
363
+ alignmentAxis: p.alignmentAxis
364
364
  };
365
- return r && typeof f == "number" && (h = r === "end" ? f * -1 : f), a ? {
365
+ return r && typeof g == "number" && (h = r === "end" ? g * -1 : g), a ? {
366
366
  x: h * c,
367
- y: p * d
367
+ y: u * d
368
368
  } : {
369
- x: p * d,
369
+ x: u * d,
370
370
  y: h * c
371
371
  };
372
372
  }
373
- const At = function(i) {
373
+ const St = function(i) {
374
374
  return i === void 0 && (i = 0), {
375
375
  name: "offset",
376
376
  options: i,
377
377
  async fn(e) {
378
- var t, l;
378
+ var t, o;
379
379
  const {
380
- x: o,
381
- y: s,
382
- placement: n,
380
+ x: s,
381
+ y: n,
382
+ placement: l,
383
383
  middlewareData: r
384
- } = e, a = await St(e, i);
385
- return n === ((t = r.offset) == null ? void 0 : t.placement) && (l = r.arrow) != null && l.alignmentOffset ? {} : {
386
- x: o + a.x,
387
- y: s + a.y,
384
+ } = e, a = await kt(e, i);
385
+ return l === ((t = r.offset) == null ? void 0 : t.placement) && (o = r.arrow) != null && o.alignmentOffset ? {} : {
386
+ x: s + a.x,
387
+ y: n + a.y,
388
388
  data: {
389
389
  ...a,
390
- placement: n
390
+ placement: l
391
391
  }
392
392
  };
393
393
  }
394
394
  };
395
- }, Pt = function(i) {
395
+ }, It = function(i) {
396
396
  return i === void 0 && (i = {}), {
397
397
  name: "shift",
398
398
  options: i,
399
399
  async fn(e) {
400
400
  const {
401
401
  x: t,
402
- y: l,
403
- placement: o
402
+ y: o,
403
+ placement: s
404
404
  } = e, {
405
- mainAxis: s = !0,
406
- crossAxis: n = !1,
405
+ mainAxis: n = !0,
406
+ crossAxis: l = !1,
407
407
  limiter: r = {
408
- fn: (g) => {
408
+ fn: (v) => {
409
409
  let {
410
- x: b,
411
- y: _
412
- } = g;
410
+ x: w,
411
+ y: C
412
+ } = v;
413
413
  return {
414
- x: b,
415
- y: _
414
+ x: w,
415
+ y: C
416
416
  };
417
417
  }
418
418
  },
419
419
  ...a
420
420
  } = me(i, e), d = {
421
421
  x: t,
422
- y: l
423
- }, c = await Ke(e, a), m = z(W(o)), p = je(m);
424
- let h = d[p], f = d[m];
425
- if (s) {
426
- const g = p === "y" ? "top" : "left", b = p === "y" ? "bottom" : "right", _ = h + c[g], x = h - c[b];
427
- h = Ee(_, h, x);
428
- }
422
+ y: o
423
+ }, c = await We(e, a), p = B(H(s)), u = He(p);
424
+ let h = d[u], g = d[p];
429
425
  if (n) {
430
- const g = m === "y" ? "top" : "left", b = m === "y" ? "bottom" : "right", _ = f + c[g], x = f - c[b];
431
- f = Ee(_, f, x);
426
+ const v = u === "y" ? "top" : "left", w = u === "y" ? "bottom" : "right", C = h + c[v], y = h - c[w];
427
+ h = $e(C, h, y);
428
+ }
429
+ if (l) {
430
+ const v = p === "y" ? "top" : "left", w = p === "y" ? "bottom" : "right", C = g + c[v], y = g - c[w];
431
+ g = $e(C, g, y);
432
432
  }
433
- const w = r.fn({
433
+ const b = r.fn({
434
434
  ...e,
435
- [p]: h,
436
- [m]: f
435
+ [u]: h,
436
+ [p]: g
437
437
  });
438
438
  return {
439
- ...w,
439
+ ...b,
440
440
  data: {
441
- x: w.x - t,
442
- y: w.y - l,
441
+ x: b.x - t,
442
+ y: b.y - o,
443
443
  enabled: {
444
- [p]: s,
445
- [m]: n
444
+ [u]: n,
445
+ [p]: l
446
446
  }
447
447
  }
448
448
  };
449
449
  }
450
450
  };
451
451
  };
452
- function fe() {
452
+ function ge() {
453
453
  return typeof window < "u";
454
454
  }
455
- function q(i) {
456
- return Ye(i) ? (i.nodeName || "").toLowerCase() : "#document";
455
+ function Y(i) {
456
+ return je(i) ? (i.nodeName || "").toLowerCase() : "#document";
457
457
  }
458
- function P(i) {
458
+ function A(i) {
459
459
  var e;
460
460
  return (i == null || (e = i.ownerDocument) == null ? void 0 : e.defaultView) || window;
461
461
  }
462
- function E(i) {
462
+ function M(i) {
463
463
  var e;
464
- return (e = (Ye(i) ? i.ownerDocument : i.document) || window.document) == null ? void 0 : e.documentElement;
464
+ return (e = (je(i) ? i.ownerDocument : i.document) || window.document) == null ? void 0 : e.documentElement;
465
465
  }
466
- function Ye(i) {
467
- return fe() ? i instanceof Node || i instanceof P(i).Node : !1;
466
+ function je(i) {
467
+ return ge() ? i instanceof Node || i instanceof A(i).Node : !1;
468
468
  }
469
- function T(i) {
470
- return fe() ? i instanceof Element || i instanceof P(i).Element : !1;
469
+ function L(i) {
470
+ return ge() ? i instanceof Element || i instanceof A(i).Element : !1;
471
471
  }
472
472
  function V(i) {
473
- return fe() ? i instanceof HTMLElement || i instanceof P(i).HTMLElement : !1;
473
+ return ge() ? i instanceof HTMLElement || i instanceof A(i).HTMLElement : !1;
474
474
  }
475
- function Re(i) {
476
- return !fe() || typeof ShadowRoot > "u" ? !1 : i instanceof ShadowRoot || i instanceof P(i).ShadowRoot;
475
+ function Be(i) {
476
+ return !ge() || typeof ShadowRoot > "u" ? !1 : i instanceof ShadowRoot || i instanceof A(i).ShadowRoot;
477
477
  }
478
- const It = /* @__PURE__ */ new Set(["inline", "contents"]);
479
- function te(i) {
478
+ const At = /* @__PURE__ */ new Set(["inline", "contents"]);
479
+ function se(i) {
480
480
  const {
481
481
  overflow: e,
482
482
  overflowX: t,
483
- overflowY: l,
484
- display: o
485
- } = L(i);
486
- return /auto|scroll|overlay|hidden|clip/.test(e + l + t) && !It.has(o);
483
+ overflowY: o,
484
+ display: s
485
+ } = E(i);
486
+ return /auto|scroll|overlay|hidden|clip/.test(e + o + t) && !At.has(s);
487
487
  }
488
- const Ot = /* @__PURE__ */ new Set(["table", "td", "th"]);
489
- function Tt(i) {
490
- return Ot.has(q(i));
488
+ const Tt = /* @__PURE__ */ new Set(["table", "td", "th"]);
489
+ function Ot(i) {
490
+ return Tt.has(Y(i));
491
491
  }
492
492
  const Lt = [":popover-open", ":modal"];
493
- function ge(i) {
493
+ function be(i) {
494
494
  return Lt.some((e) => {
495
495
  try {
496
496
  return i.matches(e);
@@ -499,34 +499,34 @@ function ge(i) {
499
499
  }
500
500
  });
501
501
  }
502
- const Mt = ["transform", "translate", "scale", "rotate", "perspective"], Vt = ["transform", "translate", "scale", "rotate", "perspective", "filter"], Et = ["paint", "layout", "strict", "content"];
503
- function Pe(i) {
504
- const e = Ie(), t = T(i) ? L(i) : i;
505
- return Mt.some((l) => t[l] ? t[l] !== "none" : !1) || (t.containerType ? t.containerType !== "normal" : !1) || !e && (t.backdropFilter ? t.backdropFilter !== "none" : !1) || !e && (t.filter ? t.filter !== "none" : !1) || Vt.some((l) => (t.willChange || "").includes(l)) || Et.some((l) => (t.contain || "").includes(l));
502
+ const Et = ["transform", "translate", "scale", "rotate", "perspective"], $t = ["transform", "translate", "scale", "rotate", "perspective", "filter"], Vt = ["paint", "layout", "strict", "content"];
503
+ function Ie(i) {
504
+ const e = Ae(), t = L(i) ? E(i) : i;
505
+ return Et.some((o) => t[o] ? t[o] !== "none" : !1) || (t.containerType ? t.containerType !== "normal" : !1) || !e && (t.backdropFilter ? t.backdropFilter !== "none" : !1) || !e && (t.filter ? t.filter !== "none" : !1) || $t.some((o) => (t.willChange || "").includes(o)) || Vt.some((o) => (t.contain || "").includes(o));
506
506
  }
507
- function $t(i) {
507
+ function Mt(i) {
508
508
  let e = D(i);
509
- for (; V(e) && !Y(e); ) {
510
- if (Pe(e))
509
+ for (; V(e) && !K(e); ) {
510
+ if (Ie(e))
511
511
  return e;
512
- if (ge(e))
512
+ if (be(e))
513
513
  return null;
514
514
  e = D(e);
515
515
  }
516
516
  return null;
517
517
  }
518
- function Ie() {
518
+ function Ae() {
519
519
  return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none");
520
520
  }
521
- const zt = /* @__PURE__ */ new Set(["html", "body", "#document"]);
522
- function Y(i) {
523
- return zt.has(q(i));
521
+ const Pt = /* @__PURE__ */ new Set(["html", "body", "#document"]);
522
+ function K(i) {
523
+ return Pt.has(Y(i));
524
524
  }
525
- function L(i) {
526
- return P(i).getComputedStyle(i);
525
+ function E(i) {
526
+ return A(i).getComputedStyle(i);
527
527
  }
528
- function be(i) {
529
- return T(i) ? {
528
+ function fe(i) {
529
+ return L(i) ? {
530
530
  scrollLeft: i.scrollLeft,
531
531
  scrollTop: i.scrollTop
532
532
  } : {
@@ -535,225 +535,225 @@ function be(i) {
535
535
  };
536
536
  }
537
537
  function D(i) {
538
- if (q(i) === "html")
538
+ if (Y(i) === "html")
539
539
  return i;
540
540
  const e = (
541
541
  // Step into the shadow DOM of the parent of a slotted node.
542
542
  i.assignedSlot || // DOM Element detected.
543
543
  i.parentNode || // ShadowRoot detected.
544
- Re(i) && i.host || // Fallback.
545
- E(i)
544
+ Be(i) && i.host || // Fallback.
545
+ M(i)
546
546
  );
547
- return Re(e) ? e.host : e;
547
+ return Be(e) ? e.host : e;
548
548
  }
549
- function qe(i) {
549
+ function Ke(i) {
550
550
  const e = D(i);
551
- return Y(e) ? i.ownerDocument ? i.ownerDocument.body : i.body : V(e) && te(e) ? e : qe(e);
551
+ return K(e) ? i.ownerDocument ? i.ownerDocument.body : i.body : V(e) && se(e) ? e : Ke(e);
552
552
  }
553
- function Q(i, e, t) {
554
- var l;
553
+ function ie(i, e, t) {
554
+ var o;
555
555
  e === void 0 && (e = []), t === void 0 && (t = !0);
556
- const o = qe(i), s = o === ((l = i.ownerDocument) == null ? void 0 : l.body), n = P(o);
557
- if (s) {
558
- const r = ke(n);
559
- return e.concat(n, n.visualViewport || [], te(o) ? o : [], r && t ? Q(r) : []);
556
+ const s = Ke(i), n = s === ((o = i.ownerDocument) == null ? void 0 : o.body), l = A(s);
557
+ if (n) {
558
+ const r = xe(l);
559
+ return e.concat(l, l.visualViewport || [], se(s) ? s : [], r && t ? ie(r) : []);
560
560
  }
561
- return e.concat(o, Q(o, [], t));
561
+ return e.concat(s, ie(s, [], t));
562
562
  }
563
- function ke(i) {
563
+ function xe(i) {
564
564
  return i.parent && Object.getPrototypeOf(i.parent) ? i.frameElement : null;
565
565
  }
566
- function Je(i) {
567
- const e = L(i);
568
- let t = parseFloat(e.width) || 0, l = parseFloat(e.height) || 0;
569
- const o = V(i), s = o ? i.offsetWidth : t, n = o ? i.offsetHeight : l, r = ce(t) !== s || ce(l) !== n;
570
- return r && (t = s, l = n), {
566
+ function Ye(i) {
567
+ const e = E(i);
568
+ let t = parseFloat(e.width) || 0, o = parseFloat(e.height) || 0;
569
+ const s = V(i), n = s ? i.offsetWidth : t, l = s ? i.offsetHeight : o, r = de(t) !== n || de(o) !== l;
570
+ return r && (t = n, o = l), {
571
571
  width: t,
572
- height: l,
572
+ height: o,
573
573
  $: r
574
574
  };
575
575
  }
576
- function Oe(i) {
577
- return T(i) ? i : i.contextElement;
576
+ function Te(i) {
577
+ return L(i) ? i : i.contextElement;
578
578
  }
579
- function K(i) {
580
- const e = Oe(i);
579
+ function j(i) {
580
+ const e = Te(i);
581
581
  if (!V(e))
582
- return M(1);
582
+ return $(1);
583
583
  const t = e.getBoundingClientRect(), {
584
- width: l,
585
- height: o,
586
- $: s
587
- } = Je(e);
588
- let n = (s ? ce(t.width) : t.width) / l, r = (s ? ce(t.height) : t.height) / o;
589
- return (!n || !Number.isFinite(n)) && (n = 1), (!r || !Number.isFinite(r)) && (r = 1), {
590
- x: n,
584
+ width: o,
585
+ height: s,
586
+ $: n
587
+ } = Ye(e);
588
+ let l = (n ? de(t.width) : t.width) / o, r = (n ? de(t.height) : t.height) / s;
589
+ return (!l || !Number.isFinite(l)) && (l = 1), (!r || !Number.isFinite(r)) && (r = 1), {
590
+ x: l,
591
591
  y: r
592
592
  };
593
593
  }
594
- const Dt = /* @__PURE__ */ M(0);
594
+ const Bt = /* @__PURE__ */ $(0);
595
595
  function Xe(i) {
596
- const e = P(i);
597
- return !Ie() || !e.visualViewport ? Dt : {
596
+ const e = A(i);
597
+ return !Ae() || !e.visualViewport ? Bt : {
598
598
  x: e.visualViewport.offsetLeft,
599
599
  y: e.visualViewport.offsetTop
600
600
  };
601
601
  }
602
- function Rt(i, e, t) {
603
- return e === void 0 && (e = !1), !t || e && t !== P(i) ? !1 : e;
602
+ function Dt(i, e, t) {
603
+ return e === void 0 && (e = !1), !t || e && t !== A(i) ? !1 : e;
604
604
  }
605
- function j(i, e, t, l) {
605
+ function U(i, e, t, o) {
606
606
  e === void 0 && (e = !1), t === void 0 && (t = !1);
607
- const o = i.getBoundingClientRect(), s = Oe(i);
608
- let n = M(1);
609
- e && (l ? T(l) && (n = K(l)) : n = K(i));
610
- const r = Rt(s, t, l) ? Xe(s) : M(0);
611
- let a = (o.left + r.x) / n.x, d = (o.top + r.y) / n.y, c = o.width / n.x, m = o.height / n.y;
612
- if (s) {
613
- const p = P(s), h = l && T(l) ? P(l) : l;
614
- let f = p, w = ke(f);
615
- for (; w && l && h !== f; ) {
616
- const g = K(w), b = w.getBoundingClientRect(), _ = L(w), x = b.left + (w.clientLeft + parseFloat(_.paddingLeft)) * g.x, A = b.top + (w.clientTop + parseFloat(_.paddingTop)) * g.y;
617
- a *= g.x, d *= g.y, c *= g.x, m *= g.y, a += x, d += A, f = P(w), w = ke(f);
607
+ const s = i.getBoundingClientRect(), n = Te(i);
608
+ let l = $(1);
609
+ e && (o ? L(o) && (l = j(o)) : l = j(i));
610
+ const r = Dt(n, t, o) ? Xe(n) : $(0);
611
+ let a = (s.left + r.x) / l.x, d = (s.top + r.y) / l.y, c = s.width / l.x, p = s.height / l.y;
612
+ if (n) {
613
+ const u = A(n), h = o && L(o) ? A(o) : o;
614
+ let g = u, b = xe(g);
615
+ for (; b && o && h !== g; ) {
616
+ const v = j(b), w = b.getBoundingClientRect(), C = E(b), y = w.left + (b.clientLeft + parseFloat(C.paddingLeft)) * v.x, k = w.top + (b.clientTop + parseFloat(C.paddingTop)) * v.y;
617
+ a *= v.x, d *= v.y, c *= v.x, p *= v.y, a += y, d += k, g = A(b), b = xe(g);
618
618
  }
619
619
  }
620
620
  return pe({
621
621
  width: c,
622
- height: m,
622
+ height: p,
623
623
  x: a,
624
624
  y: d
625
625
  });
626
626
  }
627
627
  function ve(i, e) {
628
- const t = be(i).scrollLeft;
629
- return e ? e.left + t : j(E(i)).left + t;
628
+ const t = fe(i).scrollLeft;
629
+ return e ? e.left + t : U(M(i)).left + t;
630
630
  }
631
- function Ze(i, e) {
632
- const t = i.getBoundingClientRect(), l = t.left + e.scrollLeft - ve(i, t), o = t.top + e.scrollTop;
631
+ function Je(i, e) {
632
+ const t = i.getBoundingClientRect(), o = t.left + e.scrollLeft - ve(i, t), s = t.top + e.scrollTop;
633
633
  return {
634
- x: l,
635
- y: o
634
+ x: o,
635
+ y: s
636
636
  };
637
637
  }
638
- function Ft(i) {
638
+ function zt(i) {
639
639
  let {
640
640
  elements: e,
641
641
  rect: t,
642
- offsetParent: l,
643
- strategy: o
642
+ offsetParent: o,
643
+ strategy: s
644
644
  } = i;
645
- const s = o === "fixed", n = E(l), r = e ? ge(e.floating) : !1;
646
- if (l === n || r && s)
645
+ const n = s === "fixed", l = M(o), r = e ? be(e.floating) : !1;
646
+ if (o === l || r && n)
647
647
  return t;
648
648
  let a = {
649
649
  scrollLeft: 0,
650
650
  scrollTop: 0
651
- }, d = M(1);
652
- const c = M(0), m = V(l);
653
- if ((m || !m && !s) && ((q(l) !== "body" || te(n)) && (a = be(l)), V(l))) {
654
- const h = j(l);
655
- d = K(l), c.x = h.x + l.clientLeft, c.y = h.y + l.clientTop;
651
+ }, d = $(1);
652
+ const c = $(0), p = V(o);
653
+ if ((p || !p && !n) && ((Y(o) !== "body" || se(l)) && (a = fe(o)), V(o))) {
654
+ const h = U(o);
655
+ d = j(o), c.x = h.x + o.clientLeft, c.y = h.y + o.clientTop;
656
656
  }
657
- const p = n && !m && !s ? Ze(n, a) : M(0);
657
+ const u = l && !p && !n ? Je(l, a) : $(0);
658
658
  return {
659
659
  width: t.width * d.x,
660
660
  height: t.height * d.y,
661
- x: t.x * d.x - a.scrollLeft * d.x + c.x + p.x,
662
- y: t.y * d.y - a.scrollTop * d.y + c.y + p.y
661
+ x: t.x * d.x - a.scrollLeft * d.x + c.x + u.x,
662
+ y: t.y * d.y - a.scrollTop * d.y + c.y + u.y
663
663
  };
664
664
  }
665
- function Nt(i) {
665
+ function Rt(i) {
666
666
  return Array.from(i.getClientRects());
667
667
  }
668
- function Ht(i) {
669
- const e = E(i), t = be(i), l = i.ownerDocument.body, o = B(e.scrollWidth, e.clientWidth, l.scrollWidth, l.clientWidth), s = B(e.scrollHeight, e.clientHeight, l.scrollHeight, l.clientHeight);
670
- let n = -t.scrollLeft + ve(i);
668
+ function Nt(i) {
669
+ const e = M(i), t = fe(i), o = i.ownerDocument.body, s = F(e.scrollWidth, e.clientWidth, o.scrollWidth, o.clientWidth), n = F(e.scrollHeight, e.clientHeight, o.scrollHeight, o.clientHeight);
670
+ let l = -t.scrollLeft + ve(i);
671
671
  const r = -t.scrollTop;
672
- return L(l).direction === "rtl" && (n += B(e.clientWidth, l.clientWidth) - o), {
673
- width: o,
674
- height: s,
675
- x: n,
672
+ return E(o).direction === "rtl" && (l += F(e.clientWidth, o.clientWidth) - s), {
673
+ width: s,
674
+ height: n,
675
+ x: l,
676
676
  y: r
677
677
  };
678
678
  }
679
- const Fe = 25;
680
- function Bt(i, e) {
681
- const t = P(i), l = E(i), o = t.visualViewport;
682
- let s = l.clientWidth, n = l.clientHeight, r = 0, a = 0;
683
- if (o) {
684
- s = o.width, n = o.height;
685
- const c = Ie();
686
- (!c || c && e === "fixed") && (r = o.offsetLeft, a = o.offsetTop);
679
+ const De = 25;
680
+ function Ft(i, e) {
681
+ const t = A(i), o = M(i), s = t.visualViewport;
682
+ let n = o.clientWidth, l = o.clientHeight, r = 0, a = 0;
683
+ if (s) {
684
+ n = s.width, l = s.height;
685
+ const c = Ae();
686
+ (!c || c && e === "fixed") && (r = s.offsetLeft, a = s.offsetTop);
687
687
  }
688
- const d = ve(l);
688
+ const d = ve(o);
689
689
  if (d <= 0) {
690
- const c = l.ownerDocument, m = c.body, p = getComputedStyle(m), h = c.compatMode === "CSS1Compat" && parseFloat(p.marginLeft) + parseFloat(p.marginRight) || 0, f = Math.abs(l.clientWidth - m.clientWidth - h);
691
- f <= Fe && (s -= f);
692
- } else d <= Fe && (s += d);
690
+ const c = o.ownerDocument, p = c.body, u = getComputedStyle(p), h = c.compatMode === "CSS1Compat" && parseFloat(u.marginLeft) + parseFloat(u.marginRight) || 0, g = Math.abs(o.clientWidth - p.clientWidth - h);
691
+ g <= De && (n -= g);
692
+ } else d <= De && (n += d);
693
693
  return {
694
- width: s,
695
- height: n,
694
+ width: n,
695
+ height: l,
696
696
  x: r,
697
697
  y: a
698
698
  };
699
699
  }
700
- const Wt = /* @__PURE__ */ new Set(["absolute", "fixed"]);
701
- function jt(i, e) {
702
- const t = j(i, !0, e === "fixed"), l = t.top + i.clientTop, o = t.left + i.clientLeft, s = V(i) ? K(i) : M(1), n = i.clientWidth * s.x, r = i.clientHeight * s.y, a = o * s.x, d = l * s.y;
700
+ const Ht = /* @__PURE__ */ new Set(["absolute", "fixed"]);
701
+ function Ut(i, e) {
702
+ const t = U(i, !0, e === "fixed"), o = t.top + i.clientTop, s = t.left + i.clientLeft, n = V(i) ? j(i) : $(1), l = i.clientWidth * n.x, r = i.clientHeight * n.y, a = s * n.x, d = o * n.y;
703
703
  return {
704
- width: n,
704
+ width: l,
705
705
  height: r,
706
706
  x: a,
707
707
  y: d
708
708
  };
709
709
  }
710
- function Ne(i, e, t) {
711
- let l;
710
+ function ze(i, e, t) {
711
+ let o;
712
712
  if (e === "viewport")
713
- l = Bt(i, t);
713
+ o = Ft(i, t);
714
714
  else if (e === "document")
715
- l = Ht(E(i));
716
- else if (T(e))
717
- l = jt(e, t);
715
+ o = Nt(M(i));
716
+ else if (L(e))
717
+ o = Ut(e, t);
718
718
  else {
719
- const o = Xe(i);
720
- l = {
721
- x: e.x - o.x,
722
- y: e.y - o.y,
719
+ const s = Xe(i);
720
+ o = {
721
+ x: e.x - s.x,
722
+ y: e.y - s.y,
723
723
  width: e.width,
724
724
  height: e.height
725
725
  };
726
726
  }
727
- return pe(l);
727
+ return pe(o);
728
728
  }
729
- function Qe(i, e) {
729
+ function qe(i, e) {
730
730
  const t = D(i);
731
- return t === e || !T(t) || Y(t) ? !1 : L(t).position === "fixed" || Qe(t, e);
731
+ return t === e || !L(t) || K(t) ? !1 : E(t).position === "fixed" || qe(t, e);
732
732
  }
733
733
  function Gt(i, e) {
734
734
  const t = e.get(i);
735
735
  if (t)
736
736
  return t;
737
- let l = Q(i, [], !1).filter((r) => T(r) && q(r) !== "body"), o = null;
738
- const s = L(i).position === "fixed";
739
- let n = s ? D(i) : i;
740
- for (; T(n) && !Y(n); ) {
741
- const r = L(n), a = Pe(n);
742
- !a && r.position === "fixed" && (o = null), (s ? !a && !o : !a && r.position === "static" && !!o && Wt.has(o.position) || te(n) && !a && Qe(i, n)) ? l = l.filter((c) => c !== n) : o = r, n = D(n);
737
+ let o = ie(i, [], !1).filter((r) => L(r) && Y(r) !== "body"), s = null;
738
+ const n = E(i).position === "fixed";
739
+ let l = n ? D(i) : i;
740
+ for (; L(l) && !K(l); ) {
741
+ const r = E(l), a = Ie(l);
742
+ !a && r.position === "fixed" && (s = null), (n ? !a && !s : !a && r.position === "static" && !!s && Ht.has(s.position) || se(l) && !a && qe(i, l)) ? o = o.filter((c) => c !== l) : s = r, l = D(l);
743
743
  }
744
- return e.set(i, l), l;
744
+ return e.set(i, o), o;
745
745
  }
746
- function Ut(i) {
746
+ function Wt(i) {
747
747
  let {
748
748
  element: e,
749
749
  boundary: t,
750
- rootBoundary: l,
751
- strategy: o
750
+ rootBoundary: o,
751
+ strategy: s
752
752
  } = i;
753
- const n = [...t === "clippingAncestors" ? ge(e) ? [] : Gt(e, this._c) : [].concat(t), l], r = n[0], a = n.reduce((d, c) => {
754
- const m = Ne(e, c, o);
755
- return d.top = B(m.top, d.top), d.right = ae(m.right, d.right), d.bottom = ae(m.bottom, d.bottom), d.left = B(m.left, d.left), d;
756
- }, Ne(e, r, o));
753
+ const l = [...t === "clippingAncestors" ? be(e) ? [] : Gt(e, this._c) : [].concat(t), o], r = l[0], a = l.reduce((d, c) => {
754
+ const p = ze(e, c, s);
755
+ return d.top = F(p.top, d.top), d.right = ce(p.right, d.right), d.bottom = ce(p.bottom, d.bottom), d.left = F(p.left, d.left), d;
756
+ }, ze(e, r, s));
757
757
  return {
758
758
  width: a.right - a.left,
759
759
  height: a.bottom - a.top,
@@ -761,203 +761,203 @@ function Ut(i) {
761
761
  y: a.top
762
762
  };
763
763
  }
764
- function Kt(i) {
764
+ function jt(i) {
765
765
  const {
766
766
  width: e,
767
767
  height: t
768
- } = Je(i);
768
+ } = Ye(i);
769
769
  return {
770
770
  width: e,
771
771
  height: t
772
772
  };
773
773
  }
774
- function Yt(i, e, t) {
775
- const l = V(e), o = E(e), s = t === "fixed", n = j(i, !0, s, e);
774
+ function Kt(i, e, t) {
775
+ const o = V(e), s = M(e), n = t === "fixed", l = U(i, !0, n, e);
776
776
  let r = {
777
777
  scrollLeft: 0,
778
778
  scrollTop: 0
779
779
  };
780
- const a = M(0);
780
+ const a = $(0);
781
781
  function d() {
782
- a.x = ve(o);
782
+ a.x = ve(s);
783
783
  }
784
- if (l || !l && !s)
785
- if ((q(e) !== "body" || te(o)) && (r = be(e)), l) {
786
- const h = j(e, !0, s, e);
784
+ if (o || !o && !n)
785
+ if ((Y(e) !== "body" || se(s)) && (r = fe(e)), o) {
786
+ const h = U(e, !0, n, e);
787
787
  a.x = h.x + e.clientLeft, a.y = h.y + e.clientTop;
788
- } else o && d();
789
- s && !l && o && d();
790
- const c = o && !l && !s ? Ze(o, r) : M(0), m = n.left + r.scrollLeft - a.x - c.x, p = n.top + r.scrollTop - a.y - c.y;
788
+ } else s && d();
789
+ n && !o && s && d();
790
+ const c = s && !o && !n ? Je(s, r) : $(0), p = l.left + r.scrollLeft - a.x - c.x, u = l.top + r.scrollTop - a.y - c.y;
791
791
  return {
792
- x: m,
793
- y: p,
794
- width: n.width,
795
- height: n.height
792
+ x: p,
793
+ y: u,
794
+ width: l.width,
795
+ height: l.height
796
796
  };
797
797
  }
798
- function ye(i) {
799
- return L(i).position === "static";
798
+ function _e(i) {
799
+ return E(i).position === "static";
800
800
  }
801
- function He(i, e) {
802
- if (!V(i) || L(i).position === "fixed")
801
+ function Re(i, e) {
802
+ if (!V(i) || E(i).position === "fixed")
803
803
  return null;
804
804
  if (e)
805
805
  return e(i);
806
806
  let t = i.offsetParent;
807
- return E(i) === t && (t = t.ownerDocument.body), t;
807
+ return M(i) === t && (t = t.ownerDocument.body), t;
808
808
  }
809
- function et(i, e) {
810
- const t = P(i);
811
- if (ge(i))
809
+ function Ze(i, e) {
810
+ const t = A(i);
811
+ if (be(i))
812
812
  return t;
813
813
  if (!V(i)) {
814
- let o = D(i);
815
- for (; o && !Y(o); ) {
816
- if (T(o) && !ye(o))
817
- return o;
818
- o = D(o);
814
+ let s = D(i);
815
+ for (; s && !K(s); ) {
816
+ if (L(s) && !_e(s))
817
+ return s;
818
+ s = D(s);
819
819
  }
820
820
  return t;
821
821
  }
822
- let l = He(i, e);
823
- for (; l && Tt(l) && ye(l); )
824
- l = He(l, e);
825
- return l && Y(l) && ye(l) && !Pe(l) ? t : l || $t(i) || t;
822
+ let o = Re(i, e);
823
+ for (; o && Ot(o) && _e(o); )
824
+ o = Re(o, e);
825
+ return o && K(o) && _e(o) && !Ie(o) ? t : o || Mt(i) || t;
826
826
  }
827
- const qt = async function(i) {
828
- const e = this.getOffsetParent || et, t = this.getDimensions, l = await t(i.floating);
827
+ const Yt = async function(i) {
828
+ const e = this.getOffsetParent || Ze, t = this.getDimensions, o = await t(i.floating);
829
829
  return {
830
- reference: Yt(i.reference, await e(i.floating), i.strategy),
830
+ reference: Kt(i.reference, await e(i.floating), i.strategy),
831
831
  floating: {
832
832
  x: 0,
833
833
  y: 0,
834
- width: l.width,
835
- height: l.height
834
+ width: o.width,
835
+ height: o.height
836
836
  }
837
837
  };
838
838
  };
839
- function Jt(i) {
840
- return L(i).direction === "rtl";
841
- }
842
- const Xt = {
843
- convertOffsetParentRelativeRectToViewportRelativeRect: Ft,
844
- getDocumentElement: E,
845
- getClippingRect: Ut,
846
- getOffsetParent: et,
847
- getElementRects: qt,
848
- getClientRects: Nt,
849
- getDimensions: Kt,
850
- getScale: K,
851
- isElement: T,
852
- isRTL: Jt
839
+ function Xt(i) {
840
+ return E(i).direction === "rtl";
841
+ }
842
+ const Jt = {
843
+ convertOffsetParentRelativeRectToViewportRelativeRect: zt,
844
+ getDocumentElement: M,
845
+ getClippingRect: Wt,
846
+ getOffsetParent: Ze,
847
+ getElementRects: Yt,
848
+ getClientRects: Rt,
849
+ getDimensions: jt,
850
+ getScale: j,
851
+ isElement: L,
852
+ isRTL: Xt
853
853
  };
854
- function tt(i, e) {
854
+ function Qe(i, e) {
855
855
  return i.x === e.x && i.y === e.y && i.width === e.width && i.height === e.height;
856
856
  }
857
- function Zt(i, e) {
858
- let t = null, l;
859
- const o = E(i);
860
- function s() {
857
+ function qt(i, e) {
858
+ let t = null, o;
859
+ const s = M(i);
860
+ function n() {
861
861
  var r;
862
- clearTimeout(l), (r = t) == null || r.disconnect(), t = null;
862
+ clearTimeout(o), (r = t) == null || r.disconnect(), t = null;
863
863
  }
864
- function n(r, a) {
865
- r === void 0 && (r = !1), a === void 0 && (a = 1), s();
864
+ function l(r, a) {
865
+ r === void 0 && (r = !1), a === void 0 && (a = 1), n();
866
866
  const d = i.getBoundingClientRect(), {
867
867
  left: c,
868
- top: m,
869
- width: p,
868
+ top: p,
869
+ width: u,
870
870
  height: h
871
871
  } = d;
872
- if (r || e(), !p || !h)
872
+ if (r || e(), !u || !h)
873
873
  return;
874
- const f = le(m), w = le(o.clientWidth - (c + p)), g = le(o.clientHeight - (m + h)), b = le(c), x = {
875
- rootMargin: -f + "px " + -w + "px " + -g + "px " + -b + "px",
876
- threshold: B(0, ae(1, a)) || 1
874
+ const g = le(p), b = le(s.clientWidth - (c + u)), v = le(s.clientHeight - (p + h)), w = le(c), y = {
875
+ rootMargin: -g + "px " + -b + "px " + -v + "px " + -w + "px",
876
+ threshold: F(0, ce(1, a)) || 1
877
877
  };
878
- let A = !0;
879
- function S(J) {
880
- const G = J[0].intersectionRatio;
878
+ let k = !0;
879
+ function x(X) {
880
+ const G = X[0].intersectionRatio;
881
881
  if (G !== a) {
882
- if (!A)
883
- return n();
884
- G ? n(!1, G) : l = setTimeout(() => {
885
- n(!1, 1e-7);
882
+ if (!k)
883
+ return l();
884
+ G ? l(!1, G) : o = setTimeout(() => {
885
+ l(!1, 1e-7);
886
886
  }, 1e3);
887
887
  }
888
- G === 1 && !tt(d, i.getBoundingClientRect()) && n(), A = !1;
888
+ G === 1 && !Qe(d, i.getBoundingClientRect()) && l(), k = !1;
889
889
  }
890
890
  try {
891
- t = new IntersectionObserver(S, {
892
- ...x,
891
+ t = new IntersectionObserver(x, {
892
+ ...y,
893
893
  // Handle <iframe>s
894
- root: o.ownerDocument
894
+ root: s.ownerDocument
895
895
  });
896
896
  } catch {
897
- t = new IntersectionObserver(S, x);
897
+ t = new IntersectionObserver(x, y);
898
898
  }
899
899
  t.observe(i);
900
900
  }
901
- return n(!0), s;
901
+ return l(!0), n;
902
902
  }
903
- function oe(i, e, t, l) {
904
- l === void 0 && (l = {});
903
+ function q(i, e, t, o) {
904
+ o === void 0 && (o = {});
905
905
  const {
906
- ancestorScroll: o = !0,
907
- ancestorResize: s = !0,
908
- elementResize: n = typeof ResizeObserver == "function",
906
+ ancestorScroll: s = !0,
907
+ ancestorResize: n = !0,
908
+ elementResize: l = typeof ResizeObserver == "function",
909
909
  layoutShift: r = typeof IntersectionObserver == "function",
910
910
  animationFrame: a = !1
911
- } = l, d = Oe(i), c = o || s ? [...d ? Q(d) : [], ...Q(e)] : [];
912
- c.forEach((b) => {
913
- o && b.addEventListener("scroll", t, {
911
+ } = o, d = Te(i), c = s || n ? [...d ? ie(d) : [], ...ie(e)] : [];
912
+ c.forEach((w) => {
913
+ s && w.addEventListener("scroll", t, {
914
914
  passive: !0
915
- }), s && b.addEventListener("resize", t);
915
+ }), n && w.addEventListener("resize", t);
916
916
  });
917
- const m = d && r ? Zt(d, t) : null;
918
- let p = -1, h = null;
919
- n && (h = new ResizeObserver((b) => {
920
- let [_] = b;
921
- _ && _.target === d && h && (h.unobserve(e), cancelAnimationFrame(p), p = requestAnimationFrame(() => {
922
- var x;
923
- (x = h) == null || x.observe(e);
917
+ const p = d && r ? qt(d, t) : null;
918
+ let u = -1, h = null;
919
+ l && (h = new ResizeObserver((w) => {
920
+ let [C] = w;
921
+ C && C.target === d && h && (h.unobserve(e), cancelAnimationFrame(u), u = requestAnimationFrame(() => {
922
+ var y;
923
+ (y = h) == null || y.observe(e);
924
924
  })), t();
925
925
  }), d && !a && h.observe(d), h.observe(e));
926
- let f, w = a ? j(i) : null;
927
- a && g();
928
- function g() {
929
- const b = j(i);
930
- w && !tt(w, b) && t(), w = b, f = requestAnimationFrame(g);
926
+ let g, b = a ? U(i) : null;
927
+ a && v();
928
+ function v() {
929
+ const w = U(i);
930
+ b && !Qe(b, w) && t(), b = w, g = requestAnimationFrame(v);
931
931
  }
932
932
  return t(), () => {
933
- var b;
934
- c.forEach((_) => {
935
- o && _.removeEventListener("scroll", t), s && _.removeEventListener("resize", t);
936
- }), m == null || m(), (b = h) == null || b.disconnect(), h = null, a && cancelAnimationFrame(f);
933
+ var w;
934
+ c.forEach((C) => {
935
+ s && C.removeEventListener("scroll", t), n && C.removeEventListener("resize", t);
936
+ }), p == null || p(), (w = h) == null || w.disconnect(), h = null, a && cancelAnimationFrame(g);
937
937
  };
938
938
  }
939
- const se = At, ne = Pt, xe = Ct, re = (i, e, t) => {
940
- const l = /* @__PURE__ */ new Map(), o = {
941
- platform: Xt,
939
+ const Z = St, Q = It, re = yt, ee = (i, e, t) => {
940
+ const o = /* @__PURE__ */ new Map(), s = {
941
+ platform: Jt,
942
942
  ...t
943
- }, s = {
944
- ...o.platform,
945
- _c: l
943
+ }, n = {
944
+ ...s.platform,
945
+ _c: o
946
946
  };
947
- return xt(i, e, {
948
- ...o,
949
- platform: s
947
+ return _t(i, e, {
948
+ ...s,
949
+ platform: n
950
950
  });
951
951
  };
952
- var it = function() {
953
- }, O = "undefined", Qt = typeof window !== O && typeof window.navigator !== O && /Trident\/|MSIE /.test(window.navigator.userAgent), Se = [
952
+ var et = function() {
953
+ }, O = "undefined", Zt = typeof window !== O && typeof window.navigator !== O && /Trident\/|MSIE /.test(window.navigator.userAgent), ke = [
954
954
  "trace",
955
955
  "debug",
956
956
  "info",
957
957
  "warn",
958
958
  "error"
959
- ], ee = {}, y = null;
960
- function Be(i, e) {
959
+ ], oe = {}, _ = null;
960
+ function Ne(i, e) {
961
961
  var t = i[e];
962
962
  if (typeof t.bind == "function")
963
963
  return t.bind(i);
@@ -969,80 +969,80 @@ function Be(i, e) {
969
969
  };
970
970
  }
971
971
  }
972
- function ei() {
972
+ function Qt() {
973
973
  console.log && (console.log.apply ? console.log.apply(console, arguments) : Function.prototype.apply.apply(console.log, [console, arguments])), console.trace && console.trace();
974
974
  }
975
- function ti(i) {
976
- return i === "debug" && (i = "log"), typeof console === O ? !1 : i === "trace" && Qt ? ei : console[i] !== void 0 ? Be(console, i) : console.log !== void 0 ? Be(console, "log") : it;
975
+ function ei(i) {
976
+ return i === "debug" && (i = "log"), typeof console === O ? !1 : i === "trace" && Zt ? Qt : console[i] !== void 0 ? Ne(console, i) : console.log !== void 0 ? Ne(console, "log") : et;
977
977
  }
978
- function Z() {
979
- for (var i = this.getLevel(), e = 0; e < Se.length; e++) {
980
- var t = Se[e];
981
- this[t] = e < i ? it : this.methodFactory(t, i, this.name);
978
+ function te() {
979
+ for (var i = this.getLevel(), e = 0; e < ke.length; e++) {
980
+ var t = ke[e];
981
+ this[t] = e < i ? et : this.methodFactory(t, i, this.name);
982
982
  }
983
983
  if (this.log = this.debug, typeof console === O && i < this.levels.SILENT)
984
984
  return "No console available for logging";
985
985
  }
986
- function ii(i) {
986
+ function ti(i) {
987
987
  return function() {
988
- typeof console !== O && (Z.call(this), this[i].apply(this, arguments));
988
+ typeof console !== O && (te.call(this), this[i].apply(this, arguments));
989
989
  };
990
990
  }
991
- function li(i, e, t) {
992
- return ti(i) || ii.apply(this, arguments);
991
+ function ii(i, e, t) {
992
+ return ei(i) || ti.apply(this, arguments);
993
993
  }
994
- function lt(i, e) {
995
- var t = this, l, o, s, n = "loglevel";
996
- typeof i == "string" ? n += ":" + i : typeof i == "symbol" && (n = void 0);
997
- function r(p) {
998
- var h = (Se[p] || "silent").toUpperCase();
999
- if (!(typeof window === O || !n)) {
994
+ function tt(i, e) {
995
+ var t = this, o, s, n, l = "loglevel";
996
+ typeof i == "string" ? l += ":" + i : typeof i == "symbol" && (l = void 0);
997
+ function r(u) {
998
+ var h = (ke[u] || "silent").toUpperCase();
999
+ if (!(typeof window === O || !l)) {
1000
1000
  try {
1001
- window.localStorage[n] = h;
1001
+ window.localStorage[l] = h;
1002
1002
  return;
1003
1003
  } catch {
1004
1004
  }
1005
1005
  try {
1006
- window.document.cookie = encodeURIComponent(n) + "=" + h + ";";
1006
+ window.document.cookie = encodeURIComponent(l) + "=" + h + ";";
1007
1007
  } catch {
1008
1008
  }
1009
1009
  }
1010
1010
  }
1011
1011
  function a() {
1012
- var p;
1013
- if (!(typeof window === O || !n)) {
1012
+ var u;
1013
+ if (!(typeof window === O || !l)) {
1014
1014
  try {
1015
- p = window.localStorage[n];
1015
+ u = window.localStorage[l];
1016
1016
  } catch {
1017
1017
  }
1018
- if (typeof p === O)
1018
+ if (typeof u === O)
1019
1019
  try {
1020
- var h = window.document.cookie, f = encodeURIComponent(n), w = h.indexOf(f + "=");
1021
- w !== -1 && (p = /^([^;]+)/.exec(
1022
- h.slice(w + f.length + 1)
1020
+ var h = window.document.cookie, g = encodeURIComponent(l), b = h.indexOf(g + "=");
1021
+ b !== -1 && (u = /^([^;]+)/.exec(
1022
+ h.slice(b + g.length + 1)
1023
1023
  )[1]);
1024
1024
  } catch {
1025
1025
  }
1026
- return t.levels[p] === void 0 && (p = void 0), p;
1026
+ return t.levels[u] === void 0 && (u = void 0), u;
1027
1027
  }
1028
1028
  }
1029
1029
  function d() {
1030
- if (!(typeof window === O || !n)) {
1030
+ if (!(typeof window === O || !l)) {
1031
1031
  try {
1032
- window.localStorage.removeItem(n);
1032
+ window.localStorage.removeItem(l);
1033
1033
  } catch {
1034
1034
  }
1035
1035
  try {
1036
- window.document.cookie = encodeURIComponent(n) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
1036
+ window.document.cookie = encodeURIComponent(l) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
1037
1037
  } catch {
1038
1038
  }
1039
1039
  }
1040
1040
  }
1041
- function c(p) {
1042
- var h = p;
1041
+ function c(u) {
1042
+ var h = u;
1043
1043
  if (typeof h == "string" && t.levels[h.toUpperCase()] !== void 0 && (h = t.levels[h.toUpperCase()]), typeof h == "number" && h >= 0 && h <= t.levels.SILENT)
1044
1044
  return h;
1045
- throw new TypeError("log.setLevel() called with invalid level: " + p);
1045
+ throw new TypeError("log.setLevel() called with invalid level: " + u);
1046
1046
  }
1047
1047
  t.name = i, t.levels = {
1048
1048
  TRACE: 0,
@@ -1051,50 +1051,50 @@ function lt(i, e) {
1051
1051
  WARN: 3,
1052
1052
  ERROR: 4,
1053
1053
  SILENT: 5
1054
- }, t.methodFactory = e || li, t.getLevel = function() {
1055
- return s ?? o ?? l;
1056
- }, t.setLevel = function(p, h) {
1057
- return s = c(p), h !== !1 && r(s), Z.call(t);
1058
- }, t.setDefaultLevel = function(p) {
1059
- o = c(p), a() || t.setLevel(p, !1);
1054
+ }, t.methodFactory = e || ii, t.getLevel = function() {
1055
+ return n ?? s ?? o;
1056
+ }, t.setLevel = function(u, h) {
1057
+ return n = c(u), h !== !1 && r(n), te.call(t);
1058
+ }, t.setDefaultLevel = function(u) {
1059
+ s = c(u), a() || t.setLevel(u, !1);
1060
1060
  }, t.resetLevel = function() {
1061
- s = null, d(), Z.call(t);
1062
- }, t.enableAll = function(p) {
1063
- t.setLevel(t.levels.TRACE, p);
1064
- }, t.disableAll = function(p) {
1065
- t.setLevel(t.levels.SILENT, p);
1061
+ n = null, d(), te.call(t);
1062
+ }, t.enableAll = function(u) {
1063
+ t.setLevel(t.levels.TRACE, u);
1064
+ }, t.disableAll = function(u) {
1065
+ t.setLevel(t.levels.SILENT, u);
1066
1066
  }, t.rebuild = function() {
1067
- if (y !== t && (l = c(y.getLevel())), Z.call(t), y === t)
1068
- for (var p in ee)
1069
- ee[p].rebuild();
1070
- }, l = c(
1071
- y ? y.getLevel() : "WARN"
1067
+ if (_ !== t && (o = c(_.getLevel())), te.call(t), _ === t)
1068
+ for (var u in oe)
1069
+ oe[u].rebuild();
1070
+ }, o = c(
1071
+ _ ? _.getLevel() : "WARN"
1072
1072
  );
1073
- var m = a();
1074
- m != null && (s = c(m)), Z.call(t);
1073
+ var p = a();
1074
+ p != null && (n = c(p)), te.call(t);
1075
1075
  }
1076
- y = new lt();
1077
- y.getLogger = function(e) {
1076
+ _ = new tt();
1077
+ _.getLogger = function(e) {
1078
1078
  if (typeof e != "symbol" && typeof e != "string" || e === "")
1079
1079
  throw new TypeError("You must supply a name when creating a logger.");
1080
- var t = ee[e];
1081
- return t || (t = ee[e] = new lt(
1080
+ var t = oe[e];
1081
+ return t || (t = oe[e] = new tt(
1082
1082
  e,
1083
- y.methodFactory
1083
+ _.methodFactory
1084
1084
  )), t;
1085
1085
  };
1086
1086
  var oi = typeof window !== O ? window.log : void 0;
1087
- y.noConflict = function() {
1088
- return typeof window !== O && window.log === y && (window.log = oi), y;
1087
+ _.noConflict = function() {
1088
+ return typeof window !== O && window.log === _ && (window.log = oi), _;
1089
1089
  };
1090
- y.getLoggers = function() {
1091
- return ee;
1090
+ _.getLoggers = function() {
1091
+ return oe;
1092
1092
  };
1093
- y.default = y;
1093
+ _.default = _;
1094
1094
  var si = function(i) {
1095
- for (var e = 1, t = arguments.length, l; e < t; e++)
1096
- for (l in arguments[e])
1097
- Object.prototype.hasOwnProperty.call(arguments[e], l) && (i[l] = arguments[e][l]);
1095
+ for (var e = 1, t = arguments.length, o; e < t; e++)
1096
+ for (o in arguments[e])
1097
+ Object.prototype.hasOwnProperty.call(arguments[e], o) && (i[o] = arguments[e][o]);
1098
1098
  return i;
1099
1099
  }, ni = {
1100
1100
  template: "[%t] %l:",
@@ -1108,34 +1108,34 @@ var si = function(i) {
1108
1108
  return i.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1");
1109
1109
  },
1110
1110
  format: void 0
1111
- }, ot, N = {}, ri = function(i) {
1111
+ }, it, N = {}, li = function(i) {
1112
1112
  if (!i || !i.getLogger)
1113
1113
  throw new TypeError("Argument is not a root logger");
1114
- ot = i;
1115
- }, ai = function(i, e) {
1114
+ it = i;
1115
+ }, ri = function(i, e) {
1116
1116
  if (!i || !i.setLevel)
1117
1117
  throw new TypeError("Argument is not a logger");
1118
- var t = i.methodFactory, l = i.name || "", o = N[l] || N[""] || ni;
1119
- function s(n, r, a) {
1120
- var d = t(n, r, a), c = N[a] || N[""], m = c.template.indexOf("%t") !== -1, p = c.template.indexOf("%l") !== -1, h = c.template.indexOf("%n") !== -1;
1118
+ var t = i.methodFactory, o = i.name || "", s = N[o] || N[""] || ni;
1119
+ function n(l, r, a) {
1120
+ var d = t(l, r, a), c = N[a] || N[""], p = c.template.indexOf("%t") !== -1, u = c.template.indexOf("%l") !== -1, h = c.template.indexOf("%n") !== -1;
1121
1121
  return function() {
1122
- for (var f = "", w = arguments.length, g = Array(w), b = 0; b < w; b++)
1123
- g[b] = arguments[b];
1124
- if (l || !N[a]) {
1125
- var _ = c.timestampFormatter(/* @__PURE__ */ new Date()), x = c.levelFormatter(n), A = c.nameFormatter(a);
1126
- c.format ? f += c.format(x, A, _) : (f += c.template, m && (f = f.replace(/%t/, _)), p && (f = f.replace(/%l/, x)), h && (f = f.replace(/%n/, A))), g.length && typeof g[0] == "string" ? g[0] = f + " " + g[0] : g.unshift(f);
1122
+ for (var g = "", b = arguments.length, v = Array(b), w = 0; w < b; w++)
1123
+ v[w] = arguments[w];
1124
+ if (o || !N[a]) {
1125
+ var C = c.timestampFormatter(/* @__PURE__ */ new Date()), y = c.levelFormatter(l), k = c.nameFormatter(a);
1126
+ c.format ? g += c.format(y, k, C) : (g += c.template, p && (g = g.replace(/%t/, C)), u && (g = g.replace(/%l/, y)), h && (g = g.replace(/%n/, k))), v.length && typeof v[0] == "string" ? v[0] = g + " " + v[0] : v.unshift(g);
1127
1127
  }
1128
- d.apply(void 0, g);
1128
+ d.apply(void 0, v);
1129
1129
  };
1130
1130
  }
1131
- return N[l] || (i.methodFactory = s), e = e || {}, e.template && (e.format = void 0), N[l] = si({}, o, e), i.setLevel(i.getLevel()), ot || i.warn(
1131
+ return N[o] || (i.methodFactory = n), e = e || {}, e.template && (e.format = void 0), N[o] = si({}, s, e), i.setLevel(i.getLevel()), it || i.warn(
1132
1132
  "It is necessary to call the function reg() of loglevel-plugin-prefix before calling apply. From the next release, it will throw an error. See more: https://github.com/kutuluk/loglevel-plugin-prefix/blob/master/README.md"
1133
1133
  ), i;
1134
- }, Te = {
1135
- reg: ri,
1136
- apply: ai
1134
+ }, ot = {
1135
+ reg: li,
1136
+ apply: ri
1137
1137
  };
1138
- const he = {
1138
+ const st = {
1139
1139
  debug: "#0ea5e9",
1140
1140
  // Blue
1141
1141
  info: "#10b981",
@@ -1145,109 +1145,79 @@ const he = {
1145
1145
  error: "#ef4444"
1146
1146
  // Red
1147
1147
  };
1148
- Te.reg(y);
1149
- Te.apply(y, {
1148
+ ot.reg(_);
1149
+ ot.apply(_, {
1150
1150
  format(i, e, t) {
1151
- return he[i.toLowerCase()], `%c[${t}]%c %c[${i}]%c ${e ? `%c[${e}]%c ` : ""}`;
1151
+ return st[i.toLowerCase()], `%c[${t}]%c %c[${i}]%c ${e ? `%c[${e}]%c ` : ""}`;
1152
1152
  },
1153
1153
  timestampFormatter(i) {
1154
1154
  return i.toTimeString().split(" ")[0] + "." + i.getMilliseconds().toString().padStart(3, "0");
1155
1155
  }
1156
1156
  });
1157
- const ci = y.methodFactory;
1158
- y.methodFactory = function(i, e, t) {
1159
- const l = ci(i, e, t);
1160
- return function(...o) {
1161
- if (o.length > 0 && typeof o[0] == "string" && o[0].includes("%c")) {
1162
- const s = he[i] || "#666", n = [
1163
- o[0],
1164
- `color: ${s}; font-weight: bold;`,
1157
+ const ai = _.methodFactory;
1158
+ _.methodFactory = function(i, e, t) {
1159
+ const o = ai(i, e, t);
1160
+ return function(...s) {
1161
+ if (s.length > 0 && typeof s[0] == "string" && s[0].includes("%c")) {
1162
+ const n = st[i] || "#666", l = [
1163
+ s[0],
1164
+ `color: ${n}; font-weight: bold;`,
1165
1165
  // timestamp color
1166
1166
  "color: inherit;",
1167
1167
  // reset
1168
- `color: ${s}; font-weight: bold;`,
1168
+ `color: ${n}; font-weight: bold;`,
1169
1169
  // level color
1170
1170
  "color: inherit;",
1171
1171
  // reset
1172
1172
  ...t ? [
1173
- `color: ${s}; font-weight: bold;`,
1173
+ `color: ${n}; font-weight: bold;`,
1174
1174
  // name color
1175
1175
  "color: inherit;"
1176
1176
  // reset
1177
1177
  ] : [],
1178
- ...o.slice(1)
1178
+ ...s.slice(1)
1179
1179
  ];
1180
- l(...n);
1180
+ o(...l);
1181
1181
  } else
1182
- l(...o);
1182
+ o(...s);
1183
1183
  };
1184
1184
  };
1185
- y.setLevel("silent");
1186
- const H = y.getLogger("INIT"), C = y.getLogger("DATA"), v = y.getLogger("UI"), k = y.getLogger("INTERACTION");
1187
- [H, C, v, k].forEach((i) => {
1188
- Te.apply(i, {
1189
- format(t, l, o) {
1190
- return he[t.toLowerCase()], `%c[${o}]%c %c[${t}]%c %c[${l}]%c `;
1191
- },
1192
- timestampFormatter(t) {
1193
- return t.toTimeString().split(" ")[0] + "." + t.getMilliseconds().toString().padStart(3, "0");
1194
- }
1195
- });
1196
- const e = i.methodFactory;
1197
- i.methodFactory = function(t, l, o) {
1198
- const s = e(t, l, o);
1199
- return function(...n) {
1200
- if (n.length > 0 && typeof n[0] == "string" && n[0].includes("%c")) {
1201
- const r = he[t] || "#666", a = [
1202
- n[0],
1203
- `color: ${r}; font-weight: bold;`,
1204
- // timestamp
1205
- "color: inherit;",
1206
- `color: ${r}; font-weight: bold;`,
1207
- // level
1208
- "color: inherit;",
1209
- `color: ${r}; font-weight: bold;`,
1210
- // category name
1211
- "color: inherit;",
1212
- ...n.slice(1)
1213
- ];
1214
- s(...a);
1215
- } else
1216
- s(...n);
1217
- };
1218
- }, i.setLevel("silent");
1219
- });
1220
- const st = (i) => {
1221
- y.setLevel(i), H.setLevel(i), C.setLevel(i), v.setLevel(i), k.setLevel(i);
1222
- }, ui = () => {
1223
- st("debug");
1224
- }, fi = () => {
1225
- st("silent");
1226
- }, gi = (i, e = "debug") => {
1227
- ({
1228
- INIT: H,
1229
- DATA: C,
1230
- UI: v,
1231
- INTERACTION: k
1232
- })[i].setLevel(e);
1233
- };
1234
- class We {
1185
+ _.setLevel("silent");
1186
+ const ae = _.getLogger("MULTISELECT:INIT"), S = _.getLogger("MULTISELECT:DATA"), f = _.getLogger("MULTISELECT:UI"), I = _.getLogger("MULTISELECT:INTERACTION"), ci = [
1187
+ "MULTISELECT:INIT",
1188
+ "MULTISELECT:DATA",
1189
+ "MULTISELECT:UI",
1190
+ "MULTISELECT:INTERACTION"
1191
+ ];
1192
+ function di() {
1193
+ _.setLevel("debug");
1194
+ }
1195
+ function hi() {
1196
+ _.setLevel("silent");
1197
+ }
1198
+ function pi(i) {
1199
+ _.setLevel(i);
1200
+ }
1201
+ function mi(i, e) {
1202
+ _.getLogger(i).setLevel(e);
1203
+ }
1204
+ class Fe {
1235
1205
  constructor(e) {
1236
- u(this, "container");
1237
- u(this, "wrapper");
1238
- u(this, "viewport");
1239
- u(this, "itemHeight");
1240
- u(this, "items");
1241
- u(this, "renderItem");
1242
- u(this, "bufferSize");
1243
- u(this, "onVisibleRangeChange");
1244
- u(this, "onScroll");
1245
- u(this, "scrollTop", 0);
1246
- u(this, "viewportHeight", 0);
1247
- u(this, "visibleStart", 0);
1248
- u(this, "visibleEnd", 0);
1249
- u(this, "scrollHandler");
1250
- u(this, "resizeObserver");
1206
+ m(this, "container");
1207
+ m(this, "wrapper");
1208
+ m(this, "viewport");
1209
+ m(this, "itemHeight");
1210
+ m(this, "items");
1211
+ m(this, "renderItem");
1212
+ m(this, "bufferSize");
1213
+ m(this, "onVisibleRangeChange");
1214
+ m(this, "onScroll");
1215
+ m(this, "scrollTop", 0);
1216
+ m(this, "viewportHeight", 0);
1217
+ m(this, "visibleStart", 0);
1218
+ m(this, "visibleEnd", 0);
1219
+ m(this, "scrollHandler");
1220
+ m(this, "resizeObserver");
1251
1221
  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();
1252
1222
  }
1253
1223
  /**
@@ -1280,8 +1250,8 @@ class We {
1280
1250
  * Calculate visible range based on scroll position
1281
1251
  */
1282
1252
  calculateVisibleRange() {
1283
- const e = Math.floor(this.scrollTop / this.itemHeight), t = Math.ceil((this.scrollTop + this.viewportHeight) / this.itemHeight), l = Math.max(0, e - this.bufferSize), o = Math.min(this.items.length, t + this.bufferSize);
1284
- return { start: l, end: o };
1253
+ const e = Math.floor(this.scrollTop / this.itemHeight), t = Math.ceil((this.scrollTop + this.viewportHeight) / this.itemHeight), o = Math.max(0, e - this.bufferSize), s = Math.min(this.items.length, t + this.bufferSize);
1254
+ return { start: o, end: s };
1285
1255
  }
1286
1256
  /**
1287
1257
  * Render visible items
@@ -1291,12 +1261,12 @@ class We {
1291
1261
  if (e === this.visibleStart && t === this.visibleEnd)
1292
1262
  return;
1293
1263
  this.visibleStart = e, this.visibleEnd = t, this.onVisibleRangeChange && this.onVisibleRangeChange(e, t);
1294
- let l = "";
1295
- for (let o = e; o < t; o++) {
1296
- const s = this.items[o], n = this.renderItem(s, o), r = o * this.itemHeight;
1297
- l += `<div class="ml__virtual-item" style="position: absolute; top: ${r}px; left: 0; right: 0; height: ${this.itemHeight}px;" data-index="${o}">`, l += n, l += "</div>";
1264
+ let o = "";
1265
+ for (let s = e; s < t; s++) {
1266
+ const n = this.items[s], l = this.renderItem(n, s), r = s * this.itemHeight;
1267
+ o += `<div class="ml__virtual-item" style="position: absolute; top: ${r}px; left: 0; right: 0; height: ${this.itemHeight}px;" data-index="${s}">`, o += l, o += "</div>";
1298
1268
  }
1299
- this.viewport.innerHTML = l;
1269
+ this.viewport.innerHTML = o;
1300
1270
  }
1301
1271
  /**
1302
1272
  * Update items and re-render
@@ -1350,74 +1320,75 @@ class We {
1350
1320
  this.container.removeEventListener("scroll", this.scrollHandler), this.resizeObserver && this.resizeObserver.disconnect(), this.container.innerHTML = "";
1351
1321
  }
1352
1322
  }
1353
- class di {
1323
+ class ui {
1354
1324
  constructor(e, t = {}) {
1355
- u(this, "element");
1356
- u(this, "instanceId");
1357
- u(this, "options");
1358
- u(this, "isOpen", !1);
1359
- u(this, "selectedValues", /* @__PURE__ */ new Set());
1360
- u(this, "selectedOptions", /* @__PURE__ */ new Map());
1361
- u(this, "allOptions", []);
1362
- u(this, "filteredOptions", []);
1363
- u(this, "hiddenInputs", []);
1364
- u(this, "focusedIndex", -1);
1365
- u(this, "matchingIndices", /* @__PURE__ */ new Set());
1366
- u(this, "searchTerm", "");
1367
- u(this, "isLoading", !1);
1368
- u(this, "showSelectedPopover", !1);
1369
- u(this, "selectedPopoverPlacement", null);
1370
- u(this, "dropdownPlacement", null);
1371
- u(this, "isRTL", !1);
1372
- u(this, "effectivePillsPosition", "bottom");
1373
- u(this, "justClosedViaClick", !1);
1325
+ m(this, "element");
1326
+ m(this, "instanceId");
1327
+ m(this, "options");
1328
+ m(this, "isOpen", !1);
1329
+ m(this, "selectedValues", /* @__PURE__ */ new Set());
1330
+ m(this, "selectedOptions", /* @__PURE__ */ new Map());
1331
+ m(this, "allOptions", []);
1332
+ m(this, "filteredOptions", []);
1333
+ m(this, "hiddenInputs", []);
1334
+ m(this, "focusedIndex", -1);
1335
+ m(this, "matchingIndices", /* @__PURE__ */ new Set());
1336
+ m(this, "searchTerm", "");
1337
+ m(this, "isLoading", !1);
1338
+ m(this, "showSelectedPopover", !1);
1339
+ m(this, "selectedPopoverPlacement", null);
1340
+ m(this, "dropdownPlacement", null);
1341
+ m(this, "isRTL", !1);
1342
+ m(this, "effectiveBadgesPosition", "bottom");
1343
+ m(this, "justClosedViaClick", !1);
1374
1344
  // Floating UI cleanup functions
1375
- u(this, "dropdownCleanup", null);
1376
- u(this, "hintCleanup", null);
1377
- u(this, "selectedPopoverCleanup", null);
1378
- // Pill tooltip storage
1379
- u(this, "pillTooltips", /* @__PURE__ */ new Map());
1380
- u(this, "pillTooltipCleanups", /* @__PURE__ */ new Map());
1345
+ m(this, "dropdownCleanup", null);
1346
+ m(this, "hintCleanup", null);
1347
+ m(this, "selectedPopoverCleanup", null);
1348
+ // Badge tooltip storage
1349
+ m(this, "badgeTooltips", /* @__PURE__ */ new Map());
1350
+ m(this, "badgeTooltipCleanups", /* @__PURE__ */ new Map());
1351
+ // Action button tooltip storage
1352
+ m(this, "actionButtonTooltips", /* @__PURE__ */ new Map());
1353
+ m(this, "actionButtonTooltipCleanups", /* @__PURE__ */ new Map());
1381
1354
  // Virtual scroll instance
1382
- u(this, "virtualScroll", null);
1383
- u(this, "optionsContainer", null);
1384
- u(this, "selectedPopoverVirtualScroll", null);
1385
- u(this, "selectedPopoverContainer", null);
1355
+ m(this, "virtualScroll", null);
1356
+ m(this, "optionsContainer", null);
1357
+ m(this, "selectedPopoverVirtualScroll", null);
1358
+ m(this, "selectedPopoverContainer", null);
1386
1359
  // DOM elements
1387
- u(this, "input");
1388
- u(this, "dropdown");
1389
- u(this, "pillsContainer");
1390
- u(this, "countBadge");
1391
- u(this, "hint");
1392
- u(this, "selectedPopover");
1360
+ m(this, "input");
1361
+ m(this, "dropdown");
1362
+ m(this, "badgesContainer");
1363
+ m(this, "counter");
1364
+ m(this, "hint");
1365
+ m(this, "selectedPopover");
1393
1366
  this.element = e, this.instanceId = `MS-${Math.random().toString(36).substr(2, 9)}`, this.options = {
1394
1367
  // String options
1395
1368
  searchHint: e.dataset.searchHint || "",
1396
1369
  searchPlaceholder: e.dataset.searchPlaceholder || "Search...",
1397
1370
  dropdownMinWidth: e.dataset.dropdownMinWidth || void 0,
1398
- pillsDisplayMode: e.dataset.pillsDisplayMode || "pills",
1399
- pillsPosition: e.dataset.pillsPosition || "bottom",
1400
- pillsThresholdMode: e.dataset.pillsThresholdMode || "count",
1371
+ badgesDisplayMode: e.dataset.badgesDisplayMode || "badges",
1372
+ badgesPosition: e.dataset.badgesPosition || "bottom",
1373
+ badgesThresholdMode: e.dataset.badgesThresholdMode || "count",
1401
1374
  maxHeight: e.dataset.maxHeight || "20rem",
1402
1375
  emptyMessage: e.dataset.emptyMessage || "No results found",
1403
1376
  loadingMessage: e.dataset.loadingMessage || "Loading...",
1404
1377
  searchInputMode: e.dataset.searchInputMode || "normal",
1405
1378
  searchMode: e.dataset.searchMode || "filter",
1406
1379
  // Number options
1407
- pillsThreshold: e.dataset.pillsThreshold ? parseInt(e.dataset.pillsThreshold) : void 0,
1380
+ badgesThreshold: e.dataset.badgesThreshold ? parseInt(e.dataset.badgesThreshold) : void 0,
1408
1381
  minSearchLength: parseInt(e.dataset.minSearchLength || "0") || 0,
1409
1382
  // Boolean options (internal names with 'is' prefix)
1410
1383
  isMultipleEnabled: e.dataset.multiple !== "false",
1411
1384
  isGroupsAllowed: e.dataset.allowGroups !== "false",
1412
- isSelectAllAllowed: e.dataset.allowSelectAll !== "false",
1413
- isClearAllAllowed: e.dataset.allowClearAll !== "false",
1414
1385
  isCheckboxesShown: e.dataset.showCheckboxes !== "false",
1415
1386
  isActionsSticky: e.dataset.stickyActions !== "false",
1416
1387
  isCloseOnSelect: e.dataset.closeOnSelect === "true",
1417
1388
  isPlacementLocked: e.dataset.lockPlacement !== "false",
1418
1389
  isSearchEnabled: e.dataset.enableSearch !== "false",
1419
1390
  isAddNewAllowed: e.dataset.allowAddNew === "true",
1420
- isCountBadgeShown: e.dataset.showCountBadge === "true",
1391
+ isCounterShown: e.dataset.showCounter === "true",
1421
1392
  isKeepOptionsOnSearch: e.dataset.keepOptionsOnSearch !== "false",
1422
1393
  // Data and callbacks
1423
1394
  options: [],
@@ -1444,12 +1415,12 @@ class di {
1444
1415
  return Array.isArray(e) && e.length === 2 ? String(e[1]) : this.options.displayValueMember && e[this.options.displayValueMember] !== void 0 ? String(e[this.options.displayValueMember]) : this.options.getDisplayValueCallback ? this.options.getDisplayValueCallback(e) : "[N/A]";
1445
1416
  }
1446
1417
  /**
1447
- * Extract pill display value from item
1448
- * Precedence: getPillDisplayCallback -> getItemDisplayValue()
1449
- * This allows customizing pill text separately from dropdown display text
1418
+ * Extract badge display value from item
1419
+ * Precedence: getBadgeDisplayCallback -> getItemDisplayValue()
1420
+ * This allows customizing badge text separately from dropdown display text
1450
1421
  */
1451
- getItemPillDisplayValue(e) {
1452
- return this.options.getPillDisplayCallback ? this.options.getPillDisplayCallback(e) : this.getItemDisplayValue(e);
1422
+ getItemBadgeDisplayValue(e) {
1423
+ return this.options.getBadgeDisplayCallback ? this.options.getBadgeDisplayCallback(e) : this.getItemDisplayValue(e);
1453
1424
  }
1454
1425
  /**
1455
1426
  * Extract search value from item
@@ -1498,13 +1469,11 @@ class di {
1498
1469
  return Array.isArray(e) ? !1 : this.options.disabledMember && e[this.options.disabledMember] !== void 0 ? !!e[this.options.disabledMember] : this.options.getDisabledCallback ? this.options.getDisabledCallback(e) : !1;
1499
1470
  }
1500
1471
  init() {
1501
- this.parseOptions(), this.buildHTML(), this.attachEvents(), this.parseInitialSelection(), H.debug(`Initialized [${this.instanceId}] with options:`, {
1472
+ this.parseOptions(), this.buildHTML(), this.attachEvents(), this.parseInitialSelection(), ae.debug(`Initialized [${this.instanceId}] with options:`, {
1502
1473
  placeholder: this.options.searchPlaceholder,
1503
1474
  totalOptions: this.allOptions.length,
1504
1475
  isCloseOnSelect: this.options.isCloseOnSelect,
1505
- dataAttribute: this.element.dataset.closeOnSelect,
1506
- isSelectAllAllowed: this.options.isSelectAllAllowed,
1507
- isClearAllAllowed: this.options.isClearAllAllowed
1476
+ dataAttribute: this.element.dataset.closeOnSelect
1508
1477
  });
1509
1478
  }
1510
1479
  parseOptions() {
@@ -1513,27 +1482,27 @@ class di {
1513
1482
  try {
1514
1483
  this.allOptions = JSON.parse(e);
1515
1484
  } catch (t) {
1516
- C.error(`[${this.instanceId}] Failed to parse data-options:`, t), this.allOptions = [];
1485
+ S.error(`[${this.instanceId}] Failed to parse data-options:`, t), this.allOptions = [];
1517
1486
  }
1518
1487
  else this.options.options && (this.allOptions = this.options.options);
1519
1488
  this.filteredOptions = [...this.allOptions];
1520
1489
  }
1521
1490
  buildHTML() {
1522
- const e = this.options.container || document.body, t = this.element.getRootNode(), l = t instanceof ShadowRoot ? t.host : this.element, o = l.getAttribute("dir") === "rtl", s = l.closest('[dir="rtl"]') !== null;
1523
- this.isRTL = o || s, H.debug(`[${this.instanceId}] RTL Debug:`, {
1491
+ const e = this.options.container || document.body, t = this.element.getRootNode(), o = t instanceof ShadowRoot ? t.host : this.element, s = o.getAttribute("dir") === "rtl", n = o.closest('[dir="rtl"]') !== null;
1492
+ this.isRTL = s || n, ae.debug(`[${this.instanceId}] RTL Debug:`, {
1524
1493
  isShadowRoot: t instanceof ShadowRoot,
1525
- hostElement: l,
1526
- elementDir: l.getAttribute("dir"),
1527
- hasElementDir: o,
1528
- hasAncestorDir: s,
1494
+ hostElement: o,
1495
+ elementDir: o.getAttribute("dir"),
1496
+ hasElementDir: s,
1497
+ hasAncestorDir: n,
1529
1498
  isRTL: this.isRTL
1530
- }), this.effectivePillsPosition = this.options.pillsPosition || "bottom", this.isRTL && (this.effectivePillsPosition === "left" ? this.effectivePillsPosition = "right" : this.effectivePillsPosition === "right" && (this.effectivePillsPosition = "left")), this.element.classList.add("ml"), this.isRTL && (this.element.classList.add("ml--rtl"), H.debug(`[${this.instanceId}] Added ml--rtl class to element`)), (!this.options.isCheckboxesShown || !this.options.isMultipleEnabled) && this.element.classList.add("ml--no-checkboxes");
1531
- const n = document.createElement("div");
1532
- n.className = "ml__input-wrapper", this.input = document.createElement("input"), this.input.type = "text", this.input.className = "ml__input", this.input.placeholder = this.options.searchPlaceholder, this.input.autocomplete = "off", this.options.searchInputMode === "readonly" ? this.input.readOnly = !0 : this.options.searchInputMode === "hidden" && (this.input.style.display = "none");
1499
+ }), this.effectiveBadgesPosition = this.options.badgesPosition || "bottom", this.isRTL && (this.effectiveBadgesPosition === "left" ? this.effectiveBadgesPosition = "right" : this.effectiveBadgesPosition === "right" && (this.effectiveBadgesPosition = "left")), this.element.classList.add("ml"), this.isRTL && (this.element.classList.add("ml--rtl"), ae.debug(`[${this.instanceId}] Added ml--rtl class to element`)), (!this.options.isCheckboxesShown || !this.options.isMultipleEnabled) && this.element.classList.add("ml--no-checkboxes");
1500
+ const l = document.createElement("div");
1501
+ l.className = "ml__input-wrapper", this.input = document.createElement("input"), this.input.type = "text", this.input.className = "ml__input", this.input.placeholder = this.options.searchPlaceholder, this.input.autocomplete = "off", this.options.searchInputMode === "readonly" ? this.input.readOnly = !0 : this.options.searchInputMode === "hidden" && (this.input.style.display = "none");
1533
1502
  const r = document.createElement("span");
1534
- r.className = "ml__toggle", r.innerHTML = "▼", this.countBadge = document.createElement("span"), this.countBadge.className = "ml__count-badge", this.countBadge.style.display = "none", n.appendChild(this.input), n.appendChild(this.countBadge), n.appendChild(r), this.pillsContainer = document.createElement("div"), this.pillsContainer.className = "ml__pills";
1503
+ r.className = "ml__toggle", r.innerHTML = "▼", this.counter = document.createElement("span"), this.counter.className = "ml__counter", this.counter.style.display = "none", l.appendChild(this.input), l.appendChild(this.counter), l.appendChild(r), this.badgesContainer = document.createElement("div"), this.badgesContainer.className = "ml__badges";
1535
1504
  const a = document.createElement("div");
1536
- a.className = "ml-wrapper", (this.effectivePillsPosition === "left" || this.effectivePillsPosition === "right") && a.classList.add("ml-wrapper--inline"), a.appendChild(n), a.appendChild(this.pillsContainer), this.element.appendChild(a), this.dropdown = document.createElement("div"), this.dropdown.className = "ml__dropdown", e.appendChild(this.dropdown), this.options.searchHint && (this.hint = document.createElement("div"), this.hint.className = "ml__hint", this.hint.textContent = this.options.searchHint, e.appendChild(this.hint)), this.selectedPopover = document.createElement("div"), this.selectedPopover.className = "ml__selected-popover", e.appendChild(this.selectedPopover), this.renderDropdown();
1505
+ a.className = "ml-wrapper", (this.effectiveBadgesPosition === "left" || this.effectiveBadgesPosition === "right") && a.classList.add("ml-wrapper--inline"), a.appendChild(l), a.appendChild(this.badgesContainer), this.element.appendChild(a), this.dropdown = document.createElement("div"), this.dropdown.className = "ml__dropdown", e.appendChild(this.dropdown), this.options.searchHint && (this.hint = document.createElement("div"), this.hint.className = "ml__hint", this.hint.textContent = this.options.searchHint, e.appendChild(this.hint)), this.selectedPopover = document.createElement("div"), this.selectedPopover.className = "ml__selected-popover", e.appendChild(this.selectedPopover), this.renderDropdown();
1537
1506
  }
1538
1507
  /**
1539
1508
  * Check if virtual scroll should be used
@@ -1553,7 +1522,8 @@ class di {
1553
1522
  });
1554
1523
  }
1555
1524
  renderDropdown() {
1556
- if (this.shouldUseVirtualScroll()) {
1525
+ var t;
1526
+ if (this.destroyAllActionButtonTooltips(), this.shouldUseVirtualScroll()) {
1557
1527
  this.dropdown.classList.add("ml__dropdown--virtual"), this.renderDropdownVirtual();
1558
1528
  return;
1559
1529
  }
@@ -1563,37 +1533,74 @@ class di {
1563
1533
  e += '<div class="ml__loader">', e += '<div class="pa-loader pa-loader--sm"></div>', e += `<div class="ml__loading-text">${this.options.loadingMessage}</div>`, e += "</div>", this.dropdown.innerHTML = e;
1564
1534
  return;
1565
1535
  }
1566
- if (this.options.isMultipleEnabled && (this.options.isSelectAllAllowed || this.options.isClearAllAllowed)) {
1567
- const t = this.options.isActionsSticky ? " ml__actions--sticky" : "";
1568
- e += `<div class="ml__actions${t}">`, this.options.isSelectAllAllowed && (e += '<button type="button" class="ml__action-btn" data-action="select-all">Select All</button>'), this.options.isClearAllAllowed && (e += '<button type="button" class="ml__action-btn" data-action="clear-all">Clear All</button>'), e += "</div>";
1536
+ if (console.log("[DEBUG] renderDropdown() - isMultipleEnabled:", this.options.isMultipleEnabled), console.log("[DEBUG] renderDropdown() - actionButtons:", this.options.actionButtons), console.log("[DEBUG] renderDropdown() - actionButtons.length:", (t = this.options.actionButtons) == null ? void 0 : t.length), this.options.isMultipleEnabled && this.options.actionButtons && this.options.actionButtons.length > 0) {
1537
+ console.log("[DEBUG] About to render action buttons!");
1538
+ const o = this.options.isActionsSticky ? " ml__actions--sticky" : "", s = this.options.actionsLayout === "wrap" ? " ml__actions--wrap" : "";
1539
+ e += `<div class="ml__actions${o}${s}">`, this.options.actionButtons.forEach((n) => {
1540
+ console.log("[ACTION BUTTON DEBUG] Processing button:", n.text, n), console.log("[VISIBILITY] Checking isVisibleCallback:", !!n.isVisibleCallback);
1541
+ const l = n.isVisibleCallback ? n.isVisibleCallback(this) : n.isVisible ?? !0;
1542
+ if (console.log("[VISIBILITY] Result:", l), !l)
1543
+ return;
1544
+ console.log("[DISABLED] Checking isDisabledCallback:", !!n.isDisabledCallback);
1545
+ const r = n.isDisabledCallback ? n.isDisabledCallback(this) : n.isDisabled ?? !1;
1546
+ console.log("[DISABLED] Result:", r);
1547
+ const a = r ? " disabled" : "";
1548
+ console.log("[TEXT] Checking getTextCallback:", !!n.getTextCallback);
1549
+ const d = n.getTextCallback ? n.getTextCallback(this) : n.text;
1550
+ console.log("[TEXT] Result:", d), console.log("[CLASS] Checking getClassCallback:", !!n.getClassCallback);
1551
+ let c = "";
1552
+ if (n.getClassCallback) {
1553
+ const p = n.getClassCallback(this);
1554
+ console.log("[CLASS] Callback returned:", p), c = Array.isArray(p) ? ` ${p.join(" ")}` : p ? ` ${p}` : "";
1555
+ } else n.cssClass && (c = ` ${n.cssClass}`);
1556
+ console.log("[CLASS] Final cssClass:", c), e += `<button type="button"${a} class="ml__action-btn${c}" data-action="${n.action}">${d}</button>`;
1557
+ }), e += "</div>";
1569
1558
  }
1570
1559
  if (e += '<div class="ml__options">', this.filteredOptions.length === 0)
1571
1560
  e += `<div class="ml__empty">${this.options.emptyMessage}</div>`;
1572
1561
  else if (this.options.isGroupsAllowed) {
1573
- const t = this.groupOptions(this.filteredOptions);
1574
- Object.keys(t).forEach((l) => {
1575
- e += '<div class="ml__group">', l !== "__ungrouped__" && (e += `<div class="ml__group-label">${l}</div>`), t[l].forEach((o, s) => {
1576
- e += this.renderOption(o, s);
1562
+ const o = this.groupOptions(this.filteredOptions);
1563
+ Object.keys(o).forEach((s) => {
1564
+ e += '<div class="ml__group">', s !== "__ungrouped__" && (e += `<div class="ml__group-label">${s}</div>`), o[s].forEach((n, l) => {
1565
+ e += this.renderOption(n, l);
1577
1566
  }), e += "</div>";
1578
1567
  });
1579
1568
  } else
1580
- this.filteredOptions.forEach((t, l) => {
1581
- e += this.renderOption(t, l);
1569
+ this.filteredOptions.forEach((o, s) => {
1570
+ e += this.renderOption(o, s);
1582
1571
  });
1583
- e += "</div>", this.dropdown.innerHTML = e;
1572
+ e += "</div>", this.dropdown.innerHTML = e, this.attachActionButtonTooltips();
1584
1573
  }
1585
1574
  /**
1586
1575
  * Render dropdown with virtual scrolling
1587
1576
  */
1588
1577
  renderDropdownVirtual() {
1589
- if (!this.virtualScroll) {
1590
- let l = "";
1591
- if (this.options.isMultipleEnabled && (this.options.isSelectAllAllowed || this.options.isClearAllAllowed)) {
1592
- const s = this.options.isActionsSticky ? " ml__actions--sticky" : "";
1593
- l += `<div class="ml__actions${s}">`, this.options.isSelectAllAllowed && (l += '<button type="button" class="ml__action-btn" data-action="select-all">Select All</button>'), this.options.isClearAllAllowed && (l += '<button type="button" class="ml__action-btn" data-action="clear-all">Clear All</button>'), l += "</div>";
1578
+ if (this.destroyAllActionButtonTooltips(), !this.virtualScroll) {
1579
+ let o = "";
1580
+ if (this.options.isMultipleEnabled && this.options.actionButtons && this.options.actionButtons.length > 0) {
1581
+ const l = this.options.isActionsSticky ? " ml__actions--sticky" : "", r = this.options.actionsLayout === "wrap" ? " ml__actions--wrap" : "";
1582
+ o += `<div class="ml__actions${l}${r}">`, this.options.actionButtons.forEach((a) => {
1583
+ console.log("[ACTION BUTTON DEBUG - VIRTUAL] Processing button:", a.text, a), console.log("[VISIBILITY - VIRTUAL] Checking isVisibleCallback:", !!a.isVisibleCallback);
1584
+ const d = a.isVisibleCallback ? a.isVisibleCallback(this) : a.isVisible ?? !0;
1585
+ if (console.log("[VISIBILITY - VIRTUAL] Result:", d), !d)
1586
+ return;
1587
+ console.log("[DISABLED - VIRTUAL] Checking isDisabledCallback:", !!a.isDisabledCallback);
1588
+ const c = a.isDisabledCallback ? a.isDisabledCallback(this) : a.isDisabled ?? !1;
1589
+ console.log("[DISABLED - VIRTUAL] Result:", c);
1590
+ const p = c ? " disabled" : "";
1591
+ console.log("[TEXT - VIRTUAL] Checking getTextCallback:", !!a.getTextCallback);
1592
+ const u = a.getTextCallback ? a.getTextCallback(this) : a.text;
1593
+ console.log("[TEXT - VIRTUAL] Result:", u), console.log("[CLASS - VIRTUAL] Checking getClassCallback:", !!a.getClassCallback);
1594
+ let h = "";
1595
+ if (a.getClassCallback) {
1596
+ const g = a.getClassCallback(this);
1597
+ console.log("[CLASS - VIRTUAL] Callback returned:", g), h = Array.isArray(g) ? ` ${g.join(" ")}` : g ? ` ${g}` : "";
1598
+ } else a.cssClass && (h = ` ${a.cssClass}`);
1599
+ console.log("[CLASS - VIRTUAL] Final cssClass:", h), o += `<button type="button"${p} class="ml__action-btn${h}" data-action="${a.action}">${u}</button>`;
1600
+ }), o += "</div>";
1594
1601
  }
1595
- const o = this.options.maxHeight || "20rem";
1596
- l += `<div class="ml__options ml__options--virtual" style="height: ${o}; max-height: ${o}; overflow-y: auto; position: relative;"></div>`, this.dropdown.innerHTML = l, this.optionsContainer = this.dropdown.querySelector(".ml__options");
1602
+ const s = this.options.maxHeight || "20rem", n = this.options.optionHeight ?? 50;
1603
+ o += `<div class="ml__options ml__options--virtual" style="height: ${s}; max-height: ${s}; overflow-y: auto; position: relative; --ml-option-height: ${n}px;"></div>`, this.dropdown.innerHTML = o, this.optionsContainer = this.dropdown.querySelector(".ml__options");
1597
1604
  }
1598
1605
  if (this.filteredOptions.length === 0) {
1599
1606
  this.optionsContainer.innerHTML = `<div class="ml__empty">${this.options.emptyMessage}</div>`;
@@ -1601,118 +1608,154 @@ class di {
1601
1608
  }
1602
1609
  const e = this.options.optionHeight ?? 50, t = this.options.virtualScrollBuffer ?? 10;
1603
1610
  requestAnimationFrame(() => {
1604
- this.optionsContainer && (this.virtualScroll ? this.virtualScroll.setItems(this.filteredOptions) : this.virtualScroll = new We({
1611
+ this.optionsContainer && (this.virtualScroll ? this.virtualScroll.setItems(this.filteredOptions) : this.virtualScroll = new Fe({
1605
1612
  container: this.optionsContainer,
1606
1613
  itemHeight: e,
1607
1614
  items: this.filteredOptions,
1608
- renderItem: (l, o) => this.renderOption(l, o),
1615
+ renderItem: (o, s) => this.renderOption(o, s),
1609
1616
  bufferSize: t
1610
- }));
1617
+ }), this.attachActionButtonTooltips());
1611
1618
  });
1612
1619
  }
1613
1620
  renderOption(e, t) {
1614
- const l = this.getItemValue(e), o = this.getItemDisplayValue(e), s = this.getItemIcon(e), n = this.getItemSubtitle(e), r = this.getItemDisabled(e), a = this.selectedValues.has(String(l)), d = t === this.focusedIndex, c = this.matchingIndices.has(t), m = ["ml__option"];
1615
- a && m.push("ml__option--selected"), d && m.push("ml__option--focused"), c && m.push("ml__option--matched"), r && m.push("ml__option--disabled");
1616
- let p = `<div class="${m.join(" ")}" data-value="${l}" data-index="${t}">`;
1617
- return this.options.isCheckboxesShown && this.options.isMultipleEnabled && (p += `<input type="checkbox" class="ml__checkbox" ${a ? "checked" : ""} ${r ? "disabled" : ""}>`), p += '<div class="ml__option-content">', s && (p += `<span class="ml__option-icon">${s}</span>`), p += '<div class="ml__option-text">', p += `<div class="ml__option-title">${this.highlightMatch(o, this.searchTerm)}</div>`, n && (p += `<div class="ml__option-subtitle">${n}</div>`), p += "</div>", p += "</div>", p += "</div>", p;
1621
+ const o = this.getItemValue(e), s = this.getItemDisplayValue(e), n = this.getItemIcon(e), l = this.getItemSubtitle(e), r = this.getItemDisabled(e), a = this.selectedValues.has(String(o)), d = t === this.focusedIndex, c = this.matchingIndices.has(t), p = ["ml__option"];
1622
+ a && p.push("ml__option--selected"), d && p.push("ml__option--focused"), c && p.push("ml__option--matched"), r && p.push("ml__option--disabled");
1623
+ const u = this.options.checkboxAlign && this.options.checkboxAlign !== "top" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "";
1624
+ let h = `<div class="${p.join(" ")}" data-value="${o}" data-index="${t}"${u}>`;
1625
+ if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && (h += `<input type="checkbox" class="ml__checkbox" ${a ? "checked" : ""} ${r ? "disabled" : ""}>`), h += '<div class="ml__option-content">', this.options.renderOptionContentCallback) {
1626
+ const g = {
1627
+ index: t,
1628
+ isSelected: a,
1629
+ isFocused: d,
1630
+ isMatched: c,
1631
+ isDisabled: r
1632
+ }, b = this.options.renderOptionContentCallback(e, g);
1633
+ typeof b == "string" ? h += b : h += b.outerHTML;
1634
+ } else
1635
+ n && (h += `<span class="ml__option-icon">${n}</span>`), h += '<div class="ml__option-text">', h += `<div class="ml__option-title">${this.highlightMatch(s, this.searchTerm)}</div>`, l && (h += `<div class="ml__option-subtitle">${l}</div>`), h += "</div>";
1636
+ return h += "</div>", h += "</div>", h;
1618
1637
  }
1619
1638
  highlightMatch(e, t) {
1620
1639
  if (!t) return e;
1621
- const l = new RegExp(`(${t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`, "gi");
1622
- return e.replace(l, "<mark>$1</mark>");
1640
+ const o = new RegExp(`(${t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`, "gi");
1641
+ return e.replace(o, "<mark>$1</mark>");
1623
1642
  }
1624
1643
  groupOptions(e) {
1625
1644
  const t = {};
1626
- return e.forEach((l) => {
1627
- const o = this.getItemGroup(l) || "__ungrouped__";
1628
- t[o] || (t[o] = []), t[o].push(l);
1645
+ return e.forEach((o) => {
1646
+ const s = this.getItemGroup(o) || "__ungrouped__";
1647
+ t[s] || (t[s] = []), t[s].push(o);
1629
1648
  }), t;
1630
1649
  }
1631
- renderPills() {
1632
- this.destroyAllPillTooltips();
1650
+ renderBadges() {
1651
+ this.destroyAllBadgeTooltips();
1633
1652
  const e = Array.from(this.selectedOptions.values()), t = this.selectedValues.size;
1634
1653
  if (!this.options.isMultipleEnabled) {
1635
- this.pillsContainer.innerHTML = "", this.countBadge.style.display = "none";
1636
- const s = e[0] ? this.getItemDisplayValue(e[0]) : void 0;
1637
- v.warn(`[${this.instanceId}] renderPills() single-select mode`, {
1654
+ this.badgesContainer.innerHTML = "", this.counter.style.display = "none";
1655
+ let n;
1656
+ e[0] && (this.options.renderSelectedContentCallback ? n = this.options.renderSelectedContentCallback(e[0]) : n = this.getItemDisplayValue(e[0])), f.warn(`[${this.instanceId}] renderBadges() single-select mode`, {
1638
1657
  isOpen: this.isOpen,
1639
1658
  count: t,
1640
1659
  selectedOptionsLength: e.length,
1641
1660
  willSetValue: !this.isOpen && t > 0 && e.length > 0,
1642
- selectedLabel: s
1643
- }), !this.isOpen && t > 0 && e.length > 0 ? (v.info(`[${this.instanceId}] ✅ SETTING input.value = "${s}"`), this.input.value = s, v.info(`[${this.instanceId}] 🔍 VERIFY input.value = "${this.input.value}"`)) : this.isOpen ? v.info(`[${this.instanceId}] ⏭️ SKIPPING input update (dropdown is open)`) : (v.info(`[${this.instanceId}] ❌ CLEARING input.value (no selection)`), this.input.value = "");
1661
+ selectedLabel: n
1662
+ }), !this.isOpen && t > 0 && e.length > 0 ? (f.info(`[${this.instanceId}] ✅ SETTING input.value = "${n}"`), this.input.value = n, f.info(`[${this.instanceId}] 🔍 VERIFY input.value = "${this.input.value}"`)) : this.isOpen ? f.info(`[${this.instanceId}] ⏭️ SKIPPING input update (dropdown is open)`) : (f.info(`[${this.instanceId}] ❌ CLEARING input.value (no selection)`), this.input.value = "");
1644
1663
  return;
1645
1664
  }
1646
- let l = this.options.pillsDisplayMode;
1647
- if (this.options.pillsThreshold !== null && t > this.options.pillsThreshold && l !== "none" && (l = this.options.pillsThresholdMode || "count"), !this.isOpen)
1648
- if (t > 0 && l === "count") {
1649
- const s = this.options.getCountPillCallback ? this.options.getCountPillCallback(t) : `${t} selected`;
1650
- this.input.placeholder = s;
1665
+ let o = this.options.badgesDisplayMode;
1666
+ if (this.options.badgesThreshold !== null && t > this.options.badgesThreshold && o !== "none" && (o = this.options.badgesThresholdMode || "count"), !this.isOpen)
1667
+ if (t > 0 && o === "count") {
1668
+ const n = this.options.getCounterCallback ? this.options.getCounterCallback(t) : `${t} selected`;
1669
+ this.input.placeholder = n;
1651
1670
  } else
1652
1671
  this.input.placeholder = this.options.searchPlaceholder;
1653
- if (this.options.isCountBadgeShown && t > 0 ? (this.countBadge.textContent = `[${t}]`, this.countBadge.style.display = "") : this.countBadge.style.display = "none", l === "none") {
1654
- this.pillsContainer.innerHTML = "";
1672
+ if (this.options.isCounterShown && t > 0 ? (this.counter.textContent = `[${t}]`, this.counter.style.display = "") : this.counter.style.display = "none", o === "none") {
1673
+ this.badgesContainer.innerHTML = "";
1655
1674
  return;
1656
1675
  }
1657
- if (l === "pills")
1658
- this.pillsContainer.className = `ml__pills ml__pills--${this.effectivePillsPosition}`, this.pillsContainer.innerHTML = e.map((s) => {
1659
- const n = this.getItemValue(s), r = this.getItemPillDisplayValue(s);
1676
+ if (o === "badges")
1677
+ this.badgesContainer.className = `ml__badges ml__badges--${this.effectiveBadgesPosition}`, this.badgesContainer.innerHTML = e.map((n) => {
1678
+ const l = this.getItemValue(n);
1679
+ let r;
1680
+ if (this.options.renderBadgeContentCallback) {
1681
+ const d = {
1682
+ displayMode: "badges",
1683
+ isInPopover: !1
1684
+ }, c = this.options.renderBadgeContentCallback(n, d);
1685
+ r = typeof c == "string" ? c : c.outerHTML;
1686
+ } else
1687
+ r = this.getItemBadgeDisplayValue(n);
1688
+ let a = "ml__badge";
1689
+ if (this.options.getBadgeClassCallback) {
1690
+ const d = this.options.getBadgeClassCallback(n), c = Array.isArray(d) ? d : [d];
1691
+ a += " " + c.filter((p) => p).join(" ");
1692
+ }
1660
1693
  return `
1661
- <div class="ml__pill">
1662
- <span class="ml__pill-text">${r}</span>
1663
- <button type="button" class="ml__pill-remove" data-value="${n}" aria-label="Remove ${r}"></button>
1694
+ <div class="${a}">
1695
+ <span class="ml__badge-text">${r}</span>
1696
+ <button type="button" class="ml__badge-remove" data-value="${l}" aria-label="Remove ${this.getItemBadgeDisplayValue(n)}"></button>
1664
1697
  </div>
1665
1698
  `;
1666
1699
  }).join("");
1667
- else if (l === "partial") {
1668
- this.pillsContainer.className = `ml__pills ml__pills--${this.effectivePillsPosition}`;
1669
- const s = this.options.pillsMaxVisible || 3, n = e.slice(0, s), r = t - s, a = n.map((c) => {
1670
- const m = this.getItemValue(c), p = this.getItemPillDisplayValue(c);
1700
+ else if (o === "partial") {
1701
+ this.badgesContainer.className = `ml__badges ml__badges--${this.effectiveBadgesPosition}`;
1702
+ const n = this.options.badgesMaxVisible || 3, l = e.slice(0, n), r = t - n, a = l.map((c) => {
1703
+ const p = this.getItemValue(c);
1704
+ let u;
1705
+ if (this.options.renderBadgeContentCallback) {
1706
+ const g = {
1707
+ displayMode: "partial",
1708
+ isInPopover: !1
1709
+ }, b = this.options.renderBadgeContentCallback(c, g);
1710
+ u = typeof b == "string" ? b : b.outerHTML;
1711
+ } else
1712
+ u = this.getItemBadgeDisplayValue(c);
1713
+ let h = "ml__badge";
1714
+ if (this.options.getBadgeClassCallback) {
1715
+ const g = this.options.getBadgeClassCallback(c), b = Array.isArray(g) ? g : [g];
1716
+ h += " " + b.filter((v) => v).join(" ");
1717
+ }
1671
1718
  return `
1672
- <div class="ml__pill">
1673
- <span class="ml__pill-text">${p}</span>
1674
- <button type="button" class="ml__pill-remove" data-value="${m}" aria-label="Remove ${p}"></button>
1719
+ <div class="${h}">
1720
+ <span class="ml__badge-text">${u}</span>
1721
+ <button type="button" class="ml__badge-remove" data-value="${p}" aria-label="Remove ${this.getItemBadgeDisplayValue(c)}"></button>
1675
1722
  </div>
1676
1723
  `;
1677
1724
  }).join("");
1678
1725
  let d = "";
1679
1726
  r > 0 && (d = `
1680
- <div class="ml__pill ml__pill--more" data-action="show-selected">
1681
- <span class="ml__pill-text">${this.options.getCountPillCallback ? this.options.getCountPillCallback(t, r) : `+${r} more`}</span>
1682
- <button type="button" class="ml__pill-remove" data-action="remove-hidden" aria-label="Remove ${r} hidden items"></button>
1727
+ <div class="ml__badge ml__badge--counter ml__badge--more" data-action="show-selected">
1728
+ <span class="ml__badge-text">${this.options.getCounterCallback ? this.options.getCounterCallback(t, r) : `+${r} more`}</span>
1729
+ <button type="button" class="ml__badge-remove" data-action="remove-hidden" aria-label="Remove ${r} hidden items"></button>
1683
1730
  </div>
1684
- `), this.pillsContainer.innerHTML = a + d;
1685
- } else if (l === "compact")
1686
- if (this.pillsContainer.className = `ml__count-display ml__count-display--${this.effectivePillsPosition}`, t > 0) {
1687
- const s = e[0], n = this.getItemPillDisplayValue(s), r = t - 1;
1688
- let a = n;
1731
+ `), this.badgesContainer.innerHTML = a + d;
1732
+ } else if (o === "compact")
1733
+ if (this.badgesContainer.className = `ml__badges ml__badges--${this.effectiveBadgesPosition}`, t > 0) {
1734
+ const n = e[0], l = this.getItemBadgeDisplayValue(n), r = t - 1;
1735
+ let a = l;
1689
1736
  if (r > 0) {
1690
- const d = this.options.getCountPillCallback ? this.options.getCountPillCallback(t, r) : `+${r} more`;
1691
- a = `${n} (${d})`;
1737
+ const d = this.options.getCounterCallback ? this.options.getCounterCallback(t, r) : `+${r} more`;
1738
+ a = `${l} (${d})`;
1692
1739
  }
1693
- this.pillsContainer.innerHTML = `
1694
- <div class="ml__count-badge-wrapper">
1695
- <button type="button" class="ml__count-text" data-action="show-selected">
1696
- ${a}
1697
- </button>
1698
- <button type="button" class="ml__count-clear" data-action="clear-count" aria-label="Clear all selections"></button>
1740
+ this.badgesContainer.innerHTML = `
1741
+ <div class="ml__badge ml__badge--counter" data-action="show-selected">
1742
+ <span class="ml__badge-text">${a}</span>
1743
+ <button type="button" class="ml__badge-remove" data-action="clear-count" aria-label="Clear all selections"></button>
1699
1744
  </div>
1700
1745
  `;
1701
1746
  } else
1702
- this.pillsContainer.innerHTML = "";
1703
- else if (this.pillsContainer.className = `ml__count-display ml__count-display--${this.effectivePillsPosition}`, t > 0) {
1704
- const s = this.options.getCountPillCallback ? this.options.getCountPillCallback(t) : `${t} selected`;
1705
- this.pillsContainer.innerHTML = `
1706
- <div class="ml__count-badge-wrapper">
1707
- <button type="button" class="ml__count-text" data-action="show-selected">
1708
- ${s}
1709
- </button>
1710
- <button type="button" class="ml__count-clear" data-action="clear-count" aria-label="Clear all selections"></button>
1747
+ this.badgesContainer.innerHTML = "";
1748
+ else if (this.badgesContainer.className = `ml__badges ml__badges--${this.effectiveBadgesPosition}`, t > 0) {
1749
+ const n = this.options.getCounterCallback ? this.options.getCounterCallback(t) : `${t} selected`;
1750
+ this.badgesContainer.innerHTML = `
1751
+ <div class="ml__badge ml__badge--counter" data-action="show-selected">
1752
+ <span class="ml__badge-text">${n}</span>
1753
+ <button type="button" class="ml__badge-remove" data-action="clear-count" aria-label="Clear all selections"></button>
1711
1754
  </div>
1712
1755
  `;
1713
1756
  } else
1714
- this.pillsContainer.innerHTML = "";
1715
- this.attachPillTooltips();
1757
+ this.badgesContainer.innerHTML = "";
1758
+ this.attachBadgeTooltips();
1716
1759
  }
1717
1760
  attachEvents() {
1718
1761
  this.input.addEventListener("mousedown", (e) => {
@@ -1729,13 +1772,13 @@ class di {
1729
1772
  }, 0), this.dropdown.addEventListener("click", (e) => this.handleDropdownClick(e)), this.dropdown.addEventListener("wheel", (e) => {
1730
1773
  if (this.virtualScroll)
1731
1774
  return;
1732
- const t = e.currentTarget, l = t.scrollTop === 0, o = t.scrollTop + t.clientHeight >= t.scrollHeight;
1733
- (e.deltaY < 0 && l || e.deltaY > 0 && o) && e.preventDefault(), e.stopPropagation();
1734
- }, { passive: !1 }), this.pillsContainer.addEventListener("mousedown", (e) => {
1735
- e.target.closest(".ml__count-text") && !this.showSelectedPopover && e.stopPropagation();
1736
- }), this.pillsContainer.addEventListener("click", (e) => this.handlePillClick(e)), this.countBadge.addEventListener("mousedown", (e) => {
1775
+ const t = e.currentTarget, o = t.scrollTop === 0, s = t.scrollTop + t.clientHeight >= t.scrollHeight;
1776
+ (e.deltaY < 0 && o || e.deltaY > 0 && s) && e.preventDefault(), e.stopPropagation();
1777
+ }, { passive: !1 }), this.badgesContainer.addEventListener("mousedown", (e) => {
1778
+ e.target.closest('[data-action="show-selected"]') && !this.showSelectedPopover && e.stopPropagation();
1779
+ }), this.badgesContainer.addEventListener("click", (e) => this.handleBadgeClick(e)), this.counter.addEventListener("mousedown", (e) => {
1737
1780
  this.showSelectedPopover || e.stopPropagation();
1738
- }), this.countBadge.addEventListener("click", (e) => {
1781
+ }), this.counter.addEventListener("click", (e) => {
1739
1782
  e.stopPropagation(), this.toggleSelectedPopover();
1740
1783
  }), this.selectedPopover.addEventListener("click", (e) => this.handleSelectedPopoverClick(e));
1741
1784
  }
@@ -1744,41 +1787,41 @@ class di {
1744
1787
  return;
1745
1788
  let t = e;
1746
1789
  if (this.options.beforeSearchCallback) {
1747
- const l = this.options.beforeSearchCallback(e);
1748
- if (l === null) {
1749
- C.debug(`[${this.instanceId}] beforeSearchCallback blocked search for term:`, e), this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.renderDropdown();
1790
+ const o = this.options.beforeSearchCallback(e);
1791
+ if (o === null) {
1792
+ S.debug(`[${this.instanceId}] beforeSearchCallback blocked search for term:`, e), this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.renderDropdown();
1750
1793
  return;
1751
1794
  }
1752
- t = l, t !== e && C.debug(`[${this.instanceId}] beforeSearchCallback transformed: "${e}" -> "${t}"`);
1795
+ t = o, t !== e && S.debug(`[${this.instanceId}] beforeSearchCallback transformed: "${e}" -> "${t}"`);
1753
1796
  }
1754
1797
  if (this.options.searchCallback) {
1755
1798
  if (t.length < this.options.minSearchLength) {
1756
- this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.filteredOptions = [...this.allOptions], C.debug(`[${this.instanceId}] Search term below minimum, showing ${this.allOptions.length} initial options`)) : this.filteredOptions = [], this.matchingIndices.clear(), this.renderDropdown();
1799
+ this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.filteredOptions = [...this.allOptions], S.debug(`[${this.instanceId}] Search term below minimum, showing ${this.allOptions.length} initial options`)) : this.filteredOptions = [], this.matchingIndices.clear(), this.renderDropdown();
1757
1800
  return;
1758
1801
  }
1759
- this.isLoading = !0, this.renderDropdown(), C.debug(`[${this.instanceId}] Loading data for search term:`, t);
1802
+ this.isLoading = !0, this.renderDropdown(), S.debug(`[${this.instanceId}] Loading data for search term:`, t);
1760
1803
  try {
1761
- const l = await this.options.searchCallback(t);
1804
+ const o = await this.options.searchCallback(t);
1762
1805
  if (this.searchTerm === e) {
1763
- const o = l || [];
1764
- this.filteredOptions = [...o], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), C.debug(`[${this.instanceId}] Loaded ${o.length} results`);
1806
+ const s = o || [];
1807
+ this.filteredOptions = [...s], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), S.debug(`[${this.instanceId}] Loaded ${s.length} results`);
1765
1808
  }
1766
- } catch (l) {
1767
- C.error(`[${this.instanceId}] Error loading data:`, l), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? this.filteredOptions = [...this.allOptions] : this.filteredOptions = [], this.matchingIndices.clear(), this.renderDropdown();
1809
+ } catch (o) {
1810
+ S.error(`[${this.instanceId}] Error loading data:`, o), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? this.filteredOptions = [...this.allOptions] : this.filteredOptions = [], this.matchingIndices.clear(), this.renderDropdown();
1768
1811
  }
1769
1812
  } else {
1770
1813
  if (!t)
1771
1814
  this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1;
1772
1815
  else {
1773
- const l = this.options.searchMode || "filter", o = t.toLowerCase();
1774
- if (l === "filter")
1775
- this.filteredOptions = this.allOptions.filter((s) => this.getItemSearchValue(s).toLowerCase().includes(o)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, C.debug(`[${this.instanceId}] Filter mode: ${this.filteredOptions.length} matches for "${t}"`);
1816
+ const o = this.options.searchMode || "filter", s = t.toLowerCase();
1817
+ if (o === "filter")
1818
+ this.filteredOptions = this.allOptions.filter((n) => this.getItemSearchValue(n).toLowerCase().includes(s)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, S.debug(`[${this.instanceId}] Filter mode: ${this.filteredOptions.length} matches for "${t}"`);
1776
1819
  else {
1777
1820
  this.filteredOptions = [...this.allOptions], this.matchingIndices.clear();
1778
- let s = -1;
1779
- this.allOptions.forEach((n, r) => {
1780
- this.getItemSearchValue(n).toLowerCase().includes(o) && (this.matchingIndices.add(r), s === -1 && (s = r));
1781
- }), s >= 0 ? (this.focusedIndex = s, C.debug(`[${this.instanceId}] Navigate mode: ${this.matchingIndices.size} matches, jumped to index ${s}`)) : C.debug(`[${this.instanceId}] Navigate mode: No matches found, keeping previous focus`);
1821
+ let n = -1;
1822
+ this.allOptions.forEach((l, r) => {
1823
+ this.getItemSearchValue(l).toLowerCase().includes(s) && (this.matchingIndices.add(r), n === -1 && (n = r));
1824
+ }), n >= 0 ? (this.focusedIndex = n, S.debug(`[${this.instanceId}] Navigate mode: ${this.matchingIndices.size} matches, jumped to index ${n}`)) : S.debug(`[${this.instanceId}] Navigate mode: No matches found, keeping previous focus`);
1782
1825
  }
1783
1826
  }
1784
1827
  this.renderDropdown(), this.options.searchMode === "navigate" && this.focusedIndex >= 0 && this.scrollToFocused();
@@ -1790,8 +1833,8 @@ class di {
1790
1833
  return;
1791
1834
  }
1792
1835
  if (!this.options.isSearchEnabled) {
1793
- const t = e.key.length === 1 || e.key === "Backspace" || e.key === "Delete", l = ["ArrowUp", "ArrowDown", "PageUp", "PageDown", "Home", "End", "Enter", "Escape", "Tab"].includes(e.key);
1794
- if (t && !l) {
1836
+ const t = e.key.length === 1 || e.key === "Backspace" || e.key === "Delete", o = ["ArrowUp", "ArrowDown", "PageUp", "PageDown", "Home", "End", "Enter", "Escape", "Tab"].includes(e.key);
1837
+ if (t && !o) {
1795
1838
  e.preventDefault();
1796
1839
  return;
1797
1840
  }
@@ -1827,74 +1870,87 @@ class di {
1827
1870
  }
1828
1871
  }
1829
1872
  handleDropdownClick(e) {
1830
- k.debug(`[${this.instanceId}] Dropdown clicked`, { target: e.target.className }), e.stopPropagation();
1873
+ var s;
1874
+ I.debug(`[${this.instanceId}] Dropdown clicked`, { target: e.target.className }), e.stopPropagation();
1831
1875
  const t = e.target.closest("[data-action]");
1832
1876
  if (t) {
1833
1877
  e.preventDefault();
1834
- const o = t.dataset.action;
1835
- k.debug(`[${this.instanceId}] Action button clicked:`, o), o === "select-all" ? this.selectAll() : o === "clear-all" && this.clearAll();
1878
+ const n = t.dataset.action;
1879
+ if (I.debug(`[${this.instanceId}] Action button clicked:`, n), n === "select-all")
1880
+ this.selectAll();
1881
+ else if (n === "clear-all")
1882
+ this.clearAll();
1883
+ else if (n === "custom") {
1884
+ const l = (s = this.options.actionButtons) == null ? void 0 : s.find(
1885
+ (r) => {
1886
+ var a;
1887
+ return r.action === "custom" && r.text === ((a = t.textContent) == null ? void 0 : a.trim());
1888
+ }
1889
+ );
1890
+ l != null && l.onClick && l.onClick(this);
1891
+ }
1836
1892
  return;
1837
1893
  }
1838
- const l = e.target.closest(".ml__option");
1839
- if (l && !l.classList.contains("ml__option--disabled")) {
1894
+ const o = e.target.closest(".ml__option");
1895
+ if (o && !o.classList.contains("ml__option--disabled")) {
1840
1896
  e.preventDefault();
1841
- const o = l.dataset.value, s = this.filteredOptions.find((n) => String(this.getItemValue(n)) === o);
1842
- k.debug(`[${this.instanceId}] Option clicked:`, {
1843
- value: o,
1897
+ const n = o.dataset.value, l = this.filteredOptions.find((r) => String(this.getItemValue(r)) === n);
1898
+ I.debug(`[${this.instanceId}] Option clicked:`, {
1899
+ value: n,
1844
1900
  closeOnSelect: this.options.isCloseOnSelect,
1845
1901
  placeholder: this.options.searchPlaceholder
1846
- }), s && this.toggleOption(s);
1902
+ }), l && this.toggleOption(l);
1847
1903
  }
1848
1904
  }
1849
- handlePillClick(e) {
1850
- if (e.target.closest(".ml__count-clear")) {
1851
- e.preventDefault(), e.stopPropagation(), k.debug(`[${this.instanceId}] Count clear button clicked`), this.clearAll();
1905
+ handleBadgeClick(e) {
1906
+ if (e.target.closest('[data-action="clear-count"]')) {
1907
+ e.preventDefault(), e.stopPropagation(), I.debug(`[${this.instanceId}] Clear count button clicked`), this.clearAll();
1852
1908
  return;
1853
1909
  }
1854
- if (e.target.closest(".ml__count-text")) {
1910
+ if (e.target.closest('[data-action="show-selected"]')) {
1855
1911
  e.preventDefault(), e.stopPropagation(), this.toggleSelectedPopover();
1856
1912
  return;
1857
1913
  }
1858
- const o = e.target.closest(".ml__pill-remove");
1859
- if (o) {
1860
- if (e.preventDefault(), e.stopPropagation(), o.dataset.action === "remove-hidden") {
1861
- k.debug(`[${this.instanceId}] Remove hidden items button clicked`);
1862
- const a = this.options.pillsMaxVisible || 3;
1863
- Array.from(this.selectedOptions.values()).slice(a).forEach((m) => this.deselectOption(m));
1914
+ const s = e.target.closest(".ml__badge-remove");
1915
+ if (s) {
1916
+ if (e.preventDefault(), e.stopPropagation(), s.dataset.action === "remove-hidden") {
1917
+ I.debug(`[${this.instanceId}] Remove hidden items button clicked`);
1918
+ const a = this.options.badgesMaxVisible || 3;
1919
+ Array.from(this.selectedOptions.values()).slice(a).forEach((p) => this.deselectOption(p));
1864
1920
  return;
1865
1921
  }
1866
- const n = o.dataset.value, r = this.selectedOptions.get(n);
1922
+ const l = s.dataset.value, r = this.selectedOptions.get(l);
1867
1923
  r && this.deselectOption(r);
1868
1924
  return;
1869
1925
  }
1870
- if (e.target.closest(".ml__pill--more") && !e.target.closest(".ml__pill-remove")) {
1871
- e.preventDefault(), e.stopPropagation(), k.debug(`[${this.instanceId}] '+X more' badge clicked, showing popover`), this.toggleSelectedPopover();
1926
+ if (e.target.closest(".ml__badge--more") && !e.target.closest(".ml__badge-remove")) {
1927
+ e.preventDefault(), e.stopPropagation(), I.debug(`[${this.instanceId}] '+X more' badge clicked, showing popover`), this.toggleSelectedPopover();
1872
1928
  return;
1873
1929
  }
1874
1930
  }
1875
1931
  handleClickOutside(e) {
1876
- var o;
1932
+ var s;
1877
1933
  const t = e.composedPath();
1878
1934
  if (this.showSelectedPopover && !t.some(
1879
- (n) => n instanceof Node && (this.selectedPopover.contains(n) || this.countBadge.contains(n) || n.closest && n.closest(".ml__count-text"))
1935
+ (l) => l instanceof Node && (this.selectedPopover.contains(l) || this.counter.contains(l) || l.closest && l.closest('[data-action="show-selected"]'))
1880
1936
  )) {
1881
- v.debug(`[${this.instanceId}] Closing selected popover due to click outside`), this.hideSelectedPopover();
1937
+ f.debug(`[${this.instanceId}] Closing selected popover due to click outside`), this.hideSelectedPopover();
1882
1938
  return;
1883
1939
  }
1884
1940
  if (!this.isOpen) return;
1885
- const l = t.some(
1886
- (s) => s instanceof Node && (this.element.contains(s) || this.dropdown.contains(s) || this.hint && this.hint.contains(s))
1941
+ const o = t.some(
1942
+ (n) => n instanceof Node && (this.element.contains(n) || this.dropdown.contains(n) || this.hint && this.hint.contains(n))
1887
1943
  );
1888
- k.debug(`[${this.instanceId}] handleClickOutside`, {
1944
+ I.debug(`[${this.instanceId}] handleClickOutside`, {
1889
1945
  target: e.target.className,
1890
1946
  targetTag: e.target.tagName,
1891
- clickedInside: l,
1947
+ clickedInside: o,
1892
1948
  pathLength: t.length,
1893
- firstInPath: (o = t[0]) == null ? void 0 : o.tagName,
1894
- elementContains: t.some((s) => s instanceof Node && this.element.contains(s)),
1895
- dropdownContains: t.some((s) => s instanceof Node && this.dropdown.contains(s)),
1949
+ firstInPath: (s = t[0]) == null ? void 0 : s.tagName,
1950
+ elementContains: t.some((n) => n instanceof Node && this.element.contains(n)),
1951
+ dropdownContains: t.some((n) => n instanceof Node && this.dropdown.contains(n)),
1896
1952
  isConnected: this.dropdown.isConnected
1897
- }), l || (k.warn(`[${this.instanceId}] Closing dropdown due to click outside`), this.close());
1953
+ }), o || (I.warn(`[${this.instanceId}] Closing dropdown due to click outside`), this.close());
1898
1954
  }
1899
1955
  focusNext() {
1900
1956
  this.filteredOptions.length !== 0 && (this.focusedIndex = Math.min(this.filteredOptions.length - 1, this.focusedIndex + 1), this.renderDropdown(), this.scrollToFocused());
@@ -1910,13 +1966,13 @@ class di {
1910
1966
  }
1911
1967
  focusNextMatch() {
1912
1968
  if (this.matchingIndices.size === 0) return;
1913
- const e = Array.from(this.matchingIndices).sort((o, s) => o - s), t = e.findIndex((o) => o === this.focusedIndex), l = (t + 1) % e.length;
1914
- this.focusedIndex = e[l], this.renderDropdown(), this.scrollToFocused(), k.debug(`[${this.instanceId}] Jumped to next match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
1969
+ const e = Array.from(this.matchingIndices).sort((s, n) => s - n), t = e.findIndex((s) => s === this.focusedIndex), o = (t + 1) % e.length;
1970
+ this.focusedIndex = e[o], this.renderDropdown(), this.scrollToFocused(), I.debug(`[${this.instanceId}] Jumped to next match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
1915
1971
  }
1916
1972
  focusPreviousMatch() {
1917
1973
  if (this.matchingIndices.size === 0) return;
1918
- const e = Array.from(this.matchingIndices).sort((o, s) => o - s), t = e.findIndex((o) => o === this.focusedIndex), l = t <= 0 ? e.length - 1 : t - 1;
1919
- this.focusedIndex = e[l], this.renderDropdown(), this.scrollToFocused(), k.debug(`[${this.instanceId}] Jumped to previous match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
1974
+ const e = Array.from(this.matchingIndices).sort((s, n) => s - n), t = e.findIndex((s) => s === this.focusedIndex), o = t <= 0 ? e.length - 1 : t - 1;
1975
+ this.focusedIndex = e[o], this.renderDropdown(), this.scrollToFocused(), I.debug(`[${this.instanceId}] Jumped to previous match: index ${this.focusedIndex} (${t + 1} of ${e.length})`);
1920
1976
  }
1921
1977
  focusPageUp() {
1922
1978
  this.filteredOptions.length !== 0 && (this.focusedIndex = Math.max(0, this.focusedIndex - 10), this.renderDropdown(), this.scrollToFocused());
@@ -1933,102 +1989,102 @@ class di {
1933
1989
  }
1934
1990
  }
1935
1991
  toggleOption(e) {
1936
- const t = this.getItemValue(e), l = String(t);
1937
- if (k.debug(`[${this.instanceId}] toggleOption called`, { value: t, multiple: this.options.isMultipleEnabled }), !this.options.isMultipleEnabled) {
1938
- this.selectedValues.has(l) ? (k.debug(`[${this.instanceId}] Deselecting option in single-select mode`, { value: t }), this.deselectOption(e)) : (k.debug(`[${this.instanceId}] Clearing previous selections and selecting new option`, { value: t }), this.selectedValues.clear(), this.selectedOptions.clear(), this.selectOption(e)), v.info(`[${this.instanceId}] ❌ Closing dropdown (single-select mode)`), this.close();
1992
+ const t = this.getItemValue(e), o = String(t);
1993
+ if (I.debug(`[${this.instanceId}] toggleOption called`, { value: t, multiple: this.options.isMultipleEnabled }), !this.options.isMultipleEnabled) {
1994
+ this.selectedValues.has(o) ? (I.debug(`[${this.instanceId}] Deselecting option in single-select mode`, { value: t }), this.deselectOption(e)) : (I.debug(`[${this.instanceId}] Clearing previous selections and selecting new option`, { value: t }), this.selectedValues.clear(), this.selectedOptions.clear(), this.selectOption(e)), f.info(`[${this.instanceId}] ❌ Closing dropdown (single-select mode)`), this.close();
1939
1995
  return;
1940
1996
  }
1941
- this.selectedValues.has(l) ? (k.debug(`[${this.instanceId}] Deselecting option`, { value: t }), this.deselectOption(e)) : (k.debug(`[${this.instanceId}] Selecting option`, { value: t }), this.selectOption(e)), k.debug(`[${this.instanceId}] Checking closeOnSelect`, {
1997
+ this.selectedValues.has(o) ? (I.debug(`[${this.instanceId}] Deselecting option`, { value: t }), this.deselectOption(e)) : (I.debug(`[${this.instanceId}] Selecting option`, { value: t }), this.selectOption(e)), I.debug(`[${this.instanceId}] Checking closeOnSelect`, {
1942
1998
  closeOnSelect: this.options.isCloseOnSelect,
1943
1999
  willClose: this.options.isCloseOnSelect === !0,
1944
2000
  placeholder: this.options.searchPlaceholder
1945
- }), this.options.isCloseOnSelect ? (v.info(`[${this.instanceId}] ❌ Closing dropdown (closeOnSelect=true)`), this.close()) : v.info(`[${this.instanceId}] ✅ Keeping dropdown open (closeOnSelect=false)`);
2001
+ }), this.options.isCloseOnSelect ? (f.info(`[${this.instanceId}] ❌ Closing dropdown (closeOnSelect=true)`), this.close()) : f.info(`[${this.instanceId}] ✅ Keeping dropdown open (closeOnSelect=false)`);
1946
2002
  }
1947
2003
  async handleAddNew(e) {
1948
2004
  if (this.options.addNewCallback)
1949
2005
  try {
1950
- C.debug(`[${this.instanceId}] Adding new option:`, e);
2006
+ S.debug(`[${this.instanceId}] Adding new option:`, e);
1951
2007
  const t = await this.options.addNewCallback(e);
1952
- this.allOptions.push(t), this.filteredOptions.push(t), this.selectOption(t), this.input.value = "", this.renderDropdown(), this.renderPills(), this.options.isCloseOnSelect && this.close();
2008
+ this.allOptions.push(t), this.filteredOptions.push(t), this.selectOption(t), this.input.value = "", this.renderDropdown(), this.renderBadges(), this.options.isCloseOnSelect && this.close();
1953
2009
  } catch (t) {
1954
- C.error(`[${this.instanceId}] Error adding new option:`, t);
2010
+ S.error(`[${this.instanceId}] Error adding new option:`, t);
1955
2011
  }
1956
2012
  }
1957
2013
  selectOption(e) {
1958
- const t = this.getItemValue(e), l = String(t);
1959
- this.selectedValues.add(l), this.selectedOptions.set(l, e), this.renderDropdown(), this.renderPills(), this.updateHiddenInput(), this.options.selectCallback && this.options.selectCallback(e), this.options.changeCallback && this.options.changeCallback(this.getSelected());
2014
+ const t = this.getItemValue(e), o = String(t);
2015
+ this.selectedValues.add(o), this.selectedOptions.set(o, e), this.renderDropdown(), this.renderBadges(), this.updateHiddenInput(), this.options.selectCallback && this.options.selectCallback(e), this.options.changeCallback && this.options.changeCallback(this.getSelected());
1960
2016
  }
1961
2017
  deselectOption(e) {
1962
- const t = this.getItemValue(e), l = String(t);
1963
- this.selectedValues.delete(l), this.selectedOptions.delete(l), this.renderDropdown(), this.renderPills(), this.updateHiddenInput(), this.options.deselectCallback && this.options.deselectCallback(e), this.options.changeCallback && this.options.changeCallback(this.getSelected());
2018
+ const t = this.getItemValue(e), o = String(t);
2019
+ this.selectedValues.delete(o), this.selectedOptions.delete(o), this.renderDropdown(), this.renderBadges(), this.updateHiddenInput(), this.options.deselectCallback && this.options.deselectCallback(e), this.options.changeCallback && this.options.changeCallback(this.getSelected());
1964
2020
  }
1965
2021
  selectAll() {
1966
2022
  this.filteredOptions.forEach((e) => {
1967
2023
  if (!this.getItemDisabled(e)) {
1968
- const t = this.getItemValue(e), l = String(t);
1969
- this.selectedValues.add(l), this.selectedOptions.set(l, e);
2024
+ const t = this.getItemValue(e), o = String(t);
2025
+ this.selectedValues.add(o), this.selectedOptions.set(o, e);
1970
2026
  }
1971
- }), this.renderDropdown(), this.renderPills(), this.updateHiddenInput(), this.options.changeCallback && this.options.changeCallback(this.getSelected());
2027
+ }), this.renderDropdown(), this.renderBadges(), this.updateHiddenInput(), this.options.changeCallback && this.options.changeCallback(this.getSelected());
1972
2028
  }
1973
2029
  clearAll() {
1974
- this.selectedValues.clear(), this.selectedOptions.clear(), this.renderDropdown(), this.renderPills(), this.updateHiddenInput(), this.options.changeCallback && this.options.changeCallback(this.getSelected());
2030
+ this.selectedValues.clear(), this.selectedOptions.clear(), this.renderDropdown(), this.renderBadges(), this.updateHiddenInput(), this.options.changeCallback && this.options.changeCallback(this.getSelected());
1975
2031
  }
1976
2032
  open() {
1977
- v.debug(`[${this.instanceId}] open() called`, { isOpen: this.isOpen }), !this.isOpen && (this.isOpen = !0, this.element.classList.add("ml--open"), this.dropdown.classList.add("ml__dropdown--visible"), v.info(`[${this.instanceId}] Dropdown opened`), this.input.placeholder = this.options.searchPlaceholder, !this.options.isMultipleEnabled && this.options.isSearchEnabled && (this.input.value = ""), this.options.searchCallback && this.options.isKeepOptionsOnSearch && !this.searchTerm && (this.filteredOptions = [...this.allOptions], v.debug(`[${this.instanceId}] Showing ${this.allOptions.length} initial options on open`)), this.renderDropdown(), this.positionDropdown(), this.hint && (this.hint.classList.add("ml__hint--visible"), this.positionHint()));
2033
+ f.debug(`[${this.instanceId}] open() called`, { isOpen: this.isOpen }), !this.isOpen && (this.isOpen = !0, this.element.classList.add("ml--open"), this.dropdown.classList.add("ml__dropdown--visible"), f.info(`[${this.instanceId}] Dropdown opened`), this.input.placeholder = this.options.searchPlaceholder, !this.options.isMultipleEnabled && this.options.isSearchEnabled && (this.input.value = ""), this.options.searchCallback && this.options.isKeepOptionsOnSearch && !this.searchTerm && (this.filteredOptions = [...this.allOptions], f.debug(`[${this.instanceId}] Showing ${this.allOptions.length} initial options on open`)), this.renderDropdown(), this.positionDropdown(), this.hint && (this.hint.classList.add("ml__hint--visible"), this.positionHint()));
1978
2034
  }
1979
2035
  close() {
1980
- if (v.debug(`[${this.instanceId}] close() called`, { isOpen: this.isOpen }), !this.isOpen) return;
2036
+ if (f.debug(`[${this.instanceId}] close() called`, { isOpen: this.isOpen }), !this.isOpen) return;
1981
2037
  this.isOpen = !1, this.element.classList.remove("ml--open"), this.dropdown.classList.remove("ml__dropdown--visible"), this.hint && this.hint.classList.remove("ml__hint--visible"), this.searchTerm = "";
1982
2038
  const e = this.options.isMultipleEnabled || this.options.isSearchEnabled;
1983
- v.warn(`[${this.instanceId}] close() - input clearing decision`, {
2039
+ f.warn(`[${this.instanceId}] close() - input clearing decision`, {
1984
2040
  multiple: this.options.isMultipleEnabled,
1985
2041
  enableSearch: this.options.isSearchEnabled,
1986
2042
  willClearInput: e,
1987
2043
  currentInputValue: this.input.value
1988
- }), e ? (v.info(`[${this.instanceId}] 🧹 close() CLEARING input.value`), this.input.value = "") : v.info(`[${this.instanceId}] 🔒 close() KEEPING input.value = "${this.input.value}"`), this.filteredOptions = [...this.allOptions], this.focusedIndex = -1, v.info(`[${this.instanceId}] 📞 close() CALLING renderPills()`), this.renderPills(), v.info(`[${this.instanceId}] ✅ close() AFTER renderPills(), input.value = "${this.input.value}"`), this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.hintCleanup && (this.hintCleanup(), this.hintCleanup = null), this.dropdownPlacement = null, v.info(`[${this.instanceId}] Dropdown closed. Stack trace:`), v.trace();
2044
+ }), e ? (f.info(`[${this.instanceId}] 🧹 close() CLEARING input.value`), this.input.value = "") : f.info(`[${this.instanceId}] 🔒 close() KEEPING input.value = "${this.input.value}"`), this.filteredOptions = [...this.allOptions], this.focusedIndex = -1, f.info(`[${this.instanceId}] 📞 close() CALLING renderBadges()`), this.renderBadges(), f.info(`[${this.instanceId}] ✅ close() AFTER renderBadges(), input.value = "${this.input.value}"`), this.dropdownCleanup && (this.dropdownCleanup(), this.dropdownCleanup = null), this.hintCleanup && (this.hintCleanup(), this.hintCleanup = null), this.dropdownPlacement = null, f.info(`[${this.instanceId}] Dropdown closed. Stack trace:`), f.trace();
1989
2045
  }
1990
2046
  positionDropdown() {
1991
- this.dropdownCleanup = oe(
2047
+ this.dropdownCleanup = q(
1992
2048
  this.input,
1993
2049
  this.dropdown,
1994
2050
  () => {
1995
2051
  const e = this.options.isPlacementLocked && this.dropdownPlacement ? this.dropdownPlacement : "bottom-start", t = [
1996
- se(4),
1997
- ...this.options.isPlacementLocked && this.dropdownPlacement ? [] : [xe()],
1998
- ne({ padding: 8 })
2052
+ Z(4),
2053
+ ...this.options.isPlacementLocked && this.dropdownPlacement ? [] : [re()],
2054
+ Q({ padding: 8 })
1999
2055
  ];
2000
- re(this.input, this.dropdown, {
2056
+ ee(this.input, this.dropdown, {
2001
2057
  placement: e,
2002
2058
  middleware: t
2003
- }).then(({ x: l, y: o, placement: s }) => {
2004
- this.options.isPlacementLocked && !this.dropdownPlacement && (this.dropdownPlacement = s, v.debug(`[${this.instanceId}] Locked dropdown placement:`, s));
2005
- const n = {
2006
- left: `${l}px`,
2007
- top: `${o}px`,
2059
+ }).then(({ x: o, y: s, placement: n }) => {
2060
+ this.options.isPlacementLocked && !this.dropdownPlacement && (this.dropdownPlacement = n, f.debug(`[${this.instanceId}] Locked dropdown placement:`, n));
2061
+ const l = {
2062
+ left: `${o}px`,
2063
+ top: `${s}px`,
2008
2064
  width: `${this.input.offsetWidth}px`
2009
2065
  };
2010
- this.options.dropdownMinWidth && (n.minWidth = this.options.dropdownMinWidth), Object.assign(this.dropdown.style, n), this.hint && this.isOpen && this.positionHint();
2066
+ this.options.dropdownMinWidth && (l.minWidth = this.options.dropdownMinWidth), Object.assign(this.dropdown.style, l), this.hint && this.isOpen && this.positionHint();
2011
2067
  });
2012
2068
  }
2013
2069
  );
2014
2070
  }
2015
2071
  positionHint() {
2016
- this.hint && (this.hintCleanup && this.hintCleanup(), this.hintCleanup = oe(
2072
+ this.hint && (this.hintCleanup && this.hintCleanup(), this.hintCleanup = q(
2017
2073
  this.input,
2018
2074
  this.hint,
2019
2075
  () => {
2020
2076
  let e = "top-start";
2021
- this.dropdownPlacement && (this.dropdownPlacement.startsWith("bottom") ? e = this.dropdownPlacement.replace("bottom", "top") : this.dropdownPlacement.startsWith("top") && (e = this.dropdownPlacement.replace("top", "bottom"))), re(this.input, this.hint, {
2077
+ this.dropdownPlacement && (this.dropdownPlacement.startsWith("bottom") ? e = this.dropdownPlacement.replace("bottom", "top") : this.dropdownPlacement.startsWith("top") && (e = this.dropdownPlacement.replace("top", "bottom"))), ee(this.input, this.hint, {
2022
2078
  placement: e,
2023
2079
  middleware: [
2024
- se(4),
2080
+ Z(4),
2025
2081
  // Don't use flip() - we want hint to stay opposite of dropdown
2026
- ne({ padding: 8 })
2082
+ Q({ padding: 8 })
2027
2083
  ]
2028
- }).then(({ x: t, y: l }) => {
2084
+ }).then(({ x: t, y: o }) => {
2029
2085
  Object.assign(this.hint.style, {
2030
2086
  left: `${t}px`,
2031
- top: `${l}px`
2087
+ top: `${o}px`
2032
2088
  });
2033
2089
  });
2034
2090
  }
@@ -2038,24 +2094,24 @@ class di {
2038
2094
  const e = this.element.dataset.initialValues;
2039
2095
  if (e)
2040
2096
  try {
2041
- JSON.parse(e).forEach((l) => {
2042
- const o = String(l);
2043
- this.selectedValues.add(o);
2044
- const s = this.allOptions.find((n) => String(this.getItemValue(n)) === o);
2045
- s && this.selectedOptions.set(o, s);
2046
- }), this.renderPills();
2097
+ JSON.parse(e).forEach((o) => {
2098
+ const s = String(o);
2099
+ this.selectedValues.add(s);
2100
+ const n = this.allOptions.find((l) => String(this.getItemValue(l)) === s);
2101
+ n && this.selectedOptions.set(s, n);
2102
+ }), this.renderBadges();
2047
2103
  } catch (t) {
2048
- C.error(`[${this.instanceId}] Failed to parse initial values:`, t);
2104
+ S.error(`[${this.instanceId}] Failed to parse initial values:`, t);
2049
2105
  }
2050
2106
  }
2051
2107
  toggleSelectedPopover() {
2052
2108
  this.showSelectedPopover ? this.hideSelectedPopover() : this.showPopover();
2053
2109
  }
2054
2110
  showPopover() {
2055
- v.debug(`[${this.instanceId}] showPopover() called`), this.isOpen && this.close(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ml__selected-popover--visible"), this.selectedValues.size >= 100 && this.selectedPopover.classList.add("ml__selected-popover--virtual"), this.positionSelectedPopover();
2111
+ f.debug(`[${this.instanceId}] showPopover() called`), this.isOpen && this.close(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ml__selected-popover--visible"), this.selectedValues.size >= 100 && this.selectedPopover.classList.add("ml__selected-popover--virtual"), this.positionSelectedPopover();
2056
2112
  }
2057
2113
  hideSelectedPopover() {
2058
- v.debug(`[${this.instanceId}] hideSelectedPopover() called`), this.showSelectedPopover = !1, this.selectedPopover.classList.remove("ml__selected-popover--visible"), this.selectedPopover.classList.remove("ml__selected-popover--virtual"), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
2114
+ f.debug(`[${this.instanceId}] hideSelectedPopover() called`), this.showSelectedPopover = !1, this.selectedPopover.classList.remove("ml__selected-popover--visible"), this.selectedPopover.classList.remove("ml__selected-popover--virtual"), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
2059
2115
  }
2060
2116
  renderSelectedPopover() {
2061
2117
  const e = Array.from(this.selectedOptions.values()), t = this.selectedValues.size;
@@ -2069,15 +2125,7 @@ class di {
2069
2125
  <button type="button" class="ml__selected-popover-close" aria-label="Close">&times;</button>
2070
2126
  </div>
2071
2127
  <div class="ml__selected-popover-body">
2072
- ${e.map((o) => {
2073
- const s = this.getItemValue(o), n = this.getItemPillDisplayValue(o);
2074
- return `
2075
- <div class="ml__pill">
2076
- <span class="ml__pill-text">${n}</span>
2077
- <button type="button" class="ml__pill-remove" data-value="${s}" aria-label="Remove ${n}"></button>
2078
- </div>
2079
- `;
2080
- }).join("")}
2128
+ ${e.map((s) => this.renderBadgeForPopover(s)).join("")}
2081
2129
  </div>
2082
2130
  `;
2083
2131
  }
@@ -2086,33 +2134,51 @@ class di {
2086
2134
  const r = this.selectedPopover.querySelector(".ml__selected-popover-header span");
2087
2135
  r && (r.textContent = `Selected Items (${t})`);
2088
2136
  } else {
2089
- const r = `
2137
+ const r = this.options.badgeHeight ?? 36, a = `
2090
2138
  <div class="ml__selected-popover-header">
2091
2139
  <span>Selected Items (${t})</span>
2092
2140
  <button type="button" class="ml__selected-popover-close" aria-label="Close">&times;</button>
2093
2141
  </div>
2094
- <div class="ml__selected-popover-body ml__selected-popover-body--virtual" style="height: 18rem; overflow-y: auto; position: relative;"></div>
2142
+ <div class="ml__selected-popover-body ml__selected-popover-body--virtual" style="height: 18rem; overflow-y: auto; position: relative; --ml-badge-height-virtual: ${r}px;"></div>
2095
2143
  `;
2096
- this.selectedPopover.innerHTML = r, this.selectedPopoverContainer = this.selectedPopover.querySelector(".ml__selected-popover-body");
2144
+ this.selectedPopover.innerHTML = a, this.selectedPopoverContainer = this.selectedPopover.querySelector(".ml__selected-popover-body");
2097
2145
  }
2098
2146
  if (!this.selectedPopoverContainer) return;
2099
- const s = (this.options.pillHeight ?? 36) + 4, n = this.options.virtualScrollBuffer ?? 10;
2147
+ const n = (this.options.badgeHeight ?? 36) + 4, l = this.options.virtualScrollBuffer ?? 10;
2100
2148
  requestAnimationFrame(() => {
2101
- this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new We({
2149
+ this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new Fe({
2102
2150
  container: this.selectedPopoverContainer,
2103
- itemHeight: s,
2151
+ itemHeight: n,
2104
2152
  items: e,
2105
- renderItem: (r) => this.renderPillForPopover(r),
2106
- bufferSize: n
2153
+ renderItem: (r) => this.renderBadgeForPopover(r),
2154
+ bufferSize: l
2107
2155
  }));
2108
2156
  });
2109
2157
  }
2110
- renderPillForPopover(e) {
2111
- const t = this.getItemValue(e), l = this.getItemPillDisplayValue(e);
2158
+ renderBadgeForPopover(e) {
2159
+ const t = this.getItemValue(e);
2160
+ let o;
2161
+ if (this.options.renderSelectedItemContentCallback) {
2162
+ const l = this.options.renderSelectedItemContentCallback(e);
2163
+ o = typeof l == "string" ? l : l.outerHTML;
2164
+ } else if (this.options.renderBadgeContentCallback) {
2165
+ const l = {
2166
+ displayMode: this.options.badgesDisplayMode || "badges",
2167
+ isInPopover: !0
2168
+ }, r = this.options.renderBadgeContentCallback(e, l);
2169
+ o = typeof r == "string" ? r : r.outerHTML;
2170
+ } else
2171
+ o = this.getItemBadgeDisplayValue(e);
2172
+ let s = "ml__badge";
2173
+ const n = this.options.getSelectedItemClassCallback || this.options.getBadgeClassCallback;
2174
+ if (n) {
2175
+ const l = n(e), r = Array.isArray(l) ? l : [l];
2176
+ s += " " + r.filter((a) => a).join(" ");
2177
+ }
2112
2178
  return `
2113
- <div class="ml__pill">
2114
- <span class="ml__pill-text">${l}</span>
2115
- <button type="button" class="ml__pill-remove" data-value="${t}" aria-label="Remove ${l}"></button>
2179
+ <div class="${s}">
2180
+ <span class="ml__badge-text">${o}</span>
2181
+ <button type="button" class="ml__badge-remove" data-value="${t}" aria-label="Remove ${this.getItemBadgeDisplayValue(e)}"></button>
2116
2182
  </div>
2117
2183
  `;
2118
2184
  }
@@ -2121,34 +2187,34 @@ class di {
2121
2187
  e.preventDefault(), this.hideSelectedPopover();
2122
2188
  return;
2123
2189
  }
2124
- const l = e.target.closest(".ml__pill-remove");
2125
- if (l) {
2190
+ const o = e.target.closest(".ml__badge-remove");
2191
+ if (o) {
2126
2192
  e.preventDefault();
2127
- const o = l.dataset.value, s = this.selectedOptions.get(o);
2128
- s && (this.deselectOption(s), this.renderSelectedPopover(), this.selectedValues.size === 0 && this.hideSelectedPopover());
2193
+ const s = o.dataset.value, n = this.selectedOptions.get(s);
2194
+ n && (this.deselectOption(n), this.renderSelectedPopover(), this.selectedValues.size === 0 && this.hideSelectedPopover());
2129
2195
  }
2130
2196
  }
2131
2197
  positionSelectedPopover() {
2132
- this.selectedPopoverCleanup = oe(
2198
+ this.selectedPopoverCleanup = q(
2133
2199
  this.input,
2134
2200
  this.selectedPopover,
2135
2201
  () => {
2136
2202
  const e = this.selectedPopoverPlacement || "bottom-start";
2137
- re(this.input, this.selectedPopover, {
2203
+ ee(this.input, this.selectedPopover, {
2138
2204
  placement: e,
2139
2205
  middleware: [
2140
- se(4),
2141
- ...this.selectedPopoverPlacement ? [] : [xe()],
2142
- ne({ padding: 8 })
2206
+ Z(4),
2207
+ ...this.selectedPopoverPlacement ? [] : [re()],
2208
+ Q({ padding: 8 })
2143
2209
  ]
2144
- }).then(({ x: t, y: l, placement: o }) => {
2145
- this.selectedPopoverPlacement || (this.selectedPopoverPlacement = o, v.debug(`[${this.instanceId}] Locked popover placement:`, o));
2146
- const s = {
2210
+ }).then(({ x: t, y: o, placement: s }) => {
2211
+ this.selectedPopoverPlacement || (this.selectedPopoverPlacement = s, f.debug(`[${this.instanceId}] Locked popover placement:`, s));
2212
+ const n = {
2147
2213
  left: `${t}px`,
2148
- top: `${l}px`,
2214
+ top: `${o}px`,
2149
2215
  width: `${this.input.offsetWidth}px`
2150
2216
  };
2151
- this.options.dropdownMinWidth && (s.minWidth = this.options.dropdownMinWidth), Object.assign(this.selectedPopover.style, s);
2217
+ this.options.dropdownMinWidth && (n.minWidth = this.options.dropdownMinWidth), Object.assign(this.selectedPopover.style, n);
2152
2218
  });
2153
2219
  }
2154
2220
  );
@@ -2158,20 +2224,20 @@ class di {
2158
2224
  // ========================================================================
2159
2225
  updateHiddenInput() {
2160
2226
  if (!this.options.formFieldId) return;
2161
- this.hiddenInputs.forEach((o) => o.remove()), this.hiddenInputs = [];
2162
- const e = this.options.valueFormat || "json", t = Array.from(this.selectedOptions.values()).map((o) => this.getItemValue(o)), l = this.options.hostElement || this.element;
2227
+ this.hiddenInputs.forEach((s) => s.remove()), this.hiddenInputs = [];
2228
+ const e = this.options.valueFormat || "json", t = Array.from(this.selectedOptions.values()).map((s) => this.getItemValue(s)), o = this.options.hostElement || this.element;
2163
2229
  if (e === "array")
2164
- t.forEach((o) => {
2165
- const s = document.createElement("input");
2166
- s.type = "hidden", s.name = `${this.options.formFieldId}[]`, s.value = String(o), l.appendChild(s), this.hiddenInputs.push(s);
2230
+ t.forEach((s) => {
2231
+ const n = document.createElement("input");
2232
+ n.type = "hidden", n.name = `${this.options.formFieldId}[]`, n.value = String(s), o.appendChild(n), this.hiddenInputs.push(n);
2167
2233
  });
2168
2234
  else {
2169
- const o = document.createElement("input");
2170
- o.type = "hidden", o.name = this.options.formFieldId, o.id = this.options.formFieldId, o.value = this.getFormValue(), l.appendChild(o), this.hiddenInputs.push(o);
2235
+ const s = document.createElement("input");
2236
+ s.type = "hidden", s.name = this.options.formFieldId, s.id = this.options.formFieldId, s.value = this.getFormValue(), o.appendChild(s), this.hiddenInputs.push(s);
2171
2237
  }
2172
2238
  }
2173
2239
  getFormValue() {
2174
- const e = Array.from(this.selectedOptions.values()).map((l) => this.getItemValue(l));
2240
+ const e = Array.from(this.selectedOptions.values()).map((o) => this.getItemValue(o));
2175
2241
  return this.options.getValueFormatCallback ? this.options.getValueFormatCallback(e) : (this.options.valueFormat || "json") === "csv" ? e.join(",") : JSON.stringify(e);
2176
2242
  }
2177
2243
  // ========================================================================
@@ -2182,9 +2248,9 @@ class di {
2182
2248
  }
2183
2249
  setSelected(e) {
2184
2250
  this.selectedValues = new Set(e.map((t) => String(t))), this.selectedOptions.clear(), e.forEach((t) => {
2185
- const l = String(t), o = this.allOptions.find((s) => String(this.getItemValue(s)) === l);
2186
- o && this.selectedOptions.set(l, o);
2187
- }), this.renderDropdown(), this.renderPills(), this.updateHiddenInput();
2251
+ const o = String(t), s = this.allOptions.find((n) => String(this.getItemValue(n)) === o);
2252
+ s && this.selectedOptions.set(o, s);
2253
+ }), this.renderDropdown(), this.renderBadges(), this.updateHiddenInput();
2188
2254
  }
2189
2255
  get selectedItem() {
2190
2256
  return this.selectedOptions.size === 0 ? null : Array.from(this.selectedOptions.values())[0];
@@ -2204,92 +2270,92 @@ class di {
2204
2270
  return this.options.isMultipleEnabled ? e : e[0] ?? null;
2205
2271
  }
2206
2272
  // ========================================================================
2207
- // PILL TOOLTIP METHODS
2273
+ // BADGE TOOLTIP METHODS
2208
2274
  // ========================================================================
2209
- attachPillTooltips() {
2210
- if (!this.options.isPillTooltipsEnabled) {
2211
- v.debug(`[${this.instanceId}] Tooltips disabled - isPillTooltipsEnabled is false`);
2275
+ attachBadgeTooltips() {
2276
+ if (!this.options.isBadgeTooltipsEnabled) {
2277
+ f.debug(`[${this.instanceId}] Tooltips disabled - isBadgeTooltipsEnabled is false`);
2212
2278
  return;
2213
2279
  }
2214
- const e = this.pillsContainer.querySelectorAll(".ml__pill:not(.ml__pill--more)");
2215
- v.debug(`[${this.instanceId}] Found ${e.length} pills to attach tooltips to`), e.forEach((l) => {
2216
- const o = l, s = o.querySelector(".ml__pill-remove");
2217
- if (!s) return;
2218
- const n = s.dataset.value, r = this.selectedOptions.get(n);
2280
+ const e = this.badgesContainer.querySelectorAll(".ml__badge:not(.ml__badge--more)");
2281
+ f.debug(`[${this.instanceId}] Found ${e.length} badges to attach tooltips to`), e.forEach((o) => {
2282
+ const s = o, n = s.querySelector(".ml__badge-remove");
2283
+ if (!n) return;
2284
+ const l = n.dataset.value, r = this.selectedOptions.get(l);
2219
2285
  if (!r) return;
2220
- const a = o.querySelector(".ml__pill-text");
2221
- a && this.createTooltipForElement(a, r, n);
2222
- const d = this.getItemPillDisplayValue(r);
2223
- this.createRemoveButtonTooltip(s, d, n);
2286
+ const a = s.querySelector(".ml__badge-text");
2287
+ a && this.createTooltipForElement(a, r, l);
2288
+ const d = this.getItemBadgeDisplayValue(r);
2289
+ this.createRemoveButtonTooltip(n, d, l);
2224
2290
  });
2225
- const t = this.pillsContainer.querySelector(".ml__pill--more");
2291
+ const t = this.badgesContainer.querySelector(".ml__badge--more");
2226
2292
  if (t) {
2227
- const l = t.querySelector(".ml__pill-remove");
2228
- if (l && l.dataset.action === "remove-hidden") {
2229
- const o = this.options.pillsMaxVisible || 3, n = Array.from(this.selectedOptions.values()).length - o;
2230
- this.createRemoveButtonTooltip(l, `${n} hidden items`, "more-badge-remove");
2293
+ const o = t.querySelector(".ml__badge-remove");
2294
+ if (o && o.dataset.action === "remove-hidden") {
2295
+ const s = this.options.badgesMaxVisible || 3, l = Array.from(this.selectedOptions.values()).length - s;
2296
+ this.createRemoveButtonTooltip(o, `${l} hidden items`, "more-badge-remove");
2231
2297
  }
2232
2298
  }
2233
2299
  }
2234
- createTooltipForElement(e, t, l) {
2235
- const o = document.createElement("div");
2236
- o.className = "ml__pill-tooltip";
2237
- let s;
2238
- if (this.options.getPillTooltipCallback)
2239
- s = this.options.getPillTooltipCallback(t), v.debug(`[${this.instanceId}] Using custom callback for tooltip content`);
2300
+ createTooltipForElement(e, t, o) {
2301
+ const s = document.createElement("div");
2302
+ s.className = "ml__badge-tooltip";
2303
+ let n;
2304
+ if (this.options.getBadgeTooltipCallback)
2305
+ n = this.options.getBadgeTooltipCallback(t), f.debug(`[${this.instanceId}] Using custom callback for tooltip content`);
2240
2306
  else {
2241
- const m = this.getItemPillDisplayValue(t), p = this.getItemSubtitle(t);
2242
- s = p ? `${m}
2243
- ${p}` : m, v.debug(`[${this.instanceId}] Using default content: "${s}"`);
2307
+ const p = this.getItemBadgeDisplayValue(t), u = this.getItemSubtitle(t);
2308
+ n = u ? `${p}
2309
+ ${u}` : p, f.debug(`[${this.instanceId}] Using default content: "${n}"`);
2244
2310
  }
2245
- typeof s == "string" ? o.textContent = s : o.appendChild(s), (this.options.container || document.body).appendChild(o), v.debug(`[${this.instanceId}] Tooltip element created and appended for "${l}"`), this.pillTooltips.set(l, o);
2311
+ typeof n == "string" ? s.textContent = n : s.appendChild(n), (this.options.container || document.body).appendChild(s), f.debug(`[${this.instanceId}] Tooltip element created and appended for "${o}"`), this.badgeTooltips.set(o, s);
2246
2312
  let r, a;
2247
2313
  const d = () => {
2248
- clearTimeout(a), v.debug(`[${this.instanceId}] Mouse entered pill "${l}", will show tooltip in ${this.options.pillTooltipDelay || 300}ms`), r = window.setTimeout(() => {
2249
- v.debug(`[${this.instanceId}] Showing tooltip for "${l}"`), o.classList.add("ml__pill-tooltip--visible"), this.positionPillTooltip(e, o, l);
2250
- }, this.options.pillTooltipDelay || 300);
2314
+ clearTimeout(a), f.debug(`[${this.instanceId}] Mouse entered badge "${o}", will show tooltip in ${this.options.badgeTooltipDelay || 300}ms`), r = window.setTimeout(() => {
2315
+ f.debug(`[${this.instanceId}] Showing tooltip for "${o}"`), s.classList.add("ml__badge-tooltip--visible"), this.positionBadgeTooltip(e, s, o);
2316
+ }, this.options.badgeTooltipDelay || 300);
2251
2317
  }, c = () => {
2252
2318
  clearTimeout(r), a = window.setTimeout(() => {
2253
- o.classList.remove("ml__pill-tooltip--visible"), this.cleanupPillTooltip(l);
2319
+ s.classList.remove("ml__badge-tooltip--visible"), this.cleanupBadgeTooltip(o);
2254
2320
  }, 100);
2255
2321
  };
2256
2322
  e.addEventListener("mouseenter", d), e.addEventListener("mouseleave", c);
2257
2323
  }
2258
- createRemoveButtonTooltip(e, t, l) {
2259
- const o = document.createElement("div");
2260
- o.className = "ml__pill-tooltip", o.textContent = `Remove ${t}`, (this.options.container || document.body).appendChild(o);
2261
- const n = `${l}-remove`;
2262
- this.pillTooltips.set(n, o);
2324
+ createRemoveButtonTooltip(e, t, o) {
2325
+ const s = document.createElement("div");
2326
+ s.className = "ml__badge-tooltip", s.textContent = `Remove ${t}`, (this.options.container || document.body).appendChild(s);
2327
+ const l = `${o}-remove`;
2328
+ this.badgeTooltips.set(l, s);
2263
2329
  let r, a;
2264
2330
  const d = () => {
2265
2331
  clearTimeout(a);
2266
- const m = this.pillTooltips.get(l);
2267
- m && m.classList.remove("ml__pill-tooltip--visible"), r = window.setTimeout(() => {
2268
- o.classList.add("ml__pill-tooltip--visible"), this.positionPillTooltip(e, o, n);
2269
- }, this.options.pillTooltipDelay || 300);
2332
+ const p = this.badgeTooltips.get(o);
2333
+ p && p.classList.remove("ml__badge-tooltip--visible"), r = window.setTimeout(() => {
2334
+ s.classList.add("ml__badge-tooltip--visible"), this.positionBadgeTooltip(e, s, l);
2335
+ }, this.options.badgeTooltipDelay || 300);
2270
2336
  }, c = () => {
2271
2337
  clearTimeout(r), a = window.setTimeout(() => {
2272
- o.classList.remove("ml__pill-tooltip--visible"), this.cleanupPillTooltip(n);
2338
+ s.classList.remove("ml__badge-tooltip--visible"), this.cleanupBadgeTooltip(l);
2273
2339
  }, 100);
2274
2340
  };
2275
2341
  e.addEventListener("mouseenter", d), e.addEventListener("mouseleave", c);
2276
2342
  }
2277
- positionPillTooltip(e, t, l) {
2278
- const o = oe(e, t, () => {
2279
- re(e, t, {
2280
- placement: this.options.pillTooltipPlacement || "top",
2343
+ positionBadgeTooltip(e, t, o) {
2344
+ const s = q(e, t, () => {
2345
+ ee(e, t, {
2346
+ placement: this.options.badgeTooltipPlacement || "top",
2281
2347
  strategy: "fixed",
2282
2348
  middleware: [
2283
- se(this.options.pillTooltipOffset || 8),
2284
- xe(),
2285
- ne({ padding: 8 })
2349
+ Z(this.options.badgeTooltipOffset || 8),
2350
+ re(),
2351
+ Q({ padding: 8 })
2286
2352
  ]
2287
- }).then(({ x: s, y: n }) => {
2353
+ }).then(({ x: n, y: l }) => {
2288
2354
  Object.assign(t.style, {
2289
- left: `${s}px`,
2290
- top: `${n}px`
2291
- }), v.debug(`[${this.instanceId}] Positioned tooltip "${l}" at x:${s}, y:${n}`, {
2292
- placement: this.options.pillTooltipPlacement || "top",
2355
+ left: `${n}px`,
2356
+ top: `${l}px`
2357
+ }), f.debug(`[${this.instanceId}] Positioned tooltip "${o}" at x:${n}, y:${l}`, {
2358
+ placement: this.options.badgeTooltipPlacement || "top",
2293
2359
  tooltipClasses: t.className,
2294
2360
  tooltipDisplay: window.getComputedStyle(t).display,
2295
2361
  tooltipOpacity: window.getComputedStyle(t).opacity,
@@ -2299,68 +2365,139 @@ ${p}` : m, v.debug(`[${this.instanceId}] Using default content: "${s}"`);
2299
2365
  });
2300
2366
  });
2301
2367
  });
2302
- this.pillTooltipCleanups.set(l, o);
2368
+ this.badgeTooltipCleanups.set(o, s);
2369
+ }
2370
+ cleanupBadgeTooltip(e) {
2371
+ const t = this.badgeTooltipCleanups.get(e);
2372
+ t && (t(), this.badgeTooltipCleanups.delete(e));
2373
+ }
2374
+ destroyAllBadgeTooltips() {
2375
+ this.badgeTooltipCleanups.forEach((e) => e()), this.badgeTooltipCleanups.clear(), this.badgeTooltips.forEach((e) => e.remove()), this.badgeTooltips.clear();
2376
+ }
2377
+ // ========================================================================
2378
+ // ACTION BUTTON TOOLTIP METHODS
2379
+ // ========================================================================
2380
+ attachActionButtonTooltips() {
2381
+ const e = this.dropdown.querySelectorAll(".ml__action-btn");
2382
+ f.debug(`[${this.instanceId}] Found ${e.length} action buttons to attach tooltips to`), e.forEach((t) => {
2383
+ var a;
2384
+ const o = t, s = o.dataset.action;
2385
+ if (!s) return;
2386
+ const n = (a = this.options.actionButtons) == null ? void 0 : a.find((d) => d.action === "custom" ? o.dataset.customAction === o.dataset.action : d.action === s);
2387
+ if (!n) return;
2388
+ let l;
2389
+ if (n.getTooltipCallback ? (l = n.getTooltipCallback(this), f.debug(`[${this.instanceId}] Using getTooltipCallback for action button "${s}": "${l}"`)) : (l = n.tooltip, f.debug(`[${this.instanceId}] Using static tooltip for action button "${s}": "${l}"`)), !l) {
2390
+ f.debug(`[${this.instanceId}] No tooltip for action button "${s}"`);
2391
+ return;
2392
+ }
2393
+ const r = `action-${s}-${Date.now()}`;
2394
+ this.createActionButtonTooltip(o, l, r);
2395
+ });
2396
+ }
2397
+ createActionButtonTooltip(e, t, o) {
2398
+ const s = document.createElement("div");
2399
+ s.className = "ml__badge-tooltip", s.textContent = t, (this.options.container || document.body).appendChild(s), f.debug(`[${this.instanceId}] Tooltip element created for action button "${o}"`), this.actionButtonTooltips.set(o, s);
2400
+ let l, r;
2401
+ const a = () => {
2402
+ clearTimeout(r), f.debug(`[${this.instanceId}] Mouse entered action button "${o}", will show tooltip in ${this.options.badgeTooltipDelay || 300}ms`), l = window.setTimeout(() => {
2403
+ f.debug(`[${this.instanceId}] Showing tooltip for action button "${o}"`), s.classList.add("ml__badge-tooltip--visible"), this.positionActionButtonTooltip(e, s, o);
2404
+ }, this.options.badgeTooltipDelay || 300);
2405
+ }, d = () => {
2406
+ clearTimeout(l), r = window.setTimeout(() => {
2407
+ s.classList.remove("ml__badge-tooltip--visible"), this.cleanupActionButtonTooltip(o);
2408
+ }, 100);
2409
+ };
2410
+ e.addEventListener("mouseenter", a), e.addEventListener("mouseleave", d);
2411
+ }
2412
+ positionActionButtonTooltip(e, t, o) {
2413
+ const s = q(e, t, () => {
2414
+ ee(e, t, {
2415
+ placement: this.options.badgeTooltipPlacement || "top",
2416
+ strategy: "fixed",
2417
+ middleware: [
2418
+ Z(this.options.badgeTooltipOffset || 8),
2419
+ re(),
2420
+ Q({ padding: 8 })
2421
+ ]
2422
+ }).then(({ x: n, y: l }) => {
2423
+ Object.assign(t.style, {
2424
+ left: `${n}px`,
2425
+ top: `${l}px`
2426
+ }), f.debug(`[${this.instanceId}] Positioned action button tooltip "${o}" at x:${n}, y:${l}`);
2427
+ });
2428
+ });
2429
+ this.actionButtonTooltipCleanups.set(o, s);
2303
2430
  }
2304
- cleanupPillTooltip(e) {
2305
- const t = this.pillTooltipCleanups.get(e);
2306
- t && (t(), this.pillTooltipCleanups.delete(e));
2431
+ cleanupActionButtonTooltip(e) {
2432
+ const t = this.actionButtonTooltipCleanups.get(e);
2433
+ t && (t(), this.actionButtonTooltipCleanups.delete(e));
2307
2434
  }
2308
- destroyAllPillTooltips() {
2309
- this.pillTooltipCleanups.forEach((e) => e()), this.pillTooltipCleanups.clear(), this.pillTooltips.forEach((e) => e.remove()), this.pillTooltips.clear();
2435
+ destroyAllActionButtonTooltips() {
2436
+ this.actionButtonTooltipCleanups.forEach((e) => e()), this.actionButtonTooltipCleanups.clear(), this.actionButtonTooltips.forEach((e) => e.remove()), this.actionButtonTooltips.clear();
2310
2437
  }
2311
2438
  // ========================================================================
2312
2439
  // PUBLIC API
2313
2440
  // ========================================================================
2314
2441
  destroy() {
2315
- this.destroyAllPillTooltips(), this.dropdownCleanup && this.dropdownCleanup(), this.hintCleanup && this.hintCleanup(), this.selectedPopoverCleanup && this.selectedPopoverCleanup(), 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("ml", "ml--open", "ml--no-checkboxes"), H.info(`[${this.instanceId}] Component destroyed`);
2442
+ this.destroyAllBadgeTooltips(), this.destroyAllActionButtonTooltips(), this.dropdownCleanup && this.dropdownCleanup(), this.hintCleanup && this.hintCleanup(), this.selectedPopoverCleanup && this.selectedPopoverCleanup(), 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("ml", "ml--open", "ml--no-checkboxes"), ae.info(`[${this.instanceId}] Component destroyed`);
2316
2443
  }
2317
2444
  }
2318
- const pi = '@charset "UTF-8";:host{--ml-accent-color: #3b82f6;--ml-accent-color-hover: #2563eb;--ml-accent-color-active: #1d4ed8;--ml-text-primary: #111827;--ml-text-secondary: #6b7280;--ml-text-white: #ffffff;--ml-primary-bg: #f3f4f6;--ml-primary-bg-hover: #e5e7eb;--ml-border-color: #e5e7eb;--ml-input-padding: .5rem .75rem;--ml-input-padding-right: 2.5rem;--ml-input-font-size: .875rem;--ml-input-border-style: 1px solid #d1d5db;--ml-input-border-radius: .375rem;--ml-input-bg: #ffffff;--ml-input-text: #111827;--ml-input-focus-border-color: #3b82f6;--ml-input-placeholder-color: #6b7280;--ml-input-bg-disabled: rgba(107, 114, 128, .05);--ml-toggle-right: .75rem;--ml-toggle-color: #6b7280;--ml-transform-center-y: translateY(-50%);--ml-transform-rotate-180: 180deg;--ml-count-badge-offset: 2rem;--ml-count-badge-padding: .125rem .25rem;--ml-count-badge-bg: #3b82f6;--ml-count-badge-color: #ffffff;--ml-count-badge-font-size: .75rem;--ml-count-badge-font-weight: 600;--ml-count-badge-border-radius: .25rem;--ml-count-badge-bg-hover: #2563eb;--ml-transform-scale-hover: 1.1;--ml-hint-padding: .5rem .75rem;--ml-hint-bg: #ffffff;--ml-hint-border: 1px solid #e5e7eb;--ml-hint-border-radius: .375rem;--ml-hint-box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--ml-hint-font-size: .75rem;--ml-hint-color: #6b7280;--ml-line-height-relaxed: 1.4;--ml-dropdown-bg: #ffffff;--ml-dropdown-border: 1px solid #e5e7eb;--ml-dropdown-border-radius: .375rem;--ml-dropdown-box-shadow: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--ml-dropdown-max-height: 20rem;--ml-dropdown-color: #111827;--ml-z-index-dropdown: 9999;--ml-z-index-sticky: 1;--ml-actions-gap: .25rem;--ml-actions-padding: .5rem;--ml-actions-border-bottom: 1px solid #e5e7eb;--ml-actions-bg: #ffffff;--ml-action-btn-padding: .25rem .5rem;--ml-action-btn-font-size: .75rem;--ml-action-btn-border: 1px solid #e5e7eb;--ml-action-btn-border-radius: .25rem;--ml-action-btn-bg: transparent;--ml-action-btn-color: inherit;--ml-action-btn-bg-hover: #f3f4f6;--ml-action-btn-border-color-hover: #3b82f6;--ml-transform-scale-active: .98;--ml-options-padding: .25rem 0;--ml-group-border-top: 1px solid #e5e7eb;--ml-group-margin-top: .25rem;--ml-group-padding-top: .25rem;--ml-group-label-padding: .25rem .75rem;--ml-group-label-font-size: .75rem;--ml-group-label-font-weight: 600;--ml-group-label-color: #6b7280;--ml-group-label-transform: uppercase;--ml-group-label-letter-spacing: .05em;--ml-option-gap: .5rem;--ml-option-padding: .5rem .75rem;--ml-option-padding-h: .75rem;--ml-option-bg: transparent;--ml-option-bg-hover: #f9fafb;--ml-option-bg-focused: #f9fafb;--ml-option-outline-focused: 2px solid #3b82f6;--ml-option-focus-outline-offset: -2px;--ml-option-bg-matched: rgba(59, 130, 246, .08);--ml-option-border-matched: 3px solid rgba(59, 130, 246, .4);--ml-option-bg-selected: rgba(59, 130, 246, .1);--ml-disabled-opacity: .5;--ml-option-content-gap: .5rem;--ml-option-icon-size: 1.25rem;--ml-option-icon-font-size: 1rem;--ml-option-title-font-size: .875rem;--ml-option-title-color: inherit;--ml-option-mark-bg: rgba(59, 130, 246, .2);--ml-option-mark-color: inherit;--ml-option-mark-font-weight: 600;--ml-option-subtitle-margin-top: .25rem;--ml-option-subtitle-font-size: .75rem;--ml-option-subtitle-color: #6b7280;--ml-option-subtitle-line-height: 1.3;--ml-checkbox-margin-top: .125rem;--ml-empty-padding: 1rem .75rem;--ml-empty-font-size: .875rem;--ml-empty-color: #6b7280;--ml-loader-padding: 1rem;--ml-loader-gap: .5rem;--ml-loading-text-font-size: .875rem;--ml-loading-text-color: #6b7280;--ml-pills-gap: .5rem;--ml-pills-margin-bottom: .5rem;--ml-pills-margin-top: .5rem;--ml-pills-margin-left: .25rem;--ml-pills-margin-right: .25rem;--ml-pill-gap: .5rem;--ml-pill-height: 1.5rem;--ml-pill-font-size: .75rem;--ml-pill-font-weight: 600;--ml-pill-border-radius: .375rem;--ml-pill-bg: #eff6ff;--ml-pill-bg-hover: #ffffff;--ml-pill-bg-active: #e0f2fe;--ml-order-first: -1;--ml-pill-text-padding: 0 .5rem;--ml-pill-text-bg: #eff6ff;--ml-pill-text-color: #3b82f6;--ml-pill-remove-width: 1.5rem;--ml-pill-remove-bg: #3b82f6;--ml-pill-remove-color: #ffffff;--ml-pill-remove-border: none;--ml-pill-remove-font-size: .75rem;--ml-pill-remove-bg-hover: #2563eb;--ml-pill-remove-box-shadow-focus: 0 0 0 2px rgba(59, 130, 246, .5);--ml-icon-remove: "×";--ml-more-badge-bg: #eff6ff;--ml-more-badge-hover-bg: #ffffff;--ml-more-badge-active-bg: #e0f2fe;--ml-count-display-margin-bottom: .5rem;--ml-count-display-margin-top: .5rem;--ml-count-display-margin-left: .5rem;--ml-count-display-margin-right: .5rem;--ml-count-badge-wrapper-bg: transparent;--ml-count-badge-wrapper-border: 1px solid #e5e7eb;--ml-count-badge-wrapper-border-radius: .25rem;--ml-count-badge-wrapper-padding: .25rem .5rem;--ml-count-badge-wrapper-gap: .25rem;--ml-count-badge-wrapper-bg-hover: #f9fafb;--ml-count-badge-wrapper-border-color-hover: #3b82f6;--ml-count-text-bg: transparent;--ml-count-text-border: none;--ml-count-text-font-size: .875rem;--ml-count-text-color: #111827;--ml-count-clear-size: 1rem;--ml-count-clear-bg: transparent;--ml-count-clear-color: #6b7280;--ml-count-clear-font-size: 1.125rem;--ml-count-clear-border-radius: 50%;--ml-count-clear-bg-hover: rgba(59, 130, 246, .2);--ml-count-clear-color-hover: #3b82f6;--ml-icon-clear: "×";--ml-tooltip-bg: #333;--ml-tooltip-color: #fff;--ml-tooltip-padding: .5rem .75rem;--ml-tooltip-border-radius: .375rem;--ml-tooltip-font-size: .875rem;--ml-tooltip-max-width: 20rem;--ml-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ml-tooltip-z-index: 10000;--ml-z-index-popover: 10000;--ml-selected-popover-width: 20rem;--ml-selected-popover-max-height: 20rem;--ml-selected-popover-bg: #ffffff;--ml-selected-popover-border: 1px solid #e5e7eb;--ml-selected-popover-border-radius: .375rem;--ml-selected-popover-box-shadow: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--ml-selected-popover-header-padding: .5rem .75rem;--ml-selected-popover-header-bg: rgba(59, 130, 246, .1);--ml-selected-popover-header-border-bottom: 1px solid #e5e7eb;--ml-selected-popover-header-font-size: .875rem;--ml-selected-popover-header-font-weight: 600;--ml-selected-popover-header-color: #111827;--ml-popover-close-size: 1.5rem;--ml-selected-popover-close-bg: transparent;--ml-selected-popover-close-color: #6b7280;--ml-selected-popover-close-font-size: 1.25rem;--ml-selected-popover-close-border-radius: 50%;--ml-selected-popover-close-bg-hover: rgba(59, 130, 246, .2);--ml-selected-popover-close-color-hover: #3b82f6;--ml-selected-popover-body-gap: .25rem;--ml-selected-popover-body-padding: .5rem;--ml-selected-popover-body-max-height: 18rem;--ml-font-size-2xs: .625rem;--ml-font-size-xs: .75rem;--ml-font-size-sm: .875rem;--ml-font-size-base: 1rem;--ml-font-size-lg: 1.125rem;--ml-font-weight-medium: 500;--ml-font-weight-semibold: 600;--ml-line-height-none: 1;--ml-spacing-xs: .25rem;--ml-spacing-sm: .5rem;--ml-spacing-md: .75rem;--ml-spacing-lg: 1rem;--ml-transition-fast: .15s;--ml-transition-normal: .2s;--ml-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ml-placeholder-opacity: .6;--ml-disabled-input-opacity: .6}multi-select:not(:defined){display:block;min-height:2.5rem;color:transparent!important;background:transparent}.ml-wrapper{display:flex;flex-direction:column;align-items:stretch}.ml-wrapper--inline{flex-direction:row;align-items:flex-start}.ml{position:relative;width:100%}.ml__input-wrapper{position:relative;display:flex;align-items:center}.ml__input{width:100%;padding:var(--ml-input-padding, .5rem .75rem);padding-right:var(--ml-input-padding-right, 2.5rem);font-size:var(--ml-input-font-size, .875rem);border:var(--ml-input-border-style, 1px solid #d1d5db);border-radius:var(--ml-input-border-radius, .375rem);background:var(--ml-input-bg, #ffffff);color:var(--ml-input-text, #111827);cursor:pointer;transition:border-color var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__input:focus{outline:none;border-color:var(--ml-input-focus-border-color, #3b82f6)}.ml__input::placeholder{color:var(--ml-input-placeholder-color, #6b7280);opacity:0;transition:opacity var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}:host([data-ready]) .ml__input::placeholder{opacity:var(--ml-placeholder-opacity, .6)}.ml__toggle{position:absolute;right:var(--ml-toggle-right, .75rem);top:50%;transform:var(--ml-transform-center-y, translateY(-50%));pointer-events:none;color:var(--ml-toggle-color, #6b7280);transition:transform var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml--open .ml__toggle{transform:var(--ml-transform-center-y, translateY(-50%)) rotate(var(--ml-transform-rotate-180, 180deg))}.ml__count-badge{position:absolute;right:var(--ml-count-badge-offset, 2rem);top:50%;transform:var(--ml-transform-center-y, translateY(-50%));padding:var(--ml-count-badge-padding, .125rem .25rem);background:var(--ml-count-badge-bg, #3b82f6);color:var(--ml-count-badge-color, #ffffff);font-size:var(--ml-count-badge-font-size, .75rem);font-weight:var(--ml-count-badge-font-weight, 600);border-radius:var(--ml-count-badge-border-radius, .25rem);cursor:pointer;transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__count-badge:hover{background:var(--ml-count-badge-bg-hover, #2563eb);transform:var(--ml-transform-center-y, translateY(-50%)) scale(var(--ml-transform-scale-hover, 1.1))}.ml__hint{display:none;position:absolute;z-index:var(--ml-z-index-popover, 10000);padding:var(--ml-hint-padding, .5rem .75rem);background:var(--ml-hint-bg, #ffffff);border:var(--ml-hint-border, 1px solid #e5e7eb);border-radius:var(--ml-hint-border-radius, .375rem);box-shadow:var(--ml-hint-box-shadow, 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1));font-size:var(--ml-hint-font-size, .75rem);color:var(--ml-hint-color, #6b7280);line-height:var(--ml-line-height-relaxed, 1.4);max-width:100%}.ml__hint--visible{display:block}.ml__dropdown{display:none;position:absolute;z-index:var(--ml-z-index-dropdown, 9999);background:var(--ml-dropdown-bg, #ffffff);border:var(--ml-dropdown-border, 1px solid #e5e7eb);border-radius:var(--ml-dropdown-border-radius, .375rem);box-shadow:var(--ml-dropdown-box-shadow, 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1));max-height:var(--ml-dropdown-max-height, 20rem);overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;color:var(--ml-dropdown-color, #111827)}.ml__dropdown--visible{display:block}.ml__dropdown--virtual{overflow-y:visible;max-height:none}.ml__actions{display:flex;gap:var(--ml-actions-gap, .25rem);padding:var(--ml-actions-padding, .5rem);border-bottom:var(--ml-actions-border-bottom, 1px solid #e5e7eb)}.ml__actions--sticky{position:sticky;top:0;z-index:var(--ml-z-index-sticky, 1);background:var(--ml-actions-bg, #ffffff)}.ml__action-btn{flex:1;padding:var(--ml-action-btn-padding, .25rem .5rem);font-size:var(--ml-action-btn-font-size, .75rem);border:var(--ml-action-btn-border, 1px solid #e5e7eb);border-radius:var(--ml-action-btn-border-radius, .25rem);background:var(--ml-action-btn-bg, transparent);color:var(--ml-action-btn-color, inherit);cursor:pointer;transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__action-btn:hover{background:var(--ml-action-btn-bg-hover, #f3f4f6);border-color:var(--ml-action-btn-border-color-hover, #3b82f6)}.ml__action-btn:active{transform:scale(var(--ml-transform-scale-active, .98))}.ml__options{padding:var(--ml-options-padding, .25rem 0)}.ml__options--virtual .ml__option{height:var(--ml-option-height, 50px);min-height:var(--ml-option-height, 50px);max-height:var(--ml-option-height, 50px);overflow:hidden;box-sizing:border-box}.ml__group+.ml__group{border-top:var(--ml-group-border-top, 1px solid #e5e7eb);margin-top:var(--ml-group-margin-top, .25rem);padding-top:var(--ml-group-padding-top, .25rem)}.ml__group-label{padding:var(--ml-group-label-padding, .25rem .75rem);font-size:var(--ml-group-label-font-size, .75rem);font-weight:var(--ml-group-label-font-weight, 600);color:var(--ml-group-label-color, #6b7280);text-transform:var(--ml-group-label-transform, uppercase);letter-spacing:var(--ml-group-label-letter-spacing, .05em)}.ml__option{display:flex;align-items:flex-start;gap:var(--ml-option-gap, .5rem);padding:var(--ml-option-padding, .5rem .75rem);cursor:pointer;transition:background-color var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__option:hover{background:var(--ml-option-bg-hover, #f9fafb)}.ml__option--focused{background:var(--ml-option-bg-focused, #f9fafb);outline:var(--ml-option-outline-focused, 2px solid #3b82f6);outline-offset:var(--ml-option-focus-outline-offset, -2px)}.ml__option--matched{background:var(--ml-option-bg-matched, rgba(59, 130, 246, .08));border-left:var(--ml-option-border-matched, 3px solid rgba(59, 130, 246, .4))}.ml__option--selected{background:var(--ml-option-bg-selected, rgba(59, 130, 246, .1))}.ml__option--selected:hover{background:var(--ml-option-bg-selected-hover, var(--ml-option-bg-selected, rgba(59, 130, 246, .1)))}.ml__option--disabled{opacity:var(--ml-disabled-opacity, .5);cursor:not-allowed}.ml__option--disabled:hover{background:var(--ml-option-bg, transparent)}.ml__checkbox{flex-shrink:0;margin-top:var(--ml-checkbox-margin-top, .125rem);cursor:pointer}.ml__option--disabled .ml__checkbox{cursor:not-allowed}.ml__option-content{flex:1;display:flex;align-items:flex-start;gap:var(--ml-option-content-gap, .5rem);min-width:0}.ml__option-icon{flex-shrink:0;width:var(--ml-option-icon-size, 1.25rem);height:var(--ml-option-icon-size, 1.25rem);display:flex;align-items:center;justify-content:center;font-size:var(--ml-option-icon-font-size, 1rem)}.ml__option-icon svg{width:100%;height:100%;fill:currentColor}.ml__option-text{flex:1;min-width:0}.ml__option-title{font-size:var(--ml-option-title-font-size, .875rem);color:var(--ml-option-title-color, inherit);line-height:var(--ml-line-height-relaxed, 1.4)}.ml__option-title mark{background:var(--ml-option-mark-bg, rgba(59, 130, 246, .2));color:var(--ml-option-mark-color, inherit);font-weight:var(--ml-option-mark-font-weight, 600)}.ml__option-subtitle{margin-top:var(--ml-option-subtitle-margin-top, .25rem);font-size:var(--ml-option-subtitle-font-size, .75rem);color:var(--ml-option-subtitle-color, #6b7280);line-height:var(--ml-option-subtitle-line-height, 1.3)}.ml__empty{padding:var(--ml-empty-padding, 1rem .75rem);text-align:center;font-size:var(--ml-empty-font-size, .875rem);color:var(--ml-empty-color, #6b7280)}.ml__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--ml-loader-padding, 1rem);gap:var(--ml-loader-gap, .5rem)}.ml__loading-text{font-size:var(--ml-loading-text-font-size, .875rem);color:var(--ml-loading-text-color, #6b7280)}.ml__pills{display:flex;flex-wrap:wrap;gap:var(--ml-pills-gap, .5rem);padding:0}.ml__pills:empty{display:none}.ml__pills--bottom{margin-top:var(--ml-pills-margin-bottom, .5rem)}.ml__pills--top{margin-bottom:var(--ml-pills-margin-top, .5rem);order:var(--ml-order-first, -1)}.ml__pills--left{order:var(--ml-order-first, -1);margin-right:var(--ml-pills-margin-left, .25rem);justify-content:flex-end}.ml__pills--right{margin-left:var(--ml-pills-margin-right, .25rem);justify-content:flex-start}.ml__count-display{display:flex;align-items:center}.ml__count-display:empty{display:none}.ml__count-display--bottom{margin-top:var(--ml-count-display-margin-bottom, .5rem)}.ml__count-display--top{margin-bottom:var(--ml-count-display-margin-top, .5rem);order:var(--ml-order-first, -1)}.ml__count-display--left{order:var(--ml-order-first, -1);margin-right:var(--ml-count-display-margin-left, .5rem);justify-content:flex-start}.ml__count-display--right{margin-left:var(--ml-count-display-margin-right, .5rem);justify-content:flex-end}.ml__count-badge-wrapper{display:inline-flex;align-items:center;gap:var(--ml-count-badge-wrapper-gap, .25rem);background:var(--ml-count-badge-wrapper-bg, transparent);border:var(--ml-count-badge-wrapper-border, 1px solid #e5e7eb);border-radius:var(--ml-count-badge-wrapper-border-radius, .25rem);padding:var(--ml-count-badge-wrapper-padding, .25rem .5rem);transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__count-badge-wrapper:hover{background:var(--ml-count-badge-wrapper-bg-hover, #f9fafb);border-color:var(--ml-count-badge-wrapper-border-color-hover, #3b82f6)}.ml__count-text{display:inline-flex;align-items:center;background:var(--ml-count-text-bg, transparent);border:var(--ml-count-text-border, none);padding:0;font-size:var(--ml-count-text-font-size, .875rem);color:var(--ml-count-text-color, #111827);cursor:pointer;transition:color var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ml-count-clear-size, 1rem);height:var(--ml-count-clear-size, 1rem);padding:0;border:none;background:var(--ml-count-clear-bg, transparent);color:var(--ml-count-clear-color, #6b7280);font-size:var(--ml-count-clear-font-size, 1.125rem);line-height:var(--ml-line-height-none, 1);cursor:pointer;border-radius:var(--ml-count-clear-border-radius, 50%);transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__count-clear:hover{background:var(--ml-count-clear-bg-hover, rgba(59, 130, 246, .2));color:var(--ml-count-clear-color-hover, #3b82f6)}.ml__count-clear:before{content:var(--ml-icon-clear, "×")}.ml__pill{display:inline-flex;align-items:center;height:var(--ml-pill-height, 1.5rem);font-size:var(--ml-pill-font-size, .75rem);font-weight:var(--ml-pill-font-weight, 600);line-height:var(--ml-line-height-none, 1);border-radius:var(--ml-pill-border-radius, .375rem);overflow:hidden;max-width:100%}.ml__pill-text{display:flex;align-items:center;height:100%;padding:var(--ml-pill-text-padding, 0 .5rem);background:var(--ml-pill-text-bg, #eff6ff);color:var(--ml-pill-text-color, #3b82f6);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ml-transition-normal, .2s) ease}.ml__pill-remove{display:flex;align-items:center;justify-content:center;width:var(--ml-pill-remove-width, 1.5rem);height:100%;flex-shrink:0;background:var(--ml-pill-remove-bg, #3b82f6);color:var(--ml-pill-remove-color, #ffffff);border:var(--ml-pill-remove-border, none);cursor:pointer;transition:background-color var(--ml-transition-normal, .2s) ease;font-size:var(--ml-pill-remove-font-size, .75rem)}.ml__pill-remove:hover{background:var(--ml-pill-remove-bg-hover, #2563eb)}.ml__pill-remove:focus{outline:none;box-shadow:var(--ml-pill-remove-box-shadow-focus, 0 0 0 2px rgba(59, 130, 246, .5))}.ml__pill-remove:before{content:var(--ml-icon-remove, "×");font-size:var(--ml-font-size-base, 1rem);line-height:var(--ml-line-height-none, 1)}.ml__pill--more{cursor:pointer}.ml__pill--more .ml__pill-text{background:var(--ml-more-badge-bg, #eff6ff);font-weight:var(--ml-pill-font-weight, 600)}.ml__pill--more:hover .ml__pill-text{background:var(--ml-more-badge-hover-bg, #ffffff)}.ml__pill--more:active .ml__pill-text{background:var(--ml-more-badge-active-bg, #e0f2fe)}.ml__pill-tooltip{position:fixed;z-index:var(--ml-tooltip-z-index, 10000);opacity:0;visibility:hidden;transition:opacity var(--ml-transition-normal, .2s) ease,visibility var(--ml-transition-normal, .2s) ease;background:var(--ml-tooltip-bg, #333);color:var(--ml-tooltip-color, #fff);padding:var(--ml-tooltip-padding, .5rem .75rem);border-radius:var(--ml-tooltip-border-radius, .375rem);font-size:var(--ml-tooltip-font-size, .875rem);line-height:var(--ml-line-height-relaxed, 1.4);max-width:var(--ml-tooltip-max-width, 20rem);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ml-tooltip-shadow, 0 2px 8px rgba(0, 0, 0, .15));pointer-events:none}.ml__pill-tooltip--visible{opacity:1;visibility:visible}.ml__selected-popover{display:none;position:absolute;z-index:var(--ml-z-index-popover, 10000);background:var(--ml-selected-popover-bg, #ffffff);border:var(--ml-selected-popover-border, 1px solid #e5e7eb);border-radius:var(--ml-selected-popover-border-radius, .375rem);box-shadow:var(--ml-selected-popover-box-shadow, 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1));width:var(--ml-selected-popover-width, 20rem);max-height:var(--ml-selected-popover-max-height, 20rem);overflow:hidden}.ml__selected-popover--visible{display:flex;flex-direction:column}.ml__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ml__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ml-selected-popover-header-padding, .5rem .75rem);background:var(--ml-selected-popover-header-bg, rgba(59, 130, 246, .1));border-bottom:var(--ml-selected-popover-header-border-bottom, 1px solid #e5e7eb);font-size:var(--ml-selected-popover-header-font-size, .875rem);font-weight:var(--ml-selected-popover-header-font-weight, 600);color:var(--ml-selected-popover-header-color, #111827)}.ml__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ml-popover-close-size, 1.5rem);height:var(--ml-popover-close-size, 1.5rem);padding:0;border:none;background:var(--ml-selected-popover-close-bg, transparent);color:var(--ml-selected-popover-close-color, #6b7280);font-size:var(--ml-selected-popover-close-font-size, 1.25rem);line-height:var(--ml-line-height-none, 1);cursor:pointer;border-radius:var(--ml-selected-popover-close-border-radius, 50%);transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__selected-popover-close:hover{background:var(--ml-selected-popover-close-bg-hover, rgba(59, 130, 246, .2));color:var(--ml-selected-popover-close-color-hover, #3b82f6)}.ml__selected-popover-body{display:flex;flex-direction:column;gap:var(--ml-selected-popover-body-gap, .25rem);padding:var(--ml-selected-popover-body-padding, .5rem);overflow-y:auto;max-height:var(--ml-selected-popover-body-max-height, 18rem)}.ml__selected-popover-body .ml__pill{width:100%}.ml__selected-popover-body .ml__pill-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.ml__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ml__selected-popover-body--virtual .ml__pill{height:var(--ml-pill-height-virtual, 36px);min-height:var(--ml-pill-height-virtual, 36px);max-height:var(--ml-pill-height-virtual, 36px);margin-bottom:var(--ml-selected-popover-body-gap, .25rem);overflow:hidden;box-sizing:border-box}.ml--rtl .ml__input-wrapper{direction:rtl}.ml--rtl .ml__input{text-align:right;padding-left:var(--ml-input-padding-right, 2.5rem);padding-right:var(--ml-input-padding-h, .75rem)}.ml--rtl .ml__toggle{left:var(--ml-toggle-right, .75rem)!important;right:auto!important}.ml--rtl .ml__count-badge{left:var(--ml-count-badge-offset, 2rem)!important;right:auto!important}.ml--rtl .ml__dropdown{direction:rtl;text-align:right}.ml--rtl .ml__option{flex-direction:row-reverse}.ml--rtl .ml__checkbox{margin-left:var(--ml-spacing-sm, .5rem);margin-right:0}.ml--rtl .ml__option-content{text-align:right}.ml--rtl .ml__option-icon{margin-left:var(--ml-spacing-xs, .25rem);margin-right:0}.ml--rtl .ml__pills{direction:rtl}.ml--rtl .ml__pill{flex-direction:row-reverse}.ml--rtl .ml__pill-remove{border-radius:var(--ml-pill-remove-border-radius-rtl, .375rem) 0 0 var(--ml-pill-remove-border-radius-rtl, .375rem);border-left:var(--ml-pill-remove-border, none);border-right:none}.ml--rtl .ml__pill-text{border-radius:0 var(--ml-pill-text-border-radius-rtl, .375rem) var(--ml-pill-text-border-radius-rtl, .375rem) 0}.ml--rtl .ml__count-display{direction:rtl}.ml--rtl .ml__count-badge-wrapper{flex-direction:row-reverse}.ml--rtl .ml__selected-popover{direction:rtl;text-align:right}.ml--rtl .ml__actions{direction:rtl}.ml--rtl .ml__group-label,.ml--rtl .ml__empty{text-align:right}.ml--rtl .ml__hint{direction:rtl;text-align:right}.ml--xs .ml__input{font-size:var(--ml-font-size-xs, .75rem)}.ml--xs .ml__option{padding:var(--ml-spacing-xs, .25rem) var(--ml-spacing-sm, .5rem)}.ml--xs .ml__option-title{font-size:var(--ml-font-size-xs, .75rem)}.ml--xs .ml__pill{font-size:var(--ml-font-size-2xs, .625rem)}.ml--sm .ml__input,.ml--sm .ml__option-title{font-size:var(--ml-font-size-xs, .75rem)}.ml--lg .ml__input,.ml--lg .ml__option-title{font-size:var(--ml-font-size-base, 1rem)}.ml--lg .ml__pill{font-size:var(--ml-font-size-sm, .875rem)}.ml--xl .ml__input,.ml--xl .ml__option-title{font-size:var(--ml-font-size-lg, 1.125rem)}.ml--xl .ml__pill{font-size:var(--ml-font-size-base, 1rem)}.ml--disabled .ml__input{opacity:var(--ml-disabled-input-opacity, .6);cursor:not-allowed;background:var(--ml-input-bg-disabled, rgba(107, 114, 128, .05))}.ml--disabled .ml__toggle{opacity:var(--ml-disabled-input-opacity, .6)}.ml--no-checkboxes .ml__option{gap:0;padding-left:var(--ml-option-padding-h, .75rem)}.ml--no-checkboxes .ml__option-content{padding-left:0}.ml-debug-info{margin-top:.25rem;padding:.25rem;background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:.375rem;font-size:.75rem;color:#111827}.ml-debug-info details summary{cursor:pointer;font-weight:600;color:#2563eb;-webkit-user-select:none;user-select:none;padding:.25rem;border-radius:.25rem}.ml-debug-info details summary:hover{background-color:#f3f4f6}.ml-debug-info details summary:focus{outline:2px solid #3b82f6;outline-offset:2px}.ml-debug-info .ml-debug-stats{display:flex;flex-direction:column;gap:.25rem;margin-top:.25rem;padding:.25rem;background-color:#fff;border-radius:.25rem}.ml-debug-info .ml-debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:.625rem}.ml-debug-info .ml-debug-stats span:before{content:"•";margin-right:.25rem;color:#3b82f6}', hi = typeof HTMLElement < "u" ? HTMLElement : class {
2319
- }, Ae = /* @__PURE__ */ new Set();
2445
+ const gi = '@charset "UTF-8";:host{--ml-accent-color: #3b82f6;--ml-accent-color-hover: #2563eb;--ml-accent-color-active: #1d4ed8;--ml-text-primary: #111827;--ml-text-secondary: #6b7280;--ml-text-white: #ffffff;--ml-primary-bg: #f3f4f6;--ml-primary-bg-hover: #e5e7eb;--ml-border-color: #e5e7eb;--ml-input-padding: .5rem .75rem;--ml-input-padding-right: 2.5rem;--ml-input-font-size: .875rem;--ml-input-border-style: 1px solid #d1d5db;--ml-input-border-radius: .375rem;--ml-input-bg: #ffffff;--ml-input-text: #111827;--ml-input-focus-border-color: #3b82f6;--ml-input-placeholder-color: #6b7280;--ml-input-bg-disabled: rgba(107, 114, 128, .05);--ml-toggle-right: .75rem;--ml-toggle-color: #6b7280;--ml-transform-center-y: translateY(-50%);--ml-transform-rotate-180: 180deg;--ml-counter-offset: 2rem;--ml-counter-padding: .125rem .25rem;--ml-counter-bg: #3b82f6;--ml-counter-color: #ffffff;--ml-counter-font-size: .75rem;--ml-counter-font-weight: 600;--ml-counter-border-radius: .25rem;--ml-counter-bg-hover: #2563eb;--ml-transform-scale-hover: 1.1;--ml-hint-padding: .5rem .75rem;--ml-hint-bg: #ffffff;--ml-hint-border: 1px solid #e5e7eb;--ml-hint-border-radius: .375rem;--ml-hint-box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--ml-hint-font-size: .75rem;--ml-hint-color: #6b7280;--ml-line-height-relaxed: 1.4;--ml-dropdown-bg: #ffffff;--ml-dropdown-border: 1px solid #e5e7eb;--ml-dropdown-border-radius: .375rem;--ml-dropdown-box-shadow: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--ml-options-max-height: 20rem;--ml-option-color: #111827;--ml-z-index-dropdown: 9999;--ml-z-index-sticky: 1;--ml-actions-gap: .25rem;--ml-actions-padding: .5rem;--ml-actions-border-bottom: 1px solid #e5e7eb;--ml-actions-bg: #ffffff;--ml-action-btn-padding: .25rem .5rem;--ml-action-btn-font-size: .75rem;--ml-action-btn-border: 1px solid #e5e7eb;--ml-action-btn-border-radius: .25rem;--ml-action-btn-bg: transparent;--ml-action-btn-color: inherit;--ml-action-btn-bg-hover: #f3f4f6;--ml-action-btn-border-color-hover: #3b82f6;--ml-transform-scale-active: .98;--ml-options-padding: .25rem 0;--ml-group-border-top: 1px solid #e5e7eb;--ml-group-margin-top: .25rem;--ml-group-padding-top: .25rem;--ml-group-label-padding: .25rem .75rem;--ml-group-label-font-size: .75rem;--ml-group-label-font-weight: 600;--ml-group-label-color: #6b7280;--ml-group-label-transform: uppercase;--ml-group-label-letter-spacing: .05em;--ml-option-gap: .5rem;--ml-option-padding: .5rem .75rem;--ml-option-padding-h: .75rem;--ml-option-bg: transparent;--ml-option-bg-hover: #f9fafb;--ml-option-bg-focused: #f9fafb;--ml-option-outline-focused: 2px solid #3b82f6;--ml-option-focus-outline-offset: -2px;--ml-option-bg-matched: rgba(59, 130, 246, .08);--ml-option-border-matched: 3px solid rgba(59, 130, 246, .4);--ml-option-bg-selected: rgba(59, 130, 246, .1);--ml-disabled-opacity: .5;--ml-option-content-gap: .5rem;--ml-option-icon-size: 1.25rem;--ml-option-icon-font-size: 1rem;--ml-option-title-font-size: .875rem;--ml-option-title-color: inherit;--ml-option-mark-bg: rgba(59, 130, 246, .2);--ml-option-mark-color: inherit;--ml-option-mark-font-weight: 600;--ml-option-subtitle-margin-top: .25rem;--ml-option-subtitle-font-size: .75rem;--ml-option-subtitle-color: #6b7280;--ml-option-subtitle-line-height: 1.3;--ml-checkbox-margin-top: .125rem;--ml-checkbox-size: 16px;--ml-checkbox-scale: 1;--ml-checkbox-align: flex-start;--ml-empty-padding: 1rem .75rem;--ml-empty-font-size: .875rem;--ml-empty-color: #6b7280;--ml-loader-padding: 1rem;--ml-loader-gap: .5rem;--ml-loading-text-font-size: .875rem;--ml-loading-text-color: #6b7280;--ml-badges-gap: .5rem;--ml-badges-margin-bottom: .5rem;--ml-badges-margin-top: .5rem;--ml-badges-margin-left: .25rem;--ml-badges-margin-right: .25rem;--ml-badge-gap: .5rem;--ml-badge-height: 1.5rem;--ml-badge-font-size: .75rem;--ml-badge-font-weight: 600;--ml-badge-border-radius: .375rem;--ml-badge-bg: #eff6ff;--ml-badge-bg-hover: #ffffff;--ml-badge-bg-active: #e0f2fe;--ml-order-first: -1;--ml-badge-text-padding: 0 .5rem;--ml-badge-text-bg: #eff6ff;--ml-badge-text-color: #3b82f6;--ml-badge-remove-width: 1.5rem;--ml-badge-remove-bg: #3b82f6;--ml-badge-remove-color: #ffffff;--ml-badge-remove-border: none;--ml-badge-remove-font-size: .75rem;--ml-badge-remove-bg-hover: #2563eb;--ml-badge-remove-box-shadow-focus: 0 0 0 2px rgba(59, 130, 246, .5);--ml-icon-remove: "×";--ml-badge-counter-bg: transparent;--ml-badge-counter-border: 1px solid #e5e7eb;--ml-badge-counter-border-radius: .25rem;--ml-badge-counter-text-color: #6b7280;--ml-badge-counter-text-bg: #d1d5db;--ml-badge-counter-remove-bg: #6b7280;--ml-badge-counter-remove-color: #ffffff;--ml-badge-counter-remove-bg-hover: #111827;--ml-more-badge-bg: #eff6ff;--ml-more-badge-hover-bg: #ffffff;--ml-more-badge-active-bg: #e0f2fe;--ml-count-display-margin-bottom: .5rem;--ml-count-display-margin-top: .5rem;--ml-count-display-margin-left: .5rem;--ml-count-display-margin-right: .5rem;--ml-counter-wrapper-bg: transparent;--ml-counter-wrapper-border: 1px solid #e5e7eb;--ml-counter-wrapper-border-radius: .25rem;--ml-counter-wrapper-padding: .25rem .5rem;--ml-counter-wrapper-gap: .25rem;--ml-counter-wrapper-bg-hover: #f9fafb;--ml-counter-wrapper-border-color-hover: #3b82f6;--ml-count-text-bg: transparent;--ml-count-text-border: none;--ml-count-text-font-size: .875rem;--ml-count-text-color: #111827;--ml-count-clear-size: 1rem;--ml-count-clear-bg: transparent;--ml-count-clear-color: #6b7280;--ml-count-clear-font-size: 1.125rem;--ml-count-clear-border-radius: 50%;--ml-count-clear-bg-hover: rgba(59, 130, 246, .2);--ml-count-clear-color-hover: #3b82f6;--ml-icon-clear: "×";--ml-tooltip-bg: #333;--ml-tooltip-color: #fff;--ml-tooltip-padding: .5rem .75rem;--ml-tooltip-border-radius: .375rem;--ml-tooltip-font-size: .875rem;--ml-tooltip-max-width: 20rem;--ml-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ml-tooltip-z-index: 10000;--ml-z-index-popover: 10000;--ml-selected-popover-width: 20rem;--ml-selected-popover-max-height: 20rem;--ml-selected-popover-bg: #ffffff;--ml-selected-popover-border: 1px solid #e5e7eb;--ml-selected-popover-border-radius: .375rem;--ml-selected-popover-box-shadow: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--ml-selected-popover-header-padding: .5rem .75rem;--ml-selected-popover-header-bg: rgba(59, 130, 246, .1);--ml-selected-popover-header-border-bottom: 1px solid #e5e7eb;--ml-selected-popover-header-font-size: .875rem;--ml-selected-popover-header-font-weight: 600;--ml-selected-popover-header-color: #111827;--ml-popover-close-size: 1.5rem;--ml-selected-popover-close-bg: transparent;--ml-selected-popover-close-color: #6b7280;--ml-selected-popover-close-font-size: 1.25rem;--ml-selected-popover-close-border-radius: 50%;--ml-selected-popover-close-bg-hover: rgba(59, 130, 246, .2);--ml-selected-popover-close-color-hover: #3b82f6;--ml-selected-popover-body-gap: .25rem;--ml-selected-popover-body-padding: .5rem;--ml-selected-popover-body-max-height: 18rem;--ml-font-size-2xs: .625rem;--ml-font-size-xs: .75rem;--ml-font-size-sm: .875rem;--ml-font-size-base: 1rem;--ml-font-size-lg: 1.125rem;--ml-font-weight-medium: 500;--ml-font-weight-semibold: 600;--ml-line-height-none: 1;--ml-spacing-xs: .25rem;--ml-spacing-sm: .5rem;--ml-spacing-md: .75rem;--ml-spacing-lg: 1rem;--ml-transition-fast: .15s;--ml-transition-normal: .2s;--ml-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ml-placeholder-opacity: .6;--ml-disabled-input-opacity: .6}multi-select:not(:defined){display:block;min-height:2.5rem;color:transparent!important;background:transparent}.ml-wrapper{display:flex;flex-direction:column;align-items:stretch}.ml-wrapper--inline{flex-direction:row;align-items:flex-start}.ml{position:relative;width:100%}.ml__input-wrapper{position:relative;display:flex;align-items:center}.ml__input{width:100%;padding:var(--ml-input-padding, .5rem .75rem);padding-right:var(--ml-input-padding-right, 2.5rem);font-size:var(--ml-input-font-size, .875rem);border:var(--ml-input-border-style, 1px solid #d1d5db);border-radius:var(--ml-input-border-radius, .375rem);background:var(--ml-input-bg, #ffffff);color:var(--ml-input-text, #111827);cursor:pointer;transition:border-color var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__input:focus{outline:none;border-color:var(--ml-input-focus-border-color, #3b82f6)}.ml__input::placeholder{color:var(--ml-input-placeholder-color, #6b7280);opacity:0;transition:opacity var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}:host([data-ready]) .ml__input::placeholder{opacity:var(--ml-placeholder-opacity, .6)}.ml__toggle{position:absolute;right:var(--ml-toggle-right, .75rem);top:50%;transform:var(--ml-transform-center-y, translateY(-50%));pointer-events:none;color:var(--ml-toggle-color, #6b7280);transition:transform var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml--open .ml__toggle{transform:var(--ml-transform-center-y, translateY(-50%)) rotate(var(--ml-transform-rotate-180, 180deg))}.ml__counter{position:absolute;right:var(--ml-counter-offset, 2rem);top:50%;transform:var(--ml-transform-center-y, translateY(-50%));padding:var(--ml-counter-padding, .125rem .25rem);background:var(--ml-counter-bg, #3b82f6);color:var(--ml-counter-color, #ffffff);font-size:var(--ml-counter-font-size, .75rem);font-weight:var(--ml-counter-font-weight, 600);border-radius:var(--ml-counter-border-radius, .25rem);cursor:pointer;transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__counter:hover{background:var(--ml-counter-bg-hover, #2563eb);transform:var(--ml-transform-center-y, translateY(-50%)) scale(var(--ml-transform-scale-hover, 1.1))}.ml__hint{display:none;position:absolute;z-index:var(--ml-z-index-popover, 10000);padding:var(--ml-hint-padding, .5rem .75rem);background:var(--ml-hint-bg, #ffffff);border:var(--ml-hint-border, 1px solid #e5e7eb);border-radius:var(--ml-hint-border-radius, .375rem);box-shadow:var(--ml-hint-box-shadow, 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1));font-size:var(--ml-hint-font-size, .75rem);color:var(--ml-hint-color, #6b7280);line-height:var(--ml-line-height-relaxed, 1.4);max-width:100%}.ml__hint--visible{display:block}.ml__dropdown{display:none;position:absolute;z-index:var(--ml-z-index-dropdown, 9999);background:var(--ml-dropdown-bg, #ffffff);border:var(--ml-dropdown-border, 1px solid #e5e7eb);border-radius:var(--ml-dropdown-border-radius, .375rem);box-shadow:var(--ml-dropdown-box-shadow, 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1));max-height:var(--ml-options-max-height, 20rem);overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;color:var(--ml-option-color, #111827)}.ml__dropdown--visible{display:block}.ml__dropdown--virtual{overflow-y:visible;max-height:none}.ml__actions{display:flex;flex-wrap:nowrap;gap:var(--ml-actions-gap, .25rem);padding:var(--ml-actions-padding, .5rem);border-bottom:var(--ml-actions-border-bottom, 1px solid #e5e7eb)}.ml__actions--wrap{flex-wrap:wrap}.ml__actions--sticky{position:sticky;top:0;z-index:var(--ml-z-index-sticky, 1);background:var(--ml-actions-bg, #ffffff)}.ml__action-btn{flex:1;padding:var(--ml-action-btn-padding, .25rem .5rem);font-size:var(--ml-action-btn-font-size, .75rem);border:var(--ml-action-btn-border, 1px solid #e5e7eb);border-radius:var(--ml-action-btn-border-radius, .25rem);background:var(--ml-action-btn-bg, transparent);color:var(--ml-action-btn-color, inherit);cursor:pointer;transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__action-btn:hover{background:var(--ml-action-btn-bg-hover, #f3f4f6);border-color:var(--ml-action-btn-border-color-hover, #3b82f6)}.ml__action-btn:active{transform:scale(var(--ml-transform-scale-active, .98))}.ml__action-btn:disabled,.ml__action-btn[disabled]{opacity:var(--ml-disabled-opacity, .5);cursor:not-allowed;pointer-events:none}.ml__options{padding:var(--ml-options-padding, .25rem 0)}.ml__options--virtual .ml__option{height:var(--ml-option-height, 50px);min-height:var(--ml-option-height, 50px);max-height:var(--ml-option-height, 50px);overflow:hidden;box-sizing:border-box}.ml__group+.ml__group{border-top:var(--ml-group-border-top, 1px solid #e5e7eb);margin-top:var(--ml-group-margin-top, .25rem);padding-top:var(--ml-group-padding-top, .25rem)}.ml__group-label{padding:var(--ml-group-label-padding, .25rem .75rem);font-size:var(--ml-group-label-font-size, .75rem);font-weight:var(--ml-group-label-font-weight, 600);color:var(--ml-group-label-color, #6b7280);text-transform:var(--ml-group-label-transform, uppercase);letter-spacing:var(--ml-group-label-letter-spacing, .05em)}.ml__option{display:flex;align-items:var(--ml-checkbox-align, flex-start);gap:var(--ml-option-gap, .5rem);padding:var(--ml-option-padding, .5rem .75rem);cursor:pointer;transition:background-color var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__option:hover{background:var(--ml-option-bg-hover, #f9fafb)}.ml__option--focused{background:var(--ml-option-bg-focused, #f9fafb);outline:var(--ml-option-outline-focused, 2px solid #3b82f6);outline-offset:var(--ml-option-focus-outline-offset, -2px)}.ml__option--matched{background:var(--ml-option-bg-matched, rgba(59, 130, 246, .08));border-left:var(--ml-option-border-matched, 3px solid rgba(59, 130, 246, .4))}.ml__option--selected{background:var(--ml-option-bg-selected, rgba(59, 130, 246, .1))}.ml__option--selected:hover{background:var(--ml-option-bg-selected-hover, var(--ml-option-bg-selected, rgba(59, 130, 246, .1)))}.ml__option--disabled{opacity:var(--ml-disabled-opacity, .5);cursor:not-allowed}.ml__option--disabled:hover{background:var(--ml-option-bg, transparent)}.ml__option[data-checkbox-align=center]{--ml-checkbox-align: center}.ml__option[data-checkbox-align=bottom]{--ml-checkbox-align: flex-end}.ml__checkbox{flex-shrink:0;margin-top:var(--ml-checkbox-margin-top, .125rem);width:var(--ml-checkbox-size, 16px);height:var(--ml-checkbox-size, 16px);transform:scale(var(--ml-checkbox-scale, 1));transform-origin:top left;cursor:pointer}.ml__option--disabled .ml__checkbox{cursor:not-allowed}.ml__option-content{flex:1;display:flex;align-items:flex-start;gap:var(--ml-option-content-gap, .5rem);min-width:0}.ml__option-icon{flex-shrink:0;width:var(--ml-option-icon-size, 1.25rem);height:var(--ml-option-icon-size, 1.25rem);display:flex;align-items:center;justify-content:center;font-size:var(--ml-option-icon-font-size, 1rem)}.ml__option-icon svg{width:100%;height:100%;fill:currentColor}.ml__option-text{flex:1;min-width:0}.ml__option-title{font-size:var(--ml-option-title-font-size, .875rem);color:var(--ml-option-title-color, inherit);line-height:var(--ml-line-height-relaxed, 1.4)}.ml__option-title mark{background:var(--ml-option-mark-bg, rgba(59, 130, 246, .2));color:var(--ml-option-mark-color, inherit);font-weight:var(--ml-option-mark-font-weight, 600)}.ml__option-subtitle{margin-top:var(--ml-option-subtitle-margin-top, .25rem);font-size:var(--ml-option-subtitle-font-size, .75rem);color:var(--ml-option-subtitle-color, #6b7280);line-height:var(--ml-option-subtitle-line-height, 1.3)}.ml__empty{padding:var(--ml-empty-padding, 1rem .75rem);text-align:center;font-size:var(--ml-empty-font-size, .875rem);color:var(--ml-empty-color, #6b7280)}.ml__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--ml-loader-padding, 1rem);gap:var(--ml-loader-gap, .5rem)}.ml__loading-text{font-size:var(--ml-loading-text-font-size, .875rem);color:var(--ml-loading-text-color, #6b7280)}.ml__badges{display:flex;flex-wrap:wrap;gap:var(--ml-badges-gap, .5rem);padding:0}.ml__badges:empty{display:none}.ml__badges--bottom{margin-top:var(--ml-badges-margin-bottom, .5rem)}.ml__badges--top{margin-bottom:var(--ml-badges-margin-top, .5rem);order:var(--ml-order-first, -1)}.ml__badges--left{order:var(--ml-order-first, -1);margin-right:var(--ml-badges-margin-left, .25rem);justify-content:flex-end}.ml__badges--right{margin-left:var(--ml-badges-margin-right, .25rem);justify-content:flex-start}.ml__count-display{display:flex;align-items:center}.ml__count-display:empty{display:none}.ml__count-display--bottom{margin-top:var(--ml-count-display-margin-bottom, .5rem)}.ml__count-display--top{margin-bottom:var(--ml-count-display-margin-top, .5rem);order:var(--ml-order-first, -1)}.ml__count-display--left{order:var(--ml-order-first, -1);margin-right:var(--ml-count-display-margin-left, .5rem);justify-content:flex-start}.ml__count-display--right{margin-left:var(--ml-count-display-margin-right, .5rem);justify-content:flex-end}.ml__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ml-counter-wrapper-gap, .25rem);background:var(--ml-counter-wrapper-bg, transparent);border:var(--ml-counter-wrapper-border, 1px solid #e5e7eb);border-radius:var(--ml-counter-wrapper-border-radius, .25rem);padding:var(--ml-counter-wrapper-padding, .25rem .5rem);transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__counter-wrapper:hover{background:var(--ml-counter-wrapper-bg-hover, #f9fafb);border-color:var(--ml-counter-wrapper-border-color-hover, #3b82f6)}.ml__count-text{display:inline-flex;align-items:center;background:var(--ml-count-text-bg, transparent);border:var(--ml-count-text-border, none);padding:0;font-size:var(--ml-count-text-font-size, .875rem);color:var(--ml-count-text-color, #111827);cursor:pointer;transition:color var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ml-count-clear-size, 1rem);height:var(--ml-count-clear-size, 1rem);padding:0;border:none;background:var(--ml-count-clear-bg, transparent);color:var(--ml-count-clear-color, #6b7280);font-size:var(--ml-count-clear-font-size, 1.125rem);line-height:var(--ml-line-height-none, 1);cursor:pointer;border-radius:var(--ml-count-clear-border-radius, 50%);transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__count-clear:hover{background:var(--ml-count-clear-bg-hover, rgba(59, 130, 246, .2));color:var(--ml-count-clear-color-hover, #3b82f6)}.ml__count-clear:before{content:var(--ml-icon-clear, "×")}.ml__badge{display:inline-flex;align-items:center;height:var(--ml-badge-height, 1.5rem);font-size:var(--ml-badge-font-size, .75rem);font-weight:var(--ml-badge-font-weight, 600);line-height:var(--ml-line-height-none, 1);border-radius:var(--ml-badge-border-radius, .375rem);overflow:hidden;max-width:100%}.ml__badge-text{display:flex;align-items:center;height:100%;padding:var(--ml-badge-text-padding, 0 .5rem);background:var(--ml-badge-text-bg, #eff6ff);color:var(--ml-badge-text-color, #3b82f6);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ml-transition-normal, .2s) ease}.ml__badge-remove{display:flex;align-items:center;justify-content:center;width:var(--ml-badge-remove-width, 1.5rem);height:100%;flex-shrink:0;background:var(--ml-badge-remove-bg, #3b82f6);color:var(--ml-badge-remove-color, #ffffff);border:var(--ml-badge-remove-border, none);cursor:pointer;transition:background-color var(--ml-transition-normal, .2s) ease;font-size:var(--ml-badge-remove-font-size, .75rem)}.ml__badge-remove:hover{background:var(--ml-badge-remove-bg-hover, #2563eb)}.ml__badge-remove:focus{outline:none;box-shadow:var(--ml-badge-remove-box-shadow-focus, 0 0 0 2px rgba(59, 130, 246, .5))}.ml__badge-remove:before{content:var(--ml-icon-remove, "×");font-size:var(--ml-font-size-base, 1rem);line-height:var(--ml-line-height-none, 1)}.ml__badge--counter{border:var(--ml-badge-counter-border, 1px solid #e5e7eb);cursor:pointer}.ml__badge--counter .ml__badge-text{background:var(--ml-badge-counter-text-bg, #d1d5db);color:var(--ml-badge-counter-text-color, #6b7280)}.ml__badge--counter .ml__badge-remove{background:var(--ml-badge-counter-remove-bg, #6b7280);color:var(--ml-badge-counter-remove-color, #ffffff)}.ml__badge--counter .ml__badge-remove:hover{background:var(--ml-badge-counter-remove-bg-hover, #111827)}.ml__badge--more{cursor:pointer}.ml__badge-tooltip{position:fixed;z-index:var(--ml-tooltip-z-index, 10000);opacity:0;visibility:hidden;transition:opacity var(--ml-transition-normal, .2s) ease,visibility var(--ml-transition-normal, .2s) ease;background:var(--ml-tooltip-bg, #333);color:var(--ml-tooltip-color, #fff);padding:var(--ml-tooltip-padding, .5rem .75rem);border-radius:var(--ml-tooltip-border-radius, .375rem);font-size:var(--ml-tooltip-font-size, .875rem);line-height:var(--ml-line-height-relaxed, 1.4);max-width:var(--ml-tooltip-max-width, 20rem);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ml-tooltip-shadow, 0 2px 8px rgba(0, 0, 0, .15));pointer-events:none}.ml__badge-tooltip--visible{opacity:1;visibility:visible}.ml__selected-popover{display:none;position:absolute;z-index:var(--ml-z-index-popover, 10000);background:var(--ml-selected-popover-bg, #ffffff);border:var(--ml-selected-popover-border, 1px solid #e5e7eb);border-radius:var(--ml-selected-popover-border-radius, .375rem);box-shadow:var(--ml-selected-popover-box-shadow, 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1));width:var(--ml-selected-popover-width, 20rem);max-height:var(--ml-selected-popover-max-height, 20rem);overflow:hidden}.ml__selected-popover--visible{display:flex;flex-direction:column}.ml__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ml__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ml-selected-popover-header-padding, .5rem .75rem);background:var(--ml-selected-popover-header-bg, rgba(59, 130, 246, .1));border-bottom:var(--ml-selected-popover-header-border-bottom, 1px solid #e5e7eb);font-size:var(--ml-selected-popover-header-font-size, .875rem);font-weight:var(--ml-selected-popover-header-font-weight, 600);color:var(--ml-selected-popover-header-color, #111827)}.ml__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ml-popover-close-size, 1.5rem);height:var(--ml-popover-close-size, 1.5rem);padding:0;border:none;background:var(--ml-selected-popover-close-bg, transparent);color:var(--ml-selected-popover-close-color, #6b7280);font-size:var(--ml-selected-popover-close-font-size, 1.25rem);line-height:var(--ml-line-height-none, 1);cursor:pointer;border-radius:var(--ml-selected-popover-close-border-radius, 50%);transition:all var(--ml-transition-fast, .15s) var(--ml-easing-snappy, cubic-bezier(.4, 0, .2, 1))}.ml__selected-popover-close:hover{background:var(--ml-selected-popover-close-bg-hover, rgba(59, 130, 246, .2));color:var(--ml-selected-popover-close-color-hover, #3b82f6)}.ml__selected-popover-body{display:flex;flex-direction:column;gap:var(--ml-selected-popover-body-gap, .25rem);padding:var(--ml-selected-popover-body-padding, .5rem);overflow-y:auto;max-height:var(--ml-selected-popover-body-max-height, 18rem)}.ml__selected-popover-body .ml__badge{width:100%;min-height:fit-content;line-height:var(--ml-line-height-relaxed, 1.4)}.ml__selected-popover-body .ml__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ml__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ml__selected-popover-body--virtual .ml__badge{height:var(--ml-badge-height-virtual, 36px);min-height:var(--ml-badge-height-virtual, 36px);max-height:var(--ml-badge-height-virtual, 36px);margin-bottom:var(--ml-selected-popover-body-gap, .25rem);overflow:hidden;box-sizing:border-box}.ml__selected-popover-body--virtual .ml__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ml--rtl .ml__input-wrapper{direction:rtl}.ml--rtl .ml__input{text-align:right;padding-left:var(--ml-input-padding-right, 2.5rem);padding-right:var(--ml-input-padding-h, .75rem)}.ml--rtl .ml__toggle{left:var(--ml-toggle-right, .75rem)!important;right:auto!important}.ml--rtl .ml__counter{left:var(--ml-counter-offset, 2rem)!important;right:auto!important}.ml--rtl .ml__dropdown{direction:rtl;text-align:right}.ml--rtl .ml__option{flex-direction:row-reverse}.ml--rtl .ml__checkbox{margin-left:var(--ml-spacing-sm, .5rem);margin-right:0}.ml--rtl .ml__option-content{text-align:right}.ml--rtl .ml__option-icon{margin-left:var(--ml-spacing-xs, .25rem);margin-right:0}.ml--rtl .ml__badges{direction:rtl}.ml--rtl .ml__badge{flex-direction:row-reverse}.ml--rtl .ml__badge-remove{border-radius:var(--ml-badge-remove-border-radius-rtl, .375rem) 0 0 var(--ml-badge-remove-border-radius-rtl, .375rem);border-left:var(--ml-badge-remove-border, none);border-right:none}.ml--rtl .ml__badge-text{border-radius:0 var(--ml-badge-text-border-radius-rtl, .375rem) var(--ml-badge-text-border-radius-rtl, .375rem) 0}.ml--rtl .ml__count-display{direction:rtl}.ml--rtl .ml__counter-wrapper{flex-direction:row-reverse}.ml--rtl .ml__selected-popover{direction:rtl;text-align:right}.ml--rtl .ml__actions{direction:rtl}.ml--rtl .ml__group-label,.ml--rtl .ml__empty{text-align:right}.ml--rtl .ml__hint{direction:rtl;text-align:right}.ml--xs .ml__input{font-size:var(--ml-font-size-xs, .75rem)}.ml--xs .ml__option{padding:var(--ml-spacing-xs, .25rem) var(--ml-spacing-sm, .5rem)}.ml--xs .ml__option-title{font-size:var(--ml-font-size-xs, .75rem)}.ml--xs .ml__badge{font-size:var(--ml-font-size-2xs, .625rem)}.ml--sm .ml__input,.ml--sm .ml__option-title{font-size:var(--ml-font-size-xs, .75rem)}.ml--lg .ml__input,.ml--lg .ml__option-title{font-size:var(--ml-font-size-base, 1rem)}.ml--lg .ml__badge{font-size:var(--ml-font-size-sm, .875rem)}.ml--xl .ml__input,.ml--xl .ml__option-title{font-size:var(--ml-font-size-lg, 1.125rem)}.ml--xl .ml__badge{font-size:var(--ml-font-size-base, 1rem)}.ml--disabled .ml__input{opacity:var(--ml-disabled-input-opacity, .6);cursor:not-allowed;background:var(--ml-input-bg-disabled, rgba(107, 114, 128, .05))}.ml--disabled .ml__toggle{opacity:var(--ml-disabled-input-opacity, .6)}.ml--no-checkboxes .ml__option{gap:0;padding-left:var(--ml-option-padding-h, .75rem)}.ml--no-checkboxes .ml__option-content{padding-left:0}.ml-debug-info{margin-top:.25rem;padding:.25rem;background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:.375rem;font-size:.75rem;color:#111827}.ml-debug-info details summary{cursor:pointer;font-weight:600;color:#2563eb;-webkit-user-select:none;user-select:none;padding:.25rem;border-radius:.25rem}.ml-debug-info details summary:hover{background-color:#f3f4f6}.ml-debug-info details summary:focus{outline:2px solid #3b82f6;outline-offset:2px}.ml-debug-info .ml-debug-stats{display:flex;flex-direction:column;gap:.25rem;margin-top:.25rem;padding:.25rem;background-color:#fff;border-radius:.25rem}.ml-debug-info .ml-debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:.625rem}.ml-debug-info .ml-debug-stats span:before{content:"•";margin-right:.25rem;color:#3b82f6}', bi = typeof HTMLElement < "u" ? HTMLElement : class {
2446
+ }, Se = /* @__PURE__ */ new Set();
2320
2447
  function nt() {
2321
- return Array.from(Ae);
2448
+ return Array.from(Se);
2322
2449
  }
2323
- class rt extends hi {
2450
+ class lt extends bi {
2324
2451
  constructor() {
2325
2452
  super();
2326
- u(this, "picker");
2327
- u(this, "containerElement");
2328
- u(this, "shadow");
2453
+ m(this, "picker");
2454
+ m(this, "containerElement");
2455
+ m(this, "shadow");
2329
2456
  // Properties for complex data (not attributes)
2330
- u(this, "_options");
2457
+ m(this, "_options");
2331
2458
  // Member/Callback properties
2332
- u(this, "_valueMember");
2333
- u(this, "_getValueCallback");
2334
- u(this, "_displayValueMember");
2335
- u(this, "_getDisplayValueCallback");
2336
- u(this, "_getPillDisplayCallback");
2337
- u(this, "_searchValueMember");
2338
- u(this, "_getSearchValueCallback");
2339
- u(this, "_iconMember");
2340
- u(this, "_getIconCallback");
2341
- u(this, "_subtitleMember");
2342
- u(this, "_getSubtitleCallback");
2343
- u(this, "_groupMember");
2344
- u(this, "_getGroupCallback");
2345
- u(this, "_disabledMember");
2346
- u(this, "_getDisabledCallback");
2459
+ m(this, "_valueMember");
2460
+ m(this, "_getValueCallback");
2461
+ m(this, "_displayValueMember");
2462
+ m(this, "_getDisplayValueCallback");
2463
+ m(this, "_getBadgeDisplayCallback");
2464
+ m(this, "_getBadgeClassCallback");
2465
+ m(this, "_customStylesCallback");
2466
+ m(this, "_searchValueMember");
2467
+ m(this, "_getSearchValueCallback");
2468
+ m(this, "_iconMember");
2469
+ m(this, "_getIconCallback");
2470
+ m(this, "_subtitleMember");
2471
+ m(this, "_getSubtitleCallback");
2472
+ m(this, "_groupMember");
2473
+ m(this, "_getGroupCallback");
2474
+ m(this, "_disabledMember");
2475
+ m(this, "_getDisabledCallback");
2347
2476
  // Value formatting callbacks
2348
- u(this, "_getValueFormatCallback");
2477
+ m(this, "_getValueFormatCallback");
2349
2478
  // Tooltip callbacks
2350
- u(this, "_getPillTooltipCallback");
2351
- // Count pill callback
2352
- u(this, "_getCountPillCallback");
2479
+ m(this, "_getBadgeTooltipCallback");
2480
+ // Custom rendering callbacks
2481
+ m(this, "_renderOptionContentCallback");
2482
+ m(this, "_renderBadgeContentCallback");
2483
+ m(this, "_renderSelectedItemContentCallback");
2484
+ m(this, "_getSelectedItemClassCallback");
2485
+ m(this, "_renderSelectedContentCallback");
2486
+ // Count badge callback
2487
+ m(this, "_getCounterCallback");
2488
+ // Action buttons
2489
+ m(this, "_actionButtons");
2353
2490
  // Event callbacks
2354
- u(this, "_beforeSearchCallback");
2355
- u(this, "_searchCallback");
2356
- u(this, "_addNewCallback");
2357
- u(this, "_selectCallback");
2358
- u(this, "_deselectCallback");
2359
- u(this, "_changeCallback");
2360
- u(this, "_declarativeSelectedValues");
2491
+ m(this, "_beforeSearchCallback");
2492
+ m(this, "_searchCallback");
2493
+ m(this, "_addNewCallback");
2494
+ m(this, "_selectCallback");
2495
+ m(this, "_deselectCallback");
2496
+ m(this, "_changeCallback");
2497
+ m(this, "_declarativeSelectedValues");
2361
2498
  this.shadow = this.attachShadow({ mode: "open" });
2362
2499
  const t = document.createElement("style");
2363
- t.textContent = pi, this.shadow.appendChild(t), requestAnimationFrame(() => {
2500
+ t.textContent = gi, this.shadow.appendChild(t), requestAnimationFrame(() => {
2364
2501
  this.setAttribute("data-ready", "");
2365
2502
  });
2366
2503
  }
@@ -2371,19 +2508,17 @@ class rt extends hi {
2371
2508
  "search-placeholder",
2372
2509
  "multiple",
2373
2510
  "allow-groups",
2374
- "allow-select-all",
2375
- "allow-clear-all",
2376
2511
  "show-checkboxes",
2377
2512
  "sticky-actions",
2378
2513
  "close-on-select",
2379
2514
  "lock-placement",
2380
2515
  "dropdown-min-width",
2381
- "pills-display-mode",
2382
- "pills-threshold",
2383
- "pills-max-visible",
2384
- "pills-threshold-mode",
2385
- "pills-position",
2386
- "show-count-badge",
2516
+ "badges-display-mode",
2517
+ "badges-threshold",
2518
+ "badges-max-visible",
2519
+ "badges-threshold-mode",
2520
+ "badges-position",
2521
+ "show-counter",
2387
2522
  "keep-options-on-search",
2388
2523
  "max-height",
2389
2524
  "empty-message",
@@ -2392,13 +2527,14 @@ class rt extends hi {
2392
2527
  "enable-search",
2393
2528
  "search-input-mode",
2394
2529
  "search-mode",
2530
+ "actions-layout",
2395
2531
  "allow-add-new",
2396
2532
  "initial-values",
2397
2533
  // Virtual scroll options
2398
2534
  "enable-virtual-scroll",
2399
2535
  "virtual-scroll-threshold",
2400
2536
  "option-height",
2401
- "pill-height",
2537
+ "badge-height",
2402
2538
  "virtual-scroll-buffer",
2403
2539
  // New member properties
2404
2540
  "value-member",
@@ -2412,22 +2548,22 @@ class rt extends hi {
2412
2548
  "name",
2413
2549
  "value-format",
2414
2550
  // Tooltip options
2415
- "enable-pill-tooltips",
2416
- "pill-tooltip-placement",
2551
+ "enable-badge-tooltips",
2552
+ "badge-tooltip-placement",
2417
2553
  // Debug
2418
2554
  "show-debug-info"
2419
2555
  ];
2420
2556
  }
2421
2557
  connectedCallback() {
2422
- Ae.add(this), this.render();
2558
+ Se.add(this), this.render();
2423
2559
  const t = this.parseDeclarativeOptions();
2424
- t && (this._options && this._options.length > 0 && C.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), this._options = t), this.initializePicker();
2560
+ t && (this._options && this._options.length > 0 && S.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), this._options = t), this.initializePicker();
2425
2561
  }
2426
2562
  disconnectedCallback() {
2427
- Ae.delete(this), this.picker && this.picker.destroy();
2563
+ Se.delete(this), this.picker && this.picker.destroy();
2428
2564
  }
2429
- attributeChangedCallback(t, l, o) {
2430
- l !== o && this.picker && t !== "initial-values" && (this.picker.destroy(), this.initializePicker());
2565
+ attributeChangedCallback(t, o, s) {
2566
+ o !== s && this.picker && t !== "initial-values" && (this.picker.destroy(), this.initializePicker());
2431
2567
  }
2432
2568
  render() {
2433
2569
  this.containerElement = document.createElement("div"), this.containerElement.setAttribute("data-multiselect", ""), this.className && (this.containerElement.className = this.className), this.shadow.appendChild(this.containerElement), this.getAttribute("show-debug-info") === "true" && this.renderDebugInfo();
@@ -2435,27 +2571,27 @@ class rt extends hi {
2435
2571
  renderDebugInfo() {
2436
2572
  const t = this.shadow.querySelector(".ml-debug-info");
2437
2573
  t && t.remove();
2574
+ const o = document.createElement("div");
2575
+ o.className = "ml-debug-info";
2576
+ const s = document.createElement("details"), n = document.createElement("summary");
2577
+ n.textContent = "Debug Info";
2438
2578
  const l = document.createElement("div");
2439
- l.className = "ml-debug-info";
2440
- const o = document.createElement("details"), s = document.createElement("summary");
2441
- s.textContent = "Debug Info";
2442
- const n = document.createElement("div");
2443
- n.className = "ml-debug-stats", o.appendChild(s), o.appendChild(n), l.appendChild(o), this.shadow.appendChild(l), this.updateDebugInfo();
2579
+ l.className = "ml-debug-stats", s.appendChild(n), s.appendChild(l), o.appendChild(s), this.shadow.appendChild(o), this.updateDebugInfo();
2444
2580
  }
2445
2581
  updateDebugInfo() {
2446
- var h, f;
2582
+ var h, g;
2447
2583
  const t = this.shadow.querySelector(".ml-debug-stats");
2448
2584
  if (!t || !this.picker) return;
2449
- const l = "1.0.0-rc10", o = nt().length, n = this.picker.getSelected().length, r = ((h = this._options) == null ? void 0 : h.length) || 0, a = this.picker, d = a.isOpen || !1, c = a.searchTerm || "", m = a.isLoading || !1, p = ((f = a.filteredOptions) == null ? void 0 : f.length) || 0;
2585
+ const o = "1.0.0", s = nt().length, l = this.picker.getSelected().length, r = ((h = this._options) == null ? void 0 : h.length) || 0, a = this.picker, d = a.isOpen || !1, c = a.searchTerm || "", p = a.isLoading || !1, u = ((g = a.filteredOptions) == null ? void 0 : g.length) || 0;
2450
2586
  t.innerHTML = `
2451
- <span>Version: ${l}</span>
2452
- <span>Total Instances: ${o}</span>
2587
+ <span>Version: ${o}</span>
2588
+ <span>Total Instances: ${s}</span>
2453
2589
  <span>Options: ${r}</span>
2454
- <span>Filtered: ${p}</span>
2455
- <span>Selected: ${n}</span>
2590
+ <span>Filtered: ${u}</span>
2591
+ <span>Selected: ${l}</span>
2456
2592
  <span>Dropdown: ${d ? "Open" : "Closed"}</span>
2457
2593
  <span>Search: ${c || "none"}</span>
2458
- <span>Loading: ${m ? "Yes" : "No"}</span>
2594
+ <span>Loading: ${p ? "Yes" : "No"}</span>
2459
2595
  `, setTimeout(() => {
2460
2596
  this.getAttribute("show-debug-info") === "true" && this.updateDebugInfo();
2461
2597
  }, 500);
@@ -2465,30 +2601,30 @@ class rt extends hi {
2465
2601
  * Returns array of options in the format expected by the picker
2466
2602
  */
2467
2603
  parseDeclarativeOptions() {
2468
- var s, n, r, a;
2469
- const t = [], l = Array.from(this.children);
2470
- if (l.length === 0)
2604
+ var n, l, r, a;
2605
+ const t = [], o = Array.from(this.children);
2606
+ if (o.length === 0)
2471
2607
  return null;
2472
- let o = !1;
2473
- for (const d of l)
2608
+ let s = !1;
2609
+ for (const d of o)
2474
2610
  if (d.tagName === "OPTION") {
2475
- const c = d, m = {
2476
- value: c.value || ((s = c.textContent) == null ? void 0 : s.trim()) || "",
2477
- label: ((n = c.textContent) == null ? void 0 : n.trim()) || c.value || ""
2611
+ const c = d, p = {
2612
+ value: c.value || ((n = c.textContent) == null ? void 0 : n.trim()) || "",
2613
+ label: ((l = c.textContent) == null ? void 0 : l.trim()) || c.value || ""
2478
2614
  };
2479
- c.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(m.value)), c.hasAttribute("disabled") && (m.disabled = !0), c.hasAttribute("data-icon") && (m.icon = c.getAttribute("data-icon")), c.hasAttribute("data-subtitle") && (m.subtitle = c.getAttribute("data-subtitle")), t.push(m), o = !0;
2615
+ c.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(p.value)), c.hasAttribute("disabled") && (p.disabled = !0), c.hasAttribute("data-icon") && (p.icon = c.getAttribute("data-icon")), c.hasAttribute("data-subtitle") && (p.subtitle = c.getAttribute("data-subtitle")), t.push(p), s = !0;
2480
2616
  } else if (d.tagName === "OPTGROUP") {
2481
- const c = d, m = c.label || c.getAttribute("label") || "Group", p = Array.from(c.querySelectorAll("option"));
2482
- for (const h of p) {
2483
- const f = {
2617
+ const c = d, p = c.label || c.getAttribute("label") || "Group", u = Array.from(c.querySelectorAll("option"));
2618
+ for (const h of u) {
2619
+ const g = {
2484
2620
  value: h.value || ((r = h.textContent) == null ? void 0 : r.trim()) || "",
2485
2621
  label: ((a = h.textContent) == null ? void 0 : a.trim()) || h.value || "",
2486
- group: m
2622
+ group: p
2487
2623
  };
2488
- h.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(f.value)), h.hasAttribute("disabled") && (f.disabled = !0), h.hasAttribute("data-icon") && (f.icon = h.getAttribute("data-icon")), h.hasAttribute("data-subtitle") && (f.subtitle = h.getAttribute("data-subtitle")), t.push(f), o = !0;
2624
+ h.hasAttribute("selected") && (this._declarativeSelectedValues || (this._declarativeSelectedValues = []), this._declarativeSelectedValues.push(g.value)), h.hasAttribute("disabled") && (g.disabled = !0), h.hasAttribute("data-icon") && (g.icon = h.getAttribute("data-icon")), h.hasAttribute("data-subtitle") && (g.subtitle = h.getAttribute("data-subtitle")), t.push(g), s = !0;
2489
2625
  }
2490
2626
  }
2491
- return o ? (C.debug(`[MultiSelectElement] Parsed ${t.length} declarative options from Light DOM`), l.forEach((d) => {
2627
+ return s ? (S.debug(`[MultiSelectElement] Parsed ${t.length} declarative options from Light DOM`), o.forEach((d) => {
2492
2628
  (d.tagName === "OPTION" || d.tagName === "OPTGROUP") && d.remove();
2493
2629
  }), t) : null;
2494
2630
  }
@@ -2496,51 +2632,54 @@ class rt extends hi {
2496
2632
  if (!this.containerElement) return;
2497
2633
  let t;
2498
2634
  if (this._declarativeSelectedValues && this._declarativeSelectedValues.length > 0)
2499
- t = this._declarativeSelectedValues, C.debug(`[MultiSelectElement] Using ${t.length} declaratively selected values`);
2635
+ t = this._declarativeSelectedValues, S.debug(`[MultiSelectElement] Using ${t.length} declaratively selected values`);
2500
2636
  else {
2501
- const o = this.getAttribute("initial-values");
2502
- if (o)
2637
+ const s = this.getAttribute("initial-values");
2638
+ if (s)
2503
2639
  try {
2504
- t = JSON.parse(o);
2505
- } catch (s) {
2506
- C.error("[MultiSelectElement] Failed to parse initial-values:", s);
2640
+ t = JSON.parse(s);
2641
+ } catch (n) {
2642
+ S.error("[MultiSelectElement] Failed to parse initial-values:", n);
2507
2643
  }
2508
2644
  }
2509
- const l = {
2645
+ const o = {
2510
2646
  // String options
2511
2647
  searchHint: this.getAttribute("search-hint") || void 0,
2512
2648
  searchPlaceholder: this.getAttribute("search-placeholder") || "Search...",
2513
2649
  dropdownMinWidth: this.getAttribute("dropdown-min-width") || void 0,
2514
- pillsDisplayMode: this.getAttribute("pills-display-mode") || "pills",
2515
- pillsPosition: this.getAttribute("pills-position") || "bottom",
2516
- pillsThresholdMode: this.getAttribute("pills-threshold-mode") || "count",
2650
+ badgesDisplayMode: this.getAttribute("badges-display-mode") || "badges",
2651
+ badgesPosition: this.getAttribute("badges-position") || "bottom",
2652
+ badgesThresholdMode: this.getAttribute("badges-threshold-mode") || "count",
2517
2653
  maxHeight: this.getAttribute("max-height") || "20rem",
2518
2654
  emptyMessage: this.getAttribute("empty-message") || "No results found",
2519
2655
  loadingMessage: this.getAttribute("loading-message") || "Loading...",
2520
2656
  searchInputMode: this.getAttribute("search-input-mode") || "normal",
2521
2657
  searchMode: this.getAttribute("search-mode") || "filter",
2658
+ actionsLayout: this.getAttribute("actions-layout") || "nowrap",
2522
2659
  // Number options
2523
- pillsThreshold: this.getAttribute("pills-threshold") ? parseInt(this.getAttribute("pills-threshold")) : void 0,
2524
- pillsMaxVisible: this.getAttribute("pills-max-visible") ? parseInt(this.getAttribute("pills-max-visible")) : void 0,
2660
+ badgesThreshold: this.getAttribute("badges-threshold") ? parseInt(this.getAttribute("badges-threshold")) : void 0,
2661
+ badgesMaxVisible: this.getAttribute("badges-max-visible") ? parseInt(this.getAttribute("badges-max-visible")) : void 0,
2525
2662
  minSearchLength: this.getAttribute("min-search-length") ? parseInt(this.getAttribute("min-search-length")) : 0,
2526
2663
  // Boolean options (map external to internal with 'is' prefix)
2527
2664
  isMultipleEnabled: this.getAttribute("multiple") !== "false",
2528
2665
  isGroupsAllowed: this.getAttribute("allow-groups") !== "false",
2529
- isSelectAllAllowed: this.getAttribute("allow-select-all") !== "false",
2530
- isClearAllAllowed: this.getAttribute("allow-clear-all") !== "false",
2531
2666
  isCheckboxesShown: this.getAttribute("show-checkboxes") !== "false",
2532
2667
  isActionsSticky: this.getAttribute("sticky-actions") !== "false",
2533
2668
  isCloseOnSelect: this.getAttribute("close-on-select") === "true",
2534
2669
  isPlacementLocked: this.getAttribute("lock-placement") !== "false",
2535
2670
  isSearchEnabled: this.getAttribute("enable-search") !== "false",
2536
2671
  isAddNewAllowed: this.getAttribute("allow-add-new") === "true",
2537
- isCountBadgeShown: this.getAttribute("show-count-badge") === "true",
2672
+ isCounterShown: this.getAttribute("show-counter") === "true",
2538
2673
  isKeepOptionsOnSearch: this.getAttribute("keep-options-on-search") !== "false",
2539
2674
  isVirtualScrollEnabled: this.getAttribute("enable-virtual-scroll") === "true",
2675
+ // Action buttons
2676
+ actionButtons: this._actionButtons,
2677
+ // Checkbox options
2678
+ checkboxAlign: this.getAttribute("checkbox-align") || "center",
2540
2679
  // Virtual scroll options
2541
2680
  virtualScrollThreshold: this.getAttribute("virtual-scroll-threshold") ? parseInt(this.getAttribute("virtual-scroll-threshold")) : 100,
2542
2681
  optionHeight: this.getAttribute("option-height") ? parseInt(this.getAttribute("option-height")) : 50,
2543
- pillHeight: this.getAttribute("pill-height") ? parseInt(this.getAttribute("pill-height")) : 36,
2682
+ badgeHeight: this.getAttribute("badge-height") ? parseInt(this.getAttribute("badge-height")) : 36,
2544
2683
  virtualScrollBuffer: this.getAttribute("virtual-scroll-buffer") ? parseInt(this.getAttribute("virtual-scroll-buffer")) : 10,
2545
2684
  // Member properties
2546
2685
  valueMember: this.getAttribute("value-member") || this._valueMember,
@@ -2553,55 +2692,63 @@ class rt extends hi {
2553
2692
  // Callback properties (JavaScript only)
2554
2693
  getValueCallback: this._getValueCallback,
2555
2694
  getDisplayValueCallback: this._getDisplayValueCallback,
2556
- getPillDisplayCallback: this._getPillDisplayCallback,
2695
+ getBadgeDisplayCallback: this._getBadgeDisplayCallback,
2696
+ getBadgeClassCallback: this._getBadgeClassCallback,
2697
+ customStylesCallback: this._customStylesCallback,
2557
2698
  getSearchValueCallback: this._getSearchValueCallback,
2558
2699
  getIconCallback: this._getIconCallback,
2559
2700
  getSubtitleCallback: this._getSubtitleCallback,
2560
2701
  getGroupCallback: this._getGroupCallback,
2561
2702
  getDisabledCallback: this._getDisabledCallback,
2703
+ // Custom rendering callbacks
2704
+ renderOptionContentCallback: this._renderOptionContentCallback,
2705
+ renderBadgeContentCallback: this._renderBadgeContentCallback,
2706
+ renderSelectedItemContentCallback: this._renderSelectedItemContentCallback,
2707
+ getSelectedItemClassCallback: this._getSelectedItemClassCallback,
2708
+ renderSelectedContentCallback: this._renderSelectedContentCallback,
2562
2709
  // Form integration & value formatting
2563
2710
  formFieldId: this.getAttribute("name") || void 0,
2564
2711
  valueFormat: this.getAttribute("value-format") || "json",
2565
2712
  getValueFormatCallback: this._getValueFormatCallback,
2566
2713
  // Tooltip options
2567
- isPillTooltipsEnabled: this.getAttribute("enable-pill-tooltips") === "true",
2568
- getPillTooltipCallback: this._getPillTooltipCallback,
2569
- pillTooltipPlacement: this.getAttribute("pill-tooltip-placement") || "top",
2570
- pillTooltipDelay: parseInt(this.getAttribute("pill-tooltip-delay") || "300"),
2571
- pillTooltipOffset: parseInt(this.getAttribute("pill-tooltip-offset") || "8"),
2572
- // Count pill callback
2573
- getCountPillCallback: this._getCountPillCallback || ((o, s) => s !== void 0 ? `+${s} more` : `${o} selected`),
2714
+ isBadgeTooltipsEnabled: this.getAttribute("enable-badge-tooltips") === "true",
2715
+ getBadgeTooltipCallback: this._getBadgeTooltipCallback,
2716
+ badgeTooltipPlacement: this.getAttribute("badge-tooltip-placement") || "top",
2717
+ badgeTooltipDelay: parseInt(this.getAttribute("badge-tooltip-delay") || "300"),
2718
+ badgeTooltipOffset: parseInt(this.getAttribute("badge-tooltip-offset") || "8"),
2719
+ // Count badge callback
2720
+ getCounterCallback: this._getCounterCallback || ((s, n) => n !== void 0 ? `+${n} more` : `${s} selected`),
2574
2721
  // Data and callbacks
2575
2722
  options: this._options,
2576
2723
  beforeSearchCallback: this._beforeSearchCallback,
2577
2724
  searchCallback: this._searchCallback,
2578
2725
  addNewCallback: this._addNewCallback,
2579
- selectCallback: (o) => {
2580
- var s, n;
2581
- this._selectCallback && this._selectCallback(o), this.dispatchEvent(new CustomEvent("select", {
2726
+ selectCallback: (s) => {
2727
+ var n, l;
2728
+ this._selectCallback && this._selectCallback(s), this.dispatchEvent(new CustomEvent("select", {
2582
2729
  detail: {
2583
- option: o,
2584
- selectedOptions: (s = this.picker) == null ? void 0 : s.getSelected(),
2585
- selectedValues: Array.from(((n = this.picker) == null ? void 0 : n.getValue()) || [])
2730
+ option: s,
2731
+ selectedOptions: (n = this.picker) == null ? void 0 : n.getSelected(),
2732
+ selectedValues: Array.from(((l = this.picker) == null ? void 0 : l.getValue()) || [])
2586
2733
  }
2587
2734
  }));
2588
2735
  },
2589
- deselectCallback: (o) => {
2590
- var s, n;
2591
- this._deselectCallback && this._deselectCallback(o), this.dispatchEvent(new CustomEvent("deselect", {
2736
+ deselectCallback: (s) => {
2737
+ var n, l;
2738
+ this._deselectCallback && this._deselectCallback(s), this.dispatchEvent(new CustomEvent("deselect", {
2592
2739
  detail: {
2593
- option: o,
2594
- selectedOptions: (s = this.picker) == null ? void 0 : s.getSelected(),
2595
- selectedValues: Array.from(((n = this.picker) == null ? void 0 : n.getValue()) || [])
2740
+ option: s,
2741
+ selectedOptions: (n = this.picker) == null ? void 0 : n.getSelected(),
2742
+ selectedValues: Array.from(((l = this.picker) == null ? void 0 : l.getValue()) || [])
2596
2743
  }
2597
2744
  }));
2598
2745
  },
2599
- changeCallback: (o) => {
2600
- var s;
2601
- this._changeCallback && this._changeCallback(o), this.dispatchEvent(new CustomEvent("change", {
2746
+ changeCallback: (s) => {
2747
+ var n;
2748
+ this._changeCallback && this._changeCallback(s), this.dispatchEvent(new CustomEvent("change", {
2602
2749
  detail: {
2603
- selectedOptions: o,
2604
- selectedValues: Array.from(((s = this.picker) == null ? void 0 : s.getValue()) || [])
2750
+ selectedOptions: s,
2751
+ selectedValues: Array.from(((n = this.picker) == null ? void 0 : n.getValue()) || [])
2605
2752
  }
2606
2753
  }));
2607
2754
  },
@@ -2610,7 +2757,13 @@ class rt extends hi {
2610
2757
  // Pass host element (this) for hidden inputs in light DOM
2611
2758
  hostElement: this
2612
2759
  };
2613
- t && (this.containerElement.dataset.initialValues = JSON.stringify(t)), this.picker = new di(this.containerElement, l);
2760
+ if (t && (this.containerElement.dataset.initialValues = JSON.stringify(t)), this.picker = new ui(this.containerElement, o), this._customStylesCallback) {
2761
+ const s = this._customStylesCallback();
2762
+ if (s) {
2763
+ const n = document.createElement("style");
2764
+ n.className = "ml-custom-styles", n.textContent = s, this.shadow.appendChild(n);
2765
+ }
2766
+ }
2614
2767
  }
2615
2768
  reinitialize() {
2616
2769
  this.picker && (this.picker.destroy(), this.initializePicker());
@@ -2681,11 +2834,31 @@ class rt extends hi {
2681
2834
  get getDisplayValueCallback() {
2682
2835
  return this._getDisplayValueCallback;
2683
2836
  }
2684
- set getPillDisplayCallback(t) {
2685
- this._getPillDisplayCallback = t, this.reinitialize();
2837
+ set getBadgeDisplayCallback(t) {
2838
+ this._getBadgeDisplayCallback = t, this.reinitialize();
2839
+ }
2840
+ get getBadgeDisplayCallback() {
2841
+ return this._getBadgeDisplayCallback;
2842
+ }
2843
+ set getBadgeClassCallback(t) {
2844
+ this._getBadgeClassCallback = t, this.reinitialize();
2845
+ }
2846
+ get getBadgeClassCallback() {
2847
+ return this._getBadgeClassCallback;
2686
2848
  }
2687
- get getPillDisplayCallback() {
2688
- return this._getPillDisplayCallback;
2849
+ set customStylesCallback(t) {
2850
+ if (this._customStylesCallback = t, this.picker && t) {
2851
+ const o = t();
2852
+ if (o) {
2853
+ const s = this.shadow.querySelector("style.ml-custom-styles");
2854
+ s && s.remove();
2855
+ const n = document.createElement("style");
2856
+ n.className = "ml-custom-styles", n.textContent = o, this.shadow.appendChild(n), this.picker.renderBadges();
2857
+ }
2858
+ }
2859
+ }
2860
+ get customStylesCallback() {
2861
+ return this._customStylesCallback;
2689
2862
  }
2690
2863
  set getSearchValueCallback(t) {
2691
2864
  this._getSearchValueCallback = t, this.reinitialize();
@@ -2717,6 +2890,37 @@ class rt extends hi {
2717
2890
  get getDisabledCallback() {
2718
2891
  return this._getDisabledCallback;
2719
2892
  }
2893
+ // Custom rendering callbacks
2894
+ set renderOptionContentCallback(t) {
2895
+ this._renderOptionContentCallback = t, this.reinitialize();
2896
+ }
2897
+ get renderOptionContentCallback() {
2898
+ return this._renderOptionContentCallback;
2899
+ }
2900
+ set renderBadgeContentCallback(t) {
2901
+ this._renderBadgeContentCallback = t, this.reinitialize();
2902
+ }
2903
+ get renderBadgeContentCallback() {
2904
+ return this._renderBadgeContentCallback;
2905
+ }
2906
+ set renderSelectedItemContentCallback(t) {
2907
+ this._renderSelectedItemContentCallback = t, this.reinitialize();
2908
+ }
2909
+ get renderSelectedItemContentCallback() {
2910
+ return this._renderSelectedItemContentCallback;
2911
+ }
2912
+ set getSelectedItemClassCallback(t) {
2913
+ this._getSelectedItemClassCallback = t, this.reinitialize();
2914
+ }
2915
+ get getSelectedItemClassCallback() {
2916
+ return this._getSelectedItemClassCallback;
2917
+ }
2918
+ set renderSelectedContentCallback(t) {
2919
+ this._renderSelectedContentCallback = t, this.reinitialize();
2920
+ }
2921
+ get renderSelectedContentCallback() {
2922
+ return this._renderSelectedContentCallback;
2923
+ }
2720
2924
  // Form integration
2721
2925
  set name(t) {
2722
2926
  t ? this.setAttribute("name", t) : this.removeAttribute("name");
@@ -2736,44 +2940,51 @@ class rt extends hi {
2736
2940
  get getValueFormatCallback() {
2737
2941
  return this._getValueFormatCallback;
2738
2942
  }
2739
- // Pills display options
2943
+ // Badges display options
2740
2944
  set thresholdMode(t) {
2741
2945
  t ? this.setAttribute("threshold-mode", t) : this.removeAttribute("threshold-mode");
2742
2946
  }
2743
2947
  get thresholdMode() {
2744
2948
  return this.getAttribute("threshold-mode");
2745
2949
  }
2746
- set pillsMaxVisible(t) {
2747
- t !== null ? this.setAttribute("pills-max-visible", String(t)) : this.removeAttribute("pills-max-visible");
2950
+ set badgesMaxVisible(t) {
2951
+ t !== null ? this.setAttribute("badges-max-visible", String(t)) : this.removeAttribute("badges-max-visible");
2748
2952
  }
2749
- get pillsMaxVisible() {
2750
- const t = this.getAttribute("pills-max-visible");
2953
+ get badgesMaxVisible() {
2954
+ const t = this.getAttribute("badges-max-visible");
2751
2955
  return t ? parseInt(t) : null;
2752
2956
  }
2957
+ // Checkbox options
2958
+ set checkboxAlign(t) {
2959
+ t ? this.setAttribute("checkbox-align", t) : this.removeAttribute("checkbox-align");
2960
+ }
2961
+ get checkboxAlign() {
2962
+ return this.getAttribute("checkbox-align");
2963
+ }
2753
2964
  // Tooltip options
2754
- set enablePillTooltips(t) {
2755
- t ? this.setAttribute("enable-pill-tooltips", "true") : this.removeAttribute("enable-pill-tooltips");
2965
+ set enableBadgeTooltips(t) {
2966
+ t ? this.setAttribute("enable-badge-tooltips", "true") : this.removeAttribute("enable-badge-tooltips");
2756
2967
  }
2757
- get enablePillTooltips() {
2758
- return this.getAttribute("enable-pill-tooltips") === "true";
2968
+ get enableBadgeTooltips() {
2969
+ return this.getAttribute("enable-badge-tooltips") === "true";
2759
2970
  }
2760
- set pillTooltipPlacement(t) {
2761
- t ? this.setAttribute("pill-tooltip-placement", t) : this.removeAttribute("pill-tooltip-placement");
2971
+ set badgeTooltipPlacement(t) {
2972
+ t ? this.setAttribute("badge-tooltip-placement", t) : this.removeAttribute("badge-tooltip-placement");
2762
2973
  }
2763
- get pillTooltipPlacement() {
2764
- return this.getAttribute("pill-tooltip-placement");
2974
+ get badgeTooltipPlacement() {
2975
+ return this.getAttribute("badge-tooltip-placement");
2765
2976
  }
2766
- set getPillTooltipCallback(t) {
2767
- this._getPillTooltipCallback = t, this.reinitialize();
2977
+ set getBadgeTooltipCallback(t) {
2978
+ this._getBadgeTooltipCallback = t, this.reinitialize();
2768
2979
  }
2769
- get getPillTooltipCallback() {
2770
- return this._getPillTooltipCallback;
2980
+ get getBadgeTooltipCallback() {
2981
+ return this._getBadgeTooltipCallback;
2771
2982
  }
2772
- set getCountPillCallback(t) {
2773
- this._getCountPillCallback = t, this.reinitialize();
2983
+ set getCounterCallback(t) {
2984
+ this._getCounterCallback = t, this.reinitialize();
2774
2985
  }
2775
- get getCountPillCallback() {
2776
- return this._getCountPillCallback;
2986
+ get getCounterCallback() {
2987
+ return this._getCounterCallback;
2777
2988
  }
2778
2989
  // Event callbacks
2779
2990
  get beforeSearchCallback() {
@@ -2812,6 +3023,13 @@ class rt extends hi {
2812
3023
  set changeCallback(t) {
2813
3024
  this._changeCallback = t;
2814
3025
  }
3026
+ // Action buttons
3027
+ get actionButtons() {
3028
+ return this._actionButtons;
3029
+ }
3030
+ set actionButtons(t) {
3031
+ this._actionButtons = t, this.reinitialize();
3032
+ }
2815
3033
  // New public properties
2816
3034
  get selectedValue() {
2817
3035
  var t;
@@ -2837,31 +3055,39 @@ class rt extends hi {
2837
3055
  this.picker && this.picker.destroy();
2838
3056
  }
2839
3057
  }
2840
- typeof window < "u" && typeof customElements < "u" && (customElements.get("web-multiselect") || customElements.define("web-multiselect", rt));
2841
- typeof window < "u" && (window.keenmate = window.keenmate || {}, window.keenmate.multiselect = {
2842
- version: () => "1.0.0-rc10",
3058
+ typeof window < "u" && typeof customElements < "u" && (customElements.get("web-multiselect") || customElements.define("web-multiselect", lt));
3059
+ typeof window < "u" && (window.components = window.components || {}, window.components["web-multiselect"] = {
3060
+ version: () => "1.0.0",
2843
3061
  config: {
2844
3062
  name: "@keenmate/web-multiselect",
2845
- version: "1.0.0-rc10",
3063
+ version: "1.0.0",
2846
3064
  author: "Keenmate",
2847
3065
  license: "MIT",
2848
3066
  repository: "git+https://github.com/keenmate/web-multiselect.git",
2849
3067
  homepage: "https://github.com/keenmate/web-multiselect#readme"
2850
3068
  },
3069
+ logging: {
3070
+ enableLogging: di,
3071
+ disableLogging: hi,
3072
+ setLogLevel: pi,
3073
+ setCategoryLevel: mi,
3074
+ getCategories: () => [...ci]
3075
+ },
2851
3076
  register: () => {
2852
- typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect", rt);
3077
+ typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect", lt);
2853
3078
  },
2854
3079
  getInstances: () => nt()
2855
3080
  });
2856
3081
  export {
2857
- rt as MultiSelectElement,
2858
- di as PureMultiSelect,
2859
- C as dataLogger,
2860
- fi as disableLogging,
2861
- gi as enableCategory,
2862
- ui as enableLogging,
2863
- H as initLogger,
2864
- k as interactionLogger,
2865
- st as setLogLevel,
2866
- v as uiLogger
3082
+ ci as LOGGING_CATEGORIES,
3083
+ lt as MultiSelectElement,
3084
+ ui as WebMultiSelect,
3085
+ S as dataLogger,
3086
+ hi as disableLogging,
3087
+ di as enableLogging,
3088
+ ae as initLogger,
3089
+ I as interactionLogger,
3090
+ mi as setCategoryLevel,
3091
+ pi as setLogLevel,
3092
+ f as uiLogger
2867
3093
  };