@rpcbase/ui 0.233.0 → 0.234.0

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 (203) hide show
  1. package/dist/index167.js +3 -3
  2. package/dist/index172.js +3 -3
  3. package/dist/index175.js +1 -1
  4. package/dist/index176.js +4 -4
  5. package/dist/index182.js +1 -1
  6. package/dist/index184.js +12 -12
  7. package/dist/index185.js +1 -1
  8. package/dist/index187.js +5 -5
  9. package/dist/index189.js +6 -6
  10. package/dist/index190.js +5 -5
  11. package/dist/index193.js +3 -3
  12. package/dist/index194.js +5 -5
  13. package/dist/index198.js +57 -36
  14. package/dist/index198.js.map +1 -1
  15. package/dist/index199.js.map +1 -1
  16. package/dist/index262.js +2 -2
  17. package/dist/index274.js +1 -1
  18. package/dist/index278.js +20 -20
  19. package/dist/index278.js.map +1 -1
  20. package/dist/index279.js +24 -62
  21. package/dist/index279.js.map +1 -1
  22. package/dist/index280.js +16 -6
  23. package/dist/index280.js.map +1 -1
  24. package/dist/index281.js +20 -12
  25. package/dist/index281.js.map +1 -1
  26. package/dist/index282.js +64 -48
  27. package/dist/index282.js.map +1 -1
  28. package/dist/index283.js +7 -4
  29. package/dist/index283.js.map +1 -1
  30. package/dist/index284.js +11 -29
  31. package/dist/index284.js.map +1 -1
  32. package/dist/index285.js +49 -15
  33. package/dist/index285.js.map +1 -1
  34. package/dist/index286.js +4 -6
  35. package/dist/index286.js.map +1 -1
  36. package/dist/index287.js +28 -20
  37. package/dist/index287.js.map +1 -1
  38. package/dist/index288.js +15 -50
  39. package/dist/index288.js.map +1 -1
  40. package/dist/index289.js +5 -25
  41. package/dist/index289.js.map +1 -1
  42. package/dist/index290.js +21 -41
  43. package/dist/index290.js.map +1 -1
  44. package/dist/index291.js +50 -38
  45. package/dist/index291.js.map +1 -1
  46. package/dist/index292.js +26 -45
  47. package/dist/index292.js.map +1 -1
  48. package/dist/index293.js +40 -19
  49. package/dist/index293.js.map +1 -1
  50. package/dist/index294.js +38 -69
  51. package/dist/index294.js.map +1 -1
  52. package/dist/index295.js +45 -18
  53. package/dist/index295.js.map +1 -1
  54. package/dist/index296.js +20 -11
  55. package/dist/index296.js.map +1 -1
  56. package/dist/index297.js +69 -26
  57. package/dist/index297.js.map +1 -1
  58. package/dist/index298.js +16 -12
  59. package/dist/index298.js.map +1 -1
  60. package/dist/index299.js +10 -17
  61. package/dist/index299.js.map +1 -1
  62. package/dist/index300.js +26 -35
  63. package/dist/index300.js.map +1 -1
  64. package/dist/index301.js +12 -261
  65. package/dist/index301.js.map +1 -1
  66. package/dist/index302.js +15 -275
  67. package/dist/index302.js.map +1 -1
  68. package/dist/index303.js +36 -68
  69. package/dist/index303.js.map +1 -1
  70. package/dist/index304.js +256 -93
  71. package/dist/index304.js.map +1 -1
  72. package/dist/index305.js +270 -75
  73. package/dist/index305.js.map +1 -1
  74. package/dist/index306.js +68 -3
  75. package/dist/index306.js.map +1 -1
  76. package/dist/index307.js +96 -26
  77. package/dist/index307.js.map +1 -1
  78. package/dist/index308.js +83 -16
  79. package/dist/index308.js.map +1 -1
  80. package/dist/index309.js +4 -35
  81. package/dist/index309.js.map +1 -1
  82. package/dist/index310.js +28 -15
  83. package/dist/index310.js.map +1 -1
  84. package/dist/index311.js +16 -3
  85. package/dist/index311.js.map +1 -1
  86. package/dist/index312.js +35 -27
  87. package/dist/index312.js.map +1 -1
  88. package/dist/index313.js +16 -28
  89. package/dist/index313.js.map +1 -1
  90. package/dist/index314.js +4 -4
  91. package/dist/index314.js.map +1 -1
  92. package/dist/index315.js +23 -75
  93. package/dist/index315.js.map +1 -1
  94. package/dist/index316.js +25 -266
  95. package/dist/index316.js.map +1 -1
  96. package/dist/index317.js +4 -12
  97. package/dist/index317.js.map +1 -1
  98. package/dist/index318.js +79 -11
  99. package/dist/index318.js.map +1 -1
  100. package/dist/index319.js +267 -23
  101. package/dist/index319.js.map +1 -1
  102. package/dist/index320.js +11 -16
  103. package/dist/index320.js.map +1 -1
  104. package/dist/index321.js +10 -125
  105. package/dist/index321.js.map +1 -1
  106. package/dist/index322.js +24 -4
  107. package/dist/index322.js.map +1 -1
  108. package/dist/index323.js +16 -40
  109. package/dist/index323.js.map +1 -1
  110. package/dist/index324.js +121 -61
  111. package/dist/index324.js.map +1 -1
  112. package/dist/index325.js +6 -14
  113. package/dist/index325.js.map +1 -1
  114. package/dist/index326.js +40 -7
  115. package/dist/index326.js.map +1 -1
  116. package/dist/index327.js +65 -5
  117. package/dist/index327.js.map +1 -1
  118. package/dist/index328.js +14 -4
  119. package/dist/index328.js.map +1 -1
  120. package/dist/index329.js +7 -10
  121. package/dist/index329.js.map +1 -1
  122. package/dist/index330.js +5 -7
  123. package/dist/index330.js.map +1 -1
  124. package/dist/index331.js +3 -133
  125. package/dist/index331.js.map +1 -1
  126. package/dist/index332.js +9 -398
  127. package/dist/index332.js.map +1 -1
  128. package/dist/index333.js +7 -52
  129. package/dist/index333.js.map +1 -1
  130. package/dist/index334.js +133 -11
  131. package/dist/index334.js.map +1 -1
  132. package/dist/index335.js +399 -11
  133. package/dist/index335.js.map +1 -1
  134. package/dist/index336.js +51 -18
  135. package/dist/index336.js.map +1 -1
  136. package/dist/index337.js +11 -28
  137. package/dist/index337.js.map +1 -1
  138. package/dist/index338.js +11 -16
  139. package/dist/index338.js.map +1 -1
  140. package/dist/index339.js +1 -1
  141. package/dist/index346.js +2 -2
  142. package/dist/index347.js +122 -5
  143. package/dist/index347.js.map +1 -1
  144. package/dist/index348.js +31 -121
  145. package/dist/index348.js.map +1 -1
  146. package/dist/index349.js +72 -31
  147. package/dist/index349.js.map +1 -1
  148. package/dist/index350.js +139 -70
  149. package/dist/index350.js.map +1 -1
  150. package/dist/index351.js +35 -116
  151. package/dist/index351.js.map +1 -1
  152. package/dist/index352.js +44 -56
  153. package/dist/index352.js.map +1 -1
  154. package/dist/index353.js +14 -49
  155. package/dist/index353.js.map +1 -1
  156. package/dist/index354.js +6 -15
  157. package/dist/index354.js.map +1 -1
  158. package/dist/index368.js +1 -1
  159. package/dist/index371.js +2 -2
  160. package/dist/index372.js +3 -3
  161. package/dist/index374.js +3 -3
  162. package/dist/index375.js +1 -1
  163. package/dist/index376.js +3 -3
  164. package/dist/index378.js +2 -2
  165. package/dist/index380.js +1 -1
  166. package/dist/index381.js +2 -2
  167. package/dist/index384.js +2 -2
  168. package/dist/index386.js +1 -1
  169. package/dist/index407.js +1 -1
  170. package/dist/index417.js +1 -1
  171. package/dist/index418.js +1 -1
  172. package/dist/index421.js +1 -1
  173. package/dist/index422.js +1 -1
  174. package/dist/index427.js +2 -2
  175. package/dist/index429.js +2 -2
  176. package/dist/index44.js +1 -1
  177. package/dist/index45.js +2 -2
  178. package/dist/index49.js +28 -28
  179. package/dist/index50.js +21 -21
  180. package/dist/index51.js +1 -1
  181. package/dist/index52.js +8 -8
  182. package/dist/index53.js +2 -2
  183. package/dist/index55.js +17 -17
  184. package/dist/index56.js +4 -4
  185. package/dist/index57.js +3 -3
  186. package/dist/index58.js +7 -7
  187. package/dist/index59.js +4 -4
  188. package/dist/index60.js +12 -12
  189. package/dist/index61.js +2 -2
  190. package/dist/index62.js +2 -2
  191. package/dist/index70.js +1 -1
  192. package/dist/index71.js +1 -1
  193. package/dist/index74.js +6 -2
  194. package/dist/index74.js.map +1 -1
  195. package/dist/index75.js +8 -2
  196. package/dist/index75.js.map +1 -1
  197. package/dist/index76.js +5 -5
  198. package/dist/index76.js.map +1 -1
  199. package/dist/index77.js +2 -8
  200. package/dist/index77.js.map +1 -1
  201. package/dist/index78.js +2 -6
  202. package/dist/index78.js.map +1 -1
  203. package/package.json +1 -1
