@drjoshcsimmons/scl 0.1.1 → 0.1.3

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.
Files changed (83) hide show
  1. package/README.md +202 -13
  2. package/dist/index100.js +50 -9
  3. package/dist/index101.js +9 -50
  4. package/dist/index102.js +627 -196
  5. package/dist/index103.js +180 -3
  6. package/dist/index104.js +15 -30
  7. package/dist/index11.js +2 -2
  8. package/dist/index110.js +1 -1
  9. package/dist/index12.js +1 -1
  10. package/dist/index13.js +2 -2
  11. package/dist/index14.js +2 -2
  12. package/dist/index15.js +2 -2
  13. package/dist/index17.js +3 -3
  14. package/dist/index18.js +2 -2
  15. package/dist/index20.js +2 -2
  16. package/dist/index21.js +1 -1
  17. package/dist/index22.js +1 -1
  18. package/dist/index23.js +2 -2
  19. package/dist/index24.js +1 -1
  20. package/dist/index25.js +4 -4
  21. package/dist/index26.js +1 -1
  22. package/dist/index27.js +3 -3
  23. package/dist/index29.js +1 -1
  24. package/dist/index31.js +1 -1
  25. package/dist/index33.js +1 -1
  26. package/dist/index36.js +2 -2
  27. package/dist/index37.js +1 -1
  28. package/dist/index4.js +2 -2
  29. package/dist/index45.js +124 -32
  30. package/dist/index46.js +32 -124
  31. package/dist/index47.js +100 -219
  32. package/dist/index48.js +73 -11
  33. package/dist/index49.js +244 -55
  34. package/dist/index5.js +1 -1
  35. package/dist/index50.js +9 -249
  36. package/dist/index51.js +237 -9
  37. package/dist/index52.js +11 -73
  38. package/dist/index53.js +16 -234
  39. package/dist/index54.js +860 -11
  40. package/dist/index55.js +9 -310
  41. package/dist/index56.js +225 -12
  42. package/dist/index57.js +11 -225
  43. package/dist/index59.js +58 -29
  44. package/dist/index6.js +1 -1
  45. package/dist/index60.js +248 -254
  46. package/dist/index61.js +530 -12
  47. package/dist/index62.js +224 -101
  48. package/dist/index63.js +260 -12
  49. package/dist/index64.js +12 -22
  50. package/dist/index65.js +12 -18
  51. package/dist/index66.js +407 -213
  52. package/dist/index67.js +143 -112
  53. package/dist/index68.js +317 -142
  54. package/dist/index69.js +76 -248
  55. package/dist/index7.js +1 -1
  56. package/dist/index70.js +299 -71
  57. package/dist/index71.js +12 -530
  58. package/dist/index72.js +20 -433
  59. package/dist/index73.js +216 -316
  60. package/dist/index74.js +105 -835
  61. package/dist/index75.js +31 -9
  62. package/dist/index8.js +1 -1
  63. package/dist/index80.js +50 -44
  64. package/dist/index81.js +4 -52
  65. package/dist/index83.js +68 -10
  66. package/dist/index84.js +10 -7
  67. package/dist/index85.js +54 -5
  68. package/dist/index86.js +10 -24
  69. package/dist/index87.js +29 -68
  70. package/dist/index88.js +10 -52
  71. package/dist/index89.js +5 -10
  72. package/dist/index9.js +2 -2
  73. package/dist/index90.js +25 -4
  74. package/dist/index91.js +46 -30
  75. package/dist/index92.js +7 -12
  76. package/dist/index93.js +3 -180
  77. package/dist/index94.js +122 -12
  78. package/dist/index95.js +11 -646
  79. package/dist/index96.js +125 -115
  80. package/dist/index97.js +212 -128
  81. package/dist/index98.js +1 -1
  82. package/dist/index99.js +30 -15
  83. package/package.json +3 -2
