@yselimcan/ui 0.0.1 → 0.0.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 (267) hide show
  1. package/dist/index.d.ts +231 -1
  2. package/dist/index.js +100 -15331
  3. package/dist/index10.js +137 -0
  4. package/dist/index100.js +7 -0
  5. package/dist/index101.js +69 -0
  6. package/dist/index102.js +11 -0
  7. package/dist/index103.js +16 -0
  8. package/dist/index104.js +6 -0
  9. package/dist/index105.js +6 -0
  10. package/dist/index106.js +8 -0
  11. package/dist/index107.js +10 -0
  12. package/dist/index108.js +90 -0
  13. package/dist/index109.js +15 -0
  14. package/dist/index11.js +21 -0
  15. package/dist/index110.js +65 -0
  16. package/dist/index111.js +40 -0
  17. package/dist/index112.js +16 -0
  18. package/dist/index113.js +35 -0
  19. package/dist/index114.js +21 -0
  20. package/dist/index115.js +8 -0
  21. package/dist/index116.js +6 -0
  22. package/dist/index117.js +7 -0
  23. package/dist/index118.js +14 -0
  24. package/dist/index119.js +21 -0
  25. package/dist/index12.js +20 -0
  26. package/dist/index120.js +15 -0
  27. package/dist/index121.js +299 -0
  28. package/dist/index122.js +7 -0
  29. package/dist/index123.js +41 -0
  30. package/dist/index124.js +128 -0
  31. package/dist/index125.js +23 -0
  32. package/dist/index126.js +79 -0
  33. package/dist/index127.js +67 -0
  34. package/dist/index128.js +48 -0
  35. package/dist/index129.js +32 -0
  36. package/dist/index13.js +206 -0
  37. package/dist/index130.js +14 -0
  38. package/dist/index131.js +69 -0
  39. package/dist/index132.js +56 -0
  40. package/dist/index133.js +15 -0
  41. package/dist/index134.js +15 -0
  42. package/dist/index135.js +15 -0
  43. package/dist/index136.js +43 -0
  44. package/dist/index137.js +14 -0
  45. package/dist/index138.js +11 -0
  46. package/dist/index139.js +8 -0
  47. package/dist/index14.js +24 -0
  48. package/dist/index140.js +90 -0
  49. package/dist/index141.js +14 -0
  50. package/dist/index142.js +266 -0
  51. package/dist/index143.js +82 -0
  52. package/dist/index144.js +14 -0
  53. package/dist/index145.js +59 -0
  54. package/dist/index146.js +14 -0
  55. package/dist/index147.js +14 -0
  56. package/dist/index148.js +33 -0
  57. package/dist/index149.js +21 -0
  58. package/dist/index15.js +19 -0
  59. package/dist/index150.js +69 -0
  60. package/dist/index151.js +107 -0
  61. package/dist/index152.js +11 -0
  62. package/dist/index153.js +11 -0
  63. package/dist/index154.js +25 -0
  64. package/dist/index155.js +106 -0
  65. package/dist/index156.js +10 -0
  66. package/dist/index157.js +35 -0
  67. package/dist/index158.js +233 -0
  68. package/dist/index159.js +77 -0
  69. package/dist/index16.js +8 -0
  70. package/dist/index160.js +286 -0
  71. package/dist/index161.js +56 -0
  72. package/dist/index162.js +6 -0
  73. package/dist/index163.js +17 -0
  74. package/dist/index164.js +18 -0
  75. package/dist/index165.js +31 -0
  76. package/dist/index166.js +10 -0
  77. package/dist/index167.js +25 -0
  78. package/dist/index168.js +27 -0
  79. package/dist/index169.js +163 -0
  80. package/dist/index17.js +46 -0
  81. package/dist/index170.js +116 -0
  82. package/dist/index171.js +78 -0
  83. package/dist/index172.js +67 -0
  84. package/dist/index173.js +72 -0
  85. package/dist/index174.js +16 -0
  86. package/dist/index175.js +8 -0
  87. package/dist/index176.js +20 -0
  88. package/dist/index177.js +24 -0
  89. package/dist/index178.js +61 -0
  90. package/dist/index179.js +20 -0
  91. package/dist/index18.js +41 -0
  92. package/dist/index180.js +30 -0
  93. package/dist/index181.js +45 -0
  94. package/dist/index182.js +24 -0
  95. package/dist/index183.js +51 -0
  96. package/dist/index184.js +54 -0
  97. package/dist/index185.js +20 -0
  98. package/dist/index186.js +14 -0
  99. package/dist/index187.js +38 -0
  100. package/dist/index188.js +18 -0
  101. package/dist/index189.js +82 -0
  102. package/dist/index19.js +80 -0
  103. package/dist/index190.js +26 -0
  104. package/dist/index191.js +6 -0
  105. package/dist/index192.js +14 -0
  106. package/dist/index193.js +13 -0
  107. package/dist/index194.js +43 -0
  108. package/dist/index195.js +7 -0
  109. package/dist/index196.js +12 -0
  110. package/dist/index197.js +14 -0
  111. package/dist/index198.js +120 -0
  112. package/dist/index199.js +14 -0
  113. package/dist/index20.js +25 -0
  114. package/dist/index200.js +8 -0
  115. package/dist/index201.js +50 -0
  116. package/dist/index202.js +202 -0
  117. package/dist/index203.js +50 -0
  118. package/dist/index204.js +22 -0
  119. package/dist/index205.js +29 -0
  120. package/dist/index206.js +6 -0
  121. package/dist/index207.js +24 -0
  122. package/dist/index208.js +130 -0
  123. package/dist/index209.js +47 -0
  124. package/dist/index21.js +40 -0
  125. package/dist/index210.js +20 -0
  126. package/dist/index211.js +7 -0
  127. package/dist/index212.js +183 -0
  128. package/dist/index213.js +78 -0
  129. package/dist/index214.js +401 -0
  130. package/dist/index215.js +9 -0
  131. package/dist/index216.js +7 -0
  132. package/dist/index217.js +19 -0
  133. package/dist/index218.js +17 -0
  134. package/dist/index219.js +35 -0
  135. package/dist/index22.js +31 -0
  136. package/dist/index220.js +41 -0
  137. package/dist/index221.js +59 -0
  138. package/dist/index222.js +30 -0
  139. package/dist/index223.js +10 -0
  140. package/dist/index224.js +15 -0
  141. package/dist/index225.js +14 -0
  142. package/dist/index226.js +14 -0
  143. package/dist/index227.js +24 -0
  144. package/dist/index228.js +14 -0
  145. package/dist/index229.js +10 -0
  146. package/dist/index23.js +25 -0
  147. package/dist/index230.js +45 -0
  148. package/dist/index231.js +599 -0
  149. package/dist/index232.js +14 -0
  150. package/dist/index233.js +6 -0
  151. package/dist/index234.js +12 -0
  152. package/dist/index235.js +14 -0
  153. package/dist/index236.js +17 -0
  154. package/dist/index237.js +211 -0
  155. package/dist/index238.js +6 -0
  156. package/dist/index239.js +16 -0
  157. package/dist/index24.js +56 -0
  158. package/dist/index240.js +50 -0
  159. package/dist/index241.js +6 -0
  160. package/dist/index242.js +15 -0
  161. package/dist/index243.js +60 -0
  162. package/dist/index244.js +32 -0
  163. package/dist/index245.js +16 -0
  164. package/dist/index246.js +11 -0
  165. package/dist/index247.js +209 -0
  166. package/dist/index248.js +23 -0
  167. package/dist/index249.js +8 -0
  168. package/dist/index25.js +35 -0
  169. package/dist/index250.js +324 -0
  170. package/dist/index251.js +5 -0
  171. package/dist/index252.js +5 -0
  172. package/dist/index253.js +489 -0
  173. package/dist/index254.js +10 -0
  174. package/dist/index255.js +4 -0
  175. package/dist/index256.js +46 -0
  176. package/dist/index257.js +58 -0
  177. package/dist/index258.js +10 -0
  178. package/dist/index259.js +4 -0
  179. package/dist/index26.js +7 -0
  180. package/dist/index260.js +57 -0
  181. package/dist/index261.js +58 -0
  182. package/dist/index262.js +4 -0
  183. package/dist/index263.js +4 -0
  184. package/dist/index264.js +4 -0
  185. package/dist/index265.js +4 -0
  186. package/dist/index27.js +82 -0
  187. package/dist/index28.js +32 -0
  188. package/dist/index29.js +6 -0
  189. package/dist/index3.js +181 -0
  190. package/dist/index30.js +9 -0
  191. package/dist/index31.js +6 -0
  192. package/dist/index32.js +23 -0
  193. package/dist/index33.js +207 -0
  194. package/dist/index34.js +25 -0
  195. package/dist/index35.js +102 -0
  196. package/dist/index36.js +69 -0
  197. package/dist/index37.js +66 -0
  198. package/dist/index38.js +113 -0
  199. package/dist/index39.js +53 -0
  200. package/dist/index4.js +47 -0
  201. package/dist/index40.js +35 -0
  202. package/dist/index41.js +28 -0
  203. package/dist/index42.js +18 -0
  204. package/dist/index43.js +27 -0
  205. package/dist/index44.js +25 -0
  206. package/dist/index45.js +36 -0
  207. package/dist/index46.js +78 -0
  208. package/dist/index47.js +65 -0
  209. package/dist/index48.js +128 -0
  210. package/dist/index49.js +19 -0
  211. package/dist/index5.js +52 -0
  212. package/dist/index50.js +86 -0
  213. package/dist/index51.js +6 -0
  214. package/dist/index52.js +268 -0
  215. package/dist/index53.js +25 -0
  216. package/dist/index54.js +207 -0
  217. package/dist/index55.js +146 -0
  218. package/dist/index56.js +88 -0
  219. package/dist/index57.js +29 -0
  220. package/dist/index58.js +30 -0
  221. package/dist/index59.js +48 -0
  222. package/dist/index6.js +93 -0
  223. package/dist/index60.js +79 -0
  224. package/dist/index61.js +45 -0
  225. package/dist/index62.js +46 -0
  226. package/dist/index63.js +76 -0
  227. package/dist/index64.js +45 -0
  228. package/dist/index65.js +22 -0
  229. package/dist/index66.js +101 -0
  230. package/dist/index67.js +14 -0
  231. package/dist/index68.js +6 -0
  232. package/dist/index69.js +321 -0
  233. package/dist/index7.js +294 -0
  234. package/dist/index70.js +24 -0
  235. package/dist/index71.js +143 -0
  236. package/dist/index72.js +200 -0
  237. package/dist/index73.js +43 -0
  238. package/dist/index74.js +29 -0
  239. package/dist/index75.js +148 -0
  240. package/dist/index76.js +32 -0
  241. package/dist/index77.js +53 -0
  242. package/dist/index78.js +28 -0
  243. package/dist/index79.js +15 -0
  244. package/dist/index8.js +264 -0
  245. package/dist/index80.js +15 -0
  246. package/dist/index81.js +135 -0
  247. package/dist/index82.js +31 -0
  248. package/dist/index83.js +35 -0
  249. package/dist/index84.js +17 -0
  250. package/dist/index85.js +2765 -0
  251. package/dist/index86.js +57 -0
  252. package/dist/index87.js +14 -0
  253. package/dist/index88.js +98 -0
  254. package/dist/index89.js +92 -0
  255. package/dist/index9.js +197 -0
  256. package/dist/index90.js +21 -0
  257. package/dist/index91.js +18 -0
  258. package/dist/index92.js +35 -0
  259. package/dist/index93.js +14 -0
  260. package/dist/index94.js +136 -0
  261. package/dist/index95.js +30 -0
  262. package/dist/index96.js +11 -0
  263. package/dist/index97.js +7 -0
  264. package/dist/index98.js +15 -0
  265. package/dist/index99.js +25 -0
  266. package/dist/styles.css +1 -1
  267. package/package.json +3 -2
