@tamagui/floating 2.7.7 → 3.0.0-beta.637.1

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 (151) hide show
  1. package/dist/cjs/Floating.cjs +10 -11
  2. package/dist/cjs/Floating.native.cjs +37 -0
  3. package/dist/cjs/Floating.native.js +20 -20
  4. package/dist/cjs/Floating.native.js.map +1 -1
  5. package/dist/cjs/index.cjs +45 -46
  6. package/dist/cjs/index.native.cjs +74 -0
  7. package/dist/cjs/index.native.js +45 -45
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/interactions/PopupTriggerMap.cjs +36 -39
  10. package/dist/cjs/interactions/PopupTriggerMap.native.cjs +96 -0
  11. package/dist/cjs/interactions/PopupTriggerMap.native.js +76 -75
  12. package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -1
  13. package/dist/cjs/interactions/createFloatingEvents.cjs +36 -39
  14. package/dist/cjs/interactions/createFloatingEvents.native.cjs +52 -0
  15. package/dist/cjs/interactions/createFloatingEvents.native.js +39 -41
  16. package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -1
  17. package/dist/cjs/interactions/safePolygon.cjs +263 -252
  18. package/dist/cjs/interactions/safePolygon.native.cjs +294 -0
  19. package/dist/cjs/interactions/safePolygon.native.js +271 -259
  20. package/dist/cjs/interactions/safePolygon.native.js.map +1 -1
  21. package/dist/cjs/interactions/types.cjs +10 -11
  22. package/dist/cjs/interactions/types.native.cjs +19 -0
  23. package/dist/cjs/interactions/types.native.js +10 -10
  24. package/dist/cjs/interactions/types.native.js.map +1 -1
  25. package/dist/cjs/interactions/useClick.cjs +96 -105
  26. package/dist/cjs/interactions/useClick.native.cjs +122 -0
  27. package/dist/cjs/interactions/useClick.native.js +101 -109
  28. package/dist/cjs/interactions/useClick.native.js.map +1 -1
  29. package/dist/cjs/interactions/useDelayGroup.cjs +86 -91
  30. package/dist/cjs/interactions/useDelayGroup.native.cjs +119 -0
  31. package/dist/cjs/interactions/useDelayGroup.native.js +92 -96
  32. package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -1
  33. package/dist/cjs/interactions/useFocus.cjs +108 -115
  34. package/dist/cjs/interactions/useFocus.native.cjs +131 -0
  35. package/dist/cjs/interactions/useFocus.native.js +114 -120
  36. package/dist/cjs/interactions/useFocus.native.js.map +1 -1
  37. package/dist/cjs/interactions/useHover.cjs +321 -335
  38. package/dist/cjs/interactions/useHover.native.cjs +357 -0
  39. package/dist/cjs/interactions/useHover.native.js +333 -347
  40. package/dist/cjs/interactions/useHover.native.js.map +1 -1
  41. package/dist/cjs/interactions/useInnerOffset.cjs +103 -111
  42. package/dist/cjs/interactions/useInnerOffset.native.cjs +132 -0
  43. package/dist/cjs/interactions/useInnerOffset.native.js +113 -120
  44. package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -1
  45. package/dist/cjs/interactions/useInteractions.cjs +85 -90
  46. package/dist/cjs/interactions/useInteractions.native.cjs +199 -0
  47. package/dist/cjs/interactions/useInteractions.native.js +180 -195
  48. package/dist/cjs/interactions/useInteractions.native.js.map +1 -1
  49. package/dist/cjs/interactions/useListNavigation.cjs +404 -390
  50. package/dist/cjs/interactions/useListNavigation.native.cjs +446 -0
  51. package/dist/cjs/interactions/useListNavigation.native.js +416 -401
  52. package/dist/cjs/interactions/useListNavigation.native.js.map +1 -1
  53. package/dist/cjs/interactions/useRole.cjs +92 -106
  54. package/dist/cjs/interactions/useRole.native.cjs +121 -0
  55. package/dist/cjs/interactions/useRole.native.js +103 -116
  56. package/dist/cjs/interactions/useRole.native.js.map +1 -1
  57. package/dist/cjs/interactions/useTypeahead.cjs +115 -129
  58. package/dist/cjs/interactions/useTypeahead.native.cjs +144 -0
  59. package/dist/cjs/interactions/useTypeahead.native.js +128 -141
  60. package/dist/cjs/interactions/useTypeahead.native.js.map +1 -1
  61. package/dist/cjs/interactions/utils.cjs +126 -143
  62. package/dist/cjs/interactions/utils.native.cjs +209 -0
  63. package/dist/cjs/interactions/utils.native.js +138 -154
  64. package/dist/cjs/interactions/utils.native.js.map +1 -1
  65. package/dist/cjs/middleware/inner.cjs +74 -101
  66. package/dist/cjs/middleware/inner.native.cjs +102 -0
  67. package/dist/cjs/middleware/inner.native.js +83 -109
  68. package/dist/cjs/middleware/inner.native.js.map +1 -1
  69. package/dist/cjs/useFloating.cjs +34 -46
  70. package/dist/cjs/useFloating.native.cjs +56 -0
  71. package/dist/cjs/useFloating.native.js +37 -48
  72. package/dist/cjs/useFloating.native.js.map +1 -1
  73. package/dist/esm/Floating.mjs +1 -2
  74. package/dist/esm/Floating.native.js +6 -4
  75. package/dist/esm/Floating.native.js.map +1 -1
  76. package/dist/esm/index.js +4 -5
  77. package/dist/esm/index.mjs +4 -5
  78. package/dist/esm/index.native.js +4 -5
  79. package/dist/esm/interactions/PopupTriggerMap.mjs +23 -22
  80. package/dist/esm/interactions/PopupTriggerMap.mjs.map +1 -1
  81. package/dist/esm/interactions/PopupTriggerMap.native.js +62 -58
  82. package/dist/esm/interactions/PopupTriggerMap.native.js.map +1 -1
  83. package/dist/esm/interactions/createFloatingEvents.mjs +22 -21
  84. package/dist/esm/interactions/createFloatingEvents.mjs.map +1 -1
  85. package/dist/esm/interactions/createFloatingEvents.native.js +25 -24
  86. package/dist/esm/interactions/createFloatingEvents.native.js.map +1 -1
  87. package/dist/esm/interactions/safePolygon.mjs +250 -234
  88. package/dist/esm/interactions/safePolygon.mjs.map +1 -1
  89. package/dist/esm/interactions/safePolygon.native.js +258 -242
  90. package/dist/esm/interactions/safePolygon.native.js.map +1 -1
  91. package/dist/esm/interactions/types.mjs +0 -2
  92. package/dist/esm/interactions/types.native.js +0 -2
  93. package/dist/esm/interactions/useClick.mjs +83 -87
  94. package/dist/esm/interactions/useClick.mjs.map +1 -1
  95. package/dist/esm/interactions/useClick.native.js +88 -92
  96. package/dist/esm/interactions/useClick.native.js.map +1 -1
  97. package/dist/esm/interactions/useDelayGroup.mjs +68 -65
  98. package/dist/esm/interactions/useDelayGroup.mjs.map +1 -1
  99. package/dist/esm/interactions/useDelayGroup.native.js +74 -71
  100. package/dist/esm/interactions/useDelayGroup.native.js.map +1 -1
  101. package/dist/esm/interactions/useFocus.mjs +95 -97
  102. package/dist/esm/interactions/useFocus.mjs.map +1 -1
  103. package/dist/esm/interactions/useFocus.native.js +101 -103
  104. package/dist/esm/interactions/useFocus.native.js.map +1 -1
  105. package/dist/esm/interactions/useHover.mjs +304 -310
  106. package/dist/esm/interactions/useHover.mjs.map +1 -1
  107. package/dist/esm/interactions/useHover.native.js +316 -323
  108. package/dist/esm/interactions/useHover.native.js.map +1 -1
  109. package/dist/esm/interactions/useInnerOffset.mjs +87 -85
  110. package/dist/esm/interactions/useInnerOffset.mjs.map +1 -1
  111. package/dist/esm/interactions/useInnerOffset.native.js +97 -95
  112. package/dist/esm/interactions/useInnerOffset.native.js.map +1 -1
  113. package/dist/esm/interactions/useInteractions.mjs +71 -72
  114. package/dist/esm/interactions/useInteractions.mjs.map +1 -1
  115. package/dist/esm/interactions/useInteractions.native.js +166 -178
  116. package/dist/esm/interactions/useInteractions.native.js.map +1 -1
  117. package/dist/esm/interactions/useListNavigation.mjs +392 -373
  118. package/dist/esm/interactions/useListNavigation.mjs.map +1 -1
  119. package/dist/esm/interactions/useListNavigation.native.js +404 -385
  120. package/dist/esm/interactions/useListNavigation.native.js.map +1 -1
  121. package/dist/esm/interactions/useRole.mjs +76 -80
  122. package/dist/esm/interactions/useRole.mjs.map +1 -1
  123. package/dist/esm/interactions/useRole.native.js +87 -91
  124. package/dist/esm/interactions/useRole.native.js.map +1 -1
  125. package/dist/esm/interactions/useTypeahead.mjs +102 -111
  126. package/dist/esm/interactions/useTypeahead.mjs.map +1 -1
  127. package/dist/esm/interactions/useTypeahead.native.js +115 -124
  128. package/dist/esm/interactions/useTypeahead.native.js.map +1 -1
  129. package/dist/esm/interactions/utils.mjs +91 -106
  130. package/dist/esm/interactions/utils.mjs.map +1 -1
  131. package/dist/esm/interactions/utils.native.js +103 -118
  132. package/dist/esm/interactions/utils.native.js.map +1 -1
  133. package/dist/esm/middleware/inner.mjs +58 -75
  134. package/dist/esm/middleware/inner.mjs.map +1 -1
  135. package/dist/esm/middleware/inner.native.js +67 -84
  136. package/dist/esm/middleware/inner.native.js.map +1 -1
  137. package/dist/esm/useFloating.mjs +17 -21
  138. package/dist/esm/useFloating.mjs.map +1 -1
  139. package/dist/esm/useFloating.native.js +19 -23
  140. package/dist/esm/useFloating.native.js.map +1 -1
  141. package/package.json +6 -5
  142. package/types/interactions/PopupTriggerMap.d.ts.map +1 -1
  143. package/types/interactions/useInteractions.d.ts.map +1 -1
  144. package/types/middleware/inner.d.ts.map +1 -1
  145. package/types/useFloating.d.ts.map +1 -1
  146. package/dist/esm/Floating.mjs.map +0 -1
  147. package/dist/esm/index.js.map +0 -1
  148. package/dist/esm/index.mjs.map +0 -1
  149. package/dist/esm/index.native.js.map +0 -1
  150. package/dist/esm/interactions/types.mjs.map +0 -1
  151. package/dist/esm/interactions/types.native.js.map +0 -1
