@tamagui/floating 2.7.7 → 3.0.0-beta.1097.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 (155) hide show
  1. package/dist/cjs/Floating.cjs +9 -11
  2. package/dist/cjs/Floating.native.cjs +36 -0
  3. package/dist/cjs/Floating.native.js +19 -20
  4. package/dist/cjs/Floating.native.js.map +1 -1
  5. package/dist/cjs/index.cjs +44 -46
  6. package/dist/cjs/index.native.cjs +73 -0
  7. package/dist/cjs/index.native.js +44 -45
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/interactions/PopupTriggerMap.cjs +35 -39
  10. package/dist/cjs/interactions/PopupTriggerMap.native.cjs +95 -0
  11. package/dist/cjs/interactions/PopupTriggerMap.native.js +75 -75
  12. package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -1
  13. package/dist/cjs/interactions/createFloatingEvents.cjs +35 -39
  14. package/dist/cjs/interactions/createFloatingEvents.native.cjs +51 -0
  15. package/dist/cjs/interactions/createFloatingEvents.native.js +38 -41
  16. package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -1
  17. package/dist/cjs/interactions/safePolygon.cjs +262 -252
  18. package/dist/cjs/interactions/safePolygon.native.cjs +293 -0
  19. package/dist/cjs/interactions/safePolygon.native.js +270 -259
  20. package/dist/cjs/interactions/safePolygon.native.js.map +1 -1
  21. package/dist/cjs/interactions/types.cjs +9 -11
  22. package/dist/cjs/interactions/types.native.cjs +18 -0
  23. package/dist/cjs/interactions/types.native.js +9 -10
  24. package/dist/cjs/interactions/types.native.js.map +1 -1
  25. package/dist/cjs/interactions/useClick.cjs +95 -105
  26. package/dist/cjs/interactions/useClick.native.cjs +121 -0
  27. package/dist/cjs/interactions/useClick.native.js +100 -109
  28. package/dist/cjs/interactions/useClick.native.js.map +1 -1
  29. package/dist/cjs/interactions/useDelayGroup.cjs +85 -91
  30. package/dist/cjs/interactions/useDelayGroup.native.cjs +118 -0
  31. package/dist/cjs/interactions/useDelayGroup.native.js +91 -96
  32. package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -1
  33. package/dist/cjs/interactions/useFocus.cjs +107 -115
  34. package/dist/cjs/interactions/useFocus.native.cjs +130 -0
  35. package/dist/cjs/interactions/useFocus.native.js +113 -120
  36. package/dist/cjs/interactions/useFocus.native.js.map +1 -1
  37. package/dist/cjs/interactions/useHover.cjs +320 -335
  38. package/dist/cjs/interactions/useHover.native.cjs +356 -0
  39. package/dist/cjs/interactions/useHover.native.js +332 -347
  40. package/dist/cjs/interactions/useHover.native.js.map +1 -1
  41. package/dist/cjs/interactions/useInnerOffset.cjs +102 -111
  42. package/dist/cjs/interactions/useInnerOffset.native.cjs +131 -0
  43. package/dist/cjs/interactions/useInnerOffset.native.js +112 -120
  44. package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -1
  45. package/dist/cjs/interactions/useInteractions.cjs +76 -92
  46. package/dist/cjs/interactions/useInteractions.native.cjs +199 -0
  47. package/dist/cjs/interactions/useInteractions.native.js +185 -200
  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 +91 -106
  54. package/dist/cjs/interactions/useRole.native.cjs +120 -0
  55. package/dist/cjs/interactions/useRole.native.js +102 -116
  56. package/dist/cjs/interactions/useRole.native.js.map +1 -1
  57. package/dist/cjs/interactions/useTypeahead.cjs +114 -129
  58. package/dist/cjs/interactions/useTypeahead.native.cjs +143 -0
  59. package/dist/cjs/interactions/useTypeahead.native.js +127 -141
  60. package/dist/cjs/interactions/useTypeahead.native.js.map +1 -1
  61. package/dist/cjs/interactions/utils.cjs +125 -143
  62. package/dist/cjs/interactions/utils.native.cjs +201 -0
  63. package/dist/cjs/interactions/utils.native.js +132 -156
  64. package/dist/cjs/interactions/utils.native.js.map +1 -1
  65. package/dist/cjs/middleware/inner.cjs +73 -101
  66. package/dist/cjs/middleware/inner.native.cjs +101 -0
  67. package/dist/cjs/middleware/inner.native.js +82 -109
  68. package/dist/cjs/middleware/inner.native.js.map +1 -1
  69. package/dist/cjs/useFloating.cjs +33 -46
  70. package/dist/cjs/useFloating.native.cjs +55 -0
  71. package/dist/cjs/useFloating.native.js +36 -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 +65 -75
  114. package/dist/esm/interactions/useInteractions.mjs.map +1 -1
  115. package/dist/esm/interactions/useInteractions.native.js +172 -182
  116. package/dist/esm/interactions/useInteractions.native.js.map +1 -1
  117. package/dist/esm/interactions/useListNavigation.mjs +393 -373
  118. package/dist/esm/interactions/useListNavigation.mjs.map +1 -1
  119. package/dist/esm/interactions/useListNavigation.native.js +405 -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 +98 -120
  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 +8 -6
  142. package/src/interactions/useInteractions.ts +61 -59
  143. package/src/interactions/useListNavigation.ts +7 -2
  144. package/types/interactions/PopupTriggerMap.d.ts.map +1 -1
  145. package/types/interactions/useInteractions.d.ts +3 -3
  146. package/types/interactions/useInteractions.d.ts.map +1 -1
  147. package/types/interactions/useListNavigation.d.ts.map +1 -1
  148. package/types/middleware/inner.d.ts.map +1 -1
  149. package/types/useFloating.d.ts.map +1 -1
  150. package/dist/esm/Floating.mjs.map +0 -1
  151. package/dist/esm/index.js.map +0 -1
  152. package/dist/esm/index.mjs.map +0 -1
  153. package/dist/esm/index.native.js.map +0 -1
  154. package/dist/esm/interactions/types.mjs.map +0 -1
  155. package/dist/esm/interactions/types.native.js.map +0 -1
