@floegence/floe-webapp-core 0.90.0 → 0.90.1

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,31 +1,31 @@
1
- import { setAttribute as u, insert as s, createComponent as l, Portal as G, use as F, spread as J, mergeProps as Q, effect as H, className as p, template as C, memo as V, delegateEvents as re } from "solid-js/web";
2
- import { createControllableValue as oe } from "./controllable.js";
3
- import { useFloeLocale as ae } from "../../context/LocaleContext.js";
4
- import { createSignal as K, createMemo as ie, createEffect as X, onCleanup as le, Show as y, Index as Y } from "solid-js";
1
+ import { setAttribute as d, insert as c, createComponent as u, Portal as Q, use as F, spread as X, mergeProps as Y, effect as z, className as _, template as L, memo as G, delegateEvents as ie } from "solid-js/web";
2
+ import { createControllableValue as ae } from "./controllable.js";
3
+ import { useFloeLocale as le } from "../../context/LocaleContext.js";
4
+ import { createSignal as q, createMemo as ue, createEffect as Z, onCleanup as de, Show as b, Index as ee } from "solid-js";
5
5
  import { cn as A } from "../../utils/cn.js";
6
- import { deferNonBlocking as ue } from "../../utils/defer.js";
7
- import { Check as de, ChevronRight as ce } from "../icons/index.js";
8
- import { focusMenuItem as T, MENU_ITEM_SELECTOR as se, moveMenuFocus as W, calculateMenuPosition as fe, calculateSubmenuPosition as me } from "./menuUtils.js";
9
- import { LOCAL_INTERACTION_SURFACE_ATTR as Z } from "./localInteractionSurface.js";
10
- import { createFloatingPresence as ee } from "./floatingPresence.js";
11
- import { useOverlayMask as ge } from "../../hooks/useOverlayMask.js";
12
- import { resolveSurfacePortalHost as ve, projectSurfacePortalPosition as he, resolveSurfacePortalBoundaryRect as be, isSurfacePortalMode as ye, resolveSurfacePortalMount as we } from "./dialogSurfaceScope.js";
13
- var N = /* @__PURE__ */ C("<div>"), xe = /* @__PURE__ */ C("<div><div role=button aria-haspopup=menu data-floe-dropdown-trigger>"), te = /* @__PURE__ */ C('<div class="my-1 h-px bg-border"role=separator>'), Se = /* @__PURE__ */ C('<button type=button data-floe-interactive=item role=menuitem><span class="w-3.5 h-3.5 flex items-center justify-center"></span><span class="flex-1 text-left">'), ke = /* @__PURE__ */ C("<div class=relative>"), Me = /* @__PURE__ */ C('<span class="w-3.5 h-3.5 flex items-center justify-center">');
14
- let Pe = 0, Ae = 0;
15
- function Ce(e, w) {
6
+ import { deferNonBlocking as se } from "../../utils/defer.js";
7
+ import { Check as ce, ChevronRight as fe } from "../icons/index.js";
8
+ import { focusMenuItem as T, calculateMenuPosition as me, MENU_ITEM_SELECTOR as ge, moveMenuFocus as J, calculateSubmenuPosition as ve } from "./menuUtils.js";
9
+ import { LOCAL_INTERACTION_SURFACE_ATTR as te } from "./localInteractionSurface.js";
10
+ import { createFloatingPresence as ne } from "./floatingPresence.js";
11
+ import { useOverlayMask as he } from "../../hooks/useOverlayMask.js";
12
+ import { resolveSurfacePortalHost as be, projectSurfacePortalPosition as ye, resolveSurfacePortalBoundaryRect as we, isSurfacePortalMode as Se, resolveSurfacePortalMount as xe } from "./dialogSurfaceScope.js";
13
+ var U = /* @__PURE__ */ L("<div>"), ke = /* @__PURE__ */ L("<div><div role=button aria-haspopup=menu data-floe-dropdown-trigger>"), re = /* @__PURE__ */ L('<div class="my-1 h-px bg-border"role=separator>'), Me = /* @__PURE__ */ L('<button type=button data-floe-interactive=item role=menuitem><span class="w-3.5 h-3.5 flex items-center justify-center"></span><span class="flex-1 text-left">'), Ce = /* @__PURE__ */ L("<div class=relative>"), Pe = /* @__PURE__ */ L('<span class="w-3.5 h-3.5 flex items-center justify-center">');
14
+ let Ae = 0, Le = 0;
15
+ function Re(e, y) {
16
16
  switch (e) {
17
17
  case "Enter":
18
18
  case " ":
19
- return w.open ? {
19
+ return y.open ? {
20
20
  nextOpen: !1
21
21
  } : {
22
22
  nextOpen: !0,
23
- focusMode: w.hasSelection ? "selected" : "first"
23
+ focusMode: y.hasSelection ? "selected" : "first"
24
24
  };
25
25
  case "ArrowDown":
26
26
  return {
27
27
  nextOpen: !0,
28
- focusMode: w.hasSelection ? "selected" : "first"
28
+ focusMode: y.hasSelection ? "selected" : "first"
29
29
  };
30
30
  case "ArrowUp":
31
31
  return {
@@ -36,40 +36,40 @@ function Ce(e, w) {
36
36
  return null;
37
37
  }
38
38
  }
39
- function _e(e) {
40
- const w = ae(), [f, i] = oe({
39
+ function Ke(e) {
40
+ const y = le(), [g, a] = ae({
41
41
  value: () => e.open,
42
42
  defaultValue: e.defaultOpen ?? !1,
43
- onChange: (r) => e.onOpenChange?.(r)
44
- }), k = ee({
45
- open: f,
46
- element: () => c
47
- }), [M, L] = K({
43
+ onChange: (n) => e.onOpenChange?.(n)
44
+ }), k = ne({
45
+ open: g,
46
+ element: () => f
47
+ }), [M, R] = q({
48
48
  x: -9999,
49
49
  y: -9999
50
- });
51
- let m, c;
52
- const h = `floe-dropdown-${Pe += 1}`, b = `${h}-menu`, x = () => typeof e.items == "function" ? e.items() : e.items, P = ie(() => k.mounted() ? ve({
53
- owner: m
50
+ }), [B, N] = q("bottom");
51
+ let v, f;
52
+ const h = `floe-dropdown-${Ae += 1}`, w = `${h}-menu`, S = () => typeof e.items == "function" ? e.items() : e.items, C = ue(() => k.mounted() ? be({
53
+ owner: v
54
54
  }) : {
55
55
  host: null,
56
56
  boundaryHost: null,
57
57
  mountHost: null,
58
58
  mode: "global"
59
- }), g = {
60
- mount: () => we(P()),
61
- isSurfaceMode: () => ye(P()),
62
- boundaryRect: () => be(P()),
63
- projectPosition: (r) => he(r, P())
64
- }, B = () => {
65
- i(!1), requestAnimationFrame(() => m?.focus());
59
+ }), m = {
60
+ mount: () => xe(C()),
61
+ isSurfaceMode: () => Se(C()),
62
+ boundaryRect: () => we(C()),
63
+ projectPosition: (n) => ye(n, C())
64
+ }, j = () => {
65
+ a(!1), requestAnimationFrame(() => v?.focus());
66
66
  };
67
- ge({
67
+ he({
68
68
  open: k.mounted,
69
- root: () => c,
70
- containsTarget: (r) => !!(r instanceof Element ? r : document.activeElement)?.closest(`[data-floe-dropdown="${h}"]`),
71
- onClose: B,
72
- onEscapeOutside: B,
69
+ root: () => f,
70
+ containsTarget: (n) => !!(n instanceof Element ? n : document.activeElement)?.closest(`[data-floe-dropdown="${h}"]`),
71
+ onClose: j,
72
+ onEscapeOutside: j,
73
73
  lockBodyScroll: !1,
74
74
  trapFocus: !1,
75
75
  autoFocus: !1,
@@ -78,153 +78,160 @@ function _e(e) {
78
78
  closeOnEscape: "inside",
79
79
  escapeKeyPhase: "bubble"
80
80
  });
81
- const R = () => {
82
- if (!m || !c) return;
83
- const r = m.getBoundingClientRect(), t = c.getBoundingClientRect(), a = fe(r, t, w.direction === "rtl" ? e.align === "end" ? "start" : e.align === "center" ? "center" : "end" : e.align ?? "start", g.boundaryRect());
84
- L(a);
81
+ const P = () => {
82
+ if (!v || !f) return;
83
+ const n = v.getBoundingClientRect(), t = f.getBoundingClientRect(), o = me(n, t, y.direction === "rtl" ? e.align === "end" ? "start" : e.align === "center" ? "center" : "end" : e.align ?? "start", m.boundaryRect());
84
+ N(o.y < n.top ? "top" : "bottom"), R(o);
85
85
  };
86
- X(() => {
86
+ Z(() => {
87
87
  if (!k.mounted()) {
88
- L({
88
+ R({
89
89
  x: -9999,
90
90
  y: -9999
91
91
  });
92
92
  return;
93
93
  }
94
- if (!f()) return;
95
- const r = (t) => {
96
- const a = t.target;
97
- a && typeof a.closest == "function" && a.closest(`[data-floe-dropdown="${h}"]`) || i(!1);
94
+ if (!g()) return;
95
+ const n = (t) => {
96
+ const o = t.target;
97
+ o && typeof o.closest == "function" && o.closest(`[data-floe-dropdown="${h}"]`) || a(!1);
98
98
  };
99
- document.addEventListener("pointerdown", r, !0), requestAnimationFrame(() => {
100
- R(), T(c, e.value ? "selected" : "first");
101
- }), le(() => {
102
- document.removeEventListener("pointerdown", r, !0);
99
+ document.addEventListener("pointerdown", n, !0), requestAnimationFrame(() => {
100
+ P(), T(f, e.value ? "selected" : "first");
101
+ }), de(() => {
102
+ document.removeEventListener("pointerdown", n, !0);
103
103
  });
104
104
  });
105
- const q = (r) => {
105
+ const p = (n) => {
106
106
  const t = e.onSelect;
107
- r.keepOpen || (i(!1), m?.focus({
107
+ n.keepOpen || (a(!1), v?.focus({
108
108
  preventScroll: !0
109
- })), ue(() => t(r.id));
110
- }, j = (r, t = "first") => {
111
- e.disabled || (i(r), requestAnimationFrame(() => {
112
- R(), T(c, t);
109
+ })), se(() => t(n.id));
110
+ }, H = (n, t = "first") => {
111
+ e.disabled || (a(n), requestAnimationFrame(() => {
112
+ P(), T(f, t);
113
113
  }));
114
- }, _ = (r) => {
114
+ }, K = (n) => {
115
115
  if (e.disabled) return;
116
- const t = Ce(r.key, {
117
- open: f(),
116
+ const t = Re(n.key, {
117
+ open: g(),
118
118
  hasSelection: !!e.value
119
119
  });
120
120
  if (t) {
121
- if (r.preventDefault(), !t.nextOpen) {
122
- i(!1);
121
+ if (n.preventDefault(), !t.nextOpen) {
122
+ a(!1);
123
123
  return;
124
124
  }
125
- j(!0, t.focusMode ?? "first");
125
+ H(!0, t.focusMode ?? "first");
126
126
  }
127
- }, d = (r) => {
128
- const t = r.target, a = t?.closest('[role="menu"]'), n = t?.closest(se);
129
- switch (r.key) {
127
+ }, l = (n) => {
128
+ const t = n.target, o = t?.closest('[role="menu"]'), r = t?.closest(ge);
129
+ switch (n.key) {
130
130
  case "ArrowDown":
131
- r.preventDefault(), W(a, n, 1);
131
+ n.preventDefault(), J(o, r, 1);
132
132
  return;
133
133
  case "ArrowUp":
134
- r.preventDefault(), W(a, n, -1);
134
+ n.preventDefault(), J(o, r, -1);
135
135
  return;
136
136
  case "Home":
137
- r.preventDefault(), T(a, "first");
137
+ n.preventDefault(), T(o, "first");
138
138
  return;
139
139
  case "End":
140
- r.preventDefault(), T(a, "last");
140
+ n.preventDefault(), T(o, "last");
141
141
  return;
142
142
  case "Tab":
143
- r.preventDefault(), i(!1), m?.focus();
143
+ n.preventDefault(), a(!1), v?.focus();
144
144
  return;
145
145
  default:
146
146
  return;
147
147
  }
148
148
  };
149
149
  return (() => {
150
- var r = xe(), t = r.firstChild;
151
- u(r, "data-floe-dropdown", h), t.$$keydown = _, t.$$click = () => {
150
+ var n = ke(), t = n.firstChild;
151
+ d(n, "data-floe-dropdown", h), t.$$keydown = K, t.$$click = () => {
152
152
  if (!e.disabled) {
153
- if (f()) {
154
- i(!1);
153
+ if (g()) {
154
+ a(!1);
155
155
  return;
156
156
  }
157
- j(!0, e.value ? "selected" : "first");
157
+ H(!0, e.value ? "selected" : "first");
158
158
  }
159
159
  };
160
- var a = m;
161
- return typeof a == "function" ? F(a, t) : m = t, u(t, "aria-controls", b), s(t, () => e.trigger), s(r, l(y, {
160
+ var o = v;
161
+ return typeof o == "function" ? F(o, t) : v = t, d(t, "aria-controls", w), c(t, () => e.trigger), c(n, u(b, {
162
162
  get when() {
163
163
  return k.mounted();
164
164
  },
165
165
  get children() {
166
- return l(G, {
166
+ return u(Q, {
167
167
  get mount() {
168
- return g.mount();
168
+ return m.mount();
169
169
  },
170
170
  get children() {
171
- var n = N(), v = c;
172
- return typeof v == "function" ? F(v, n) : c = n, u(n, "data-floe-dropdown", h), J(n, Q({
171
+ var r = U();
172
+ return F((s) => {
173
+ f = s, queueMicrotask(() => {
174
+ s.isConnected && P();
175
+ });
176
+ }, r), d(r, "data-floe-dropdown", h), X(r, Y({
173
177
  get class() {
174
- return A(g.isSurfaceMode() ? "absolute z-20 min-w-36" : "fixed z-50 min-w-36", "bg-popover text-popover-foreground p-1", "rounded-panel border border-[var(--floe-line)]", "shadow-[var(--floe-elevation-float)]", "floe-floating-presence floe-floating-menu");
178
+ return A(m.isSurfaceMode() ? "absolute z-20 min-w-36" : "fixed z-50 min-w-36", "bg-popover text-popover-foreground p-1", "rounded-panel border border-[var(--floe-line)]", "shadow-[var(--floe-elevation-float)]", "floe-floating-presence floe-floating-menu");
175
179
  },
176
180
  get "data-floating-presence"() {
177
181
  return k.state();
178
182
  },
183
+ get "data-floating-side"() {
184
+ return B();
185
+ },
179
186
  get "aria-hidden"() {
180
187
  return k.exiting() ? "true" : void 0;
181
188
  }
182
189
  }, () => ({
183
- [Z]: g.isSurfaceMode() ? "true" : void 0
190
+ [te]: m.isSurfaceMode() ? "true" : void 0
184
191
  }), {
185
192
  get style() {
186
193
  return {
187
- left: `${g.projectPosition(M()).x}px`,
188
- top: `${g.projectPosition(M()).y}px`
194
+ left: `${m.projectPosition(M()).x}px`,
195
+ top: `${m.projectPosition(M()).y}px`
189
196
  };
190
197
  },
191
198
  role: "menu",
192
199
  "data-floe-surface": "floating",
193
- id: b,
194
- onKeyDown: d
195
- }), !1, !0), s(n, l(Y, {
200
+ id: w,
201
+ onKeyDown: l
202
+ }), !1, !0), c(r, u(ee, {
196
203
  get each() {
197
- return x();
204
+ return S();
198
205
  },
199
- children: (o) => l(y, {
206
+ children: (s) => u(b, {
200
207
  get when() {
201
- return !o().separator;
208
+ return !s().separator;
202
209
  },
203
210
  get fallback() {
204
- return te();
211
+ return re();
205
212
  },
206
213
  get children() {
207
- return l(ne, {
214
+ return u(oe, {
208
215
  get item() {
209
- return o();
216
+ return s();
210
217
  },
211
218
  get selected() {
212
- return e.value === o().id;
219
+ return e.value === s().id;
213
220
  },
214
- onSelect: q,
215
- onCloseMenu: () => i(!1),
221
+ onSelect: p,
222
+ onCloseMenu: () => a(!1),
216
223
  dropdownId: h,
217
- portalLayout: g
224
+ portalLayout: m
218
225
  });
219
226
  }
220
227
  })
221
- })), n;
228
+ })), r;
222
229
  }
223
230
  });
224
231
  }
225
- }), null), H((n) => {
226
- var v = A("relative inline-block", e.class), o = A("cursor-pointer", e.triggerClass, e.disabled && "pointer-events-none opacity-50"), S = e.disabled ? -1 : 0, E = f(), $ = e.triggerAriaLabel, O = e.triggerAriaLabelledBy, D = e.triggerAriaDescribedBy, I = e.disabled ? "true" : void 0, z = e.triggerInputSurface ? "true" : void 0, U = e.triggerInputSurface ? "inset" : void 0;
227
- return v !== n.e && p(r, n.e = v), o !== n.t && p(t, n.t = o), S !== n.a && u(t, "tabindex", n.a = S), E !== n.o && u(t, "aria-expanded", n.o = E), $ !== n.i && u(t, "aria-label", n.i = $), O !== n.n && u(t, "aria-labelledby", n.n = O), D !== n.s && u(t, "aria-describedby", n.s = D), I !== n.h && u(t, "aria-disabled", n.h = I), z !== n.r && u(t, "data-floe-input-surface", n.r = z), U !== n.d && u(t, "data-floe-surface", n.d = U), n;
232
+ }), null), z((r) => {
233
+ var s = A("relative inline-block", e.class), i = A("cursor-pointer", e.triggerClass, e.disabled && "pointer-events-none opacity-50"), x = e.disabled ? -1 : 0, E = g(), O = e.triggerAriaLabel, $ = e.triggerAriaLabelledBy, D = e.triggerAriaDescribedBy, I = e.disabled ? "true" : void 0, V = e.triggerInputSurface ? "true" : void 0, W = e.triggerInputSurface ? "inset" : void 0;
234
+ return s !== r.e && _(n, r.e = s), i !== r.t && _(t, r.t = i), x !== r.a && d(t, "tabindex", r.a = x), E !== r.o && d(t, "aria-expanded", r.o = E), O !== r.i && d(t, "aria-label", r.i = O), $ !== r.n && d(t, "aria-labelledby", r.n = $), D !== r.s && d(t, "aria-describedby", r.s = D), I !== r.h && d(t, "aria-disabled", r.h = I), V !== r.r && d(t, "data-floe-input-surface", r.r = V), W !== r.d && d(t, "data-floe-surface", r.d = W), r;
228
235
  }, {
229
236
  e: void 0,
230
237
  t: void 0,
@@ -236,110 +243,110 @@ function _e(e) {
236
243
  h: void 0,
237
244
  r: void 0,
238
245
  d: void 0
239
- }), r;
246
+ }), n;
240
247
  })();
241
248
  }
242
- function ne(e) {
243
- const [w, f] = K(!1), i = () => e.item.children && e.item.children.length > 0, M = ee({
244
- open: () => !!(w() && i()),
245
- element: () => b
246
- }), [L, m] = K({
249
+ function oe(e) {
250
+ const [y, g] = q(!1), a = () => e.item.children && e.item.children.length > 0, M = ne({
251
+ open: () => !!(y() && a()),
252
+ element: () => w
253
+ }), [R, B] = q({
247
254
  x: -9999,
248
255
  y: -9999
249
- });
250
- let c, h, b, x;
251
- const P = `floe-dropdown-item-${Ae += 1}`;
252
- X(() => {
253
- M.mounted() || m({
256
+ }), [N, v] = q("right");
257
+ let f, h, w, S;
258
+ const C = `floe-dropdown-item-${Le += 1}`;
259
+ Z(() => {
260
+ M.mounted() || B({
254
261
  x: -9999,
255
262
  y: -9999
256
263
  });
257
264
  });
258
- const g = () => {
259
- if (!c || !b) return;
260
- const d = c.getBoundingClientRect(), r = b.getBoundingClientRect(), t = me(d, r, e.portalLayout.boundaryRect());
261
- m(t);
262
- }, B = () => {
263
- i() && (clearTimeout(x), x = setTimeout(() => {
264
- f(!0), requestAnimationFrame(g);
265
+ const m = () => {
266
+ if (!f || !w) return;
267
+ const l = f.getBoundingClientRect(), n = w.getBoundingClientRect(), t = ve(l, n, e.portalLayout.boundaryRect());
268
+ v(t.x < l.left ? "left" : "right"), B(t);
269
+ }, j = () => {
270
+ a() && (clearTimeout(S), S = setTimeout(() => {
271
+ g(!0), requestAnimationFrame(m);
265
272
  }, 100));
266
- }, R = () => {
267
- i() && (clearTimeout(x), x = void 0, !e.item.keepOpen && (x = setTimeout(() => {
268
- f(!1);
273
+ }, P = () => {
274
+ a() && (clearTimeout(S), S = void 0, !e.item.keepOpen && (S = setTimeout(() => {
275
+ g(!1);
269
276
  }, 150)));
270
- }, q = (d) => {
277
+ }, p = (l) => {
271
278
  if (!e.item.disabled) {
272
279
  if (e.item.content && e.item.keepOpen) {
273
- d.stopPropagation();
280
+ l.stopPropagation();
274
281
  return;
275
282
  }
276
- i() ? (f((r) => !r), requestAnimationFrame(g)) : e.item.content || e.onSelect(e.item);
283
+ a() ? (g((n) => !n), requestAnimationFrame(m)) : e.item.content || e.onSelect(e.item);
277
284
  }
278
- }, j = (d = "first") => {
279
- i() && (f(!0), requestAnimationFrame(() => {
280
- g(), T(b, d);
285
+ }, H = (l = "first") => {
286
+ a() && (g(!0), requestAnimationFrame(() => {
287
+ m(), T(w, l);
281
288
  }));
282
- }, _ = () => {
283
- f(!1), requestAnimationFrame(() => h?.focus());
289
+ }, K = () => {
290
+ g(!1), requestAnimationFrame(() => h?.focus());
284
291
  };
285
292
  return (() => {
286
- var d = ke();
287
- d.addEventListener("mouseleave", R), d.addEventListener("mouseenter", B);
288
- var r = c;
289
- return typeof r == "function" ? F(r, d) : c = d, s(d, l(y, {
293
+ var l = Ce();
294
+ l.addEventListener("mouseleave", P), l.addEventListener("mouseenter", j);
295
+ var n = f;
296
+ return typeof n == "function" ? F(n, l) : f = l, c(l, u(b, {
290
297
  get when() {
291
298
  return e.item.content;
292
299
  },
293
300
  get children() {
294
- var t = N();
295
- return t.$$click = q, s(t, e.item.content), H((a) => {
296
- var n = A("w-full px-2 py-1.5", e.item.tone === "danger" && "text-error", e.item.disabled && "opacity-50 pointer-events-none"), v = e.item.tone ?? "default";
297
- return n !== a.e && p(t, a.e = n), v !== a.t && u(t, "data-tone", a.t = v), a;
301
+ var t = U();
302
+ return t.$$click = p, c(t, e.item.content), z((o) => {
303
+ var r = A("w-full px-2 py-1.5", e.item.tone === "danger" && "text-error", e.item.disabled && "opacity-50 pointer-events-none"), s = e.item.tone ?? "default";
304
+ return r !== o.e && _(t, o.e = r), s !== o.t && d(t, "data-tone", o.t = s), o;
298
305
  }, {
299
306
  e: void 0,
300
307
  t: void 0
301
308
  }), t;
302
309
  }
303
- }), null), s(d, l(y, {
310
+ }), null), c(l, u(b, {
304
311
  get when() {
305
312
  return !e.item.content;
306
313
  },
307
314
  get children() {
308
- var t = Se(), a = t.firstChild, n = a.nextSibling;
309
- t.$$keydown = (o) => {
310
- e.item.disabled || i() && ((o.key === "ArrowRight" || o.key === "Enter" || o.key === " ") && (o.preventDefault(), j("first")), o.key === "ArrowLeft" && (o.preventDefault(), _()));
311
- }, t.$$click = q;
312
- var v = h;
313
- return typeof v == "function" ? F(v, t) : h = t, u(t, "id", P), s(a, l(y, {
315
+ var t = Me(), o = t.firstChild, r = o.nextSibling;
316
+ t.$$keydown = (i) => {
317
+ e.item.disabled || a() && ((i.key === "ArrowRight" || i.key === "Enter" || i.key === " ") && (i.preventDefault(), H("first")), i.key === "ArrowLeft" && (i.preventDefault(), K()));
318
+ }, t.$$click = p;
319
+ var s = h;
320
+ return typeof s == "function" ? F(s, t) : h = t, d(t, "id", C), c(o, u(b, {
314
321
  get when() {
315
- return V(() => !!e.selected)() && !i();
322
+ return G(() => !!e.selected)() && !a();
316
323
  },
317
324
  get children() {
318
- return l(de, {
325
+ return u(ce, {
319
326
  class: "w-3 h-3"
320
327
  });
321
328
  }
322
- })), s(t, l(y, {
329
+ })), c(t, u(b, {
323
330
  get when() {
324
331
  return e.item.icon;
325
332
  },
326
333
  keyed: !0,
327
- children: (o) => (() => {
328
- var S = Me();
329
- return s(S, o), S;
334
+ children: (i) => (() => {
335
+ var x = Pe();
336
+ return c(x, i), x;
330
337
  })()
331
- }), n), s(n, () => e.item.label), s(t, l(y, {
338
+ }), r), c(r, () => e.item.label), c(t, u(b, {
332
339
  get when() {
333
- return i();
340
+ return a();
334
341
  },
335
342
  get children() {
336
- return l(ce, {
343
+ return u(fe, {
337
344
  class: "w-3 h-3 text-[var(--floe-ink-quiet)]"
338
345
  });
339
346
  }
340
- }), null), H((o) => {
341
- var S = A("w-full flex items-center gap-2 px-2", "min-h-[var(--floe-row-height)] rounded-sm", "text-[length:var(--floe-type-control)] leading-[var(--floe-line-control)]", "focus:outline-none", e.item.tone === "danger" ? "text-error" : "text-[var(--floe-ink-soft)]", e.item.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"), E = e.item.disabled, $ = i() ? "menu" : void 0, O = i() ? w() : void 0, D = e.selected && !i() ? "true" : void 0, I = e.item.tone ?? "default";
342
- return S !== o.e && p(t, o.e = S), E !== o.t && (t.disabled = o.t = E), $ !== o.a && u(t, "aria-haspopup", o.a = $), O !== o.o && u(t, "aria-expanded", o.o = O), D !== o.i && u(t, "data-floe-selected", o.i = D), I !== o.n && u(t, "data-tone", o.n = I), o;
347
+ }), null), z((i) => {
348
+ var x = A("w-full flex items-center gap-2 px-2", "min-h-[var(--floe-row-height)] rounded-sm", "text-[length:var(--floe-type-control)] leading-[var(--floe-line-control)]", "focus:outline-none", e.item.tone === "danger" ? "text-error" : "text-[var(--floe-ink-soft)]", e.item.disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"), E = e.item.disabled, O = a() ? "menu" : void 0, $ = a() ? y() : void 0, D = e.selected && !a() ? "true" : void 0, I = e.item.tone ?? "default";
349
+ return x !== i.e && _(t, i.e = x), E !== i.t && (t.disabled = i.t = E), O !== i.a && d(t, "aria-haspopup", i.a = O), $ !== i.o && d(t, "aria-expanded", i.o = $), D !== i.i && d(t, "data-floe-selected", i.i = D), I !== i.n && d(t, "data-tone", i.n = I), i;
343
350
  }, {
344
351
  e: void 0,
345
352
  t: void 0,
@@ -349,18 +356,22 @@ function ne(e) {
349
356
  n: void 0
350
357
  }), t;
351
358
  }
352
- }), null), s(d, l(y, {
359
+ }), null), c(l, u(b, {
353
360
  get when() {
354
- return V(() => !!M.mounted())() && i();
361
+ return G(() => !!M.mounted())() && a();
355
362
  },
356
363
  get children() {
357
- return l(G, {
364
+ return u(Q, {
358
365
  get mount() {
359
366
  return e.portalLayout.mount();
360
367
  },
361
368
  get children() {
362
- var t = N(), a = b;
363
- return typeof a == "function" ? F(a, t) : b = t, J(t, Q({
369
+ var t = U();
370
+ return F((o) => {
371
+ w = o, queueMicrotask(() => {
372
+ o.isConnected && m();
373
+ });
374
+ }, t), X(t, Y({
364
375
  get class() {
365
376
  return A(e.portalLayout.isSurfaceMode() ? "absolute z-20 min-w-36" : "fixed z-50 min-w-36", "bg-popover text-popover-foreground p-1", "rounded-panel border border-[var(--floe-line)]", "shadow-[var(--floe-elevation-float)]", "floe-floating-presence floe-floating-menu floe-floating-submenu");
366
377
  },
@@ -370,43 +381,46 @@ function ne(e) {
370
381
  get "data-floating-presence"() {
371
382
  return M.state();
372
383
  },
384
+ get "data-floating-side"() {
385
+ return N();
386
+ },
373
387
  get "aria-hidden"() {
374
388
  return M.exiting() ? "true" : void 0;
375
389
  }
376
390
  }, () => ({
377
- [Z]: e.portalLayout.isSurfaceMode() ? "true" : void 0
391
+ [te]: e.portalLayout.isSurfaceMode() ? "true" : void 0
378
392
  }), {
379
393
  get style() {
380
394
  return {
381
- left: `${e.portalLayout.projectPosition(L()).x}px`,
382
- top: `${e.portalLayout.projectPosition(L()).y}px`
395
+ left: `${e.portalLayout.projectPosition(R()).x}px`,
396
+ top: `${e.portalLayout.projectPosition(R()).y}px`
383
397
  };
384
398
  },
385
399
  role: "menu",
386
400
  "data-floe-surface": "floating",
387
- "aria-labelledby": P,
401
+ "aria-labelledby": C,
388
402
  onMouseEnter: () => {
389
- clearTimeout(x);
403
+ clearTimeout(S);
390
404
  },
391
- onMouseLeave: R,
392
- onKeyDown: (n) => {
393
- n.key !== "ArrowLeft" && n.key !== "Escape" || (n.preventDefault(), n.stopPropagation(), _());
405
+ onMouseLeave: P,
406
+ onKeyDown: (o) => {
407
+ o.key !== "ArrowLeft" && o.key !== "Escape" || (o.preventDefault(), o.stopPropagation(), K());
394
408
  }
395
- }), !1, !0), s(t, l(Y, {
409
+ }), !1, !0), c(t, u(ee, {
396
410
  get each() {
397
411
  return e.item.children;
398
412
  },
399
- children: (n) => l(y, {
413
+ children: (o) => u(b, {
400
414
  get when() {
401
- return !n().separator;
415
+ return !o().separator;
402
416
  },
403
417
  get fallback() {
404
- return te();
418
+ return re();
405
419
  },
406
420
  get children() {
407
- return l(ne, {
421
+ return u(oe, {
408
422
  get item() {
409
- return n();
423
+ return o();
410
424
  },
411
425
  selected: !1,
412
426
  get onSelect() {
@@ -428,11 +442,11 @@ function ne(e) {
428
442
  }
429
443
  });
430
444
  }
431
- }), null), d;
445
+ }), null), l;
432
446
  })();
433
447
  }
434
- re(["click", "keydown"]);
448
+ ie(["click", "keydown"]);
435
449
  export {
436
- _e as Dropdown,
437
- Ce as resolveDropdownTriggerKeyAction
450
+ Ke as Dropdown,
451
+ Re as resolveDropdownTriggerKeyAction
438
452
  };