@@ -1,99 +1,95 @@
1
1
  import { useMemo, useRef } from "react";
2
2
  import { isHTMLElement, isMouseLikePointerType, isTypeableElement } from "./utils.mjs";
3
+
3
4
  function isButtonTarget(event) {
4
- return isHTMLElement(event.target) && event.target.tagName === "BUTTON";
5
+ return isHTMLElement(event.target) && event.target.tagName === "BUTTON";
5
6
  }
6
7
  function isAnchorTarget(event) {
7
- return isHTMLElement(event.target) && event.target.tagName === "A";
8
+ return isHTMLElement(event.target) && event.target.tagName === "A";
8
9
  }
9
10
  function isSpaceIgnored(element) {
10
- return isTypeableElement(element);
11
+ return isTypeableElement(element);
11
12
  }
12
13
  function useClick(context, props = {}) {
13
- const {
14
- open,
15
- onOpenChange,
16
- dataRef,
17
- elements: {
18
- domReference
19
- }
20
- } = context;
21
- const {
22
- enabled = true,
23
- event: eventOption = "click",
24
- toggle = true,
25
- ignoreMouse = false,
26
- keyboardHandlers = true,
27
- stickIfOpen = true
28
- } = props;
29
- const pointerTypeRef = useRef(void 0);
30
- const didKeyDownRef = useRef(false);
31
- const reference = useMemo(() => ({
32
- onPointerDown(event) {
33
- pointerTypeRef.current = event.pointerType;
34
- },
35
- onMouseDown(event) {
36
- const pointerType = pointerTypeRef.current;
37
- if (event.button !== 0) return;
38
- if (eventOption === "click") return;
39
- if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;
40
- if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === "mousedown" : true)) {
41
- onOpenChange(false, event.nativeEvent || event, "click");
42
- } else {
43
- event.preventDefault();
44
- onOpenChange(true, event.nativeEvent || event, "click");
45
- }
46
- },
47
- onClick(event) {
48
- const pointerType = pointerTypeRef.current;
49
- if (eventOption === "mousedown" && pointerTypeRef.current) {
50
- pointerTypeRef.current = void 0;
51
- return;
52
- }
53
- if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;
54
- if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === "click" : true)) {
55
- onOpenChange(false, event.nativeEvent || event, "click");
56
- } else {
57
- onOpenChange(true, event.nativeEvent || event, "click");
58
- }
59
- },
60
- onKeyDown(event) {
61
- pointerTypeRef.current = void 0;
62
- if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {
63
- return;
64
- }
65
- if (event.key === " " && !isSpaceIgnored(domReference)) {
66
- event.preventDefault();
67
- didKeyDownRef.current = true;
68
- }
69
- if (isAnchorTarget(event)) {
70
- return;
71
- }
72
- if (event.key === "Enter") {
73
- if (open && toggle) {
74
- onOpenChange(false, event.nativeEvent || event, "click");
75
- } else {
76
- onOpenChange(true, event.nativeEvent || event, "click");
77
- }
78
- }
79
- },
80
- onKeyUp(event) {
81
- if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {
82
- return;
83
- }
84
- if (event.key === " " && didKeyDownRef.current) {
85
- didKeyDownRef.current = false;
86
- if (open && toggle) {
87
- onOpenChange(false, event.nativeEvent || event, "click");
88
- } else {
89
- onOpenChange(true, event.nativeEvent || event, "click");
90
- }
91
- }
92
- }
93
- }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);
94
- return useMemo(() => enabled ? {
95
- reference
96
- } : {}, [enabled, reference]);
14
+ const { open, onOpenChange, dataRef, elements: { domReference } } = context;
15
+ const { enabled = true, event: eventOption = "click", toggle = true, ignoreMouse = false, keyboardHandlers = true, stickIfOpen = true } = props;
16
+ const pointerTypeRef = useRef(void 0);
17
+ const didKeyDownRef = useRef(false);
18
+ const reference = useMemo(() => ({
19
+ onPointerDown(event) {
20
+ pointerTypeRef.current = event.pointerType;
21
+ },
22
+ onMouseDown(event) {
23
+ const pointerType = pointerTypeRef.current;
24
+ if (event.button !== 0) return;
25
+ if (eventOption === "click") return;
26
+ if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;
27
+ if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === "mousedown" : true)) {
28
+ onOpenChange(false, event.nativeEvent || event, "click");
29
+ } else {
30
+ event.preventDefault();
31
+ onOpenChange(true, event.nativeEvent || event, "click");
32
+ }
33
+ },
34
+ onClick(event) {
35
+ const pointerType = pointerTypeRef.current;
36
+ if (eventOption === "mousedown" && pointerTypeRef.current) {
37
+ pointerTypeRef.current = void 0;
38
+ return;
39
+ }
40
+ if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;
41
+ if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === "click" : true)) {
42
+ onOpenChange(false, event.nativeEvent || event, "click");
43
+ } else {
44
+ onOpenChange(true, event.nativeEvent || event, "click");
45
+ }
46
+ },
47
+ onKeyDown(event) {
48
+ pointerTypeRef.current = void 0;
49
+ if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {
50
+ return;
51
+ }
52
+ if (event.key === " " && !isSpaceIgnored(domReference)) {
53
+ event.preventDefault();
54
+ didKeyDownRef.current = true;
55
+ }
56
+ if (isAnchorTarget(event)) {
57
+ return;
58
+ }
59
+ if (event.key === "Enter") {
60
+ if (open && toggle) {
61
+ onOpenChange(false, event.nativeEvent || event, "click");
62
+ } else {
63
+ onOpenChange(true, event.nativeEvent || event, "click");
64
+ }
65
+ }
66
+ },
67
+ onKeyUp(event) {
68
+ if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {
69
+ return;
70
+ }
71
+ if (event.key === " " && didKeyDownRef.current) {
72
+ didKeyDownRef.current = false;
73
+ if (open && toggle) {
74
+ onOpenChange(false, event.nativeEvent || event, "click");
75
+ } else {
76
+ onOpenChange(true, event.nativeEvent || event, "click");
77
+ }
78
+ }
79
+ }
80
+ }), [
81
+ dataRef,
82
+ domReference,
83
+ eventOption,
84
+ ignoreMouse,
85
+ keyboardHandlers,
86
+ onOpenChange,
87
+ open,
88
+ stickIfOpen,
89
+ toggle
90
+ ]);
91
+ return useMemo(() => enabled ? { reference } : {}, [enabled, reference]);
97
92
  }
