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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/dist/cjs/BubbleSelect.cjs +28 -23
  2. package/dist/cjs/BubbleSelect.native.js +12 -10
  3. package/dist/cjs/BubbleSelect.native.js.map +1 -1
  4. package/dist/cjs/Select.cjs +402 -376
  5. package/dist/cjs/Select.native.js +428 -414
  6. package/dist/cjs/Select.native.js.map +1 -1
  7. package/dist/cjs/SelectContent.cjs +73 -66
  8. package/dist/cjs/SelectContent.native.js +12 -10
  9. package/dist/cjs/SelectContent.native.js.map +1 -1
  10. package/dist/cjs/SelectImpl.cjs +239 -176
  11. package/dist/cjs/SelectImpl.native.js +21 -16
  12. package/dist/cjs/SelectImpl.native.js.map +1 -1
  13. package/dist/cjs/SelectItem.cjs +189 -137
  14. package/dist/cjs/SelectItem.native.js +211 -164
  15. package/dist/cjs/SelectItem.native.js.map +1 -1
  16. package/dist/cjs/SelectItemText.cjs +82 -68
  17. package/dist/cjs/SelectItemText.native.js +81 -69
  18. package/dist/cjs/SelectItemText.native.js.map +1 -1
  19. package/dist/cjs/SelectScrollButton.cjs +104 -83
  20. package/dist/cjs/SelectScrollButton.native.js +17 -15
  21. package/dist/cjs/SelectScrollButton.native.js.map +1 -1
  22. package/dist/cjs/SelectTrigger.cjs +81 -77
  23. package/dist/cjs/SelectTrigger.native.js +43 -40
  24. package/dist/cjs/SelectTrigger.native.js.map +1 -1
  25. package/dist/cjs/SelectViewport.cjs +141 -103
  26. package/dist/cjs/SelectViewport.native.js +39 -37
  27. package/dist/cjs/SelectViewport.native.js.map +1 -1
  28. package/dist/cjs/constants.cjs +19 -17
  29. package/dist/cjs/constants.native.js +19 -17
  30. package/dist/cjs/constants.native.js.map +1 -1
  31. package/dist/cjs/context.cjs +38 -27
  32. package/dist/cjs/context.native.js +46 -38
  33. package/dist/cjs/context.native.js.map +1 -1
  34. package/dist/cjs/index.cjs +7 -5
  35. package/dist/cjs/index.native.js +7 -5
  36. package/dist/cjs/index.native.js.map +1 -1
  37. package/dist/cjs/types.cjs +7 -5
  38. package/dist/cjs/types.native.js +7 -5
  39. package/dist/cjs/types.native.js.map +1 -1
  40. package/dist/cjs/useSelectBreakpointActive.cjs +13 -11
  41. package/dist/cjs/useSelectBreakpointActive.native.js +17 -15
  42. package/dist/cjs/useSelectBreakpointActive.native.js.map +1 -1
  43. package/dist/esm/BubbleSelect.mjs +16 -13
  44. package/dist/esm/BubbleSelect.mjs.map +1 -1
  45. package/dist/esm/Select.mjs +356 -331
  46. package/dist/esm/Select.mjs.map +1 -1
  47. package/dist/esm/Select.native.js +381 -369
  48. package/dist/esm/Select.native.js.map +1 -1
  49. package/dist/esm/SelectContent.mjs +55 -39
  50. package/dist/esm/SelectContent.mjs.map +1 -1
  51. package/dist/esm/SelectImpl.mjs +208 -147
  52. package/dist/esm/SelectImpl.mjs.map +1 -1
  53. package/dist/esm/SelectImpl.native.js +4 -1
  54. package/dist/esm/SelectImpl.native.js.map +1 -1
  55. package/dist/esm/SelectItem.mjs +157 -107
  56. package/dist/esm/SelectItem.mjs.map +1 -1
  57. package/dist/esm/SelectItem.native.js +180 -135
  58. package/dist/esm/SelectItem.native.js.map +1 -1
  59. package/dist/esm/SelectItemText.mjs +50 -38
  60. package/dist/esm/SelectItemText.mjs.map +1 -1
  61. package/dist/esm/SelectItemText.native.js +50 -40
  62. package/dist/esm/SelectItemText.native.js.map +1 -1
  63. package/dist/esm/SelectScrollButton.mjs +74 -55
  64. package/dist/esm/SelectScrollButton.mjs.map +1 -1
  65. package/dist/esm/SelectScrollButton.native.js +5 -5
  66. package/dist/esm/SelectScrollButton.native.js.map +1 -1
  67. package/dist/esm/SelectTrigger.mjs +51 -49
  68. package/dist/esm/SelectTrigger.mjs.map +1 -1
  69. package/dist/esm/SelectTrigger.native.js +13 -12
  70. package/dist/esm/SelectTrigger.native.js.map +1 -1
  71. package/dist/esm/SelectViewport.mjs +108 -83
  72. package/dist/esm/SelectViewport.mjs.map +1 -1
  73. package/dist/esm/SelectViewport.native.js +7 -7
  74. package/dist/esm/SelectViewport.native.js.map +1 -1
  75. package/dist/esm/constants.mjs +7 -7
  76. package/dist/esm/constants.mjs.map +1 -1
  77. package/dist/esm/constants.native.js +7 -7
  78. package/dist/esm/constants.native.js.map +1 -1
  79. package/dist/esm/context.mjs +22 -14
  80. package/dist/esm/context.mjs.map +1 -1
  81. package/dist/esm/context.native.js +30 -25
  82. package/dist/esm/context.native.js.map +1 -1
  83. package/dist/esm/index.js +2 -2
  84. package/dist/esm/index.js.map +1 -6
  85. package/dist/esm/useSelectBreakpointActive.mjs +1 -1
  86. package/dist/esm/useSelectBreakpointActive.mjs.map +1 -1
  87. package/dist/esm/useSelectBreakpointActive.native.js +1 -1
  88. package/dist/esm/useSelectBreakpointActive.native.js.map +1 -1
  89. package/dist/jsx/BubbleSelect.mjs +16 -13
  90. package/dist/jsx/BubbleSelect.mjs.map +1 -1
  91. package/dist/jsx/BubbleSelect.native.js +12 -10
  92. package/dist/jsx/BubbleSelect.native.js.map +1 -1
  93. package/dist/jsx/Select.mjs +356 -331
  94. package/dist/jsx/Select.mjs.map +1 -1
  95. package/dist/jsx/Select.native.js +428 -414
  96. package/dist/jsx/Select.native.js.map +1 -1
  97. package/dist/jsx/SelectContent.mjs +55 -39
  98. package/dist/jsx/SelectContent.mjs.map +1 -1
  99. package/dist/jsx/SelectContent.native.js +12 -10
  100. package/dist/jsx/SelectContent.native.js.map +1 -1
  101. package/dist/jsx/SelectImpl.mjs +208 -147
  102. package/dist/jsx/SelectImpl.mjs.map +1 -1
  103. package/dist/jsx/SelectImpl.native.js +21 -16
  104. package/dist/jsx/SelectImpl.native.js.map +1 -1
  105. package/dist/jsx/SelectItem.mjs +157 -107
  106. package/dist/jsx/SelectItem.mjs.map +1 -1
  107. package/dist/jsx/SelectItem.native.js +211 -164
  108. package/dist/jsx/SelectItem.native.js.map +1 -1
  109. package/dist/jsx/SelectItemText.mjs +50 -38
  110. package/dist/jsx/SelectItemText.mjs.map +1 -1
  111. package/dist/jsx/SelectItemText.native.js +81 -69
  112. package/dist/jsx/SelectItemText.native.js.map +1 -1
  113. package/dist/jsx/SelectScrollButton.mjs +74 -55
  114. package/dist/jsx/SelectScrollButton.mjs.map +1 -1
  115. package/dist/jsx/SelectScrollButton.native.js +17 -15
  116. package/dist/jsx/SelectScrollButton.native.js.map +1 -1
  117. package/dist/jsx/SelectTrigger.mjs +51 -49
  118. package/dist/jsx/SelectTrigger.mjs.map +1 -1
  119. package/dist/jsx/SelectTrigger.native.js +43 -40
  120. package/dist/jsx/SelectTrigger.native.js.map +1 -1
  121. package/dist/jsx/SelectViewport.mjs +108 -83
  122. package/dist/jsx/SelectViewport.mjs.map +1 -1
  123. package/dist/jsx/SelectViewport.native.js +39 -37
  124. package/dist/jsx/SelectViewport.native.js.map +1 -1
  125. package/dist/jsx/constants.mjs +7 -7
  126. package/dist/jsx/constants.mjs.map +1 -1
  127. package/dist/jsx/constants.native.js +19 -17
  128. package/dist/jsx/constants.native.js.map +1 -1
  129. package/dist/jsx/context.mjs +22 -14
  130. package/dist/jsx/context.mjs.map +1 -1
  131. package/dist/jsx/context.native.js +46 -38
  132. package/dist/jsx/context.native.js.map +1 -1
  133. package/dist/jsx/index.js +2 -2
  134. package/dist/jsx/index.js.map +1 -6
  135. package/dist/jsx/index.native.js +7 -5
  136. package/dist/jsx/types.native.js +7 -5
  137. package/dist/jsx/useSelectBreakpointActive.mjs +1 -1
  138. package/dist/jsx/useSelectBreakpointActive.mjs.map +1 -1
  139. package/dist/jsx/useSelectBreakpointActive.native.js +17 -15
  140. package/dist/jsx/useSelectBreakpointActive.native.js.map +1 -1
  141. package/package.json +31 -35
  142. package/src/Select.tsx +16 -1
  143. package/src/SelectContent.tsx +47 -36
  144. package/src/SelectImpl.tsx +51 -49
  145. package/src/SelectItem.tsx +17 -7
  146. package/src/SelectScrollButton.tsx +1 -1
  147. package/src/SelectTrigger.tsx +1 -1
  148. package/src/SelectViewport.tsx +42 -22
  149. package/src/context.tsx +4 -0
  150. package/src/types.tsx +44 -4
  151. package/types/Select.d.ts +2 -2
  152. package/types/Select.d.ts.map +1 -1
  153. package/types/SelectContent.d.ts +1 -1
  154. package/types/SelectContent.d.ts.map +1 -1
  155. package/types/SelectImpl.d.ts.map +1 -1
  156. package/types/SelectItem.d.ts.map +1 -1
  157. package/types/SelectTrigger.d.ts +1 -1
  158. package/types/SelectViewport.d.ts.map +1 -1
  159. package/types/context.d.ts +1 -0
  160. package/types/context.d.ts.map +1 -1
  161. package/types/types.d.ts +33 -3
  162. package/types/types.d.ts.map +1 -1
  163. package/dist/cjs/BubbleSelect.js +0 -34
  164. package/dist/cjs/BubbleSelect.js.map +0 -6
  165. package/dist/cjs/Select.js +0 -402
  166. package/dist/cjs/Select.js.map +0 -6
  167. package/dist/cjs/SelectContent.js +0 -57
  168. package/dist/cjs/SelectContent.js.map +0 -6
  169. package/dist/cjs/SelectImpl.js +0 -222
  170. package/dist/cjs/SelectImpl.js.map +0 -6
  171. package/dist/cjs/SelectItem.js +0 -166
  172. package/dist/cjs/SelectItem.js.map +0 -6
  173. package/dist/cjs/SelectItemText.js +0 -64
  174. package/dist/cjs/SelectItemText.js.map +0 -6
  175. package/dist/cjs/SelectScrollButton.js +0 -105
  176. package/dist/cjs/SelectScrollButton.js.map +0 -6
  177. package/dist/cjs/SelectTrigger.js +0 -81
  178. package/dist/cjs/SelectTrigger.js.map +0 -6
  179. package/dist/cjs/SelectViewport.js +0 -114
  180. package/dist/cjs/SelectViewport.js.map +0 -6
  181. package/dist/cjs/constants.js +0 -27
  182. package/dist/cjs/constants.js.map +0 -6
  183. package/dist/cjs/context.js +0 -33
  184. package/dist/cjs/context.js.map +0 -6
  185. package/dist/cjs/index.js +0 -16
  186. package/dist/cjs/index.js.map +0 -6
  187. package/dist/cjs/types.js +0 -14
  188. package/dist/cjs/types.js.map +0 -6
  189. package/dist/cjs/useSelectBreakpointActive.js +0 -25
  190. package/dist/cjs/useSelectBreakpointActive.js.map +0 -6
  191. package/dist/esm/BubbleSelect.js +0 -17
  192. package/dist/esm/BubbleSelect.js.map +0 -6
  193. package/dist/esm/Select.js +0 -412
  194. package/dist/esm/Select.js.map +0 -6
  195. package/dist/esm/SelectContent.js +0 -39
  196. package/dist/esm/SelectContent.js.map +0 -6
  197. package/dist/esm/SelectImpl.js +0 -223
  198. package/dist/esm/SelectImpl.js.map +0 -6
  199. package/dist/esm/SelectItem.js +0 -148
  200. package/dist/esm/SelectItem.js.map +0 -6
  201. package/dist/esm/SelectItemText.js +0 -46
  202. package/dist/esm/SelectItemText.js.map +0 -6
  203. package/dist/esm/SelectScrollButton.js +0 -87
  204. package/dist/esm/SelectScrollButton.js.map +0 -6
  205. package/dist/esm/SelectTrigger.js +0 -61
  206. package/dist/esm/SelectTrigger.js.map +0 -6
  207. package/dist/esm/SelectViewport.js +0 -112
  208. package/dist/esm/SelectViewport.js.map +0 -6
  209. package/dist/esm/constants.js +0 -11
  210. package/dist/esm/constants.js.map +0 -6
  211. package/dist/esm/context.js +0 -19
  212. package/dist/esm/context.js.map +0 -6
  213. package/dist/esm/types.js +0 -1
  214. package/dist/esm/types.js.map +0 -6
  215. package/dist/esm/useSelectBreakpointActive.js +0 -9
  216. package/dist/esm/useSelectBreakpointActive.js.map +0 -6
  217. package/dist/jsx/BubbleSelect.js +0 -17
  218. package/dist/jsx/BubbleSelect.js.map +0 -6
  219. package/dist/jsx/Select.js +0 -412
  220. package/dist/jsx/Select.js.map +0 -6
  221. package/dist/jsx/SelectContent.js +0 -39
  222. package/dist/jsx/SelectContent.js.map +0 -6
  223. package/dist/jsx/SelectImpl.js +0 -223
  224. package/dist/jsx/SelectImpl.js.map +0 -6
  225. package/dist/jsx/SelectItem.js +0 -148
  226. package/dist/jsx/SelectItem.js.map +0 -6
  227. package/dist/jsx/SelectItemText.js +0 -46
  228. package/dist/jsx/SelectItemText.js.map +0 -6
  229. package/dist/jsx/SelectScrollButton.js +0 -87
  230. package/dist/jsx/SelectScrollButton.js.map +0 -6
  231. package/dist/jsx/SelectTrigger.js +0 -61
  232. package/dist/jsx/SelectTrigger.js.map +0 -6
  233. package/dist/jsx/SelectViewport.js +0 -112
  234. package/dist/jsx/SelectViewport.js.map +0 -6
  235. package/dist/jsx/constants.js +0 -11
  236. package/dist/jsx/constants.js.map +0 -6
  237. package/dist/jsx/context.js +0 -19
  238. package/dist/jsx/context.js.map +0 -6
  239. package/dist/jsx/types.js +0 -1
  240. package/dist/jsx/types.js.map +0 -6
  241. package/dist/jsx/useSelectBreakpointActive.js +0 -9
  242. package/dist/jsx/useSelectBreakpointActive.js.map +0 -6
