@hanzogui/floating 8.3.0 → 8.3.2

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 (277) hide show
  1. package/dist/cjs/Floating.js +5 -0
  2. package/dist/cjs/Floating.js.map +1 -0
  3. package/dist/cjs/index.js +57 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/interactions/PopupTriggerMap.js +33 -0
  6. package/dist/cjs/interactions/PopupTriggerMap.js.map +1 -0
  7. package/dist/cjs/interactions/createFloatingEvents.js +31 -0
  8. package/dist/cjs/interactions/createFloatingEvents.js.map +1 -0
  9. package/dist/cjs/interactions/safePolygon.js +435 -0
  10. package/dist/cjs/interactions/safePolygon.js.map +1 -0
  11. package/dist/cjs/interactions/types.js +3 -0
  12. package/dist/cjs/interactions/types.js.map +1 -0
  13. package/dist/cjs/interactions/useClick.js +118 -0
  14. package/dist/cjs/interactions/useClick.js.map +1 -0
  15. package/dist/cjs/interactions/useDelayGroup.js +84 -0
  16. package/dist/cjs/interactions/useDelayGroup.js.map +1 -0
  17. package/dist/cjs/interactions/useFocus.js +118 -0
  18. package/dist/cjs/interactions/useFocus.js.map +1 -0
  19. package/dist/cjs/interactions/useHover.js +357 -0
  20. package/dist/cjs/interactions/useHover.js.map +1 -0
  21. package/dist/cjs/interactions/useInnerOffset.js +92 -0
  22. package/dist/cjs/interactions/useInnerOffset.js.map +1 -0
  23. package/dist/cjs/interactions/useInteractions.js +88 -0
  24. package/dist/cjs/interactions/useInteractions.js.map +1 -0
  25. package/dist/cjs/interactions/useListNavigation.js +447 -0
  26. package/dist/cjs/interactions/useListNavigation.js.map +1 -0
  27. package/dist/cjs/interactions/useRole.js +69 -0
  28. package/dist/cjs/interactions/useRole.js.map +1 -0
  29. package/dist/cjs/interactions/useTypeahead.js +121 -0
  30. package/dist/cjs/interactions/useTypeahead.js.map +1 -0
  31. package/dist/cjs/interactions/utils.js +200 -0
  32. package/dist/cjs/interactions/utils.js.map +1 -0
  33. package/dist/cjs/middleware/inner.js +82 -0
  34. package/dist/cjs/middleware/inner.js.map +1 -0
  35. package/dist/cjs/package.json +1 -0
  36. package/dist/cjs/useFloating.js +29 -0
  37. package/dist/cjs/useFloating.js.map +1 -0
  38. package/dist/esm/Floating.js +2 -0
  39. package/dist/esm/Floating.js.map +1 -0
  40. package/dist/esm/index.js +23 -18
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/interactions/PopupTriggerMap.js +29 -0
  43. package/dist/esm/interactions/PopupTriggerMap.js.map +1 -0
  44. package/dist/esm/interactions/createFloatingEvents.js +28 -0
  45. package/dist/esm/interactions/createFloatingEvents.js.map +1 -0
  46. package/dist/esm/interactions/safePolygon.js +432 -0
  47. package/dist/esm/interactions/safePolygon.js.map +1 -0
  48. package/dist/esm/interactions/types.js +2 -0
  49. package/dist/esm/interactions/types.js.map +1 -0
  50. package/dist/esm/interactions/useClick.js +115 -0
  51. package/dist/esm/interactions/useClick.js.map +1 -0
  52. package/dist/esm/interactions/useDelayGroup.js +78 -0
  53. package/dist/esm/interactions/useDelayGroup.js.map +1 -0
  54. package/dist/esm/interactions/useFocus.js +115 -0
  55. package/dist/esm/interactions/useFocus.js.map +1 -0
  56. package/dist/esm/interactions/useHover.js +352 -0
  57. package/dist/esm/interactions/useHover.js.map +1 -0
  58. package/dist/esm/interactions/useInnerOffset.js +88 -0
  59. package/dist/esm/interactions/useInnerOffset.js.map +1 -0
  60. package/dist/esm/interactions/useInteractions.js +85 -0
  61. package/dist/esm/interactions/useInteractions.js.map +1 -0
  62. package/dist/esm/interactions/useListNavigation.js +444 -0
  63. package/dist/esm/interactions/useListNavigation.js.map +1 -0
  64. package/dist/esm/interactions/useRole.js +65 -0
  65. package/dist/esm/interactions/useRole.js.map +1 -0
  66. package/dist/esm/interactions/useTypeahead.js +118 -0
  67. package/dist/esm/interactions/useTypeahead.js.map +1 -0
  68. package/dist/esm/interactions/utils.js +176 -0
  69. package/dist/esm/interactions/utils.js.map +1 -0
  70. package/dist/esm/middleware/inner.js +77 -0
  71. package/dist/esm/middleware/inner.js.map +1 -0
  72. package/dist/esm/useFloating.js +24 -0
  73. package/dist/esm/useFloating.js.map +1 -0
  74. package/dist/native/Floating.js +5 -0
  75. package/dist/native/Floating.js.map +1 -0
  76. package/dist/native/index.js +23 -0
  77. package/dist/native/index.js.map +1 -0
  78. package/dist/native/interactions/PopupTriggerMap.js +29 -0
  79. package/dist/native/interactions/PopupTriggerMap.js.map +1 -0
  80. package/dist/native/interactions/createFloatingEvents.js +28 -0
  81. package/dist/native/interactions/createFloatingEvents.js.map +1 -0
  82. package/dist/native/interactions/safePolygon.js +432 -0
  83. package/dist/native/interactions/safePolygon.js.map +1 -0
  84. package/dist/native/interactions/types.js +2 -0
  85. package/dist/native/interactions/types.js.map +1 -0
  86. package/dist/native/interactions/useClick.js +115 -0
  87. package/dist/native/interactions/useClick.js.map +1 -0
  88. package/dist/native/interactions/useDelayGroup.js +78 -0
  89. package/dist/native/interactions/useDelayGroup.js.map +1 -0
  90. package/dist/native/interactions/useFocus.js +115 -0
  91. package/dist/native/interactions/useFocus.js.map +1 -0
  92. package/dist/native/interactions/useHover.js +352 -0
  93. package/dist/native/interactions/useHover.js.map +1 -0
  94. package/dist/native/interactions/useInnerOffset.js +88 -0
  95. package/dist/native/interactions/useInnerOffset.js.map +1 -0
  96. package/dist/native/interactions/useInteractions.js +85 -0
  97. package/dist/native/interactions/useInteractions.js.map +1 -0
  98. package/dist/native/interactions/useListNavigation.js +444 -0
  99. package/dist/native/interactions/useListNavigation.js.map +1 -0
  100. package/dist/native/interactions/useRole.js +65 -0
  101. package/dist/native/interactions/useRole.js.map +1 -0
  102. package/dist/native/interactions/useTypeahead.js +118 -0
  103. package/dist/native/interactions/useTypeahead.js.map +1 -0
  104. package/dist/native/interactions/utils.js +176 -0
  105. package/dist/native/interactions/utils.js.map +1 -0
  106. package/dist/native/middleware/inner.js +77 -0
  107. package/dist/native/middleware/inner.js.map +1 -0
  108. package/dist/native/useFloating.js +24 -0
  109. package/dist/native/useFloating.js.map +1 -0
  110. package/package.json +16 -16
  111. package/src/index.ts +18 -18
  112. package/src/interactions/safePolygon.ts +2 -2
  113. package/src/interactions/types.ts +2 -2
  114. package/src/interactions/useClick.ts +2 -2
  115. package/src/interactions/useDelayGroup.ts +1 -1
  116. package/src/interactions/useFocus.ts +2 -2
  117. package/src/interactions/useHover.ts +2 -2
  118. package/src/interactions/useInnerOffset.ts +1 -1
  119. package/src/interactions/useInteractions.ts +1 -1
  120. package/src/interactions/useListNavigation.ts +2 -2
  121. package/src/interactions/useRole.ts +1 -1
  122. package/src/interactions/useTypeahead.ts +6 -2
  123. package/src/useFloating.tsx +2 -2
  124. package/types/index.d.ts +18 -18
  125. package/types/index.d.ts.map +1 -1
  126. package/types/interactions/PopupTriggerMap.d.ts.map +1 -1
  127. package/types/interactions/safePolygon.d.ts +1 -1
  128. package/types/interactions/safePolygon.d.ts.map +1 -1
  129. package/types/interactions/types.d.ts +2 -2
  130. package/types/interactions/types.d.ts.map +1 -1
  131. package/types/interactions/useClick.d.ts +1 -1
  132. package/types/interactions/useClick.d.ts.map +1 -1
  133. package/types/interactions/useDelayGroup.d.ts +1 -1
  134. package/types/interactions/useDelayGroup.d.ts.map +1 -1
  135. package/types/interactions/useFocus.d.ts +1 -1
  136. package/types/interactions/useFocus.d.ts.map +1 -1
  137. package/types/interactions/useHover.d.ts +1 -1
  138. package/types/interactions/useHover.d.ts.map +1 -1
  139. package/types/interactions/useInnerOffset.d.ts +1 -1
  140. package/types/interactions/useInnerOffset.d.ts.map +1 -1
  141. package/types/interactions/useInteractions.d.ts +1 -1
  142. package/types/interactions/useInteractions.d.ts.map +1 -1
  143. package/types/interactions/useListNavigation.d.ts +1 -1
  144. package/types/interactions/useListNavigation.d.ts.map +1 -1
  145. package/types/interactions/useRole.d.ts +1 -1
  146. package/types/interactions/useRole.d.ts.map +1 -1
  147. package/types/interactions/useTypeahead.d.ts +1 -1
  148. package/types/interactions/useTypeahead.d.ts.map +1 -1
  149. package/types/middleware/inner.d.ts.map +1 -1
  150. package/types/useFloating.d.ts +2 -2
  151. package/types/useFloating.d.ts.map +1 -1
  152. package/dist/cjs/Floating.cjs +0 -20
  153. package/dist/cjs/Floating.native.js +0 -39
  154. package/dist/cjs/Floating.native.js.map +0 -1
  155. package/dist/cjs/index.cjs +0 -73
  156. package/dist/cjs/index.native.js +0 -76
  157. package/dist/cjs/index.native.js.map +0 -1
  158. package/dist/cjs/interactions/PopupTriggerMap.cjs +0 -49
  159. package/dist/cjs/interactions/PopupTriggerMap.native.js +0 -97
  160. package/dist/cjs/interactions/PopupTriggerMap.native.js.map +0 -1
  161. package/dist/cjs/interactions/createFloatingEvents.cjs +0 -50
  162. package/dist/cjs/interactions/createFloatingEvents.native.js +0 -56
  163. package/dist/cjs/interactions/createFloatingEvents.native.js.map +0 -1
  164. package/dist/cjs/interactions/safePolygon.cjs +0 -273
  165. package/dist/cjs/interactions/safePolygon.native.js +0 -284
  166. package/dist/cjs/interactions/safePolygon.native.js.map +0 -1
  167. package/dist/cjs/interactions/types.cjs +0 -18
  168. package/dist/cjs/interactions/types.native.js +0 -21
  169. package/dist/cjs/interactions/types.native.js.map +0 -1
  170. package/dist/cjs/interactions/useClick.cjs +0 -124
  171. package/dist/cjs/interactions/useClick.native.js +0 -132
  172. package/dist/cjs/interactions/useClick.native.js.map +0 -1
  173. package/dist/cjs/interactions/useDelayGroup.cjs +0 -115
  174. package/dist/cjs/interactions/useDelayGroup.native.js +0 -125
  175. package/dist/cjs/interactions/useDelayGroup.native.js.map +0 -1
  176. package/dist/cjs/interactions/useFocus.cjs +0 -130
  177. package/dist/cjs/interactions/useFocus.native.js +0 -139
  178. package/dist/cjs/interactions/useFocus.native.js.map +0 -1
  179. package/dist/cjs/interactions/useHover.cjs +0 -357
  180. package/dist/cjs/interactions/useHover.native.js +0 -373
  181. package/dist/cjs/interactions/useHover.native.js.map +0 -1
  182. package/dist/cjs/interactions/useInnerOffset.cjs +0 -128
  183. package/dist/cjs/interactions/useInnerOffset.native.js +0 -141
  184. package/dist/cjs/interactions/useInnerOffset.native.js.map +0 -1
  185. package/dist/cjs/interactions/useInteractions.cjs +0 -105
  186. package/dist/cjs/interactions/useInteractions.native.js +0 -216
  187. package/dist/cjs/interactions/useInteractions.native.js.map +0 -1
  188. package/dist/cjs/interactions/useListNavigation.cjs +0 -418
  189. package/dist/cjs/interactions/useListNavigation.native.js +0 -433
  190. package/dist/cjs/interactions/useListNavigation.native.js.map +0 -1
  191. package/dist/cjs/interactions/useRole.cjs +0 -122
  192. package/dist/cjs/interactions/useRole.native.js +0 -136
  193. package/dist/cjs/interactions/useRole.native.js.map +0 -1
  194. package/dist/cjs/interactions/useTypeahead.cjs +0 -143
  195. package/dist/cjs/interactions/useTypeahead.native.js +0 -159
  196. package/dist/cjs/interactions/useTypeahead.native.js.map +0 -1
  197. package/dist/cjs/interactions/utils.cjs +0 -208
  198. package/dist/cjs/interactions/utils.native.js +0 -227
  199. package/dist/cjs/interactions/utils.native.js.map +0 -1
  200. package/dist/cjs/middleware/inner.cjs +0 -118
  201. package/dist/cjs/middleware/inner.native.js +0 -130
  202. package/dist/cjs/middleware/inner.native.js.map +0 -1
  203. package/dist/cjs/useFloating.cjs +0 -64
  204. package/dist/cjs/useFloating.native.js +0 -69
  205. package/dist/cjs/useFloating.native.js.map +0 -1
  206. package/dist/esm/Floating.mjs +0 -2
  207. package/dist/esm/Floating.mjs.map +0 -1
  208. package/dist/esm/Floating.native.js +0 -8
  209. package/dist/esm/Floating.native.js.map +0 -1
  210. package/dist/esm/index.mjs +0 -18
  211. package/dist/esm/index.mjs.map +0 -1
  212. package/dist/esm/index.native.js +0 -18
  213. package/dist/esm/index.native.js.map +0 -1
  214. package/dist/esm/interactions/PopupTriggerMap.mjs +0 -24
  215. package/dist/esm/interactions/PopupTriggerMap.mjs.map +0 -1
  216. package/dist/esm/interactions/PopupTriggerMap.native.js +0 -69
  217. package/dist/esm/interactions/PopupTriggerMap.native.js.map +0 -1
  218. package/dist/esm/interactions/createFloatingEvents.mjs +0 -25
  219. package/dist/esm/interactions/createFloatingEvents.mjs.map +0 -1
  220. package/dist/esm/interactions/createFloatingEvents.native.js +0 -28
  221. package/dist/esm/interactions/createFloatingEvents.native.js.map +0 -1
  222. package/dist/esm/interactions/safePolygon.mjs +0 -248
  223. package/dist/esm/interactions/safePolygon.mjs.map +0 -1
  224. package/dist/esm/interactions/safePolygon.native.js +0 -256
  225. package/dist/esm/interactions/safePolygon.native.js.map +0 -1
  226. package/dist/esm/interactions/types.mjs +0 -2
  227. package/dist/esm/interactions/types.mjs.map +0 -1
  228. package/dist/esm/interactions/types.native.js +0 -2
  229. package/dist/esm/interactions/types.native.js.map +0 -1
  230. package/dist/esm/interactions/useClick.mjs +0 -99
  231. package/dist/esm/interactions/useClick.mjs.map +0 -1
  232. package/dist/esm/interactions/useClick.native.js +0 -104
  233. package/dist/esm/interactions/useClick.native.js.map +0 -1
  234. package/dist/esm/interactions/useDelayGroup.mjs +0 -77
  235. package/dist/esm/interactions/useDelayGroup.mjs.map +0 -1
  236. package/dist/esm/interactions/useDelayGroup.native.js +0 -84
  237. package/dist/esm/interactions/useDelayGroup.native.js.map +0 -1
  238. package/dist/esm/interactions/useFocus.mjs +0 -105
  239. package/dist/esm/interactions/useFocus.mjs.map +0 -1
  240. package/dist/esm/interactions/useFocus.native.js +0 -111
  241. package/dist/esm/interactions/useFocus.native.js.map +0 -1
  242. package/dist/esm/interactions/useHover.mjs +0 -320
  243. package/dist/esm/interactions/useHover.mjs.map +0 -1
  244. package/dist/esm/interactions/useHover.native.js +0 -333
  245. package/dist/esm/interactions/useHover.native.js.map +0 -1
  246. package/dist/esm/interactions/useInnerOffset.mjs +0 -92
  247. package/dist/esm/interactions/useInnerOffset.mjs.map +0 -1
  248. package/dist/esm/interactions/useInnerOffset.native.js +0 -102
  249. package/dist/esm/interactions/useInnerOffset.native.js.map +0 -1
  250. package/dist/esm/interactions/useInteractions.mjs +0 -80
  251. package/dist/esm/interactions/useInteractions.mjs.map +0 -1
  252. package/dist/esm/interactions/useInteractions.native.js +0 -188
  253. package/dist/esm/interactions/useInteractions.native.js.map +0 -1
  254. package/dist/esm/interactions/useListNavigation.mjs +0 -393
  255. package/dist/esm/interactions/useListNavigation.mjs.map +0 -1
  256. package/dist/esm/interactions/useListNavigation.native.js +0 -405
  257. package/dist/esm/interactions/useListNavigation.native.js.map +0 -1
  258. package/dist/esm/interactions/useRole.mjs +0 -86
  259. package/dist/esm/interactions/useRole.mjs.map +0 -1
  260. package/dist/esm/interactions/useRole.native.js +0 -97
  261. package/dist/esm/interactions/useRole.native.js.map +0 -1
  262. package/dist/esm/interactions/useTypeahead.mjs +0 -118
  263. package/dist/esm/interactions/useTypeahead.mjs.map +0 -1
  264. package/dist/esm/interactions/useTypeahead.native.js +0 -131
  265. package/dist/esm/interactions/useTypeahead.native.js.map +0 -1
  266. package/dist/esm/interactions/utils.mjs +0 -162
  267. package/dist/esm/interactions/utils.mjs.map +0 -1
  268. package/dist/esm/interactions/utils.native.js +0 -178
  269. package/dist/esm/interactions/utils.native.js.map +0 -1
  270. package/dist/esm/middleware/inner.mjs +0 -82
  271. package/dist/esm/middleware/inner.mjs.map +0 -1
  272. package/dist/esm/middleware/inner.native.js +0 -91
  273. package/dist/esm/middleware/inner.native.js.map +0 -1
  274. package/dist/esm/useFloating.mjs +0 -27
  275. package/dist/esm/useFloating.mjs.map +0 -1
  276. package/dist/esm/useFloating.native.js +0 -29
  277. package/dist/esm/useFloating.native.js.map +0 -1