93
+
98
94
  export { useClick };
99
95
  //# sourceMappingURL=useClick.mjs.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"useClick.js","names":[],"sources":["esm/interactions/useClick.js"],"sourcesContent":["import { useMemo, useRef } from \"react\";\nimport { isHTMLElement, isMouseLikePointerType, isTypeableElement } from \"./utils\";\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === \"BUTTON\";\n}\nfunction isAnchorTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === \"A\";\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\nfunction useClick(context, props = {}) {\n const {\n open,\n onOpenChange,\n dataRef,\n elements: { domReference }\n } = context;\n const {\n enabled = true,\n event: eventOption = \"click\",\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true,\n stickIfOpen = true\n } = props;\n const pointerTypeRef = useRef(void 0);\n const didKeyDownRef = useRef(false);\n const reference = useMemo(\n () => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\n if (event.button !== 0) return;\n if (eventOption === \"click\") return;\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === \"mousedown\" : true)) {\n onOpenChange(false, event.nativeEvent || event, \"click\");\n } else {\n event.preventDefault();\n onOpenChange(true, event.nativeEvent || event, \"click\");\n }\n },\n onClick(event) {\n const pointerType = pointerTypeRef.current;\n if (eventOption === \"mousedown\" && pointerTypeRef.current) {\n pointerTypeRef.current = void 0;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === \"click\" : true)) {\n onOpenChange(false, event.nativeEvent || event, \"click\");\n } else {\n onOpenChange(true, event.nativeEvent || event, \"click\");\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = void 0;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === \" \" && !isSpaceIgnored(domReference)) {\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (isAnchorTarget(event)) {\n return;\n }\n if (event.key === \"Enter\") {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent || event, \"click\");\n } else {\n onOpenChange(true, event.nativeEvent || event, \"click\");\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === \" \" && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent || event, \"click\");\n } else {\n onOpenChange(true, event.nativeEvent || event, \"click\");\n }\n }\n }\n }),\n [\n dataRef,\n domReference,\n eventOption,\n ignoreMouse,\n keyboardHandlers,\n onOpenChange,\n open,\n stickIfOpen,\n toggle\n ]\n );\n return useMemo(() => enabled ? { reference } : {}, [enabled, reference]);\n}\nexport {\n useClick\n};\n//# sourceMappingURL=useClick.js.map\n"],"mappings":";;;;AAEA,SAAS,eAAe,OAAO;CAC7B,OAAO,cAAc,MAAM,MAAM,KAAK,MAAM,OAAO,YAAY;AACjE;AACA,SAAS,eAAe,OAAO;CAC7B,OAAO,cAAc,MAAM,MAAM,KAAK,MAAM,OAAO,YAAY;AACjE;AACA,SAAS,eAAe,SAAS;CAC/B,OAAO,kBAAkB,OAAO;AAClC;AACA,SAAS,SAAS,SAAS,QAAQ,CAAC,GAAG;CACrC,MAAM,EACJ,MACA,cACA,SACA,UAAU,EAAE,mBACV;CACJ,MAAM,EACJ,UAAU,MACV,OAAO,cAAc,SACrB,SAAS,MACT,cAAc,OACd,mBAAmB,MACnB,cAAc,SACZ;CACJ,MAAM,iBAAiB,OAAO,KAAK,CAAC;CACpC,MAAM,gBAAgB,OAAO,KAAK;CAClC,MAAM,YAAY,eACT;EACL,cAAc,OAAO;GACnB,eAAe,UAAU,MAAM;EACjC;EACA,YAAY,OAAO;GACjB,MAAM,cAAc,eAAe;GACnC,IAAI,MAAM,WAAW,GAAG;GACxB,IAAI,gBAAgB,SAAS;GAC7B,IAAI,uBAAuB,aAAa,IAAI,KAAK,aAAa;GAC9D,IAAI,QAAQ,WAAW,QAAQ,QAAQ,aAAa,cAAc,QAAQ,QAAQ,UAAU,SAAS,cAAc,OAAO;IACxH,aAAa,OAAO,MAAM,eAAe,OAAO,OAAO;GACzD,OAAO;IACL,MAAM,eAAe;IACrB,aAAa,MAAM,MAAM,eAAe,OAAO,OAAO;GACxD;EACF;EACA,QAAQ,OAAO;GACb,MAAM,cAAc,eAAe;GACnC,IAAI,gBAAgB,eAAe,eAAe,SAAS;IACzD,eAAe,UAAU,KAAK;IAC9B;GACF;GACA,IAAI,uBAAuB,aAAa,IAAI,KAAK,aAAa;GAC9D,IAAI,QAAQ,WAAW,QAAQ,QAAQ,aAAa,cAAc,QAAQ,QAAQ,UAAU,SAAS,UAAU,OAAO;IACpH,aAAa,OAAO,MAAM,eAAe,OAAO,OAAO;GACzD,OAAO;IACL,aAAa,MAAM,MAAM,eAAe,OAAO,OAAO;GACxD;EACF;EACA,UAAU,OAAO;GACf,eAAe,UAAU,KAAK;GAC9B,IAAI,MAAM,oBAAoB,CAAC,oBAAoB,eAAe,KAAK,GAAG;IACxE;GACF;GACA,IAAI,MAAM,QAAQ,OAAO,CAAC,eAAe,YAAY,GAAG;IACtD,MAAM,eAAe;IACrB,cAAc,UAAU;GAC1B;GACA,IAAI,eAAe,KAAK,GAAG;IACzB;GACF;GACA,IAAI,MAAM,QAAQ,SAAS;IACzB,IAAI,QAAQ,QAAQ;KAClB,aAAa,OAAO,MAAM,eAAe,OAAO,OAAO;IACzD,OAAO;KACL,aAAa,MAAM,MAAM,eAAe,OAAO,OAAO;IACxD;GACF;EACF;EACA,QAAQ,OAAO;GACb,IAAI,MAAM,oBAAoB,CAAC,oBAAoB,eAAe,KAAK,KAAK,eAAe,YAAY,GAAG;IACxG;GACF;GACA,IAAI,MAAM,QAAQ,OAAO,cAAc,SAAS;IAC9C,cAAc,UAAU;IACxB,IAAI,QAAQ,QAAQ;KAClB,aAAa,OAAO,MAAM,eAAe,OAAO,OAAO;IACzD,OAAO;KACL,aAAa,MAAM,MAAM,eAAe,OAAO,OAAO;IACxD;GACF;EACF;CACF,IACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF;CACA,OAAO,cAAc,UAAU,EAAE,UAAU,IAAI,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC;AACzE"}
