@tamagui/floating 2.0.0-rc.4 → 2.0.0-rc.40

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 (191) hide show
  1. package/dist/cjs/Floating.cjs +7 -5
  2. package/dist/cjs/Floating.native.js +19 -13
  3. package/dist/cjs/Floating.native.js.map +1 -1
  4. package/dist/cjs/index.cjs +46 -13
  5. package/dist/cjs/index.native.js +46 -13
  6. package/dist/cjs/index.native.js.map +1 -1
  7. package/dist/cjs/interactions/PopupTriggerMap.cjs +49 -0
  8. package/dist/cjs/interactions/PopupTriggerMap.native.js +97 -0
  9. package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -0
  10. package/dist/cjs/interactions/createFloatingEvents.cjs +50 -0
  11. package/dist/cjs/interactions/createFloatingEvents.native.js +56 -0
  12. package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -0
  13. package/dist/cjs/interactions/safePolygon.cjs +273 -0
  14. package/dist/cjs/interactions/safePolygon.native.js +284 -0
  15. package/dist/cjs/interactions/safePolygon.native.js.map +1 -0
  16. package/dist/cjs/interactions/types.cjs +18 -0
  17. package/dist/cjs/interactions/types.native.js +21 -0
  18. package/dist/cjs/interactions/types.native.js.map +1 -0
  19. package/dist/cjs/interactions/useClick.cjs +124 -0
  20. package/dist/cjs/interactions/useClick.native.js +132 -0
  21. package/dist/cjs/interactions/useClick.native.js.map +1 -0
  22. package/dist/cjs/interactions/useDelayGroup.cjs +115 -0
  23. package/dist/cjs/interactions/useDelayGroup.native.js +125 -0
  24. package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -0
  25. package/dist/cjs/interactions/useFocus.cjs +130 -0
  26. package/dist/cjs/interactions/useFocus.native.js +139 -0
  27. package/dist/cjs/interactions/useFocus.native.js.map +1 -0
  28. package/dist/cjs/interactions/useHover.cjs +357 -0
  29. package/dist/cjs/interactions/useHover.native.js +373 -0
  30. package/dist/cjs/interactions/useHover.native.js.map +1 -0
  31. package/dist/cjs/interactions/useInnerOffset.cjs +128 -0
  32. package/dist/cjs/interactions/useInnerOffset.native.js +141 -0
  33. package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -0
  34. package/dist/cjs/interactions/useInteractions.cjs +105 -0
  35. package/dist/cjs/interactions/useInteractions.native.js +216 -0
  36. package/dist/cjs/interactions/useInteractions.native.js.map +1 -0
  37. package/dist/cjs/interactions/useListNavigation.cjs +418 -0
  38. package/dist/cjs/interactions/useListNavigation.native.js +433 -0
  39. package/dist/cjs/interactions/useListNavigation.native.js.map +1 -0
  40. package/dist/cjs/interactions/useRole.cjs +122 -0
  41. package/dist/cjs/interactions/useRole.native.js +136 -0
  42. package/dist/cjs/interactions/useRole.native.js.map +1 -0
  43. package/dist/cjs/interactions/useTypeahead.cjs +143 -0
  44. package/dist/cjs/interactions/useTypeahead.native.js +159 -0
  45. package/dist/cjs/interactions/useTypeahead.native.js.map +1 -0
  46. package/dist/cjs/interactions/utils.cjs +208 -0
  47. package/dist/cjs/interactions/utils.native.js +227 -0
  48. package/dist/cjs/interactions/utils.native.js.map +1 -0
  49. package/dist/cjs/middleware/inner.cjs +118 -0
  50. package/dist/cjs/middleware/inner.native.js +130 -0
  51. package/dist/cjs/middleware/inner.native.js.map +1 -0
  52. package/dist/cjs/useFloating.cjs +35 -28
  53. package/dist/cjs/useFloating.native.js +51 -47
  54. package/dist/cjs/useFloating.native.js.map +1 -1
  55. package/dist/esm/Floating.native.js +6 -3
  56. package/dist/esm/Floating.native.js.map +1 -1
  57. package/dist/esm/index.js +17 -34
  58. package/dist/esm/index.js.map +1 -6
  59. package/dist/esm/index.mjs +16 -2
  60. package/dist/esm/index.mjs.map +1 -1
  61. package/dist/esm/index.native.js +16 -2
  62. package/dist/esm/index.native.js.map +1 -1
  63. package/dist/esm/interactions/PopupTriggerMap.mjs +24 -0
  64. package/dist/esm/interactions/PopupTriggerMap.mjs.map +1 -0
  65. package/dist/esm/interactions/PopupTriggerMap.native.js +69 -0
  66. package/dist/esm/interactions/PopupTriggerMap.native.js.map +1 -0
  67. package/dist/esm/interactions/createFloatingEvents.mjs +25 -0
  68. package/dist/esm/interactions/createFloatingEvents.mjs.map +1 -0
  69. package/dist/esm/interactions/createFloatingEvents.native.js +28 -0
  70. package/dist/esm/interactions/createFloatingEvents.native.js.map +1 -0
  71. package/dist/esm/interactions/safePolygon.mjs +248 -0
  72. package/dist/esm/interactions/safePolygon.mjs.map +1 -0
  73. package/dist/esm/interactions/safePolygon.native.js +256 -0
  74. package/dist/esm/interactions/safePolygon.native.js.map +1 -0
  75. package/dist/esm/interactions/types.mjs +2 -0
  76. package/dist/esm/interactions/types.mjs.map +1 -0
  77. package/dist/esm/interactions/types.native.js +2 -0
  78. package/dist/esm/interactions/types.native.js.map +1 -0
  79. package/dist/esm/interactions/useClick.mjs +99 -0
  80. package/dist/esm/interactions/useClick.mjs.map +1 -0
  81. package/dist/esm/interactions/useClick.native.js +104 -0
  82. package/dist/esm/interactions/useClick.native.js.map +1 -0
  83. package/dist/esm/interactions/useDelayGroup.mjs +77 -0
  84. package/dist/esm/interactions/useDelayGroup.mjs.map +1 -0
  85. package/dist/esm/interactions/useDelayGroup.native.js +84 -0
  86. package/dist/esm/interactions/useDelayGroup.native.js.map +1 -0
  87. package/dist/esm/interactions/useFocus.mjs +105 -0
  88. package/dist/esm/interactions/useFocus.mjs.map +1 -0
  89. package/dist/esm/interactions/useFocus.native.js +111 -0
  90. package/dist/esm/interactions/useFocus.native.js.map +1 -0
  91. package/dist/esm/interactions/useHover.mjs +320 -0
  92. package/dist/esm/interactions/useHover.mjs.map +1 -0
  93. package/dist/esm/interactions/useHover.native.js +333 -0
  94. package/dist/esm/interactions/useHover.native.js.map +1 -0
  95. package/dist/esm/interactions/useInnerOffset.mjs +92 -0
  96. package/dist/esm/interactions/useInnerOffset.mjs.map +1 -0
  97. package/dist/esm/interactions/useInnerOffset.native.js +102 -0
  98. package/dist/esm/interactions/useInnerOffset.native.js.map +1 -0
  99. package/dist/esm/interactions/useInteractions.mjs +80 -0
  100. package/dist/esm/interactions/useInteractions.mjs.map +1 -0
  101. package/dist/esm/interactions/useInteractions.native.js +188 -0
  102. package/dist/esm/interactions/useInteractions.native.js.map +1 -0
  103. package/dist/esm/interactions/useListNavigation.mjs +393 -0
  104. package/dist/esm/interactions/useListNavigation.mjs.map +1 -0
  105. package/dist/esm/interactions/useListNavigation.native.js +405 -0
  106. package/dist/esm/interactions/useListNavigation.native.js.map +1 -0
  107. package/dist/esm/interactions/useRole.mjs +86 -0
  108. package/dist/esm/interactions/useRole.mjs.map +1 -0
  109. package/dist/esm/interactions/useRole.native.js +97 -0
  110. package/dist/esm/interactions/useRole.native.js.map +1 -0
  111. package/dist/esm/interactions/useTypeahead.mjs +118 -0
  112. package/dist/esm/interactions/useTypeahead.mjs.map +1 -0
  113. package/dist/esm/interactions/useTypeahead.native.js +131 -0
  114. package/dist/esm/interactions/useTypeahead.native.js.map +1 -0
  115. package/dist/esm/interactions/utils.mjs +162 -0
  116. package/dist/esm/interactions/utils.mjs.map +1 -0
  117. package/dist/esm/interactions/utils.native.js +178 -0
  118. package/dist/esm/interactions/utils.native.js.map +1 -0
  119. package/dist/esm/middleware/inner.mjs +82 -0
  120. package/dist/esm/middleware/inner.mjs.map +1 -0
  121. package/dist/esm/middleware/inner.native.js +91 -0
  122. package/dist/esm/middleware/inner.native.js.map +1 -0
  123. package/dist/esm/useFloating.mjs +8 -3
  124. package/dist/esm/useFloating.mjs.map +1 -1
  125. package/dist/esm/useFloating.native.js +25 -23
  126. package/dist/esm/useFloating.native.js.map +1 -1
  127. package/package.json +8 -10
  128. package/src/Floating.native.tsx +1 -0
  129. package/src/index.ts +49 -0
  130. package/src/interactions/PopupTriggerMap.ts +30 -0
  131. package/src/interactions/createFloatingEvents.ts +34 -0
  132. package/src/interactions/safePolygon.ts +500 -0
  133. package/src/interactions/types.ts +165 -0
  134. package/src/interactions/useClick.ts +148 -0
  135. package/src/interactions/useDelayGroup.ts +114 -0
  136. package/src/interactions/useFocus.ts +164 -0
  137. package/src/interactions/useHover.ts +453 -0
  138. package/src/interactions/useInnerOffset.ts +116 -0
  139. package/src/interactions/useInteractions.ts +101 -0
  140. package/src/interactions/useListNavigation.ts +578 -0
  141. package/src/interactions/useRole.ts +103 -0
  142. package/src/interactions/useTypeahead.ts +173 -0
  143. package/src/interactions/utils.ts +234 -0
  144. package/src/middleware/inner.ts +141 -0
  145. package/src/useFloating.tsx +13 -1
  146. package/types/Floating.native.d.ts +1 -0
  147. package/types/Floating.native.d.ts.map +1 -1
  148. package/types/index.d.ts +17 -2
  149. package/types/index.d.ts.map +1 -1
  150. package/types/interactions/PopupTriggerMap.d.ts +8 -0
  151. package/types/interactions/PopupTriggerMap.d.ts.map +1 -0
  152. package/types/interactions/createFloatingEvents.d.ts +7 -0
  153. package/types/interactions/createFloatingEvents.d.ts.map +1 -0
  154. package/types/interactions/safePolygon.d.ts +4 -0
  155. package/types/interactions/safePolygon.d.ts.map +1 -0
  156. package/types/interactions/types.d.ts +123 -0
  157. package/types/interactions/types.d.ts.map +1 -0
  158. package/types/interactions/useClick.d.ts +3 -0
  159. package/types/interactions/useClick.d.ts.map +1 -0
  160. package/types/interactions/useDelayGroup.d.ts +23 -0
  161. package/types/interactions/useDelayGroup.d.ts.map +1 -0
  162. package/types/interactions/useFocus.d.ts +3 -0
  163. package/types/interactions/useFocus.d.ts.map +1 -0
  164. package/types/interactions/useHover.d.ts +6 -0
  165. package/types/interactions/useHover.d.ts.map +1 -0
  166. package/types/interactions/useInnerOffset.d.ts +3 -0
  167. package/types/interactions/useInnerOffset.d.ts.map +1 -0
  168. package/types/interactions/useInteractions.d.ts +8 -0
  169. package/types/interactions/useInteractions.d.ts.map +1 -0
  170. package/types/interactions/useListNavigation.d.ts +3 -0
  171. package/types/interactions/useListNavigation.d.ts.map +1 -0
  172. package/types/interactions/useRole.d.ts +3 -0
  173. package/types/interactions/useRole.d.ts.map +1 -0
  174. package/types/interactions/useTypeahead.d.ts +3 -0
  175. package/types/interactions/useTypeahead.d.ts.map +1 -0
  176. package/types/interactions/utils.d.ts +46 -0
  177. package/types/interactions/utils.d.ts.map +1 -0
  178. package/types/middleware/inner.d.ts +14 -0
  179. package/types/middleware/inner.d.ts.map +1 -0
  180. package/types/useFloating.d.ts +7 -1
  181. package/types/useFloating.d.ts.map +1 -1
  182. package/dist/cjs/Floating.js +0 -15
  183. package/dist/cjs/Floating.js.map +0 -6
  184. package/dist/cjs/index.js +0 -34
  185. package/dist/cjs/index.js.map +0 -6
  186. package/dist/cjs/useFloating.js +0 -46
  187. package/dist/cjs/useFloating.js.map +0 -6
  188. package/dist/esm/Floating.js +0 -2
  189. package/dist/esm/Floating.js.map +0 -6
  190. package/dist/esm/useFloating.js +0 -23
  191. package/dist/esm/useFloating.js.map +0 -6
