@yselimcan/ui 0.0.3 → 0.0.4

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 (208) hide show
  1. package/dist/index100.js +5 -4
  2. package/dist/index101.js +128 -61
  3. package/dist/index102.js +27 -8
  4. package/dist/index103.js +7 -12
  5. package/dist/index104.js +5 -4
  6. package/dist/index105.js +12 -3
  7. package/dist/index106.js +22 -5
  8. package/dist/index108.js +7 -7
  9. package/dist/index109.js +1 -1
  10. package/dist/index110.js +4 -4
  11. package/dist/index113.js +1 -1
  12. package/dist/index115.js +1 -1
  13. package/dist/index118.js +1 -1
  14. package/dist/index119.js +2 -2
  15. package/dist/index121.js +19 -19
  16. package/dist/index122.js +1 -1
  17. package/dist/index124.js +7 -7
  18. package/dist/index126.js +3 -3
  19. package/dist/index127.js +5 -5
  20. package/dist/index128.js +1 -1
  21. package/dist/index129.js +14 -30
  22. package/dist/index130.js +4 -10
  23. package/dist/index131.js +27 -64
  24. package/dist/index132.js +15 -51
  25. package/dist/index133.js +21 -12
  26. package/dist/index134.js +58 -12
  27. package/dist/index135.js +16 -11
  28. package/dist/index136.js +23 -36
  29. package/dist/index137.js +40 -11
  30. package/dist/index138.js +43 -9
  31. package/dist/index139.js +21 -5
  32. package/dist/index140.js +46 -85
  33. package/dist/index141.js +51 -11
  34. package/dist/index142.js +14 -260
  35. package/dist/index143.js +11 -79
  36. package/dist/index144.js +21 -10
  37. package/dist/index145.js +34 -55
  38. package/dist/index146.js +230 -11
  39. package/dist/index147.js +283 -11
  40. package/dist/index148.js +53 -30
  41. package/dist/index149.js +14 -17
  42. package/dist/index150.js +72 -59
  43. package/dist/index151.js +3 -104
  44. package/dist/index152.js +29 -7
  45. package/dist/index153.js +24 -9
  46. package/dist/index154.js +15 -22
  47. package/dist/index155.js +66 -100
  48. package/dist/index156.js +2 -6
  49. package/dist/index157.js +103 -31
  50. package/dist/index158.js +75 -226
  51. package/dist/index159.js +257 -68
  52. package/dist/index160.js +11 -283
  53. package/dist/index161.js +10 -53
  54. package/dist/index162.js +40 -3
  55. package/dist/index163.js +4 -14
  56. package/dist/index164.js +65 -14
  57. package/dist/index165.js +10 -29
  58. package/dist/index166.js +8 -7
  59. package/dist/index167.js +5 -22
  60. package/dist/index168.js +53 -24
  61. package/dist/index169.js +11 -160
  62. package/dist/index170.js +114 -110
  63. package/dist/index171.js +11 -75
  64. package/dist/index172.js +11 -64
  65. package/dist/index173.js +65 -68
  66. package/dist/index174.js +13 -14
  67. package/dist/index175.js +13 -6
  68. package/dist/index176.js +11 -16
  69. package/dist/index177.js +11 -21
  70. package/dist/index178.js +86 -57
  71. package/dist/index179.js +11 -17
  72. package/dist/index18.js +1 -1
  73. package/dist/index180.js +11 -27
  74. package/dist/index181.js +56 -42
  75. package/dist/index182.js +10 -20
  76. package/dist/index183.js +11 -48
  77. package/dist/index184.js +15 -48
  78. package/dist/index185.js +8 -17
  79. package/dist/index186.js +8 -11
  80. package/dist/index187.js +102 -34
  81. package/dist/index188.js +7 -15
  82. package/dist/index189.js +31 -78
  83. package/dist/index190.js +74 -23
  84. package/dist/index191.js +15 -4
  85. package/dist/index192.js +28 -11
  86. package/dist/index193.js +7 -10
  87. package/dist/index194.js +22 -40
  88. package/dist/index195.js +25 -5
  89. package/dist/index196.js +160 -9
  90. package/dist/index197.js +113 -11
  91. package/dist/index198.js +73 -115
  92. package/dist/index199.js +64 -11
  93. package/dist/index200.js +47 -5
  94. package/dist/index201.js +193 -41
  95. package/dist/index202.js +30 -182
  96. package/dist/index203.js +20 -48
  97. package/dist/index204.js +6 -20
  98. package/dist/index205.js +3 -3
  99. package/dist/index206.js +12 -4
  100. package/dist/index207.js +9 -21
  101. package/dist/index208.js +14 -125
  102. package/dist/index209.js +7 -45
  103. package/dist/index210.js +4 -18
  104. package/dist/index211.js +22 -5
  105. package/dist/index212.js +122 -175
  106. package/dist/index213.js +45 -76
  107. package/dist/index214.js +15 -396
  108. package/dist/index215.js +5 -7
  109. package/dist/index216.js +181 -5
  110. package/dist/index217.js +74 -15
  111. package/dist/index218.js +396 -12
  112. package/dist/index219.js +38 -32
  113. package/dist/index220.js +57 -39
  114. package/dist/index221.js +28 -57
  115. package/dist/index222.js +7 -27
  116. package/dist/index223.js +12 -7
  117. package/dist/index224.js +10 -11
  118. package/dist/index225.js +5 -5
  119. package/dist/index226.js +21 -11
  120. package/dist/index227.js +11 -21
  121. package/dist/index228.js +7 -11
  122. package/dist/index229.js +42 -7
  123. package/dist/index230.js +594 -40
  124. package/dist/index231.js +11 -596
  125. package/dist/index232.js +32 -11
  126. package/dist/index233.js +3 -3
  127. package/dist/index234.js +5 -10
  128. package/dist/index235.js +14 -11
  129. package/dist/index236.js +208 -14
  130. package/dist/index237.js +4 -209
  131. package/dist/index238.js +13 -3
  132. package/dist/index239.js +47 -13
  133. package/dist/index24.js +2 -2
  134. package/dist/index240.js +3 -47
  135. package/dist/index241.js +12 -3
  136. package/dist/index242.js +56 -11
  137. package/dist/index243.js +29 -57
  138. package/dist/index244.js +13 -29
  139. package/dist/index245.js +9 -14
  140. package/dist/index246.js +207 -9
  141. package/dist/index247.js +304 -189
  142. package/dist/index248.js +3 -21
  143. package/dist/index249.js +3 -6
  144. package/dist/index250.js +14 -321
  145. package/dist/index251.js +21 -3
  146. package/dist/index252.js +6 -3
  147. package/dist/index253.js +1 -1
  148. package/dist/index28.js +1 -1
  149. package/dist/index32.js +1 -1
  150. package/dist/index33.js +12 -12
  151. package/dist/index34.js +4 -4
  152. package/dist/index35.js +9 -9
  153. package/dist/index36.js +6 -6
  154. package/dist/index37.js +7 -7
  155. package/dist/index38.js +9 -9
  156. package/dist/index39.js +2 -2
  157. package/dist/index40.js +2 -2
  158. package/dist/index41.js +2 -2
  159. package/dist/index42.js +2 -2
  160. package/dist/index43.js +1 -1
  161. package/dist/index45.js +5 -5
  162. package/dist/index46.js +7 -7
  163. package/dist/index47.js +7 -7
  164. package/dist/index48.js +14 -14
  165. package/dist/index49.js +4 -4
  166. package/dist/index50.js +6 -6
  167. package/dist/index52.js +20 -20
  168. package/dist/index53.js +2 -2
  169. package/dist/index54.js +23 -23
  170. package/dist/index55.js +7 -7
  171. package/dist/index56.js +5 -5
  172. package/dist/index57.js +1 -1
  173. package/dist/index58.js +2 -2
  174. package/dist/index59.js +4 -4
  175. package/dist/index60.js +8 -8
  176. package/dist/index61.js +3 -3
  177. package/dist/index62.js +3 -3
  178. package/dist/index63.js +8 -8
  179. package/dist/index64.js +3 -3
  180. package/dist/index65.js +3 -3
  181. package/dist/index66.js +8 -8
  182. package/dist/index67.js +1 -1
  183. package/dist/index69.js +26 -26
  184. package/dist/index70.js +4 -4
  185. package/dist/index71.js +11 -11
  186. package/dist/index72.js +16 -16
  187. package/dist/index73.js +7 -7
  188. package/dist/index74.js +1 -1
  189. package/dist/index75.js +11 -11
  190. package/dist/index76.js +2 -2
  191. package/dist/index77.js +2 -2
  192. package/dist/index78.js +2 -2
  193. package/dist/index79.js +1 -1
  194. package/dist/index80.js +1 -1
  195. package/dist/index81.js +14 -14
  196. package/dist/index82.js +3 -3
  197. package/dist/index83.js +4 -4
  198. package/dist/index86.js +7 -7
  199. package/dist/index88.js +81 -87
  200. package/dist/index89.js +87 -81
  201. package/dist/index94.js +4 -133
  202. package/dist/index95.js +63 -24
  203. package/dist/index96.js +8 -8
  204. package/dist/index97.js +14 -5
  205. package/dist/index98.js +3 -12
  206. package/dist/index99.js +3 -22
  207. package/dist/styles.css +1 -1
  208. package/package.json +1 -1