@@ -7,135 +7,127 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
9
  var __export = (target, all) => {
10
- for (var name in all) __defProp(target, name, {
11
- get: all[name],
12
- enumerable: true
13
- });
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
14
  };
15
15
  var __copyProps = (to, from, except, desc) => {
16
- if (from && typeof from === "object" || typeof from === "function") {
17
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
- get: () => from[key],
19
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
- });
21
- }
22
- return to;
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
23
  };
24
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
- // If the importer is in node compatibility mode or this is not an ESM
26
- // file that has been converted to a CommonJS file using a Babel-
27
- // compatible transform (i.e. "__esModule" has not been set), then set
28
- // "default" to the CommonJS "module.exports" for node compatibility.
29
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
- value: mod,
31
- enumerable: true
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
25
+ value: mod,
26
+ enumerable: true
32
27
  }) : target, mod));
33
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
- value: true
35
- }), mod);
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
29
  var useInnerOffset_exports = {};
37
- __export(useInnerOffset_exports, {
38
- useInnerOffset: () => useInnerOffset
39
- });
30
+ __export(useInnerOffset_exports, { useInnerOffset: () => useInnerOffset });
40
31
  module.exports = __toCommonJS(useInnerOffset_exports);
41
32
  var React = __toESM(require("react"), 1);
42
33
  var ReactDOM = __toESM(require("react-dom"), 1);
43
34
  var import_use_event = require("@tamagui/use-event");