@@ -2,181 +2,212 @@ var __create = Object.create;
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf,
6
- __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __export = (target, all) => {
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: !0
11
- });
12
- },
13
- __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
15
16
  get: () => from[key],
16
17
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
18
  });
18
- return to;
19
- };
19
+ }
20
+ return to;
21
+ };
20
22
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
- value: mod,
27
- enumerable: !0
28
- }) : target, mod)),
29
- __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
- value: !0
31
- }), mod);
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: true
30
+ }) : target, mod));
31
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: true
33
+ }), mod);
32
34
  var SelectImpl_exports = {};
33
35
  __export(SelectImpl_exports, {
34
36
  SelectInlineImpl: () => SelectInlineImpl
35
37
  });
36
38
  module.exports = __toCommonJS(SelectImpl_exports);
37
- var import_react = require("@floating-ui/react"),
38
- import_constants = require("@tamagui/constants"),
39
- import_core = require("@tamagui/core"),
40
- React = __toESM(require("react"), 1),
41
- import_react_dom = require("react-dom"),
42
- import_constants2 = require("./constants.cjs"),
43
- import_context = require("./context.cjs"),
44
- import_jsx_runtime = require("react/jsx-runtime");
39
+ var import_floating = require("@tamagui/floating");
40
+ var import_constants = require("@tamagui/constants");
41
+ var import_core = require("@tamagui/core");
42
+ var React = __toESM(require("react"), 1);
43
+ var import_react_dom = require("react-dom");
44
+ var import_constants2 = require("./constants.cjs");
45
+ var import_context = require("./context.cjs");
46
+ var import_jsx_runtime = require("react/jsx-runtime");
45
47
  const SelectInlineImpl = props => {
46
48
  const {
47
- scope,
48
- children,
49
- open = !1,
50
- listContentRef,
51
- setActiveIndexFast
52
- } = props,
53
- selectContext = (0, import_context.useSelectContext)(scope),
54
- selectItemParentContext = (0, import_context.useSelectItemParentContext)(scope),
55
- {
56
- setActiveIndex,
57
- selectedIndex,
58
- activeIndexRef
59
- } = selectContext,
60
- {
61
- setOpen,
62
- setSelectedIndex
63
- } = selectItemParentContext,
64
- [scrollTop, setScrollTop] = React.useState(0),
65
- touch = (0, import_core.useIsTouchDevice)(),
66
- listItemsRef = React.useRef([]),
67
- overflowRef = React.useRef(null),
68
- upArrowRef = React.useRef(null),
69
- downArrowRef = React.useRef(null),
70
- allowSelectRef = React.useRef(!1),
71
- allowMouseUpRef = React.useRef(!0),
72
- selectTimeoutRef = React.useRef(null),
73
- state = React.useRef({
74
- isMouseOutside: !1,
75
- isTyping: !1
76
- }),
77
- [controlledScrolling, setControlledScrolling] = React.useState(!1),
78
- [fallback, setFallback] = React.useState(!1),
79
- [innerOffset, setInnerOffset] = React.useState(0),
80
- [blockSelection, setBlockSelection] = React.useState(!1),
81
- floatingStyle = React.useRef({});
49
+ scope,
50
+ children,
51
+ open = false,
52
+ listContentRef,
53
+ setActiveIndexFast
54
+ } = props;
55
+ const selectContext = (0, import_context.useSelectContext)(scope);
56
+ const selectItemParentContext = (0, import_context.useSelectItemParentContext)(scope);
57
+ const {
58
+ setActiveIndex,
59
+ selectedIndex,
60
+ activeIndexRef
61
+ } = selectContext;
62
+ const {
63
+ setOpen,
64
+ setSelectedIndex
65
+ } = selectItemParentContext;
66
+ const [scrollTop, setScrollTop] = React.useState(0);
67
+ const touch = (0, import_core.useIsTouchDevice)();
68
+ const listItemsRef = React.useRef([]);
69
+ const overflowRef = React.useRef(null);
70
+ const upArrowRef = React.useRef(null);
71
+ const downArrowRef = React.useRef(null);
72
+ const allowSelectRef = React.useRef(false);
73
+ const allowMouseUpRef = React.useRef(true);
74
+ const selectTimeoutRef = React.useRef(null);
75
+ const state = React.useRef({
76
+ isMouseOutside: false,
77
+ isTyping: false
78
+ });
79
+ const [controlledScrolling, setControlledScrolling] = React.useState(false);
80
+ const [fallback, setFallback] = React.useState(false);
81
+ const [innerOffset, setInnerOffset] = React.useState(0);
82
+ const [blockSelection, setBlockSelection] = React.useState(false);
83
+ const floatingStyle = React.useRef({});
82
84
  React.useEffect(() => {
83
- open ? setActiveIndexFast(selectedIndex ?? 0) : (setScrollTop(0), setFallback(!1), setActiveIndexFast(null), setControlledScrolling(!1));
84
- }, [open, selectedIndex, setActiveIndexFast]), (0, import_constants.useIsomorphicLayoutEffect)(() => {
85
+ if (open) setActiveIndexFast(selectedIndex ?? 0);else {
86
+ setScrollTop(0);
87
+ setFallback(false);
88
+ setActiveIndexFast(null);
89
+ setControlledScrolling(false);
90
+ }
91
+ }, [open, selectedIndex, setActiveIndexFast]);
92
+ (0, import_constants.useIsomorphicLayoutEffect)(() => {
85
93
  if (!open) return;
86
94
  const mouseUp = e => {
87
- state.current.isMouseOutside && setOpen(!1);
95
+ if (state.current.isMouseOutside) setOpen(false);
88
96
  };
89
- return document.addEventListener("mouseup", mouseUp), () => {
97
+ document.addEventListener("mouseup", mouseUp);
98
+ return () => {
90
99
  document.removeEventListener("mouseup", mouseUp);
91
100
  };
92
101
  }, [open]);
93
102
  const {
94
- x,
95
- y,
96
- strategy,
97
- context,
98
- refs,
99
- update
100
- } = (0, import_react.useFloating)({
101
- open,
102
- onOpenChange: setOpen,
103
- placement: "bottom-start",
104
- whileElementsMounted: import_react.autoUpdate,
105
- // eslint-disable-next-line no-constant-condition
106
- middleware: [(0, import_react.size)({
107
- apply({
108
- rects: {
109
- reference: {
110
- width
111
- }
103
+ x,
104
+ y,
105
+ strategy,
106
+ refs,
107
+ update,
108
+ placement: computedPlacement
109
+ } = (0, import_floating.useFloatingRaw)({
110
+ open,
111
+ placement: "bottom-start",
112
+ whileElementsMounted: import_floating.autoUpdate,
113
+ middleware: [(0, import_floating.size)({
114
+ apply({
115
+ rects: {
116
+ reference: {
117
+ width
112
118
  }
113
- }) {
114
- Object.assign(floatingStyle.current, {
115
- minWidth: width + 8
116
- }), refs.floating.current && Object.assign(refs.floating.current.style, floatingStyle.current);
117
119
  }
118
- }), (0, import_react.inner)({
119
- listRef: listItemsRef,
120
- overflowRef,
121
- index: selectedIndex,
122
- offset: innerOffset,
123
- onFallbackChange: setFallback,
124
- padding: 10,
125
- minItemsVisible: touch ? 10 : 4,
126
- referenceOverflowThreshold: 20
127
- }), (0, import_react.offset)({
128
- crossAxis: -5
129
- })]
130
- }),
131
- floatingRef = refs.floating,
132
- showUpArrow = open && scrollTop > import_constants2.SCROLL_ARROW_THRESHOLD,
133
- showDownArrow = open && floatingRef.current && scrollTop < floatingRef.current.scrollHeight - floatingRef.current.clientHeight - import_constants2.SCROLL_ARROW_THRESHOLD,
134
- isScrollable = showDownArrow || showUpArrow;
120
+ }) {
121
+ Object.assign(floatingStyle.current, {
122
+ minWidth: width + 8
123
+ });
124
+ if (refs.floating.current) Object.assign(refs.floating.current.style, floatingStyle.current);
125
+ }
126
+ }), (0, import_floating.inner)({
127
+ listRef: listItemsRef,
128
+ overflowRef,
129
+ index: selectedIndex,
130
+ offset: innerOffset,
131
+ onFallbackChange: setFallback,
132
+ padding: 10,
133
+ minItemsVisible: touch ? 10 : 4,
134
+ referenceOverflowThreshold: 20
135
+ }), (0, import_floating.offset)({
136
+ crossAxis: -5
137
+ })]
138
+ });
139
+ const floatingRef = refs.floating;
140
+ const showUpArrow = open && scrollTop > import_constants2.SCROLL_ARROW_THRESHOLD;
141
+ const showDownArrow = open && floatingRef.current && scrollTop < floatingRef.current.scrollHeight - floatingRef.current.clientHeight - import_constants2.SCROLL_ARROW_THRESHOLD;
142
+ const isScrollable = showDownArrow || showUpArrow;
135
143
  (0, import_constants.useIsomorphicLayoutEffect)(() => {
136
- if (!(typeof window > "u")) return window.addEventListener("resize", update), open && update(), () => window.removeEventListener("resize", update);
144
+ if (typeof window === "undefined") return;
145
+ window.addEventListener("resize", update);
146
+ if (open) update();
147
+ return () => window.removeEventListener("resize", update);
137
148
  }, [update, open]);
138
- const onMatch = (0, import_core.useEvent)(index => (open ? setActiveIndex : setSelectedIndex)(index)),
139
- interactionsProps = [(0, import_react.useClick)(context, {
140
- event: "mousedown",
141
- keyboardHandlers: !1
142
- }), (0, import_react.useDismiss)(context, {
143
- outsidePress: !1
144
- }), (0, import_react.useRole)(context, {
145
- role: "listbox"
146
- }), (0, import_react.useInnerOffset)(context, {
147
- enabled: !fallback && isScrollable,
148
- onChange: setInnerOffset,
149
- overflowRef,
150
- scrollRef: refs.floating
151
- }), (0, import_react.useListNavigation)(context, {
152
- listRef: listItemsRef,
153
- activeIndex: selectContext.activeIndex ?? 0,
154
- selectedIndex,
155
- // wrap onNavigate to prevent floating-ui from resetting activeIndex to null on focus loss
156
- onNavigate: index => {
157
- index !== null && setActiveIndex(index);
158
- },
159
- scrollItemIntoView: !1
160
- }), (0, import_react.useTypeahead)(context, {
161
- listRef: listContentRef,
162
- onMatch,
163
- selectedIndex,
164
- activeIndex: selectContext.activeIndex,
165
- onTypingChange: e => {
166
- state.current.isTyping = e;
167
- }
168
- })],
169
- interactions = (0, import_react.useInteractions)(
170
- // unfortunately these memos will just always break due to floating-ui context always changing :/
171
- React.useMemo(() => interactionsProps, interactionsProps)),
172
- interactionsContext = React.useMemo(() => ({
149
+ const onMatch = (0, import_core.useEvent)(index => {
150
+ return (open ? setActiveIndex : setSelectedIndex)(index);
151
+ });
152
+ const dataRef = React.useRef({});
153
+ dataRef.current.placement = computedPlacement;
154
+ const interactionContext = {
155
+ open,
156
+ onOpenChange: val => setOpen(val),
157
+ refs: {
158
+ reference: refs.reference,
159
+ floating: refs.floating,
160
+ domReference: refs.reference
161
+ },
162
+ elements: {
163
+ reference: refs.reference?.current || null,
164
+ floating: refs.floating?.current || null,
165
+ domReference: refs.reference?.current || null
166
+ },
167
+ dataRef
168
+ };
169
+ const interactionsProps = [(0, import_floating.useClick)(interactionContext, {
170
+ event: "mousedown",
171
+ keyboardHandlers: false
172
+ }), (0, import_floating.useRole)(interactionContext, {
173
+ role: "listbox"
174
+ }), (0, import_floating.useInnerOffset)(interactionContext, {
175
+ enabled: !fallback && isScrollable,
176
+ onChange: setInnerOffset,
177
+ overflowRef,
178
+ scrollRef: refs.floating
179
+ }), (0, import_floating.useListNavigation)(interactionContext, {
180
+ listRef: listItemsRef,
181
+ activeIndex: selectContext.activeIndex ?? 0,
182
+ selectedIndex,
183
+ onNavigate: index => {
184
+ if (index !== null) setActiveIndex(index);
185
+ },
186
+ scrollItemIntoView: false
187
+ }), (0, import_floating.useTypeahead)(interactionContext, {
188
+ listRef: listContentRef,
189
+ onMatch,
190
+ selectedIndex,
191
+ activeIndex: selectContext.activeIndex,
192
+ onTypingChange: e => {
193
+ state.current.isTyping = e;
194
+ }
195
+ })];
196
+ const interactions = (0, import_floating.useInteractions)(React.useMemo(() => {
197
+ return interactionsProps;
198
+ }, interactionsProps));
199
+ const interactionsContext = React.useMemo(() => {
200
+ return {
173
201
  ...interactions,
174
202
  getReferenceProps() {
175
203
  return interactions.getReferenceProps({
176
204
  ref: refs.reference,
177
205
  className: "SelectTrigger",
178
206
  onKeyDown(event) {
179
- (event.key === "Enter" || event.code === "Space" || event.key === " " && !state.current.isTyping) && (event.preventDefault(), setOpen(!0));
207
+ if (event.key === "Enter" || event.code === "Space" || event.key === " " && !state.current.isTyping) {
208
+ event.preventDefault();
209
+ setOpen(true);
210
+ }
180
211
  }
181
212
  });
182
213
  },
@@ -195,16 +226,18 @@ const SelectInlineImpl = props => {
195
226
  ...props2?.style
196
227
  },
197
228
  onPointerEnter() {
198
- setControlledScrolling(!1), state.current.isMouseOutside = !1;
229
+ setControlledScrolling(false);
230
+ state.current.isMouseOutside = false;
199
231
  },
200
232
  onPointerLeave() {
201
- state.current.isMouseOutside = !0;
233
+ state.current.isMouseOutside = true;
202
234
  },
203
235
  onPointerMove() {
204
- state.current.isMouseOutside = !1, setControlledScrolling(!1);
236
+ state.current.isMouseOutside = false;
237
+ setControlledScrolling(false);
205
238
  },
206
239
  onKeyDown() {
207
- setControlledScrolling(!0);
240
+ setControlledScrolling(true);
208
241
  },
209
242
  onContextMenu(e) {
210
243
  e.preventDefault();
@@ -216,45 +249,75 @@ const SelectInlineImpl = props => {
216
249
  }
217
250
  });
218
251
  }
219
- }), [refs.reference.current, x, y, refs.floating.current, interactions]);
220
- return (0, import_constants.useIsomorphicLayoutEffect)(() => {
221
- if (open) return allowMouseUpRef.current = !1, selectTimeoutRef.current = setTimeout(() => {
222
- allowSelectRef.current = !0, allowMouseUpRef.current = !0;
223
- }, 300), () => {
224
- clearTimeout(selectTimeoutRef.current);
225
252
  };
226
- allowSelectRef.current = !1, allowMouseUpRef.current = !0, setInnerOffset(0), setFallback(!1), setBlockSelection(!1);
227
- }, [open]), (0, import_constants.useIsomorphicLayoutEffect)(() => {
228
- !open && state.current.isMouseOutside && (state.current.isMouseOutside = !1);
229
- }, [open]), (0, import_constants.useIsomorphicLayoutEffect)(() => {
253
+ }, [refs.reference.current, x, y, refs.floating.current, interactions]);
254
+ (0, import_constants.useIsomorphicLayoutEffect)(() => {
255
+ if (open) {
256
+ allowMouseUpRef.current = false;
257
+ selectTimeoutRef.current = setTimeout(() => {
258
+ allowSelectRef.current = true;
259
+ allowMouseUpRef.current = true;
260
+ }, 300);
261
+ return () => {
262
+ clearTimeout(selectTimeoutRef.current);
263
+ };
264
+ }
265
+ allowSelectRef.current = false;
266
+ allowMouseUpRef.current = true;
267
+ setInnerOffset(0);
268
+ setFallback(false);
269
+ setBlockSelection(false);
270
+ }, [open]);
271
+ (0, import_constants.useIsomorphicLayoutEffect)(() => {
272
+ if (!open && state.current.isMouseOutside) state.current.isMouseOutside = false;
273
+ }, [open]);
274
+ (0, import_constants.useIsomorphicLayoutEffect)(() => {
230
275
  function onPointerDown(e) {
231
276
  const target = e.target;
232
- refs.floating.current?.contains(target) || upArrowRef.current?.contains(target) || downArrowRef.current?.contains(target) || (setOpen(!1), setControlledScrolling(!1));
277
+ if (!(refs.floating.current?.contains(target) || upArrowRef.current?.contains(target) || downArrowRef.current?.contains(target))) {
278
+ setOpen(false);
279
+ setControlledScrolling(false);
280
+ }
233
281
  }
234
- if (open) return document.addEventListener("pointerdown", onPointerDown), () => {
235
- document.removeEventListener("pointerdown", onPointerDown);
236
- };
237
- }, [open, refs, setOpen]), React.useEffect(() => {
282
+ if (open) {
283
+ document.addEventListener("pointerdown", onPointerDown);
284
+ return () => {
285
+ document.removeEventListener("pointerdown", onPointerDown);
286
+ };
287
+ }
288
+ }, [open, refs, setOpen]);
289
+ React.useEffect(() => {
238
290
  if (!open) return;
239
291
  const scrollActiveIntoView = index => {
240
- controlledScrolling && index != null && listItemsRef.current[index]?.scrollIntoView({
292
+ if (controlledScrolling && index != null) listItemsRef.current[index]?.scrollIntoView({
241
293
  block: "nearest"
242
- }), setScrollTop(refs.floating.current?.scrollTop ?? 0);
294
+ });
295
+ setScrollTop(refs.floating.current?.scrollTop ?? 0);
243
296
  };
244
- return scrollActiveIntoView(activeIndexRef.current), selectItemParentContext.activeIndexSubscribe(scrollActiveIntoView);
245
- }, [open, refs, controlledScrolling, selectItemParentContext.activeIndexSubscribe]), React.useEffect(() => {
246
- open && fallback && selectedIndex != null && listItemsRef.current[selectedIndex]?.scrollIntoView({
247
- block: "nearest"
248
- });
249
- }, [open, fallback, selectedIndex]), (0, import_constants.useIsomorphicLayoutEffect)(() => {
250
- refs.floating.current && fallback && (refs.floating.current.style.maxHeight = "");
251
- }, [refs, fallback]), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SelectProvider, {
297
+ scrollActiveIntoView(activeIndexRef.current);
298
+ return selectItemParentContext.activeIndexSubscribe(scrollActiveIntoView);
299
+ }, [open, refs, controlledScrolling, selectItemParentContext.activeIndexSubscribe]);
300
+ React.useEffect(() => {
301
+ if (open && fallback) {
302
+ if (selectedIndex != null) listItemsRef.current[selectedIndex]?.scrollIntoView({
303
+ block: "nearest"
304
+ });
305
+ }
306
+ }, [open, fallback, selectedIndex]);
307
+ (0, import_constants.useIsomorphicLayoutEffect)(() => {
308
+ if (refs.floating.current && fallback) refs.floating.current.style.maxHeight = "";
309
+ }, [refs, fallback]);
310
+ const floatingContext = React.useMemo(() => ({
311
+ refs,
312
+ dataRef
313
+ }), [refs]);
314
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SelectProvider, {
252
315
  scope,
253
316
  ...selectContext,
254
317
  setScrollTop,
255
318
  setInnerOffset,
256
319
  fallback,
257
- floatingContext: context,
320
+ floatingContext,
258
321
  canScrollDown: !!showDownArrow,
259
322
  canScrollUp: !!showUpArrow,
260
323
  controlledScrolling,
@@ -267,7 +330,7 @@ const SelectInlineImpl = props => {
267
330
  ...selectItemParentContext,
268
331
  allowMouseUpRef,
269
332
  allowSelectRef,
270
- dataRef: context.dataRef,
333
+ dataRef,
271
334
  interactions: interactionsContext,
272
335
  listRef: listItemsRef,
273
336
  selectTimeoutRef,
@@ -5,30 +5,35 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __export = (target, all) => {
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: !0
11
- });
12
- },
13
- __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
15
16
  get: () => from[key],
16
17
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
18
  });
