@yselimcan/ui 0.0.5 → 0.0.7

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 (224) hide show
  1. package/dist/index100.js +4 -5
  2. package/dist/index101.js +66 -7
  3. package/dist/index102.js +8 -87
  4. package/dist/index103.js +12 -11
  5. package/dist/index104.js +3 -62
  6. package/dist/index105.js +4 -38
  7. package/dist/index106.js +6 -14
  8. package/dist/index107.js +29 -32
  9. package/dist/index108.js +12 -19
  10. package/dist/index109.js +65 -4
  11. package/dist/index110.js +53 -3
  12. package/dist/index111.js +13 -5
  13. package/dist/index112.js +5 -11
  14. package/dist/index113.js +13 -19
  15. package/dist/index114.js +13 -13
  16. package/dist/index115.js +32 -296
  17. package/dist/index116.js +19 -5
  18. package/dist/index117.js +40 -38
  19. package/dist/index118.js +16 -123
  20. package/dist/index119.js +12 -21
  21. package/dist/index120.js +38 -77
  22. package/dist/index121.js +14 -65
  23. package/dist/index122.js +8 -45
  24. package/dist/index123.js +13 -14
  25. package/dist/index124.js +5 -5
  26. package/dist/index125.js +87 -29
  27. package/dist/index126.js +296 -4
  28. package/dist/index127.js +10 -26
  29. package/dist/index128.js +122 -14
  30. package/dist/index129.js +4 -21
  31. package/dist/index130.js +259 -54
  32. package/dist/index131.js +78 -16
  33. package/dist/index132.js +37 -26
  34. package/dist/index133.js +21 -41
  35. package/dist/index134.js +12 -43
  36. package/dist/index135.js +55 -20
  37. package/dist/index136.js +11 -48
  38. package/dist/index137.js +11 -51
  39. package/dist/index138.js +29 -16
  40. package/dist/index139.js +18 -11
  41. package/dist/index140.js +65 -21
  42. package/dist/index141.js +103 -34
  43. package/dist/index142.js +8 -230
  44. package/dist/index143.js +8 -283
  45. package/dist/index144.js +21 -52
  46. package/dist/index145.js +102 -14
  47. package/dist/index146.js +7 -79
  48. package/dist/index147.js +32 -3
  49. package/dist/index148.js +228 -28
  50. package/dist/index149.js +74 -23
  51. package/dist/index150.js +283 -15
  52. package/dist/index151.js +52 -68
  53. package/dist/index152.js +46 -4
  54. package/dist/index153.js +70 -98
  55. package/dist/index154.js +3 -79
  56. package/dist/index155.js +13 -262
  57. package/dist/index156.js +15 -11
  58. package/dist/index157.js +28 -10
  59. package/dist/index158.js +7 -40
  60. package/dist/index159.js +22 -4
  61. package/dist/index160.js +24 -66
  62. package/dist/index161.js +160 -9
  63. package/dist/index162.js +113 -8
  64. package/dist/index163.js +64 -5
  65. package/dist/index164.js +74 -132
  66. package/dist/index165.js +64 -53
  67. package/dist/index166.js +68 -10
  68. package/dist/index167.js +14 -118
  69. package/dist/index168.js +7 -11
  70. package/dist/index169.js +5 -8
  71. package/dist/index17.js +4 -4
  72. package/dist/index170.js +16 -11
  73. package/dist/index171.js +21 -22
  74. package/dist/index172.js +58 -11
  75. package/dist/index173.js +16 -65
  76. package/dist/index174.js +26 -11
  77. package/dist/index175.js +42 -12
  78. package/dist/index176.js +20 -11
  79. package/dist/index177.js +48 -11
  80. package/dist/index178.js +47 -83
  81. package/dist/index179.js +17 -11
  82. package/dist/index18.js +4 -4
  83. package/dist/index180.js +11 -11
  84. package/dist/index181.js +34 -55
  85. package/dist/index182.js +15 -11
  86. package/dist/index183.js +79 -11
  87. package/dist/index184.js +23 -18
  88. package/dist/index185.js +4 -9
  89. package/dist/index186.js +10 -7
  90. package/dist/index187.js +10 -103
  91. package/dist/index188.js +40 -7
  92. package/dist/index189.js +4 -32
  93. package/dist/index19.js +9 -9
  94. package/dist/index190.js +10 -75
  95. package/dist/index191.js +11 -14
  96. package/dist/index192.js +114 -25
  97. package/dist/index193.js +11 -7
  98. package/dist/index194.js +85 -20
  99. package/dist/index195.js +12 -24
  100. package/dist/index196.js +59 -157
  101. package/dist/index197.js +4 -114
  102. package/dist/index198.js +5 -76
  103. package/dist/index199.js +11 -64
  104. package/dist/index20.js +2 -2
  105. package/dist/index201.js +21 -47
  106. package/dist/index202.js +4 -200
  107. package/dist/index203.js +26 -47
  108. package/dist/index204.js +127 -19
  109. package/dist/index205.js +45 -27
  110. package/dist/index206.js +17 -11
  111. package/dist/index207.js +5 -7
  112. package/dist/index208.js +181 -4
  113. package/dist/index209.js +74 -8
  114. package/dist/index21.js +3 -3
  115. package/dist/index210.js +396 -14
  116. package/dist/index211.js +199 -21
  117. package/dist/index212.js +46 -126
  118. package/dist/index213.js +18 -43
  119. package/dist/index214.js +47 -17
  120. package/dist/index215.js +7 -5
  121. package/dist/index216.js +5 -181
  122. package/dist/index217.js +15 -74
  123. package/dist/index218.js +12 -396
  124. package/dist/index219.js +32 -38
  125. package/dist/index22.js +5 -5
  126. package/dist/index220.js +4 -57
  127. package/dist/index221.js +11 -27
  128. package/dist/index222.js +9 -7
  129. package/dist/index223.js +37 -11
  130. package/dist/index224.js +57 -12
  131. package/dist/index225.js +27 -11
  132. package/dist/index226.js +6 -20
  133. package/dist/index227.js +11 -10
  134. package/dist/index228.js +11 -7
  135. package/dist/index229.js +11 -42
  136. package/dist/index23.js +2 -2
  137. package/dist/index230.js +22 -4
  138. package/dist/index231.js +11 -4
  139. package/dist/index232.js +6 -595
  140. package/dist/index233.js +42 -11
  141. package/dist/index234.js +594 -12
  142. package/dist/index235.js +11 -32
  143. package/dist/index236.js +4 -209
  144. package/dist/index237.js +209 -4
  145. package/dist/index238.js +3 -13
  146. package/dist/index239.js +13 -47
  147. package/dist/index24.js +9 -9
  148. package/dist/index240.js +47 -3
  149. package/dist/index242.js +4 -4
  150. package/dist/index243.js +2 -2
  151. package/dist/index244.js +1 -1
  152. package/dist/index246.js +3 -3
  153. package/dist/index247.js +1 -1
  154. package/dist/index251.js +1 -1
  155. package/dist/index253.js +1 -1
  156. package/dist/index256.js +1 -1
  157. package/dist/index257.js +1 -1
  158. package/dist/index260.js +1 -1
  159. package/dist/index261.js +1 -1
  160. package/dist/index262.js +2 -2
  161. package/dist/index264.js +2 -2
  162. package/dist/index27.js +1 -1
  163. package/dist/index28.js +1 -1
  164. package/dist/index32.js +1 -1
  165. package/dist/index33.js +16 -16
  166. package/dist/index34.js +5 -5
  167. package/dist/index35.js +13 -13
  168. package/dist/index36.js +10 -10
  169. package/dist/index37.js +7 -7
  170. package/dist/index38.js +9 -9
  171. package/dist/index39.js +4 -4
  172. package/dist/index40.js +2 -2
  173. package/dist/index41.js +3 -3
  174. package/dist/index42.js +2 -2
  175. package/dist/index43.js +1 -1
  176. package/dist/index45.js +5 -5
  177. package/dist/index46.js +9 -9
  178. package/dist/index47.js +9 -9
  179. package/dist/index48.js +18 -18
  180. package/dist/index49.js +4 -4
  181. package/dist/index50.js +11 -11
  182. package/dist/index52.js +25 -25
  183. package/dist/index53.js +3 -3
  184. package/dist/index54.js +31 -31
  185. package/dist/index55.js +13 -13
  186. package/dist/index56.js +12 -12
  187. package/dist/index57.js +1 -1
  188. package/dist/index58.js +3 -3
  189. package/dist/index59.js +5 -5
  190. package/dist/index60.js +11 -11
  191. package/dist/index61.js +4 -4
  192. package/dist/index62.js +3 -3
  193. package/dist/index63.js +11 -11
  194. package/dist/index64.js +4 -4
  195. package/dist/index65.js +3 -3
  196. package/dist/index66.js +13 -13
  197. package/dist/index67.js +1 -1
  198. package/dist/index69.js +32 -32
  199. package/dist/index70.js +5 -5
  200. package/dist/index71.js +17 -17
  201. package/dist/index72.js +23 -23
  202. package/dist/index73.js +7 -7
  203. package/dist/index74.js +1 -1
  204. package/dist/index75.js +13 -13
  205. package/dist/index76.js +2 -2
  206. package/dist/index77.js +4 -4
  207. package/dist/index78.js +3 -3
  208. package/dist/index79.js +1 -1
  209. package/dist/index80.js +1 -1
  210. package/dist/index81.js +17 -17
  211. package/dist/index82.js +4 -4
  212. package/dist/index83.js +4 -4
  213. package/dist/index86.js +89 -11
  214. package/dist/index87.js +8 -8
  215. package/dist/index88.js +12 -96
  216. package/dist/index89.js +87 -81
  217. package/dist/index94.js +133 -4
  218. package/dist/index95.js +24 -63
  219. package/dist/index96.js +8 -8
  220. package/dist/index97.js +5 -14
  221. package/dist/index98.js +12 -3
  222. package/dist/index99.js +22 -3
  223. package/dist/styles.css +1 -1
  224. package/package.json +8 -4