44
35
  function useInnerOffset(context, props) {
45
- var {
46
- open,
47
- elements
48
- } = context;
49
- var {
50
- enabled = true,
51
- overflowRef,
52
- scrollRef,
53
- onChange: unstable_onChange
54
- } = props;
55
- var onChange = (0, import_use_event.useEvent)(unstable_onChange);
56
- var controlledScrollingRef = React.useRef(false);
57
- var prevScrollTopRef = React.useRef(null);
58
- var initialOverflowRef = React.useRef(null);
59
- React.useEffect(function () {
60
- if (!enabled) return;
61
- function onWheel(e) {
62
- if (e.ctrlKey || !el || overflowRef.current == null) {
63
- return;
64
- }
65
- var dY = e.deltaY;
66
- var isAtTop = overflowRef.current.top >= -0.5;
67
- var isAtBottom = overflowRef.current.bottom >= -0.5;
68
- var remainingScroll = el.scrollHeight - el.clientHeight;
69
- var sign = dY < 0 ? -1 : 1;
70
- var method = dY < 0 ? "max" : "min";
71
- if (el.scrollHeight <= el.clientHeight) {
72
- return;
73
- }
74
- if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {
75
- e.preventDefault();
76
- ReactDOM.flushSync(function () {
77
- onChange(function (d) {
78
- return d + Math[method](dY, remainingScroll * sign);
79
- });
80
- });
81
- } else if (/firefox/i.test(navigator.userAgent)) {
82
- el.scrollTop += dY;
83
- }
84
- }
85
- var el = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || elements.floating;
86
- if (open && el) {
87
- el.addEventListener("wheel", onWheel);
88
- requestAnimationFrame(function () {
89
- prevScrollTopRef.current = el.scrollTop;
90
- if (overflowRef.current != null) {
91
- initialOverflowRef.current = {
92
- ...overflowRef.current
93
- };
94
- }
95
- });
96
- return function () {
97
- prevScrollTopRef.current = null;
98
- initialOverflowRef.current = null;
99
- el.removeEventListener("wheel", onWheel);
100
- };
101
- }
102
- }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);
103
- var floating = React.useMemo(function () {
104
- return {
105
- onKeyDown() {
106
- controlledScrollingRef.current = true;
107
- },
108
- onWheel() {
109
- controlledScrollingRef.current = false;
110
- },
111
- onPointerMove() {
112
- controlledScrollingRef.current = false;
113
- },
114
- onScroll() {
115
- var el = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || elements.floating;
116
- if (!overflowRef.current || !el || !controlledScrollingRef.current) {
117
- return;
118
- }
119
- if (prevScrollTopRef.current !== null) {
120
- var scrollDiff = el.scrollTop - prevScrollTopRef.current;
121
- if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {
122
- ReactDOM.flushSync(function () {
123
- return onChange(function (d) {
124
- return d + scrollDiff;
125
- });
126
- });
127
- }
128
- }
129
- requestAnimationFrame(function () {
130
- prevScrollTopRef.current = el.scrollTop;
131
- });
132
- }
133
- };
134
- }, [elements.floating, onChange, overflowRef, scrollRef]);
135
- return React.useMemo(function () {
136
- return enabled ? {
137
- floating
138
- } : {};
139
- }, [enabled, floating]);
36
+ var { open, elements } = context;
37
+ var { enabled = true, overflowRef, scrollRef, onChange: unstable_onChange } = props;
38
+ var onChange = (0, import_use_event.useEvent)(unstable_onChange);
39
+ var controlledScrollingRef = React.useRef(false);
40
+ var prevScrollTopRef = React.useRef(null);
41
+ var initialOverflowRef = React.useRef(null);
42
+ React.useEffect(function() {
43
+ if (!enabled) return;
44
+ function onWheel(e) {
45
+ if (e.ctrlKey || !el || overflowRef.current == null) {
46
+ return;
47
+ }
48
+ var dY = e.deltaY;
49
+ var isAtTop = overflowRef.current.top >= -.5;
50
+ var isAtBottom = overflowRef.current.bottom >= -.5;
51
+ var remainingScroll = el.scrollHeight - el.clientHeight;
52
+ var sign = dY < 0 ? -1 : 1;
53
+ var method = dY < 0 ? "max" : "min";
54
+ if (el.scrollHeight <= el.clientHeight) {
55
+ return;
56
+ }
57
+ if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {
58
+ e.preventDefault();
59
+ ReactDOM.flushSync(function() {
60
+ onChange(function(d) {
61
+ return d + Math[method](dY, remainingScroll * sign);
62
+ });
63
+ });
64
+ } else if (/firefox/i.test(navigator.userAgent)) {
65
+ el.scrollTop += dY;
66
+ }
67
+ }
68
+ var el = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || elements.floating;
69
+ if (open && el) {
70
+ el.addEventListener("wheel", onWheel);
71
+ requestAnimationFrame(function() {
72
+ prevScrollTopRef.current = el.scrollTop;
73
+ if (overflowRef.current != null) {
74
+ initialOverflowRef.current = { ...overflowRef.current };
75
+ }
76
+ });
77
+ return function() {
78
+ prevScrollTopRef.current = null;
79
+ initialOverflowRef.current = null;
80
+ el.removeEventListener("wheel", onWheel);
81
+ };
82
+ }
83
+ }, [
84
+ enabled,
85
+ open,
86
+ elements.floating,
87
+ overflowRef,
88
+ scrollRef,
89
+ onChange
90
+ ]);
91
+ var floating = React.useMemo(function() {
92
+ return {
93
+ onKeyDown() {
94
+ controlledScrollingRef.current = true;
95
+ },
96
+ onWheel() {
97
+ controlledScrollingRef.current = false;
98
+ },
99
+ onPointerMove() {
100
+ controlledScrollingRef.current = false;
101
+ },
102
+ onScroll() {
103
+ var el = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || elements.floating;
104
+ if (!overflowRef.current || !el || !controlledScrollingRef.current) {
105
+ return;
106
+ }
107
+ if (prevScrollTopRef.current !== null) {
108
+ var scrollDiff = el.scrollTop - prevScrollTopRef.current;
109
+ if (overflowRef.current.bottom < -.5 && scrollDiff < -1 || overflowRef.current.top < -.5 && scrollDiff > 1) {
110
+ ReactDOM.flushSync(function() {
111
+ return onChange(function(d) {
112
+ return d + scrollDiff;
113
+ });
114
+ });
115
+ }
116
+ }
117
+ requestAnimationFrame(function() {
118
+ prevScrollTopRef.current = el.scrollTop;
119
+ });
120
+ }
121
+ };
122
+ }, [
123
+ elements.floating,
124
+ onChange,
125
+ overflowRef,
126
+ scrollRef
127
+ ]);
128
+ return React.useMemo(function() {
129
+ return enabled ? { floating } : {};
130
+ }, [enabled, floating]);
140
131
  }
