@yselimcan/ui 0.0.5 → 0.0.6

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 (198) hide show
  1. package/dist/index100.js +32 -5
  2. package/dist/index101.js +19 -8
  3. package/dist/index102.js +4 -86
  4. package/dist/index103.js +4 -13
  5. package/dist/index104.js +5 -63
  6. package/dist/index105.js +12 -38
  7. package/dist/index106.js +19 -14
  8. package/dist/index107.js +13 -33
  9. package/dist/index108.js +297 -19
  10. package/dist/index109.js +4 -5
  11. package/dist/index110.js +39 -4
  12. package/dist/index111.js +126 -5
  13. package/dist/index112.js +4 -11
  14. package/dist/index113.js +21 -19
  15. package/dist/index114.js +77 -13
  16. package/dist/index115.js +59 -291
  17. package/dist/index116.js +45 -4
  18. package/dist/index117.js +65 -37
  19. package/dist/index118.js +8 -125
  20. package/dist/index119.js +13 -20
  21. package/dist/index120.js +3 -76
  22. package/dist/index121.js +3 -64
  23. package/dist/index122.js +5 -45
  24. package/dist/index123.js +134 -14
  25. package/dist/index124.js +27 -5
  26. package/dist/index125.js +6 -27
  27. package/dist/index127.js +11 -26
  28. package/dist/index128.js +20 -15
  29. package/dist/index129.js +14 -22
  30. package/dist/index130.js +5 -58
  31. package/dist/index131.js +28 -16
  32. package/dist/index132.js +15 -25
  33. package/dist/index133.js +21 -40
  34. package/dist/index134.js +59 -43
  35. package/dist/index135.js +15 -19
  36. package/dist/index136.js +26 -47
  37. package/dist/index137.js +38 -49
  38. package/dist/index138.js +43 -18
  39. package/dist/index139.js +21 -11
  40. package/dist/index140.js +48 -22
  41. package/dist/index141.js +50 -34
  42. package/dist/index142.js +16 -229
  43. package/dist/index143.js +11 -283
  44. package/dist/index144.js +21 -52
  45. package/dist/index145.js +35 -15
  46. package/dist/index146.js +225 -74
  47. package/dist/index147.js +283 -3
  48. package/dist/index148.js +53 -30
  49. package/dist/index149.js +16 -24
  50. package/dist/index150.js +79 -15
  51. package/dist/index151.js +3 -69
  52. package/dist/index152.js +31 -4
  53. package/dist/index153.js +22 -103
  54. package/dist/index154.js +15 -79
  55. package/dist/index155.js +65 -259
  56. package/dist/index156.js +4 -12
  57. package/dist/index157.js +105 -11
  58. package/dist/index158.js +76 -37
  59. package/dist/index159.js +263 -4
  60. package/dist/index160.js +11 -66
  61. package/dist/index161.js +10 -9
  62. package/dist/index162.js +40 -8
  63. package/dist/index163.js +4 -5
  64. package/dist/index164.js +62 -129
  65. package/dist/index165.js +10 -54
  66. package/dist/index166.js +8 -11
  67. package/dist/index167.js +6 -118
  68. package/dist/index168.js +53 -11
  69. package/dist/index169.js +11 -8
  70. package/dist/index17.js +4 -4
  71. package/dist/index170.js +117 -12
  72. package/dist/index171.js +11 -22
  73. package/dist/index172.js +1 -1
  74. package/dist/index173.js +2 -2
  75. package/dist/index174.js +1 -1
  76. package/dist/index175.js +2 -2
  77. package/dist/index176.js +1 -1
  78. package/dist/index177.js +1 -1
  79. package/dist/index178.js +6 -6
  80. package/dist/index179.js +1 -1
  81. package/dist/index18.js +3 -3
  82. package/dist/index180.js +1 -1
  83. package/dist/index181.js +1 -1
  84. package/dist/index182.js +1 -1
  85. package/dist/index183.js +1 -1
  86. package/dist/index184.js +1 -1
  87. package/dist/index187.js +6 -6
  88. package/dist/index189.js +2 -2
  89. package/dist/index19.js +9 -9
  90. package/dist/index190.js +2 -2
  91. package/dist/index191.js +1 -1
  92. package/dist/index192.js +2 -2
  93. package/dist/index193.js +1 -1
  94. package/dist/index194.js +2 -2
  95. package/dist/index195.js +2 -2
  96. package/dist/index196.js +7 -7
  97. package/dist/index197.js +3 -3
  98. package/dist/index198.js +6 -6
  99. package/dist/index199.js +1 -1
  100. package/dist/index20.js +2 -2
  101. package/dist/index200.js +47 -5
  102. package/dist/index201.js +193 -41
  103. package/dist/index202.js +30 -182
  104. package/dist/index203.js +20 -48
  105. package/dist/index204.js +27 -20
  106. package/dist/index205.js +5 -26
  107. package/dist/index206.js +9 -11
  108. package/dist/index207.js +11 -6
  109. package/dist/index208.js +17 -4
  110. package/dist/index209.js +6 -9
  111. package/dist/index21.js +3 -3
  112. package/dist/index210.js +4 -17
  113. package/dist/index217.js +2 -2
  114. package/dist/index218.js +1 -1
  115. package/dist/index219.js +4 -39
  116. package/dist/index22.js +5 -5
  117. package/dist/index220.js +4 -56
  118. package/dist/index221.js +14 -27
  119. package/dist/index222.js +32 -7
  120. package/dist/index223.js +37 -11
  121. package/dist/index224.js +57 -12
  122. package/dist/index225.js +27 -11
  123. package/dist/index226.js +6 -20
  124. package/dist/index227.js +11 -10
  125. package/dist/index228.js +11 -7
  126. package/dist/index229.js +11 -42
  127. package/dist/index23.js +2 -2
  128. package/dist/index230.js +22 -4
  129. package/dist/index231.js +11 -4
  130. package/dist/index232.js +6 -595
  131. package/dist/index233.js +42 -11
  132. package/dist/index234.js +594 -12
  133. package/dist/index235.js +11 -32
  134. package/dist/index239.js +2 -2
  135. package/dist/index24.js +8 -8
  136. package/dist/index242.js +4 -4
  137. package/dist/index243.js +1 -1
  138. package/dist/index244.js +1 -1
  139. package/dist/index246.js +2 -2
  140. package/dist/index247.js +1 -1
  141. package/dist/index251.js +1 -1
  142. package/dist/index32.js +1 -1
  143. package/dist/index33.js +15 -15
  144. package/dist/index34.js +5 -5
  145. package/dist/index35.js +12 -12
  146. package/dist/index36.js +10 -10
  147. package/dist/index37.js +7 -7
  148. package/dist/index38.js +7 -7
  149. package/dist/index39.js +4 -4
  150. package/dist/index40.js +2 -2
  151. package/dist/index41.js +2 -2
  152. package/dist/index42.js +2 -2
  153. package/dist/index43.js +1 -1
  154. package/dist/index45.js +5 -5
  155. package/dist/index46.js +9 -9
  156. package/dist/index47.js +8 -8
  157. package/dist/index48.js +17 -17
  158. package/dist/index49.js +4 -4
  159. package/dist/index50.js +10 -10
  160. package/dist/index52.js +14 -14
  161. package/dist/index53.js +1 -1
  162. package/dist/index54.js +16 -16
  163. package/dist/index55.js +8 -8
  164. package/dist/index56.js +9 -9
  165. package/dist/index58.js +1 -1
  166. package/dist/index59.js +2 -2
  167. package/dist/index60.js +6 -6
  168. package/dist/index61.js +2 -2
  169. package/dist/index62.js +2 -2
  170. package/dist/index63.js +5 -5
  171. package/dist/index64.js +2 -2
  172. package/dist/index66.js +7 -7
  173. package/dist/index69.js +31 -31
  174. package/dist/index70.js +5 -5
  175. package/dist/index71.js +16 -16
  176. package/dist/index72.js +22 -22
  177. package/dist/index73.js +7 -7
  178. package/dist/index74.js +1 -1
  179. package/dist/index75.js +11 -11
  180. package/dist/index76.js +2 -2
  181. package/dist/index77.js +4 -4
  182. package/dist/index78.js +2 -2
  183. package/dist/index79.js +1 -1
  184. package/dist/index80.js +1 -1
  185. package/dist/index81.js +16 -16
  186. package/dist/index82.js +4 -4
  187. package/dist/index83.js +4 -4
  188. package/dist/index87.js +7 -7
  189. package/dist/index88.js +9 -9
  190. package/dist/index89.js +5 -5
  191. package/dist/index94.js +7 -4
  192. package/dist/index95.js +86 -65
  193. package/dist/index96.js +12 -8
  194. package/dist/index97.js +61 -12
  195. package/dist/index98.js +38 -4
  196. package/dist/index99.js +14 -4
  197. package/dist/styles.css +1 -1
  198. package/package.json +4 -3