@@ -0,0 +1,373 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
+ value: mod,
31
+ enumerable: true
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
36
+ var useHover_exports = {};
37
+ __export(useHover_exports, {
38
+ getDelay: () => getDelay,
39
+ useHover: () => useHover
40
+ });
41
+ module.exports = __toCommonJS(useHover_exports);
42
+ var React = __toESM(require("react"), 1);
43
+ var import_use_event = require("@tamagui/use-event");
44
+ var import_utils = require("./utils.native.js");
45
+ var safePolygonIdentifier = "data-floating-ui-safe-polygon";
46
+ function getDelay(value, prop, pointerType) {
47
+ if (pointerType && !(0, import_utils.isMouseLikePointerType)(pointerType)) {
48
+ return 0;
49
+ }
50
+ if (typeof value === "number") {
51
+ return value;
52
+ }
53
+ return value === null || value === void 0 ? void 0 : value[prop];
54
+ }
55
+ function useHover(context) {
56
+ var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
57
+ var {
58
+ open,
59
+ onOpenChange,
60
+ dataRef,
61
+ events,
62
+ elements
63
+ } = context;
64
+ var {
65
+ enabled = true,
66
+ delay = 0,
67
+ handleClose = null,
68
+ mouseOnly = false,
69
+ restMs = 0,
70
+ move = true
71
+ } = props;
72
+ var handleCloseRef = React.useRef(handleClose);
73
+ handleCloseRef.current = handleClose;
74
+ var delayRef = React.useRef(delay);
75
+ delayRef.current = delay;
76
+ var openRef = React.useRef(open);
77
+ openRef.current = open;
78
+ var restMsRef = React.useRef(restMs);
79
+ restMsRef.current = restMs;
80
+ var stableOnOpenChange = (0, import_use_event.useEvent)(onOpenChange);
81
+ var pointerTypeRef = React.useRef(void 0);
82
+ var timeoutRef = React.useRef(-1);
83
+ var handlerRef = React.useRef(void 0);
84
+ var restTimeoutRef = React.useRef(-1);
85
+ var blockMouseMoveRef = React.useRef(true);
86
+ var performedPointerEventsMutationRef = React.useRef(false);
87
+ var unbindMouseMoveRef = React.useRef(function () {});
88
+ var restTimeoutPendingRef = React.useRef(false);
89
+ var isHoverOpen = (0, import_use_event.useEvent)(function () {
90
+ var _dataRef_current_openEvent;
91
+ var type = (_dataRef_current_openEvent = dataRef.current.openEvent) === null || _dataRef_current_openEvent === void 0 ? void 0 : _dataRef_current_openEvent.type;
92
+ return (type === null || type === void 0 ? void 0 : type.includes("mouse")) && type !== "mousedown";
93
+ });
94
+ React.useEffect(function () {
95
+ if (!enabled) return;
96
+ if (!events) return;
97
+ function onOpenChange2(param) {
98
+ var {
99
+ open: open2
100
+ } = param;
101
+ if (!open2) {
102
+ (0, import_utils.clearTimeoutIfSet)(timeoutRef);
103
+ (0, import_utils.clearTimeoutIfSet)(restTimeoutRef);
104
+ blockMouseMoveRef.current = true;
105
+ restTimeoutPendingRef.current = false;
106
+ }
107
+ }
108
+ events.on("openchange", onOpenChange2);
109
+ return function () {
110
+ events.off("openchange", onOpenChange2);
111
+ };
112
+ }, [enabled, events]);
113
+ var closeWithDelay = (0, import_use_event.useEvent)(function (event) {
114
+ var runElseBranch = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true,
115
+ reason = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "hover";
116
+ var closeDelay = getDelay(delayRef.current, "close", pointerTypeRef.current);
117
+ if (closeDelay && !handlerRef.current) {
118
+ (0, import_utils.clearTimeoutIfSet)(timeoutRef);
119
+ timeoutRef.current = window.setTimeout(function () {
120
+ return stableOnOpenChange(false, event, reason);
121
+ }, closeDelay);
122
+ } else if (runElseBranch) {
123
+ (0, import_utils.clearTimeoutIfSet)(timeoutRef);
124
+ stableOnOpenChange(false, event, reason);
125
+ }
126
+ });
127
+ var cleanupMouseMoveHandler = (0, import_use_event.useEvent)(function () {
128
+ unbindMouseMoveRef.current();
129
+ handlerRef.current = void 0;
130
+ if (context.handleCloseActiveRef) {
131
+ context.handleCloseActiveRef.current = false;
132
+ }
133
+ });
134
+ var clearPointerEvents = (0, import_use_event.useEvent)(function () {
135
+ if (performedPointerEventsMutationRef.current) {
136
+ var body = (0, import_utils.getDocument)(elements.floating).body;
137
+ body.style.pointerEvents = "";
138
+ body.removeAttribute(safePolygonIdentifier);
139
+ performedPointerEventsMutationRef.current = false;
140
+ }
141
+ });
142
+ var isClickLikeOpenEvent = (0, import_use_event.useEvent)(function () {
143
+ return dataRef.current.openEvent ? ["click", "mousedown"].includes(dataRef.current.openEvent.type) : false;
144
+ });
145
+ React.useEffect(function () {
146
+ if (!enabled) return;
147
+ function onReferenceMouseEnter(event) {
148
+ (0, import_utils.clearTimeoutIfSet)(timeoutRef);
149
+ blockMouseMoveRef.current = false;
150
+ if (mouseOnly && !(0, import_utils.isMouseLikePointerType)(pointerTypeRef.current) || restMsRef.current > 0 && !getDelay(delayRef.current, "open")) {
151
+ return;
152
+ }
153
+ var openDelay = getDelay(delayRef.current, "open", pointerTypeRef.current);
154
+ if (openDelay) {
155
+ timeoutRef.current = window.setTimeout(function () {
156
+ if (!openRef.current) {
157
+ stableOnOpenChange(true, event, "hover");
158
+ }
159
+ }, openDelay);
160
+ } else if (!open) {
161
+ stableOnOpenChange(true, event, "hover");
162
+ }
163
+ }
164
+ function onReferenceMouseLeave(event) {
165
+ var _context_triggerElements;
166
+ if (isClickLikeOpenEvent()) {
167
+ clearPointerEvents();
168
+ return;
169
+ }
170
+ if ((_context_triggerElements = context.triggerElements) === null || _context_triggerElements === void 0 ? void 0 : _context_triggerElements.hasElement(event.relatedTarget)) {
171
+ return;
172
+ }
173
+ unbindMouseMoveRef.current();
174
+ var doc = (0, import_utils.getDocument)(elements.floating);
175
+ (0, import_utils.clearTimeoutIfSet)(restTimeoutRef);
176
+ restTimeoutPendingRef.current = false;
177
+ if (handleCloseRef.current) {
178
+ if (!open) {
179
+ (0, import_utils.clearTimeoutIfSet)(timeoutRef);
180
+ }
181
+ var placement = dataRef.current.placement || "bottom";
182
+ var reference3 = elements.domReference;
183
+ var floating2 = elements.floating;
184
+ if (!reference3 || !floating2) return;
185
+ handlerRef.current = handleCloseRef.current({
186
+ x: event.clientX,
187
+ y: event.clientY,
188
+ placement,
189
+ elements: {
190
+ reference: reference3,
191
+ floating: floating2,
192
+ domReference: reference3
193
+ },
194
+ onClose() {
195
+ if (context.handleCloseActiveRef) {
196
+ context.handleCloseActiveRef.current = false;
197
+ }
198
+ clearPointerEvents();
199
+ cleanupMouseMoveHandler();
200
+ if (!isClickLikeOpenEvent()) {
201
+ closeWithDelay(event, true, "safe-polygon");
202
+ }
203
+ }
204
+ });
205
+ if (context.handleCloseActiveRef) {
206
+ context.handleCloseActiveRef.current = true;
207
+ }
208
+ var handler = handlerRef.current;
209
+ doc.addEventListener("mousemove", handler);
210
+ unbindMouseMoveRef.current = function () {
211
+ doc.removeEventListener("mousemove", handler);
212
+ };
213
+ return;
214
+ }
215
+ var shouldClose = pointerTypeRef.current === "touch" ? !(0, import_utils.contains)(elements.floating, event.relatedTarget) : true;
216
+ if (shouldClose) {
217
+ closeWithDelay(event);
218
+ }
219
+ }
220
+ function onScrollMouseLeave(event) {
221
+ var _context_triggerElements, _handleCloseRef_current;
222
+ if (isClickLikeOpenEvent()) return;
223
+ if ((_context_triggerElements = context.triggerElements) === null || _context_triggerElements === void 0 ? void 0 : _context_triggerElements.hasElement(event.relatedTarget)) {
224
+ return;
225
+ }
226
+ var placement = dataRef.current.placement || "bottom";
227
+ var reference3 = elements.domReference;
228
+ var floating2 = elements.floating;
229
+ if (!reference3 || !floating2) return;
230
+ (_handleCloseRef_current = handleCloseRef.current) === null || _handleCloseRef_current === void 0 ? void 0 : _handleCloseRef_current.call(handleCloseRef, {
231
+ x: event.clientX,
232
+ y: event.clientY,
233
+ placement,
234
+ elements: {
235
+ reference: reference3,
236
+ floating: floating2,
237
+ domReference: reference3
238
+ },
239
+ onClose() {
240
+ clearPointerEvents();
241
+ cleanupMouseMoveHandler();
242
+ if (!isClickLikeOpenEvent()) {
243
+ closeWithDelay(event);
244
+ }
245
+ }
246
+ })(event);
247
+ }
248
+ function onFloatingMouseEnter() {
249
+ (0, import_utils.clearTimeoutIfSet)(timeoutRef);
250
+ }
251
+ function onFloatingMouseLeave(event) {
252
+ var _context_triggerElements;
253
+ if (isClickLikeOpenEvent()) return;
254
+ if ((_context_triggerElements = context.triggerElements) === null || _context_triggerElements === void 0 ? void 0 : _context_triggerElements.hasElement(event.relatedTarget)) {
255
+ return;
256
+ }
257
+ closeWithDelay(event, false);
258
+ }
259
+ if ((0, import_utils.isElement)(elements.domReference)) {
260
+ var reference2 = elements.domReference;
261
+ var floating = elements.floating;
262
+ if (open) {
263
+ reference2.addEventListener("mouseleave", onScrollMouseLeave);
264
+ }
265
+ if (move) {
266
+ reference2.addEventListener("mousemove", onReferenceMouseEnter, {
267
+ once: true
268
+ });
269
+ }
270
+ reference2.addEventListener("mouseenter", onReferenceMouseEnter);
271
+ reference2.addEventListener("mouseleave", onReferenceMouseLeave);
272
+ if (floating) {
273
+ floating.addEventListener("mouseleave", onScrollMouseLeave);
274
+ floating.addEventListener("mouseenter", onFloatingMouseEnter);
275
+ floating.addEventListener("mouseleave", onFloatingMouseLeave);
276
+ }
277
+ return function () {
278
+ if (open) {
279
+ reference2.removeEventListener("mouseleave", onScrollMouseLeave);
280
+ }
281
+ if (move) {
282
+ reference2.removeEventListener("mousemove", onReferenceMouseEnter);
283
+ }
284
+ reference2.removeEventListener("mouseenter", onReferenceMouseEnter);
285
+ reference2.removeEventListener("mouseleave", onReferenceMouseLeave);
286
+ if (floating) {
287
+ floating.removeEventListener("mouseleave", onScrollMouseLeave);
288
+ floating.removeEventListener("mouseenter", onFloatingMouseEnter);
289
+ floating.removeEventListener("mouseleave", onFloatingMouseLeave);
290
+ }
291
+ cleanupMouseMoveHandler();
292
+ };
293
+ }
294
+ }, [elements, enabled, context, mouseOnly, move, open, dataRef]);
295
+ React.useLayoutEffect(function () {
296
+ var _handleCloseRef_current___options, _handleCloseRef_current;
297
+ if (!enabled) return;
298
+ if (open && ((_handleCloseRef_current = handleCloseRef.current) === null || _handleCloseRef_current === void 0 ? void 0 : (_handleCloseRef_current___options = _handleCloseRef_current.__options) === null || _handleCloseRef_current___options === void 0 ? void 0 : _handleCloseRef_current___options.blockPointerEvents) && isHoverOpen()) {
299
+ performedPointerEventsMutationRef.current = true;
300
+ var floatingEl = elements.floating;
301
+ if ((0, import_utils.isElement)(elements.domReference) && floatingEl) {
302
+ var body = (0, import_utils.getDocument)(elements.floating).body;
303
+ body.setAttribute(safePolygonIdentifier, "");
304
+ var ref = elements.domReference;
305
+ body.style.pointerEvents = "none";
306
+ ref.style.pointerEvents = "auto";
307
+ floatingEl.style.pointerEvents = "auto";
308
+ return function () {
309
+ body.style.pointerEvents = "";
310
+ ref.style.pointerEvents = "";
311
+ floatingEl.style.pointerEvents = "";
312
+ };
313
+ }
314
+ }
315
+ }, [enabled, open, elements, isHoverOpen]);
316
+ React.useLayoutEffect(function () {
317
+ if (!open) {
318
+ pointerTypeRef.current = void 0;
319
+ restTimeoutPendingRef.current = false;
320
+ cleanupMouseMoveHandler();
321
+ clearPointerEvents();
322
+ }
323
+ }, [open]);
324
+ React.useEffect(function () {
325
+ return function () {
326
+ cleanupMouseMoveHandler();
327
+ (0, import_utils.clearTimeoutIfSet)(timeoutRef);
328
+ (0, import_utils.clearTimeoutIfSet)(restTimeoutRef);
329
+ clearPointerEvents();
330
+ };
331
+ }, [enabled, elements.domReference]);
332
+ var reference = React.useMemo(function () {
333
+ function setPointerRef(event) {
334
+ pointerTypeRef.current = event.pointerType;
335
+ }
336
+ return {
337
+ onPointerDown: setPointerRef,
338
+ onPointerEnter: setPointerRef,
339
+ onMouseMove(event) {
340
+ var {
341
+ nativeEvent
342
+ } = event;
343
+ function handleMouseMove() {
344
+ if (!blockMouseMoveRef.current && !openRef.current) {
345
+ stableOnOpenChange(true, nativeEvent, "hover");
346
+ }
347
+ }
348
+ if (mouseOnly && !(0, import_utils.isMouseLikePointerType)(pointerTypeRef.current)) {
349
+ return;
350
+ }
351
+ if (open || restMsRef.current === 0) {
352
+ return;
353
+ }
354
+ if (restTimeoutPendingRef.current && Math.pow(event.movementX, 2) + Math.pow(event.movementY, 2) < 2) {
355
+ return;
356
+ }
357
+ (0, import_utils.clearTimeoutIfSet)(restTimeoutRef);
358
+ if (pointerTypeRef.current === "touch") {
359
+ handleMouseMove();
360
+ } else {
361
+ restTimeoutPendingRef.current = true;
362
+ restTimeoutRef.current = window.setTimeout(handleMouseMove, restMsRef.current);
363
+ }
364
+ }
365
+ };
366
+ }, [mouseOnly, open]);
367
+ return React.useMemo(function () {
368
+ return enabled ? {
369
+ reference
370
+ } : {};
371
+ }, [enabled, reference]);
372
+ }
373
+ //# sourceMappingURL=useHover.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useHover_exports","__export","getDelay","useHover","module","exports","React","__toESM","require","import_use_event","import_utils","safePolygonIdentifier","prop","pointerType","isMouseLikePointerType","context","props","arguments","length","open","onOpenChange","dataRef","events","elements","enabled","delay","handleClose","mouseOnly","restMs","move","handleCloseRef","useRef","current","delayRef","openRef","restMsRef","stableOnOpenChange","useEvent","pointerTypeRef","timeoutRef","handlerRef","restTimeoutRef","blockMouseMoveRef","performedPointerEventsMutationRef","unbindMouseMoveRef","restTimeoutPendingRef","isHoverOpen","_dataRef_current_openEvent","type","openEvent","includes","useEffect","onOpenChange2","param","open2","clearTimeoutIfSet","on","off","closeWithDelay","event","runElseBranch","reason","closeDelay","window","setTimeout","cleanupMouseMoveHandler","handleCloseActiveRef","clearPointerEvents","body","getDocument","floating","style","pointerEvents","removeAttribute","isClickLikeOpenEvent","onReferenceMouseEnter","openDelay","onReferenceMouseLeave","_context_triggerElements","triggerElements","hasElement","relatedTarget","doc","placement","reference3","domReference","floating2","x","clientX","y","clientY","reference","onClose","handler","addEventListener","removeEventListener","shouldClose","contains","onScrollMouseLeave","_handleCloseRef_current","call","onFloatingMouseEnter","onFloatingMouseLeave","isElement","reference2","once","useLayoutEffect","_handleCloseRef_current___options","__options","blockPointerEvents","floatingEl","setAttribute","ref","useMemo","setPointerRef","onPointerDown","onPointerEnter","onMouseMove","nativeEvent","handleMouseMove"],"sources":["../../../src/interactions/useHover.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,128 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: true
30
+ }) : target, mod));
31
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: true
33
+ }), mod);
34
+ var useInnerOffset_exports = {};
35
+ __export(useInnerOffset_exports, {
36
+ useInnerOffset: () => useInnerOffset
37
+ });
38
+ module.exports = __toCommonJS(useInnerOffset_exports);
39
+ var React = __toESM(require("react"), 1);
40
+ var ReactDOM = __toESM(require("react-dom"), 1);
41
+ var import_use_event = require("@tamagui/use-event");
42
+ function useInnerOffset(context, props) {
43
+ const {
44
+ open,
45
+ elements
46
+ } = context;
47
+ const {
48
+ enabled = true,
49
+ overflowRef,
50
+ scrollRef,
51
+ onChange: unstable_onChange
52
+ } = props;
53
+ const onChange = (0, import_use_event.useEvent)(unstable_onChange);
54
+ const controlledScrollingRef = React.useRef(false);
55
+ const prevScrollTopRef = React.useRef(null);
56
+ const initialOverflowRef = React.useRef(null);
57
+ React.useEffect(() => {
58
+ if (!enabled) return;
59
+ function onWheel(e) {
60
+ if (e.ctrlKey || !el || overflowRef.current == null) {
61
+ return;
62
+ }
63
+ const dY = e.deltaY;
64
+ const isAtTop = overflowRef.current.top >= -0.5;
65
+ const isAtBottom = overflowRef.current.bottom >= -0.5;
66
+ const remainingScroll = el.scrollHeight - el.clientHeight;
67
+ const sign = dY < 0 ? -1 : 1;
68
+ const method = dY < 0 ? "max" : "min";
69
+ if (el.scrollHeight <= el.clientHeight) {
70
+ return;
71
+ }
72
+ if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {
73
+ e.preventDefault();
74
+ ReactDOM.flushSync(() => {
75
+ onChange(d => d + Math[method](dY, remainingScroll * sign));
76
+ });
77
+ } else if (/firefox/i.test(navigator.userAgent)) {
78
+ el.scrollTop += dY;
79
+ }
80
+ }
81
+ const el = scrollRef?.current || elements.floating;
82
+ if (open && el) {
83
+ el.addEventListener("wheel", onWheel);
84
+ requestAnimationFrame(() => {
85
+ prevScrollTopRef.current = el.scrollTop;
86
+ if (overflowRef.current != null) {
87
+ initialOverflowRef.current = {
88
+ ...overflowRef.current
89
+ };
90
+ }
91
+ });
92
+ return () => {
93
+ prevScrollTopRef.current = null;
94
+ initialOverflowRef.current = null;
95
+ el.removeEventListener("wheel", onWheel);
96
+ };
97
+ }
98
+ }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);
99
+ const floating = React.useMemo(() => ({
100
+ onKeyDown() {
101
+ controlledScrollingRef.current = true;
102
+ },
103
+ onWheel() {
104
+ controlledScrollingRef.current = false;
105
+ },
106
+ onPointerMove() {
107
+ controlledScrollingRef.current = false;
108
+ },
109
+ onScroll() {
110
+ const el = scrollRef?.current || elements.floating;
111
+ if (!overflowRef.current || !el || !controlledScrollingRef.current) {
112
+ return;
113
+ }
114
+ if (prevScrollTopRef.current !== null) {
115
+ const scrollDiff = el.scrollTop - prevScrollTopRef.current;
116
+ if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {
117
+ ReactDOM.flushSync(() => onChange(d => d + scrollDiff));
118
+ }
119
+ }
120
+ requestAnimationFrame(() => {
121
+ prevScrollTopRef.current = el.scrollTop;
122
+ });
123
+ }
124
+ }), [elements.floating, onChange, overflowRef, scrollRef]);
125
+ return React.useMemo(() => enabled ? {
126
+ floating
127
+ } : {}, [enabled, floating]);
128
+ }
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
+ value: mod,
31
+ enumerable: true
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
36
+ var useInnerOffset_exports = {};
37
+ __export(useInnerOffset_exports, {
38
+ useInnerOffset: () => useInnerOffset
39
+ });
40
+ module.exports = __toCommonJS(useInnerOffset_exports);
41
+ var React = __toESM(require("react"), 1);
42
+ var ReactDOM = __toESM(require("react-dom"), 1);
43
+ var import_use_event = require("@tamagui/use-event");
44
+ function useInnerOffset(context, props) {
45
+ var {
46
+ open,
47
+ elements
48
+ } = context;
49
+ var {
50
+ enabled = true,
51
+ overflowRef,
52
+ scrollRef,
53
+ onChange: unstable_onChange
54
+ } = props;
55
+ var onChange = (0, import_use_event.useEvent)(unstable_onChange);
56
+ var controlledScrollingRef = React.useRef(false);
57
+ var prevScrollTopRef = React.useRef(null);
58
+ var initialOverflowRef = React.useRef(null);
59
+ React.useEffect(function () {
60
+ if (!enabled) return;
61
+ function onWheel(e) {
62
+ if (e.ctrlKey || !el || overflowRef.current == null) {
63
+ return;
64
+ }
65
+ var dY = e.deltaY;
66
+ var isAtTop = overflowRef.current.top >= -0.5;
67
+ var isAtBottom = overflowRef.current.bottom >= -0.5;
68
+ var remainingScroll = el.scrollHeight - el.clientHeight;
69
+ var sign = dY < 0 ? -1 : 1;
70
+ var method = dY < 0 ? "max" : "min";
71
+ if (el.scrollHeight <= el.clientHeight) {
72
+ return;
73
+ }
74
+ if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {
75
+ e.preventDefault();
76
+ ReactDOM.flushSync(function () {
77
+ onChange(function (d) {
78
+ return d + Math[method](dY, remainingScroll * sign);
79
+ });
80
+ });
81
+ } else if (/firefox/i.test(navigator.userAgent)) {
82
+ el.scrollTop += dY;
83
+ }
84
+ }
85
+ var el = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || elements.floating;
86
+ if (open && el) {
87
+ el.addEventListener("wheel", onWheel);
88
+ requestAnimationFrame(function () {
89
+ prevScrollTopRef.current = el.scrollTop;
90
+ if (overflowRef.current != null) {
91
+ initialOverflowRef.current = {
92
+ ...overflowRef.current
93
+ };
94
+ }
95
+ });
96
+ return function () {
97
+ prevScrollTopRef.current = null;
98
+ initialOverflowRef.current = null;
99
+ el.removeEventListener("wheel", onWheel);
100
+ };
101
+ }
102
+ }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);
103
+ var floating = React.useMemo(function () {
104
+ return {
105
+ onKeyDown() {
106
+ controlledScrollingRef.current = true;
107
+ },
108
+ onWheel() {
109
+ controlledScrollingRef.current = false;
110
+ },
111
+ onPointerMove() {
112
+ controlledScrollingRef.current = false;
113
+ },
114
+ onScroll() {
115
+ var el = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || elements.floating;
116
+ if (!overflowRef.current || !el || !controlledScrollingRef.current) {
117
+ return;
118
+ }
119
+ if (prevScrollTopRef.current !== null) {
120
+ var scrollDiff = el.scrollTop - prevScrollTopRef.current;
121
+ if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {
122
+ ReactDOM.flushSync(function () {
123
+ return onChange(function (d) {
124
+ return d + scrollDiff;
125
+ });
126
+ });
127
+ }
128
+ }
129
+ requestAnimationFrame(function () {
130
+ prevScrollTopRef.current = el.scrollTop;
131
+ });
132
+ }
133
+ };
134
+ }, [elements.floating, onChange, overflowRef, scrollRef]);
135
+ return React.useMemo(function () {
136
+ return enabled ? {
137
+ floating
138
+ } : {};
139
+ }, [enabled, floating]);
140
+ }
141
+ //# sourceMappingURL=useInnerOffset.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useInnerOffset_exports","__export","useInnerOffset","module","exports","React","__toESM","require","ReactDOM","import_use_event","context","props","open","elements","enabled","overflowRef","scrollRef","onChange","unstable_onChange","useEvent","controlledScrollingRef","useRef","prevScrollTopRef","initialOverflowRef","useEffect","onWheel","e","ctrlKey","el","current","dY","deltaY","isAtTop","top","isAtBottom","bottom","remainingScroll","scrollHeight","clientHeight","sign","method","preventDefault","flushSync","d","Math","test","navigator","userAgent","scrollTop","floating","addEventListener","requestAnimationFrame","removeEventListener","useMemo","onKeyDown","onPointerMove","onScroll","scrollDiff"],"sources":["../../../src/interactions/useInnerOffset.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}