@@ -1,104 +1,100 @@
1
1
  import { useMemo, useRef } from "react";
2
2
  import { isHTMLElement, isMouseLikePointerType, isTypeableElement } from "./utils.native.js";
3
+
3
4
  function isButtonTarget(event) {
4
- return isHTMLElement(event.target) && event.target.tagName === "BUTTON";
5
+ return isHTMLElement(event.target) && event.target.tagName === "BUTTON";
5
6
  }
6
7
  function isAnchorTarget(event) {
7
- return isHTMLElement(event.target) && event.target.tagName === "A";
8
+ return isHTMLElement(event.target) && event.target.tagName === "A";
8
9
  }
9
10
  function isSpaceIgnored(element) {
10
- return isTypeableElement(element);
11
+ return isTypeableElement(element);
11
12
  }
12
13
  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]);
14
+ var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
15
+ var { open, onOpenChange, dataRef, elements: { domReference } } = context;
16
+ var { enabled = true, event: eventOption = "click", toggle = true, ignoreMouse = false, keyboardHandlers = true, stickIfOpen = true } = props;
17
+ var pointerTypeRef = useRef(void 0);
18
+ var didKeyDownRef = useRef(false);
19
+ var reference = useMemo(function() {
20
+ return {
21
+ onPointerDown(event) {
22
+ pointerTypeRef.current = event.pointerType;
23
+ },
24
+ onMouseDown(event) {
25
+ var pointerType = pointerTypeRef.current;
26
+ if (event.button !== 0) return;
27
+ if (eventOption === "click") return;
28
+ if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;
29
+ if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === "mousedown" : true)) {
30
+ onOpenChange(false, event.nativeEvent || event, "click");
31
+ } else {
32
+ event.preventDefault();
33
+ onOpenChange(true, event.nativeEvent || event, "click");
34
+ }
35
+ },
36
+ onClick(event) {
37
+ var pointerType = pointerTypeRef.current;
38
+ if (eventOption === "mousedown" && pointerTypeRef.current) {
39
+ pointerTypeRef.current = void 0;
40
+ return;
41
+ }
42
+ if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;
43
+ if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === "click" : true)) {
44
+ onOpenChange(false, event.nativeEvent || event, "click");
45
+ } else {
46
+ onOpenChange(true, event.nativeEvent || event, "click");
47
+ }
48
+ },
49
+ onKeyDown(event) {
50
+ pointerTypeRef.current = void 0;
51
+ if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {
52
+ return;
53
+ }
54
+ if (event.key === " " && !isSpaceIgnored(domReference)) {
55
+ event.preventDefault();
56
+ didKeyDownRef.current = true;
57
+ }
58
+ if (isAnchorTarget(event)) {
59
+ return;
60
+ }
61
+ if (event.key === "Enter") {
62
+ if (open && toggle) {
63
+ onOpenChange(false, event.nativeEvent || event, "click");
64
+ } else {
65
+ onOpenChange(true, event.nativeEvent || event, "click");
66
+ }
67
+ }
68
+ },
69
+ onKeyUp(event) {
70
+ if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {
71
+ return;
72
+ }
73
+ if (event.key === " " && didKeyDownRef.current) {
74
+ didKeyDownRef.current = false;
75
+ if (open && toggle) {
76
+ onOpenChange(false, event.nativeEvent || event, "click");
77
+ } else {
78
+ onOpenChange(true, event.nativeEvent || event, "click");
79
+ }
80
+ }
81
+ }
82
+ };
83
+ }, [
84
+ dataRef,
85
+ domReference,
86
+ eventOption,
87
+ ignoreMouse,
88
+ keyboardHandlers,
89
+ onOpenChange,
90
+ open,
91
+ stickIfOpen,
92
+ toggle
93
+ ]);
94
+ return useMemo(function() {
95
+ return enabled ? { reference } : {};
96
+ }, [enabled, reference]);
102
97
  }
