@tamagui/floating 3.0.0-beta.924.1 → 3.0.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 (37) hide show
  1. package/dist/cjs/interactions/useInteractions.cjs +35 -45
  2. package/dist/cjs/interactions/useInteractions.native.cjs +101 -100
  3. package/dist/cjs/interactions/useInteractions.native.js +101 -100
  4. package/dist/cjs/interactions/useInteractions.native.js.map +1 -1
  5. package/dist/cjs/interactions/useListNavigation.cjs +4 -3
  6. package/dist/cjs/interactions/useListNavigation.native.cjs +5 -4
  7. package/dist/cjs/interactions/useListNavigation.native.js +5 -4
  8. package/dist/cjs/interactions/useListNavigation.native.js.map +1 -1
  9. package/dist/cjs/interactions/utils.native.cjs +3 -10
  10. package/dist/cjs/interactions/utils.native.js +3 -10
  11. package/dist/cjs/interactions/utils.native.js.map +1 -1
  12. package/dist/cjs/middleware/inner.cjs +5 -3
  13. package/dist/cjs/middleware/inner.native.cjs +10 -7
  14. package/dist/cjs/middleware/inner.native.js +10 -7
  15. package/dist/cjs/middleware/inner.native.js.map +1 -1
  16. package/dist/esm/interactions/useInteractions.mjs +36 -45
  17. package/dist/esm/interactions/useInteractions.mjs.map +1 -1
  18. package/dist/esm/interactions/useInteractions.native.js +102 -100
  19. package/dist/esm/interactions/useInteractions.native.js.map +1 -1
  20. package/dist/esm/interactions/useListNavigation.mjs +4 -3
  21. package/dist/esm/interactions/useListNavigation.mjs.map +1 -1
  22. package/dist/esm/interactions/useListNavigation.native.js +5 -4
  23. package/dist/esm/interactions/useListNavigation.native.js.map +1 -1
  24. package/dist/esm/interactions/utils.native.js +3 -10
  25. package/dist/esm/interactions/utils.native.js.map +1 -1
  26. package/dist/esm/middleware/inner.mjs +5 -3
  27. package/dist/esm/middleware/inner.mjs.map +1 -1
  28. package/dist/esm/middleware/inner.native.js +10 -7
  29. package/dist/esm/middleware/inner.native.js.map +1 -1
  30. package/package.json +7 -5
  31. package/src/interactions/useInteractions.ts +61 -59
  32. package/src/interactions/useListNavigation.ts +7 -2
  33. package/src/middleware/inner.ts +20 -9
  34. package/types/interactions/useInteractions.d.ts +3 -3
  35. package/types/interactions/useInteractions.d.ts.map +1 -1
  36. package/types/interactions/useListNavigation.d.ts.map +1 -1
  37. package/types/middleware/inner.d.ts.map +1 -1
@@ -1,57 +1,48 @@
1
+ import { useCallback, useMemo } from "react";
2
+
1
3
  function useInteractions(propsList) {
2
- const filtered = propsList.filter(Boolean);
3
- const referenceFns = /* @__PURE__ */ new Map();
4
- const floatingFns = /* @__PURE__ */ new Map();
5
- const itemFns = /* @__PURE__ */ new Map();
6
- const referenceStatic = {};
7
- const floatingStatic = {};
8
- for (const props of filtered) {
9
- if (props.reference) {
10
- collectProps(props.reference, referenceFns, referenceStatic);
11
- }
12
- if (props.floating) {
13
- collectProps(props.floating, floatingFns, floatingStatic);
14
- }
15
- if (props.item && typeof props.item === "object") {
16
- collectProps(props.item, itemFns, {});
17
- }
18
- }
19
- return {
20
- getReferenceProps(userProps) {
21
- return buildProps(referenceFns, referenceStatic, userProps);
22
- },
23
- getFloatingProps(userProps) {
24
- return buildProps(floatingFns, floatingStatic, userProps);
25
- },
26
- getItemProps(userProps) {
27
- return buildProps(itemFns, {}, userProps);
28
- }
29
- };
4
+ const referenceDeps = propsList.map((props) => props?.reference);
5
+ const floatingDeps = propsList.map((props) => props?.floating);
6
+ const itemDeps = propsList.map((props) => props?.item);
7
+ const getReferenceProps = useCallback((userProps) => mergeProps(referenceDeps, userProps), referenceDeps);
8
+ const getFloatingProps = useCallback((userProps) => mergeProps(floatingDeps, userProps), floatingDeps);
9
+ const getItemProps = useCallback((userProps) => mergeProps(itemDeps, userProps, true), itemDeps);
10
+ return useMemo(() => ({
11
+ getReferenceProps,
12
+ getFloatingProps,
13
+ getItemProps
14
+ }), [
15
+ getReferenceProps,
16
+ getFloatingProps,
17
+ getItemProps
18
+ ]);
30
19
  }