132
+
141
133
  //# sourceMappingURL=useInnerOffset.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useInnerOffset_exports","__export","useInnerOffset","module","exports","React","__toESM","require","ReactDOM","import_use_event","context","props","open","elements","enabled","overflowRef","scrollRef","onChange","unstable_onChange","useEvent","controlledScrollingRef","useRef","prevScrollTopRef","initialOverflowRef","useEffect","onWheel","e","ctrlKey","el","current","dY","deltaY","isAtTop","top","isAtBottom","bottom","remainingScroll","scrollHeight","clientHeight","sign","method","preventDefault","flushSync","d","Math","test","navigator","userAgent","scrollTop","floating","addEventListener","requestAnimationFrame","removeEventListener","useMemo","onKeyDown","onPointerMove","onScroll","scrollDiff"],"sources":["../../../src/interactions/useInnerOffset.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useInnerOffset.native.js","names":[],"sources":["cjs/interactions/useInnerOffset.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar useInnerOffset_exports = {};\n__export(useInnerOffset_exports, {\n useInnerOffset: () => useInnerOffset\n});\nmodule.exports = __toCommonJS(useInnerOffset_exports);\nvar React = __toESM(require(\"react\"), 1);\nvar ReactDOM = __toESM(require(\"react-dom\"), 1);\nvar import_use_event = require(\"@tamagui/use-event\");\nfunction useInnerOffset(context, props) {\n var { open, elements } = context;\n var { enabled = true, overflowRef, scrollRef, onChange: unstable_onChange } = props;\n var onChange = (0, import_use_event.useEvent)(unstable_onChange);\n var controlledScrollingRef = React.useRef(false);\n var prevScrollTopRef = React.useRef(null);\n var initialOverflowRef = React.useRef(null);\n React.useEffect(function() {\n if (!enabled) return;\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n var dY = e.deltaY;\n var isAtTop = overflowRef.current.top >= -0.5;\n var isAtBottom = overflowRef.current.bottom >= -0.5;\n var remainingScroll = el.scrollHeight - el.clientHeight;\n var sign = dY < 0 ? -1 : 1;\n var method = dY < 0 ? \"max\" : \"min\";\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n ReactDOM.flushSync(function() {\n onChange(function(d) {\n return d + Math[method](dY, remainingScroll * sign);\n });\n });\n } else if (/firefox/i.test(navigator.userAgent)) {\n el.scrollTop += dY;\n }\n }\n var el = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener(\"wheel\", onWheel);\n requestAnimationFrame(function() {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return function() {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener(\"wheel\", onWheel);\n };\n }\n }, [\n enabled,\n open,\n elements.floating,\n overflowRef,\n scrollRef,\n onChange\n ]);\n var floating = React.useMemo(function() {\n return {\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n var el = (scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n var scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n ReactDOM.flushSync(function() {\n return onChange(function(d) {\n return d + scrollDiff;\n });\n });\n }\n }\n requestAnimationFrame(function() {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n };\n }, [\n elements.floating,\n onChange,\n overflowRef,\n scrollRef\n ]);\n return React.useMemo(function() {\n return enabled ? {\n floating\n } : {};\n }, [\n enabled,\n floating\n ]);\n}\n//# sourceMappingURL=useInnerOffset.js.map\n"],"mappings":"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"}
