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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/cjs/Floating.cjs +7 -5
  2. package/dist/cjs/Floating.native.js +19 -13
  3. package/dist/cjs/Floating.native.js.map +1 -1
  4. package/dist/cjs/index.cjs +46 -13
  5. package/dist/cjs/index.native.js +46 -13
  6. package/dist/cjs/index.native.js.map +1 -1
  7. package/dist/cjs/interactions/PopupTriggerMap.cjs +49 -0
  8. package/dist/cjs/interactions/PopupTriggerMap.native.js +97 -0
  9. package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -0
  10. package/dist/cjs/interactions/createFloatingEvents.cjs +50 -0
  11. package/dist/cjs/interactions/createFloatingEvents.native.js +56 -0
  12. package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -0
  13. package/dist/cjs/interactions/safePolygon.cjs +273 -0
  14. package/dist/cjs/interactions/safePolygon.native.js +284 -0
  15. package/dist/cjs/interactions/safePolygon.native.js.map +1 -0
  16. package/dist/cjs/interactions/types.cjs +18 -0
  17. package/dist/cjs/interactions/types.native.js +21 -0
  18. package/dist/cjs/interactions/types.native.js.map +1 -0
  19. package/dist/cjs/interactions/useClick.cjs +124 -0
  20. package/dist/cjs/interactions/useClick.native.js +132 -0
  21. package/dist/cjs/interactions/useClick.native.js.map +1 -0
  22. package/dist/cjs/interactions/useDelayGroup.cjs +115 -0
  23. package/dist/cjs/interactions/useDelayGroup.native.js +125 -0
  24. package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -0
  25. package/dist/cjs/interactions/useFocus.cjs +130 -0
  26. package/dist/cjs/interactions/useFocus.native.js +139 -0
  27. package/dist/cjs/interactions/useFocus.native.js.map +1 -0
  28. package/dist/cjs/interactions/useHover.cjs +357 -0
  29. package/dist/cjs/interactions/useHover.native.js +373 -0
  30. package/dist/cjs/interactions/useHover.native.js.map +1 -0
  31. package/dist/cjs/interactions/useInnerOffset.cjs +128 -0
  32. package/dist/cjs/interactions/useInnerOffset.native.js +141 -0
  33. package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -0
  34. package/dist/cjs/interactions/useInteractions.cjs +105 -0
  35. package/dist/cjs/interactions/useInteractions.native.js +216 -0
  36. package/dist/cjs/interactions/useInteractions.native.js.map +1 -0
  37. package/dist/cjs/interactions/useListNavigation.cjs +418 -0
  38. package/dist/cjs/interactions/useListNavigation.native.js +433 -0
  39. package/dist/cjs/interactions/useListNavigation.native.js.map +1 -0
  40. package/dist/cjs/interactions/useRole.cjs +122 -0
  41. package/dist/cjs/interactions/useRole.native.js +136 -0
  42. package/dist/cjs/interactions/useRole.native.js.map +1 -0
  43. package/dist/cjs/interactions/useTypeahead.cjs +143 -0
  44. package/dist/cjs/interactions/useTypeahead.native.js +159 -0
  45. package/dist/cjs/interactions/useTypeahead.native.js.map +1 -0
  46. package/dist/cjs/interactions/utils.cjs +208 -0
  47. package/dist/cjs/interactions/utils.native.js +227 -0
  48. package/dist/cjs/interactions/utils.native.js.map +1 -0
  49. package/dist/cjs/middleware/inner.cjs +118 -0
  50. package/dist/cjs/middleware/inner.native.js +130 -0
  51. package/dist/cjs/middleware/inner.native.js.map +1 -0
  52. package/dist/cjs/useFloating.cjs +35 -28
  53. package/dist/cjs/useFloating.native.js +51 -47
  54. package/dist/cjs/useFloating.native.js.map +1 -1
  55. package/dist/esm/Floating.native.js +6 -3
  56. package/dist/esm/Floating.native.js.map +1 -1
  57. package/dist/esm/index.js +17 -34
  58. package/dist/esm/index.js.map +1 -6
  59. package/dist/esm/index.mjs +16 -2
  60. package/dist/esm/index.mjs.map +1 -1
  61. package/dist/esm/index.native.js +16 -2
  62. package/dist/esm/index.native.js.map +1 -1
  63. package/dist/esm/interactions/PopupTriggerMap.mjs +24 -0
  64. package/dist/esm/interactions/PopupTriggerMap.mjs.map +1 -0
  65. package/dist/esm/interactions/PopupTriggerMap.native.js +69 -0
  66. package/dist/esm/interactions/PopupTriggerMap.native.js.map +1 -0
  67. package/dist/esm/interactions/createFloatingEvents.mjs +25 -0
  68. package/dist/esm/interactions/createFloatingEvents.mjs.map +1 -0
  69. package/dist/esm/interactions/createFloatingEvents.native.js +28 -0
  70. package/dist/esm/interactions/createFloatingEvents.native.js.map +1 -0
  71. package/dist/esm/interactions/safePolygon.mjs +248 -0
  72. package/dist/esm/interactions/safePolygon.mjs.map +1 -0
  73. package/dist/esm/interactions/safePolygon.native.js +256 -0
  74. package/dist/esm/interactions/safePolygon.native.js.map +1 -0
  75. package/dist/esm/interactions/types.mjs +2 -0
  76. package/dist/esm/interactions/types.mjs.map +1 -0
  77. package/dist/esm/interactions/types.native.js +2 -0
  78. package/dist/esm/interactions/types.native.js.map +1 -0
  79. package/dist/esm/interactions/useClick.mjs +99 -0
  80. package/dist/esm/interactions/useClick.mjs.map +1 -0
  81. package/dist/esm/interactions/useClick.native.js +104 -0
  82. package/dist/esm/interactions/useClick.native.js.map +1 -0
  83. package/dist/esm/interactions/useDelayGroup.mjs +77 -0
  84. package/dist/esm/interactions/useDelayGroup.mjs.map +1 -0
  85. package/dist/esm/interactions/useDelayGroup.native.js +84 -0
  86. package/dist/esm/interactions/useDelayGroup.native.js.map +1 -0
  87. package/dist/esm/interactions/useFocus.mjs +105 -0
  88. package/dist/esm/interactions/useFocus.mjs.map +1 -0
  89. package/dist/esm/interactions/useFocus.native.js +111 -0
  90. package/dist/esm/interactions/useFocus.native.js.map +1 -0
  91. package/dist/esm/interactions/useHover.mjs +320 -0
  92. package/dist/esm/interactions/useHover.mjs.map +1 -0
  93. package/dist/esm/interactions/useHover.native.js +333 -0
  94. package/dist/esm/interactions/useHover.native.js.map +1 -0
  95. package/dist/esm/interactions/useInnerOffset.mjs +92 -0
  96. package/dist/esm/interactions/useInnerOffset.mjs.map +1 -0
  97. package/dist/esm/interactions/useInnerOffset.native.js +102 -0
  98. package/dist/esm/interactions/useInnerOffset.native.js.map +1 -0
  99. package/dist/esm/interactions/useInteractions.mjs +80 -0
  100. package/dist/esm/interactions/useInteractions.mjs.map +1 -0
  101. package/dist/esm/interactions/useInteractions.native.js +188 -0
  102. package/dist/esm/interactions/useInteractions.native.js.map +1 -0
  103. package/dist/esm/interactions/useListNavigation.mjs +393 -0
  104. package/dist/esm/interactions/useListNavigation.mjs.map +1 -0
  105. package/dist/esm/interactions/useListNavigation.native.js +405 -0
  106. package/dist/esm/interactions/useListNavigation.native.js.map +1 -0
  107. package/dist/esm/interactions/useRole.mjs +86 -0
  108. package/dist/esm/interactions/useRole.mjs.map +1 -0
  109. package/dist/esm/interactions/useRole.native.js +97 -0
  110. package/dist/esm/interactions/useRole.native.js.map +1 -0
  111. package/dist/esm/interactions/useTypeahead.mjs +118 -0
  112. package/dist/esm/interactions/useTypeahead.mjs.map +1 -0
  113. package/dist/esm/interactions/useTypeahead.native.js +131 -0
  114. package/dist/esm/interactions/useTypeahead.native.js.map +1 -0
  115. package/dist/esm/interactions/utils.mjs +162 -0
  116. package/dist/esm/interactions/utils.mjs.map +1 -0
  117. package/dist/esm/interactions/utils.native.js +178 -0
  118. package/dist/esm/interactions/utils.native.js.map +1 -0
  119. package/dist/esm/middleware/inner.mjs +82 -0
  120. package/dist/esm/middleware/inner.mjs.map +1 -0
  121. package/dist/esm/middleware/inner.native.js +91 -0
  122. package/dist/esm/middleware/inner.native.js.map +1 -0
  123. package/dist/esm/useFloating.mjs +8 -3
  124. package/dist/esm/useFloating.mjs.map +1 -1
  125. package/dist/esm/useFloating.native.js +25 -23
  126. package/dist/esm/useFloating.native.js.map +1 -1
  127. package/package.json +8 -10
  128. package/src/Floating.native.tsx +1 -0
  129. package/src/index.ts +49 -0
  130. package/src/interactions/PopupTriggerMap.ts +30 -0
  131. package/src/interactions/createFloatingEvents.ts +34 -0
  132. package/src/interactions/safePolygon.ts +500 -0
  133. package/src/interactions/types.ts +165 -0
  134. package/src/interactions/useClick.ts +148 -0
  135. package/src/interactions/useDelayGroup.ts +114 -0
  136. package/src/interactions/useFocus.ts +164 -0
  137. package/src/interactions/useHover.ts +453 -0
  138. package/src/interactions/useInnerOffset.ts +116 -0
  139. package/src/interactions/useInteractions.ts +101 -0
  140. package/src/interactions/useListNavigation.ts +578 -0
  141. package/src/interactions/useRole.ts +103 -0
  142. package/src/interactions/useTypeahead.ts +173 -0
  143. package/src/interactions/utils.ts +234 -0
  144. package/src/middleware/inner.ts +141 -0
  145. package/src/useFloating.tsx +13 -1
  146. package/types/Floating.native.d.ts +1 -0
  147. package/types/Floating.native.d.ts.map +1 -1
  148. package/types/index.d.ts +17 -2
  149. package/types/index.d.ts.map +1 -1
  150. package/types/interactions/PopupTriggerMap.d.ts +8 -0
  151. package/types/interactions/PopupTriggerMap.d.ts.map +1 -0
  152. package/types/interactions/createFloatingEvents.d.ts +7 -0
  153. package/types/interactions/createFloatingEvents.d.ts.map +1 -0
  154. package/types/interactions/safePolygon.d.ts +4 -0
  155. package/types/interactions/safePolygon.d.ts.map +1 -0
  156. package/types/interactions/types.d.ts +123 -0
  157. package/types/interactions/types.d.ts.map +1 -0
  158. package/types/interactions/useClick.d.ts +3 -0
  159. package/types/interactions/useClick.d.ts.map +1 -0
  160. package/types/interactions/useDelayGroup.d.ts +23 -0
  161. package/types/interactions/useDelayGroup.d.ts.map +1 -0
  162. package/types/interactions/useFocus.d.ts +3 -0
  163. package/types/interactions/useFocus.d.ts.map +1 -0
  164. package/types/interactions/useHover.d.ts +6 -0
  165. package/types/interactions/useHover.d.ts.map +1 -0
  166. package/types/interactions/useInnerOffset.d.ts +3 -0
  167. package/types/interactions/useInnerOffset.d.ts.map +1 -0
  168. package/types/interactions/useInteractions.d.ts +8 -0
  169. package/types/interactions/useInteractions.d.ts.map +1 -0
  170. package/types/interactions/useListNavigation.d.ts +3 -0
  171. package/types/interactions/useListNavigation.d.ts.map +1 -0
  172. package/types/interactions/useRole.d.ts +3 -0
  173. package/types/interactions/useRole.d.ts.map +1 -0
  174. package/types/interactions/useTypeahead.d.ts +3 -0
  175. package/types/interactions/useTypeahead.d.ts.map +1 -0
  176. package/types/interactions/utils.d.ts +46 -0
  177. package/types/interactions/utils.d.ts.map +1 -0
  178. package/types/middleware/inner.d.ts +14 -0
  179. package/types/middleware/inner.d.ts.map +1 -0
  180. package/types/useFloating.d.ts +7 -1
  181. package/types/useFloating.d.ts.map +1 -1
  182. package/dist/cjs/Floating.js +0 -15
  183. package/dist/cjs/Floating.js.map +0 -6
  184. package/dist/cjs/index.js +0 -34
  185. package/dist/cjs/index.js.map +0 -6
  186. package/dist/cjs/useFloating.js +0 -46
  187. package/dist/cjs/useFloating.js.map +0 -6
  188. package/dist/esm/Floating.js +0 -2
  189. package/dist/esm/Floating.js.map +0 -6
  190. package/dist/esm/useFloating.js +0 -23
  191. package/dist/esm/useFloating.js.map +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useRef","isHTMLElement","isMouseLikePointerType","isTypeableElement","isButtonTarget","event","target","tagName","isAnchorTarget","isSpaceIgnored","element","useClick","context","props","open","onOpenChange","dataRef","elements","domReference","enabled","eventOption","toggle","ignoreMouse","keyboardHandlers","stickIfOpen","pointerTypeRef","didKeyDownRef","reference","onPointerDown","current","pointerType","onMouseDown","button","openEvent","type","nativeEvent","preventDefault","onClick","onKeyDown","defaultPrevented","key","onKeyUp"],"sources":["../../../src/interactions/useClick.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ import { useMemo, useRef } from "react";