package/dist/index115.js CHANGED
@@ -1,299 +1,67 @@
1
1
  "use client";
2
- import * as b from "react";
3
- import { tabbable as we, isTabbable as De, focusable as Ke } from "./index236.js";
4
- import { isHTMLElement as q, getNodeName as He, getWindow as _e, getComputedStyle as Ue } from "./index164.js";
5
- import { useMergedRefs as Re } from "./index95.js";
6
- import { useValueAsRef as H } from "./index128.js";
7
- import { useStableCallback as _ } from "./index127.js";
8
- import { useIsoLayoutEffect as U } from "./index126.js";
9
- import { visuallyHidden as We } from "./index123.js";
10
- import { useTimeout as ye } from "./index148.js";
11
- import { useAnimationFrame as $e } from "./index160.js";
12
- import { FocusGuard as Te } from "./index195.js";
13
- import { createChangeEventDetails as ze } from "./index107.js";
14
- import { createAttribute as Fe } from "./index237.js";
15
- import { enqueueFocus as te } from "./index238.js";
16
- import { markOthers as Je } from "./index239.js";
17
- import { usePortalContext as Qe } from "./index118.js";
18
- import { useFloatingTree as Xe } from "./index181.js";
19
- import { CLICK_TRIGGER_IDENTIFIER as Ye } from "./index119.js";
20
- import { resolveRef as D } from "./index240.js";
21
- import { jsxs as Ze, jsx as xe } from "react/jsx-runtime";
22
- import { isTypeableCombobox as he, getFloatingFocusElement as Ie, getDocument as I, activeElement as V, contains as m, getTarget as W } from "./index151.js";
23
- import { getTabbableOptions as re, isOutsideEvent as Le, getNextTabbable as et, getPreviousTabbable as tt } from "./index199.js";
24
- import { getNodeAncestors as ke, getNodeChildren as Ce } from "./index241.js";
25
- import { isVirtualClick as nt, isVirtualPointerEvent as rt, stopEvent as ot } from "./index221.js";
26
- import { triggerHover as st, outsidePress as ut, focusOut as it } from "./index108.js";
27
- function ct(n, p) {
28
- const h = _e(n.target);
29
- return n instanceof h.KeyboardEvent ? "keyboard" : n instanceof h.FocusEvent ? p || "keyboard" : "pointerType" in n ? n.pointerType || "keyboard" : "touches" in n ? "touch" : n instanceof h.MouseEvent ? p || (n.detail === 0 ? "keyboard" : "mouse") : "";
30
- }
31
- const Ae = 20;
32
- let L = [];
33
- function oe() {
34
- L = L.filter((n) => n.isConnected);
35
- }
36
- function at(n) {
37
- oe(), n && He(n) !== "body" && (L.push(n), L.length > Ae && (L = L.slice(-Ae)));
38
- }
39
- function ne() {
40
- return oe(), L[L.length - 1];
41
- }
42
- function ft(n) {
43
- if (!n)
44
- return null;
45
- const p = re();
46
- return De(n, p) ? n : we(n, p)[0] || n;
47
- }
48
- function lt(n) {
49
- return !n || !n.isConnected ? !1 : typeof n.checkVisibility == "function" ? n.checkVisibility() : Ue(n).display !== "none";
50
- }
51
- function Oe(n, p) {
52
- if (!p.current.includes("floating") && !n.getAttribute("role")?.includes("dialog"))
53
- return;
54
- const h = re(), $ = Ke(n, h).filter((S) => {
55
- const P = S.getAttribute("data-tabindex") || "";
56
- return De(S, h) || S.hasAttribute("data-tabindex") && !P.startsWith("-");
57
- }), N = n.getAttribute("tabindex");
58
- p.current.includes("floating") || $.length === 0 ? N !== "0" && n.setAttribute("tabindex", "0") : (N !== "-1" || n.hasAttribute("data-tabindex") && n.getAttribute("data-tabindex") !== "-1") && (n.setAttribute("tabindex", "-1"), n.setAttribute("data-tabindex", "-1"));
59
- }
60
- function Mt(n) {
61
- const {
62
- context: p,
63
- children: h,
64
- disabled: i = !1,
65
- order: $ = ["content"],
66
- initialFocus: N = !0,
67
- returnFocus: S = !0,
68
- restoreFocus: P = !1,
69
- modal: E = !0,
70
- closeOnFocusOut: M = !0,
71
- openInteractionType: Ne = "",
72
- getInsideElements: Se = () => [],
73
- nextFocusableElement: z,
74
- previousFocusableElement: J,
75
- beforeContentFocusGuardRef: Pe,
76
- externalTree: Me
77
- } = n, F = "rootStore" in p ? p.rootStore : p, v = F.useState("open"), a = F.useState("domReferenceElement"), f = F.useState("floatingElement"), {
78
- events: Q,
79
- dataRef: k
80
- } = F.context, O = _(() => k.current.floatingContext?.nodeId), se = _(Se), ue = N === !1, x = he(a) && ue, C = H($), ie = H(N), j = H(S), ce = H(Ne), R = Xe(Me), c = Qe(), Ge = b.useRef(null), qe = b.useRef(null), y = b.useRef(!1), B = b.useRef(!1), X = b.useRef(!1), ae = b.useRef(-1), fe = b.useRef(""), Y = b.useRef(""), le = ye(), de = ye(), be = $e(), Z = c != null, r = Ie(f), A = _((t = r) => t ? we(t, re()) : []), G = _((t) => {
81
- const o = A(t);
82
- return C.current.map(() => o).filter(Boolean).flat();
83
- });
84
- b.useEffect(() => {
85
- if (i || !E)
86
- return;
87
- function t(l) {
88
- l.key === "Tab" && m(r, V(I(r))) && A().length === 0 && !x && ot(l);
89
- }
90
- const o = I(r);
91
- return o.addEventListener("keydown", t), () => {
92
- o.removeEventListener("keydown", t);
93
- };
94
- }, [i, a, r, E, C, x, A, G]), b.useEffect(() => {
95
- if (i || !f)
96
- return;
97
- function t(o) {
98
- const l = W(o), d = A().indexOf(l);
99
- d !== -1 && (ae.current = d);
100
- }
101
- return f.addEventListener("focusin", t), () => {
102
- f.removeEventListener("focusin", t);
103
- };
104
- }, [i, f, A]), b.useEffect(() => {
105
- if (i || !v)
106
- return;
107
- const t = I(r);
108
- function o() {
109
- X.current = !1;
110
- }
111
- function l(d) {
112
- const e = W(d), s = m(f, e) || m(a, e) || m(c?.portalNode, e);
113
- X.current = !s, Y.current = d.pointerType || "keyboard";
114
- }
115
- function u() {
116
- Y.current = "keyboard";
117
- }
118
- return t.addEventListener("pointerdown", l, !0), t.addEventListener("pointerup", o, !0), t.addEventListener("pointercancel", o, !0), t.addEventListener("keydown", u, !0), () => {
119
- t.removeEventListener("pointerdown", l, !0), t.removeEventListener("pointerup", o, !0), t.removeEventListener("pointercancel", o, !0), t.removeEventListener("keydown", u, !0);
120
- };
121
- }, [i, f, a, r, v, c]), b.useEffect(() => {
122
- if (i || !M)
123
- return;
124
- function t() {
125
- B.current = !0, de.start(0, () => {
126
- B.current = !1;
127
- });
128
- }
129
- function o(e) {
130
- const s = e.relatedTarget, w = e.currentTarget, g = W(e);
131
- queueMicrotask(() => {
132
- const K = O(), ge = F.context.triggerElements, Be = !(m(a, s) || m(f, s) || m(s, f) || m(c?.portalNode, s) || s != null && ge.hasElement(s) || ge.hasMatchingElement((T) => m(T, s)) || s?.hasAttribute(Fe("focus-guard")) || R && (Ce(R.nodesRef.current, K).find((T) => m(T.context?.elements.floating, s) || m(T.context?.elements.domReference, s)) || ke(R.nodesRef.current, K).find((T) => [T.context?.elements.floating, Ie(T.context?.elements.floating)].includes(s) || T.context?.elements.domReference === s)));
133
- if (w === a && r && Oe(r, C), P && w !== a && !lt(g) && V(I(r)) === I(r).body) {
134
- if (q(r) && (r.focus(), P === "popup")) {
135
- be.request(() => {
136
- r.focus();
137
- });
138
- return;
139
- }
140
- const T = ae.current, ee = A(), ve = ee[T] || ee[ee.length - 1] || r;
141
- q(ve) && ve.focus();
142
- }
143
- if (k.current.insideReactTree) {
144
- k.current.insideReactTree = !1;
145
- return;
146
- }
147
- (x || !E) && s && Be && !B.current && // Fix React 18 Strict Mode returnFocus due to double rendering.
148
- // For an "untrapped" typeable combobox (input role=combobox with
149
- // initialFocus=false), re-opening the popup and tabbing out should still close it even
150
- // when the previously focused element (e.g. the next tabbable outside the popup) is
151
- // focused again. Otherwise, the popup remains open on the second Tab sequence:
152
- // click input -> Tab (closes) -> click input -> Tab.
153
- // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element.
154
- (x || s !== ne()) && (y.current = !0, F.setOpen(!1, ze(it, e)));
155
- });
156
- }
157
- function l() {
158
- X.current || (k.current.insideReactTree = !0, le.start(0, () => {
159
- k.current.insideReactTree = !1;
160
- }));
161
- }
162
- const u = q(a) ? a : null, d = [];
163
- if (!(!f && !u))
164
- return u && (u.addEventListener("focusout", o), u.addEventListener("pointerdown", t), d.push(() => {
165
- u.removeEventListener("focusout", o), u.removeEventListener("pointerdown", t);
166
- })), f && (f.addEventListener("focusout", o), c && (f.addEventListener("focusout", l, !0), d.push(() => {
167
- f.removeEventListener("focusout", l, !0);
168
- })), d.push(() => {
169
- f.removeEventListener("focusout", o);
170
- })), () => {
171
- d.forEach((e) => {
172
- e();
173
- });
174
- };
175
- }, [i, a, f, r, E, R, c, F, M, P, A, x, O, C, k, le, de, be]);
176
- const me = b.useRef(null), pe = b.useRef(null), Ve = Re(me, Pe, c?.beforeInsideRef), je = Re(pe, c?.afterInsideRef);
177
- b.useEffect(() => {
178
- if (i || !f || !v)
179
- return;
180
- const t = Array.from(c?.portalNode?.querySelectorAll(`[${Fe("portal")}]`) || []), l = (R ? ke(R.nodesRef.current, O()) : []).find((e) => he(e.context?.elements.domReference || null))?.context?.elements.domReference, u = [f, l, ...t, ...se(), Ge.current, qe.current, me.current, pe.current, c?.beforeOutsideRef.current, c?.afterOutsideRef.current, D(J), D(z), x ? a : null].filter((e) => e != null), d = Je(u, E || x);
181
- return () => {
182
- d();
183
- };
184
- }, [v, i, a, f, E, C, c, x, R, O, se, z, J]), U(() => {
185
- if (!v || i || !q(r))
186
- return;
187
- const t = I(r), o = V(t);
188
- queueMicrotask(() => {
189
- const l = G(r), u = ie.current, d = typeof u == "function" ? u(ce.current || "") : u;
190
- if (d === void 0 || d === !1)
2
+ import * as v from "react";
3
+ import { useAnimationFrame as P } from "./index164.js";
4
+ import { useTimeout as b } from "./index152.js";
5
+ import { createChangeEventDetails as k } from "./index100.js";
6
+ import { isMouseLikePointerType as w, isClickLikeEvent as I } from "./index225.js";
7
+ import { isTypeableElement as x } from "./index155.js";
8
+ import { EMPTY_OBJECT as L } from "./index122.js";
9
+ import { triggerPress as y } from "./index101.js";
10
+ function Y(d, M = {}) {
11
+ const e = "rootStore" in d ? d.rootStore : d, T = e.context.dataRef, {
12
+ enabled: h = !0,
13
+ event: p = "click",
14
+ toggle: g = !0,
15
+ ignoreMouse: E = !1,
16
+ stickIfOpen: O = !0,
17
+ touchOpenDelay: n = 0
18
+ } = M, s = v.useRef(void 0), C = P(), a = b(), R = v.useMemo(() => ({
19
+ onPointerDown(t) {
20
+ s.current = t.pointerType;
21
+ },
22
+ onMouseDown(t) {
23
+ const r = s.current, o = t.nativeEvent, c = e.select("open");
24
+ if (t.button !== 0 || p === "click" || w(r, !0) && E)
25
+ return;
26
+ const m = T.current.openEvent, i = m?.type, f = e.select("domReferenceElement") !== t.currentTarget, l = c && f || !(c && g && (!(m && O) || i === "click" || i === "mousedown"));
27
+ if (x(o.target)) {
28
+ const u = k(y, o, o.target);
29
+ l && r === "touch" && n > 0 ? a.start(n, () => {
30
+ e.setOpen(!0, u);
31
+ }) : e.setOpen(l, u);
191
32
  return;
192
- let e;
193
- d === !0 || d === null ? e = l[0] || r : e = D(d), e = e || l[0] || r, !m(r, o) && te(e, {
194
- preventScroll: e === r
195
- });
196
- });
197
- }, [i, v, r, ue, G, ie, ce]), U(() => {
198
- if (i || !r)
199
- return;
200
- const t = I(r), o = V(t);
201
- at(o);
202
- function l(e) {
203
- if (e.open || (fe.current = ct(e.nativeEvent, Y.current)), e.reason === st && e.nativeEvent.type === "mouseleave" && (y.current = !0), e.reason === ut)
204
- if (e.nested)
205
- y.current = !1;
206
- else if (nt(e.nativeEvent) || rt(e.nativeEvent))
207
- y.current = !1;
208
- else {
209
- let s = !1;
210
- document.createElement("div").focus({
211
- get preventScroll() {
212
- return s = !0, !1;
213
- }
214
- }), s ? y.current = !1 : y.current = !0;
215
- }
216
- }
217
- Q.on("openchange", l);
218
- const u = t.createElement("span");
219
- u.setAttribute("tabindex", "-1"), u.setAttribute("aria-hidden", "true"), Object.assign(u.style, We), Z && a && a.insertAdjacentElement("afterend", u);
220
- function d() {
221
- const e = j.current;
222
- let s = typeof e == "function" ? e(fe.current) : e;
223
- if (s === void 0 || s === !1)
224
- return null;
225
- if (s === null && (s = !0), typeof s == "boolean") {
226
- const g = a || ne();
227
- return g && g.isConnected ? g : u;
228
33
  }
229
- const w = a || ne() || u;
230
- return D(s) || w;
231
- }
232
- return () => {
233
- Q.off("openchange", l);
234
- const e = V(t), s = m(f, e) || R && Ce(R.nodesRef.current, O(), !1).some((g) => m(g.context?.elements.floating, e)), w = d();
235
- queueMicrotask(() => {
236
- const g = ft(w), K = typeof j.current != "boolean";
237
- // eslint-disable-next-line react-hooks/exhaustive-deps
238
- j.current && !y.current && q(g) && // If the focus moved somewhere else after mount, avoid returning focus
239
- // since it likely entered a different element which should be
240
- // respected: https://github.com/floating-ui/floating-ui/issues/2607
241
- (!(!K && g !== e && e !== t.body) || s) && g.focus({
242
- preventScroll: !0
243
- }), u.remove();
34
+ const D = t.currentTarget;
35
+ C.request(() => {
36
+ const u = k(y, o, D);
37
+ l && r === "touch" && n > 0 ? a.start(n, () => {
38
+ e.setOpen(!0, u);
39
+ }) : e.setOpen(l, u);
244
40
  });
245
- };
246
- }, [i, f, r, j, k, Q, R, Z, a, O]), b.useEffect(() => {
247
- queueMicrotask(() => {
248
- y.current = !1;
249
- });
250
- }, [i]), b.useEffect(() => {
251
- if (i || !v)
252
- return;
253
- function t(l) {
254
- W(l)?.closest(`[${Ye}]`) && (B.current = !0);
255
- }
256
- const o = I(r);
257
- return o.addEventListener("pointerdown", t, !0), () => {
258
- o.removeEventListener("pointerdown", t, !0);
259
- };
260
- }, [i, v, r]), U(() => {
261
- if (!i && c)
262
- return c.setFocusManagerState({
263
- modal: E,
264
- closeOnFocusOut: M,
265
- open: v,
266
- onOpenChange: F.setOpen,
267
- domReference: a
268
- }), () => {
269
- c.setFocusManagerState(null);
270
- };
271
- }, [i, c, E, v, F, M, a]), U(() => {
272
- if (!(i || !r))
273
- return Oe(r, C), () => {
274
- queueMicrotask(oe);
275
- };
276
- }, [i, r, C]);
277
- const Ee = !i && (E ? !x : !0) && (Z || E);
278
- return /* @__PURE__ */ Ze(b.Fragment, {
279
- children: [Ee && /* @__PURE__ */ xe(Te, {
280
- "data-type": "inside",
281
- ref: Ve,
282
- onFocus: (t) => {
283
- if (E) {
284
- const o = G();
285
- te(o[o.length - 1]);
286
- } else c?.portalNode && (y.current = !1, Le(t, c.portalNode) ? et(a)?.focus() : D(J ?? c.beforeOutsideRef)?.focus());
287
- }
288
- }), h, Ee && /* @__PURE__ */ xe(Te, {
289
- "data-type": "inside",
290
- ref: je,
291
- onFocus: (t) => {
292
- E ? te(G()[0]) : c?.portalNode && (M && (y.current = !0), Le(t, c.portalNode) ? tt(a)?.focus() : D(z ?? c.afterOutsideRef)?.focus());
41
+ },
42
+ onClick(t) {
43
+ if (p === "mousedown-only")
44
+ return;
45
+ const r = s.current;
46
+ if (p === "mousedown" && r) {
47
+ s.current = void 0;
48
+ return;
293
49
  }
294
- })]
295
- });
50
+ if (w(r, !0) && E)
51
+ return;
52
+ const o = e.select("open"), c = T.current.openEvent, m = e.select("domReferenceElement") !== t.currentTarget, i = o && m || !(o && g && (!(c && O) || I(c))), f = k(y, t.nativeEvent, t.currentTarget);
53
+ i && r === "touch" && n > 0 ? a.start(n, () => {
54
+ e.setOpen(!0, f);
55
+ }) : e.setOpen(i, f);
56
+ },
57
+ onKeyDown() {
58
+ s.current = void 0;
59
+ }
60
+ }), [T, p, E, e, O, g, C, a, n]);
61
+ return v.useMemo(() => h ? {
62
+ reference: R
63
+ } : L, [h, R]);
296
64
  }
297
65
  export {
298
- Mt as FloatingFocusManager
66
+ Y as useClick
299
67
  };
package/dist/index116.js CHANGED
@@ -1,7 +1,48 @@
1
- import { isReactVersionAtLeast as r } from "./index200.js";
2
- function n(e) {
3
- return r(19) ? e : e ? "true" : void 0;
1
+ import * as l from "react";
2
+ import { FOCUSABLE_ATTRIBUTE as C, ACTIVE_KEY as s, SELECTED_KEY as E } from "./index245.js";
3
+ function k(e = []) {
4
+ const a = e.map((n) => n?.reference), g = e.map((n) => n?.floating), f = e.map((n) => n?.item), t = e.map((n) => n?.trigger), o = l.useCallback(
5
+ (n) => u(n, e, "reference"),
6
+ // eslint-disable-next-line react-hooks/exhaustive-deps
7
+ a
8
+ ), c = l.useCallback(
9
+ (n) => u(n, e, "floating"),
10
+ // eslint-disable-next-line react-hooks/exhaustive-deps
11
+ g
12
+ ), i = l.useCallback(
13
+ (n) => u(n, e, "item"),
14
+ // eslint-disable-next-line react-hooks/exhaustive-deps
15
+ f
16
+ ), r = l.useCallback(
17
+ (n) => u(n, e, "trigger"),
18
+ // eslint-disable-next-line react-hooks/exhaustive-deps
19
+ t
20
+ );
21
+ return l.useMemo(() => ({
22
+ getReferenceProps: o,
23
+ getFloatingProps: c,
24
+ getItemProps: i,
25
+ getTriggerProps: r
26
+ }), [o, c, i, r]);
27
+ }
28
+ function u(e, a, g) {
29
+ const f = /* @__PURE__ */ new Map(), t = g === "item", o = {};
30
+ g === "floating" && (o.tabIndex = -1, o[C] = "");
31
+ for (const c in e)
32
+ t && e && (c === s || c === E) || (o[c] = e[c]);
33
+ for (let c = 0; c < a.length; c += 1) {
34
+ let i;
35
+ const r = a[c]?.[g];
36
+ typeof r == "function" ? i = e ? r(e) : null : i = r, i && m(o, i, t, f);
37
+ }
38
+ return m(o, e, t, f), o;
39
+ }
40
+ function m(e, a, g, f) {
41
+ for (const t in a) {
42
+ const o = a[t];
43
+ g && (t === s || t === E) || (t.startsWith("on") ? (f.has(t) || f.set(t, []), typeof o == "function" && (f.get(t)?.push(o), e[t] = (...c) => f.get(t)?.map((i) => i(...c)).find((i) => i !== void 0))) : e[t] = o);
44
+ }
4
45
  }
5
46
  export {
6
- n as inertValue
47
+ k as useInteractions
7
48
  };
package/dist/index117.js CHANGED
@@ -1,41 +1,69 @@
1
- import * as i from "react";
2
- import { jsx as a } from "react/jsx-runtime";
3
- const c = /* @__PURE__ */ i.forwardRef(function(r, n) {
4
- const {
5
- cutout: e,
6
- ...p
7
- } = r;
8
- let o;
9
- if (e) {
10
- const t = e?.getBoundingClientRect();
11
- o = `polygon(
12
- 0% 0%,
13
- 100% 0%,
14
- 100% 100%,
15
- 0% 100%,
16
- 0% 0%,
17
- ${t.left}px ${t.top}px,
18
- ${t.left}px ${t.bottom}px,
19
- ${t.right}px ${t.bottom}px,
20
- ${t.right}px ${t.top}px,
21
- ${t.left}px ${t.top}px
22
- )`;
1
+ import { useRefWithInit as r } from "./index94.js";
2
+ function b(n, e, c, t) {
3
+ const l = r(i).current;
4
+ return s(l, n, e, c, t) && o(l, [n, e, c, t]), l.callback;
5
+ }
6
+ function h(n) {
7
+ const e = r(i).current;
8
+ return f(e, n) && o(e, n), e.callback;
9
+ }
10
+ function i() {
11
+ return {
12
+ callback: null,
13
+ cleanup: null,
14
+ refs: []
15
+ };
16
+ }
17
+ function s(n, e, c, t, l) {
18
+ return n.refs[0] !== e || n.refs[1] !== c || n.refs[2] !== t || n.refs[3] !== l;
19
+ }
20
+ function f(n, e) {
21
+ return n.refs.length !== e.length || n.refs.some((c, t) => c !== e[t]);
22
+ }
23
+ function o(n, e) {
24
+ if (n.refs = e, e.every((c) => c == null)) {
25
+ n.callback = null;
26
+ return;
23
27
  }
24
- return /* @__PURE__ */ a("div", {
25
- ref: n,
26
- role: "presentation",
27
- "data-base-ui-inert": "",
28
- ...p,
29
- style: {
30
- position: "fixed",
31
- inset: 0,
32
- userSelect: "none",
33
- WebkitUserSelect: "none",
34
- clipPath: o
28
+ n.callback = (c) => {
29
+ if (n.cleanup && (n.cleanup(), n.cleanup = null), c != null) {
30
+ const t = Array(e.length).fill(null);
31
+ for (let l = 0; l < e.length; l += 1) {
32
+ const u = e[l];
33
+ if (u != null)
34
+ switch (typeof u) {
35
+ case "function": {
36
+ const a = u(c);
37
+ typeof a == "function" && (t[l] = a);
38
+ break;
39
+ }
40
+ case "object": {
41
+ u.current = c;
42
+ break;
43
+ }
44
+ }
45
+ }
46
+ n.cleanup = () => {
47
+ for (let l = 0; l < e.length; l += 1) {
48
+ const u = e[l];
49
+ if (u != null)
50
+ switch (typeof u) {
51
+ case "function": {
52
+ const a = t[l];
53
+ typeof a == "function" ? a() : u(null);
54
+ break;
55
+ }
56
+ case "object": {
57
+ u.current = null;
58
+ break;
59
+ }
60
+ }
61
+ }
62
+ };
35
63
  }
36
- });
37
- });
38
- process.env.NODE_ENV !== "production" && (c.displayName = "InternalBackdrop");
64
+ };
65
+ }
39
66
  export {
40
- c as InternalBackdrop
67
+ b as useMergedRefs,
68
+ h as useMergedRefsN
41
69
  };
package/dist/index118.js CHANGED
@@ -1,128 +1,11 @@
1
- "use client";
2
- import * as t from "react";
3
- import * as h from "react-dom";
4
- import { isNode as M } from "./index164.js";
5
- import { useId as D } from "./index184.js";
6
- import { useIsoLayoutEffect as V } from "./index126.js";
7
- import { FocusGuard as S } from "./index195.js";
8
- import { createChangeEventDetails as w } from "./index107.js";
9
- import { createAttribute as G } from "./index237.js";
10
- import { useRenderElement as _ } from "./index87.js";
11
- import { ownerVisuallyHidden as j } from "./index119.js";
12
- import { jsxs as T, jsx as P } from "react/jsx-runtime";
13
- import { enableFocusInside as I, isOutsideEvent as g, getPreviousTabbable as q, getNextTabbable as A, disableFocusInside as B } from "./index199.js";
14
- import { EMPTY_OBJECT as H } from "./index100.js";
15
- import { focusOut as J } from "./index108.js";
16
- const F = /* @__PURE__ */ t.createContext(null);
17
- process.env.NODE_ENV !== "production" && (F.displayName = "PortalContext");
18
- const Y = () => t.useContext(F), k = G("portal");
19
- function z(N = {}) {
20
- const {
21
- ref: f,
22
- container: s,
23
- componentProps: b = H,
24
- elementProps: E,
25
- elementState: x
26
- } = N, d = D(), m = Y()?.portalNode, [e, c] = t.useState(null), [p, u] = t.useState(null), n = t.useRef(null);
27
- V(() => {
28
- if (s === null) {
29
- n.current && (n.current = null, u(null), c(null));
30
- return;
31
- }
32
- if (d == null)
33
- return;
34
- const a = (s && (M(s) ? s : s.current)) ?? m ?? document.body;
35
- if (a == null) {
36
- n.current && (n.current = null, u(null), c(null));
37
- return;
38
- }
39
- n.current !== a && (n.current = a, u(null), c(a));
40
- }, [s, m, d]);
41
- const i = _("div", b, {
42
- ref: [f, u],
43
- state: x,
44
- props: [{
45
- id: d,
46
- [k]: ""
47
- }, E]
48
- });
49
- return {
50
- portalNode: p,
51
- portalSubtree: e && i ? /* @__PURE__ */ h.createPortal(i, e) : null
52
- };
1
+ import * as n from "react";
2
+ import { isReactVersionAtLeast as o } from "./index205.js";
3
+ function s(t) {
4
+ if (!/* @__PURE__ */ n.isValidElement(t))
5
+ return null;
6
+ const e = t, r = e.props;
7
+ return (o(19) ? r?.ref : e.ref) ?? null;
53
8
  }
54
- const K = /* @__PURE__ */ t.forwardRef(function(f, s) {
55
- const {
56
- children: b,
57
- container: E,
58
- className: x,
59
- render: d,
60
- renderGuards: R,
61
- ...m
62
- } = f, {
63
- portalNode: e,
64
- portalSubtree: c
65
- } = z({
66
- container: E,
67
- ref: s,
68
- componentProps: f,
69
- elementProps: m
70
- }), p = t.useRef(null), u = t.useRef(null), n = t.useRef(null), i = t.useRef(null), [o, a] = t.useState(null), C = o?.modal, O = o?.open, v = typeof R == "boolean" ? R : !!o && !o.modal && o.open && !!e;
71
- t.useEffect(() => {
72
- if (!e || C)
73
- return;
74
- function r(l) {
75
- e && g(l) && (l.type === "focusin" ? I : B)(e);
76
- }
77
- return e.addEventListener("focusin", r, !0), e.addEventListener("focusout", r, !0), () => {
78
- e.removeEventListener("focusin", r, !0), e.removeEventListener("focusout", r, !0);
79
- };
80
- }, [e, C]), t.useEffect(() => {
81
- !e || O || I(e);
82
- }, [O, e]);
83
- const L = t.useMemo(() => ({
84
- beforeOutsideRef: p,
85
- afterOutsideRef: u,
86
- beforeInsideRef: n,
87
- afterInsideRef: i,
88
- portalNode: e,
89
- setFocusManagerState: a
90
- }), [e]);
91
- return /* @__PURE__ */ T(t.Fragment, {
92
- children: [c, /* @__PURE__ */ T(F.Provider, {
93
- value: L,
94
- children: [v && e && /* @__PURE__ */ P(S, {
95
- "data-type": "outside",
96
- ref: p,
97
- onFocus: (r) => {
98
- if (g(r, e))
99
- n.current?.focus();
100
- else {
101
- const l = o ? o.domReference : null;
102
- q(l)?.focus();
103
- }
104
- }
105
- }), v && e && /* @__PURE__ */ P("span", {
106
- "aria-owns": e.id,
107
- style: j
108
- }), e && /* @__PURE__ */ h.createPortal(b, e), v && e && /* @__PURE__ */ P(S, {
109
- "data-type": "outside",
110
- ref: u,
111
- onFocus: (r) => {
112
- if (g(r, e))
113
- i.current?.focus();
114
- else {
115
- const l = o ? o.domReference : null;
116
- A(l)?.focus(), o?.closeOnFocusOut && o?.onOpenChange(!1, w(J, r.nativeEvent));
117
- }
118
- }
119
- })]
120
- })]
121
- });
122
- });
123
- process.env.NODE_ENV !== "production" && (K.displayName = "FloatingPortal");
124
9
  export {
125
- K as FloatingPortal,
126
- z as useFloatingPortalNode,
127
- Y as usePortalContext
10
+ s as getReactElementRef
128
11
  };