package/dist/index159.js CHANGED
@@ -1,77 +1,266 @@
1
- import * as r from "react";
2
- import { useId as P } from "./index149.js";
3
- import { useFloatingParentNodeId as S } from "./index145.js";
4
- import { EMPTY_OBJECT as F } from "./index106.js";
5
- import { getFloatingFocusElement as y } from "./index173.js";
6
- const T = /* @__PURE__ */ new Map([["select", "listbox"], ["combobox", "listbox"], ["label", !1]]);
7
- function k(c, I = {}) {
8
- const a = "rootStore" in c ? c.rootStore : c, l = a.useState("open"), u = a.useState("floatingId"), x = a.useState("domReferenceElement"), d = a.useState("floatingElement"), {
9
- enabled: m = !0,
10
- role: o = "dialog"
11
- } = I, M = P(), s = x?.id || M, t = r.useMemo(() => y(d)?.id || u, [d, u]), e = T.get(o) ?? o, p = S() != null, i = r.useMemo(() => e === "tooltip" || o === "label" ? F : {
12
- "aria-haspopup": e === "alertdialog" ? "dialog" : e,
13
- "aria-expanded": "false",
14
- ...e === "listbox" && {
15
- role: "combobox"
16
- },
17
- ...e === "menu" && p && {
18
- role: "menuitem"
19
- },
20
- ...o === "select" && {
21
- "aria-autocomplete": "none"
1
+ "use client";
2
+ import * as a from "react";
3
+ import { getSide as L, getSideAxis as Ee, getAlignment as Me } from "./index212.js";
4
+ import { ownerDocument as qe } from "./index151.js";
5
+ import { useIsoLayoutEffect as q } from "./index104.js";
6
+ import { useValueAsRef as G } from "./index132.js";
7
+ import { useStableCallback as Ge } from "./index102.js";
8
+ import { useDirection as Je } from "./index186.js";
9
+ import { arrow as Ke } from "./index213.js";
10
+ import { hide as Ne } from "./index214.js";
11
+ import { DEFAULT_SIDES as Qe } from "./index215.js";
12
+ import { flip as Ze, offset as et, size as tt, shift as nt, limitShift as ot } from "./index216.js";
13
+ import { useFloating as it } from "./index217.js";
14
+ import { autoUpdate as $e } from "./index218.js";
15
+ function ke(l, f, u) {
16
+ const n = l === "inline-start" || l === "inline-end";
17
+ return {
18
+ top: "top",
19
+ right: n ? u ? "inline-start" : "inline-end" : "right",
20
+ bottom: "bottom",
21
+ left: n ? u ? "inline-end" : "inline-start" : "left"
22
+ }[f];
23
+ }
24
+ function ve(l, f, u) {
25
+ const {
26
+ rects: n,
27
+ placement: s
28
+ } = l;
29
+ return {
30
+ side: ke(f, L(s), u),
31
+ align: Me(s) || "center",
32
+ anchor: {
33
+ width: n.reference.width,
34
+ height: n.reference.height
22
35
  },
23
- ...o === "combobox" && {
24
- "aria-autocomplete": "list"
36
+ positioner: {
37
+ width: n.floating.width,
38
+ height: n.floating.height
25
39
  }
26
- }, [e, p, o]), f = r.useMemo(() => e === "tooltip" || o === "label" ? {
27
- [`aria-${o === "label" ? "labelledby" : "describedby"}`]: l ? t : void 0
28
- } : {
29
- ...i,
30
- "aria-expanded": l ? "true" : "false",
31
- "aria-controls": l ? t : void 0,
32
- ...e === "menu" && {
33
- id: s
34
- }
35
- }, [e, t, l, s, o, i]), b = r.useMemo(() => {
36
- const n = {
37
- id: t,
38
- ...e && {
39
- role: e
40
- }
41
- };
42
- return e === "tooltip" || o === "label" ? n : {
43
- ...n,
44
- ...e === "menu" && {
45
- "aria-labelledby": s
46
- }
47
- };
48
- }, [e, t, s, o]), g = r.useCallback(({
49
- active: n,
50
- selected: R
51
- }) => {
52
- const E = {
53
- role: "option",
54
- ...n && {
55
- id: `${t}-fui-option`
56
- }
40
+ };
41
+ }
42
+ function wt(l) {
43
+ const {
44
+ // Public parameters
45
+ anchor: f,
46
+ positionMethod: u = "absolute",
47
+ side: n = "bottom",
48
+ sideOffset: s = 0,
49
+ align: b = "center",
50
+ alignOffset: H = 0,
51
+ collisionBoundary: J,
52
+ collisionPadding: Ce = 5,
53
+ sticky: T = !1,
54
+ arrowPadding: K = 5,
55
+ disableAnchorTracking: z = !1,
56
+ // Private parameters
57
+ keepMounted: B = !1,
58
+ floatingRootContext: $,
59
+ mounted: r,
60
+ collisionAvoidance: V,
61
+ shiftCrossAxis: w = !1,
62
+ nodeId: Fe,
63
+ adaptiveOrigin: I,
64
+ lazyFlip: N = !1,
65
+ externalTree: Le
66
+ } = l, [Q, Z] = a.useState(null);
67
+ !r && Q !== null && Z(null);
68
+ const A = V.side || "flip", S = V.align || "flip", He = V.fallbackAxisSide || "end", ee = typeof f == "function" ? f : void 0, Te = Ge(ee), te = ee ? Te : f, v = G(f), p = Je() === "rtl", ne = Q || {
69
+ top: "top",
70
+ right: "right",
71
+ bottom: "bottom",
72
+ left: "left",
73
+ "inline-end": p ? "left" : "right",
74
+ "inline-start": p ? "right" : "left"
75
+ }[n], ze = b === "center" ? ne : `${ne}-${b}`;
76
+ let e = Ce;
77
+ const d = 1, oe = n === "bottom" ? d : 0, ie = n === "top" ? d : 0, re = n === "right" ? d : 0, se = n === "left" ? d : 0;
78
+ typeof e == "number" ? e = {
79
+ top: e + oe,
80
+ right: e + se,
81
+ bottom: e + ie,
82
+ left: e + re
83
+ } : e && (e = {
84
+ top: (e.top || 0) + oe,
85
+ right: (e.right || 0) + se,
86
+ bottom: (e.bottom || 0) + ie,
87
+ left: (e.left || 0) + re
88
+ });
89
+ const D = {
90
+ boundary: J === "clipping-ancestors" ? "clippingAncestors" : J,
91
+ padding: e
92
+ }, m = a.useRef(null), U = G(s), Y = G(H), M = [et((t) => {
93
+ const o = ve(t, n, p), c = typeof U.current == "function" ? U.current(o) : U.current, i = typeof Y.current == "function" ? Y.current(o) : Y.current;
94
+ return {
95
+ mainAxis: c,
96
+ crossAxis: i,
97
+ alignmentAxis: i
57
98
  };
58
- switch (o) {
59
- case "select":
60
- case "combobox":
99
+ }, [typeof s != "function" ? s : 0, typeof H != "function" ? H : 0, p, n])], ce = S === "none" && A !== "shift", le = !ce && (T || w || A === "shift"), ae = A === "none" ? null : Ze({
100
+ ...D,
101
+ // Ensure the popup flips if it's been limited by its --available-height and it resizes.
102
+ // Since the size() padding is smaller than the flip() padding, flip() will take precedence.
103
+ padding: {
104
+ top: e.top + d,
105
+ right: e.right + d,
106
+ bottom: e.bottom + d,
107
+ left: e.left + d
108
+ },
109
+ mainAxis: !w && A === "flip",
110
+ crossAxis: S === "flip" ? "alignment" : !1,
111
+ fallbackAxisSideDirection: He
112
+ }), fe = ce ? null : nt((t) => {
113
+ const o = qe(t.elements.floating).documentElement;
114
+ return {
115
+ ...D,
116
+ // Use the Layout Viewport to avoid shifting around when pinch-zooming
117
+ // for context menus.
118
+ rootBoundary: w ? {
119
+ x: 0,
120
+ y: 0,
121
+ width: o.clientWidth,
122
+ height: o.clientHeight
123
+ } : void 0,
124
+ mainAxis: S !== "none",
125
+ crossAxis: le,
126
+ limiter: T || w ? void 0 : ot((c) => {
127
+ if (!m.current)
128
+ return {};
129
+ const {
130
+ width: i,
131
+ height: x
132
+ } = m.current.getBoundingClientRect(), y = Ee(L(c.placement)), F = y === "y" ? i : x, j = y === "y" ? e.left + e.right : e.top + e.bottom;
61
133
  return {
62
- ...E,
63
- "aria-selected": R
134
+ offset: F / 2 + j / 2
64
135
  };
136
+ })
137
+ };
138
+ }, [D, T, w, e, S]);
139
+ A === "shift" || S === "shift" || b === "center" ? M.push(fe, ae) : M.push(ae, fe), M.push(tt({
140
+ ...D,
141
+ apply({
142
+ elements: {
143
+ floating: t
144
+ },
145
+ rects: {
146
+ reference: o
147
+ },
148
+ availableWidth: c,
149
+ availableHeight: i
150
+ }) {
151
+ Object.entries({
152
+ "--available-width": `${c}px`,
153
+ "--available-height": `${i}px`,
154
+ "--anchor-width": `${o.width}px`,
155
+ "--anchor-height": `${o.height}px`
156
+ }).forEach(([x, y]) => {
157
+ t.style.setProperty(x, y);
158
+ });
65
159
  }
66
- return {};
67
- }, [t, o]);
68
- return r.useMemo(() => m ? {
69
- reference: f,
70
- floating: b,
71
- item: g,
72
- trigger: i
73
- } : {}, [m, f, b, i, g]);
160
+ }), Ke(() => ({
161
+ // `transform-origin` calculations rely on an element existing. If the arrow hasn't been set,
162
+ // we'll create a fake element.
163
+ element: m.current || document.createElement("div"),
164
+ padding: K,
165
+ offsetParent: "floating"
166
+ }), [K]), {
167
+ name: "transformOrigin",
168
+ fn(t) {
169
+ const {
170
+ elements: o,
171
+ middlewareData: c,
172
+ placement: i,
173
+ rects: x,
174
+ y
175
+ } = t, F = L(i), j = Ee(F), Oe = m.current, Be = c.arrow?.x || 0, Ve = c.arrow?.y || 0, Ie = Oe?.clientWidth || 0, Ue = Oe?.clientHeight || 0, _ = Be + Ie / 2, Pe = Ve + Ue / 2, Ye = Math.abs(c.shift?.y || 0), We = x.reference.height / 2, E = typeof s == "function" ? s(ve(t, n, p)) : s, Xe = Ye > E, je = {
176
+ top: `${_}px calc(100% + ${E}px)`,
177
+ bottom: `${_}px ${-E}px`,
178
+ left: `calc(100% + ${E}px) ${Pe}px`,
179
+ right: `${-E}px ${Pe}px`
180
+ }[F], _e = `${_}px ${x.reference.y + We - y}px`;
181
+ return o.floating.style.setProperty("--transform-origin", le && j === "y" && Xe ? _e : je), {};
182
+ }
183
+ }, Ne, I), q(() => {
184
+ !r && $ && $.update({
185
+ referenceElement: null,
186
+ floatingElement: null,
187
+ domReferenceElement: null
188
+ });
189
+ }, [r, $]);
190
+ const W = a.useMemo(() => ({
191
+ elementResize: !z && typeof ResizeObserver < "u",
192
+ layoutShift: !z && typeof IntersectionObserver < "u"
193
+ }), [z]), {
194
+ refs: h,
195
+ elements: R,
196
+ x: de,
197
+ y: ue,
198
+ middlewareData: g,
199
+ update: k,
200
+ placement: pe,
201
+ context: me,
202
+ isPositioned: O,
203
+ floatingStyles: he
204
+ } = it({
205
+ rootContext: $,
206
+ placement: ze,
207
+ middleware: M,
208
+ strategy: u,
209
+ whileElementsMounted: B ? void 0 : (...t) => $e(...t, W),
210
+ nodeId: Fe,
211
+ externalTree: Le
212
+ }), {
213
+ sideX: ge,
214
+ sideY: xe
215
+ } = g.adaptiveOrigin || Qe, X = O ? u : "fixed", ye = a.useMemo(() => I ? {
216
+ position: X,
217
+ [ge]: de,
218
+ [xe]: ue
219
+ } : {
220
+ position: X,
221
+ ...he
222
+ }, [I, X, ge, de, xe, ue, he]), C = a.useRef(null);
223
+ q(() => {
224
+ if (!r)
225
+ return;
226
+ const t = v.current, o = typeof t == "function" ? t() : t, i = (De(o) ? o.current : o) || null || null;
227
+ i !== C.current && (h.setPositionReference(i), C.current = i);
228
+ }, [r, h, te, v]), a.useEffect(() => {
229
+ if (!r)
230
+ return;
231
+ const t = v.current;
232
+ typeof t != "function" && De(t) && t.current !== C.current && (h.setPositionReference(t.current), C.current = t.current);
233
+ }, [r, h, te, v]), a.useEffect(() => {
234
+ if (B && r && R.domReference && R.floating)
235
+ return $e(R.domReference, R.floating, k, W);
236
+ }, [B, r, R, k, W]);
237
+ const P = L(pe), be = ke(n, P, p), we = Me(pe) || "center", Ae = !!g.hide?.referenceHidden;
238
+ q(() => {
239
+ N && r && O && Z(P);
240
+ }, [N, r, O, P]);
241
+ const Se = a.useMemo(() => ({
242
+ position: "absolute",
243
+ top: g.arrow?.y,
244
+ left: g.arrow?.x
245
+ }), [g.arrow]), Re = g.arrow?.centerOffset !== 0;
246
+ return a.useMemo(() => ({
247
+ positionerStyles: ye,
248
+ arrowStyles: Se,
249
+ arrowRef: m,
250
+ arrowUncentered: Re,
251
+ side: be,
252
+ align: we,
253
+ physicalSide: P,
254
+ anchorHidden: Ae,
255
+ refs: h,
256
+ context: me,
257
+ isPositioned: O,
258
+ update: k
259
+ }), [ye, Se, m, Re, be, we, P, Ae, h, me, O, k]);
260
+ }
261
+ function De(l) {
262
+ return l != null && "current" in l;
74
263
  }
75
264
  export {
76
- k as useRole
265
+ wt as useAnchorPositioning
77
266
  };
package/dist/index160.js CHANGED
@@ -1,286 +1,14 @@
1
- import * as m from "react";
2
- import { isHTMLElement as be } from "./index94.js";
3
- import { useValueAsRef as A } from "./index176.js";
4
- import { useStableCallback as ae } from "./index95.js";
5
- import { useIsoLayoutEffect as L } from "./index97.js";
6
- import { useFloatingParentNodeId as ze, useFloatingTree as Ge } from "./index145.js";
7
- import { createChangeEventDetails as X } from "./index113.js";
8
- import { enqueueFocus as We } from "./index239.js";
9
- import { ARROW_DOWN as ee, ARROW_LEFT as W, ARROW_RIGHT as _, ARROW_UP as Te } from "./index246.js";
10
- import { isIndexOutOfListBounds as Me, getMinListIndex as fe, getMaxListIndex as Pe, createGridCellMap as _e, isListIndexDisabled as de, getGridNavigatedIndex as qe, getGridCellIndexOfCorner as He, getGridCellIndices as $e, findNonDisabledListIndex as Y } from "./index247.js";
11
- import { getFloatingFocusElement as Be, isTypeableCombobox as Ue, activeElement as ve, getDocument as je, contains as Ce, getTarget as Je } from "./index173.js";
12
- import { stopEvent as T, isVirtualClick as Qe, isVirtualPointerEvent as Xe } from "./index222.js";
13
- import { listNavigation as me, focusOut as Ye } from "./index114.js";
14
- const Ze = "Escape";
15
- function re(o, p, c) {
16
- switch (o) {
17
- case "vertical":
18
- return p;
19
- case "horizontal":
20
- return c;
21
- default:
22
- return p || c;
23
- }
24
- }
25
- function Z(o, p) {
26
- return re(p, o === Te || o === ee, o === W || o === _);
27
- }
28
- function pe(o, p, c) {
29
- return re(p, o === ee, c ? o === W : o === _) || o === "Enter" || o === " " || o === "";
30
- }
31
- function er(o, p, c) {
32
- return re(p, c ? o === W : o === _, o === ee);
33
- }
34
- function rr(o, p, c, s) {
35
- const g = c ? o === _ : o === W, O = o === Te;
36
- return p === "both" || p === "horizontal" && s && s > 1 ? o === Ze : re(p, g, O);
37
- }
38
- function pr(o, p) {
39
- const c = "rootStore" in o ? o.rootStore : o, s = c.useState("open"), g = c.useState("floatingElement"), O = c.useState("domReferenceElement"), ge = c.context.dataRef, {
40
- listRef: n,
41
- activeIndex: y,
42
- onNavigate: Se = () => {
43
- },
44
- enabled: E = !0,
45
- selectedIndex: N = null,
46
- allowEscape: te = !1,
47
- loopFocus: q = !1,
48
- nested: b = !1,
49
- rtl: x = !1,
50
- virtual: f = !1,
51
- focusItemOnOpen: M = "auto",
52
- focusItemOnHover: ne = !0,
53
- openOnArrowKeyDown: oe = !0,
54
- disabledIndices: R = void 0,
55
- orientation: d = "vertical",
56
- parentOrientation: Ie,
57
- cols: S = 1,
58
- scrollItemIntoView: Fe = !0,
59
- itemSizes: Ae,
60
- dense: Le = !1,
61
- id: Re,
62
- resetOnPointerLeave: Ne = !0,
63
- externalTree: ke
64
- } = p;
65
- process.env.NODE_ENV !== "production" && (te && (q || console.warn("`useListNavigation` looping must be enabled to allow escaping."), f || console.warn("`useListNavigation` must be virtual to allow escaping.")), d === "vertical" && S > 1 && console.warn("In grid list navigation mode (`cols` > 1), the `orientation` should", 'be either "horizontal" or "both".'));
66
- const De = Be(g), k = A(De), H = ze(), P = Ge(ke);
67
- L(() => {
68
- ge.current.orientation = d;
69
- }, [ge, d]);
70
- const ie = Ue(O), v = m.useRef(M), t = m.useRef(N ?? -1), C = m.useRef(null), F = m.useRef(!0), l = ae((e) => {
71
- Se(t.current === -1 ? null : t.current, e);
72
- }), he = m.useRef(l), D = m.useRef(!!g), Oe = m.useRef(s), h = m.useRef(!1), $ = m.useRef(!1), ce = A(R), B = A(s), Ke = A(Fe), K = A(N), xe = A(Ne), ue = ae(() => {
73
- function e(a) {
74
- f ? P?.events.emit("virtualfocus", a) : We(a, {
75
- sync: h.current,
76
- preventScroll: !0
77
- });
78
- }
79
- const i = n.current[t.current], r = $.current;
80
- i && e(i), (h.current ? (a) => a() : requestAnimationFrame)(() => {
81
- const a = n.current[t.current] || i;
82
- if (!a)
83
- return;
84
- i || e(a);
85
- const I = Ke.current;
86
- I && // eslint-disable-next-line @typescript-eslint/no-use-before-define
87
- se && (r || !F.current) && a.scrollIntoView?.(typeof I == "boolean" ? {
88
- block: "nearest",
89
- inline: "nearest"
90
- } : I);
91
- });
92
- });
93
- L(() => {
94
- E && (s && g ? (t.current = N ?? -1, v.current && N != null && ($.current = !0, l())) : D.current && (t.current = -1, he.current()));
95
- }, [E, s, g, N, l]), L(() => {
96
- if (E) {
97
- if (!s) {
98
- h.current = !1;
99
- return;
100
- }
101
- if (g)
102
- if (y == null) {
103
- if (h.current = !1, K.current != null)
104
- return;
105
- if (D.current && (t.current = -1, ue()), (!Oe.current || !D.current) && v.current && (C.current != null || v.current === !0 && C.current == null)) {
106
- let e = 0;
107
- const i = () => {
108
- n.current[0] == null ? (e < 2 && (e ? requestAnimationFrame : queueMicrotask)(i), e += 1) : (t.current = C.current == null || pe(C.current, d, x) || b ? fe(n) : Pe(n), C.current = null, l());
109
- };
110
- i();
111
- }
112
- } else Me(n, y) || (t.current = y, ue(), $.current = !1);
113
- }
114
- }, [E, s, g, y, K, b, n, d, x, l, ue, ce]), L(() => {
115
- if (!E || g || !P || f || !D.current)
116
- return;
117
- const e = P.nodesRef.current, i = e.find((a) => a.id === H)?.context?.elements.floating, r = ve(je(g)), u = e.some((a) => a.context && Ce(a.context.elements.floating, r));
118
- i && !u && F.current && i.focus({
119
- preventScroll: !0
120
- });
121
- }, [E, g, P, H, f]), L(() => {
122
- he.current = l, Oe.current = s, D.current = !!g;
123
- }), L(() => {
124
- s || (C.current = null, v.current = M);
125
- }, [s, M]);
126
- const Ee = y != null, se = m.useMemo(() => {
127
- function e(r) {
128
- if (!B.current)
129
- return;
130
- const u = n.current.indexOf(r.currentTarget);
131
- u !== -1 && t.current !== u && (t.current = u, l(r));
132
- }
133
- return {
134
- onFocus(r) {
135
- h.current = !0, e(r);
136
- },
137
- onClick: ({
138
- currentTarget: r
139
- }) => r.focus({
140
- preventScroll: !0
141
- }),
142
- // Safari
143
- onMouseMove(r) {
144
- h.current = !0, $.current = !1, ne && e(r);
145
- },
146
- onPointerLeave(r) {
147
- if (!B.current || !F.current || r.pointerType === "touch")
148
- return;
149
- h.current = !0;
150
- const u = r.relatedTarget;
151
- !ne || n.current.includes(u) || xe.current && (t.current = -1, l(r), f || k.current?.focus({
152
- preventScroll: !0
153
- }));
154
- }
155
- };
156
- }, [B, k, ne, n, l, xe, f]), U = m.useCallback(() => Ie ?? P?.nodesRef.current.find((e) => e.id === H)?.context?.dataRef?.current.orientation, [H, P, Ie]), V = ae((e) => {
157
- if (F.current = !1, h.current = !0, e.which === 229 || !B.current && e.currentTarget === k.current)
158
- return;
159
- if (b && rr(e.key, d, x, S)) {
160
- Z(e.key, U()) || T(e), c.setOpen(!1, X(me, e.nativeEvent)), be(O) && (f ? P?.events.emit("virtualfocus", O) : O.focus());
161
- return;
162
- }
163
- const i = t.current, r = fe(n, R), u = Pe(n, R);
164
- if (ie || (e.key === "Home" && (T(e), t.current = r, l(e)), e.key === "End" && (T(e), t.current = u, l(e))), S > 1) {
165
- const a = Ae || Array.from({
166
- length: n.current.length
167
- }, () => ({
168
- width: 1,
169
- height: 1
170
- })), I = _e(a, S, Le), z = I.findIndex((w) => w != null && !de(n, w, R)), le = I.reduce((w, G, Ve) => G != null && !de(n, G, R) ? Ve : w, -1), Q = I[qe({
171
- current: I.map((w) => w != null ? n.current[w] : null)
172
- }, {
173
- event: e,
174
- orientation: d,
175
- loopFocus: q,
176
- rtl: x,
177
- cols: S,
178
- // treat undefined (empty grid spaces) as disabled indices so we
179
- // don't end up in them
180
- disabledIndices: $e([...(typeof R != "function" ? R : null) || n.current.map((w, G) => de(n, G, R) ? G : void 0), void 0], I),
181
- minIndex: z,
182
- maxIndex: le,
183
- prevIndex: He(
184
- t.current > u ? r : t.current,
185
- a,
186
- I,
187
- S,
188
- // use a corner matching the edge closest to the direction
189
- // we're moving in so we don't end up in the same item. Prefer
190
- // top/left over bottom/right.
191
- // eslint-disable-next-line no-nested-ternary
192
- e.key === ee ? "bl" : e.key === (x ? W : _) ? "tr" : "tl"
193
- ),
194
- stopEvent: !0
195
- })];
196
- if (Q != null && (t.current = Q, l(e)), d === "both")
197
- return;
198
- }
199
- if (Z(e.key, d)) {
200
- if (T(e), s && !f && ve(e.currentTarget.ownerDocument) === e.currentTarget) {
201
- t.current = pe(e.key, d, x) ? r : u, l(e);
202
- return;
203
- }
204
- pe(e.key, d, x) ? q ? i >= u ? te && i !== n.current.length ? t.current = -1 : (h.current = !1, t.current = r) : t.current = Y(n, {
205
- startingIndex: i,
206
- disabledIndices: R
207
- }) : t.current = Math.min(u, Y(n, {
208
- startingIndex: i,
209
- disabledIndices: R
210
- })) : q ? i <= r ? te && i !== -1 ? t.current = n.current.length : (h.current = !1, t.current = u) : t.current = Y(n, {
211
- startingIndex: i,
212
- decrement: !0,
213
- disabledIndices: R
214
- }) : t.current = Math.max(r, Y(n, {
215
- startingIndex: i,
216
- decrement: !0,
217
- disabledIndices: R
218
- })), Me(n, t.current) && (t.current = -1), l(e);
219
- }
220
- }), j = m.useMemo(() => f && s && Ee && {
221
- "aria-activedescendant": `${Re}-${y}`
222
- }, [f, s, Ee, Re, y]), we = m.useMemo(() => ({
223
- "aria-orientation": d === "both" ? void 0 : d,
224
- ...ie ? {} : j,
225
- onKeyDown(e) {
226
- if (e.key === "Tab" && e.shiftKey && s && !f) {
227
- const i = Je(e.nativeEvent);
228
- if (i && !Ce(k.current, i))
229
- return;
230
- T(e), c.setOpen(!1, X(Ye, e.nativeEvent)), be(O) && O.focus();
231
- return;
232
- }
233
- V(e);
234
- },
235
- onPointerMove() {
236
- F.current = !0;
237
- }
238
- }), [j, V, k, d, ie, c, s, f, O]), J = m.useMemo(() => {
239
- function e(r) {
240
- M === "auto" && Qe(r.nativeEvent) && (v.current = !f);
241
- }
242
- function i(r) {
243
- v.current = M, M === "auto" && Xe(r.nativeEvent) && (v.current = !0);
244
- }
245
- return {
246
- onKeyDown(r) {
247
- const u = c.select("open");
248
- F.current = !1;
249
- const a = r.key.startsWith("Arrow"), I = er(r.key, U(), x), z = Z(r.key, d), le = (b ? I : z) || r.key === "Enter" || r.key.trim() === "";
250
- if (f && u)
251
- return V(r);
252
- if (!(!u && !oe && a)) {
253
- if (le) {
254
- const Q = Z(r.key, U());
255
- C.current = b && Q ? null : r.key;
256
- }
257
- if (b) {
258
- I && (T(r), u ? (t.current = fe(n, ce.current), l(r)) : c.setOpen(!0, X(me, r.nativeEvent, r.currentTarget)));
259
- return;
260
- }
261
- z && (K.current != null && (t.current = K.current), T(r), !u && oe ? c.setOpen(!0, X(me, r.nativeEvent, r.currentTarget)) : V(r), u && l(r));
262
- }
263
- },
264
- onFocus(r) {
265
- c.select("open") && !f && (t.current = -1, l(r));
266
- },
267
- onPointerDown: i,
268
- onPointerEnter: i,
269
- onMouseDown: e,
270
- onClick: e
271
- };
272
- }, [V, ce, M, n, b, l, c, oe, d, U, x, K, f]), ye = m.useMemo(() => ({
273
- ...j,
274
- ...J
275
- }), [j, J]);
276
- return m.useMemo(() => E ? {
277
- reference: ye,
278
- floating: we,
279
- item: se,
280
- trigger: J
281
- } : {}, [E, ye, we, J, se]);
1
+ import n from "./index94.js";
2
+ import * as t from "react";
3
+ const o = /* @__PURE__ */ t.createContext(void 0);
4
+ process.env.NODE_ENV !== "production" && (o.displayName = "SelectPositionerContext");
5
+ function i() {
6
+ const e = t.useContext(o);
7
+ if (!e)
8
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: SelectPositionerContext is missing. SelectPositioner parts must be placed within <Select.Positioner>." : n(59));
9
+ return e;
282
10
  }
283
11
  export {
284
- Ze as ESCAPE,
285
- pr as useListNavigation
12
+ o as SelectPositionerContext,
13
+ i as useSelectPositionerContext
286
14
  };