98
+
103
99
  export { useClick };
104
100
  //# sourceMappingURL=useClick.native.js.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"useClick.native.js","names":[],"sources":["esm/interactions/useClick.native.js"],"sourcesContent":["import { useMemo, useRef } from \"react\";\nimport { isHTMLElement, isMouseLikePointerType, isTypeableElement } from \"./utils\";\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === \"BUTTON\";\n}\nfunction isAnchorTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === \"A\";\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\nfunction useClick(context) {\n var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var { open, onOpenChange, dataRef, elements: { domReference } } = context;\n var { enabled = true, event: eventOption = \"click\", toggle = true, ignoreMouse = false, keyboardHandlers = true, stickIfOpen = true } = props;\n var pointerTypeRef = useRef(void 0);\n var didKeyDownRef = useRef(false);\n var reference = useMemo(function() {\n return {\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n var pointerType = pointerTypeRef.current;\n if (event.button !== 0) return;\n if (eventOption === \"click\") return;\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === \"mousedown\" : true)) {\n onOpenChange(false, event.nativeEvent || event, \"click\");\n } else {\n event.preventDefault();\n onOpenChange(true, event.nativeEvent || event, \"click\");\n }\n },\n onClick(event) {\n var pointerType = pointerTypeRef.current;\n if (eventOption === \"mousedown\" && pointerTypeRef.current) {\n pointerTypeRef.current = void 0;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === \"click\" : true)) {\n onOpenChange(false, event.nativeEvent || event, \"click\");\n } else {\n onOpenChange(true, event.nativeEvent || event, \"click\");\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = void 0;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === \" \" && !isSpaceIgnored(domReference)) {\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (isAnchorTarget(event)) {\n return;\n }\n if (event.key === \"Enter\") {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent || event, \"click\");\n } else {\n onOpenChange(true, event.nativeEvent || event, \"click\");\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === \" \" && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent || event, \"click\");\n } else {\n onOpenChange(true, event.nativeEvent || event, \"click\");\n }\n }\n }\n };\n }, [\n dataRef,\n domReference,\n eventOption,\n ignoreMouse,\n keyboardHandlers,\n onOpenChange,\n open,\n stickIfOpen,\n toggle\n ]);\n return useMemo(function() {\n return enabled ? {\n reference\n } : {};\n }, [\n enabled,\n reference\n ]);\n}\nexport {\n useClick\n};\n//# sourceMappingURL=useClick.js.map\n"],"mappings":";;;;AAEA,SAAS,eAAe,OAAO;CAC7B,OAAO,cAAc,MAAM,MAAM,KAAK,MAAM,OAAO,YAAY;AACjE;AACA,SAAS,eAAe,OAAO;CAC7B,OAAO,cAAc,MAAM,MAAM,KAAK,MAAM,OAAO,YAAY;AACjE;AACA,SAAS,eAAe,SAAS;CAC/B,OAAO,kBAAkB,OAAO;AAClC;AACA,SAAS,SAAS,SAAS;CACzB,IAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;CAC9E,IAAI,EAAE,MAAM,cAAc,SAAS,UAAU,EAAE,mBAAmB;CAClE,IAAI,EAAE,UAAU,MAAM,OAAO,cAAc,SAAS,SAAS,MAAM,cAAc,OAAO,mBAAmB,MAAM,cAAc,SAAS;CACxI,IAAI,iBAAiB,OAAO,KAAK,CAAC;CAClC,IAAI,gBAAgB,OAAO,KAAK;CAChC,IAAI,YAAY,QAAQ,WAAW;EACjC,OAAO;GACL,cAAc,OAAO;IACnB,eAAe,UAAU,MAAM;GACjC;GACA,YAAY,OAAO;IACjB,IAAI,cAAc,eAAe;IACjC,IAAI,MAAM,WAAW,GAAG;IACxB,IAAI,gBAAgB,SAAS;IAC7B,IAAI,uBAAuB,aAAa,IAAI,KAAK,aAAa;IAC9D,IAAI,QAAQ,WAAW,QAAQ,QAAQ,aAAa,cAAc,QAAQ,QAAQ,UAAU,SAAS,cAAc,OAAO;KACxH,aAAa,OAAO,MAAM,eAAe,OAAO,OAAO;IACzD,OAAO;KACL,MAAM,eAAe;KACrB,aAAa,MAAM,MAAM,eAAe,OAAO,OAAO;IACxD;GACF;GACA,QAAQ,OAAO;IACb,IAAI,cAAc,eAAe;IACjC,IAAI,gBAAgB,eAAe,eAAe,SAAS;KACzD,eAAe,UAAU,KAAK;KAC9B;IACF;IACA,IAAI,uBAAuB,aAAa,IAAI,KAAK,aAAa;IAC9D,IAAI,QAAQ,WAAW,QAAQ,QAAQ,aAAa,cAAc,QAAQ,QAAQ,UAAU,SAAS,UAAU,OAAO;KACpH,aAAa,OAAO,MAAM,eAAe,OAAO,OAAO;IACzD,OAAO;KACL,aAAa,MAAM,MAAM,eAAe,OAAO,OAAO;IACxD;GACF;GACA,UAAU,OAAO;IACf,eAAe,UAAU,KAAK;IAC9B,IAAI,MAAM,oBAAoB,CAAC,oBAAoB,eAAe,KAAK,GAAG;KACxE;IACF;IACA,IAAI,MAAM,QAAQ,OAAO,CAAC,eAAe,YAAY,GAAG;KACtD,MAAM,eAAe;KACrB,cAAc,UAAU;IAC1B;IACA,IAAI,eAAe,KAAK,GAAG;KACzB;IACF;IACA,IAAI,MAAM,QAAQ,SAAS;KACzB,IAAI,QAAQ,QAAQ;MAClB,aAAa,OAAO,MAAM,eAAe,OAAO,OAAO;KACzD,OAAO;MACL,aAAa,MAAM,MAAM,eAAe,OAAO,OAAO;KACxD;IACF;GACF;GACA,QAAQ,OAAO;IACb,IAAI,MAAM,oBAAoB,CAAC,oBAAoB,eAAe,KAAK,KAAK,eAAe,YAAY,GAAG;KACxG;IACF;IACA,IAAI,MAAM,QAAQ,OAAO,cAAc,SAAS;KAC9C,cAAc,UAAU;KACxB,IAAI,QAAQ,QAAQ;MAClB,aAAa,OAAO,MAAM,eAAe,OAAO,OAAO;KACzD,OAAO;MACL,aAAa,MAAM,MAAM,eAAe,OAAO,OAAO;KACxD;IACF;GACF;EACF;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,OAAO,QAAQ,WAAW;EACxB,OAAO,UAAU,EACf,UACF,IAAI,CAAC;CACP,GAAG,CACD,SACA,SACF,CAAC;AACH"}