@@ -0,0 +1,107 @@
1
+ "use client";
2
+ import { getWindow as u, isOverflowElement as Y } from "./index94.js";
3
+ import { isIOS as W, isWebKit as E } from "./index194.js";
4
+ import { ownerDocument as n } from "./index162.js";
5
+ import { useIsoLayoutEffect as T } from "./index97.js";
6
+ import { Timeout as k } from "./index148.js";
7
+ import { AnimationFrame as z } from "./index150.js";
8
+ import { NOOP as H } from "./index106.js";
9
+ let L = {}, C = {}, O = "";
10
+ function F(r) {
11
+ if (typeof document > "u")
12
+ return !1;
13
+ const o = n(r);
14
+ return u(o).innerWidth - o.documentElement.clientWidth > 0;
15
+ }
16
+ function j(r) {
17
+ const o = n(r), t = o.documentElement, e = o.body, l = Y(t) ? t : e, s = l.style.overflow;
18
+ return l.style.overflow = "hidden", () => {
19
+ l.style.overflow = s;
20
+ };
21
+ }
22
+ function I(r) {
23
+ const o = n(r), t = o.documentElement, e = o.body, l = u(t);
24
+ let s = 0, c = 0;
25
+ const h = z.create(), f = typeof CSS < "u" && CSS.supports?.("scrollbar-gutter", "stable");
26
+ if (E && (l.visualViewport?.scale ?? 1) !== 1)
27
+ return () => {
28
+ };
29
+ function d() {
30
+ const a = l.getComputedStyle(t), i = l.getComputedStyle(e), y = (a.scrollbarGutter || "").includes("both-edges") ? "stable both-edges" : "stable";
31
+ s = t.scrollTop, c = t.scrollLeft, L = {
32
+ scrollbarGutter: t.style.scrollbarGutter,
33
+ overflowY: t.style.overflowY,
34
+ overflowX: t.style.overflowX
35
+ }, O = t.style.scrollBehavior, C = {
36
+ position: e.style.position,
37
+ height: e.style.height,
38
+ width: e.style.width,
39
+ boxSizing: e.style.boxSizing,
40
+ overflowY: e.style.overflowY,
41
+ overflowX: e.style.overflowX,
42
+ scrollBehavior: e.style.scrollBehavior
43
+ };
44
+ const X = t.scrollHeight > t.clientHeight, B = t.scrollWidth > t.clientWidth, x = a.overflowY === "scroll" || i.overflowY === "scroll", G = a.overflowX === "scroll" || i.overflowX === "scroll", b = Math.max(0, l.innerWidth - t.clientWidth), w = Math.max(0, l.innerHeight - t.clientHeight), p = parseFloat(i.marginTop) + parseFloat(i.marginBottom), g = parseFloat(i.marginLeft) + parseFloat(i.marginRight), S = Y(t) ? t : e;
45
+ if (f) {
46
+ t.style.scrollbarGutter = y, S.style.overflowY = "hidden", S.style.overflowX = "hidden";
47
+ return;
48
+ }
49
+ Object.assign(t.style, {
50
+ scrollbarGutter: y,
51
+ overflowY: "hidden",
52
+ overflowX: "hidden"
53
+ }), (X || x) && (t.style.overflowY = "scroll"), (B || G) && (t.style.overflowX = "scroll"), Object.assign(e.style, {
54
+ position: "relative",
55
+ height: p || w ? `calc(100dvh - ${p + w}px)` : "100dvh",
56
+ width: g || b ? `calc(100vw - ${g + b}px)` : "100vw",
57
+ boxSizing: "border-box",
58
+ overflow: "hidden",
59
+ scrollBehavior: "unset"
60
+ }), e.scrollTop = s, e.scrollLeft = c, t.setAttribute("data-base-ui-scroll-locked", ""), t.style.scrollBehavior = "unset";
61
+ }
62
+ function m() {
63
+ Object.assign(t.style, L), Object.assign(e.style, C), f || (t.scrollTop = s, t.scrollLeft = c, t.removeAttribute("data-base-ui-scroll-locked"), t.style.scrollBehavior = O);
64
+ }
65
+ function v() {
66
+ m(), h.request(d);
67
+ }
68
+ return d(), l.addEventListener("resize", v), () => {
69
+ h.cancel(), m(), typeof l.removeEventListener == "function" && l.removeEventListener("resize", v);
70
+ };
71
+ }
72
+ class R {
73
+ lockCount = 0;
74
+ restore = null;
75
+ timeoutLock = k.create();
76
+ timeoutUnlock = k.create();
77
+ acquire(o) {
78
+ return this.lockCount += 1, this.lockCount === 1 && this.restore === null && this.timeoutLock.start(0, () => this.lock(o)), this.release;
79
+ }
80
+ release = () => {
81
+ this.lockCount -= 1, this.lockCount === 0 && this.restore && this.timeoutUnlock.start(0, this.unlock);
82
+ };
83
+ unlock = () => {
84
+ this.lockCount === 0 && this.restore && (this.restore?.(), this.restore = null);
85
+ };
86
+ lock(o) {
87
+ if (this.lockCount === 0 || this.restore !== null)
88
+ return;
89
+ const e = n(o).documentElement, l = u(e).getComputedStyle(e).overflowY;
90
+ if (l === "hidden" || l === "clip") {
91
+ this.restore = H;
92
+ return;
93
+ }
94
+ const s = W || !F(o);
95
+ this.restore = s ? j(o) : I(o);
96
+ }
97
+ }
98
+ const V = new R();
99
+ function _(r = !0, o = null) {
100
+ T(() => {
101
+ if (r)
102
+ return V.acquire(o);
103
+ }, [r, o]);
104
+ }
105
+ export {
106
+ _ as useScrollLock
107
+ };
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import * as t from "react";
3
+ const e = /* @__PURE__ */ t.createContext(null);
4
+ process.env.NODE_ENV !== "production" && (e.displayName = "MenubarContext");
5
+ function r(n) {
6
+ return t.useContext(e);
7
+ }
8
+ export {
9
+ e as MenubarContext,
10
+ r as useMenubarContext
11
+ };
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import * as t from "react";
3
+ const e = /* @__PURE__ */ t.createContext(void 0);
4
+ process.env.NODE_ENV !== "production" && (e.displayName = "DirectionContext");
5
+ function o() {
6
+ return t.useContext(e)?.direction ?? "ltr";
7
+ }
8
+ export {
9
+ e as DirectionContext,
10
+ o as useDirection
11
+ };
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import * as e from "react";
3
+ import { useStableCallback as a } from "./index95.js";
4
+ import { useEnhancedClickHandler as u } from "./index217.js";
5
+ function f(s) {
6
+ const [n, t] = e.useState(null), c = a((p, i) => {
7
+ s || t(i);
8
+ }), o = e.useCallback(() => {
9
+ t(null);
10
+ }, []), {
11
+ onClick: r,
12
+ onPointerDown: l
13
+ } = u(c);
14
+ return e.useMemo(() => ({
15
+ openMethod: n,
16
+ reset: o,
17
+ triggerProps: {
18
+ onClick: r,
19
+ onPointerDown: l
20
+ }
21
+ }), [n, o, r, l]);
22
+ }
23
+ export {
24
+ f as useOpenInteractionType
25
+ };
@@ -0,0 +1,106 @@
1
+ import * as o from "react";
2
+ import { EMPTY_OBJECT as s } from "./index106.js";
3
+ import { useRefWithInit as l } from "./index107.js";
4
+ import { FloatingTreeStore as u } from "./index163.js";
5
+ import { ReactStore as p } from "./index202.js";
6
+ import { PopupTriggerMap as d } from "./index203.js";
7
+ import { createSelector as t } from "./index204.js";
8
+ import { popupStoreSelectors as f, createInitialPopupStoreState as c } from "./index201.js";
9
+ const m = {
10
+ ...f,
11
+ disabled: t((e) => e.parent.type === "menubar" && e.parent.context.disabled || e.disabled),
12
+ modal: t((e) => (e.parent.type === void 0 || e.parent.type === "context-menu") && (e.modal ?? !0)),
13
+ allowMouseEnter: t((e) => e.parent.type === "menu" ? e.parent.store.select("allowMouseEnter") : e.allowMouseEnter),
14
+ stickIfOpen: t((e) => e.stickIfOpen),
15
+ parent: t((e) => e.parent),
16
+ rootId: t((e) => e.parent.type === "menu" ? e.parent.store.select("rootId") : e.parent.type !== void 0 ? e.parent.context.rootId : e.rootId),
17
+ activeIndex: t((e) => e.activeIndex),
18
+ isActive: t((e, n) => e.activeIndex === n),
19
+ hoverEnabled: t((e) => e.hoverEnabled),
20
+ instantType: t((e) => e.instantType),
21
+ lastOpenChangeReason: t((e) => e.openChangeReason),
22
+ floatingTreeRoot: t((e) => e.parent.type === "menu" ? e.parent.store.select("floatingTreeRoot") : e.floatingTreeRoot),
23
+ floatingNodeId: t((e) => e.floatingNodeId),
24
+ floatingParentNodeId: t((e) => e.floatingParentNodeId),
25
+ itemProps: t((e) => e.itemProps),
26
+ closeDelay: t((e) => e.closeDelay),
27
+ keyboardEventRelay: t((e) => {
28
+ if (e.keyboardEventRelay)
29
+ return e.keyboardEventRelay;
30
+ if (e.parent.type === "menu")
31
+ return e.parent.store.select("keyboardEventRelay");
32
+ })
33
+ };
34
+ class a extends p {
35
+ constructor(n) {
36
+ super({
37
+ ...g(),
38
+ ...n
39
+ }, {
40
+ positionerRef: /* @__PURE__ */ o.createRef(),
41
+ popupRef: /* @__PURE__ */ o.createRef(),
42
+ typingRef: {
43
+ current: !1
44
+ },
45
+ itemDomElements: {
46
+ current: []
47
+ },
48
+ itemLabels: {
49
+ current: []
50
+ },
51
+ allowMouseUpTriggerRef: {
52
+ current: !1
53
+ },
54
+ triggerFocusTargetRef: /* @__PURE__ */ o.createRef(),
55
+ beforeContentFocusGuardRef: /* @__PURE__ */ o.createRef(),
56
+ onOpenChangeComplete: void 0,
57
+ triggerElements: new d()
58
+ }, m), this.observe(t((r) => r.allowMouseEnter), (r, i) => {
59
+ this.state.parent.type === "menu" && r !== i && this.state.parent.store.set("allowMouseEnter", r);
60
+ }), this.unsubscribeParentListener = this.observe("parent", (r) => {
61
+ if (this.unsubscribeParentListener?.(), r.type === "menu") {
62
+ this.unsubscribeParentListener = r.store.subscribe(() => {
63
+ this.notifyAll();
64
+ }), this.context.allowMouseUpTriggerRef = r.store.context.allowMouseUpTriggerRef;
65
+ return;
66
+ }
67
+ r.type !== void 0 && (this.context.allowMouseUpTriggerRef = r.context.allowMouseUpTriggerRef), this.unsubscribeParentListener = null;
68
+ });
69
+ }
70
+ setOpen(n, r) {
71
+ this.state.floatingRootContext.context.events.emit("setOpen", {
72
+ open: n,
73
+ eventDetails: r
74
+ });
75
+ }
76
+ static useStore(n, r) {
77
+ return l(() => n ?? new a(r)).current;
78
+ }
79
+ unsubscribeParentListener = null;
80
+ }
81
+ function g() {
82
+ return {
83
+ ...c(),
84
+ disabled: !1,
85
+ modal: !0,
86
+ allowMouseEnter: !0,
87
+ stickIfOpen: !0,
88
+ parent: {
89
+ type: void 0
90
+ },
91
+ rootId: void 0,
92
+ activeIndex: null,
93
+ hoverEnabled: !0,
94
+ instantType: void 0,
95
+ openChangeReason: null,
96
+ floatingTreeRoot: new u(),
97
+ floatingNodeId: void 0,
98
+ floatingParentNodeId: null,
99
+ itemProps: s,
100
+ keyboardEventRelay: void 0,
101
+ closeDelay: 0
102
+ };
103
+ }
104
+ export {
105
+ a as MenuStore
106
+ };
@@ -0,0 +1,10 @@
1
+ import * as e from "react";
2
+ const t = /* @__PURE__ */ e.createContext(void 0);
3
+ process.env.NODE_ENV !== "production" && (t.displayName = "MenuSubmenuRootContext");
4
+ function n() {
5
+ return e.useContext(t);
6
+ }
7
+ export {
8
+ t as MenuSubmenuRootContext,
9
+ n as useMenuSubmenuRootContext
10
+ };
@@ -0,0 +1,35 @@
1
+ import { useId as f } from "./index149.js";
2
+ import { useRefWithInit as g } from "./index107.js";
3
+ import { useIsoLayoutEffect as E } from "./index97.js";
4
+ import { isElement as d } from "./index94.js";
5
+ import { useFloatingParentNodeId as S } from "./index145.js";
6
+ import { FloatingRootStore as x } from "./index243.js";
7
+ function v(p) {
8
+ const {
9
+ popupStore: o,
10
+ noEmit: i = !1,
11
+ treatPopupAsFloatingElement: a = !1,
12
+ onOpenChange: m
13
+ } = p, n = f(), c = S() != null, r = o.useState("open"), t = o.useState("activeTriggerElement"), s = o.useState(a ? "popupElement" : "positionerElement"), u = o.context.triggerElements, e = g(() => new x({
14
+ open: r,
15
+ referenceElement: t,
16
+ floatingElement: s,
17
+ triggerElements: u,
18
+ onOpenChange: m,
19
+ floatingId: n,
20
+ nested: c,
21
+ noEmit: i
22
+ })).current;
23
+ return E(() => {
24
+ const l = {
25
+ open: r,
26
+ floatingId: n,
27
+ referenceElement: t,
28
+ floatingElement: s
29
+ };
30
+ d(t) && (l.domReferenceElement = t), e.update(l);
31
+ }, [r, n, t, s, e]), e.context.onOpenChange = m, e.context.nested = c, e.context.noEmit = i, e;
32
+ }
33
+ export {
34
+ v as useSyncedFloatingRootContext
35
+ };
@@ -0,0 +1,233 @@
1
+ import * as p from "react";
2
+ import { isElement as P, isLastTraversableNode as U, getParentNode as Ce, isHTMLElement as Oe, getComputedStyle as Se, getOverflowAncestors as j, isWebKit as De } from "./index94.js";
3
+ import { useTimeout as ce, Timeout as ke } from "./index148.js";
4
+ import { useStableCallback as s } from "./index95.js";
5
+ import { useFloatingTree as Me } from "./index145.js";
6
+ import { createChangeEventDetails as S } from "./index113.js";
7
+ import { createAttribute as Ke } from "./index238.js";
8
+ import { isReactEvent as Ie } from "./index222.js";
9
+ import { getTarget as w, getDocument as ie, contains as X, isRootElement as xe, isEventTargetWithin as f } from "./index173.js";
10
+ import { getNodeChildren as G } from "./index242.js";
11
+ import { triggerPress as le, escapeKey as Xe, outsidePress as Ye, none as We } from "./index114.js";
12
+ const _e = {
13
+ intentional: "onClick",
14
+ sloppy: "onPointerDown"
15
+ };
16
+ function He(d) {
17
+ return {
18
+ escapeKey: typeof d == "boolean" ? d : d?.escapeKey ?? !1,
19
+ outsidePress: typeof d == "boolean" ? d : d?.outsidePress ?? !0
20
+ };
21
+ }
22
+ function Je(d, ue = {}) {
23
+ const r = "rootStore" in d ? d.rootStore : d, Y = r.useState("open"), D = r.useState("floatingElement"), C = r.useState("referenceElement"), W = r.useState("domReferenceElement"), {
24
+ onOpenChange: ae,
25
+ dataRef: m
26
+ } = r.context, {
27
+ enabled: E = !0,
28
+ escapeKey: k = !0,
29
+ outsidePress: M = !0,
30
+ outsidePressEvent: _ = "sloppy",
31
+ referencePress: J = !1,
32
+ referencePressEvent: H = "sloppy",
33
+ ancestorScroll: Q = !1,
34
+ bubbles: fe,
35
+ externalTree: de
36
+ } = ue, T = Me(de), pe = s(typeof M == "function" ? M : () => !1), v = typeof M == "function" ? pe : M, A = p.useRef(!1), {
37
+ escapeKey: K,
38
+ outsidePress: Z
39
+ } = He(fe), u = p.useRef(null), I = ce(), z = ce(), b = s(() => {
40
+ z.clear(), m.current.insideReactTree = !1;
41
+ }), B = p.useRef(!1), ee = p.useRef(""), N = s((e) => {
42
+ ee.current = e.pointerType;
43
+ }), L = s(() => {
44
+ const e = ee.current, n = e === "pen" || !e ? "mouse" : e, t = typeof _ == "function" ? _() : _;
45
+ return typeof t == "string" ? t : t[n];
46
+ }), h = s((e) => {
47
+ if (!Y || !E || !k || e.key !== "Escape" || B.current)
48
+ return;
49
+ const n = m.current.floatingContext?.nodeId, t = T ? G(T.nodesRef.current, n) : [];
50
+ if (!K && t.length > 0) {
51
+ let i = !0;
52
+ if (t.forEach((c) => {
53
+ c.context?.open && !c.context.dataRef.current.__escapeKeyBubbles && (i = !1);
54
+ }), !i)
55
+ return;
56
+ }
57
+ const a = Ie(e) ? e.nativeEvent : e, o = S(Xe, a);
58
+ r.setOpen(!1, o), !K && !o.isPropagationAllowed && e.stopPropagation();
59
+ }), me = s((e) => {
60
+ const n = L();
61
+ return n === "intentional" && e.type !== "click" || n === "sloppy" && e.type === "click";
62
+ }), g = s(() => {
63
+ m.current.insideReactTree = !0, z.start(0, b);
64
+ }), O = s((e, n = !1) => {
65
+ if (me(e)) {
66
+ b();
67
+ return;
68
+ }
69
+ if (m.current.insideReactTree) {
70
+ b();
71
+ return;
72
+ }
73
+ if (L() === "intentional" && n || typeof v == "function" && !v(e))
74
+ return;
75
+ const t = w(e), a = `[${Ke("inert")}]`, o = ie(r.select("floatingElement")).querySelectorAll(a), i = r.context.triggerElements;
76
+ if (t && (i.hasElement(t) || i.hasMatchingElement((l) => X(l, t))))
77
+ return;
78
+ let c = P(t) ? t : null;
79
+ for (; c && !U(c); ) {
80
+ const l = Ce(c);
81
+ if (U(l) || !P(l))
82
+ break;
83
+ c = l;
84
+ }
85
+ if (o.length && P(t) && !xe(t) && // Clicked on a direct ancestor (e.g. FloatingOverlay).
86
+ !X(t, r.select("floatingElement")) && // If the target root element contains none of the markers, then the
87
+ // element was injected after the floating element rendered.
88
+ Array.from(o).every((l) => !X(c, l)))
89
+ return;
90
+ if (Oe(t) && !("touches" in e)) {
91
+ const l = U(t), R = Se(t), se = /auto|scroll/, Te = l || se.test(R.overflowX), ve = l || se.test(R.overflowY), be = Te && t.clientWidth > 0 && t.scrollWidth > t.clientWidth, Le = ve && t.clientHeight > 0 && t.scrollHeight > t.clientHeight, Re = R.direction === "rtl", Pe = Le && (Re ? e.offsetX <= t.offsetWidth - t.clientWidth : e.offsetX > t.clientWidth), we = be && e.offsetY > t.clientHeight;
92
+ if (Pe || we)
93
+ return;
94
+ }
95
+ const oe = m.current.floatingContext?.nodeId, ye = T && G(T.nodesRef.current, oe).some((l) => f(e, l.context?.elements.floating));
96
+ if (f(e, r.select("floatingElement")) || f(e, r.select("domReferenceElement")) || ye)
97
+ return;
98
+ const re = T ? G(T.nodesRef.current, oe) : [];
99
+ if (re.length > 0) {
100
+ let l = !0;
101
+ if (re.forEach((R) => {
102
+ R.context?.open && !R.context.dataRef.current.__outsidePressBubbles && (l = !1);
103
+ }), !l)
104
+ return;
105
+ }
106
+ r.setOpen(!1, S(Ye, e)), b();
107
+ }), te = s((e) => {
108
+ L() !== "sloppy" || e.pointerType === "touch" || !r.select("open") || !E || f(e, r.select("floatingElement")) || f(e, r.select("domReferenceElement")) || O(e);
109
+ }), Ee = s((e) => {
110
+ if (L() !== "sloppy" || !r.select("open") || !E || f(e, r.select("floatingElement")) || f(e, r.select("domReferenceElement")))
111
+ return;
112
+ const n = e.touches[0];
113
+ n && (u.current = {
114
+ startTime: Date.now(),
115
+ startX: n.clientX,
116
+ startY: n.clientY,
117
+ dismissOnTouchEnd: !1,
118
+ dismissOnMouseDown: !0
119
+ }, I.start(1e3, () => {
120
+ u.current && (u.current.dismissOnTouchEnd = !1, u.current.dismissOnMouseDown = !1);
121
+ }));
122
+ }), V = s((e) => {
123
+ const n = w(e);
124
+ function t() {
125
+ Ee(e), n?.removeEventListener(e.type, t);
126
+ }
127
+ n?.addEventListener(e.type, t);
128
+ }), y = s((e) => {
129
+ const n = A.current;
130
+ if (A.current = !1, I.clear(), e.type === "mousedown" && u.current && !u.current.dismissOnMouseDown)
131
+ return;
132
+ const t = w(e);
133
+ function a() {
134
+ e.type === "pointerdown" ? te(e) : O(e, n), t?.removeEventListener(e.type, a);
135
+ }
136
+ t?.addEventListener(e.type, a);
137
+ }), he = s((e) => {
138
+ if (L() !== "sloppy" || !u.current || f(e, r.select("floatingElement")) || f(e, r.select("domReferenceElement")))
139
+ return;
140
+ const n = e.touches[0];
141
+ if (!n)
142
+ return;
143
+ const t = Math.abs(n.clientX - u.current.startX), a = Math.abs(n.clientY - u.current.startY), o = Math.sqrt(t * t + a * a);
144
+ o > 5 && (u.current.dismissOnTouchEnd = !0), o > 10 && (O(e), I.clear(), u.current = null);
145
+ }), $ = s((e) => {
146
+ const n = w(e);
147
+ function t() {
148
+ he(e), n?.removeEventListener(e.type, t);
149
+ }
150
+ n?.addEventListener(e.type, t);
151
+ }), ge = s((e) => {
152
+ L() !== "sloppy" || !u.current || f(e, r.select("floatingElement")) || f(e, r.select("domReferenceElement")) || (u.current.dismissOnTouchEnd && O(e), I.clear(), u.current = null);
153
+ }), q = s((e) => {
154
+ const n = w(e);
155
+ function t() {
156
+ ge(e), n?.removeEventListener(e.type, t);
157
+ }
158
+ n?.addEventListener(e.type, t);
159
+ });
160
+ p.useEffect(() => {
161
+ if (!Y || !E)
162
+ return;
163
+ m.current.__escapeKeyBubbles = K, m.current.__outsidePressBubbles = Z;
164
+ const e = new ke();
165
+ function n(c) {
166
+ r.setOpen(!1, S(We, c));
167
+ }
168
+ function t() {
169
+ e.clear(), B.current = !0;
170
+ }
171
+ function a() {
172
+ e.start(
173
+ // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.
174
+ // Only apply to WebKit for the test to remain 0ms.
175
+ De() ? 5 : 0,
176
+ () => {
177
+ B.current = !1;
178
+ }
179
+ );
180
+ }
181
+ const o = ie(D);
182
+ o.addEventListener("pointerdown", N, !0), k && (o.addEventListener("keydown", h), o.addEventListener("compositionstart", t), o.addEventListener("compositionend", a)), v && (o.addEventListener("click", y, !0), o.addEventListener("pointerdown", y, !0), o.addEventListener("touchstart", V, !0), o.addEventListener("touchmove", $, !0), o.addEventListener("touchend", q, !0), o.addEventListener("mousedown", y, !0));
183
+ let i = [];
184
+ return Q && (P(W) && (i = j(W)), P(D) && (i = i.concat(j(D))), !P(C) && C && C.contextElement && (i = i.concat(j(C.contextElement)))), i = i.filter((c) => c !== o.defaultView?.visualViewport), i.forEach((c) => {
185
+ c.addEventListener("scroll", n, {
186
+ passive: !0
187
+ });
188
+ }), () => {
189
+ o.removeEventListener("pointerdown", N, !0), k && (o.removeEventListener("keydown", h), o.removeEventListener("compositionstart", t), o.removeEventListener("compositionend", a)), v && (o.removeEventListener("click", y, !0), o.removeEventListener("pointerdown", y, !0), o.removeEventListener("touchstart", V, !0), o.removeEventListener("touchmove", $, !0), o.removeEventListener("touchend", q, !0), o.removeEventListener("mousedown", y, !0)), i.forEach((c) => {
190
+ c.removeEventListener("scroll", n);
191
+ }), e.clear();
192
+ };
193
+ }, [m, D, C, W, k, v, Y, ae, Q, E, K, Z, h, O, y, te, V, $, q, N, r]), p.useEffect(b, [v, b]);
194
+ const F = p.useMemo(() => ({
195
+ onKeyDown: h,
196
+ ...J && {
197
+ [_e[H]]: (e) => {
198
+ r.setOpen(!1, S(le, e.nativeEvent));
199
+ },
200
+ ...H !== "intentional" && {
201
+ onClick(e) {
202
+ r.setOpen(!1, S(le, e.nativeEvent));
203
+ }
204
+ }
205
+ }
206
+ }), [h, r, J, H]), x = s((e) => {
207
+ const n = w(e.nativeEvent);
208
+ !X(r.select("floatingElement"), n) || e.button !== 0 || (A.current = !0);
209
+ }), ne = p.useMemo(() => ({
210
+ onKeyDown: h,
211
+ // `onMouseDown` may be blocked if `event.preventDefault()` is called in
212
+ // `onPointerDown`, such as with <NumberField.ScrubArea>.
213
+ // See https://github.com/mui/base-ui/pull/3379
214
+ onPointerDown: x,
215
+ onMouseDown: x,
216
+ onMouseUp: x,
217
+ onClickCapture: g,
218
+ onMouseDownCapture: g,
219
+ onPointerDownCapture: g,
220
+ onMouseUpCapture: g,
221
+ onTouchEndCapture: g,
222
+ onTouchMoveCapture: g
223
+ }), [h, x, g]);
224
+ return p.useMemo(() => E ? {
225
+ reference: F,
226
+ floating: ne,
227
+ trigger: F
228
+ } : {}, [E, F, ne]);
229
+ }
230
+ export {
231
+ He as normalizeProp,
232
+ Je as useDismiss
233
+ };
@@ -0,0 +1,77 @@
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"
22
+ },
23
+ ...o === "combobox" && {
24
+ "aria-autocomplete": "list"
25
+ }
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
+ }
57
+ };
58
+ switch (o) {
59
+ case "select":
60
+ case "combobox":
61
+ return {
62
+ ...E,
63
+ "aria-selected": R
64
+ };
65
+ }
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]);
74
+ }
75
+ export {
76
+ k as useRole
77
+ };
@@ -0,0 +1,8 @@
1
+ import { clsx as o } from "./index84.js";
2
+ import { twMerge as t } from "./index85.js";
3
+ function n(...r) {
4
+ return t(o(r));
5
+ }
6
+ export {
7
+ n as cn
8
+ };