package/dist/index304.js CHANGED
@@ -1,103 +1,266 @@
1
- import { mergeObjects as y } from "./index340.js";
2
- const o = {};
3
- function j(t, n, e, r, c) {
4
- if (!e && !r && !c && !t)
5
- return u(n);
6
- let f = u(t);
7
- return n && (f = i(f, n)), e && (f = i(f, e)), r && (f = i(f, r)), c && (f = i(f, c)), f;
8
- }
9
- function w(t) {
10
- if (t.length === 0)
11
- return o;
12
- if (t.length === 1)
13
- return u(t[0]);
14
- let n = u(t[0]);
15
- for (let e = 1; e < t.length; e += 1)
16
- n = i(n, t[e]);
17
- return n;
18
- }
19
- function u(t) {
20
- return l(t) ? {
21
- ...s(t, o)
22
- } : m(t);
23
- }
24
- function i(t, n) {
25
- return l(n) ? s(n, t) : U(t, n);
1
+ import * as a from "react";
2
+ import { isWebKit as Ae, isElement as v, isShadowRoot as Be, isLastTraversableNode as Z, getParentNode as Ne, isHTMLElement as Le, getComputedStyle as Fe } from "./index334.js";
3
+ import { addEventListener as u } from "./index325.js";
4
+ import { mergeCleanups as z } from "./index373.js";
5
+ import { useTimeout as de, Timeout as pe } from "./index310.js";
6
+ import { useStableCallback as y } from "./index287.js";
7
+ import { ownerDocument as me } from "./index309.js";
8
+ import { isEventTargetWithin as f, isRootElement as $e } from "./index315.js";
9
+ import { isReactEvent as qe } from "./index375.js";
10
+ import { getNodeChildren as ee } from "./index377.js";
11
+ import { useFloatingTree as Ve } from "./index382.js";
12
+ import { createChangeEventDetails as A } from "./index175.js";
13
+ import { createAttribute as Ue } from "./index379.js";
14
+ import { getTarget as te, contains as B } from "./index316.js";
15
+ import { triggerPress as he, escapeKey as je, outsidePress as Ge } from "./index177.js";
16
+ const Je = {
17
+ intentional: "onClick",
18
+ sloppy: "onPointerDown"
19
+ };
20
+ function Qe() {
21
+ return !1;
26
22
  }
27
- function m(t) {
28
- const n = {
29
- ...t
23
+ function Ze(d) {
24
+ return {
25
+ escapeKey: typeof d == "boolean" ? d : d?.escapeKey ?? !1,
26
+ outsidePress: typeof d == "boolean" ? d : d?.outsidePress ?? !0
30
27
  };
31
- for (const e in n) {
32
- const r = n[e];
33
- a(e, r) && (n[e] = v(r));
34
- }
35
- return n;
36
28
  }
37
- function U(t, n) {
38
- if (!n)
39
- return t;
40
- for (const e in n) {
41
- const r = n[e];
42
- switch (e) {
43
- case "style": {
44
- t[e] = y(t.style, r);
45
- break;
29
+ function pt(d, Ee = {}) {
30
+ const n = "rootStore" in d ? d.rootStore : d, S = n.useState("open"), ne = n.useState("floatingElement"), {
31
+ dataRef: m
32
+ } = n.context, {
33
+ enabled: h = !0,
34
+ escapeKey: N = !0,
35
+ outsidePress: x = !0,
36
+ outsidePressEvent: ge = "sloppy",
37
+ referencePress: ye = Qe,
38
+ referencePressEvent: L = "sloppy",
39
+ bubbles: Pe,
40
+ externalTree: Re
41
+ } = Ee, P = Ve(Re), Te = y(typeof x == "function" ? x : () => !1), R = typeof x == "function" ? Te : x, re = R !== !1, se = y(() => ge), O = a.useRef(!1), X = a.useRef(!1), b = a.useRef(!1), {
42
+ escapeKey: W,
43
+ outsidePress: oe
44
+ } = Ze(Pe), s = a.useRef(null), D = de(), ce = de(), E = y(() => {
45
+ ce.clear(), m.current.insideReactTree = !1;
46
+ }), F = a.useRef(!1), $ = a.useRef(""), q = y(ye), w = y((r) => {
47
+ if (!S || !h || !N || r.key !== "Escape" || F.current)
48
+ return;
49
+ const g = m.current.floatingContext?.nodeId, Y = P ? ee(P.nodesRef.current, g) : [];
50
+ if (!W && Y.length > 0) {
51
+ let M = !0;
52
+ if (Y.forEach((p) => {
53
+ p.context?.open && !p.context.dataRef.current.__escapeKeyBubbles && (M = !1);
54
+ }), !M)
55
+ return;
56
+ }
57
+ const G = qe(r) ? r.nativeEvent : r, I = A(je, G);
58
+ n.setOpen(!1, I), !W && !I.isPropagationAllowed && r.stopPropagation();
59
+ }), T = y(() => {
60
+ m.current.insideReactTree = !0, ce.start(0, E);
61
+ });
62
+ a.useEffect(() => {
63
+ if (!S || !h)
64
+ return;
65
+ m.current.__escapeKeyBubbles = W, m.current.__outsidePressBubbles = oe;
66
+ const r = new pe(), g = new pe();
67
+ function Y() {
68
+ r.clear(), F.current = !0;
69
+ }
70
+ function G() {
71
+ r.start(
72
+ // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.
73
+ // Only apply to WebKit for the test to remain 0ms.
74
+ Ae() ? 5 : 0,
75
+ () => {
76
+ F.current = !1;
77
+ }
78
+ );
79
+ }
80
+ function I() {
81
+ b.current = !0, g.start(0, () => {
82
+ b.current = !1;
83
+ });
84
+ }
85
+ function M() {
86
+ O.current = !1, X.current = !1;
87
+ }
88
+ function p() {
89
+ const e = $.current, t = e === "pen" || !e ? "mouse" : e, o = se(), c = typeof o == "function" ? o() : o;
90
+ return typeof c == "string" ? c : c[t];
91
+ }
92
+ function be(e) {
93
+ const t = p();
94
+ return t === "intentional" && e.type !== "click" || t === "sloppy" && e.type === "click";
95
+ }
96
+ function ue(e) {
97
+ const t = m.current.floatingContext?.nodeId, o = P && ee(P.nodesRef.current, t).some((c) => f(e, c.context?.elements.floating));
98
+ return f(e, n.select("floatingElement")) || f(e, n.select("domReferenceElement")) || o;
99
+ }
100
+ function _(e) {
101
+ if (be(e)) {
102
+ E();
103
+ return;
104
+ }
105
+ if (m.current.insideReactTree) {
106
+ E();
107
+ return;
108
+ }
109
+ const t = te(e), o = `[${Ue("inert")}]`, c = v(t) ? t.getRootNode() : null, k = Array.from((Be(c) ? c : me(n.select("floatingElement"))).querySelectorAll(o)), le = n.context.triggerElements;
110
+ if (t && (le.hasElement(t) || le.hasMatchingElement((i) => B(i, t))))
111
+ return;
112
+ let K = v(t) ? t : null;
113
+ for (; K && !Z(K); ) {
114
+ const i = Ne(K);
115
+ if (Z(i) || !v(i))
116
+ break;
117
+ K = i;
46
118
  }
47
- case "className": {
48
- t[e] = M(t.className, r);
49
- break;
119
+ if (k.length && v(t) && !$e(t) && // Clicked on a direct ancestor (e.g. FloatingOverlay).
120
+ !B(t, n.select("floatingElement")) && // If the target root element contains none of the markers, then the
121
+ // element was injected after the floating element rendered.
122
+ k.every((i) => !B(K, i)))
123
+ return;
124
+ if (Le(t) && !("touches" in e)) {
125
+ const i = Z(t), C = Fe(t), fe = /auto|scroll/, xe = i || fe.test(C.overflowX), Xe = i || fe.test(C.overflowY), We = xe && t.clientWidth > 0 && t.scrollWidth > t.clientWidth, Ye = Xe && t.clientHeight > 0 && t.scrollHeight > t.clientHeight, _e = C.direction === "rtl", He = Ye && (_e ? e.offsetX <= t.offsetWidth - t.clientWidth : e.offsetX > t.clientWidth), ve = We && e.offsetY > t.clientHeight;
126
+ if (He || ve)
127
+ return;
50
128
  }
51
- default:
52
- a(e, r) ? t[e] = A(t[e], r) : t[e] = r;
129
+ if (ue(e))
130
+ return;
131
+ if (p() === "intentional" && b.current) {
132
+ g.clear(), b.current = !1;
133
+ return;
134
+ }
135
+ if (typeof R == "function" && !R(e))
136
+ return;
137
+ const Ke = m.current.floatingContext?.nodeId, ae = P ? ee(P.nodesRef.current, Ke) : [];
138
+ if (ae.length > 0) {
139
+ let i = !0;
140
+ if (ae.forEach((C) => {
141
+ C.context?.open && !C.context.dataRef.current.__outsidePressBubbles && (i = !1);
142
+ }), !i)
143
+ return;
144
+ }
145
+ n.setOpen(!1, A(Ge, e)), E();
53
146
  }
54
- }
55
- return t;
56
- }
57
- function a(t, n) {
58
- const e = t.charCodeAt(0), r = t.charCodeAt(1), c = t.charCodeAt(2);
59
- return e === 111 && r === 110 && c >= 65 && c <= 90 && (typeof n == "function" || typeof n > "u");
60
- }
61
- function l(t) {
62
- return typeof t == "function";
63
- }
64
- function s(t, n) {
65
- return l(t) ? t(n) : t ?? o;
66
- }
67
- function A(t, n) {
68
- return n ? t ? (...e) => {
69
- const r = e[0];
70
- if (I(r)) {
71
- const f = r;
72
- E(f);
73
- const b = n(...e);
74
- return f.baseUIHandlerPrevented || t?.(...e), b;
75
- }
76
- const c = n(...e);
77
- return t?.(...e), c;
78
- } : v(n) : t;
79
- }
80
- function v(t) {
81
- return t && ((...n) => {
82
- const e = n[0];
83
- return I(e) && E(e), t(...n);
84
- });
85
- }
86
- function E(t) {
87
- return t.preventBaseUIHandler = () => {
88
- t.baseUIHandlerPrevented = !0;
89
- }, t;
90
- }
91
- function M(t, n) {
92
- return n ? t ? n + " " + t : n : t;
93
- }
94
- function I(t) {
95
- return t != null && typeof t == "object" && "nativeEvent" in t;
147
+ function we(e) {
148
+ p() !== "sloppy" || e.pointerType === "touch" || !n.select("open") || !h || f(e, n.select("floatingElement")) || f(e, n.select("domReferenceElement")) || _(e);
149
+ }
150
+ function Ce(e) {
151
+ if (p() !== "sloppy" || !n.select("open") || !h || f(e, n.select("floatingElement")) || f(e, n.select("domReferenceElement")))
152
+ return;
153
+ const t = e.touches[0];
154
+ t && (s.current = {
155
+ startTime: Date.now(),
156
+ startX: t.clientX,
157
+ startY: t.clientY,
158
+ dismissOnTouchEnd: !1,
159
+ dismissOnMouseDown: !0
160
+ }, D.start(1e3, () => {
161
+ s.current && (s.current.dismissOnTouchEnd = !1, s.current.dismissOnMouseDown = !1);
162
+ }));
163
+ }
164
+ function H(e, t) {
165
+ const o = te(e);
166
+ if (!o)
167
+ return;
168
+ const c = u(o, e.type, () => {
169
+ t(e), c();
170
+ });
171
+ }
172
+ function Se(e) {
173
+ $.current = "touch", H(e, Ce);
174
+ }
175
+ function J(e) {
176
+ D.clear(), e.type === "pointerdown" && ($.current = e.pointerType), !(e.type === "mousedown" && s.current && !s.current.dismissOnMouseDown) && H(e, (t) => {
177
+ t.type === "pointerdown" ? we(t) : _(t);
178
+ });
179
+ }
180
+ function Q(e) {
181
+ if (!O.current)
182
+ return;
183
+ const t = X.current;
184
+ if (M(), p() === "intentional") {
185
+ if (e.type === "pointercancel") {
186
+ t && I();
187
+ return;
188
+ }
189
+ if (!ue(e)) {
190
+ if (t) {
191
+ I();
192
+ return;
193
+ }
194
+ typeof R == "function" && !R(e) || (g.clear(), b.current = !0, E());
195
+ }
196
+ }
197
+ }
198
+ function Oe(e) {
199
+ if (p() !== "sloppy" || !s.current || f(e, n.select("floatingElement")) || f(e, n.select("domReferenceElement")))
200
+ return;
201
+ const t = e.touches[0];
202
+ if (!t)
203
+ return;
204
+ const o = Math.abs(t.clientX - s.current.startX), c = Math.abs(t.clientY - s.current.startY), k = Math.sqrt(o * o + c * c);
205
+ k > 5 && (s.current.dismissOnTouchEnd = !0), k > 10 && (_(e), D.clear(), s.current = null);
206
+ }
207
+ function De(e) {
208
+ H(e, Oe);
209
+ }
210
+ function Ie(e) {
211
+ p() !== "sloppy" || !s.current || f(e, n.select("floatingElement")) || f(e, n.select("domReferenceElement")) || (s.current.dismissOnTouchEnd && _(e), D.clear(), s.current = null);
212
+ }
213
+ function Me(e) {
214
+ H(e, Ie);
215
+ }
216
+ const l = me(ne), ke = z(N && z(u(l, "keydown", w), u(l, "compositionstart", Y), u(l, "compositionend", G)), re && z(u(l, "click", J, !0), u(l, "pointerdown", J, !0), u(l, "pointerup", Q, !0), u(l, "pointercancel", Q, !0), u(l, "mousedown", J, !0), u(l, "mouseup", Q, !0), u(l, "touchstart", Se, !0), u(l, "touchmove", De, !0), u(l, "touchend", Me, !0)));
217
+ return () => {
218
+ ke(), r.clear(), g.clear(), M(), b.current = !1;
219
+ };
220
+ }, [m, ne, N, re, R, S, h, W, oe, w, E, se, P, n, D]), a.useEffect(E, [R, E]);
221
+ const V = a.useMemo(() => ({
222
+ onKeyDown: w,
223
+ [Je[L]]: (r) => {
224
+ q() && n.setOpen(!1, A(he, r.nativeEvent));
225
+ },
226
+ ...L !== "intentional" && {
227
+ onClick(r) {
228
+ q() && n.setOpen(!1, A(he, r.nativeEvent));
229
+ }
230
+ }
231
+ }), [w, n, L, q]), U = y((r) => {
232
+ if (!S || !h || r.button !== 0)
233
+ return;
234
+ const g = te(r.nativeEvent);
235
+ B(n.select("floatingElement"), g) && (O.current || (O.current = !0, X.current = !1));
236
+ }), j = y((r) => {
237
+ !S || !h || (r.defaultPrevented || r.nativeEvent.defaultPrevented) && O.current && (X.current = !0);
238
+ }), ie = a.useMemo(() => ({
239
+ onKeyDown: w,
240
+ // `onMouseDown` may be blocked if `event.preventDefault()` is called in
241
+ // `onPointerDown`, such as with <NumberField.ScrubArea>.
242
+ // See https://github.com/mui/base-ui/pull/3379
243
+ onPointerDown: j,
244
+ onMouseDown: j,
245
+ onClickCapture: T,
246
+ onMouseDownCapture(r) {
247
+ T(), U(r);
248
+ },
249
+ onPointerDownCapture(r) {
250
+ T(), U(r);
251
+ },
252
+ onMouseUpCapture: T,
253
+ onTouchEndCapture: T,
254
+ onTouchMoveCapture: T
255
+ }), [w, T, U, j]);
256
+ return a.useMemo(() => h ? {
257
+ reference: V,
258
+ floating: ie,
259
+ trigger: V
260
+ } : {}, [h, V, ie]);
96
261
  }
97
262
  export {
98
- E as makeEventPreventable,
99
- M as mergeClassNames,
100
- j as mergeProps,
101
- w as mergePropsN
263
+ Ze as normalizeProp,
264
+ pt as useDismiss
102
265
  };
103
266
  //# sourceMappingURL=index304.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index304.js","sources":["../../../node_modules/@base-ui/react/esm/merge-props/mergeProps.js"],"sourcesContent":["import { mergeObjects } from '@base-ui/utils/mergeObjects';\nconst EMPTY_PROPS = {};\n\n/* eslint-disable id-denylist */\n/**\n * Merges multiple sets of React props. It follows the Object.assign pattern where the rightmost object's fields overwrite\n * the conflicting ones from others. This doesn't apply to event handlers, `className` and `style` props.\n *\n * Event handlers are merged and called in right-to-left order (rightmost handler executes first, leftmost last).\n * For React synthetic events, the rightmost handler can prevent prior (left-positioned) handlers from executing\n * by calling `event.preventBaseUIHandler()`. For non-synthetic events (custom events with primitive/object values),\n * all handlers always execute without prevention capability.\n *\n * The `className` prop is merged by concatenating classes in right-to-left order (rightmost class appears first in the string).\n * The `style` prop is merged with rightmost styles overwriting the prior ones.\n *\n * Props can either be provided as objects or as functions that take the previous props as an argument.\n * The function will receive the merged props up to that point (going from left to right):\n * so in the case of `(obj1, obj2, fn, obj3)`, `fn` will receive the merged props of `obj1` and `obj2`.\n * The function is responsible for chaining event handlers if needed (that is, we don't run the merge logic).\n *\n * Event handlers returned by the functions are not automatically prevented when `preventBaseUIHandler` is called.\n * They must check `event.baseUIHandlerPrevented` themselves and bail out if it's true.\n *\n * @important **`ref` is not merged.**\n * @param a Props object to merge.\n * @param b Props object to merge. The function will overwrite conflicting props from `a`.\n * @param c Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @param d Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @param e Props object to merge. The function will overwrite conflicting props from previous parameters.\n * @returns The merged props.\n * @public\n */\n\nexport function mergeProps(a, b, c, d, e) {\n if (!c && !d && !e && !a) {\n return createInitialMergedProps(b);\n }\n\n // We need to mutably own `merged`.\n let merged = createInitialMergedProps(a);\n if (b) {\n merged = mergeInto(merged, b);\n }\n if (c) {\n merged = mergeInto(merged, c);\n }\n if (d) {\n merged = mergeInto(merged, d);\n }\n if (e) {\n merged = mergeInto(merged, e);\n }\n return merged;\n}\n/* eslint-enable id-denylist */\n\n/**\n * Merges an arbitrary number of React props using the same logic as {@link mergeProps}.\n * This function accepts an array of props instead of individual arguments.\n *\n * This has slightly lower performance than {@link mergeProps} due to accepting an array\n * instead of a fixed number of arguments. Prefer {@link mergeProps} when merging 5 or\n * fewer prop sets for better performance.\n *\n * @param props Array of props to merge.\n * @returns The merged props.\n * @see mergeProps\n * @public\n */\nexport function mergePropsN(props) {\n if (props.length === 0) {\n return EMPTY_PROPS;\n }\n if (props.length === 1) {\n return createInitialMergedProps(props[0]);\n }\n\n // We need to mutably own `merged`.\n let merged = createInitialMergedProps(props[0]);\n for (let i = 1; i < props.length; i += 1) {\n merged = mergeInto(merged, props[i]);\n }\n return merged;\n}\nfunction createInitialMergedProps(inputProps) {\n if (isPropsGetter(inputProps)) {\n // Getter-returned handlers intentionally keep their existing semantics.\n return {\n ...resolvePropsGetter(inputProps, EMPTY_PROPS)\n };\n }\n return copyInitialProps(inputProps);\n}\nfunction mergeInto(merged, inputProps) {\n if (isPropsGetter(inputProps)) {\n return resolvePropsGetter(inputProps, merged);\n }\n return mutablyMergeInto(merged, inputProps);\n}\nfunction copyInitialProps(inputProps) {\n const copiedProps = {\n ...inputProps\n };\n\n // `copiedProps` is our fresh own-object copy, so iterating with `for...in` is safe here.\n // eslint-disable-next-line guard-for-in\n for (const propName in copiedProps) {\n const propValue = copiedProps[propName];\n if (isEventHandler(propName, propValue)) {\n copiedProps[propName] = wrapEventHandler(propValue);\n }\n }\n return copiedProps;\n}\n\n/**\n * Merges two sets of props. In case of conflicts, the external props take precedence.\n */\nfunction mutablyMergeInto(mergedProps, externalProps) {\n if (!externalProps) {\n return mergedProps;\n }\n\n // eslint-disable-next-line guard-for-in\n for (const propName in externalProps) {\n const externalPropValue = externalProps[propName];\n switch (propName) {\n case 'style':\n {\n mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);\n break;\n }\n case 'className':\n {\n mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);\n break;\n }\n default:\n {\n if (isEventHandler(propName, externalPropValue)) {\n mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);\n } else {\n mergedProps[propName] = externalPropValue;\n }\n }\n }\n }\n return mergedProps;\n}\nfunction isEventHandler(key, value) {\n // This approach is more efficient than using a regex.\n const code0 = key.charCodeAt(0);\n const code1 = key.charCodeAt(1);\n const code2 = key.charCodeAt(2);\n return code0 === 111 /* o */ && code1 === 110 /* n */ && code2 >= 65 /* A */ && code2 <= 90 /* Z */ && (typeof value === 'function' || typeof value === 'undefined');\n}\nfunction isPropsGetter(inputProps) {\n return typeof inputProps === 'function';\n}\nfunction resolvePropsGetter(inputProps, previousProps) {\n if (isPropsGetter(inputProps)) {\n return inputProps(previousProps);\n }\n return inputProps ?? EMPTY_PROPS;\n}\nfunction mergeEventHandlers(ourHandler, theirHandler) {\n if (!theirHandler) {\n return ourHandler;\n }\n if (!ourHandler) {\n return wrapEventHandler(theirHandler);\n }\n return (...args) => {\n const event = args[0];\n if (isSyntheticEvent(event)) {\n const baseUIEvent = event;\n makeEventPreventable(baseUIEvent);\n const result = theirHandler(...args);\n if (!baseUIEvent.baseUIHandlerPrevented) {\n ourHandler?.(...args);\n }\n return result;\n }\n const result = theirHandler(...args);\n ourHandler?.(...args);\n return result;\n };\n}\nfunction wrapEventHandler(handler) {\n if (!handler) {\n return handler;\n }\n return (...args) => {\n const event = args[0];\n if (isSyntheticEvent(event)) {\n makeEventPreventable(event);\n }\n return handler(...args);\n };\n}\nexport function makeEventPreventable(event) {\n event.preventBaseUIHandler = () => {\n event.baseUIHandlerPrevented = true;\n };\n return event;\n}\nexport function mergeClassNames(ourClassName, theirClassName) {\n if (theirClassName) {\n if (ourClassName) {\n // eslint-disable-next-line prefer-template\n return theirClassName + ' ' + ourClassName;\n }\n return theirClassName;\n }\n return ourClassName;\n}\nfunction isSyntheticEvent(event) {\n return event != null && typeof event === 'object' && 'nativeEvent' in event;\n}"],"names":["EMPTY_PROPS","mergeProps","a","b","c","d","e","createInitialMergedProps","merged","mergeInto","mergePropsN","props","i","inputProps","isPropsGetter","resolvePropsGetter","copyInitialProps","mutablyMergeInto","copiedProps","propName","propValue","isEventHandler","wrapEventHandler","mergedProps","externalProps","externalPropValue","mergeObjects","mergeClassNames","mergeEventHandlers","key","value","code0","code1","code2","previousProps","ourHandler","theirHandler","args","event","isSyntheticEvent","baseUIEvent","makeEventPreventable","result","handler","ourClassName","theirClassName"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index304.js","sources":["../../../node_modules/@base-ui/react/esm/floating-ui-react/hooks/useDismiss.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { getComputedStyle, getParentNode, isElement, isHTMLElement, isLastTraversableNode, isShadowRoot, isWebKit } from '@floating-ui/utils/dom';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { mergeCleanups } from '@base-ui/utils/mergeCleanups';\nimport { Timeout, useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { contains, getTarget, isEventTargetWithin, isRootElement } from \"../utils/element.js\";\nimport { isReactEvent } from \"../utils/event.js\";\nimport { getNodeChildren } from \"../utils/nodes.js\";\n\n/* eslint-disable no-underscore-dangle */\n\nimport { useFloatingTree } from \"../components/FloatingTree.js\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../internals/reasons.js\";\nimport { createAttribute } from \"../utils/createAttribute.js\";\nconst bubbleHandlerKeys = {\n intentional: 'onClick',\n sloppy: 'onPointerDown'\n};\nfunction alwaysFalse() {\n return false;\n}\nexport function normalizeProp(normalizable) {\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : normalizable?.escapeKey ?? false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : normalizable?.outsidePress ?? true\n };\n}\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nexport function useDismiss(context, props = {}) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floatingElement = store.useState('floatingElement');\n const {\n dataRef\n } = store.context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: outsidePressProp = true,\n outsidePressEvent = 'sloppy',\n referencePress = alwaysFalse,\n referencePressEvent = 'sloppy',\n bubbles,\n externalTree\n } = props;\n const tree = useFloatingTree(externalTree);\n const outsidePressFn = useStableCallback(typeof outsidePressProp === 'function' ? outsidePressProp : () => false);\n const outsidePress = typeof outsidePressProp === 'function' ? outsidePressFn : outsidePressProp;\n const outsidePressEnabled = outsidePress !== false;\n const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent);\n const pressStartedInsideRef = React.useRef(false);\n const pressStartPreventedRef = React.useRef(false);\n // Ignore only the very next outside click after dragging from inside to outside.\n const suppressNextOutsideClickRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const touchStateRef = React.useRef(null);\n const cancelDismissOnEndTimeout = useTimeout();\n const clearInsideReactTreeTimeout = useTimeout();\n const clearInsideReactTree = useStableCallback(() => {\n clearInsideReactTreeTimeout.clear();\n dataRef.current.insideReactTree = false;\n });\n const isComposingRef = React.useRef(false);\n const currentPointerTypeRef = React.useRef('');\n const isReferencePressEnabled = useStableCallback(referencePress);\n const closeOnEscapeKeyDown = useStableCallback(event => {\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n const nodeId = dataRef.current.floatingContext?.nodeId;\n const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n if (child.context?.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n const native = isReactEvent(event) ? event.nativeEvent : event;\n const eventDetails = createChangeEventDetails(REASONS.escapeKey, native);\n store.setOpen(false, eventDetails);\n if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) {\n event.stopPropagation();\n }\n });\n const markInsideReactTree = useStableCallback(() => {\n dataRef.current.insideReactTree = true;\n clearInsideReactTreeTimeout.start(0, clearInsideReactTree);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return undefined;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n const compositionTimeout = new Timeout();\n const preventedPressSuppressionTimeout = new Timeout();\n function handleCompositionStart() {\n compositionTimeout.clear();\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout.start(\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n isWebKit() ? 5 : 0, () => {\n isComposingRef.current = false;\n });\n }\n function suppressImmediateOutsideClickAfterPreventedStart() {\n suppressNextOutsideClickRef.current = true;\n // Firefox can emit the synthetic outside click in a later task after\n // pointer lock exit, so microtask clearing is too early here.\n preventedPressSuppressionTimeout.start(0, () => {\n suppressNextOutsideClickRef.current = false;\n });\n }\n function resetPressStartState() {\n pressStartedInsideRef.current = false;\n pressStartPreventedRef.current = false;\n }\n function getOutsidePressEvent() {\n const type = currentPointerTypeRef.current;\n const computedType = type === 'pen' || !type ? 'mouse' : type;\n const outsidePressEventValue = getOutsidePressEventProp();\n const resolved = typeof outsidePressEventValue === 'function' ? outsidePressEventValue() : outsidePressEventValue;\n if (typeof resolved === 'string') {\n return resolved;\n }\n return resolved[computedType];\n }\n function shouldIgnoreEvent(event) {\n const computedOutsidePressEvent = getOutsidePressEvent();\n return computedOutsidePressEvent === 'intentional' && event.type !== 'click' || computedOutsidePressEvent === 'sloppy' && event.type === 'click';\n }\n function isEventWithinFloatingTree(event) {\n const nodeId = dataRef.current.floatingContext?.nodeId;\n const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some(node => isEventTargetWithin(event, node.context?.elements.floating));\n return isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement')) || targetIsInsideChildren;\n }\n function closeOnPressOutside(event) {\n if (shouldIgnoreEvent(event)) {\n clearInsideReactTree();\n return;\n }\n if (dataRef.current.insideReactTree) {\n clearInsideReactTree();\n return;\n }\n const target = getTarget(event);\n const inertSelector = `[${createAttribute('inert')}]`;\n const targetRoot = isElement(target) ? target.getRootNode() : null;\n const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select('floatingElement'))).querySelectorAll(inertSelector));\n const triggers = store.context.triggerElements;\n\n // If another trigger is clicked, don't close the floating element.\n if (target && (triggers.hasElement(target) || triggers.hasMatchingElement(trigger => contains(trigger, target)))) {\n return;\n }\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains(target, store.select('floatingElement')) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n markers.every(marker => !contains(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n // Skip for touch events: scrollbars don't receive touch events on most platforms\n if (isHTMLElement(target) && !('touches' in event)) {\n const lastTraversableNode = isLastTraversableNode(target);\n const style = getComputedStyle(target);\n const scrollRe = /auto|scroll/;\n const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);\n const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);\n const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n const isRTL = style.direction === 'rtl';\n\n // Check click position relative to scrollbar.\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);\n const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;\n if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {\n return;\n }\n }\n if (isEventWithinFloatingTree(event)) {\n return;\n }\n\n // In intentional mode, a press that starts inside and ends outside gets\n // one suppressed outside click. Run this after inside-target checks so\n // inside clicks don't consume the one-shot suppression.\n if (getOutsidePressEvent() === 'intentional' && suppressNextOutsideClickRef.current) {\n preventedPressSuppressionTimeout.clear();\n suppressNextOutsideClickRef.current = false;\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const nodeId = dataRef.current.floatingContext?.nodeId;\n const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n if (child.context?.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n store.setOpen(false, createChangeEventDetails(REASONS.outsidePress, event));\n clearInsideReactTree();\n }\n function handlePointerDown(event) {\n if (getOutsidePressEvent() !== 'sloppy' || event.pointerType === 'touch' || !store.select('open') || !enabled || isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'))) {\n return;\n }\n closeOnPressOutside(event);\n }\n function handleTouchStart(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !store.select('open') || !enabled || isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'))) {\n return;\n }\n const touch = event.touches[0];\n if (touch) {\n touchStateRef.current = {\n startTime: Date.now(),\n startX: touch.clientX,\n startY: touch.clientY,\n dismissOnTouchEnd: false,\n dismissOnMouseDown: true\n };\n cancelDismissOnEndTimeout.start(1000, () => {\n if (touchStateRef.current) {\n touchStateRef.current.dismissOnTouchEnd = false;\n touchStateRef.current.dismissOnMouseDown = false;\n }\n });\n }\n }\n function addTargetEventListenerOnce(event, listener) {\n const target = getTarget(event);\n if (!target) {\n return;\n }\n const unsubscribe = addEventListener(target, event.type, () => {\n listener(event);\n unsubscribe();\n });\n }\n function handleTouchStartCapture(event) {\n currentPointerTypeRef.current = 'touch';\n addTargetEventListenerOnce(event, handleTouchStart);\n }\n function closeOnPressOutsideCapture(event) {\n cancelDismissOnEndTimeout.clear();\n if (event.type === 'pointerdown') {\n currentPointerTypeRef.current = event.pointerType;\n }\n if (event.type === 'mousedown' && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) {\n return;\n }\n addTargetEventListenerOnce(event, targetEvent => {\n if (targetEvent.type === 'pointerdown') {\n handlePointerDown(targetEvent);\n } else {\n closeOnPressOutside(targetEvent);\n }\n });\n }\n function handlePressEndCapture(event) {\n if (!pressStartedInsideRef.current) {\n return;\n }\n const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current;\n resetPressStartState();\n if (getOutsidePressEvent() !== 'intentional') {\n return;\n }\n if (event.type === 'pointercancel') {\n if (pressStartedInsideDefaultPrevented) {\n suppressImmediateOutsideClickAfterPreventedStart();\n }\n return;\n }\n if (isEventWithinFloatingTree(event)) {\n return;\n }\n\n // If pointerdown was prevented, no click may be generated for that\n // interaction. However, Firefox may still emit an immediate click after\n // pointerup (e.g. NumberField scrub with pointer lock), so suppress for\n // one tick to absorb that synthetic click only.\n if (pressStartedInsideDefaultPrevented) {\n suppressImmediateOutsideClickAfterPreventedStart();\n return;\n }\n\n // Avoid suppressing when outsidePress explicitly ignores this target.\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n preventedPressSuppressionTimeout.clear();\n suppressNextOutsideClickRef.current = true;\n clearInsideReactTree();\n }\n function handleTouchMove(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !touchStateRef.current || isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'))) {\n return;\n }\n const touch = event.touches[0];\n if (!touch) {\n return;\n }\n const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX);\n const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY);\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n if (distance > 5) {\n touchStateRef.current.dismissOnTouchEnd = true;\n }\n if (distance > 10) {\n closeOnPressOutside(event);\n cancelDismissOnEndTimeout.clear();\n touchStateRef.current = null;\n }\n }\n function handleTouchMoveCapture(event) {\n addTargetEventListenerOnce(event, handleTouchMove);\n }\n function handleTouchEnd(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !touchStateRef.current || isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'))) {\n return;\n }\n if (touchStateRef.current.dismissOnTouchEnd) {\n closeOnPressOutside(event);\n }\n cancelDismissOnEndTimeout.clear();\n touchStateRef.current = null;\n }\n function handleTouchEndCapture(event) {\n addTargetEventListenerOnce(event, handleTouchEnd);\n }\n const doc = ownerDocument(floatingElement);\n const unsubscribe = mergeCleanups(escapeKey && mergeCleanups(addEventListener(doc, 'keydown', closeOnEscapeKeyDown), addEventListener(doc, 'compositionstart', handleCompositionStart), addEventListener(doc, 'compositionend', handleCompositionEnd)), outsidePressEnabled && mergeCleanups(addEventListener(doc, 'click', closeOnPressOutsideCapture, true), addEventListener(doc, 'pointerdown', closeOnPressOutsideCapture, true), addEventListener(doc, 'pointerup', handlePressEndCapture, true), addEventListener(doc, 'pointercancel', handlePressEndCapture, true), addEventListener(doc, 'mousedown', closeOnPressOutsideCapture, true), addEventListener(doc, 'mouseup', handlePressEndCapture, true), addEventListener(doc, 'touchstart', handleTouchStartCapture, true), addEventListener(doc, 'touchmove', handleTouchMoveCapture, true), addEventListener(doc, 'touchend', handleTouchEndCapture, true)));\n return () => {\n unsubscribe();\n compositionTimeout.clear();\n preventedPressSuppressionTimeout.clear();\n resetPressStartState();\n suppressNextOutsideClickRef.current = false;\n };\n }, [dataRef, floatingElement, escapeKey, outsidePressEnabled, outsidePress, open, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, tree, store, cancelDismissOnEndTimeout]);\n React.useEffect(clearInsideReactTree, [outsidePress, clearInsideReactTree]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n if (!isReferencePressEnabled()) {\n return;\n }\n store.setOpen(false, createChangeEventDetails(REASONS.triggerPress, event.nativeEvent));\n },\n ...(referencePressEvent !== 'intentional' && {\n onClick(event) {\n if (!isReferencePressEnabled()) {\n return;\n }\n store.setOpen(false, createChangeEventDetails(REASONS.triggerPress, event.nativeEvent));\n }\n })\n }), [closeOnEscapeKeyDown, store, referencePressEvent, isReferencePressEnabled]);\n const markPressStartedInsideReactTree = useStableCallback(event => {\n if (!open || !enabled || event.button !== 0) {\n return;\n }\n const target = getTarget(event.nativeEvent);\n // Only treat presses that start within the floating DOM subtree as inside.\n // This avoids suppressing parent dismissal when interacting with nested portals.\n if (!contains(store.select('floatingElement'), target)) {\n return;\n }\n if (!pressStartedInsideRef.current) {\n pressStartedInsideRef.current = true;\n pressStartPreventedRef.current = false;\n }\n });\n const markInsidePressStartPrevented = useStableCallback(event => {\n if (!open || !enabled) {\n return;\n }\n if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) {\n return;\n }\n if (pressStartedInsideRef.current) {\n pressStartPreventedRef.current = true;\n }\n });\n const floating = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n // `onMouseDown` may be blocked if `event.preventDefault()` is called in\n // `onPointerDown`, such as with <NumberField.ScrubArea>.\n // See https://github.com/mui/base-ui/pull/3379\n onPointerDown: markInsidePressStartPrevented,\n onMouseDown: markInsidePressStartPrevented,\n onClickCapture: markInsideReactTree,\n onMouseDownCapture(event) {\n markInsideReactTree();\n markPressStartedInsideReactTree(event);\n },\n onPointerDownCapture(event) {\n markInsideReactTree();\n markPressStartedInsideReactTree(event);\n },\n onMouseUpCapture: markInsideReactTree,\n onTouchEndCapture: markInsideReactTree,\n onTouchMoveCapture: markInsideReactTree\n }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n trigger: reference\n } : {}, [enabled, reference, floating]);\n}"],"names":["bubbleHandlerKeys","alwaysFalse","normalizeProp","normalizable","useDismiss","context","props","store","open","floatingElement","dataRef","enabled","escapeKey","outsidePressProp","outsidePressEvent","referencePress","referencePressEvent","bubbles","externalTree","tree","useFloatingTree","outsidePressFn","useStableCallback","outsidePress","outsidePressEnabled","getOutsidePressEventProp","pressStartedInsideRef","React","pressStartPreventedRef","suppressNextOutsideClickRef","escapeKeyBubbles","outsidePressBubbles","touchStateRef","cancelDismissOnEndTimeout","useTimeout","clearInsideReactTreeTimeout","clearInsideReactTree","isComposingRef","currentPointerTypeRef","isReferencePressEnabled","closeOnEscapeKeyDown","event","nodeId","children","getNodeChildren","shouldDismiss","child","native","isReactEvent","eventDetails","createChangeEventDetails","REASONS.escapeKey","markInsideReactTree","compositionTimeout","Timeout","preventedPressSuppressionTimeout","handleCompositionStart","handleCompositionEnd","isWebKit","suppressImmediateOutsideClickAfterPreventedStart","resetPressStartState","getOutsidePressEvent","type","computedType","outsidePressEventValue","resolved","shouldIgnoreEvent","computedOutsidePressEvent","isEventWithinFloatingTree","targetIsInsideChildren","node","isEventTargetWithin","closeOnPressOutside","target","getTarget","inertSelector","createAttribute","targetRoot","isElement","markers","isShadowRoot","ownerDocument","triggers","trigger","contains","targetRootAncestor","isLastTraversableNode","nextParent","getParentNode","isRootElement","marker","isHTMLElement","lastTraversableNode","style","getComputedStyle","scrollRe","isScrollableX","isScrollableY","canScrollX","canScrollY","isRTL","pressedVerticalScrollbar","pressedHorizontalScrollbar","REASONS.outsidePress","handlePointerDown","handleTouchStart","touch","addTargetEventListenerOnce","listener","unsubscribe","addEventListener","handleTouchStartCapture","closeOnPressOutsideCapture","targetEvent","handlePressEndCapture","pressStartedInsideDefaultPrevented","handleTouchMove","deltaX","deltaY","distance","handleTouchMoveCapture","handleTouchEnd","handleTouchEndCapture","doc","mergeCleanups","reference","REASONS.triggerPress","markPressStartedInsideReactTree","markInsidePressStartPrevented","floating"],"mappings":"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","x_google_ignoreList":[0]}