@@ -1,77 +1,80 @@
1
1
  import * as React from "react";
2
+
2
3
  const DelayGroupContext = React.createContext({
3
- currentId: null,
4
- setCurrentId: () => {},
5
- delay: 0,
6
- timeoutMs: 0,
7
- initialDelay: 0
4
+ currentId: null,
5
+ setCurrentId: () => {},
6
+ delay: 0,
7
+ timeoutMs: 0,
8
+ initialDelay: 0
8
9
  });
9
10
  function useDelayGroupContext() {
10
- return React.useContext(DelayGroupContext);
11
+ return React.useContext(DelayGroupContext);
11
12
  }
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);
13
+ function FloatingDelayGroup({ children, delay, timeoutMs = 0 }) {
14
+ const [currentId, setCurrentIdRaw] = React.useState(null);
15
+ const timeoutRef = React.useRef(void 0);
16
+ const setCurrentId = React.useCallback((id) => {
17
+ clearTimeout(timeoutRef.current);
18
+ if (id == null && timeoutMs > 0) {
19
+ timeoutRef.current = setTimeout(() => {
20
+ setCurrentIdRaw(null);
21
+ }, timeoutMs);
22
+ } else {
23
+ setCurrentIdRaw(id);
24
+ }
25
+ }, [timeoutMs]);
26
+ React.useEffect(() => {
27
+ return () => clearTimeout(timeoutRef.current);
28
+ }, []);
29
+ const value = React.useMemo(() => ({
30
+ currentId,
31
+ setCurrentId,
32
+ delay,
33
+ timeoutMs,
34
+ initialDelay: delay
35
+ }), [
36
+ currentId,
37
+ setCurrentId,
38
+ delay,
39
+ timeoutMs
40
+ ]);
41
+ return React.createElement(DelayGroupContext.Provider, { value }, children);
42
42
  }
