@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDelayGroup.js","sourceRoot":"","sources":["../../../src/interactions/useDelayGroup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { useEffect, useMemo, useRef } from 'react';
2
+ import { activeElement, clearTimeoutIfSet, contains, getDocument, getTarget, isElement, isHTMLElement, isMac, isSafari, isTypeableElement, matchesFocusVisible, } from './utils.js';
3
+ function isMacSafari() {
4
+ return isMac() && isSafari();
5
+ }
6
+ // focus interaction: opens on focus, closes on blur.
7
+ // ported from floating-ui/react useFocus hook with adaptations for our context.
8
+ export function useFocus(context, props = {}) {
9
+ const { open, onOpenChange, events, dataRef, elements } = context;
10
+ const { enabled = true, visibleOnly = true } = props;
11
+ const blockFocusRef = useRef(false);
12
+ const timeoutRef = useRef(-1);
13
+ const keyboardModalityRef = useRef(true);
14
+ // if the reference was focused and the user left the tab/window, and the
15
+ // floating element was not open, block focus when they return.
16
+ // also tracks keyboard vs pointer modality on mac safari.
17
+ useEffect(() => {
18
+ if (!enabled)
19
+ return;
20
+ const win = getDocument(elements.domReference).defaultView || window;
21
+ function onBlur() {
22
+ if (!open &&
23
+ isHTMLElement(elements.domReference) &&
24
+ elements.domReference === activeElement(getDocument(elements.domReference))) {
25
+ blockFocusRef.current = true;
26
+ }
27
+ }
28
+ function onKeyDown() {
29
+ keyboardModalityRef.current = true;
30
+ }
31
+ function onPointerDown() {
32
+ keyboardModalityRef.current = false;
33
+ }
34
+ win.addEventListener('blur', onBlur);
35
+ if (isMacSafari()) {
36
+ win.addEventListener('keydown', onKeyDown, true);
37
+ win.addEventListener('pointerdown', onPointerDown, true);
38
+ }
39
+ return () => {
40
+ win.removeEventListener('blur', onBlur);
41
+ if (isMacSafari()) {
42
+ win.removeEventListener('keydown', onKeyDown, true);
43
+ win.removeEventListener('pointerdown', onPointerDown, true);
44
+ }
45
+ };
46
+ }, [elements.domReference, open, enabled]);
47
+ // block focus after reference-press or escape-key close,
48
+ // so that focus returning to the trigger doesn't reopen
49
+ useEffect(() => {
50
+ if (!enabled)
51
+ return;
52
+ if (!events)
53
+ return;
54
+ function handleOpenChange({ reason }) {
55
+ if (reason === 'reference-press' || reason === 'escape-key') {
56
+ blockFocusRef.current = true;
57
+ }
58
+ }
59
+ events.on('openchange', handleOpenChange);
60
+ return () => {
61
+ events.off('openchange', handleOpenChange);
62
+ };
63
+ }, [events, enabled]);
64
+ // cleanup timeout on unmount
65
+ useEffect(() => {
66
+ return () => {
67
+ clearTimeoutIfSet(timeoutRef);
68
+ };
69
+ }, []);
70
+ const reference = useMemo(() => ({
71
+ onMouseLeave() {
72
+ blockFocusRef.current = false;
73
+ },
74
+ onFocus(event) {
75
+ if (blockFocusRef.current)
76
+ return;
77
+ const target = getTarget(event.nativeEvent);
78
+ if (visibleOnly && isElement(target)) {
79
+ // safari fails to match :focus-visible if focus was initially
80
+ // outside the document
81
+ if (isMacSafari() && !event.relatedTarget) {
82
+ if (!keyboardModalityRef.current && !isTypeableElement(target)) {
83
+ return;
84
+ }
85
+ }
86
+ else if (!matchesFocusVisible(target)) {
87
+ return;
88
+ }
89
+ }
90
+ onOpenChange(true, event.nativeEvent, 'focus');
91
+ },
92
+ onBlur(event) {
93
+ blockFocusRef.current = false;
94
+ const relatedTarget = event.relatedTarget;
95
+ const nativeEvent = event.nativeEvent;
96
+ // wait for the window blur listener to fire
97
+ timeoutRef.current = window.setTimeout(() => {
98
+ const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);
99
+ // focus left the page, keep it open
100
+ if (!relatedTarget && activeEl === elements.domReference)
101
+ return;
102
+ // when focusing the reference element then clicking into the floating
103
+ // element, prevent it from hiding. we check activeElement rather than
104
+ // relatedTarget to handle shadow DOM correctly.
105
+ if (contains(context.refs.floating.current, activeEl) ||
106
+ contains(elements.domReference, activeEl)) {
107
+ return;
108
+ }
109
+ onOpenChange(false, nativeEvent, 'focus');
110
+ });
111
+ },
112
+ }), [context.refs.floating, elements.domReference, onOpenChange, visibleOnly]);
113
+ return useMemo(() => (enabled ? { reference } : {}), [enabled, reference]);
114
+ }
115
+ //# sourceMappingURL=useFocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocus.js","sourceRoot":"","sources":["../../../src/interactions/useFocus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,352 @@
1
+ import * as React from 'react';
2
+ import { useEvent } from '@hanzogui/use-event';
3
+ import { clearTimeoutIfSet, contains, getDocument, isElement, isMouseLikePointerType, } from './utils.js';
4
+ const safePolygonIdentifier = 'data-floating-ui-safe-polygon';
5
+ export 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
+ // hover interaction hook ported from @floating-ui/react.
15
+ // uses raw DOM addEventListener on the reference element (NOT react delegation)
16
+ // so that mouseenter fires even when cursor moves from a disabled element.
17
+ //
18
+ // intentionally does NOT listen for documentElement mouseleave, which
19
+ // fixes the window-blur-closing-popover bug from @floating-ui/react.
20
+ export function useHover(context, props = {}) {
21
+ const { open, onOpenChange, dataRef, events, elements } = context;
22
+ const { enabled = true, delay = 0, handleClose = null, mouseOnly = false, restMs = 0, move = true, } = props;
23
+ // latest-value refs to avoid stale closures in raw DOM handlers
24
+ const handleCloseRef = React.useRef(handleClose);
25
+ handleCloseRef.current = handleClose;
26
+ const delayRef = React.useRef(delay);
27
+ delayRef.current = delay;
28
+ const openRef = React.useRef(open);
29
+ openRef.current = open;
30
+ const restMsRef = React.useRef(restMs);
31
+ restMsRef.current = restMs;
32
+ // stable callback that always calls the latest onOpenChange
33
+ const stableOnOpenChange = useEvent(onOpenChange);
34
+ const pointerTypeRef = React.useRef(undefined);
35
+ const timeoutRef = React.useRef(-1);
36
+ const handlerRef = React.useRef(undefined);
37
+ const restTimeoutRef = React.useRef(-1);
38
+ const blockMouseMoveRef = React.useRef(true);
39
+ const performedPointerEventsMutationRef = React.useRef(false);
40
+ const unbindMouseMoveRef = React.useRef(() => { });
41
+ const restTimeoutPendingRef = React.useRef(false);
42
+ const isHoverOpen = useEvent(() => {
43
+ const type = dataRef.current.openEvent?.type;
44
+ return type?.includes('mouse') && type !== 'mousedown';
45
+ });
46
+ // when closing before opening, clear the delay timeouts to cancel it
47
+ // from showing.
48
+ React.useEffect(() => {
49
+ if (!enabled)
50
+ return;
51
+ if (!events)
52
+ return;
53
+ function onOpenChange({ open }) {
54
+ if (!open) {
55
+ clearTimeoutIfSet(timeoutRef);
56
+ clearTimeoutIfSet(restTimeoutRef);
57
+ blockMouseMoveRef.current = true;
58
+ restTimeoutPendingRef.current = false;
59
+ }
60
+ }
61
+ events.on('openchange', onOpenChange);
62
+ return () => {
63
+ events.off('openchange', onOpenChange);
64
+ };
65
+ }, [enabled, events]);
66
+ // NOTE: intentionally skipping the documentElement mouseleave handler
67
+ // from upstream. this is our fix for the window-blur-closing-popover bug.
68
+ const closeWithDelay = useEvent((event, runElseBranch = true, reason = 'hover') => {
69
+ const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);
70
+ if (closeDelay && !handlerRef.current) {
71
+ clearTimeoutIfSet(timeoutRef);
72
+ timeoutRef.current = window.setTimeout(() => stableOnOpenChange(false, event, reason), closeDelay);
73
+ }
74
+ else if (runElseBranch) {
75
+ clearTimeoutIfSet(timeoutRef);
76
+ stableOnOpenChange(false, event, reason);
77
+ }
78
+ });
79
+ const cleanupMouseMoveHandler = useEvent(() => {
80
+ unbindMouseMoveRef.current();
81
+ handlerRef.current = undefined;
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
96
+ ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type)
97
+ : false;
98
+ });
99
+ // registering the mouse events on the reference directly to bypass React's
100
+ // delegation system. if the cursor was on a disabled element and then entered
101
+ // the reference (no gap), mouseenter doesn't fire in the delegation system.
102
+ React.useEffect(() => {
103
+ if (!enabled)
104
+ return;
105
+ function onReferenceMouseEnter(event) {
106
+ clearTimeoutIfSet(timeoutRef);
107
+ blockMouseMoveRef.current = false;
108
+ if ((mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) ||
109
+ (restMsRef.current > 0 && !getDelay(delayRef.current, 'open'))) {
110
+ return;
111
+ }
112
+ const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);
113
+ if (openDelay) {
114
+ timeoutRef.current = window.setTimeout(() => {
115
+ if (!openRef.current) {
116
+ stableOnOpenChange(true, event, 'hover');
117
+ }
118
+ }, openDelay);
119
+ }
120
+ else if (!open) {
121
+ stableOnOpenChange(true, event, 'hover');
122
+ }
123
+ }
124
+ function onReferenceMouseLeave(event) {
125
+ if (isClickLikeOpenEvent()) {
126
+ clearPointerEvents();
127
+ return;
128
+ }
129
+ // moving to a sibling trigger in a multi-trigger pattern — suppress close
130
+ if (context.triggerElements?.hasElement(event.relatedTarget)) {
131
+ return;
132
+ }
133
+ unbindMouseMoveRef.current();
134
+ const doc = getDocument(elements.floating);
135
+ clearTimeoutIfSet(restTimeoutRef);
136
+ restTimeoutPendingRef.current = false;
137
+ if (handleCloseRef.current) {
138
+ // prevent clearing onScrollMouseLeave timeout
139
+ if (!open) {
140
+ clearTimeoutIfSet(timeoutRef);
141
+ }
142
+ const placement = dataRef.current.placement || 'bottom';
143
+ const reference = elements.domReference;
144
+ const floating = elements.floating;
145
+ if (!reference || !floating)
146
+ return;
147
+ // call handleClose once with the leave position — it returns a
148
+ // mousemove handler with the leave (x, y) baked into its closure
149
+ // so the polygon anchor stays fixed at the leave point.
150
+ handlerRef.current = handleCloseRef.current({
151
+ x: event.clientX,
152
+ y: event.clientY,
153
+ placement,
154
+ elements: {
155
+ reference: reference,
156
+ floating: floating,
157
+ domReference: reference,
158
+ },
159
+ onClose() {
160
+ if (context.handleCloseActiveRef) {
161
+ context.handleCloseActiveRef.current = false;
162
+ }
163
+ clearPointerEvents();
164
+ cleanupMouseMoveHandler();
165
+ if (!isClickLikeOpenEvent()) {
166
+ closeWithDelay(event, true, 'safe-polygon');
167
+ }
168
+ },
169
+ });
170
+ if (context.handleCloseActiveRef) {
171
+ context.handleCloseActiveRef.current = true;
172
+ }
173
+ const handler = handlerRef.current;
174
+ doc.addEventListener('mousemove', handler);
175
+ unbindMouseMoveRef.current = () => {
176
+ doc.removeEventListener('mousemove', handler);
177
+ };
178
+ return;
179
+ }
180
+ // allow interactivity without safePolygon on touch devices. with a
181
+ // pointer, a short close delay is an alternative.
182
+ const shouldClose = pointerTypeRef.current === 'touch'
183
+ ? !contains(elements.floating, event.relatedTarget)
184
+ : true;
185
+ if (shouldClose) {
186
+ closeWithDelay(event);
187
+ }
188
+ }
189
+ // ensure the floating element closes after scrolling even if the pointer
190
+ // did not move.
191
+ function onScrollMouseLeave(event) {
192
+ if (isClickLikeOpenEvent())
193
+ return;
194
+ // moving to a sibling trigger in a multi-trigger pattern — suppress close
195
+ if (context.triggerElements?.hasElement(event.relatedTarget)) {
196
+ return;
197
+ }
198
+ const placement = dataRef.current.placement || 'bottom';
199
+ const reference = elements.domReference;
200
+ const floating = elements.floating;
201
+ if (!reference || !floating)
202
+ return;
203
+ // call handleClose to get a handler, then immediately invoke it
204
+ // with this scroll-leave event
205
+ handleCloseRef.current?.({
206
+ x: event.clientX,
207
+ y: event.clientY,
208
+ placement,
209
+ elements: {
210
+ reference: reference,
211
+ floating: floating,
212
+ domReference: reference,
213
+ },
214
+ onClose() {
215
+ clearPointerEvents();
216
+ cleanupMouseMoveHandler();
217
+ if (!isClickLikeOpenEvent()) {
218
+ closeWithDelay(event);
219
+ }
220
+ },
221
+ })(event);
222
+ }
223
+ function onFloatingMouseEnter() {
224
+ clearTimeoutIfSet(timeoutRef);
225
+ }
226
+ function onFloatingMouseLeave(event) {
227
+ if (isClickLikeOpenEvent())
228
+ return;
229
+ // moving to a sibling trigger in a multi-trigger pattern — suppress close
230
+ if (context.triggerElements?.hasElement(event.relatedTarget)) {
231
+ return;
232
+ }
233
+ closeWithDelay(event, false);
234
+ }
235
+ if (isElement(elements.domReference)) {
236
+ const reference = elements.domReference;
237
+ const floating = elements.floating;
238
+ if (open) {
239
+ reference.addEventListener('mouseleave', onScrollMouseLeave);
240
+ }
241
+ if (move) {
242
+ reference.addEventListener('mousemove', onReferenceMouseEnter, {
243
+ once: true,
244
+ });
245
+ }
246
+ reference.addEventListener('mouseenter', onReferenceMouseEnter);
247
+ reference.addEventListener('mouseleave', onReferenceMouseLeave);
248
+ if (floating) {
249
+ floating.addEventListener('mouseleave', onScrollMouseLeave);
250
+ floating.addEventListener('mouseenter', onFloatingMouseEnter);
251
+ floating.addEventListener('mouseleave', onFloatingMouseLeave);
252
+ }
253
+ return () => {
254
+ if (open) {
255
+ reference.removeEventListener('mouseleave', onScrollMouseLeave);
256
+ }
257
+ if (move) {
258
+ reference.removeEventListener('mousemove', onReferenceMouseEnter);
259
+ }
260
+ reference.removeEventListener('mouseenter', onReferenceMouseEnter);
261
+ reference.removeEventListener('mouseleave', onReferenceMouseLeave);
262
+ if (floating) {
263
+ floating.removeEventListener('mouseleave', onScrollMouseLeave);
264
+ floating.removeEventListener('mouseenter', onFloatingMouseEnter);
265
+ floating.removeEventListener('mouseleave', onFloatingMouseLeave);
266
+ }
267
+ // clean up safePolygon's document mousemove handler when reference
268
+ // changes — without this, handleCloseActiveRef stays true
269
+ // indefinitely after rapid trigger switching
270
+ cleanupMouseMoveHandler();
271
+ };
272
+ }
273
+ }, [elements, enabled, context, mouseOnly, move, open, dataRef]);
274
+ // block pointer-events of every element other than the reference and floating
275
+ // while the floating element is open and has a handleClose handler with
276
+ // blockPointerEvents enabled.
277
+ React.useLayoutEffect(() => {
278
+ if (!enabled)
279
+ return;
280
+ if (open && handleCloseRef.current?.__options?.blockPointerEvents && isHoverOpen()) {
281
+ performedPointerEventsMutationRef.current = true;
282
+ const floatingEl = elements.floating;
283
+ if (isElement(elements.domReference) && floatingEl) {
284
+ const body = getDocument(elements.floating).body;
285
+ body.setAttribute(safePolygonIdentifier, '');
286
+ const ref = elements.domReference;
287
+ body.style.pointerEvents = 'none';
288
+ ref.style.pointerEvents = 'auto';
289
+ floatingEl.style.pointerEvents = 'auto';
290
+ return () => {
291
+ body.style.pointerEvents = '';
292
+ ref.style.pointerEvents = '';
293
+ floatingEl.style.pointerEvents = '';
294
+ };
295
+ }
296
+ }
297
+ }, [enabled, open, elements, isHoverOpen]);
298
+ React.useLayoutEffect(() => {
299
+ if (!open) {
300
+ pointerTypeRef.current = undefined;
301
+ restTimeoutPendingRef.current = false;
302
+ cleanupMouseMoveHandler();
303
+ clearPointerEvents();
304
+ }
305
+ }, [open]);
306
+ React.useEffect(() => {
307
+ return () => {
308
+ cleanupMouseMoveHandler();
309
+ clearTimeoutIfSet(timeoutRef);
310
+ clearTimeoutIfSet(restTimeoutRef);
311
+ clearPointerEvents();
312
+ };
313
+ }, [enabled, elements.domReference]);
314
+ const reference = React.useMemo(() => {
315
+ function setPointerRef(event) {
316
+ pointerTypeRef.current = event.pointerType;
317
+ }
318
+ return {
319
+ onPointerDown: setPointerRef,
320
+ onPointerEnter: setPointerRef,
321
+ onMouseMove(event) {
322
+ const { nativeEvent } = event;
323
+ function handleMouseMove() {
324
+ if (!blockMouseMoveRef.current && !openRef.current) {
325
+ stableOnOpenChange(true, nativeEvent, 'hover');
326
+ }
327
+ }
328
+ if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {
329
+ return;
330
+ }
331
+ if (open || restMsRef.current === 0) {
332
+ return;
333
+ }
334
+ // ignore insignificant movements to account for tremors
335
+ if (restTimeoutPendingRef.current &&
336
+ event.movementX ** 2 + event.movementY ** 2 < 2) {
337
+ return;
338
+ }
339
+ clearTimeoutIfSet(restTimeoutRef);
340
+ if (pointerTypeRef.current === 'touch') {
341
+ handleMouseMove();
342
+ }
343
+ else {
344
+ restTimeoutPendingRef.current = true;
345
+ restTimeoutRef.current = window.setTimeout(handleMouseMove, restMsRef.current);
346
+ }
347
+ },
348
+ };
349
+ }, [mouseOnly, open]);
350
+ return React.useMemo(() => (enabled ? { reference } : {}), [enabled, reference]);
351
+ }
352
+ //# sourceMappingURL=useHover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHover.js","sourceRoot":"","sources":["../../../src/interactions/useHover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import * as React from 'react';
2
+ import * as ReactDOM from 'react-dom';
3
+ import { useEvent } from '@hanzogui/use-event';
4
+ // ported from floating-ui/react/_deprecated-inner.ts useInnerOffset
5
+ // changes the inner middleware's offset upon wheel events to expand the
6
+ // floating element's height, revealing more list items.
7
+ export function useInnerOffset(context, props) {
8
+ const { open, elements } = context;
9
+ const { enabled = true, overflowRef, scrollRef, onChange: unstable_onChange } = props;
10
+ const onChange = useEvent(unstable_onChange);
11
+ const controlledScrollingRef = React.useRef(false);
12
+ const prevScrollTopRef = React.useRef(null);
13
+ const initialOverflowRef = React.useRef(null);
14
+ React.useEffect(() => {
15
+ if (!enabled)
16
+ return;
17
+ function onWheel(e) {
18
+ if (e.ctrlKey || !el || overflowRef.current == null) {
19
+ return;
20
+ }
21
+ const dY = e.deltaY;
22
+ const isAtTop = overflowRef.current.top >= -0.5;
23
+ const isAtBottom = overflowRef.current.bottom >= -0.5;
24
+ const remainingScroll = el.scrollHeight - el.clientHeight;
25
+ const sign = dY < 0 ? -1 : 1;
26
+ const method = dY < 0 ? 'max' : 'min';
27
+ if (el.scrollHeight <= el.clientHeight) {
28
+ return;
29
+ }
30
+ if ((!isAtTop && dY > 0) || (!isAtBottom && dY < 0)) {
31
+ e.preventDefault();
32
+ ReactDOM.flushSync(() => {
33
+ onChange((d) => d + Math[method](dY, remainingScroll * sign));
34
+ });
35
+ }
36
+ else if (/firefox/i.test(navigator.userAgent)) {
37
+ // propagate scrolling during momentum phase once limited by boundary
38
+ el.scrollTop += dY;
39
+ }
40
+ }
41
+ const el = scrollRef?.current || elements.floating;
42
+ if (open && el) {
43
+ el.addEventListener('wheel', onWheel);
44
+ // wait for the position to be ready
45
+ requestAnimationFrame(() => {
46
+ prevScrollTopRef.current = el.scrollTop;
47
+ if (overflowRef.current != null) {
48
+ initialOverflowRef.current = { ...overflowRef.current };
49
+ }
50
+ });
51
+ return () => {
52
+ prevScrollTopRef.current = null;
53
+ initialOverflowRef.current = null;
54
+ el.removeEventListener('wheel', onWheel);
55
+ };
56
+ }
57
+ }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);
58
+ const floating = React.useMemo(() => ({
59
+ onKeyDown() {
60
+ controlledScrollingRef.current = true;
61
+ },
62
+ onWheel() {
63
+ controlledScrollingRef.current = false;
64
+ },
65
+ onPointerMove() {
66
+ controlledScrollingRef.current = false;
67
+ },
68
+ onScroll() {
69
+ const el = scrollRef?.current || elements.floating;
70
+ if (!overflowRef.current || !el || !controlledScrollingRef.current) {
71
+ return;
72
+ }
73
+ if (prevScrollTopRef.current !== null) {
74
+ const scrollDiff = el.scrollTop - prevScrollTopRef.current;
75
+ if ((overflowRef.current.bottom < -0.5 && scrollDiff < -1) ||
76
+ (overflowRef.current.top < -0.5 && scrollDiff > 1)) {
77
+ ReactDOM.flushSync(() => onChange((d) => d + scrollDiff));
78
+ }
79
+ }
80
+ // [firefox] wait for the height change to have been applied
81
+ requestAnimationFrame(() => {
82
+ prevScrollTopRef.current = el.scrollTop;
83
+ });
84
+ },
85
+ }), [elements.floating, onChange, overflowRef, scrollRef]);
86
+ return React.useMemo(() => (enabled ? { floating } : {}), [enabled, floating]);
87
+ }
88
+ //# sourceMappingURL=useInnerOffset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInnerOffset.js","sourceRoot":"","sources":["../../../src/interactions/useInnerOffset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAO9C,oEAAoE;AACpE,wEAAwE;AACxE,wDAAwD;AACxD,MAAM,UAAU,cAAc,CAC5B,OAAmC,EACnC,KAA0B;IAE1B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAClC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAA;IAErF,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAC5C,MAAM,sBAAsB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAgB,IAAI,CAAC,CAAA;IAC1D,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAM,IAAI,CAAC,CAAA;IAElD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,SAAS,OAAO,CAAC,CAAa;YAC5B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,WAAW,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpD,OAAM;YACR,CAAC;YAED,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAA;YACnB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAA;YAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAA;YACrD,MAAM,eAAe,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAA;YACzD,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5B,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;YAErC,IAAI,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;gBACvC,OAAM;YACR,CAAC;YAED,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBACpD,CAAC,CAAC,cAAc,EAAE,CAAA;gBAClB,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;oBACtB,QAAQ,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC,CAAA;gBACvE,CAAC,CAAC,CAAA;YACJ,CAAC;iBAAM,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChD,qEAAqE;gBACrE,EAAE,CAAC,SAAS,IAAI,EAAE,CAAA;YACpB,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAA;QAElD,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACf,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAErC,oCAAoC;YACpC,qBAAqB,CAAC,GAAG,EAAE;gBACzB,gBAAgB,CAAC,OAAO,GAAG,EAAE,CAAC,SAAS,CAAA;gBAEvC,IAAI,WAAW,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;oBAChC,kBAAkB,CAAC,OAAO,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAA;gBACzD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,GAAG,EAAE;gBACV,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAA;gBAC/B,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAA;gBACjC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC1C,CAAC,CAAA;QACH,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IAExE,MAAM,QAAQ,GAA6B,KAAK,CAAC,OAAO,CACtD,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;YACP,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAA;QACvC,CAAC;QACD,OAAO;YACL,sBAAsB,CAAC,OAAO,GAAG,KAAK,CAAA;QACxC,CAAC;QACD,aAAa;YACX,sBAAsB,CAAC,OAAO,GAAG,KAAK,CAAA;QACxC,CAAC;QACD,QAAQ;YACN,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAA;YAElD,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC;gBACnE,OAAM;YACR,CAAC;YAED,IAAI,gBAAgB,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAA;gBAE1D,IACE,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;oBACtD,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,UAAU,GAAG,CAAC,CAAC,EAClD,CAAC;oBACD,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAA;gBACnE,CAAC;YACH,CAAC;YAED,4DAA4D;YAC5D,qBAAqB,CAAC,GAAG,EAAE;gBACzB,gBAAgB,CAAC,OAAO,GAAG,EAAG,CAAC,SAAS,CAAA;YAC1C,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,EACF,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CACtD,CAAA;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;AAChF,CAAC"}