31
- function collectProps(props, fnMap, staticMap) {
32
- for (const key of Object.keys(props)) {
33
- if (typeof props[key] === "function") {
34
- let arr = fnMap.get(key);
35
- if (!arr) {
36
- arr = [];
37
- fnMap.set(key, arr);
20
+ function mergeProps(list, userProps, objectsOnly = false) {
21
+ const fnMap = /* @__PURE__ */ new Map();
22
+ const result = {};
23
+ for (const props of list) {
24
+ if (!props || objectsOnly && typeof props !== "object") continue;
25
+ for (const key of Object.keys(props)) {
26
+ const value = props[key];
27
+ if (typeof value === "function") {
28
+ let arr = fnMap.get(key);
29
+ if (!arr) {
30
+ arr = [];
31
+ fnMap.set(key, arr);
32
+ }
33
+ arr.push(value);
34
+ } else {
35
+ result[key] = value;
38
36
  }
39
- arr.push(props[key]);
40
- } else {
41
- staticMap[key] = props[key];
42
37
  }
43
38
  }
44
- }
45
- function buildProps(fnMap, staticProps, userProps) {
46
- const result = { ...staticProps };
47
39
  for (const [key, fns] of fnMap) {
48
- const hookHandler = (...args) => {
40
+ result[key] = (...args) => {
49
41
  for (const fn of fns) {
50
- const result2 = fn(...args);
51
- if (result2 !== void 0) return result2;
42
+ const out = fn(...args);
43
+ if (out !== void 0) return out;
52
44
  }
53
45
  };
54
- result[key] = hookHandler;
55
46
  }
56
47
  if (userProps) {
57
48
  for (const key of Object.keys(userProps)) {
@@ -1 +1 @@
1
- {"version":3,"file":"useInteractions.js","names":[],"sources":["esm/interactions/useInteractions.js"],"sourcesContent":["function useInteractions(propsList) {\n const filtered = propsList.filter(Boolean);\n const referenceFns = /* @__PURE__ */ new Map();\n const floatingFns = /* @__PURE__ */ new Map();\n const itemFns = /* @__PURE__ */ new Map();\n const referenceStatic = {};\n const floatingStatic = {};\n for (const props of filtered) {\n if (props.reference) {\n collectProps(props.reference, referenceFns, referenceStatic);\n }\n if (props.floating) {\n collectProps(props.floating, floatingFns, floatingStatic);\n }\n if (props.item && typeof props.item === \"object\") {\n collectProps(props.item, itemFns, {});\n }\n }\n return {\n getReferenceProps(userProps) {\n return buildProps(referenceFns, referenceStatic, userProps);\n },\n getFloatingProps(userProps) {\n return buildProps(floatingFns, floatingStatic, userProps);\n },\n getItemProps(userProps) {\n return buildProps(itemFns, {}, userProps);\n }\n };\n}\nfunction collectProps(props, fnMap, staticMap) {\n for (const key of Object.keys(props)) {\n if (typeof props[key] === \"function\") {\n let arr = fnMap.get(key);\n if (!arr) {\n arr = [];\n fnMap.set(key, arr);\n }\n arr.push(props[key]);\n } else {\n staticMap[key] = props[key];\n }\n }\n}\nfunction buildProps(fnMap, staticProps, userProps) {\n const result = { ...staticProps };\n for (const [key, fns] of fnMap) {\n const hookHandler = (...args) => {\n for (const fn of fns) {\n const result2 = fn(...args);\n if (result2 !== void 0) return result2;\n }\n };\n result[key] = hookHandler;\n }\n if (userProps) {\n for (const key of Object.keys(userProps)) {\n if (key === \"style\") {\n result.style = { ...result.style, ...userProps.style };\n } else if (typeof userProps[key] === \"function\" && result[key]) {\n const hookFn = result[key];\n const userFn = userProps[key];\n result[key] = (...args) => {\n userFn(...args);\n hookFn(...args);\n };\n } else {\n result[key] = userProps[key];\n }\n }\n }\n return result;\n}\nexport {\n useInteractions\n};\n//# sourceMappingURL=useInteractions.js.map\n"],"mappings":";AAAA,SAAS,gBAAgB,WAAW;CAClC,MAAM,WAAW,UAAU,OAAO,OAAO;CACzC,MAAM,+BAA+B,IAAI,IAAI;CAC7C,MAAM,8BAA8B,IAAI,IAAI;CAC5C,MAAM,0BAA0B,IAAI,IAAI;CACxC,MAAM,kBAAkB,CAAC;CACzB,MAAM,iBAAiB,CAAC;CACxB,KAAK,MAAM,SAAS,UAAU;EAC5B,IAAI,MAAM,WAAW;GACnB,aAAa,MAAM,WAAW,cAAc,eAAe;EAC7D;EACA,IAAI,MAAM,UAAU;GAClB,aAAa,MAAM,UAAU,aAAa,cAAc;EAC1D;EACA,IAAI,MAAM,QAAQ,OAAO,MAAM,SAAS,UAAU;GAChD,aAAa,MAAM,MAAM,SAAS,CAAC,CAAC;EACtC;CACF;CACA,OAAO;EACL,kBAAkB,WAAW;GAC3B,OAAO,WAAW,cAAc,iBAAiB,SAAS;EAC5D;EACA,iBAAiB,WAAW;GAC1B,OAAO,WAAW,aAAa,gBAAgB,SAAS;EAC1D;EACA,aAAa,WAAW;GACtB,OAAO,WAAW,SAAS,CAAC,GAAG,SAAS;EAC1C;CACF;AACF;AACA,SAAS,aAAa,OAAO,OAAO,WAAW;CAC7C,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;EACpC,IAAI,OAAO,MAAM,SAAS,YAAY;GACpC,IAAI,MAAM,MAAM,IAAI,GAAG;GACvB,IAAI,CAAC,KAAK;IACR,MAAM,CAAC;IACP,MAAM,IAAI,KAAK,GAAG;GACpB;GACA,IAAI,KAAK,MAAM,IAAI;EACrB,OAAO;GACL,UAAU,OAAO,MAAM;EACzB;CACF;AACF;AACA,SAAS,WAAW,OAAO,aAAa,WAAW;CACjD,MAAM,SAAS,EAAE,GAAG,YAAY;CAChC,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO;EAC9B,MAAM,eAAe,GAAG,SAAS;GAC/B,KAAK,MAAM,MAAM,KAAK;IACpB,MAAM,UAAU,GAAG,GAAG,IAAI;IAC1B,IAAI,YAAY,KAAK,GAAG,OAAO;GACjC;EACF;EACA,OAAO,OAAO;CAChB;CACA,IAAI,WAAW;EACb,KAAK,MAAM,OAAO,OAAO,KAAK,SAAS,GAAG;GACxC,IAAI,QAAQ,SAAS;IACnB,OAAO,QAAQ;KAAE,GAAG,OAAO;KAAO,GAAG,UAAU;IAAM;GACvD,OAAO,IAAI,OAAO,UAAU,SAAS,cAAc,OAAO,MAAM;IAC9D,MAAM,SAAS,OAAO;IACtB,MAAM,SAAS,UAAU;IACzB,OAAO,QAAQ,GAAG,SAAS;KACzB,OAAO,GAAG,IAAI;KACd,OAAO,GAAG,IAAI;IAChB;GACF,OAAO;IACL,OAAO,OAAO,UAAU;GAC1B;EACF;CACF;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"useInteractions.js","names":[],"sources":["esm/interactions/useInteractions.js"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nfunction useInteractions(propsList) {\n const referenceDeps = propsList.map((props) => props?.reference);\n const floatingDeps = propsList.map((props) => props?.floating);\n const itemDeps = propsList.map((props) => props?.item);\n const getReferenceProps = useCallback(\n (userProps) => mergeProps(referenceDeps, userProps),\n referenceDeps\n );\n const getFloatingProps = useCallback(\n (userProps) => mergeProps(floatingDeps, userProps),\n floatingDeps\n );\n const getItemProps = useCallback(\n (userProps) => mergeProps(itemDeps, userProps, true),\n itemDeps\n );\n return useMemo(\n () => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }),\n [getReferenceProps, getFloatingProps, getItemProps]\n );\n}\nfunction mergeProps(list, userProps, objectsOnly = false) {\n const fnMap = /* @__PURE__ */ new Map();\n const result = {};\n for (const props of list) {\n if (!props || objectsOnly && typeof props !== \"object\") continue;\n for (const key of Object.keys(props)) {\n const value = props[key];\n if (typeof value === \"function\") {\n let arr = fnMap.get(key);\n if (!arr) {\n arr = [];\n fnMap.set(key, arr);\n }\n arr.push(value);\n } else {\n result[key] = value;\n }\n }\n }\n for (const [key, fns] of fnMap) {\n result[key] = (...args) => {\n for (const fn of fns) {\n const out = fn(...args);\n if (out !== void 0) return out;\n }\n };\n }\n if (userProps) {\n for (const key of Object.keys(userProps)) {\n if (key === \"style\") {\n result.style = { ...result.style, ...userProps.style };\n } else if (typeof userProps[key] === \"function\" && result[key]) {\n const hookFn = result[key];\n const userFn = userProps[key];\n result[key] = (...args) => {\n userFn(...args);\n hookFn(...args);\n };\n } else {\n result[key] = userProps[key];\n }\n }\n }\n return result;\n}\nexport {\n useInteractions\n};\n//# sourceMappingURL=useInteractions.js.map\n"],"mappings":";;;AACA,SAAS,gBAAgB,WAAW;CAClC,MAAM,gBAAgB,UAAU,KAAK,UAAU,OAAO,SAAS;CAC/D,MAAM,eAAe,UAAU,KAAK,UAAU,OAAO,QAAQ;CAC7D,MAAM,WAAW,UAAU,KAAK,UAAU,OAAO,IAAI;CACrD,MAAM,oBAAoB,aACvB,cAAc,WAAW,eAAe,SAAS,GAClD,aACF;CACA,MAAM,mBAAmB,aACtB,cAAc,WAAW,cAAc,SAAS,GACjD,YACF;CACA,MAAM,eAAe,aAClB,cAAc,WAAW,UAAU,WAAW,IAAI,GACnD,QACF;CACA,OAAO,eACE;EACL;EACA;EACA;CACF,IACA;EAAC;EAAmB;EAAkB;CAAY,CACpD;AACF;AACA,SAAS,WAAW,MAAM,WAAW,cAAc,OAAO;CACxD,MAAM,wBAAwB,IAAI,IAAI;CACtC,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,SAAS,MAAM;EACxB,IAAI,CAAC,SAAS,eAAe,OAAO,UAAU,UAAU;EACxD,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;GACpC,MAAM,QAAQ,MAAM;GACpB,IAAI,OAAO,UAAU,YAAY;IAC/B,IAAI,MAAM,MAAM,IAAI,GAAG;IACvB,IAAI,CAAC,KAAK;KACR,MAAM,CAAC;KACP,MAAM,IAAI,KAAK,GAAG;IACpB;IACA,IAAI,KAAK,KAAK;GAChB,OAAO;IACL,OAAO,OAAO;GAChB;EACF;CACF;CACA,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO;EAC9B,OAAO,QAAQ,GAAG,SAAS;GACzB,KAAK,MAAM,MAAM,KAAK;IACpB,MAAM,MAAM,GAAG,GAAG,IAAI;IACtB,IAAI,QAAQ,KAAK,GAAG,OAAO;GAC7B;EACF;CACF;CACA,IAAI,WAAW;EACb,KAAK,MAAM,OAAO,OAAO,KAAK,SAAS,GAAG;GACxC,IAAI,QAAQ,SAAS;IACnB,OAAO,QAAQ;KAAE,GAAG,OAAO;KAAO,GAAG,UAAU;IAAM;GACvD,OAAO,IAAI,OAAO,UAAU,SAAS,cAAc,OAAO,MAAM;IAC9D,MAAM,SAAS,OAAO;IACtB,MAAM,SAAS,UAAU;IACzB,OAAO,QAAQ,GAAG,SAAS;KACzB,OAAO,GAAG,IAAI;KACd,OAAO,GAAG,IAAI;IAChB;GACF,OAAO;IACL,OAAO,OAAO,UAAU;GAC1B;EACF;CACF;CACA,OAAO;AACT"}
@@ -1,68 +1,74 @@
1
- function _type_of(obj) {
2
- "@swc/helpers - typeof";
3
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
4
- }
1
+ import { useCallback, useMemo } from "react";
2
+
5
3
  function useInteractions(propsList) {
6
- var filtered = propsList.filter(Boolean);
7
- var referenceFns = /* @__PURE__ */ new Map();
8
- var floatingFns = /* @__PURE__ */ new Map();
9
- var itemFns = /* @__PURE__ */ new Map();
10
- var referenceStatic = {};
11
- var floatingStatic = {};
12
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
13
- try {
14
- for (var _iterator = filtered[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
15
- var props = _step.value;
16
- if (props.reference) {
17
- collectProps(props.reference, referenceFns, referenceStatic);
18
- }
19
- if (props.floating) {
20
- collectProps(props.floating, floatingFns, floatingStatic);
21
- }
22
- if (props.item && _type_of(props.item) === "object") {
23
- collectProps(props.item, itemFns, {});
24
- }
25
- }
26
- } catch (err) {
27
- _didIteratorError = true;
28
- _iteratorError = err;
29
- } finally {
30
- try {
31
- if (!_iteratorNormalCompletion && _iterator.return != null) {
32
- _iterator.return();
33
- }
34
- } finally {
35
- if (_didIteratorError) {
36
- throw _iteratorError;
37
- }
38
- }
39
- }
40
- return {
41
- getReferenceProps(userProps) {
42
- return buildProps(referenceFns, referenceStatic, userProps);
43
- },
44
- getFloatingProps(userProps) {
45
- return buildProps(floatingFns, floatingStatic, userProps);
46
- },
47
- getItemProps(userProps) {
48
- return buildProps(itemFns, {}, userProps);
49
- }
50
- };
4
+ var referenceDeps = propsList.map(function(props) {
5
+ return props === null || props === void 0 ? void 0 : props.reference;
6
+ });
7
+ var floatingDeps = propsList.map(function(props) {
8
+ return props === null || props === void 0 ? void 0 : props.floating;
9
+ });
10
+ var itemDeps = propsList.map(function(props) {
11
+ return props === null || props === void 0 ? void 0 : props.item;
12
+ });
13
+ var getReferenceProps = useCallback(function(userProps) {
14
+ return mergeProps(referenceDeps, userProps);
15
+ }, referenceDeps);
16
+ var getFloatingProps = useCallback(function(userProps) {
17
+ return mergeProps(floatingDeps, userProps);
18
+ }, floatingDeps);
19
+ var getItemProps = useCallback(function(userProps) {
20
+ return mergeProps(itemDeps, userProps, true);
21
+ }, itemDeps);
22
+ return useMemo(function() {
23
+ return {
24
+ getReferenceProps,
25
+ getFloatingProps,
26
+ getItemProps
27
+ };
28
+ }, [
29
+ getReferenceProps,
30
+ getFloatingProps,
31
+ getItemProps
32
+ ]);
51
33
  }
52
- function collectProps(props, fnMap, staticMap) {
34
+ function mergeProps(list, userProps) {
35
+ var objectsOnly = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
36
+ var fnMap = /* @__PURE__ */ new Map();
37
+ var result = {};
53
38
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
54
39
  try {
55
- for (var _iterator = Object.keys(props)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
56
- var key = _step.value;
57
- if (typeof props[key] === "function") {
58
- var arr = fnMap.get(key);
59
- if (!arr) {
60
- arr = [];
61
- fnMap.set(key, arr);
40
+ for (var _iterator = list[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
41
+ var props = _step.value;
42
+ if (!props || objectsOnly && typeof props !== "object") continue;
43
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
44
+ try {
45
+ for (var _iterator1 = Object.keys(props)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
46
+ var key = _step1.value;
47
+ var value = props[key];
48
+ if (typeof value === "function") {
49
+ var arr = fnMap.get(key);
50
+ if (!arr) {
51
+ arr = [];
52
+ fnMap.set(key, arr);
53
+ }
54
+ arr.push(value);
55
+ } else {
56
+ result[key] = value;
57
+ }
58
+ }
59
+ } catch (err) {
60
+ _didIteratorError1 = true;
61
+ _iteratorError1 = err;
62
+ } finally {
63
+ try {
64
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
65
+ _iterator1.return();
66
+ }
67
+ } finally {
68
+ if (_didIteratorError1) {
69
+ throw _iteratorError1;
70
+ }
62
71
  }
63
- arr.push(props[key]);
64
- } else {
65
- staticMap[key] = props[key];
66
72
  }
67
73
  }
68
74
  } catch (err) {
@@ -79,70 +85,66 @@ function collectProps(props, fnMap, staticMap) {
79
85
  }
80
86
  }
81
87
  }
82
- }
83
- function buildProps(fnMap, staticProps, userProps) {
84
- var result = { ...staticProps };
85
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
88
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
86
89
  try {
87
90
  var _loop = function() {
88
- var [key, fns] = _step.value;
89
- var hookHandler = function() {
91
+ var [key2, fns] = _step2.value;
92
+ result[key2] = function() {
90
93
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
91
94
  args[_key] = arguments[_key];
92
95
  }
93
- var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
96
+ var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;
94
97
  try {
95
- for (var _iterator2 = fns[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
96
- var fn = _step2.value;
97
- var result2 = fn(...args);
98
- if (result2 !== void 0) return result2;
98
+ for (var _iterator4 = fns[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
99
+ var fn = _step4.value;
100
+ var out = fn(...args);
101
+ if (out !== void 0) return out;
99
102
  }
100
103
  } catch (err) {
101
- _didIteratorError2 = true;
102
- _iteratorError2 = err;
104
+ _didIteratorError4 = true;
105
+ _iteratorError4 = err;
103
106
  } finally {
104
107
  try {
105
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
106
- _iterator2.return();
108
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
109
+ _iterator4.return();
107
110
  }
108
111
  } finally {
109
- if (_didIteratorError2) {
110
- throw _iteratorError2;
112
+ if (_didIteratorError4) {
113
+ throw _iteratorError4;
111
114
  }
112
115
  }
113
116
  }
114
117
  };
115
- result[key] = hookHandler;
116
118
  };
117
- for (var _iterator = fnMap[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
119
+ for (var _iterator2 = fnMap[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) _loop();
118
120
  } catch (err) {
119
- _didIteratorError = true;
120
- _iteratorError = err;
121
+ _didIteratorError2 = true;
122
+ _iteratorError2 = err;
121
123
  } finally {
122
124
  try {
123
- if (!_iteratorNormalCompletion && _iterator.return != null) {
124
- _iterator.return();
125
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
126
+ _iterator2.return();
125
127
  }
126
128
  } finally {
127
- if (_didIteratorError) {
128
- throw _iteratorError;
129
+ if (_didIteratorError2) {
130
+ throw _iteratorError2;
129
131
  }
130
132
  }
131
133
  }
132
134
  if (userProps) {
133
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
135
+ var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;
134
136
  try {
135
137
  var _loop1 = function() {
136
- var key = _step1.value;
137
- if (key === "style") {
138
+ var key2 = _step3.value;
139
+ if (key2 === "style") {
138
140
  result.style = {
139
141
  ...result.style,
140
142
  ...userProps.style
141
143
  };
142
- } else if (typeof userProps[key] === "function" && result[key]) {
143
- var hookFn = result[key];
144
- var userFn = userProps[key];
145
- result[key] = function() {
144
+ } else if (typeof userProps[key2] === "function" && result[key2]) {
145
+ var hookFn = result[key2];
146
+ var userFn = userProps[key2];
147
+ result[key2] = function() {
146
148
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
147
149
  args[_key] = arguments[_key];
148
150
  }
@@ -150,21 +152,21 @@ function buildProps(fnMap, staticProps, userProps) {
150
152
  hookFn(...args);
151
153
  };
152
154
  } else {
153
- result[key] = userProps[key];
155
+ result[key2] = userProps[key2];
154
156
  }
155
157
  };
156
- for (var _iterator1 = Object.keys(userProps)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop1();
158
+ for (var _iterator3 = Object.keys(userProps)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) _loop1();
157
159
  } catch (err) {
158
- _didIteratorError1 = true;
159
- _iteratorError1 = err;
160
+ _didIteratorError3 = true;
161
+ _iteratorError3 = err;
160
162
  } finally {
161
163
  try {
162
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
163
- _iterator1.return();
164
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
165
+ _iterator3.return();
164
166
  }
165
167
  } finally {
166
- if (_didIteratorError1) {
167
- throw _iteratorError1;
168
+ if (_didIteratorError3) {
169
+ throw _iteratorError3;
168
170
  }
169
171
  }
170
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useInteractions.native.js","names":[],"sources":["esm/interactions/useInteractions.native.js"],"sourcesContent":["function _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction useInteractions(propsList) {\n var filtered = propsList.filter(Boolean);\n var referenceFns = /* @__PURE__ */ new Map();\n var floatingFns = /* @__PURE__ */ new Map();\n var itemFns = /* @__PURE__ */ new Map();\n var referenceStatic = {};\n var floatingStatic = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = filtered[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var props = _step.value;\n if (props.reference) {\n collectProps(props.reference, referenceFns, referenceStatic);\n }\n if (props.floating) {\n collectProps(props.floating, floatingFns, floatingStatic);\n }\n if (props.item && _type_of(props.item) === \"object\") {\n collectProps(props.item, itemFns, {});\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return {\n getReferenceProps(userProps) {\n return buildProps(referenceFns, referenceStatic, userProps);\n },\n getFloatingProps(userProps) {\n return buildProps(floatingFns, floatingStatic, userProps);\n },\n getItemProps(userProps) {\n return buildProps(itemFns, {}, userProps);\n }\n };\n}\nfunction collectProps(props, fnMap, staticMap) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Object.keys(props)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n if (typeof props[key] === \"function\") {\n var arr = fnMap.get(key);\n if (!arr) {\n arr = [];\n fnMap.set(key, arr);\n }\n arr.push(props[key]);\n } else {\n staticMap[key] = props[key];\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nfunction buildProps(fnMap, staticProps, userProps) {\n var result = {\n ...staticProps\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n var _loop = function() {\n var [key, fns] = _step.value;\n var hookHandler = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = fns[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var fn = _step2.value;\n var result2 = fn(...args);\n if (result2 !== void 0) return result2;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n };\n result[key] = hookHandler;\n };\n for (var _iterator = fnMap[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (userProps) {\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n var _loop1 = function() {\n var key = _step1.value;\n if (key === \"style\") {\n result.style = {\n ...result.style,\n ...userProps.style\n };\n } else if (typeof userProps[key] === \"function\" && result[key]) {\n var hookFn = result[key];\n var userFn = userProps[key];\n result[key] = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n userFn(...args);\n hookFn(...args);\n };\n } else {\n result[key] = userProps[key];\n }\n };\n for (var _iterator1 = Object.keys(userProps)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) _loop1();\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n return result;\n}\nexport {\n useInteractions\n};\n//# sourceMappingURL=useInteractions.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"useInteractions.native.js","names":[],"sources":["esm/interactions/useInteractions.native.js"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nfunction useInteractions(propsList) {\n var referenceDeps = propsList.map(function(props) {\n return props === null || props === void 0 ? void 0 : props.reference;\n });\n var floatingDeps = propsList.map(function(props) {\n return props === null || props === void 0 ? void 0 : props.floating;\n });\n var itemDeps = propsList.map(function(props) {\n return props === null || props === void 0 ? void 0 : props.item;\n });\n var getReferenceProps = useCallback(function(userProps) {\n return mergeProps(referenceDeps, userProps);\n }, referenceDeps);\n var getFloatingProps = useCallback(function(userProps) {\n return mergeProps(floatingDeps, userProps);\n }, floatingDeps);\n var getItemProps = useCallback(function(userProps) {\n return mergeProps(itemDeps, userProps, true);\n }, itemDeps);\n return useMemo(function() {\n return {\n getReferenceProps,\n getFloatingProps,\n getItemProps\n };\n }, [\n getReferenceProps,\n getFloatingProps,\n getItemProps\n ]);\n}\nfunction mergeProps(list, userProps) {\n var objectsOnly = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var fnMap = /* @__PURE__ */ new Map();\n var result = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = list[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var props = _step.value;\n if (!props || objectsOnly && typeof props !== \"object\") continue;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = Object.keys(props)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var key = _step1.value;\n var value = props[key];\n if (typeof value === \"function\") {\n var arr = fnMap.get(key);\n if (!arr) {\n arr = [];\n fnMap.set(key, arr);\n }\n arr.push(value);\n } else {\n result[key] = value;\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n var _loop = function() {\n var [key2, fns] = _step2.value;\n result[key2] = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = void 0;\n try {\n for (var _iterator4 = fns[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var fn = _step4.value;\n var out = fn(...args);\n if (out !== void 0) return out;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n };\n };\n for (var _iterator2 = fnMap[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) _loop();\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n if (userProps) {\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n var _loop1 = function() {\n var key2 = _step3.value;\n if (key2 === \"style\") {\n result.style = {\n ...result.style,\n ...userProps.style\n };\n } else if (typeof userProps[key2] === \"function\" && result[key2]) {\n var hookFn = result[key2];\n var userFn = userProps[key2];\n result[key2] = function() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n userFn(...args);\n hookFn(...args);\n };\n } else {\n result[key2] = userProps[key2];\n }\n };\n for (var _iterator3 = Object.keys(userProps)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) _loop1();\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n return result;\n}\nexport {\n useInteractions\n};\n//# sourceMappingURL=useInteractions.js.map\n"],"mappings":"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"}
@@ -350,6 +350,8 @@ function useListNavigation(context, props) {
350
350
  selectedIndex,
351
351
  virtual
352
352
  ]);
353
+ const floatingRef = useRef(elements.floating);
354
+ floatingRef.current = elements.floating;
353
355
  const item = useMemo(() => {
354
356
  function syncCurrentTarget(currentTarget) {
355
357
  if (!latestOpenRef.current) return;
@@ -383,7 +385,7 @@ function useListNavigation(context, props) {
383
385
  indexRef.current = -1;
384
386
  onNavigate();
385
387
  if (!virtual) {
386
- elements.floating?.focus({ preventScroll: true });
388
+ floatingRef.current?.focus({ preventScroll: true });
387
389
  }
388
390
  }
389
391
  };
@@ -393,8 +395,7 @@ function useListNavigation(context, props) {
393
395
  focusItemOnHover,
394
396
  listRef,
395
397
  onNavigate,
396
- virtual,
397
- elements.floating
398
+ virtual
398
399
  ]);
399
400
  return useMemo(() => enabled ? {
400
401
  reference,
@@ -1 +1 @@
1
- {"version":3,"file":"useListNavigation.js","names":[],"sources":["esm/interactions/useListNavigation.js"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { useEvent } from \"@tamagui/use-event\";\nimport {\n activeElement,\n enqueueFocus,\n findNonDisabledListIndex,\n getMinListIndex,\n getMaxListIndex,\n isHTMLElement,\n isIndexOutOfListBounds,\n isTypeableCombobox,\n isVirtualClick,\n isVirtualPointerEvent,\n stopEvent\n} from \"./utils\";\nconst ARROW_UP = \"ArrowUp\";\nconst ARROW_DOWN = \"ArrowDown\";\nconst ARROW_LEFT = \"ArrowLeft\";\nconst ARROW_RIGHT = \"ArrowRight\";\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case \"vertical\":\n return vertical;\n case \"horizontal\":\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === \"Enter\" || key === \" \" || key === \"\";\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction useListNavigation(context, props) {\n const { open, onOpenChange, elements } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {\n },\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = \"auto\",\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = void 0,\n orientation = \"vertical\",\n scrollItemIntoView = true\n } = props;\n const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n const focusItemOnOpenRef = useRef(focusItemOnOpen);\n const indexRef = useRef(selectedIndex ?? -1);\n const keyRef = useRef(null);\n const isPointerModalityRef = useRef(true);\n const previousMountedRef = useRef(!!elements.floating);\n const previousOpenRef = useRef(open);\n const forceSyncFocusRef = useRef(false);\n const forceScrollIntoViewRef = useRef(false);\n const disabledIndicesRef = useRef(disabledIndices);\n disabledIndicesRef.current = disabledIndices;\n const latestOpenRef = useRef(open);\n latestOpenRef.current = open;\n const scrollItemIntoViewRef = useRef(scrollItemIntoView);\n scrollItemIntoViewRef.current = scrollItemIntoView;\n const selectedIndexRef = useRef(selectedIndex);\n selectedIndexRef.current = selectedIndex;\n const stableOnNavigate = useEvent(unstable_onNavigate);\n const [activeId, setActiveId] = useState();\n const onNavigate = useEvent(() => {\n stableOnNavigate(indexRef.current === -1 ? null : indexRef.current);\n });\n const previousOnNavigateRef = useRef(onNavigate);\n const focusItem = useEvent(() => {\n function runFocus(item2) {\n if (virtual) {\n setActiveId(item2.id);\n } else {\n enqueueFocus(item2, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? (v) => v() : requestAnimationFrame;\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) return;\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && waitedItem && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n waitedItem.scrollIntoView?.(\n typeof scrollIntoViewOptions === \"boolean\" ? { block: \"nearest\", inline: \"nearest\" } : scrollIntoViewOptions\n );\n }\n });\n });\n useLayoutEffect(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n forceScrollIntoViewRef.current = true;\n indexRef.current = selectedIndex;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n indexRef.current = -1;\n previousOnNavigateRef.current();\n }\n }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n useLayoutEffect(() => {\n if (!enabled) return;\n if (!open) return;\n if (!elements.floating) return;\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef, disabledIndicesRef.current) : getMaxListIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [\n enabled,\n open,\n elements.floating,\n activeIndex,\n selectedIndexRef,\n nested,\n listRef,\n orientation,\n rtl,\n onNavigate,\n focusItem,\n disabledIndicesRef\n ]);\n useLayoutEffect(() => {\n previousOnNavigateRef.current = onNavigate;\n previousOpenRef.current = open;\n previousMountedRef.current = !!elements.floating;\n });\n useLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const commonOnKeyDown = useEvent((event) => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n if (event.which === 229) {\n return;\n }\n if (!latestOpenRef.current && event.currentTarget === elements.floating) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {\n stopEvent(event);\n onOpenChange(false, event.nativeEvent, \"list-navigation\");\n if (isHTMLElement(elements.domReference)) {\n elements.domReference.focus();\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === \"Home\") {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate();\n }\n if (event.key === \"End\") {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate();\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate();\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(\n maxIndex,\n findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n })\n );\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(\n minIndex,\n findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n })\n );\n }\n }\n if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate();\n }\n });\n const ariaActiveDescendantProp = useMemo(() => {\n return virtual && open && hasActiveIndex && {\n \"aria-activedescendant\": activeId\n };\n }, [virtual, open, hasActiveIndex, activeId]);\n const floating = useMemo(() => {\n return {\n \"aria-orientation\": orientation === \"both\" ? void 0 : orientation,\n ...!typeableComboboxReference ? ariaActiveDescendantProp : {},\n onKeyDown: commonOnKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, orientation, typeableComboboxReference]);\n const reference = useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === \"auto\" && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === \"auto\" && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith(\"Arrow\");\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === \"Enter\" || event.key.trim() === \"\";\n if (virtual && open) {\n return commonOnKeyDown(event);\n }\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n keyRef.current = event.key;\n }\n if (nested) {\n if (isCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n onNavigate();\n } else {\n onOpenChange(true, event.nativeEvent, \"list-navigation\");\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, \"list-navigation\");\n } else {\n commonOnKeyDown(event);\n }\n if (open) {\n onNavigate();\n }\n }\n },\n onFocus() {\n if (open && !virtual) {\n indexRef.current = -1;\n onNavigate();\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [\n ariaActiveDescendantProp,\n commonOnKeyDown,\n disabledIndicesRef,\n focusItemOnOpen,\n listRef,\n nested,\n onNavigate,\n onOpenChange,\n open,\n openOnArrowKeyDown,\n orientation,\n rtl,\n selectedIndex,\n virtual\n ]);\n const item = useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!latestOpenRef.current) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1 && indexRef.current !== index) {\n indexRef.current = index;\n onNavigate();\n }\n }\n const itemProps = {\n onFocus({ currentTarget }) {\n forceSyncFocusRef.current = true;\n syncCurrentTarget(currentTarget);\n },\n onClick: ({ currentTarget }) => currentTarget.focus({ preventScroll: true }),\n // safari\n onMouseMove({ currentTarget }) {\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(currentTarget);\n }\n },\n onPointerLeave({ pointerType }) {\n if (!isPointerModalityRef.current || pointerType === \"touch\") {\n return;\n }\n forceSyncFocusRef.current = true;\n if (!focusItemOnHover) {\n return;\n }\n indexRef.current = -1;\n onNavigate();\n if (!virtual) {\n elements.floating?.focus({ preventScroll: true });\n }\n }\n };\n return itemProps;\n }, [latestOpenRef, focusItemOnHover, listRef, onNavigate, virtual, elements.floating]);\n return useMemo(\n () => enabled ? { reference, floating, item } : {},\n [enabled, reference, floating, item]\n );\n}\nexport {\n useListNavigation\n};\n//# sourceMappingURL=useListNavigation.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"useListNavigation.js","names":[],"sources":["esm/interactions/useListNavigation.js"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState } from \"react\";\nimport { useEvent } from \"@tamagui/use-event\";\nimport {\n activeElement,\n enqueueFocus,\n findNonDisabledListIndex,\n getMinListIndex,\n getMaxListIndex,\n isHTMLElement,\n isIndexOutOfListBounds,\n isTypeableCombobox,\n isVirtualClick,\n isVirtualPointerEvent,\n stopEvent\n} from \"./utils\";\nconst ARROW_UP = \"ArrowUp\";\nconst ARROW_DOWN = \"ArrowDown\";\nconst ARROW_LEFT = \"ArrowLeft\";\nconst ARROW_RIGHT = \"ArrowRight\";\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case \"vertical\":\n return vertical;\n case \"horizontal\":\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === \"Enter\" || key === \" \" || key === \"\";\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction useListNavigation(context, props) {\n const { open, onOpenChange, elements } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {\n },\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = \"auto\",\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = void 0,\n orientation = \"vertical\",\n scrollItemIntoView = true\n } = props;\n const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n const focusItemOnOpenRef = useRef(focusItemOnOpen);\n const indexRef = useRef(selectedIndex ?? -1);\n const keyRef = useRef(null);\n const isPointerModalityRef = useRef(true);\n const previousMountedRef = useRef(!!elements.floating);\n const previousOpenRef = useRef(open);\n const forceSyncFocusRef = useRef(false);\n const forceScrollIntoViewRef = useRef(false);\n const disabledIndicesRef = useRef(disabledIndices);\n disabledIndicesRef.current = disabledIndices;\n const latestOpenRef = useRef(open);\n latestOpenRef.current = open;\n const scrollItemIntoViewRef = useRef(scrollItemIntoView);\n scrollItemIntoViewRef.current = scrollItemIntoView;\n const selectedIndexRef = useRef(selectedIndex);\n selectedIndexRef.current = selectedIndex;\n const stableOnNavigate = useEvent(unstable_onNavigate);\n const [activeId, setActiveId] = useState();\n const onNavigate = useEvent(() => {\n stableOnNavigate(indexRef.current === -1 ? null : indexRef.current);\n });\n const previousOnNavigateRef = useRef(onNavigate);\n const focusItem = useEvent(() => {\n function runFocus(item2) {\n if (virtual) {\n setActiveId(item2.id);\n } else {\n enqueueFocus(item2, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? (v) => v() : requestAnimationFrame;\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) return;\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && waitedItem && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n waitedItem.scrollIntoView?.(\n typeof scrollIntoViewOptions === \"boolean\" ? { block: \"nearest\", inline: \"nearest\" } : scrollIntoViewOptions\n );\n }\n });\n });\n useLayoutEffect(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n forceScrollIntoViewRef.current = true;\n indexRef.current = selectedIndex;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n indexRef.current = -1;\n previousOnNavigateRef.current();\n }\n }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n useLayoutEffect(() => {\n if (!enabled) return;\n if (!open) return;\n if (!elements.floating) return;\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef, disabledIndicesRef.current) : getMaxListIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [\n enabled,\n open,\n elements.floating,\n activeIndex,\n selectedIndexRef,\n nested,\n listRef,\n orientation,\n rtl,\n onNavigate,\n focusItem,\n disabledIndicesRef\n ]);\n useLayoutEffect(() => {\n previousOnNavigateRef.current = onNavigate;\n previousOpenRef.current = open;\n previousMountedRef.current = !!elements.floating;\n });\n useLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const commonOnKeyDown = useEvent((event) => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n if (event.which === 229) {\n return;\n }\n if (!latestOpenRef.current && event.currentTarget === elements.floating) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl)) {\n stopEvent(event);\n onOpenChange(false, event.nativeEvent, \"list-navigation\");\n if (isHTMLElement(elements.domReference)) {\n elements.domReference.focus();\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === \"Home\") {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate();\n }\n if (event.key === \"End\") {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate();\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate();\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(\n maxIndex,\n findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n })\n );\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(\n minIndex,\n findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n })\n );\n }\n }\n if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate();\n }\n });\n const ariaActiveDescendantProp = useMemo(() => {\n return virtual && open && hasActiveIndex && {\n \"aria-activedescendant\": activeId\n };\n }, [virtual, open, hasActiveIndex, activeId]);\n const floating = useMemo(() => {\n return {\n \"aria-orientation\": orientation === \"both\" ? void 0 : orientation,\n ...!typeableComboboxReference ? ariaActiveDescendantProp : {},\n onKeyDown: commonOnKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, orientation, typeableComboboxReference]);\n const reference = useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === \"auto\" && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === \"auto\" && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith(\"Arrow\");\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === \"Enter\" || event.key.trim() === \"\";\n if (virtual && open) {\n return commonOnKeyDown(event);\n }\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n keyRef.current = event.key;\n }\n if (nested) {\n if (isCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n onNavigate();\n } else {\n onOpenChange(true, event.nativeEvent, \"list-navigation\");\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, \"list-navigation\");\n } else {\n commonOnKeyDown(event);\n }\n if (open) {\n onNavigate();\n }\n }\n },\n onFocus() {\n if (open && !virtual) {\n indexRef.current = -1;\n onNavigate();\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [\n ariaActiveDescendantProp,\n commonOnKeyDown,\n disabledIndicesRef,\n focusItemOnOpen,\n listRef,\n nested,\n onNavigate,\n onOpenChange,\n open,\n openOnArrowKeyDown,\n orientation,\n rtl,\n selectedIndex,\n virtual\n ]);\n const floatingRef = useRef(elements.floating);\n floatingRef.current = elements.floating;\n const item = useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!latestOpenRef.current) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1 && indexRef.current !== index) {\n indexRef.current = index;\n onNavigate();\n }\n }\n const itemProps = {\n onFocus({ currentTarget }) {\n forceSyncFocusRef.current = true;\n syncCurrentTarget(currentTarget);\n },\n onClick: ({ currentTarget }) => currentTarget.focus({ preventScroll: true }),\n // safari\n onMouseMove({ currentTarget }) {\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(currentTarget);\n }\n },\n onPointerLeave({ pointerType }) {\n if (!isPointerModalityRef.current || pointerType === \"touch\") {\n return;\n }\n forceSyncFocusRef.current = true;\n if (!focusItemOnHover) {\n return;\n }\n indexRef.current = -1;\n onNavigate();\n if (!virtual) {\n floatingRef.current?.focus({ preventScroll: true });\n }\n }\n };\n return itemProps;\n }, [latestOpenRef, focusItemOnHover, listRef, onNavigate, virtual]);\n return useMemo(\n () => enabled ? { reference, floating, item } : {},\n [enabled, reference, floating, item]\n );\n}\nexport {\n useListNavigation\n};\n//# sourceMappingURL=useListNavigation.js.map\n"],"mappings":"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"}
@@ -353,6 +353,8 @@ function useListNavigation(context, props) {
353
353
  selectedIndex,
354
354
  virtual
355
355
  ]);
356
+ var floatingRef = useRef(elements.floating);
357
+ floatingRef.current = elements.floating;
356
358
  var item = useMemo(function() {
357
359
  function syncCurrentTarget(currentTarget) {
358
360
  if (!latestOpenRef.current) return;
@@ -392,8 +394,8 @@ function useListNavigation(context, props) {
392
394
  indexRef.current = -1;
393
395
  onNavigate();
394
396
  if (!virtual) {
395
- var _elements_floating;
396
- (_elements_floating = elements.floating) === null || _elements_floating === void 0 ? void 0 : _elements_floating.focus({ preventScroll: true });
397
+ var _floatingRef_current;
398
+ (_floatingRef_current = floatingRef.current) === null || _floatingRef_current === void 0 ? void 0 : _floatingRef_current.focus({ preventScroll: true });
397
399
  }
398
400
  }
399
401
  };
@@ -403,8 +405,7 @@ function useListNavigation(context, props) {
403
405
  focusItemOnHover,
404
406
  listRef,
405
407
  onNavigate,
406
- virtual,
407
- elements.floating
408
+ virtual
408
409
  ]);
409
410
  return useMemo(function() {
410
411
  return enabled ? {