43
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
- };
44
+ const { id } = options;
45
+ const groupContext = React.useContext(DelayGroupContext);
46
+ React.useEffect(() => {
47
+ if (!context.open && groupContext.currentId === id) {
48
+ groupContext.setCurrentId(null);
49
+ }
50
+ }, [context.open, id]);
51
+ React.useEffect(() => {
52
+ if (groupContext.currentId != null && groupContext.currentId !== id && context.open) {
53
+ context.onOpenChange(false);
54
+ }
55
+ }, [
56
+ groupContext.currentId,
57
+ id,
58
+ context.open
59
+ ]);
60
+ if (groupContext.currentId != null) {
61
+ return {
62
+ delay: {
63
+ open: 1,
64
+ close: getClose(groupContext.initialDelay)
65
+ },
66
+ currentId: groupContext.currentId
67
+ };
68
+ }
69
+ return {
70
+ delay: groupContext.initialDelay,
71
+ currentId: groupContext.currentId
72
+ };
71
73
  }
72
74
  function getClose(delay) {
73
- if (typeof delay === "number") return delay;
74
- return delay?.close ?? 0;
75
+ if (typeof delay === "number") return delay;
76
+ return delay?.close ?? 0;
75
77
  }
78
+
76
79
  export { FloatingDelayGroup, useDelayGroup, useDelayGroupContext };
77
80
  //# sourceMappingURL=useDelayGroup.mjs.map