@@ -3,103 +3,87 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
5
  var __export = (target, all) => {
6
- for (var name in all) __defProp(target, name, {
7
- get: all[name],
8
- enumerable: true
9
- });
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
10
  };
11
11
  var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
- get: () => from[key],
15
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
- });
17
- }
18
- return to;
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
19
  };
20
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
- value: true
22
- }), mod);
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
21
  var useInteractions_exports = {};
24
- __export(useInteractions_exports, {
25
- useInteractions: () => useInteractions
26
- });
22
+ __export(useInteractions_exports, { useInteractions: () => useInteractions });
27
23
  module.exports = __toCommonJS(useInteractions_exports);
24
+ var import_react = require("react");
28
25
  function useInteractions(propsList) {
29
- const filtered = propsList.filter(Boolean);
30
- const referenceFns = /* @__PURE__ */new Map();
31
- const floatingFns = /* @__PURE__ */new Map();
32
- const itemFns = /* @__PURE__ */new Map();
33
- const referenceStatic = {};
34
- const floatingStatic = {};
35
- for (const props of filtered) {
36
- if (props.reference) {
37
- collectProps(props.reference, referenceFns, referenceStatic);
38
- }
39
- if (props.floating) {
40
- collectProps(props.floating, floatingFns, floatingStatic);
41
- }
42
- if (props.item && typeof props.item === "object") {
43
- collectProps(props.item, itemFns, {});
44
- }
45
- }
46
- return {
47
- getReferenceProps(userProps) {
48
- return buildProps(referenceFns, referenceStatic, userProps);
49
- },
50
- getFloatingProps(userProps) {
51
- return buildProps(floatingFns, floatingStatic, userProps);
52
- },
53
- getItemProps(userProps) {
54
- return buildProps(itemFns, {}, userProps);
55
- }
56
- };
26
+ const referenceDeps = propsList.map((props) => props?.reference);
27
+ const floatingDeps = propsList.map((props) => props?.floating);
28
+ const itemDeps = propsList.map((props) => props?.item);
29
+ const getReferenceProps = (0, import_react.useCallback)((userProps) => mergeProps(referenceDeps, userProps), referenceDeps);
30
+ const getFloatingProps = (0, import_react.useCallback)((userProps) => mergeProps(floatingDeps, userProps), floatingDeps);
31
+ const getItemProps = (0, import_react.useCallback)((userProps) => mergeProps(itemDeps, userProps, true), itemDeps);
32
+ return (0, import_react.useMemo)(() => ({
33
+ getReferenceProps,
34
+ getFloatingProps,
35
+ getItemProps
36
+ }), [
37
+ getReferenceProps,
38
+ getFloatingProps,
39
+ getItemProps
40
+ ]);
57
41
  }