2
+ import { isHTMLElement, isMouseLikePointerType, isTypeableElement } from "./utils.native.js";
3
+ function isButtonTarget(event) {
4
+ return isHTMLElement(event.target) && event.target.tagName === "BUTTON";
5
+ }
6
+ function isAnchorTarget(event) {
7
+ return isHTMLElement(event.target) && event.target.tagName === "A";
8
+ }
9
+ function isSpaceIgnored(element) {
10
+ return isTypeableElement(element);
11
+ }
12
+ function useClick(context) {
13
+ var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
14
+ var {
15
+ open,
16
+ onOpenChange,
17
+ dataRef,
18
+ elements: {
19
+ domReference
20
+ }
21
+ } = context;
22
+ var {
23
+ enabled = true,
24
+ event: eventOption = "click",
25
+ toggle = true,
26
+ ignoreMouse = false,
27
+ keyboardHandlers = true,
28
+ stickIfOpen = true
29
+ } = props;
30
+ var pointerTypeRef = useRef(void 0);
31
+ var didKeyDownRef = useRef(false);
32
+ var reference = useMemo(function () {
33
+ return {
34
+ onPointerDown(event) {
35
+ pointerTypeRef.current = event.pointerType;
36
+ },
37
+ onMouseDown(event) {
38
+ var pointerType = pointerTypeRef.current;
39
+ if (event.button !== 0) return;
40
+ if (eventOption === "click") return;
41
+ if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;
42
+ if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === "mousedown" : true)) {
43
+ onOpenChange(false, event.nativeEvent || event, "click");
44
+ } else {
45
+ event.preventDefault();
46
+ onOpenChange(true, event.nativeEvent || event, "click");
47
+ }
48
+ },
49
+ onClick(event) {
50
+ var pointerType = pointerTypeRef.current;
51
+ if (eventOption === "mousedown" && pointerTypeRef.current) {
52
+ pointerTypeRef.current = void 0;
53
+ return;
54
+ }
55
+ if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;
56
+ if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === "click" : true)) {
57
+ onOpenChange(false, event.nativeEvent || event, "click");
58
+ } else {
59
+ onOpenChange(true, event.nativeEvent || event, "click");
60
+ }
61
+ },
62
+ onKeyDown(event) {
63
+ pointerTypeRef.current = void 0;
64
+ if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {
65
+ return;
66
+ }
67
+ if (event.key === " " && !isSpaceIgnored(domReference)) {
68
+ event.preventDefault();
69
+ didKeyDownRef.current = true;
70
+ }
71
+ if (isAnchorTarget(event)) {
72
+ return;
73
+ }
74
+ if (event.key === "Enter") {
75
+ if (open && toggle) {
76
+ onOpenChange(false, event.nativeEvent || event, "click");
77
+ } else {
78
+ onOpenChange(true, event.nativeEvent || event, "click");
79
+ }
80
+ }
81
+ },
82
+ onKeyUp(event) {
83
+ if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {
84
+ return;
85
+ }
86
+ if (event.key === " " && didKeyDownRef.current) {
87
+ didKeyDownRef.current = false;
88
+ if (open && toggle) {
89
+ onOpenChange(false, event.nativeEvent || event, "click");
90
+ } else {
91
+ onOpenChange(true, event.nativeEvent || event, "click");
92
+ }
93
+ }
94
+ }
95
+ };
96
+ }, [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);
97
+ return useMemo(function () {
98
+ return enabled ? {
99
+ reference
100
+ } : {};
101
+ }, [enabled, reference]);
102
+ }
103
+ export { useClick };
104
+ //# sourceMappingURL=useClick.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useRef","isHTMLElement","isMouseLikePointerType","isTypeableElement","isButtonTarget","event","target","tagName","isAnchorTarget","isSpaceIgnored","element","useClick","context","props","arguments","length","open","onOpenChange","dataRef","elements","domReference","enabled","eventOption","toggle","ignoreMouse","keyboardHandlers","stickIfOpen","pointerTypeRef","didKeyDownRef","reference","onPointerDown","current","pointerType","onMouseDown","button","openEvent","type","nativeEvent","preventDefault","onClick","onKeyDown","defaultPrevented","key","onKeyUp"],"sources":["../../../src/interactions/useClick.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ import * as React from "react";
2
+ const DelayGroupContext = React.createContext({
3
+ currentId: null,
4
+ setCurrentId: () => {},
5
+ delay: 0,
6
+ timeoutMs: 0,
7
+ initialDelay: 0
8
+ });
9
+ function useDelayGroupContext() {
10
+ return React.useContext(DelayGroupContext);
11
+ }
12
+ function FloatingDelayGroup({
13
+ children,
14
+ delay,
15
+ timeoutMs = 0
16
+ }) {
17
+ const [currentId, setCurrentIdRaw] = React.useState(null);
18
+ const timeoutRef = React.useRef(void 0);
19
+ const setCurrentId = React.useCallback(id => {
20
+ clearTimeout(timeoutRef.current);
21
+ if (id == null && timeoutMs > 0) {
22
+ timeoutRef.current = setTimeout(() => {
23
+ setCurrentIdRaw(null);
24
+ }, timeoutMs);
25
+ } else {
26
+ setCurrentIdRaw(id);
27
+ }
28
+ }, [timeoutMs]);
29
+ React.useEffect(() => {
30
+ return () => clearTimeout(timeoutRef.current);
31
+ }, []);
32
+ const value = React.useMemo(() => ({
33
+ currentId,
34
+ setCurrentId,
35
+ delay,
36
+ timeoutMs,
37
+ initialDelay: delay
38
+ }), [currentId, setCurrentId, delay, timeoutMs]);
39
+ return React.createElement(DelayGroupContext.Provider, {
40
+ value
41
+ }, children);
42
+ }
43
+ function useDelayGroup(context, options = {}) {
44
+ const {
45
+ id
46
+ } = options;
47
+ const groupContext = React.useContext(DelayGroupContext);
48
+ React.useEffect(() => {
49
+ if (!context.open && groupContext.currentId === id) {
50
+ groupContext.setCurrentId(null);
51
+ }
52
+ }, [context.open, id]);
53
+ React.useEffect(() => {
54
+ if (groupContext.currentId != null && groupContext.currentId !== id && context.open) {
55
+ context.onOpenChange(false);
56
+ }
57
+ }, [groupContext.currentId, id, context.open]);
58
+ if (groupContext.currentId != null) {
59
+ return {
60
+ delay: {
61
+ open: 1,
62
+ close: getClose(groupContext.initialDelay)
63
+ },
64
+ currentId: groupContext.currentId
65
+ };
66
+ }
67
+ return {
68
+ delay: groupContext.initialDelay,
69
+ currentId: groupContext.currentId
70
+ };
71
+ }
72
+ function getClose(delay) {
73
+ if (typeof delay === "number") return delay;
74
+ return delay?.close ?? 0;
75
+ }
76
+ export { FloatingDelayGroup, useDelayGroup, useDelayGroupContext };
77
+ //# sourceMappingURL=useDelayGroup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","DelayGroupContext","createContext","currentId","setCurrentId","delay","timeoutMs","initialDelay","useDelayGroupContext","useContext","FloatingDelayGroup","children","setCurrentIdRaw","useState","timeoutRef","useRef","useCallback","id","clearTimeout","current","setTimeout","useEffect","value","useMemo","createElement","Provider","useDelayGroup","context","options","groupContext","open","onOpenChange","close","getClose"],"sources":["../../../src/interactions/useDelayGroup.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,84 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,105 @@
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
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,111 @@
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
@@ -0,0 +1 @@
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":[]}