package/dist/index135.js CHANGED
@@ -1,24 +1,59 @@
1
1
  "use client";
2
- import * as e from "react";
3
- import { NOOP as r } from "./index100.js";
4
- const t = /* @__PURE__ */ e.createContext({
5
- formRef: {
6
- current: {
7
- fields: /* @__PURE__ */ new Map()
8
- }
9
- },
10
- errors: {},
11
- clearErrors: r,
12
- validationMode: "onSubmit",
13
- submitAttemptedRef: {
14
- current: !1
15
- }
16
- });
17
- process.env.NODE_ENV !== "production" && (t.displayName = "FormContext");
18
- function n() {
19
- return e.useContext(t);
2
+ import * as r from "react";
3
+ import { useId as a } from "./index139.js";
4
+ import { useIsoLayoutEffect as l } from "./index97.js";
5
+ import { useRefWithInit as f } from "./index168.js";
6
+ import { FloatingTreeStore as m } from "./index155.js";
7
+ import { jsx as d } from "react/jsx-runtime";
8
+ const i = /* @__PURE__ */ r.createContext(null);
9
+ process.env.NODE_ENV !== "production" && (i.displayName = "FloatingNodeContext");
10
+ const s = /* @__PURE__ */ r.createContext(null);
11
+ process.env.NODE_ENV !== "production" && (s.displayName = "FloatingTreeContext");
12
+ const u = () => r.useContext(i)?.id || null, p = (o) => {
13
+ const e = r.useContext(s);
14
+ return o ?? e;
15
+ };
16
+ function v(o) {
17
+ const e = a(), t = p(o), n = u();
18
+ return l(() => {
19
+ if (!e)
20
+ return;
21
+ const c = {
22
+ id: e,
23
+ parentId: n
24
+ };
25
+ return t?.addNode(c), () => {
26
+ t?.removeNode(c);
27
+ };
28
+ }, [t, e, n]), e;
29
+ }
30
+ function I(o) {
31
+ const {
32
+ children: e,
33
+ id: t
34
+ } = o, n = u();
35
+ return /* @__PURE__ */ d(i.Provider, {
36
+ value: r.useMemo(() => ({
37
+ id: t,
38
+ parentId: n
39
+ }), [t, n]),
40
+ children: e
41
+ });
42
+ }
43
+ function T(o) {
44
+ const {
45
+ children: e,
46
+ externalTree: t
47
+ } = o, n = f(() => t ?? new m()).current;
48
+ return /* @__PURE__ */ d(s.Provider, {
49
+ value: n,
50
+ children: e
51
+ });
20
52
  }
21
53
  export {
22
- t as FormContext,
23
- n as useFormContext
54
+ I as FloatingNode,
55
+ T as FloatingTree,
56
+ v as useFloatingNodeId,
57
+ u as useFloatingParentNodeId,
58
+ p as useFloatingTree
24
59
  };
package/dist/index136.js CHANGED
@@ -1,51 +1,14 @@
1
- import * as p from "react-dom";
2
- import { useIsoLayoutEffect as r } from "./index126.js";
3
- import { useStableCallback as D } from "./index127.js";
4
- import { getCombinedFieldValidityData as v } from "./index209.js";
5
- import { useFormContext as R } from "./index135.js";
6
- import { useFieldRootContext as b } from "./index130.js";
7
- function S(u) {
8
- const {
9
- enabled: l = !0,
10
- value: a,
11
- id: t,
12
- name: f,
13
- controlRef: d,
14
- commit: m
15
- } = u, {
16
- formRef: n
17
- } = R(), {
18
- invalid: s,
19
- markedDirtyRef: c,
20
- validityData: o,
21
- setValidityData: V
22
- } = b(), i = D(u.getValue);
23
- r(() => {
24
- if (!l)
25
- return;
26
- let e = a;
27
- e === void 0 && (e = i()), o.initialValue === null && e !== null && V((y) => ({
28
- ...y,
29
- initialValue: e
30
- }));
31
- }, [l, V, a, o.initialValue, i]), r(() => {
32
- !l || !t || n.current.fields.set(t, {
33
- getValue: i,
34
- name: f,
35
- controlRef: d,
36
- validityData: v(o, s),
37
- validate() {
38
- let e = a;
39
- e === void 0 && (e = i()), c.current = !0, p.flushSync(() => m(e));
40
- }
41
- });
42
- }, [m, d, l, n, i, t, s, c, f, o, a]), r(() => {
43
- const e = n.current.fields;
44
- return () => {
45
- t && e.delete(t);
46
- };
47
- }, [n, t]);
1
+ import n from "./index100.js";
2
+ import * as e from "react";
3
+ const t = /* @__PURE__ */ e.createContext(void 0);
4
+ process.env.NODE_ENV !== "production" && (t.displayName = "MenuRadioGroupContext");
5
+ function i() {
6
+ const o = e.useContext(t);
7
+ if (o === void 0)
8
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: MenuRadioGroupContext is missing. MenuRadioGroup parts must be placed within <Menu.RadioGroup>." : n(34));
9
+ return o;
48
10
  }
49
11
  export {
50
- S as useField
12
+ t as MenuRadioGroupContext,
13
+ i as useMenuRadioGroupContext
51
14
  };
package/dist/index137.js CHANGED
@@ -1,54 +1,14 @@
1
- "use client";
2
- import { serializeValue as c } from "./index206.js";
3
- function t(n) {
4
- return n != null && n.length > 0 && typeof n[0] == "object" && n[0] != null && "items" in n[0];
5
- }
6
- function e(n, r) {
7
- if (r && n != null)
8
- return r(n) ?? "";
9
- if (n && typeof n == "object") {
10
- if ("label" in n && n.label != null)
11
- return String(n.label);
12
- if ("value" in n)
13
- return String(n.value);
14
- }
15
- return c(n);
16
- }
17
- function b(n, r) {
18
- return r && n != null ? r(n) ?? "" : n && typeof n == "object" && "value" in n && "label" in n ? c(n.value) : c(n);
19
- }
20
- function y(n, r, f) {
21
- if (f && n != null)
22
- return f(n);
23
- if (n && typeof n == "object" && "label" in n && n.label != null)
24
- return n.label;
25
- if (r && !Array.isArray(r))
26
- return r[n] ?? e(n, f);
27
- if (Array.isArray(r)) {
28
- const o = t(r) ? r.flatMap((l) => l.items) : r;
29
- if (n == null) {
30
- const l = o.find((u) => u.value == null);
31
- return l && l.label != null ? l.label : e(n, f);
32
- }
33
- if (typeof n != "object") {
34
- const l = o.find((u) => u && u.value === n);
35
- return l && l.label != null ? l.label : e(n, f);
36
- }
37
- if ("value" in n) {
38
- const l = o.find((u) => u && u.value === n.value);
39
- if (l && l.label != null)
40
- return l.label;
41
- }
42
- }
43
- return e(n, f);
44
- }
45
- function p(n, r) {
46
- return !Array.isArray(n) || n.length === 0 ? "" : n.map((f) => e(f, r)).join(", ");
1
+ import n from "./index100.js";
2
+ import * as t from "react";
3
+ const o = /* @__PURE__ */ t.createContext(void 0);
4
+ process.env.NODE_ENV !== "production" && (o.displayName = "MenuRadioItemContext");
5
+ function r() {
6
+ const e = t.useContext(o);
7
+ if (e === void 0)
8
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: MenuRadioItemContext is missing. MenuRadioItem parts must be placed within <Menu.RadioItem>." : n(35));
9
+ return e;
47
10
  }
48
11
  export {
49
- t as isGroupedItems,
50
- p as resolveMultipleLabels,
51
- y as resolveSelectedLabel,
52
- e as stringifyAsLabel,
53
- b as stringifyAsValue
12
+ o as MenuRadioItemContext,
13
+ r as useMenuRadioItemContext
54
14
  };
package/dist/index138.js CHANGED
@@ -1,20 +1,33 @@
1
- const f = (n, e) => Object.is(n, e);
2
- function u(n, e, r) {
3
- return n == null || e == null ? Object.is(n, e) : r(n, e);
1
+ "use client";
2
+ import { useRefWithInit as c } from "./index168.js";
3
+ import { useOnMount as u } from "./index215.js";
4
+ const t = 0;
5
+ class e {
6
+ static create() {
7
+ return new e();
8
+ }
9
+ currentId = t;
10
+ /**
11
+ * Executes `fn` after `delay`, clearing any previously scheduled call.
12
+ */
13
+ start(s, i) {
14
+ this.clear(), this.currentId = setTimeout(() => {
15
+ this.currentId = t, i();
16
+ }, s);
17
+ }
18
+ isStarted() {
19
+ return this.currentId !== t;
20
+ }
21
+ clear = () => {
22
+ this.currentId !== t && (clearTimeout(this.currentId), this.currentId = t);
23
+ };
24
+ disposeEffect = () => this.clear;
4
25
  }
5
- function i(n, e, r) {
6
- return !n || n.length === 0 ? !1 : n.some((t) => t === void 0 ? !1 : u(t, e, r));
7
- }
8
- function d(n, e, r) {
9
- return !n || n.length === 0 ? -1 : n.findIndex((t) => t === void 0 ? !1 : u(t, e, r));
10
- }
11
- function s(n, e, r) {
12
- return n.filter((t) => !u(t, e, r));
26
+ function a() {
27
+ const r = c(e.create).current;
28
+ return u(r.disposeEffect), r;
13
29
  }
14
30
  export {
15
- u as compareItemEquality,
16
- f as defaultItemEquality,
17
- d as findItemIndex,
18
- i as itemIncludes,
19
- s as removeItem
31
+ e as Timeout,
32
+ a as useTimeout
20
33
  };
package/dist/index139.js CHANGED
@@ -1,14 +1,21 @@
1
- import * as c from "react";
2
- import { useIsoLayoutEffect as o } from "./index126.js";
3
- import { useStableCallback as f } from "./index127.js";
4
- function u(r, n) {
5
- const t = c.useRef(r), e = f(n);
6
- o(() => {
7
- t.current !== r && e(t.current);
8
- }, [r, e]), o(() => {
9
- t.current = r;
10
- }, [r]);
1
+ "use client";
2
+ import * as n from "react";
3
+ import { SafeReact as l } from "./index216.js";
4
+ let o = 0;
5
+ function f(u, t = "mui") {
6
+ const [e, a] = n.useState(u), c = u || e;
7
+ return n.useEffect(() => {
8
+ e == null && (o += 1, a(`${t}-${o}`));
9
+ }, [e, t]), c;
10
+ }
11
+ const s = l.useId;
12
+ function I(u, t) {
13
+ if (s !== void 0) {
14
+ const e = s();
15
+ return u ?? (t ? `${t}-${e}` : e);
16
+ }
17
+ return f(u, t);
11
18
  }
12
19
  export {
13
- u as useValueChanged
20
+ I as useId
14
21
  };
package/dist/index140.js CHANGED
@@ -1,25 +1,69 @@
1
1
  "use client";
2
- import * as e from "react";
3
- import { useStableCallback as a } from "./index127.js";
4
- import { useEnhancedClickHandler as u } from "./index210.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]);
2
+ import { useRefWithInit as u } from "./index168.js";
3
+ import { useOnMount as h } from "./index215.js";
4
+ const s = null;
5
+ let l = globalThis.requestAnimationFrame;
6
+ class o {
7
+ /* This implementation uses an array as a backing data-structure for frame callbacks.
8
+ * It allows `O(1)` callback cancelling by inserting a `null` in the array, though it
9
+ * never calls the native `cancelAnimationFrame` if there are no frames left. This can
10
+ * be much more efficient if there is a call pattern that alterns as
11
+ * "request-cancel-request-cancel-…".
12
+ * But in the case of "request-request-…-cancel-cancel-…", it leaves the final animation
13
+ * frame to run anyway. We turn that frame into a `O(1)` no-op via `callbacksCount`. */
14
+ callbacks = [];
15
+ callbacksCount = 0;
16
+ nextId = 1;
17
+ startId = 1;
18
+ isScheduled = !1;
19
+ tick = (t) => {
20
+ this.isScheduled = !1;
21
+ const e = this.callbacks, i = this.callbacksCount;
22
+ if (this.callbacks = [], this.callbacksCount = 0, this.startId = this.nextId, i > 0)
23
+ for (let r = 0; r < e.length; r += 1)
24
+ e[r]?.(t);
25
+ };
26
+ request(t) {
27
+ const e = this.nextId;
28
+ this.nextId += 1, this.callbacks.push(t), this.callbacksCount += 1;
29
+ const i = process.env.NODE_ENV === "test" && l !== requestAnimationFrame && (l = requestAnimationFrame, !0);
30
+ return (!this.isScheduled || i) && (requestAnimationFrame(this.tick), this.isScheduled = !0), e;
31
+ }
32
+ cancel(t) {
33
+ const e = t - this.startId;
34
+ e < 0 || e >= this.callbacks.length || (this.callbacks[e] = null, this.callbacksCount -= 1);
35
+ }
36
+ }
37
+ const c = new o();
38
+ class a {
39
+ static create() {
40
+ return new a();
41
+ }
42
+ static request(t) {
43
+ return c.request(t);
44
+ }
45
+ static cancel(t) {
46
+ return c.cancel(t);
47
+ }
48
+ currentId = s;
49
+ /**
50
+ * Executes `fn` after `delay`, clearing any previously scheduled call.
51
+ */
52
+ request(t) {
53
+ this.cancel(), this.currentId = c.request(() => {
54
+ this.currentId = s, t();
55
+ });
56
+ }
57
+ cancel = () => {
58
+ this.currentId !== s && (c.cancel(this.currentId), this.currentId = s);
59
+ };
60
+ disposeEffect = () => this.cancel;
61
+ }
62
+ function k() {
63
+ const n = u(a.create).current;
64
+ return h(n.disposeEffect), n;
22
65
  }
23
66
  export {
24
- f as useOpenInteractionType
67
+ a as AnimationFrame,
68
+ k as useAnimationFrame
25
69
  };
package/dist/index141.js CHANGED
@@ -1,38 +1,107 @@
1
- import { isElement as s } from "./index164.js";
2
- import { useId as m } from "./index184.js";
3
- import { useRefWithInit as c } from "./index101.js";
4
- import { useIsoLayoutEffect as a } from "./index126.js";
5
- import { useFloatingParentNodeId as u } from "./index181.js";
6
- import { FloatingRootStore as g } from "./index242.js";
7
- import { PopupTriggerMap as p } from "./index203.js";
8
- function O(o) {
9
- const {
10
- open: r = !1,
11
- onOpenChange: i,
12
- elements: e = {}
13
- } = o, f = m(), l = u() != null;
14
- if (process.env.NODE_ENV !== "production") {
15
- const n = e.reference;
16
- n && !s(n) && console.error("Cannot pass a virtual element to the `elements.reference` option,", "as it must be a real DOM element. Use `context.setPositionReference()`", "instead.");
17
- }
18
- const t = c(() => new g({
19
- open: r,
20
- onOpenChange: i,
21
- referenceElement: e.reference ?? null,
22
- floatingElement: e.floating ?? null,
23
- triggerElements: e.triggers ?? new p(),
24
- floatingId: f,
25
- nested: l,
26
- noEmit: o.noEmit || !1
27
- })).current;
28
- return a(() => {
29
- const n = {
30
- open: r,
31
- floatingId: f
1
+ "use client";
2
+ import { getWindow as u, isOverflowElement as Y } from "./index94.js";
3
+ import { isIOS as W, isWebKit as E } from "./index188.js";
4
+ import { ownerDocument as n } from "./index154.js";
5
+ import { useIsoLayoutEffect as T } from "./index97.js";
6
+ import { Timeout as k } from "./index138.js";
7
+ import { AnimationFrame as z } from "./index140.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 () => {
32
28
  };
33
- e.reference !== void 0 && (n.referenceElement = e.reference, n.domReferenceElement = s(e.reference) ? e.reference : null), e.floating !== void 0 && (n.floatingElement = e.floating), t.update(n);
34
- }, [r, f, e.reference, e.floating, t]), t.context.onOpenChange = i, t.context.nested = l, t.context.noEmit = o.noEmit || !1, t;
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]);
35
104
  }
36
105
  export {
37
- O as useFloatingRootContext
106
+ _ as useScrollLock
38
107
  };