@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/index157.js CHANGED
@@ -1,35 +1,107 @@
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
1
+ "use client";
2
+ import { getWindow as u, isOverflowElement as Y } from "./index101.js";
3
+ import { isIOS as W, isWebKit as E } from "./index162.js";
4
+ import { ownerDocument as n } from "./index151.js";
5
+ import { useIsoLayoutEffect as T } from "./index104.js";
6
+ import { Timeout as k } from "./index152.js";
7
+ import { AnimationFrame as z } from "./index164.js";
8
+ import { NOOP as H } from "./index100.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
29
43
  };
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;
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]);
32
104
  }
33
105
  export {
34
- v as useSyncedFloatingRootContext
106
+ _ as useScrollLock
35
107
  };
package/dist/index158.js CHANGED
@@ -1,233 +1,82 @@
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)
1
+ "use client";
2
+ import * as a from "react";
3
+ import { useRefWithInit as T } from "./index107.js";
4
+ import { useStableCallback as m } from "./index102.js";
5
+ import { useIsoLayoutEffect as f } from "./index104.js";
6
+ import { CompositeListContext as D } from "./index211.js";
7
+ import { jsx as L } from "react/jsx-runtime";
8
+ function k(h) {
9
+ const {
10
+ children: N,
11
+ elementsRef: t,
12
+ labelsRef: o,
13
+ onMapChange: _
14
+ } = h, C = m(_), O = a.useRef(0), d = T(R).current, i = T(P).current, [p, M] = a.useState(0), c = a.useRef(p), E = m((e, u) => {
15
+ i.set(e, u ?? null), c.current += 1, M(c.current);
16
+ }), I = m((e) => {
17
+ i.delete(e), c.current += 1, M(c.current);
18
+ }), r = a.useMemo(() => {
19
+ const e = /* @__PURE__ */ new Map();
20
+ return Array.from(i.keys()).filter((n) => n.isConnected).sort(S).forEach((n, l) => {
21
+ const s = i.get(n) ?? {};
22
+ e.set(n, {
23
+ ...s,
24
+ index: l
25
+ });
26
+ }), e;
27
+ }, [i, p]);
28
+ f(() => {
29
+ if (typeof MutationObserver != "function" || r.size === 0)
162
30
  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
31
+ const e = new MutationObserver((u) => {
32
+ const n = /* @__PURE__ */ new Set(), l = (s) => n.has(s) ? n.delete(s) : n.add(s);
33
+ u.forEach((s) => {
34
+ s.removedNodes.forEach(l), s.addedNodes.forEach(l);
35
+ }), n.size === 0 && (c.current += 1, M(c.current));
36
+ });
37
+ return r.forEach((u, n) => {
38
+ n.parentElement && e.observe(n.parentElement, {
39
+ childList: !0
187
40
  });
188
41
  }), () => {
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();
42
+ e.disconnect();
192
43
  };
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]);
44
+ }, [r]), f(() => {
45
+ c.current === p && (t.current.length !== r.size && (t.current.length = r.size), o && o.current.length !== r.size && (o.current.length = r.size), O.current = r.size), C(r);
46
+ }, [C, r, t, o, p]), f(() => () => {
47
+ t.current = [];
48
+ }, [t]), f(() => () => {
49
+ o && (o.current = []);
50
+ }, [o]);
51
+ const g = m((e) => (d.add(e), () => {
52
+ d.delete(e);
53
+ }));
54
+ f(() => {
55
+ d.forEach((e) => e(r));
56
+ }, [d, r]);
57
+ const b = a.useMemo(() => ({
58
+ register: E,
59
+ unregister: I,
60
+ subscribeMapChange: g,
61
+ elementsRef: t,
62
+ labelsRef: o,
63
+ nextIndexRef: O
64
+ }), [E, I, g, t, o, O]);
65
+ return /* @__PURE__ */ L(D.Provider, {
66
+ value: b,
67
+ children: N
68
+ });
69
+ }
70
+ function P() {
71
+ return /* @__PURE__ */ new Map();
72
+ }
73
+ function R() {
74
+ return /* @__PURE__ */ new Set();
75
+ }
76
+ function S(h, N) {
77
+ const t = h.compareDocumentPosition(N);
78
+ return t & Node.DOCUMENT_POSITION_FOLLOWING || t & Node.DOCUMENT_POSITION_CONTAINED_BY ? -1 : t & Node.DOCUMENT_POSITION_PRECEDING || t & Node.DOCUMENT_POSITION_CONTAINS ? 1 : 0;
229
79
  }
230
80
  export {
231
- He as normalizeProp,
232
- Je as useDismiss
81
+ k as CompositeList
233
82
  };