@tamagui/floating 2.7.7 → 3.0.0-beta.643.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,111 +1,109 @@
1
1
  import { useEffect, useMemo, useRef } from "react";
2
2
  import { activeElement, clearTimeoutIfSet, contains, getDocument, getTarget, isElement, isHTMLElement, isMac, isSafari, isTypeableElement, matchesFocusVisible } from "./utils.native.js";
3
+
3
4
  function isMacSafari() {
4
- return isMac() && isSafari();
5
+ return isMac() && isSafari();
5
6
  }
6
7
  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]);
8
+ var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
9
+ var { open, onOpenChange, events, dataRef, elements } = context;
10
+ var { enabled = true, visibleOnly = true } = props;
11
+ var blockFocusRef = useRef(false);
12
+ var timeoutRef = useRef(-1);
13
+ var keyboardModalityRef = useRef(true);
14
+ useEffect(function() {
15
+ if (!enabled) return;
16
+ var win = getDocument(elements.domReference).defaultView || window;
17
+ function onBlur() {
18
+ if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {
19
+ blockFocusRef.current = true;
20
+ }
21
+ }
22
+ function onKeyDown() {
23
+ keyboardModalityRef.current = true;
24
+ }
25
+ function onPointerDown() {
26
+ keyboardModalityRef.current = false;
27
+ }
28
+ win.addEventListener("blur", onBlur);
29
+ if (isMacSafari()) {
30
+ win.addEventListener("keydown", onKeyDown, true);
31
+ win.addEventListener("pointerdown", onPointerDown, true);
32
+ }
33
+ return function() {
34
+ win.removeEventListener("blur", onBlur);
35
+ if (isMacSafari()) {
36
+ win.removeEventListener("keydown", onKeyDown, true);
37
+ win.removeEventListener("pointerdown", onPointerDown, true);
38
+ }
39
+ };
40
+ }, [
41
+ elements.domReference,
42
+ open,
43
+ enabled
44
+ ]);
45
+ useEffect(function() {
46
+ if (!enabled) return;
47
+ if (!events) return;
48
+ function handleOpenChange(param) {
49
+ var { reason } = param;
50
+ if (reason === "reference-press" || reason === "escape-key") {
51
+ blockFocusRef.current = true;
52
+ }
53
+ }
54
+ events.on("openchange", handleOpenChange);
55
+ return function() {
56
+ events.off("openchange", handleOpenChange);
57
+ };
58
+ }, [events, enabled]);
59
+ useEffect(function() {
60
+ return function() {
61
+ clearTimeoutIfSet(timeoutRef);
62
+ };
63
+ }, []);
64
+ var reference = useMemo(function() {
65
+ return {
66
+ onMouseLeave() {
67
+ blockFocusRef.current = false;
68
+ },
69
+ onFocus(event) {
70
+ if (blockFocusRef.current) return;
71
+ var target = getTarget(event.nativeEvent);
72
+ if (visibleOnly && isElement(target)) {
73
+ if (isMacSafari() && !event.relatedTarget) {
74
+ if (!keyboardModalityRef.current && !isTypeableElement(target)) {
75
+ return;
76
+ }
77
+ } else if (!matchesFocusVisible(target)) {
78
+ return;
79
+ }
80
+ }
81
+ onOpenChange(true, event.nativeEvent, "focus");
82
+ },
83
+ onBlur(event) {
84
+ blockFocusRef.current = false;
85
+ var relatedTarget = event.relatedTarget;
86
+ var nativeEvent = event.nativeEvent;
87
+ timeoutRef.current = window.setTimeout(function() {
88
+ var activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);
89
+ if (!relatedTarget && activeEl === elements.domReference) return;
90
+ if (contains(context.refs.floating.current, activeEl) || contains(elements.domReference, activeEl)) {
91
+ return;
92
+ }
93
+ onOpenChange(false, nativeEvent, "focus");
94
+ });
95
+ }
96
+ };
97
+ }, [
98
+ context.refs.floating,
99
+ elements.domReference,
100
+ onOpenChange,
101
+ visibleOnly
102
+ ]);
103
+ return useMemo(function() {
104
+ return enabled ? { reference } : {};
105
+ }, [enabled, reference]);
109
106
  }
107
+
110
108
  export { useFocus };
111
109
  //# sourceMappingURL=useFocus.native.js.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"useFocus.native.js","names":[],"sources":["esm/interactions/useFocus.native.js"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { activeElement, clearTimeoutIfSet, contains, getDocument, getTarget, isElement, isHTMLElement, isMac, isSafari, isTypeableElement, matchesFocusVisible } from \"./utils\";\nfunction isMacSafari() {\n return isMac() && isSafari();\n}\nfunction useFocus(context) {\n var props = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var { open, onOpenChange, events, dataRef, elements } = context;\n var { enabled = true, visibleOnly = true } = props;\n var blockFocusRef = useRef(false);\n var timeoutRef = useRef(-1);\n var keyboardModalityRef = useRef(true);\n useEffect(function() {\n if (!enabled) return;\n var win = getDocument(elements.domReference).defaultView || window;\n function onBlur() {\n if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n function onPointerDown() {\n keyboardModalityRef.current = false;\n }\n win.addEventListener(\"blur\", onBlur);\n if (isMacSafari()) {\n win.addEventListener(\"keydown\", onKeyDown, true);\n win.addEventListener(\"pointerdown\", onPointerDown, true);\n }\n return function() {\n win.removeEventListener(\"blur\", onBlur);\n if (isMacSafari()) {\n win.removeEventListener(\"keydown\", onKeyDown, true);\n win.removeEventListener(\"pointerdown\", onPointerDown, true);\n }\n };\n }, [\n elements.domReference,\n open,\n enabled\n ]);\n useEffect(function() {\n if (!enabled) return;\n if (!events) return;\n function handleOpenChange(param) {\n var { reason } = param;\n if (reason === \"reference-press\" || reason === \"escape-key\") {\n blockFocusRef.current = true;\n }\n }\n events.on(\"openchange\", handleOpenChange);\n return function() {\n events.off(\"openchange\", handleOpenChange);\n };\n }, [\n events,\n enabled\n ]);\n useEffect(function() {\n return function() {\n clearTimeoutIfSet(timeoutRef);\n };\n }, []);\n var reference = useMemo(function() {\n return {\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n var target = getTarget(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n if (isMacSafari() && !event.relatedTarget) {\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n } else if (!matchesFocusVisible(target)) {\n return;\n }\n }\n onOpenChange(true, event.nativeEvent, \"focus\");\n },\n onBlur(event) {\n blockFocusRef.current = false;\n var relatedTarget = event.relatedTarget;\n var nativeEvent = event.nativeEvent;\n timeoutRef.current = window.setTimeout(function() {\n var activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n if (!relatedTarget && activeEl === elements.domReference) return;\n if (contains(context.refs.floating.current, activeEl) || contains(elements.domReference, activeEl)) {\n return;\n }\n onOpenChange(false, nativeEvent, \"focus\");\n });\n }\n };\n }, [\n context.refs.floating,\n elements.domReference,\n onOpenChange,\n visibleOnly\n ]);\n return useMemo(function() {\n return enabled ? {\n reference\n } : {};\n }, [\n enabled,\n reference\n ]);\n}\nexport {\n useFocus\n};\n//# sourceMappingURL=useFocus.js.map\n"],"mappings":"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"}