package/dist/index102.js CHANGED
@@ -1,221 +1,652 @@
1
- import * as p from "react";
2
- import { useFloating as xe, offset as Pe, shift as ye, flip as Ae, size as ve, arrow as Ce, hide as be, limitShift as Se } from "./index111.js";
3
- import { Root as Oe } from "./index112.js";
4
- import { useComposedRefs as j } from "./index77.js";
5
- import { createContextScope as Re } from "./index76.js";
6
- import { Primitive as z } from "./index82.js";
7
- import { useCallbackRef as Ee } from "./index89.js";
8
- import { useLayoutEffect as T } from "./index90.js";
9
- import { useSize as Ne } from "./index86.js";
10
- import { jsx as f } from "react/jsx-runtime";
11
- import { autoUpdate as _e } from "./index113.js";
12
- var N = "Popper", [L, Ue] = Re(N), [$e, Z] = L(N), U = (e) => {
13
- const { __scopePopper: s, children: a } = e, [t, i] = p.useState(null);
14
- return /* @__PURE__ */ f($e, { scope: s, anchor: t, onAnchorChange: i, children: a });
1
+ import * as r from "react";
2
+ import { composeEventHandlers as h } from "./index78.js";
3
+ import { createCollection as $e } from "./index91.js";
4
+ import { useComposedRefs as N, composeRefs as qe } from "./index77.js";
5
+ import { createContextScope as Je } from "./index76.js";
6
+ import { useDirection as Qe } from "./index92.js";
7
+ import { DismissableLayer as et } from "./index94.js";
8
+ import { useFocusGuards as tt } from "./index95.js";
9
+ import { FocusScope as nt } from "./index96.js";
10
+ import { useId as Me } from "./index84.js";
11
+ import { createPopperScope as ve, Root as Ce, Anchor as ot, Content as rt, Arrow as ct } from "./index97.js";
12
+ import { Portal as at } from "./index98.js";
13
+ import { Presence as W } from "./index83.js";
14
+ import { Primitive as F, dispatchDiscreteCustomEvent as st } from "./index82.js";
15
+ import { createRovingFocusGroupScope as ge, Item as ut, Root as it } from "./index103.js";
16
+ import { createSlot as lt } from "./index79.js";
17
+ import { useCallbackRef as ee } from "./index86.js";
18
+ import { hideOthers as dt } from "./index100.js";
19
+ import ft from "./index101.js";
20
+ import { jsx as u } from "react/jsx-runtime";
21
+ var Q = ["Enter", " "], mt = ["ArrowDown", "PageUp", "Home"], _e = ["ArrowUp", "PageDown", "End"], pt = [...mt, ..._e], Mt = {
22
+ ltr: [...Q, "ArrowRight"],
23
+ rtl: [...Q, "ArrowLeft"]
24
+ }, ht = {
25
+ ltr: ["ArrowLeft"],
26
+ rtl: ["ArrowRight"]
27
+ }, L = "Menu", [D, vt, Ct] = $e(L), [I, cn] = Je(L, [
28
+ Ct,
29
+ ve,
30
+ ge
31
+ ]), K = ve(), Re = ge(), [Se, E] = I(L), [gt, G] = I(L), Pe = (e) => {
32
+ const { __scopeMenu: n, open: t = !1, children: o, dir: s, onOpenChange: a, modal: l = !0 } = e, p = K(n), [M, m] = r.useState(null), f = r.useRef(!1), c = ee(a), d = Qe(s);
33
+ return r.useEffect(() => {
34
+ const C = () => {
35
+ f.current = !0, document.addEventListener("pointerdown", v, { capture: !0, once: !0 }), document.addEventListener("pointermove", v, { capture: !0, once: !0 });
36
+ }, v = () => f.current = !1;
37
+ return document.addEventListener("keydown", C, { capture: !0 }), () => {
38
+ document.removeEventListener("keydown", C, { capture: !0 }), document.removeEventListener("pointerdown", v, { capture: !0 }), document.removeEventListener("pointermove", v, { capture: !0 });
39
+ };
40
+ }, []), /* @__PURE__ */ u(Ce, { ...p, children: /* @__PURE__ */ u(
41
+ Se,
42
+ {
43
+ scope: n,
44
+ open: t,
45
+ onOpenChange: c,
46
+ content: M,
47
+ onContentChange: m,
48
+ children: /* @__PURE__ */ u(
49
+ gt,
50
+ {
51
+ scope: n,
52
+ onClose: r.useCallback(() => c(!1), [c]),
53
+ isUsingKeyboardRef: f,
54
+ dir: d,
55
+ modal: l,
56
+ children: o
57
+ }
58
+ )
59
+ }
60
+ ) });
15
61
  };
16
- U.displayName = N;
17
- var q = "PopperAnchor", G = p.forwardRef(
18
- (e, s) => {
19
- const { __scopePopper: a, virtualRef: t, ...i } = e, r = Z(q, a), o = p.useRef(null), w = j(s, o), n = p.useRef(null);
20
- return p.useEffect(() => {
21
- const c = n.current;
22
- n.current = (t == null ? void 0 : t.current) || o.current, c !== n.current && r.onAnchorChange(n.current);
23
- }), t ? null : /* @__PURE__ */ f(z.div, { ...i, ref: w });
62
+ Pe.displayName = L;
63
+ var _t = "MenuAnchor", te = r.forwardRef(
64
+ (e, n) => {
65
+ const { __scopeMenu: t, ...o } = e, s = K(t);
66
+ return /* @__PURE__ */ u(ot, { ...s, ...o, ref: n });
24
67
  }
25
68
  );
26
- G.displayName = q;
27
- var _ = "PopperContent", [He, We] = L(_), J = p.forwardRef(
28
- (e, s) => {
29
- var Y, M, X, D, F, k;
69
+ te.displayName = _t;
70
+ var ne = "MenuPortal", [Rt, Ee] = I(ne, {
71
+ forceMount: void 0
72
+ }), we = (e) => {
73
+ const { __scopeMenu: n, forceMount: t, children: o, container: s } = e, a = E(ne, n);
74
+ return /* @__PURE__ */ u(Rt, { scope: n, forceMount: t, children: /* @__PURE__ */ u(W, { present: t || a.open, children: /* @__PURE__ */ u(at, { asChild: !0, container: s, children: o }) }) });
75
+ };
76
+ we.displayName = ne;
77
+ var _ = "MenuContent", [St, oe] = I(_), Ie = r.forwardRef(
78
+ (e, n) => {
79
+ const t = Ee(_, e.__scopeMenu), { forceMount: o = t.forceMount, ...s } = e, a = E(_, e.__scopeMenu), l = G(_, e.__scopeMenu);
80
+ return /* @__PURE__ */ u(D.Provider, { scope: e.__scopeMenu, children: /* @__PURE__ */ u(W, { present: o || a.open, children: /* @__PURE__ */ u(D.Slot, { scope: e.__scopeMenu, children: l.modal ? /* @__PURE__ */ u(Pt, { ...s, ref: n }) : /* @__PURE__ */ u(Et, { ...s, ref: n }) }) }) });
81
+ }
82
+ ), Pt = r.forwardRef(
83
+ (e, n) => {
84
+ const t = E(_, e.__scopeMenu), o = r.useRef(null), s = N(n, o);
85
+ return r.useEffect(() => {
86
+ const a = o.current;
87
+ if (a) return dt(a);
88
+ }, []), /* @__PURE__ */ u(
89
+ re,
90
+ {
91
+ ...e,
92
+ ref: s,
93
+ trapFocus: t.open,
94
+ disableOutsidePointerEvents: t.open,
95
+ disableOutsideScroll: !0,
96
+ onFocusOutside: h(
97
+ e.onFocusOutside,
98
+ (a) => a.preventDefault(),
99
+ { checkForDefaultPrevented: !1 }
100
+ ),
101
+ onDismiss: () => t.onOpenChange(!1)
102
+ }
103
+ );
104
+ }
105
+ ), Et = r.forwardRef((e, n) => {
106
+ const t = E(_, e.__scopeMenu);
107
+ return /* @__PURE__ */ u(
108
+ re,
109
+ {
110
+ ...e,
111
+ ref: n,
112
+ trapFocus: !1,
113
+ disableOutsidePointerEvents: !1,
114
+ disableOutsideScroll: !1,
115
+ onDismiss: () => t.onOpenChange(!1)
116
+ }
117
+ );
118
+ }), wt = lt("MenuContent.ScrollLock"), re = r.forwardRef(
119
+ (e, n) => {
30
120
  const {
31
- __scopePopper: a,
32
- side: t = "bottom",
33
- sideOffset: i = 0,
34
- align: r = "center",
35
- alignOffset: o = 0,
36
- arrowPadding: w = 0,
37
- avoidCollisions: n = !0,
38
- collisionBoundary: c = [],
39
- collisionPadding: x = 0,
40
- sticky: m = "partial",
41
- hideWhenDetached: y = !1,
42
- updatePositionStrategy: A = "optimized",
43
- onPlaced: l,
44
- ...d
45
- } = e, v = Z(_, a), [h, C] = p.useState(null), ee = j(s, (P) => C(P)), [E, te] = p.useState(null), u = Ne(E), re = (u == null ? void 0 : u.width) ?? 0, $ = (u == null ? void 0 : u.height) ?? 0, oe = t + (r !== "center" ? "-" + r : ""), ne = typeof x == "number" ? x : { top: 0, right: 0, bottom: 0, left: 0, ...x }, H = Array.isArray(c) ? c : [c], ae = H.length > 0, b = {
46
- padding: ne,
47
- boundary: H.filter(Ye),
48
- // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries
49
- altBoundary: ae
50
- }, { refs: ie, floatingStyles: W, placement: se, isPositioned: S, middlewareData: g } = xe({
51
- // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues
52
- strategy: "fixed",
53
- placement: oe,
54
- whileElementsMounted: (...P) => _e(...P, {
55
- animationFrame: A === "always"
56
- }),
57
- elements: {
58
- reference: v.anchor
59
- },
60
- middleware: [
61
- Pe({ mainAxis: i + $, alignmentAxis: o }),
62
- n && ye({
63
- mainAxis: !0,
64
- crossAxis: !1,
65
- limiter: m === "partial" ? Se() : void 0,
66
- ...b
67
- }),
68
- n && Ae({ ...b }),
69
- ve({
70
- ...b,
71
- apply: ({ elements: P, rects: B, availableWidth: he, availableHeight: ue }) => {
72
- const { width: ge, height: we } = B.reference, R = P.floating.style;
73
- R.setProperty("--radix-popper-available-width", `${he}px`), R.setProperty("--radix-popper-available-height", `${ue}px`), R.setProperty("--radix-popper-anchor-width", `${ge}px`), R.setProperty("--radix-popper-anchor-height", `${we}px`);
74
- }
75
- }),
76
- E && Ce({ element: E, padding: w }),
77
- Me({ arrowWidth: re, arrowHeight: $ }),
78
- y && be({ strategy: "referenceHidden", ...b })
79
- ]
80
- }), [I, ce] = V(se), O = Ee(l);
81
- T(() => {
82
- S && (O == null || O());
83
- }, [S, O]);
84
- const pe = (Y = g.arrow) == null ? void 0 : Y.x, de = (M = g.arrow) == null ? void 0 : M.y, le = ((X = g.arrow) == null ? void 0 : X.centerOffset) !== 0, [fe, me] = p.useState();
85
- return T(() => {
86
- h && me(window.getComputedStyle(h).zIndex);
87
- }, [h]), /* @__PURE__ */ f(
88
- "div",
121
+ __scopeMenu: t,
122
+ loop: o = !1,
123
+ trapFocus: s,
124
+ onOpenAutoFocus: a,
125
+ onCloseAutoFocus: l,
126
+ disableOutsidePointerEvents: p,
127
+ onEntryFocus: M,
128
+ onEscapeKeyDown: m,
129
+ onPointerDownOutside: f,
130
+ onFocusOutside: c,
131
+ onInteractOutside: d,
132
+ onDismiss: C,
133
+ disableOutsideScroll: v,
134
+ ...w
135
+ } = e, y = E(_, t), T = G(_, t), U = K(t), B = Re(t), ie = vt(t), [Xe, le] = r.useState(null), V = r.useRef(null), je = N(n, V, y.onContentChange), Y = r.useRef(0), X = r.useRef(""), He = r.useRef(0), Z = r.useRef(null), de = r.useRef("right"), $ = r.useRef(0), We = v ? ft : r.Fragment, ze = v ? { as: wt, allowPinchZoom: !0 } : void 0, Ze = (i) => {
136
+ var b, me;
137
+ const g = X.current + i, R = ie().filter((S) => !S.disabled), P = document.activeElement, q = (b = R.find((S) => S.ref.current === P)) == null ? void 0 : b.textValue, J = R.map((S) => S.textValue), fe = Lt(J, g, q), A = (me = R.find((S) => S.textValue === fe)) == null ? void 0 : me.ref.current;
138
+ (function S(pe) {
139
+ X.current = pe, window.clearTimeout(Y.current), pe !== "" && (Y.current = window.setTimeout(() => S(""), 1e3));
140
+ })(g), A && setTimeout(() => A.focus());
141
+ };
142
+ r.useEffect(() => () => window.clearTimeout(Y.current), []), tt();
143
+ const x = r.useCallback((i) => {
144
+ var R, P;
145
+ return de.current === ((R = Z.current) == null ? void 0 : R.side) && Gt(i, (P = Z.current) == null ? void 0 : P.area);
146
+ }, []);
147
+ return /* @__PURE__ */ u(
148
+ St,
89
149
  {
90
- ref: ie.setFloating,
91
- "data-radix-popper-content-wrapper": "",
92
- style: {
93
- ...W,
94
- transform: S ? W.transform : "translate(0, -200%)",
95
- // keep off the page when measuring
96
- minWidth: "max-content",
97
- zIndex: fe,
98
- "--radix-popper-transform-origin": [
99
- (D = g.transformOrigin) == null ? void 0 : D.x,
100
- (F = g.transformOrigin) == null ? void 0 : F.y
101
- ].join(" "),
102
- // hide the content if using the hide middleware and should be hidden
103
- // set visibility to hidden and disable pointer events so the UI behaves
104
- // as if the PopperContent isn't there at all
105
- ...((k = g.hide) == null ? void 0 : k.referenceHidden) && {
106
- visibility: "hidden",
107
- pointerEvents: "none"
108
- }
109
- },
110
- dir: e.dir,
111
- children: /* @__PURE__ */ f(
112
- He,
150
+ scope: t,
151
+ searchRef: X,
152
+ onItemEnter: r.useCallback(
153
+ (i) => {
154
+ x(i) && i.preventDefault();
155
+ },
156
+ [x]
157
+ ),
158
+ onItemLeave: r.useCallback(
159
+ (i) => {
160
+ var g;
161
+ x(i) || ((g = V.current) == null || g.focus(), le(null));
162
+ },
163
+ [x]
164
+ ),
165
+ onTriggerLeave: r.useCallback(
166
+ (i) => {
167
+ x(i) && i.preventDefault();
168
+ },
169
+ [x]
170
+ ),
171
+ pointerGraceTimerRef: He,
172
+ onPointerGraceIntentChange: r.useCallback((i) => {
173
+ Z.current = i;
174
+ }, []),
175
+ children: /* @__PURE__ */ u(We, { ...ze, children: /* @__PURE__ */ u(
176
+ nt,
113
177
  {
114
- scope: a,
115
- placedSide: I,
116
- onArrowChange: te,
117
- arrowX: pe,
118
- arrowY: de,
119
- shouldHideArrow: le,
120
- children: /* @__PURE__ */ f(
121
- z.div,
178
+ asChild: !0,
179
+ trapped: s,
180
+ onMountAutoFocus: h(a, (i) => {
181
+ var g;
182
+ i.preventDefault(), (g = V.current) == null || g.focus({ preventScroll: !0 });
183
+ }),
184
+ onUnmountAutoFocus: l,
185
+ children: /* @__PURE__ */ u(
186
+ et,
122
187
  {
123
- "data-side": I,
124
- "data-align": ce,
125
- ...d,
126
- ref: ee,
127
- style: {
128
- ...d.style,
129
- // if the PopperContent hasn't been placed yet (not all measurements done)
130
- // we prevent animations so that users's animation don't kick in too early referring wrong sides
131
- animation: S ? void 0 : "none"
132
- }
188
+ asChild: !0,
189
+ disableOutsidePointerEvents: p,
190
+ onEscapeKeyDown: m,
191
+ onPointerDownOutside: f,
192
+ onFocusOutside: c,
193
+ onInteractOutside: d,
194
+ onDismiss: C,
195
+ children: /* @__PURE__ */ u(
196
+ it,
197
+ {
198
+ asChild: !0,
199
+ ...B,
200
+ dir: T.dir,
201
+ orientation: "vertical",
202
+ loop: o,
203
+ currentTabStopId: Xe,
204
+ onCurrentTabStopIdChange: le,
205
+ onEntryFocus: h(M, (i) => {
206
+ T.isUsingKeyboardRef.current || i.preventDefault();
207
+ }),
208
+ preventScrollOnEntryFocus: !0,
209
+ children: /* @__PURE__ */ u(
210
+ rt,
211
+ {
212
+ role: "menu",
213
+ "aria-orientation": "vertical",
214
+ "data-state": Ye(y.open),
215
+ "data-radix-menu-content": "",
216
+ dir: T.dir,
217
+ ...U,
218
+ ...w,
219
+ ref: je,
220
+ style: { outline: "none", ...w.style },
221
+ onKeyDown: h(w.onKeyDown, (i) => {
222
+ const R = i.target.closest("[data-radix-menu-content]") === i.currentTarget, P = i.ctrlKey || i.altKey || i.metaKey, q = i.key.length === 1;
223
+ R && (i.key === "Tab" && i.preventDefault(), !P && q && Ze(i.key));
224
+ const J = V.current;
225
+ if (i.target !== J || !pt.includes(i.key)) return;
226
+ i.preventDefault();
227
+ const A = ie().filter((b) => !b.disabled).map((b) => b.ref.current);
228
+ _e.includes(i.key) && A.reverse(), Nt(A);
229
+ }),
230
+ onBlur: h(e.onBlur, (i) => {
231
+ i.currentTarget.contains(i.target) || (window.clearTimeout(Y.current), X.current = "");
232
+ }),
233
+ onPointerMove: h(
234
+ e.onPointerMove,
235
+ k((i) => {
236
+ const g = i.target, R = $.current !== i.clientX;
237
+ if (i.currentTarget.contains(g) && R) {
238
+ const P = i.clientX > $.current ? "right" : "left";
239
+ de.current = P, $.current = i.clientX;
240
+ }
241
+ })
242
+ )
243
+ }
244
+ )
245
+ }
246
+ )
133
247
  }
134
248
  )
135
249
  }
136
- )
250
+ ) })
137
251
  }
138
252
  );
139
253
  }
140
254
  );
141
- J.displayName = _;
142
- var K = "PopperArrow", Ie = {
143
- top: "bottom",
144
- right: "left",
145
- bottom: "top",
146
- left: "right"
147
- }, Q = p.forwardRef(function(s, a) {
148
- const { __scopePopper: t, ...i } = s, r = We(K, t), o = Ie[r.placedSide];
149
- return (
150
- // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)
151
- // doesn't report size as we'd expect on SVG elements.
152
- // it reports their bounding box which is effectively the largest path inside the SVG.
153
- /* @__PURE__ */ f(
154
- "span",
255
+ Ie.displayName = _;
256
+ var It = "MenuGroup", ce = r.forwardRef(
257
+ (e, n) => {
258
+ const { __scopeMenu: t, ...o } = e;
259
+ return /* @__PURE__ */ u(F.div, { role: "group", ...o, ref: n });
260
+ }
261
+ );
262
+ ce.displayName = It;
263
+ var yt = "MenuLabel", ye = r.forwardRef(
264
+ (e, n) => {
265
+ const { __scopeMenu: t, ...o } = e;
266
+ return /* @__PURE__ */ u(F.div, { ...o, ref: n });
267
+ }
268
+ );
269
+ ye.displayName = yt;
270
+ var j = "MenuItem", he = "menu.itemSelect", z = r.forwardRef(
271
+ (e, n) => {
272
+ const { disabled: t = !1, onSelect: o, ...s } = e, a = r.useRef(null), l = G(j, e.__scopeMenu), p = oe(j, e.__scopeMenu), M = N(n, a), m = r.useRef(!1), f = () => {
273
+ const c = a.current;
274
+ if (!t && c) {
275
+ const d = new CustomEvent(he, { bubbles: !0, cancelable: !0 });
276
+ c.addEventListener(he, (C) => o == null ? void 0 : o(C), { once: !0 }), st(c, d), d.defaultPrevented ? m.current = !1 : l.onClose();
277
+ }
278
+ };
279
+ return /* @__PURE__ */ u(
280
+ xe,
155
281
  {
156
- ref: r.onArrowChange,
157
- style: {
158
- position: "absolute",
159
- left: r.arrowX,
160
- top: r.arrowY,
161
- [o]: 0,
162
- transformOrigin: {
163
- top: "",
164
- right: "0 0",
165
- bottom: "center 0",
166
- left: "100% 0"
167
- }[r.placedSide],
168
- transform: {
169
- top: "translateY(100%)",
170
- right: "translateY(50%) rotate(90deg) translateX(-50%)",
171
- bottom: "rotate(180deg)",
172
- left: "translateY(50%) rotate(-90deg) translateX(50%)"
173
- }[r.placedSide],
174
- visibility: r.shouldHideArrow ? "hidden" : void 0
282
+ ...s,
283
+ ref: M,
284
+ disabled: t,
285
+ onClick: h(e.onClick, f),
286
+ onPointerDown: (c) => {
287
+ var d;
288
+ (d = e.onPointerDown) == null || d.call(e, c), m.current = !0;
175
289
  },
176
- children: /* @__PURE__ */ f(
177
- Oe,
290
+ onPointerUp: h(e.onPointerUp, (c) => {
291
+ var d;
292
+ m.current || (d = c.currentTarget) == null || d.click();
293
+ }),
294
+ onKeyDown: h(e.onKeyDown, (c) => {
295
+ const d = p.searchRef.current !== "";
296
+ t || d && c.key === " " || Q.includes(c.key) && (c.currentTarget.click(), c.preventDefault());
297
+ })
298
+ }
299
+ );
300
+ }
301
+ );
302
+ z.displayName = j;
303
+ var xe = r.forwardRef(
304
+ (e, n) => {
305
+ const { __scopeMenu: t, disabled: o = !1, textValue: s, ...a } = e, l = oe(j, t), p = Re(t), M = r.useRef(null), m = N(n, M), [f, c] = r.useState(!1), [d, C] = r.useState("");
306
+ return r.useEffect(() => {
307
+ const v = M.current;
308
+ v && C((v.textContent ?? "").trim());
309
+ }, [a.children]), /* @__PURE__ */ u(
310
+ D.ItemSlot,
311
+ {
312
+ scope: t,
313
+ disabled: o,
314
+ textValue: s ?? d,
315
+ children: /* @__PURE__ */ u(ut, { asChild: !0, ...p, focusable: !o, children: /* @__PURE__ */ u(
316
+ F.div,
178
317
  {
179
- ...i,
180
- ref: a,
181
- style: {
182
- ...i.style,
183
- // ensures the element can be measured correctly (mostly for if SVG)
184
- display: "block"
185
- }
318
+ role: "menuitem",
319
+ "data-highlighted": f ? "" : void 0,
320
+ "aria-disabled": o || void 0,
321
+ "data-disabled": o ? "" : void 0,
322
+ ...a,
323
+ ref: m,
324
+ onPointerMove: h(
325
+ e.onPointerMove,
326
+ k((v) => {
327
+ o ? l.onItemLeave(v) : (l.onItemEnter(v), v.defaultPrevented || v.currentTarget.focus({ preventScroll: !0 }));
328
+ })
329
+ ),
330
+ onPointerLeave: h(
331
+ e.onPointerLeave,
332
+ k((v) => l.onItemLeave(v))
333
+ ),
334
+ onFocus: h(e.onFocus, () => c(!0)),
335
+ onBlur: h(e.onBlur, () => c(!1))
186
336
  }
337
+ ) })
338
+ }
339
+ );
340
+ }
341
+ ), xt = "MenuCheckboxItem", be = r.forwardRef(
342
+ (e, n) => {
343
+ const { checked: t = !1, onCheckedChange: o, ...s } = e;
344
+ return /* @__PURE__ */ u(ke, { scope: e.__scopeMenu, checked: t, children: /* @__PURE__ */ u(
345
+ z,
346
+ {
347
+ role: "menuitemcheckbox",
348
+ "aria-checked": H(t) ? "mixed" : t,
349
+ ...s,
350
+ ref: n,
351
+ "data-state": ue(t),
352
+ onSelect: h(
353
+ s.onSelect,
354
+ () => o == null ? void 0 : o(H(t) ? !0 : !t),
355
+ { checkForDefaultPrevented: !1 }
187
356
  )
188
357
  }
189
- )
190
- );
191
- });
192
- Q.displayName = K;
358
+ ) });
359
+ }
360
+ );
361
+ be.displayName = xt;
362
+ var Te = "MenuRadioGroup", [bt, Tt] = I(
363
+ Te,
364
+ { value: void 0, onValueChange: () => {
365
+ } }
366
+ ), Ae = r.forwardRef(
367
+ (e, n) => {
368
+ const { value: t, onValueChange: o, ...s } = e, a = ee(o);
369
+ return /* @__PURE__ */ u(bt, { scope: e.__scopeMenu, value: t, onValueChange: a, children: /* @__PURE__ */ u(ce, { ...s, ref: n }) });
370
+ }
371
+ );
372
+ Ae.displayName = Te;
373
+ var Oe = "MenuRadioItem", De = r.forwardRef(
374
+ (e, n) => {
375
+ const { value: t, ...o } = e, s = Tt(Oe, e.__scopeMenu), a = t === s.value;
376
+ return /* @__PURE__ */ u(ke, { scope: e.__scopeMenu, checked: a, children: /* @__PURE__ */ u(
377
+ z,
378
+ {
379
+ role: "menuitemradio",
380
+ "aria-checked": a,
381
+ ...o,
382
+ ref: n,
383
+ "data-state": ue(a),
384
+ onSelect: h(
385
+ o.onSelect,
386
+ () => {
387
+ var l;
388
+ return (l = s.onValueChange) == null ? void 0 : l.call(s, t);
389
+ },
390
+ { checkForDefaultPrevented: !1 }
391
+ )
392
+ }
393
+ ) });
394
+ }
395
+ );
396
+ De.displayName = Oe;
397
+ var ae = "MenuItemIndicator", [ke, At] = I(
398
+ ae,
399
+ { checked: !1 }
400
+ ), Ne = r.forwardRef(
401
+ (e, n) => {
402
+ const { __scopeMenu: t, forceMount: o, ...s } = e, a = At(ae, t);
403
+ return /* @__PURE__ */ u(
404
+ W,
405
+ {
406
+ present: o || H(a.checked) || a.checked === !0,
407
+ children: /* @__PURE__ */ u(
408
+ F.span,
409
+ {
410
+ ...s,
411
+ ref: n,
412
+ "data-state": ue(a.checked)
413
+ }
414
+ )
415
+ }
416
+ );
417
+ }
418
+ );
419
+ Ne.displayName = ae;
420
+ var Ot = "MenuSeparator", Fe = r.forwardRef(
421
+ (e, n) => {
422
+ const { __scopeMenu: t, ...o } = e;
423
+ return /* @__PURE__ */ u(
424
+ F.div,
425
+ {
426
+ role: "separator",
427
+ "aria-orientation": "horizontal",
428
+ ...o,
429
+ ref: n
430
+ }
431
+ );
432
+ }
433
+ );
434
+ Fe.displayName = Ot;
435
+ var Dt = "MenuArrow", Le = r.forwardRef(
436
+ (e, n) => {
437
+ const { __scopeMenu: t, ...o } = e, s = K(t);
438
+ return /* @__PURE__ */ u(ct, { ...s, ...o, ref: n });
439
+ }
440
+ );
441
+ Le.displayName = Dt;
442
+ var se = "MenuSub", [kt, Ke] = I(se), Ge = (e) => {
443
+ const { __scopeMenu: n, children: t, open: o = !1, onOpenChange: s } = e, a = E(se, n), l = K(n), [p, M] = r.useState(null), [m, f] = r.useState(null), c = ee(s);
444
+ return r.useEffect(() => (a.open === !1 && c(!1), () => c(!1)), [a.open, c]), /* @__PURE__ */ u(Ce, { ...l, children: /* @__PURE__ */ u(
445
+ Se,
446
+ {
447
+ scope: n,
448
+ open: o,
449
+ onOpenChange: c,
450
+ content: m,
451
+ onContentChange: f,
452
+ children: /* @__PURE__ */ u(
453
+ kt,
454
+ {
455
+ scope: n,
456
+ contentId: Me(),
457
+ triggerId: Me(),
458
+ trigger: p,
459
+ onTriggerChange: M,
460
+ children: t
461
+ }
462
+ )
463
+ }
464
+ ) });
465
+ };
466
+ Ge.displayName = se;
467
+ var O = "MenuSubTrigger", Ue = r.forwardRef(
468
+ (e, n) => {
469
+ const t = E(O, e.__scopeMenu), o = G(O, e.__scopeMenu), s = Ke(O, e.__scopeMenu), a = oe(O, e.__scopeMenu), l = r.useRef(null), { pointerGraceTimerRef: p, onPointerGraceIntentChange: M } = a, m = { __scopeMenu: e.__scopeMenu }, f = r.useCallback(() => {
470
+ l.current && window.clearTimeout(l.current), l.current = null;
471
+ }, []);
472
+ return r.useEffect(() => f, [f]), r.useEffect(() => {
473
+ const c = p.current;
474
+ return () => {
475
+ window.clearTimeout(c), M(null);
476
+ };
477
+ }, [p, M]), /* @__PURE__ */ u(te, { asChild: !0, ...m, children: /* @__PURE__ */ u(
478
+ xe,
479
+ {
480
+ id: s.triggerId,
481
+ "aria-haspopup": "menu",
482
+ "aria-expanded": t.open,
483
+ "aria-controls": s.contentId,
484
+ "data-state": Ye(t.open),
485
+ ...e,
486
+ ref: qe(n, s.onTriggerChange),
487
+ onClick: (c) => {
488
+ var d;
489
+ (d = e.onClick) == null || d.call(e, c), !(e.disabled || c.defaultPrevented) && (c.currentTarget.focus(), t.open || t.onOpenChange(!0));
490
+ },
491
+ onPointerMove: h(
492
+ e.onPointerMove,
493
+ k((c) => {
494
+ a.onItemEnter(c), !c.defaultPrevented && !e.disabled && !t.open && !l.current && (a.onPointerGraceIntentChange(null), l.current = window.setTimeout(() => {
495
+ t.onOpenChange(!0), f();
496
+ }, 100));
497
+ })
498
+ ),
499
+ onPointerLeave: h(
500
+ e.onPointerLeave,
501
+ k((c) => {
502
+ var C, v;
503
+ f();
504
+ const d = (C = t.content) == null ? void 0 : C.getBoundingClientRect();
505
+ if (d) {
506
+ const w = (v = t.content) == null ? void 0 : v.dataset.side, y = w === "right", T = y ? -5 : 5, U = d[y ? "left" : "right"], B = d[y ? "right" : "left"];
507
+ a.onPointerGraceIntentChange({
508
+ area: [
509
+ // Apply a bleed on clientX to ensure that our exit point is
510
+ // consistently within polygon bounds
511
+ { x: c.clientX + T, y: c.clientY },
512
+ { x: U, y: d.top },
513
+ { x: B, y: d.top },
514
+ { x: B, y: d.bottom },
515
+ { x: U, y: d.bottom }
516
+ ],
517
+ side: w
518
+ }), window.clearTimeout(p.current), p.current = window.setTimeout(
519
+ () => a.onPointerGraceIntentChange(null),
520
+ 300
521
+ );
522
+ } else {
523
+ if (a.onTriggerLeave(c), c.defaultPrevented) return;
524
+ a.onPointerGraceIntentChange(null);
525
+ }
526
+ })
527
+ ),
528
+ onKeyDown: h(e.onKeyDown, (c) => {
529
+ var C;
530
+ const d = a.searchRef.current !== "";
531
+ e.disabled || d && c.key === " " || Mt[o.dir].includes(c.key) && (t.onOpenChange(!0), (C = t.content) == null || C.focus(), c.preventDefault());
532
+ })
533
+ }
534
+ ) });
535
+ }
536
+ );
537
+ Ue.displayName = O;
538
+ var Be = "MenuSubContent", Ve = r.forwardRef(
539
+ (e, n) => {
540
+ const t = Ee(_, e.__scopeMenu), { forceMount: o = t.forceMount, ...s } = e, a = E(_, e.__scopeMenu), l = G(_, e.__scopeMenu), p = Ke(Be, e.__scopeMenu), M = r.useRef(null), m = N(n, M);
541
+ return /* @__PURE__ */ u(D.Provider, { scope: e.__scopeMenu, children: /* @__PURE__ */ u(W, { present: o || a.open, children: /* @__PURE__ */ u(D.Slot, { scope: e.__scopeMenu, children: /* @__PURE__ */ u(
542
+ re,
543
+ {
544
+ id: p.contentId,
545
+ "aria-labelledby": p.triggerId,
546
+ ...s,
547
+ ref: m,
548
+ align: "start",
549
+ side: l.dir === "rtl" ? "left" : "right",
550
+ disableOutsidePointerEvents: !1,
551
+ disableOutsideScroll: !1,
552
+ trapFocus: !1,
553
+ onOpenAutoFocus: (f) => {
554
+ var c;
555
+ l.isUsingKeyboardRef.current && ((c = M.current) == null || c.focus()), f.preventDefault();
556
+ },
557
+ onCloseAutoFocus: (f) => f.preventDefault(),
558
+ onFocusOutside: h(e.onFocusOutside, (f) => {
559
+ f.target !== p.trigger && a.onOpenChange(!1);
560
+ }),
561
+ onEscapeKeyDown: h(e.onEscapeKeyDown, (f) => {
562
+ l.onClose(), f.preventDefault();
563
+ }),
564
+ onKeyDown: h(e.onKeyDown, (f) => {
565
+ var C;
566
+ const c = f.currentTarget.contains(f.target), d = ht[l.dir].includes(f.key);
567
+ c && d && (a.onOpenChange(!1), (C = p.trigger) == null || C.focus(), f.preventDefault());
568
+ })
569
+ }
570
+ ) }) }) });
571
+ }
572
+ );
573
+ Ve.displayName = Be;
193
574
  function Ye(e) {
194
- return e !== null;
575
+ return e ? "open" : "closed";
576
+ }
577
+ function H(e) {
578
+ return e === "indeterminate";
579
+ }
580
+ function ue(e) {
581
+ return H(e) ? "indeterminate" : e ? "checked" : "unchecked";
582
+ }
583
+ function Nt(e) {
584
+ const n = document.activeElement;
585
+ for (const t of e)
586
+ if (t === n || (t.focus(), document.activeElement !== n)) return;
587
+ }
588
+ function Ft(e, n) {
589
+ return e.map((t, o) => e[(n + o) % e.length]);
590
+ }
591
+ function Lt(e, n, t) {
592
+ const s = n.length > 1 && Array.from(n).every((m) => m === n[0]) ? n[0] : n, a = t ? e.indexOf(t) : -1;
593
+ let l = Ft(e, Math.max(a, 0));
594
+ s.length === 1 && (l = l.filter((m) => m !== t));
595
+ const M = l.find(
596
+ (m) => m.toLowerCase().startsWith(s.toLowerCase())
597
+ );
598
+ return M !== t ? M : void 0;
599
+ }
600
+ function Kt(e, n) {
601
+ const { x: t, y: o } = e;
602
+ let s = !1;
603
+ for (let a = 0, l = n.length - 1; a < n.length; l = a++) {
604
+ const p = n[a], M = n[l], m = p.x, f = p.y, c = M.x, d = M.y;
605
+ f > o != d > o && t < (c - m) * (o - f) / (d - f) + m && (s = !s);
606
+ }
607
+ return s;
608
+ }
609
+ function Gt(e, n) {
610
+ if (!n) return !1;
611
+ const t = { x: e.clientX, y: e.clientY };
612
+ return Kt(t, n);
195
613
  }
196
- var Me = (e) => ({
197
- name: "transformOrigin",
198
- options: e,
199
- fn(s) {
200
- var v, h, C;
201
- const { placement: a, rects: t, middlewareData: i } = s, o = ((v = i.arrow) == null ? void 0 : v.centerOffset) !== 0, w = o ? 0 : e.arrowWidth, n = o ? 0 : e.arrowHeight, [c, x] = V(a), m = { start: "0%", center: "50%", end: "100%" }[x], y = (((h = i.arrow) == null ? void 0 : h.x) ?? 0) + w / 2, A = (((C = i.arrow) == null ? void 0 : C.y) ?? 0) + n / 2;
202
- let l = "", d = "";
203
- return c === "bottom" ? (l = o ? m : `${y}px`, d = `${-n}px`) : c === "top" ? (l = o ? m : `${y}px`, d = `${t.floating.height + n}px`) : c === "right" ? (l = `${-n}px`, d = o ? m : `${A}px`) : c === "left" && (l = `${t.floating.width + n}px`, d = o ? m : `${A}px`), { data: { x: l, y: d } };
204
- }
205
- });
206
- function V(e) {
207
- const [s, a = "center"] = e.split("-");
208
- return [s, a];
614
+ function k(e) {
615
+ return (n) => n.pointerType === "mouse" ? e(n) : void 0;
209
616
  }
210
- var qe = U, Ge = G, Je = J, Ke = Q;
617
+ var an = Pe, sn = te, un = we, ln = Ie, dn = ce, fn = ye, mn = z, pn = be, Mn = Ae, hn = De, vn = Ne, Cn = Fe, gn = Le, _n = Ge, Rn = Ue, Sn = Ve;
211
618
  export {
212
- Ge as Anchor,
213
- Ke as Arrow,
214
- Je as Content,
215
- U as Popper,
216
- G as PopperAnchor,
217
- Q as PopperArrow,
218
- J as PopperContent,
219
- qe as Root,
220
- Ue as createPopperScope
619
+ sn as Anchor,
620
+ gn as Arrow,
621
+ pn as CheckboxItem,
622
+ ln as Content,
623
+ dn as Group,
624
+ mn as Item,
625
+ vn as ItemIndicator,
626
+ fn as Label,
627
+ Pe as Menu,
628
+ te as MenuAnchor,
629
+ Le as MenuArrow,
630
+ be as MenuCheckboxItem,
631
+ Ie as MenuContent,
632
+ ce as MenuGroup,
633
+ z as MenuItem,
634
+ Ne as MenuItemIndicator,
635
+ ye as MenuLabel,
636
+ we as MenuPortal,
637
+ Ae as MenuRadioGroup,
638
+ De as MenuRadioItem,
639
+ Fe as MenuSeparator,
640
+ Ge as MenuSub,
641
+ Ve as MenuSubContent,
642
+ Ue as MenuSubTrigger,
643
+ un as Portal,
644
+ Mn as RadioGroup,
645
+ hn as RadioItem,
646
+ an as Root,
647
+ Cn as Separator,
648
+ _n as Sub,
649
+ Sn as SubContent,
650
+ Rn as SubTrigger,
651
+ cn as createMenuScope
221
652
  };