@@ -1,84 +0,0 @@
1
- import * as React from "react";
2
- var DelayGroupContext = React.createContext({
3
- currentId: null,
4
- setCurrentId: function () {},
5
- delay: 0,
6
- timeoutMs: 0,
7
- initialDelay: 0
8
- });
9
- function useDelayGroupContext() {
10
- return React.useContext(DelayGroupContext);
11
- }
12
- function FloatingDelayGroup(param) {
13
- var {
14
- children,
15
- delay,
16
- timeoutMs = 0
17
- } = param;
18
- var [currentId, setCurrentIdRaw] = React.useState(null);
19
- var timeoutRef = React.useRef(void 0);
20
- var setCurrentId = React.useCallback(function (id) {
21
- clearTimeout(timeoutRef.current);
22
- if (id == null && timeoutMs > 0) {
23
- timeoutRef.current = setTimeout(function () {
24
- setCurrentIdRaw(null);
25
- }, timeoutMs);
26
- } else {
27
- setCurrentIdRaw(id);
28
- }
29
- }, [timeoutMs]);
30
- React.useEffect(function () {
31
- return function () {
32
- return clearTimeout(timeoutRef.current);
33
- };
34
- }, []);
35
- var value = React.useMemo(function () {
36
- return {
37
- currentId,
38
- setCurrentId,
39
- delay,
40
- timeoutMs,
41
- initialDelay: delay
42
- };
43
- }, [currentId, setCurrentId, delay, timeoutMs]);
44
- return React.createElement(DelayGroupContext.Provider, {
45
- value
46
- }, children);
47
- }
48
- function useDelayGroup(context) {
49
- var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
50
- var {
51
- id
52
- } = options;
53
- var groupContext = React.useContext(DelayGroupContext);
54
- React.useEffect(function () {
55
- if (!context.open && groupContext.currentId === id) {
56
- groupContext.setCurrentId(null);
57
- }
58
- }, [context.open, id]);
59
- React.useEffect(function () {
60
- if (groupContext.currentId != null && groupContext.currentId !== id && context.open) {
61
- context.onOpenChange(false);
62
- }
63
- }, [groupContext.currentId, id, context.open]);
64
- if (groupContext.currentId != null) {
65
- return {
66
- delay: {
67
- open: 1,
68
- close: getClose(groupContext.initialDelay)
69
- },
70
- currentId: groupContext.currentId
71
- };
72
- }
73
- return {
74
- delay: groupContext.initialDelay,
75
- currentId: groupContext.currentId
76
- };
77
- }
78
- function getClose(delay) {
79
- if (typeof delay === "number") return delay;
80
- var _delay_close;
81
- return (_delay_close = delay === null || delay === void 0 ? void 0 : delay.close) !== null && _delay_close !== void 0 ? _delay_close : 0;
82
- }
83
- export { FloatingDelayGroup, useDelayGroup, useDelayGroupContext };
84
- //# sourceMappingURL=useDelayGroup.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","DelayGroupContext","createContext","currentId","setCurrentId","delay","timeoutMs","initialDelay","useDelayGroupContext","useContext","FloatingDelayGroup","param","children","setCurrentIdRaw","useState","timeoutRef","useRef","useCallback","id","clearTimeout","current","setTimeout","useEffect","value","useMemo","createElement","Provider","useDelayGroup","context","options","arguments","length","groupContext","open","onOpenChange"],"sources":["../../../src/interactions/useDelayGroup.ts"],"sourcesContent":[null],"mappings":"AAAA,YAAYA,KAAA,MAAW;AAWvB,IAAAC,iBAAM,GAAAD,KAAoB,CAAAE,aAAM;EAC9BC,SAAA,EAAW;EACXC,YAAA,EAAc,SAAAA,CAAA,EAAM,CAAC;EACrBC,KAAA,EAAO;EACPC,SAAA,EAAW;EACXC,YAAA,EAAc;AAChB,CAAC;AAEM,SAASC,qBAAA,EAAuB;EACrC,OAAOR,KAAA,CAAMS,UAAA,CAAWR,iBAAiB;AAC3C;AAKO,SAASS,mBAAmBC,KAAA;EACjC;IAAAC,QAAA;IAAAP,KAAA;IAAAC,SAAA;EAAA,IAAAK,KAAA;EACA,KAAAR,SAAA,EAAAU,eAAA,IAAAb,KAAA,CAAAc,QAAA;EACA,IAAAC,UAAY,GAAAf,KAAA,CAAAgB,MAAA;EACd,IAIGZ,YAAA,GAAAJ,KAAA,CAAAiB,WAAA,WAAAC,EAAA;IACDC,YAAO,CAAAJ,UAAW,CAAAK,OAAe;IACjC,IAAMF,EAAA,YAAaZ,SAAM,GAAsC;MAE/DS,UAAM,CAAAK,OAAe,GAAAC,UAAM;QACxBR,eAAkC;MACjC,GAAAP,SAAA,CAAa;IACb,OAAI;MAEFO,eAAW,CAAAK,EAAA;IACT;EAAoB,IACVZ,SACP,CACL;EAAkBN,KACpB,CAAAsB,SAAA;IACF;MACC,OAAAH,YAAS,CAAAJ,UAAA,CAAAK,OAAA;IACZ;EAEA,MAAM;EACJ,IAAAG,KAAO,GAAAvB,KAAM,CAAAwB,OAAA,aAAa;IAC5B,OAAK;MAELrB,SAAM;MACJC,YAAO;MACLC,KAAA;MACAC,SAAA;MACAC,YAAA,EAAAF;IAAA;EACA,IAEFF,SAAA,EACAC,YAAY,EACdC,KAAA,EAEAC,SAAO,CACT;EAIO,OAASN,KAAA,CAAAyB,aACd,CAAAxB,iBAEwD,CAAAyB,QAAA;IACxDH;EACA,GAAAX,QAAM;AAGN;AACE,SAAKe,aAAQA,CAAAC,OAAQ;EACnB,IAAAC,OAAA,GAAAC,SAAa,CAAAC,MAAa,IAAI,IAAAD,SAAA,iBAAAA,SAAA;EAAA,IAChC;IAAAZ;EAAA,IAAAW,OAAA;EACF,IAAIG,YAAQ,GAAMhC,KAAG,CAAAS,UAAA,CAAAR,iBAAA;EAIrBD,KAAA,CAAMsB,SAAA,CAAU,YAAM;IACpB,IAAI,CAAAM,OAAA,CAAAK,IAAa,IAAAD,YAAa,CAAA7B,SAAQ,KAAAe,EAAA,EAAa;MACjDc,YAAQ,CAAA5B,YAAa,CAAK;IAC5B;EACF,GAAG,CAIHwB,OAAI,CAAAK,IAAA,EACFf,EAAA,CAAO;EACwDlB,KAC7D,CAAAsB,SAAW;IACb,IAAAU,YAAA,CAAA7B,SAAA,YAAA6B,YAAA,CAAA7B,SAAA,KAAAe,EAAA,IAAAU,OAAA,CAAAK,IAAA;MACFL,OAAA,CAAAM,YAAA;IAEA;EAAO,GACL,CACAF,YAAW,CAAA7B,SAAA,EACbe,EAAA,EACFU,OAAA,CAAAK,IAAA,CAEA;EACE,IAAID,YAAO,CAAA7B,SAAU,IAAU;IAC/B,OAAO;MACTE,KAAA","ignoreList":[]}
@@ -1,105 +0,0 @@
1
- import { useEffect, useMemo, useRef } from "react";
2
- import { activeElement, clearTimeoutIfSet, contains, getDocument, getTarget, isElement, isHTMLElement, isMac, isSafari, isTypeableElement, matchesFocusVisible } from "./utils.mjs";
3
- function isMacSafari() {
4
- return isMac() && isSafari();
5
- }
6
- function useFocus(context, props = {}) {
7
- const {
8
- open,
9
- onOpenChange,
10
- events,
11
- dataRef,
12
- elements
13
- } = context;
14
- const {
15
- enabled = true,
16
- visibleOnly = true
17
- } = props;
18
- const blockFocusRef = useRef(false);
19
- const timeoutRef = useRef(-1);
20
- const keyboardModalityRef = useRef(true);
21
- useEffect(() => {
22
- if (!enabled) return;
23
- const win = getDocument(elements.domReference).defaultView || window;
24
- function onBlur() {
25
- if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {
26
- blockFocusRef.current = true;
27
- }
28
- }
29
- function onKeyDown() {
30
- keyboardModalityRef.current = true;
31
- }
32
- function onPointerDown() {
33
- keyboardModalityRef.current = false;
34
- }
35
- win.addEventListener("blur", onBlur);
36
- if (isMacSafari()) {
37
- win.addEventListener("keydown", onKeyDown, true);
38
- win.addEventListener("pointerdown", onPointerDown, true);
39
- }
40
- return () => {
41
- win.removeEventListener("blur", onBlur);
42
- if (isMacSafari()) {
43
- win.removeEventListener("keydown", onKeyDown, true);
44
- win.removeEventListener("pointerdown", onPointerDown, true);
45
- }
46
- };
47
- }, [elements.domReference, open, enabled]);
48
- useEffect(() => {
49
- if (!enabled) return;
50
- if (!events) return;
51
- function handleOpenChange({
52
- reason
53
- }) {
54
- if (reason === "reference-press" || reason === "escape-key") {
55
- blockFocusRef.current = true;
56
- }
57
- }
58
- events.on("openchange", handleOpenChange);
59
- return () => {
60
- events.off("openchange", handleOpenChange);
61
- };
62
- }, [events, enabled]);
63
- useEffect(() => {
64
- return () => {
65
- clearTimeoutIfSet(timeoutRef);
66
- };
67
- }, []);
68
- const reference = useMemo(() => ({
69
- onMouseLeave() {
70
- blockFocusRef.current = false;
71
- },
72
- onFocus(event) {
73
- if (blockFocusRef.current) return;
74
- const target = getTarget(event.nativeEvent);
75
- if (visibleOnly && isElement(target)) {
76
- if (isMacSafari() && !event.relatedTarget) {
77
- if (!keyboardModalityRef.current && !isTypeableElement(target)) {
78
- return;
79
- }
80
- } else if (!matchesFocusVisible(target)) {
81
- return;
82
- }
83
- }
84
- onOpenChange(true, event.nativeEvent, "focus");
85
- },
86
- onBlur(event) {
87
- blockFocusRef.current = false;
88
- const relatedTarget = event.relatedTarget;
89
- const nativeEvent = event.nativeEvent;
90
- timeoutRef.current = window.setTimeout(() => {
91
- const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);
92
- if (!relatedTarget && activeEl === elements.domReference) return;
93
- if (contains(context.refs.floating.current, activeEl) || contains(elements.domReference, activeEl)) {
94
- return;
95
- }
96
- onOpenChange(false, nativeEvent, "focus");
97
- });
98
- }
99
- }), [context.refs.floating, elements.domReference, onOpenChange, visibleOnly]);
100
- return useMemo(() => enabled ? {
101
- reference
102
- } : {}, [enabled, reference]);
103
- }
104
- export { useFocus };
105
- //# sourceMappingURL=useFocus.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useMemo","useRef","activeElement","clearTimeoutIfSet","contains","getDocument","getTarget","isElement","isHTMLElement","isMac","isSafari","isTypeableElement","matchesFocusVisible","isMacSafari","useFocus","context","props","open","onOpenChange","events","dataRef","elements","enabled","visibleOnly","blockFocusRef","timeoutRef","keyboardModalityRef","win","domReference","defaultView","window","onBlur","current","onKeyDown","onPointerDown","addEventListener","removeEventListener","handleOpenChange","reason","on","off","reference","onMouseLeave","onFocus","event","target","nativeEvent","relatedTarget","setTimeout","activeEl","ownerDocument","document","refs","floating"],"sources":["../../../src/interactions/useFocus.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,111 +0,0 @@
1
- import { useEffect, useMemo, useRef } from "react";
2
- import { activeElement, clearTimeoutIfSet, contains, getDocument, getTarget, isElement, isHTMLElement, isMac, isSafari, isTypeableElement, matchesFocusVisible } from "./utils.native.js";
3
- function isMacSafari() {
4
- return isMac() && isSafari();
5
- }
6
- function useFocus(context) {
7
- var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
8
- var {
9
- open,
10
- onOpenChange,
11
- events,
12
- dataRef,
13
- elements
14
- } = context;
15
- var {
16
- enabled = true,
17
- visibleOnly = true
18
- } = props;
19
- var blockFocusRef = useRef(false);
20
- var timeoutRef = useRef(-1);
21
- var keyboardModalityRef = useRef(true);
22
- useEffect(function () {
23
- if (!enabled) return;
24
- var win = getDocument(elements.domReference).defaultView || window;
25
- function onBlur() {
26
- if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {
27
- blockFocusRef.current = true;
28
- }
29
- }
30
- function onKeyDown() {
31
- keyboardModalityRef.current = true;
32
- }
33
- function onPointerDown() {
34
- keyboardModalityRef.current = false;
35
- }
36
- win.addEventListener("blur", onBlur);
37
- if (isMacSafari()) {
38
- win.addEventListener("keydown", onKeyDown, true);
39
- win.addEventListener("pointerdown", onPointerDown, true);
40
- }
41
- return function () {
42
- win.removeEventListener("blur", onBlur);
43
- if (isMacSafari()) {
44
- win.removeEventListener("keydown", onKeyDown, true);
45
- win.removeEventListener("pointerdown", onPointerDown, true);
46
- }
47
- };
48
- }, [elements.domReference, open, enabled]);
49
- useEffect(function () {
50
- if (!enabled) return;
51
- if (!events) return;
52
- function handleOpenChange(param) {
53
- var {
54
- reason
55
- } = param;
56
- if (reason === "reference-press" || reason === "escape-key") {
57
- blockFocusRef.current = true;
58
- }
59
- }
60
- events.on("openchange", handleOpenChange);
61
- return function () {
62
- events.off("openchange", handleOpenChange);
63
- };
64
- }, [events, enabled]);
65
- useEffect(function () {
66
- return function () {
67
- clearTimeoutIfSet(timeoutRef);
68
- };
69
- }, []);
70
- var reference = useMemo(function () {
71
- return {
72
- onMouseLeave() {
73
- blockFocusRef.current = false;
74
- },
75
- onFocus(event) {
76
- if (blockFocusRef.current) return;
77
- var target = getTarget(event.nativeEvent);
78
- if (visibleOnly && isElement(target)) {
79
- if (isMacSafari() && !event.relatedTarget) {
80
- if (!keyboardModalityRef.current && !isTypeableElement(target)) {
81
- return;
82
- }
83
- } else if (!matchesFocusVisible(target)) {
84
- return;
85
- }
86
- }
87
- onOpenChange(true, event.nativeEvent, "focus");
88
- },
89
- onBlur(event) {
90
- blockFocusRef.current = false;
91
- var relatedTarget = event.relatedTarget;
92
- var nativeEvent = event.nativeEvent;
93
- timeoutRef.current = window.setTimeout(function () {
94
- var activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);
95
- if (!relatedTarget && activeEl === elements.domReference) return;
96
- if (contains(context.refs.floating.current, activeEl) || contains(elements.domReference, activeEl)) {
97
- return;
98
- }
99
- onOpenChange(false, nativeEvent, "focus");
100
- });
101
- }
102
- };
103
- }, [context.refs.floating, elements.domReference, onOpenChange, visibleOnly]);
104
- return useMemo(function () {
105
- return enabled ? {
106
- reference
107
- } : {};
108
- }, [enabled, reference]);
109
- }
110
- export { useFocus };
111
- //# sourceMappingURL=useFocus.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useMemo","useRef","activeElement","clearTimeoutIfSet","contains","getDocument","getTarget","isElement","isHTMLElement","isMac","isSafari","isTypeableElement","matchesFocusVisible","isMacSafari","useFocus","context","props","arguments","length","open","onOpenChange","events","dataRef","elements","enabled","visibleOnly","blockFocusRef","timeoutRef","keyboardModalityRef","win","domReference","defaultView","window","onBlur","current","onKeyDown","onPointerDown","addEventListener","removeEventListener","handleOpenChange","param","reason","on","off","reference","onMouseLeave","onFocus","event","target","nativeEvent","relatedTarget","setTimeout","activeEl","ownerDocument","document","refs","floating"],"sources":["../../../src/interactions/useFocus.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,320 +0,0 @@
1
- import * as React from "react";
2
- import { useEvent } from "@hanzogui/use-event";
3
- import { clearTimeoutIfSet, contains, getDocument, isElement, isMouseLikePointerType } from "./utils.mjs";
4
- const safePolygonIdentifier = "data-floating-ui-safe-polygon";
5
- function getDelay(value, prop, pointerType) {
6
- if (pointerType && !isMouseLikePointerType(pointerType)) {
7
- return 0;
8
- }
9
- if (typeof value === "number") {
10
- return value;
11
- }
12
- return value?.[prop];
13
- }
14
- function useHover(context, props = {}) {
15
- const {
16
- open,
17
- onOpenChange,
18
- dataRef,
19
- events,
20
- elements
21
- } = context;
22
- const {
23
- enabled = true,
24
- delay = 0,
25
- handleClose = null,
26
- mouseOnly = false,
27
- restMs = 0,
28
- move = true
29
- } = props;
30
- const handleCloseRef = React.useRef(handleClose);
31
- handleCloseRef.current = handleClose;
32
- const delayRef = React.useRef(delay);
33
- delayRef.current = delay;
34
- const openRef = React.useRef(open);
35
- openRef.current = open;
36
- const restMsRef = React.useRef(restMs);
37
- restMsRef.current = restMs;
38
- const stableOnOpenChange = useEvent(onOpenChange);
39
- const pointerTypeRef = React.useRef(void 0);
40
- const timeoutRef = React.useRef(-1);
41
- const handlerRef = React.useRef(void 0);
42
- const restTimeoutRef = React.useRef(-1);
43
- const blockMouseMoveRef = React.useRef(true);
44
- const performedPointerEventsMutationRef = React.useRef(false);
45
- const unbindMouseMoveRef = React.useRef(() => {});
46
- const restTimeoutPendingRef = React.useRef(false);
47
- const isHoverOpen = useEvent(() => {
48
- const type = dataRef.current.openEvent?.type;
49
- return type?.includes("mouse") && type !== "mousedown";
50
- });
51
- React.useEffect(() => {
52
- if (!enabled) return;
53
- if (!events) return;
54
- function onOpenChange2({
55
- open: open2
56
- }) {
57
- if (!open2) {
58
- clearTimeoutIfSet(timeoutRef);
59
- clearTimeoutIfSet(restTimeoutRef);
60
- blockMouseMoveRef.current = true;
61
- restTimeoutPendingRef.current = false;
62
- }
63
- }
64
- events.on("openchange", onOpenChange2);
65
- return () => {
66
- events.off("openchange", onOpenChange2);
67
- };
68
- }, [enabled, events]);
69
- const closeWithDelay = useEvent((event, runElseBranch = true, reason = "hover") => {
70
- const closeDelay = getDelay(delayRef.current, "close", pointerTypeRef.current);
71
- if (closeDelay && !handlerRef.current) {
72
- clearTimeoutIfSet(timeoutRef);
73
- timeoutRef.current = window.setTimeout(() => stableOnOpenChange(false, event, reason), closeDelay);
74
- } else if (runElseBranch) {
75
- clearTimeoutIfSet(timeoutRef);
76
- stableOnOpenChange(false, event, reason);
77
- }
78
- });
79
- const cleanupMouseMoveHandler = useEvent(() => {
80
- unbindMouseMoveRef.current();
81
- handlerRef.current = void 0;
82
- if (context.handleCloseActiveRef) {
83
- context.handleCloseActiveRef.current = false;
84
- }
85
- });
86
- const clearPointerEvents = useEvent(() => {
87
- if (performedPointerEventsMutationRef.current) {
88
- const body = getDocument(elements.floating).body;
89
- body.style.pointerEvents = "";
90
- body.removeAttribute(safePolygonIdentifier);
91
- performedPointerEventsMutationRef.current = false;
92
- }
93
- });
94
- const isClickLikeOpenEvent = useEvent(() => {
95
- return dataRef.current.openEvent ? ["click", "mousedown"].includes(dataRef.current.openEvent.type) : false;
96
- });
97
- React.useEffect(() => {
98
- if (!enabled) return;
99
- function onReferenceMouseEnter(event) {
100
- clearTimeoutIfSet(timeoutRef);
101
- blockMouseMoveRef.current = false;
102
- if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMsRef.current > 0 && !getDelay(delayRef.current, "open")) {
103
- return;
104
- }
105
- const openDelay = getDelay(delayRef.current, "open", pointerTypeRef.current);
106
- if (openDelay) {
107
- timeoutRef.current = window.setTimeout(() => {
108
- if (!openRef.current) {
109
- stableOnOpenChange(true, event, "hover");
110
- }
111
- }, openDelay);
112
- } else if (!open) {
113
- stableOnOpenChange(true, event, "hover");
114
- }
115
- }
116
- function onReferenceMouseLeave(event) {
117
- if (isClickLikeOpenEvent()) {
118
- clearPointerEvents();
119
- return;
120
- }
121
- if (context.triggerElements?.hasElement(event.relatedTarget)) {
122
- return;
123
- }
124
- unbindMouseMoveRef.current();
125
- const doc = getDocument(elements.floating);
126
- clearTimeoutIfSet(restTimeoutRef);
127
- restTimeoutPendingRef.current = false;
128
- if (handleCloseRef.current) {
129
- if (!open) {
130
- clearTimeoutIfSet(timeoutRef);
131
- }
132
- const placement = dataRef.current.placement || "bottom";
133
- const reference2 = elements.domReference;
134
- const floating = elements.floating;
135
- if (!reference2 || !floating) return;
136
- handlerRef.current = handleCloseRef.current({
137
- x: event.clientX,
138
- y: event.clientY,
139
- placement,
140
- elements: {
141
- reference: reference2,
142
- floating,
143
- domReference: reference2
144
- },
145
- onClose() {
146
- if (context.handleCloseActiveRef) {
147
- context.handleCloseActiveRef.current = false;
148
- }
149
- clearPointerEvents();
150
- cleanupMouseMoveHandler();
151
- if (!isClickLikeOpenEvent()) {
152
- closeWithDelay(event, true, "safe-polygon");
153
- }
154
- }
155
- });
156
- if (context.handleCloseActiveRef) {
157
- context.handleCloseActiveRef.current = true;
158
- }
159
- const handler = handlerRef.current;
160
- doc.addEventListener("mousemove", handler);
161
- unbindMouseMoveRef.current = () => {
162
- doc.removeEventListener("mousemove", handler);
163
- };
164
- return;
165
- }
166
- const shouldClose = pointerTypeRef.current === "touch" ? !contains(elements.floating, event.relatedTarget) : true;
167
- if (shouldClose) {
168
- closeWithDelay(event);
169
- }
170
- }
171
- function onScrollMouseLeave(event) {
172
- if (isClickLikeOpenEvent()) return;
173
- if (context.triggerElements?.hasElement(event.relatedTarget)) {
174
- return;
175
- }
176
- const placement = dataRef.current.placement || "bottom";
177
- const reference2 = elements.domReference;
178
- const floating = elements.floating;
179
- if (!reference2 || !floating) return;
180
- handleCloseRef.current?.({
181
- x: event.clientX,
182
- y: event.clientY,
183
- placement,
184
- elements: {
185
- reference: reference2,
186
- floating,
187
- domReference: reference2
188
- },
189
- onClose() {
190
- clearPointerEvents();
191
- cleanupMouseMoveHandler();
192
- if (!isClickLikeOpenEvent()) {
193
- closeWithDelay(event);
194
- }
195
- }
196
- })(event);
197
- }
198
- function onFloatingMouseEnter() {
199
- clearTimeoutIfSet(timeoutRef);
200
- }
201
- function onFloatingMouseLeave(event) {
202
- if (isClickLikeOpenEvent()) return;
203
- if (context.triggerElements?.hasElement(event.relatedTarget)) {
204
- return;
205
- }
206
- closeWithDelay(event, false);
207
- }
208
- if (isElement(elements.domReference)) {
209
- const reference2 = elements.domReference;
210
- const floating = elements.floating;
211
- if (open) {
212
- reference2.addEventListener("mouseleave", onScrollMouseLeave);
213
- }
214
- if (move) {
215
- reference2.addEventListener("mousemove", onReferenceMouseEnter, {
216
- once: true
217
- });
218
- }
219
- reference2.addEventListener("mouseenter", onReferenceMouseEnter);
220
- reference2.addEventListener("mouseleave", onReferenceMouseLeave);
221
- if (floating) {
222
- floating.addEventListener("mouseleave", onScrollMouseLeave);
223
- floating.addEventListener("mouseenter", onFloatingMouseEnter);
224
- floating.addEventListener("mouseleave", onFloatingMouseLeave);
225
- }
226
- return () => {
227
- if (open) {
228
- reference2.removeEventListener("mouseleave", onScrollMouseLeave);
229
- }
230
- if (move) {
231
- reference2.removeEventListener("mousemove", onReferenceMouseEnter);
232
- }
233
- reference2.removeEventListener("mouseenter", onReferenceMouseEnter);
234
- reference2.removeEventListener("mouseleave", onReferenceMouseLeave);
235
- if (floating) {
236
- floating.removeEventListener("mouseleave", onScrollMouseLeave);
237
- floating.removeEventListener("mouseenter", onFloatingMouseEnter);
238
- floating.removeEventListener("mouseleave", onFloatingMouseLeave);
239
- }
240
- cleanupMouseMoveHandler();
241
- };
242
- }
243
- }, [elements, enabled, context, mouseOnly, move, open, dataRef]);
244
- React.useLayoutEffect(() => {
245
- if (!enabled) return;
246
- if (open && handleCloseRef.current?.__options?.blockPointerEvents && isHoverOpen()) {
247
- performedPointerEventsMutationRef.current = true;
248
- const floatingEl = elements.floating;
249
- if (isElement(elements.domReference) && floatingEl) {
250
- const body = getDocument(elements.floating).body;
251
- body.setAttribute(safePolygonIdentifier, "");
252
- const ref = elements.domReference;
253
- body.style.pointerEvents = "none";
254
- ref.style.pointerEvents = "auto";
255
- floatingEl.style.pointerEvents = "auto";
256
- return () => {
257
- body.style.pointerEvents = "";
258
- ref.style.pointerEvents = "";
259
- floatingEl.style.pointerEvents = "";
260
- };
261
- }
262
- }
263
- }, [enabled, open, elements, isHoverOpen]);
264
- React.useLayoutEffect(() => {
265
- if (!open) {
266
- pointerTypeRef.current = void 0;
267
- restTimeoutPendingRef.current = false;
268
- cleanupMouseMoveHandler();
269
- clearPointerEvents();
270
- }
271
- }, [open]);
272
- React.useEffect(() => {
273
- return () => {
274
- cleanupMouseMoveHandler();
275
- clearTimeoutIfSet(timeoutRef);
276
- clearTimeoutIfSet(restTimeoutRef);
277
- clearPointerEvents();
278
- };
279
- }, [enabled, elements.domReference]);
280
- const reference = React.useMemo(() => {
281
- function setPointerRef(event) {
282
- pointerTypeRef.current = event.pointerType;
283
- }
284
- return {
285
- onPointerDown: setPointerRef,
286
- onPointerEnter: setPointerRef,
287
- onMouseMove(event) {
288
- const {
289
- nativeEvent
290
- } = event;
291
- function handleMouseMove() {
292
- if (!blockMouseMoveRef.current && !openRef.current) {
293
- stableOnOpenChange(true, nativeEvent, "hover");
294
- }
295
- }
296
- if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {
297
- return;
298
- }
299
- if (open || restMsRef.current === 0) {
300
- return;
301
- }
302
- if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {
303
- return;
304
- }
305
- clearTimeoutIfSet(restTimeoutRef);
306
- if (pointerTypeRef.current === "touch") {
307
- handleMouseMove();
308
- } else {
309
- restTimeoutPendingRef.current = true;
310
- restTimeoutRef.current = window.setTimeout(handleMouseMove, restMsRef.current);
311
- }
312
- }
313
- };
314
- }, [mouseOnly, open]);
315
- return React.useMemo(() => enabled ? {
316
- reference
317
- } : {}, [enabled, reference]);
318
- }
319
- export { getDelay, useHover };
320
- //# sourceMappingURL=useHover.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useEvent","clearTimeoutIfSet","contains","getDocument","isElement","isMouseLikePointerType","safePolygonIdentifier","getDelay","value","prop","pointerType","useHover","context","props","open","onOpenChange","dataRef","events","elements","enabled","delay","handleClose","mouseOnly","restMs","move","handleCloseRef","useRef","current","delayRef","openRef","restMsRef","stableOnOpenChange","pointerTypeRef","timeoutRef","handlerRef","restTimeoutRef","blockMouseMoveRef","performedPointerEventsMutationRef","unbindMouseMoveRef","restTimeoutPendingRef","isHoverOpen","type","openEvent","includes","useEffect","open2","on","off","closeWithDelay","event","runElseBranch","reason","closeDelay","window","setTimeout","cleanupMouseMoveHandler","handleCloseActiveRef","clearPointerEvents","body","floating","style","pointerEvents","removeAttribute","isClickLikeOpenEvent","onReferenceMouseEnter","openDelay","onReferenceMouseLeave","triggerElements","hasElement","relatedTarget","doc","placement","reference","domReference","x","clientX","y","clientY","onClose","handler","addEventListener","removeEventListener","shouldClose","onScrollMouseLeave","onFloatingMouseEnter","onFloatingMouseLeave","once","useLayoutEffect","__options","blockPointerEvents","floatingEl","setAttribute","ref","useMemo","setPointerRef","onPointerDown","onPointerEnter","onMouseMove","nativeEvent","handleMouseMove","movementX","movementY"],"sources":["../../../src/interactions/useHover.ts"],"sourcesContent":[null],"mappings":"AAAA,YAAYA,KAAA,MAAW;AACvB,SAASC,QAAA,QAAgB;AASzB,SACEC,iBAAA,EACAC,QAAA,EACAC,WAAA,EACAC,SAAA,EACAC,sBAAA,QACK;AAEP,MAAMC,qBAAA,GAAwB;AAEvB,SAASC,SACdC,KAAA,EACAC,IAAA,EACAC,WAAA,EACA;EACA,IAAIA,WAAA,IAAe,CAACL,sBAAA,CAAuBK,WAAW,GAAG;IACvD,OAAO;EACT;EAEA,IAAI,OAAOF,KAAA,KAAU,UAAU;IAC7B,OAAOA,KAAA;EACT;EAEA,OAAOA,KAAA,GAAQC,IAAI;AACrB;AAUO,SAASE,SACdC,OAAA,EACAC,KAAA,GAAuB,CAAC,GACV;EACd,MAAM;IAAEC,IAAA;IAAMC,YAAA;IAAcC,OAAA;IAASC,MAAA;IAAQC;EAAS,IAAIN,OAAA;EAC1D,MAAM;IACJO,OAAA,GAAU;IACVC,KAAA,GAAQ;IACRC,WAAA,GAAc;IACdC,SAAA,GAAY;IACZC,MAAA,GAAS;IACTC,IAAA,GAAO;EACT,IAAIX,KAAA;EAGJ,MAAMY,cAAA,GAAiB1B,KAAA,CAAM2B,MAAA,CAAOL,WAAW;EAC/CI,cAAA,CAAeE,OAAA,GAAUN,WAAA;EACzB,MAAMO,QAAA,GAAW7B,KAAA,CAAM2B,MAAA,CAAON,KAAK;EACnCQ,QAAA,CAASD,OAAA,GAAUP,KAAA;EACnB,MAAMS,OAAA,GAAU9B,KAAA,CAAM2B,MAAA,CAAOZ,IAAI;EACjCe,OAAA,CAAQF,OAAA,GAAUb,IAAA;EAClB,MAAMgB,SAAA,GAAY/B,KAAA,CAAM2B,MAAA,CAAOH,MAAM;EACrCO,SAAA,CAAUH,OAAA,GAAUJ,MAAA;EAEpB,MAAMQ,kBAAA,GAAqB/B,QAAA,CAASe,YAAY;EAEhD,MAAMiB,cAAA,GAAiBjC,KAAA,CAAM2B,MAAA,CAA2B,MAAS;EACjE,MAAMO,UAAA,GAAalC,KAAA,CAAM2B,MAAA,CAAO,EAAE;EAClC,MAAMQ,UAAA,GAAanC,KAAA,CAAM2B,MAAA,CAAkD,MAAS;EACpF,MAAMS,cAAA,GAAiBpC,KAAA,CAAM2B,MAAA,CAAO,EAAE;EACtC,MAAMU,iBAAA,GAAoBrC,KAAA,CAAM2B,MAAA,CAAO,IAAI;EAC3C,MAAMW,iCAAA,GAAoCtC,KAAA,CAAM2B,MAAA,CAAO,KAAK;EAC5D,MAAMY,kBAAA,GAAqBvC,KAAA,CAAM2B,MAAA,CAAO,MAAM,CAAC,CAAC;EAChD,MAAMa,qBAAA,GAAwBxC,KAAA,CAAM2B,MAAA,CAAO,KAAK;EAEhD,MAAMc,WAAA,GAAcxC,QAAA,CAAS,MAAM;IACjC,MAAMyC,IAAA,GAAOzB,OAAA,CAAQW,OAAA,CAAQe,SAAA,EAAWD,IAAA;IACxC,OAAOA,IAAA,EAAME,QAAA,CAAS,OAAO,KAAKF,IAAA,KAAS;EAC7C,CAAC;EAID1C,KAAA,CAAM6C,SAAA,CAAU,MAAM;IACpB,IAAI,CAACzB,OAAA,EAAS;IACd,IAAI,CAACF,MAAA,EAAQ;IAEb,SAASF,cAAa;MAAED,IAAA,EAAA+B;IAAK,GAAsB;MACjD,IAAI,CAAC/B,KAAA,EAAM;QACTb,iBAAA,CAAkBgC,UAAU;QAC5BhC,iBAAA,CAAkBkC,cAAc;QAChCC,iBAAA,CAAkBT,OAAA,GAAU;QAC5BY,qBAAA,CAAsBZ,OAAA,GAAU;MAClC;IACF;IAEAV,MAAA,CAAO6B,EAAA,CAAG,cAAc/B,aAAY;IACpC,OAAO,MAAM;MACXE,MAAA,CAAO8B,GAAA,CAAI,cAAchC,aAAY;IACvC;EACF,GAAG,CAACI,OAAA,EAASF,MAAM,CAAC;EAKpB,MAAM+B,cAAA,GAAiBhD,QAAA,CACrB,CAACiD,KAAA,EAAcC,aAAA,GAAgB,MAAMC,MAAA,GAA2B,YAAY;IAC1E,MAAMC,UAAA,GAAa7C,QAAA,CAASqB,QAAA,CAASD,OAAA,EAAS,SAASK,cAAA,CAAeL,OAAO;IAC7E,IAAIyB,UAAA,IAAc,CAAClB,UAAA,CAAWP,OAAA,EAAS;MACrC1B,iBAAA,CAAkBgC,UAAU;MAC5BA,UAAA,CAAWN,OAAA,GAAU0B,MAAA,CAAOC,UAAA,CAC1B,MAAMvB,kBAAA,CAAmB,OAAOkB,KAAA,EAAOE,MAAM,GAC7CC,UACF;IACF,WAAWF,aAAA,EAAe;MACxBjD,iBAAA,CAAkBgC,UAAU;MAC5BF,kBAAA,CAAmB,OAAOkB,KAAA,EAAOE,MAAM;IACzC;EACF,CACF;EAEA,MAAMI,uBAAA,GAA0BvD,QAAA,CAAS,MAAM;IAC7CsC,kBAAA,CAAmBX,OAAA,CAAQ;IAC3BO,UAAA,CAAWP,OAAA,GAAU;IACrB,IAAIf,OAAA,CAAQ4C,oBAAA,EAAsB;MAChC5C,OAAA,CAAQ4C,oBAAA,CAAqB7B,OAAA,GAAU;IACzC;EACF,CAAC;EAED,MAAM8B,kBAAA,GAAqBzD,QAAA,CAAS,MAAM;IACxC,IAAIqC,iCAAA,CAAkCV,OAAA,EAAS;MAC7C,MAAM+B,IAAA,GAAOvD,WAAA,CAAYe,QAAA,CAASyC,QAAQ,EAAED,IAAA;MAC5CA,IAAA,CAAKE,KAAA,CAAMC,aAAA,GAAgB;MAC3BH,IAAA,CAAKI,eAAA,CAAgBxD,qBAAqB;MAC1C+B,iCAAA,CAAkCV,OAAA,GAAU;IAC9C;EACF,CAAC;EAED,MAAMoC,oBAAA,GAAuB/D,QAAA,CAAS,MAAM;IAC1C,OAAOgB,OAAA,CAAQW,OAAA,CAAQe,SAAA,GACnB,CAAC,SAAS,WAAW,EAAEC,QAAA,CAAS3B,OAAA,CAAQW,OAAA,CAAQe,SAAA,CAAUD,IAAI,IAC9D;EACN,CAAC;EAKD1C,KAAA,CAAM6C,SAAA,CAAU,MAAM;IACpB,IAAI,CAACzB,OAAA,EAAS;IAEd,SAAS6C,sBAAsBf,KAAA,EAAmB;MAChDhD,iBAAA,CAAkBgC,UAAU;MAC5BG,iBAAA,CAAkBT,OAAA,GAAU;MAE5B,IACGL,SAAA,IAAa,CAACjB,sBAAA,CAAuB2B,cAAA,CAAeL,OAAO,KAC3DG,SAAA,CAAUH,OAAA,GAAU,KAAK,CAACpB,QAAA,CAASqB,QAAA,CAASD,OAAA,EAAS,MAAM,GAC5D;QACA;MACF;MAEA,MAAMsC,SAAA,GAAY1D,QAAA,CAASqB,QAAA,CAASD,OAAA,EAAS,QAAQK,cAAA,CAAeL,OAAO;MAE3E,IAAIsC,SAAA,EAAW;QACbhC,UAAA,CAAWN,OAAA,GAAU0B,MAAA,CAAOC,UAAA,CAAW,MAAM;UAC3C,IAAI,CAACzB,OAAA,CAAQF,OAAA,EAAS;YACpBI,kBAAA,CAAmB,MAAMkB,KAAA,EAAO,OAAO;UACzC;QACF,GAAGgB,SAAS;MACd,WAAW,CAACnD,IAAA,EAAM;QAChBiB,kBAAA,CAAmB,MAAMkB,KAAA,EAAO,OAAO;MACzC;IACF;IAEA,SAASiB,sBAAsBjB,KAAA,EAAmB;MAChD,IAAIc,oBAAA,CAAqB,GAAG;QAC1BN,kBAAA,CAAmB;QACnB;MACF;MAGA,IAAI7C,OAAA,CAAQuD,eAAA,EAAiBC,UAAA,CAAWnB,KAAA,CAAMoB,aAAwB,GAAG;QACvE;MACF;MAEA/B,kBAAA,CAAmBX,OAAA,CAAQ;MAE3B,MAAM2C,GAAA,GAAMnE,WAAA,CAAYe,QAAA,CAASyC,QAAQ;MACzC1D,iBAAA,CAAkBkC,cAAc;MAChCI,qBAAA,CAAsBZ,OAAA,GAAU;MAEhC,IAAIF,cAAA,CAAeE,OAAA,EAAS;QAE1B,IAAI,CAACb,IAAA,EAAM;UACTb,iBAAA,CAAkBgC,UAAU;QAC9B;QAEA,MAAMsC,SAAA,GAAYvD,OAAA,CAAQW,OAAA,CAAQ4C,SAAA,IAAa;QAC/C,MAAMC,UAAA,GAAYtD,QAAA,CAASuD,YAAA;QAC3B,MAAMd,QAAA,GAAWzC,QAAA,CAASyC,QAAA;QAE1B,IAAI,CAACa,UAAA,IAAa,CAACb,QAAA,EAAU;QAK7BzB,UAAA,CAAWP,OAAA,GAAUF,cAAA,CAAeE,OAAA,CAAQ;UAC1C+C,CAAA,EAAGzB,KAAA,CAAM0B,OAAA;UACTC,CAAA,EAAG3B,KAAA,CAAM4B,OAAA;UACTN,SAAA;UACArD,QAAA,EAAU;YACRsD,SAAA,EAAWA,UAAA;YACXb,QAAA;YACAc,YAAA,EAAcD;UAChB;UACAM,QAAA,EAAU;YACR,IAAIlE,OAAA,CAAQ4C,oBAAA,EAAsB;cAChC5C,OAAA,CAAQ4C,oBAAA,CAAqB7B,OAAA,GAAU;YACzC;YACA8B,kBAAA,CAAmB;YACnBF,uBAAA,CAAwB;YACxB,IAAI,CAACQ,oBAAA,CAAqB,GAAG;cAC3Bf,cAAA,CAAeC,KAAA,EAAO,MAAM,cAAc;YAC5C;UACF;QACF,CAAC;QAED,IAAIrC,OAAA,CAAQ4C,oBAAA,EAAsB;UAChC5C,OAAA,CAAQ4C,oBAAA,CAAqB7B,OAAA,GAAU;QACzC;QAEA,MAAMoD,OAAA,GAAU7C,UAAA,CAAWP,OAAA;QAE3B2C,GAAA,CAAIU,gBAAA,CAAiB,aAAaD,OAAO;QACzCzC,kBAAA,CAAmBX,OAAA,GAAU,MAAM;UACjC2C,GAAA,CAAIW,mBAAA,CAAoB,aAAaF,OAAO;QAC9C;QAEA;MACF;MAIA,MAAMG,WAAA,GACJlD,cAAA,CAAeL,OAAA,KAAY,UACvB,CAACzB,QAAA,CAASgB,QAAA,CAASyC,QAAA,EAAUV,KAAA,CAAMoB,aAA+B,IAClE;MACN,IAAIa,WAAA,EAAa;QACflC,cAAA,CAAeC,KAAK;MACtB;IACF;IAIA,SAASkC,mBAAmBlC,KAAA,EAAmB;MAC7C,IAAIc,oBAAA,CAAqB,GAAG;MAG5B,IAAInD,OAAA,CAAQuD,eAAA,EAAiBC,UAAA,CAAWnB,KAAA,CAAMoB,aAAwB,GAAG;QACvE;MACF;MAEA,MAAME,SAAA,GAAYvD,OAAA,CAAQW,OAAA,CAAQ4C,SAAA,IAAa;MAC/C,MAAMC,UAAA,GAAYtD,QAAA,CAASuD,YAAA;MAC3B,MAAMd,QAAA,GAAWzC,QAAA,CAASyC,QAAA;MAE1B,IAAI,CAACa,UAAA,IAAa,CAACb,QAAA,EAAU;MAI7BlC,cAAA,CAAeE,OAAA,GAAU;QACvB+C,CAAA,EAAGzB,KAAA,CAAM0B,OAAA;QACTC,CAAA,EAAG3B,KAAA,CAAM4B,OAAA;QACTN,SAAA;QACArD,QAAA,EAAU;UACRsD,SAAA,EAAWA,UAAA;UACXb,QAAA;UACAc,YAAA,EAAcD;QAChB;QACAM,QAAA,EAAU;UACRrB,kBAAA,CAAmB;UACnBF,uBAAA,CAAwB;UACxB,IAAI,CAACQ,oBAAA,CAAqB,GAAG;YAC3Bf,cAAA,CAAeC,KAAK;UACtB;QACF;MACF,CAAC,EAAEA,KAAK;IACV;IAEA,SAASmC,qBAAA,EAAuB;MAC9BnF,iBAAA,CAAkBgC,UAAU;IAC9B;IAEA,SAASoD,qBAAqBpC,KAAA,EAAmB;MAC/C,IAAIc,oBAAA,CAAqB,GAAG;MAG5B,IAAInD,OAAA,CAAQuD,eAAA,EAAiBC,UAAA,CAAWnB,KAAA,CAAMoB,aAAwB,GAAG;QACvE;MACF;MAEArB,cAAA,CAAeC,KAAA,EAAO,KAAK;IAC7B;IAEA,IAAI7C,SAAA,CAAUc,QAAA,CAASuD,YAAY,GAAG;MACpC,MAAMD,UAAA,GAAYtD,QAAA,CAASuD,YAAA;MAC3B,MAAMd,QAAA,GAAWzC,QAAA,CAASyC,QAAA;MAE1B,IAAI7C,IAAA,EAAM;QACR0D,UAAA,CAAUQ,gBAAA,CAAiB,cAAcG,kBAAkB;MAC7D;MAEA,IAAI3D,IAAA,EAAM;QACRgD,UAAA,CAAUQ,gBAAA,CAAiB,aAAahB,qBAAA,EAAuB;UAC7DsB,IAAA,EAAM;QACR,CAAC;MACH;MAEAd,UAAA,CAAUQ,gBAAA,CAAiB,cAAchB,qBAAqB;MAC9DQ,UAAA,CAAUQ,gBAAA,CAAiB,cAAcd,qBAAqB;MAE9D,IAAIP,QAAA,EAAU;QACZA,QAAA,CAASqB,gBAAA,CAAiB,cAAcG,kBAAkB;QAC1DxB,QAAA,CAASqB,gBAAA,CAAiB,cAAcI,oBAAoB;QAC5DzB,QAAA,CAASqB,gBAAA,CAAiB,cAAcK,oBAAoB;MAC9D;MAEA,OAAO,MAAM;QACX,IAAIvE,IAAA,EAAM;UACR0D,UAAA,CAAUS,mBAAA,CAAoB,cAAcE,kBAAkB;QAChE;QAEA,IAAI3D,IAAA,EAAM;UACRgD,UAAA,CAAUS,mBAAA,CAAoB,aAAajB,qBAAqB;QAClE;QAEAQ,UAAA,CAAUS,mBAAA,CAAoB,cAAcjB,qBAAqB;QACjEQ,UAAA,CAAUS,mBAAA,CAAoB,cAAcf,qBAAqB;QAEjE,IAAIP,QAAA,EAAU;UACZA,QAAA,CAASsB,mBAAA,CAAoB,cAAcE,kBAAkB;UAC7DxB,QAAA,CAASsB,mBAAA,CAAoB,cAAcG,oBAAoB;UAC/DzB,QAAA,CAASsB,mBAAA,CAAoB,cAAcI,oBAAoB;QACjE;QAKA9B,uBAAA,CAAwB;MAC1B;IACF;EACF,GAAG,CAACrC,QAAA,EAAUC,OAAA,EAASP,OAAA,EAASU,SAAA,EAAWE,IAAA,EAAMV,IAAA,EAAME,OAAO,CAAC;EAK/DjB,KAAA,CAAMwF,eAAA,CAAgB,MAAM;IAC1B,IAAI,CAACpE,OAAA,EAAS;IAEd,IAAIL,IAAA,IAAQW,cAAA,CAAeE,OAAA,EAAS6D,SAAA,EAAWC,kBAAA,IAAsBjD,WAAA,CAAY,GAAG;MAClFH,iCAAA,CAAkCV,OAAA,GAAU;MAC5C,MAAM+D,UAAA,GAAaxE,QAAA,CAASyC,QAAA;MAE5B,IAAIvD,SAAA,CAAUc,QAAA,CAASuD,YAAY,KAAKiB,UAAA,EAAY;QAClD,MAAMhC,IAAA,GAAOvD,WAAA,CAAYe,QAAA,CAASyC,QAAQ,EAAED,IAAA;QAC5CA,IAAA,CAAKiC,YAAA,CAAarF,qBAAA,EAAuB,EAAE;QAE3C,MAAMsF,GAAA,GAAM1E,QAAA,CAASuD,YAAA;QAErBf,IAAA,CAAKE,KAAA,CAAMC,aAAA,GAAgB;QAC3B+B,GAAA,CAAIhC,KAAA,CAAMC,aAAA,GAAgB;QAC1B6B,UAAA,CAAW9B,KAAA,CAAMC,aAAA,GAAgB;QAEjC,OAAO,MAAM;UACXH,IAAA,CAAKE,KAAA,CAAMC,aAAA,GAAgB;UAC3B+B,GAAA,CAAIhC,KAAA,CAAMC,aAAA,GAAgB;UAC1B6B,UAAA,CAAW9B,KAAA,CAAMC,aAAA,GAAgB;QACnC;MACF;IACF;EACF,GAAG,CAAC1C,OAAA,EAASL,IAAA,EAAMI,QAAA,EAAUsB,WAAW,CAAC;EAEzCzC,KAAA,CAAMwF,eAAA,CAAgB,MAAM;IAC1B,IAAI,CAACzE,IAAA,EAAM;MACTkB,cAAA,CAAeL,OAAA,GAAU;MACzBY,qBAAA,CAAsBZ,OAAA,GAAU;MAChC4B,uBAAA,CAAwB;MACxBE,kBAAA,CAAmB;IACrB;EACF,GAAG,CAAC3C,IAAI,CAAC;EAETf,KAAA,CAAM6C,SAAA,CAAU,MAAM;IACpB,OAAO,MAAM;MACXW,uBAAA,CAAwB;MACxBtD,iBAAA,CAAkBgC,UAAU;MAC5BhC,iBAAA,CAAkBkC,cAAc;MAChCsB,kBAAA,CAAmB;IACrB;EACF,GAAG,CAACtC,OAAA,EAASD,QAAA,CAASuD,YAAY,CAAC;EAEnC,MAAMD,SAAA,GAAuCzE,KAAA,CAAM8F,OAAA,CAAQ,MAAM;IAC/D,SAASC,cAAc7C,KAAA,EAA2B;MAChDjB,cAAA,CAAeL,OAAA,GAAUsB,KAAA,CAAMvC,WAAA;IACjC;IAEA,OAAO;MACLqF,aAAA,EAAeD,aAAA;MACfE,cAAA,EAAgBF,aAAA;MAChBG,YAAYhD,KAAA,EAAyB;QACnC,MAAM;UAAEiD;QAAY,IAAIjD,KAAA;QAExB,SAASkD,gBAAA,EAAkB;UACzB,IAAI,CAAC/D,iBAAA,CAAkBT,OAAA,IAAW,CAACE,OAAA,CAAQF,OAAA,EAAS;YAClDI,kBAAA,CAAmB,MAAMmE,WAAA,EAAa,OAAO;UAC/C;QACF;QAEA,IAAI5E,SAAA,IAAa,CAACjB,sBAAA,CAAuB2B,cAAA,CAAeL,OAAO,GAAG;UAChE;QACF;QAEA,IAAIb,IAAA,IAAQgB,SAAA,CAAUH,OAAA,KAAY,GAAG;UACnC;QACF;QAGA,IACEY,qBAAA,CAAsBZ,OAAA,IACtBsB,KAAA,CAAMmD,SAAA,IAAa,IAAInD,KAAA,CAAMoD,SAAA,IAAa,IAAI,GAC9C;UACA;QACF;QAEApG,iBAAA,CAAkBkC,cAAc;QAEhC,IAAIH,cAAA,CAAeL,OAAA,KAAY,SAAS;UACtCwE,eAAA,CAAgB;QAClB,OAAO;UACL5D,qBAAA,CAAsBZ,OAAA,GAAU;UAChCQ,cAAA,CAAeR,OAAA,GAAU0B,MAAA,CAAOC,UAAA,CAC9B6C,eAAA,EACArE,SAAA,CAAUH,OACZ;QACF;MACF;IACF;EACF,GAAG,CAACL,SAAA,EAAWR,IAAI,CAAC;EAEpB,OAAOf,KAAA,CAAM8F,OAAA,CAAQ,MAAO1E,OAAA,GAAU;IAAEqD;EAAU,IAAI,CAAC,GAAI,CAACrD,OAAA,EAASqD,SAAS,CAAC;AACjF","ignoreList":[]}