58
- function collectProps(props, fnMap, staticMap) {
59
- for (const key of Object.keys(props)) {
60
- if (typeof props[key] === "function") {
61
- let arr = fnMap.get(key);
62
- if (!arr) {
63
- arr = [];
64
- fnMap.set(key, arr);
65
- }
66
- arr.push(props[key]);
67
- } else {
68
- staticMap[key] = props[key];
69
- }
70
- }
42
+ function mergeProps(list, userProps, objectsOnly = false) {
43
+ const fnMap = /* @__PURE__ */ new Map();
44
+ const result = {};
45
+ for (const props of list) {
46
+ if (!props || objectsOnly && typeof props !== "object") continue;
47
+ for (const key of Object.keys(props)) {
48
+ const value = props[key];
49
+ if (typeof value === "function") {
50
+ let arr = fnMap.get(key);
51
+ if (!arr) {
52
+ arr = [];
53
+ fnMap.set(key, arr);
54
+ }
55
+ arr.push(value);
56
+ } else {
57
+ result[key] = value;
58
+ }
59
+ }
60
+ }
61
+ for (const [key, fns] of fnMap) {
62
+ result[key] = (...args) => {
63
+ for (const fn of fns) {
64
+ const out = fn(...args);
65
+ if (out !== void 0) return out;
66
+ }
67
+ };
68
+ }
69
+ if (userProps) {
70
+ for (const key of Object.keys(userProps)) {
71
+ if (key === "style") {
72
+ result.style = {
73
+ ...result.style,
74
+ ...userProps.style
75
+ };
76
+ } else if (typeof userProps[key] === "function" && result[key]) {
77
+ const hookFn = result[key];
78
+ const userFn = userProps[key];
79
+ result[key] = (...args) => {
80
+ userFn(...args);
81
+ hookFn(...args);
82
+ };
83
+ } else {
84
+ result[key] = userProps[key];
85
+ }
86
+ }
87
+ }
88
+ return result;
71
89
  }
72
- function buildProps(fnMap, staticProps, userProps) {
73
- const result = {
74
- ...staticProps
75
- };
76
- for (const [key, fns] of fnMap) {
77
- const hookHandler = (...args) => {
78
- for (const fn of fns) {
79
- const result2 = fn(...args);
80
- if (result2 !== void 0) return result2;
81
- }
82
- };
83
- result[key] = hookHandler;
84
- }
85
- if (userProps) {
86
- for (const key of Object.keys(userProps)) {
87
- if (key === "style") {
88
- result.style = {
89
- ...result.style,
90
- ...userProps.style
91
- };
92
- } else if (typeof userProps[key] === "function" && result[key]) {
93
- const hookFn = result[key];
94
- const userFn = userProps[key];
95
- result[key] = (...args) => {
96
- userFn(...args);
97
- hookFn(...args);
98
- };
99
- } else {
100
- result[key] = userProps[key];
101
- }
102
- }
103
- }
104
- return result;
105
- }