18
- return to;
19
- };
19
+ }
20
+ return to;
21
+ };
20
22
  var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
- value: !0
23
+ value: true
22
24
  }), mod);
23
25
  var SelectImpl_native_exports = {};
24
26
  __export(SelectImpl_native_exports, {
25
27
  SelectInlineImpl: () => SelectInlineImpl
26
28
  });
27
29
  module.exports = __toCommonJS(SelectImpl_native_exports);
28
- var import_jsx_runtime = require("react/jsx-runtime"),
29
- SelectInlineImpl = function (props) {
30
- return process.env.NODE_ENV === "development" && console.warn("Sheet not implemented inline on native"), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
31
- children: props.children
32
- });
33
- };
30
+ var import_jsx_runtime = require("react/jsx-runtime");
31
+ var SelectInlineImpl = function (props) {
32
+ if (process.env.NODE_ENV === "development") {
33
+ console.warn("Sheet not implemented inline on native");
34
+ }
35
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
36
+ children: props.children
37
+ });
38
+ };
34
39
  //# sourceMappingURL=SelectImpl.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SelectImpl_native_exports","__export","SelectInlineImpl","module","exports","__toCommonJS","import_jsx_runtime","require","props","process","env","NODE_ENV","console","warn","jsx","Fragment","children"],"sources":["../../src/SelectImpl.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,yBAAA;AAAAC,QAAA,CAAAD,yBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAL,yBAAA;AAAA,IAAAM,kBAAA,GAAmDC,OAAA;EAIpCL,gBAAA,GAAmB,SAAAA,CAASM,KAAA,EAAO;IAC9C,OAAIC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,iBACzBC,OAAA,CAAQC,IAAA,CAAK,wCAAwC,GAEpC,mBAAAP,kBAAA,CAAAQ,GAAA,EAAKR,kBAAA,CAAAS,QAAA,EAAW;MACjCC,QAAA,EAAUR,KAAA,CAAMQ;IACpB,CAAC;EACL","ignoreList":[]}
1
+ {"version":3,"names":["SelectImpl_native_exports","__export","SelectInlineImpl","module","exports","__toCommonJS","import_jsx_runtime","require","props","process","env","NODE_ENV","console","warn","jsx","Fragment","children"],"sources":["../../src/SelectImpl.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,yBAAA;AAAAC,QAAA,CAAAD,yBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAL,yBAAA;AAAA,IAAAM,kBAAA,GAAmDC,OAAA;AAIxC,IAAIL,gBAAA,GAAmB,SAAAA,CAASM,KAAA,EAAO;EAC9C,IAAIC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eAAe;IACxCC,OAAA,CAAQC,IAAA,CAAK,wCAAwC;EACzD;EACA,OAAqB,mBAAAP,kBAAA,CAAAQ,GAAA,EAAKR,kBAAA,CAAAS,QAAA,EAAW;IACjCC,QAAA,EAAUR,KAAA,CAAMQ;EACpB,CAAC;AACL","ignoreList":[]}