@tamagui/select 2.7.7 → 3.0.0-beta.1091.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 (248) hide show
  1. package/dist/cjs/Select.cjs +406 -467
  2. package/dist/cjs/Select.native.cjs +495 -0
  3. package/dist/cjs/Select.native.js +445 -492
  4. package/dist/cjs/Select.native.js.map +1 -1
  5. package/dist/cjs/SelectContent.cjs +79 -79
  6. package/dist/cjs/SelectContent.native.cjs +29 -0
  7. package/dist/cjs/SelectContent.native.js +17 -22
  8. package/dist/cjs/SelectContent.native.js.map +1 -1
  9. package/dist/cjs/SelectImpl.cjs +305 -320
  10. package/dist/cjs/SelectImpl.native.cjs +29 -0
  11. package/dist/cjs/SelectImpl.native.js +16 -24
  12. package/dist/cjs/SelectImpl.native.js.map +1 -1
  13. package/dist/cjs/SelectItem.cjs +256 -205
  14. package/dist/cjs/SelectItem.native.cjs +288 -0
  15. package/dist/cjs/SelectItem.native.js +264 -213
  16. package/dist/cjs/SelectItem.native.js.map +1 -1
  17. package/dist/cjs/SelectItemText.cjs +48 -79
  18. package/dist/cjs/SelectItemText.native.cjs +73 -0
  19. package/dist/cjs/SelectItemText.native.js +49 -79
  20. package/dist/cjs/SelectItemText.native.js.map +1 -1
  21. package/dist/cjs/SelectScrollButton.cjs +110 -130
  22. package/dist/cjs/SelectScrollButton.native.cjs +37 -0
  23. package/dist/cjs/SelectScrollButton.native.js +24 -22
  24. package/dist/cjs/SelectScrollButton.native.js.map +1 -1
  25. package/dist/cjs/SelectTrigger.cjs +68 -84
  26. package/dist/cjs/SelectTrigger.native.cjs +90 -0
  27. package/dist/cjs/SelectTrigger.native.js +70 -66
  28. package/dist/cjs/SelectTrigger.native.js.map +1 -1
  29. package/dist/cjs/SelectViewport.cjs +121 -142
  30. package/dist/cjs/SelectViewport.native.cjs +72 -0
  31. package/dist/cjs/SelectViewport.native.js +53 -50
  32. package/dist/cjs/SelectViewport.native.js.map +1 -1
  33. package/dist/cjs/constants.cjs +20 -22
  34. package/dist/cjs/constants.native.cjs +40 -0
  35. package/dist/cjs/constants.native.js +20 -21
  36. package/dist/cjs/constants.native.js.map +1 -1
  37. package/dist/cjs/context.cjs +37 -48
  38. package/dist/cjs/context.native.cjs +57 -0
  39. package/dist/cjs/context.native.js +39 -49
  40. package/dist/cjs/context.native.js.map +1 -1
  41. package/dist/cjs/index.cjs +14 -11
  42. package/dist/cjs/index.native.cjs +26 -0
  43. package/dist/cjs/index.native.js +14 -10
  44. package/dist/cjs/index.native.js.map +1 -1
  45. package/dist/cjs/selectionController.cjs +343 -0
  46. package/dist/cjs/selectionController.native.cjs +407 -0
  47. package/dist/cjs/selectionController.native.js +409 -0
  48. package/dist/cjs/selectionController.native.js.map +1 -0
  49. package/dist/cjs/types.cjs +9 -11
  50. package/dist/cjs/types.native.cjs +18 -0
  51. package/dist/cjs/types.native.js +9 -10
  52. package/dist/cjs/types.native.js.map +1 -1
  53. package/dist/esm/Select.mjs +381 -443
  54. package/dist/esm/Select.mjs.map +1 -1
  55. package/dist/esm/Select.native.js +420 -469
  56. package/dist/esm/Select.native.js.map +1 -1
  57. package/dist/esm/SelectContent.mjs +67 -61
  58. package/dist/esm/SelectContent.mjs.map +1 -1
  59. package/dist/esm/SelectContent.native.js +4 -5
  60. package/dist/esm/SelectContent.native.js.map +1 -1
  61. package/dist/esm/SelectImpl.mjs +291 -295
  62. package/dist/esm/SelectImpl.mjs.map +1 -1
  63. package/dist/esm/SelectImpl.native.js +5 -8
  64. package/dist/esm/SelectImpl.native.js.map +1 -1
  65. package/dist/esm/SelectItem.mjs +240 -181
  66. package/dist/esm/SelectItem.mjs.map +1 -1
  67. package/dist/esm/SelectItem.native.js +249 -191
  68. package/dist/esm/SelectItem.native.js.map +1 -1
  69. package/dist/esm/SelectItemText.mjs +33 -55
  70. package/dist/esm/SelectItemText.mjs.map +1 -1
  71. package/dist/esm/SelectItemText.native.js +34 -56
  72. package/dist/esm/SelectItemText.native.js.map +1 -1
  73. package/dist/esm/SelectScrollButton.mjs +95 -107
  74. package/dist/esm/SelectScrollButton.mjs.map +1 -1
  75. package/dist/esm/SelectScrollButton.native.js +11 -7
  76. package/dist/esm/SelectScrollButton.native.js.map +1 -1
  77. package/dist/esm/SelectTrigger.mjs +56 -58
  78. package/dist/esm/SelectTrigger.mjs.map +1 -1
  79. package/dist/esm/SelectTrigger.native.js +54 -44
  80. package/dist/esm/SelectTrigger.native.js.map +1 -1
  81. package/dist/esm/SelectViewport.mjs +107 -119
  82. package/dist/esm/SelectViewport.mjs.map +1 -1
  83. package/dist/esm/SelectViewport.native.js +44 -39
  84. package/dist/esm/SelectViewport.native.js.map +1 -1
  85. package/dist/esm/constants.mjs +1 -0
  86. package/dist/esm/constants.mjs.map +1 -1
  87. package/dist/esm/constants.native.js +1 -0
  88. package/dist/esm/constants.native.js.map +1 -1
  89. package/dist/esm/context.mjs +20 -28
  90. package/dist/esm/context.mjs.map +1 -1
  91. package/dist/esm/context.native.js +23 -31
  92. package/dist/esm/context.native.js.map +1 -1
  93. package/dist/esm/index.js +13 -3
  94. package/dist/esm/index.mjs +13 -3
  95. package/dist/esm/index.native.js +13 -3
  96. package/dist/esm/selectionController.mjs +315 -0
  97. package/dist/esm/selectionController.mjs.map +1 -0
  98. package/dist/esm/selectionController.native.js +377 -0
  99. package/dist/esm/selectionController.native.js.map +1 -0
  100. package/dist/esm/types.mjs +0 -2
  101. package/dist/esm/types.native.js +0 -2
  102. package/dist/jsx/Select.mjs +381 -443
  103. package/dist/jsx/Select.mjs.map +1 -1
  104. package/dist/jsx/Select.native.cjs +495 -0
  105. package/dist/jsx/Select.native.js +445 -492
  106. package/dist/jsx/Select.native.js.map +1 -1
  107. package/dist/jsx/SelectContent.mjs +67 -61
  108. package/dist/jsx/SelectContent.mjs.map +1 -1
  109. package/dist/jsx/SelectContent.native.cjs +29 -0
  110. package/dist/jsx/SelectContent.native.js +17 -22
  111. package/dist/jsx/SelectContent.native.js.map +1 -1
  112. package/dist/jsx/SelectImpl.mjs +291 -295
  113. package/dist/jsx/SelectImpl.mjs.map +1 -1
  114. package/dist/jsx/SelectImpl.native.cjs +29 -0
  115. package/dist/jsx/SelectImpl.native.js +16 -24
  116. package/dist/jsx/SelectImpl.native.js.map +1 -1
  117. package/dist/jsx/SelectItem.mjs +240 -181
  118. package/dist/jsx/SelectItem.mjs.map +1 -1
  119. package/dist/jsx/SelectItem.native.cjs +288 -0
  120. package/dist/jsx/SelectItem.native.js +264 -213
  121. package/dist/jsx/SelectItem.native.js.map +1 -1
  122. package/dist/jsx/SelectItemText.mjs +33 -55
  123. package/dist/jsx/SelectItemText.mjs.map +1 -1
  124. package/dist/jsx/SelectItemText.native.cjs +73 -0
  125. package/dist/jsx/SelectItemText.native.js +49 -79
  126. package/dist/jsx/SelectItemText.native.js.map +1 -1
  127. package/dist/jsx/SelectScrollButton.mjs +95 -107
  128. package/dist/jsx/SelectScrollButton.mjs.map +1 -1
  129. package/dist/jsx/SelectScrollButton.native.cjs +37 -0
  130. package/dist/jsx/SelectScrollButton.native.js +24 -22
  131. package/dist/jsx/SelectScrollButton.native.js.map +1 -1
  132. package/dist/jsx/SelectTrigger.mjs +56 -58
  133. package/dist/jsx/SelectTrigger.mjs.map +1 -1
  134. package/dist/jsx/SelectTrigger.native.cjs +90 -0
  135. package/dist/jsx/SelectTrigger.native.js +70 -66
  136. package/dist/jsx/SelectTrigger.native.js.map +1 -1
  137. package/dist/jsx/SelectViewport.mjs +107 -119
  138. package/dist/jsx/SelectViewport.mjs.map +1 -1
  139. package/dist/jsx/SelectViewport.native.cjs +72 -0
  140. package/dist/jsx/SelectViewport.native.js +53 -50
  141. package/dist/jsx/SelectViewport.native.js.map +1 -1
  142. package/dist/jsx/constants.mjs +1 -0
  143. package/dist/jsx/constants.mjs.map +1 -1
  144. package/dist/jsx/constants.native.cjs +40 -0
  145. package/dist/jsx/constants.native.js +20 -21
  146. package/dist/jsx/constants.native.js.map +1 -1
  147. package/dist/jsx/context.mjs +20 -28
  148. package/dist/jsx/context.mjs.map +1 -1
  149. package/dist/jsx/context.native.cjs +57 -0
  150. package/dist/jsx/context.native.js +39 -49
  151. package/dist/jsx/context.native.js.map +1 -1
  152. package/dist/jsx/index.js +13 -3
  153. package/dist/jsx/index.mjs +13 -3
  154. package/dist/jsx/index.native.cjs +26 -0
  155. package/dist/jsx/index.native.js +14 -10
  156. package/dist/jsx/index.native.js.map +1 -1
  157. package/dist/jsx/selectionController.mjs +315 -0
  158. package/dist/jsx/selectionController.mjs.map +1 -0
  159. package/dist/jsx/selectionController.native.cjs +407 -0
  160. package/dist/jsx/selectionController.native.js +409 -0
  161. package/dist/jsx/selectionController.native.js.map +1 -0
  162. package/dist/jsx/types.mjs +0 -2
  163. package/dist/jsx/types.native.cjs +18 -0
  164. package/dist/jsx/types.native.js +9 -10
  165. package/dist/jsx/types.native.js.map +1 -1
  166. package/package.json +31 -30
  167. package/src/Select.tsx +478 -378
  168. package/src/SelectContent.tsx +46 -16
  169. package/src/SelectImpl.native.tsx +0 -8
  170. package/src/SelectImpl.tsx +149 -160
  171. package/src/SelectItem.tsx +280 -159
  172. package/src/SelectItemText.tsx +16 -33
  173. package/src/SelectScrollButton.native.tsx +13 -4
  174. package/src/SelectScrollButton.tsx +57 -42
  175. package/src/SelectTrigger.tsx +77 -53
  176. package/src/SelectViewport.native.tsx +42 -25
  177. package/src/SelectViewport.tsx +60 -60
  178. package/src/context.tsx +6 -2
  179. package/src/index.tsx +5 -2
  180. package/src/selectionController.ts +404 -0
  181. package/src/types.tsx +105 -59
  182. package/types/Select.d.ts +139 -201
  183. package/types/Select.d.ts.map +1 -1
  184. package/types/SelectContent.d.ts +1 -1
  185. package/types/SelectContent.d.ts.map +1 -1
  186. package/types/SelectContent.native.d.ts.map +1 -1
  187. package/types/SelectImpl.d.ts +2 -1
  188. package/types/SelectImpl.d.ts.map +1 -1
  189. package/types/SelectImpl.native.d.ts +1 -5
  190. package/types/SelectImpl.native.d.ts.map +1 -1
  191. package/types/SelectItem.d.ts +13 -16
  192. package/types/SelectItem.d.ts.map +1 -1
  193. package/types/SelectItemText.d.ts +9 -13
  194. package/types/SelectItemText.d.ts.map +1 -1
  195. package/types/SelectScrollButton.d.ts +15 -2
  196. package/types/SelectScrollButton.d.ts.map +1 -1
  197. package/types/SelectScrollButton.native.d.ts +16 -3
  198. package/types/SelectScrollButton.native.d.ts.map +1 -1
  199. package/types/SelectTrigger.d.ts +11 -23
  200. package/types/SelectTrigger.d.ts.map +1 -1
  201. package/types/SelectViewport.d.ts +11 -38
  202. package/types/SelectViewport.d.ts.map +1 -1
  203. package/types/SelectViewport.native.d.ts +15 -4
  204. package/types/SelectViewport.native.d.ts.map +1 -1
  205. package/types/context.d.ts +2 -0
  206. package/types/context.d.ts.map +1 -1
  207. package/types/index.d.ts +5 -2
  208. package/types/index.d.ts.map +1 -1
  209. package/types/selectionController.d.ts +90 -0
  210. package/types/selectionController.d.ts.map +1 -0
  211. package/types/types.d.ts +66 -50
  212. package/types/types.d.ts.map +1 -1
  213. package/dist/cjs/BubbleSelect.cjs +0 -50
  214. package/dist/cjs/BubbleSelect.native.js +0 -30
  215. package/dist/cjs/BubbleSelect.native.js.map +0 -1
  216. package/dist/cjs/useSelectBreakpointActive.cjs +0 -32
  217. package/dist/cjs/useSelectBreakpointActive.native.js +0 -35
  218. package/dist/cjs/useSelectBreakpointActive.native.js.map +0 -1
  219. package/dist/esm/BubbleSelect.mjs +0 -27
  220. package/dist/esm/BubbleSelect.mjs.map +0 -1
  221. package/dist/esm/BubbleSelect.native.js +0 -4
  222. package/dist/esm/BubbleSelect.native.js.map +0 -1
  223. package/dist/esm/index.js.map +0 -1
  224. package/dist/esm/index.mjs.map +0 -1
  225. package/dist/esm/index.native.js.map +0 -1
  226. package/dist/esm/types.mjs.map +0 -1
  227. package/dist/esm/types.native.js.map +0 -1
  228. package/dist/esm/useSelectBreakpointActive.mjs +0 -7
  229. package/dist/esm/useSelectBreakpointActive.mjs.map +0 -1
  230. package/dist/esm/useSelectBreakpointActive.native.js +0 -7
  231. package/dist/esm/useSelectBreakpointActive.native.js.map +0 -1
  232. package/dist/jsx/BubbleSelect.mjs +0 -27
  233. package/dist/jsx/BubbleSelect.mjs.map +0 -1
  234. package/dist/jsx/BubbleSelect.native.js +0 -30
  235. package/dist/jsx/BubbleSelect.native.js.map +0 -1
  236. package/dist/jsx/index.js.map +0 -1
  237. package/dist/jsx/index.mjs.map +0 -1
  238. package/dist/jsx/types.mjs.map +0 -1
  239. package/dist/jsx/useSelectBreakpointActive.mjs +0 -7
  240. package/dist/jsx/useSelectBreakpointActive.mjs.map +0 -1
  241. package/dist/jsx/useSelectBreakpointActive.native.js +0 -35
  242. package/dist/jsx/useSelectBreakpointActive.native.js.map +0 -1
  243. package/src/BubbleSelect.tsx +0 -50
  244. package/src/useSelectBreakpointActive.tsx +0 -7
  245. package/types/BubbleSelect.d.ts +0 -2
  246. package/types/BubbleSelect.d.ts.map +0 -1
  247. package/types/useSelectBreakpointActive.d.ts +0 -3
  248. package/types/useSelectBreakpointActive.d.ts.map +0 -1
@@ -5,153 +5,133 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
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: true
11
- });
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
12
  };
13
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, {
16
- get: () => from[key],
17
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
- });
19
- }
20
- return to;
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, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
21
  };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
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
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
30
25
  }) : target, mod));
31
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
- value: true
33
- }), mod);
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
27
  var SelectScrollButton_exports = {};
35
28
  __export(SelectScrollButton_exports, {
36
- SelectScrollDownButton: () => SelectScrollDownButton,
37
- SelectScrollUpButton: () => SelectScrollUpButton
29
+ SelectScrollButtonFrame: () => SelectScrollButtonFrame,
30
+ SelectScrollDownButton: () => SelectScrollDownButton,
31
+ SelectScrollUpButton: () => SelectScrollUpButton
38
32
  });
39
33
  module.exports = __toCommonJS(SelectScrollButton_exports);
34
+ var import_core = require("@tamagui/core");
40
35
  var import_floating = require("@tamagui/floating");
41
36
  var import_compose_refs = require("@tamagui/compose-refs");
42
- var import_stacks = require("@tamagui/stacks");
37
+ var import_helpers = require("@tamagui/helpers");
43
38
  var React = __toESM(require("react"), 1);
44
39
  var import_react_dom = require("react-dom");
45
40
  var import_context = require("./context.cjs");
46
41
  var import_jsx_runtime = require("react/jsx-runtime");
47
42
  const SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton";
48
- const SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {
49
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectScrollButtonImpl, {
50
- componentName: SCROLL_UP_BUTTON_NAME,
51
- ...props,
52
- dir: "up",
53
- ref: forwardedRef
54
- });
43
+ const SelectScrollButtonFrame = (0, import_core.styled)(import_core.View, { displayName: "SelectScrollButton" });
44
+ const SelectScrollUpButton = (0, import_core.createStyledHOC)(SelectScrollButtonFrame, (props, forwardedRef) => {
45
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollButtonImpl, {
46
+ partClassName: `is_${SCROLL_UP_BUTTON_NAME}`,
47
+ ...props,
48
+ dir: "up",
49
+ ref: forwardedRef
50
+ });
55
51
  });
56
52
  SelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;
57
53
  const SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton";
58
- const SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {
59
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(SelectScrollButtonImpl, {
60
- componentName: SCROLL_DOWN_BUTTON_NAME,
61
- ...props,
62
- dir: "down",
63
- ref: forwardedRef
64
- });
54
+ const SelectScrollDownButton = (0, import_core.createStyledHOC)(SelectScrollButtonFrame, (props, forwardedRef) => {
55
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollButtonImpl, {
56
+ partClassName: `is_${SCROLL_DOWN_BUTTON_NAME}`,
57
+ ...props,
58
+ dir: "down",
59
+ ref: forwardedRef
60
+ });
65
61
  });
66
62
  SelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
67
- const SelectScrollButtonImpl = React.memo(React.forwardRef((props, forwardedRef) => {
68
- const {
69
- scope,
70
- dir,
71
- componentName,
72
- ...scrollIndicatorProps
73
- } = props;
74
- const {
75
- forceUpdate,
76
- open,
77
- fallback,
78
- setScrollTop,
79
- setInnerOffset,
80
- ...context
81
- } = (0, import_context.useSelectContext)(scope);
82
- const floatingRef = context.floatingContext?.refs.floating;
83
- const statusRef = React.useRef("idle");
84
- const isVisible = context[dir === "down" ? "canScrollDown" : "canScrollUp"];
85
- const frameRef = React.useRef(null);
86
- const {
87
- x,
88
- y,
89
- refs,
90
- strategy
91
- } = (0, import_floating.useFloatingRaw)({
92
- open: open && isVisible,
93
- strategy: "fixed",
94
- elements: {
95
- reference: floatingRef?.current
96
- },
97
- placement: dir === "up" ? "top" : "bottom",
98
- middleware: [(0, import_floating.offset)(({
99
- rects
100
- }) => -rects.floating.height)],
101
- whileElementsMounted: (...args) => (0, import_floating.autoUpdate)(...args, {
102
- animationFrame: true
103
- })
104
- });
105
- const composedRef = (0, import_compose_refs.useComposedRefs)(forwardedRef, refs.setFloating);
106
- if (!isVisible) {
107
- return null;
108
- }
109
- const onScroll = amount => {
110
- const floating = floatingRef;
111
- if (!floating) return;
112
- if (fallback) {
113
- if (floating.current) {
114
- floating.current.scrollTop -= amount;
115
- (0, import_react_dom.flushSync)(() => setScrollTop(floating.current?.scrollTop ?? 0));
116
- }
117
- } else {
118
- (0, import_react_dom.flushSync)(() => setInnerOffset(value => value - amount));
119
- }
120
- };
121
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_stacks.YStack, {
122
- ref: composedRef,
123
- componentName,
124
- "aria-hidden": true,
125
- ...scrollIndicatorProps,
126
- zIndex: 1e3,
127
- position: strategy,
128
- left: x || 0,
129
- top: y || 0,
130
- width: `calc(${(floatingRef?.current?.offsetWidth ?? 0) - 2}px)`,
131
- onPointerEnter: () => {
132
- statusRef.current = "active";
133
- let prevNow = Date.now();
134
- function frame() {
135
- const element = floatingRef?.current;
136
- if (element) {
137
- const currentNow = Date.now();
138
- const msElapsed = currentNow - prevNow;
139
- prevNow = currentNow;
140
- const pixelsToScroll = msElapsed / 2;
141
- const remainingPixels = dir === "up" ? element.scrollTop : element.scrollHeight - element.clientHeight - element.scrollTop;
142
- const scrollRemaining = dir === "up" ? element.scrollTop - pixelsToScroll > 0 : element.scrollTop + pixelsToScroll < element.scrollHeight - element.clientHeight;
143
- onScroll(dir === "up" ? Math.min(pixelsToScroll, remainingPixels) : Math.max(-pixelsToScroll, -remainingPixels));
144
- if (scrollRemaining) {
145
- frameRef.current = requestAnimationFrame(frame);
146
- }
147
- }
148
- }
149
- cancelAnimationFrame(frameRef.current);
150
- frameRef.current = requestAnimationFrame(frame);
151
- },
152
- onPointerLeave: () => {
153
- statusRef.current = "idle";
154
- cancelAnimationFrame(frameRef.current);
155
- }
156
- });
157
- }));
63
+ const SelectScrollButtonImpl = React.memo((0, import_core.createStyledHOC)(SelectScrollButtonFrame, (props, forwardedRef) => {
64
+ const { scope, dir, partClassName, ...scrollIndicatorProps } = props;
65
+ const { className, onPointerEnter, onPointerLeave, ...frameProps } = scrollIndicatorProps;
66
+ const { open, fallback, updateScrollArrows, setInnerOffset, ...context } = (0, import_context.useSelectContext)(scope);
67
+ const floatingRef = context.floatingContext?.refs.floating;
68
+ const statusRef = React.useRef("idle");
69
+ const isVisible = context[dir === "down" ? "canScrollDown" : "canScrollUp"];
70
+ const frameRef = React.useRef(null);
71
+ const { x, y, refs, strategy } = (0, import_floating.useFloatingRaw)({
72
+ open: open && isVisible,
73
+ strategy: "fixed",
74
+ elements: { reference: floatingRef?.current },
75
+ placement: dir === "up" ? "top" : "bottom",
76
+ middleware: [(0, import_floating.offset)(({ rects }) => -rects.floating.height)],
77
+ whileElementsMounted: (...args) => (0, import_floating.autoUpdate)(...args, { animationFrame: true })
78
+ });
79
+ const setFloatingRef = React.useCallback((node) => {
80
+ refs.setFloating(node);
81
+ }, [refs.setFloating]);
82
+ const composedRef = (0, import_compose_refs.useComposedRefs)(forwardedRef, setFloatingRef);
83
+ React.useEffect(() => {
84
+ return () => cancelAnimationFrame(frameRef.current);
85
+ }, []);
86
+ if (!isVisible) {
87
+ return null;
88
+ }
89
+ const onScroll = (amount) => {
90
+ const floating = floatingRef;
91
+ if (!floating) return;
92
+ if (fallback) {
93
+ if (floating.current) {
94
+ floating.current.scrollTop -= amount;
95
+ updateScrollArrows();
96
+ }
97
+ } else {
98
+ (0, import_react_dom.flushSync)(() => setInnerOffset((value) => value - amount));
99
+ }
100
+ };
101
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollButtonFrame, {
102
+ ref: composedRef,
103
+ className: `${partClassName} ${className || ""}`.trim(),
104
+ "aria-hidden": true,
105
+ ...frameProps,
106
+ zIndex: 1e3,
107
+ position: strategy,
108
+ left: x || 0,
109
+ top: y || 0,
110
+ width: `calc(${(floatingRef?.current?.offsetWidth ?? 0) - 2}px)`,
111
+ onPointerEnter: (0, import_helpers.composeEventHandlers)(onPointerEnter, () => {
112
+ statusRef.current = "active";
113
+ let prevNow = Date.now();
114
+ function frame() {
115
+ const element = floatingRef?.current;
116
+ if (element) {
117
+ const currentNow = Date.now();
118
+ const msElapsed = currentNow - prevNow;
119
+ prevNow = currentNow;
120
+ const pixelsToScroll = msElapsed / 2;
121
+ const remainingPixels = dir === "up" ? element.scrollTop : element.scrollHeight - element.clientHeight - element.scrollTop;
122
+ const scrollRemaining = dir === "up" ? element.scrollTop - pixelsToScroll > 0 : element.scrollTop + pixelsToScroll < element.scrollHeight - element.clientHeight;
123
+ onScroll(dir === "up" ? Math.min(pixelsToScroll, remainingPixels) : Math.max(-pixelsToScroll, -remainingPixels));
124
+ if (scrollRemaining) {
125
+ frameRef.current = requestAnimationFrame(frame);
126
+ }
127
+ }
128
+ }
129
+ cancelAnimationFrame(frameRef.current);
130
+ frameRef.current = requestAnimationFrame(frame);
131
+ }),
132
+ onPointerLeave: (0, import_helpers.composeEventHandlers)(onPointerLeave, () => {
133
+ statusRef.current = "idle";
134
+ cancelAnimationFrame(frameRef.current);
135
+ })
136
+ });
137
+ }));
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
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, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+ var SelectScrollButton_native_exports = {};
24
+ __export(SelectScrollButton_native_exports, {
25
+ SelectScrollButtonFrame: () => SelectScrollButtonFrame,
26
+ SelectScrollDownButton: () => SelectScrollDownButton,
27
+ SelectScrollUpButton: () => SelectScrollUpButton
28
+ });
29
+ module.exports = __toCommonJS(SelectScrollButton_native_exports);
30
+ var import_core = require("@tamagui/core");
31
+ var SelectScrollButtonFrame = (0, import_core.styled)(import_core.View, { displayName: "SelectScrollButton" });
32
+ var SelectScrollUpButton = (0, import_core.createStyledHOC)(SelectScrollButtonFrame, function(_props) {
33
+ return null;
34
+ });
35
+ var SelectScrollDownButton = (0, import_core.createStyledHOC)(SelectScrollButtonFrame, function(_props) {
36
+ return null;
37
+ });
@@ -5,33 +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: true
11
- });
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
12
  };
13
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, {
16
- get: () => from[key],
17
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
- });
19
- }
20
- return to;
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, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
21
  };
22
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
- value: true
24
- }), mod);
22
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
23
  var SelectScrollButton_native_exports = {};
26
24
  __export(SelectScrollButton_native_exports, {
27
- SelectScrollDownButton: () => SelectScrollDownButton,
28
- SelectScrollUpButton: () => SelectScrollUpButton
25
+ SelectScrollButtonFrame: () => SelectScrollButtonFrame,
26
+ SelectScrollDownButton: () => SelectScrollDownButton,
27
+ SelectScrollUpButton: () => SelectScrollUpButton
29
28
  });
30
29
  module.exports = __toCommonJS(SelectScrollButton_native_exports);
31
- var SelectScrollUpButton = function (_) {
32
- return null;
33
- };
34
- var SelectScrollDownButton = function (_) {
35
- return null;
36
- };
30
+ var import_core = require("@tamagui/core");
31
+ var SelectScrollButtonFrame = (0, import_core.styled)(import_core.View, { displayName: "SelectScrollButton" });
32
+ var SelectScrollUpButton = (0, import_core.createStyledHOC)(SelectScrollButtonFrame, function(_props) {
33
+ return null;
34
+ });
35
+ var SelectScrollDownButton = (0, import_core.createStyledHOC)(SelectScrollButtonFrame, function(_props) {
36
+ return null;
37
+ });
38
+
37
39
  //# sourceMappingURL=SelectScrollButton.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SelectScrollButton_native_exports","__export","SelectScrollDownButton","SelectScrollUpButton","module","exports","__toCommonJS","_"],"sources":["../../src/SelectScrollButton.native.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,iCAAA;AAAAC,QAAA,CAAAD,iCAAA;EAAAE,sBAAA,EAAAA,CAAA,KAAAA,sBAAA;EAAAC,oBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAN,iCAAA;AAAO,IAAIG,oBAAA,GAAuB,SAAAA,CAASI,CAAA,EAAG;EAC1C,OAAO;AACX;AACO,IAAIL,sBAAA,GAAyB,SAAAA,CAASK,CAAA,EAAG;EAC5C,OAAO;AACX","ignoreList":[]}
1
+ {"version":3,"file":"SelectScrollButton.native.js","names":[],"sources":["cjs/SelectScrollButton.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar SelectScrollButton_native_exports = {};\n__export(SelectScrollButton_native_exports, {\n SelectScrollButtonFrame: () => SelectScrollButtonFrame,\n SelectScrollDownButton: () => SelectScrollDownButton,\n SelectScrollUpButton: () => SelectScrollUpButton\n});\nmodule.exports = __toCommonJS(SelectScrollButton_native_exports);\nvar import_core = require(\"@tamagui/core\");\nvar SelectScrollButtonFrame = (0, import_core.styled)(import_core.View, {\n displayName: \"SelectScrollButton\"\n});\nvar SelectScrollUpButton = (0, import_core.createStyledHOC)(SelectScrollButtonFrame, function(_props) {\n return null;\n});\nvar SelectScrollDownButton = (0, import_core.createStyledHOC)(SelectScrollButtonFrame, function(_props) {\n return null;\n});\n//# sourceMappingURL=SelectScrollButton.native.js.map\n"],"mappings":";;;AACA,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,oCAAoC,CAAC;AACzC,SAAS,mCAAmC;CAC1C,+BAA+B;CAC/B,8BAA8B;CAC9B,4BAA4B;AAC9B,CAAC;AACD,OAAO,UAAU,aAAa,iCAAiC;AAC/D,IAAI,cAAc,QAAQ,eAAe;AACzC,IAAI,2BAA2B,GAAG,YAAY,OAAM,CAAE,YAAY,MAAM,EACtE,aAAa,qBACf,CAAC;AACD,IAAI,wBAAwB,GAAG,YAAY,gBAAe,CAAE,yBAAyB,SAAS,QAAQ;CACpG,OAAO;AACT,CAAC;AACD,IAAI,0BAA0B,GAAG,YAAY,gBAAe,CAAE,yBAAyB,SAAS,QAAQ;CACtG,OAAO;AACT,CAAC"}
@@ -1,99 +1,83 @@
1
- var __create = Object.create;
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
5
  var __export = (target, all) => {
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: true
11
- });
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
12
10
  };
13
11
  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, {
16
- get: () => from[key],
17
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
- });
19
- }
20
- return to;
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
21
19
  };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
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);
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
21
  var SelectTrigger_exports = {};
35
22
  __export(SelectTrigger_exports, {
36
- SelectTrigger: () => SelectTrigger
23
+ SelectTrigger: () => SelectTrigger,
24
+ SelectTriggerFrame: () => SelectTriggerFrame
37
25
  });
38
26
  module.exports = __toCommonJS(SelectTrigger_exports);
39
27
  var import_compose_refs = require("@tamagui/compose-refs");
40
- var import_list_item = require("@tamagui/list-item");
41
- var React = __toESM(require("react"), 1);
28
+ var import_constants = require("@tamagui/constants");
29
+ var import_core = require("@tamagui/core");
30
+ var import_helpers = require("@tamagui/helpers");
42
31
  var import_context = require("./context.cjs");
43
32
  var import_jsx_runtime = require("react/jsx-runtime");
44
- const TRIGGER_NAME = "SelectTrigger";
45
- const isPointerCoarse = typeof window !== "undefined" && true ? window.matchMedia("(pointer:coarse)").matches : true;
46
- const SelectTrigger = React.forwardRef(function SelectTrigger2(props, forwardedRef) {
47
- const {
48
- scope,
49
- disabled = false,
50
- unstyled = false,
51
- ...triggerProps
52
- } = props;
53
- const context = (0, import_context.useSelectContext)(scope);
54
- const itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
55
- const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, context.floatingContext?.refs.setReference);
56
- if (itemParentContext.shouldRenderWebNative) return null;
57
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_list_item.ListItem, {
58
- componentName: TRIGGER_NAME,
59
- unstyled,
60
- render: "button",
61
- type: "button",
62
- id: itemParentContext.id,
63
- ...(!unstyled && {
64
- focusVisibleStyle: {
65
- outlineStyle: "solid",
66
- outlineWidth: 2,
67
- outlineColor: "$outlineColor"
68
- },
69
- borderWidth: 1,
70
- size: itemParentContext.size
71
- }),
72
- role: "combobox",
73
- "aria-haspopup": "listbox",
74
- "aria-expanded": context.open,
75
- "aria-autocomplete": "none",
76
- dir: context.dir,
77
- disabled,
78
- "data-disabled": disabled ? "" : void 0,
79
- ...triggerProps,
80
- ref: composedRefs,
81
- ...(itemParentContext.interactions ? {
82
- ...itemParentContext.interactions.getReferenceProps(),
83
- ...(isPointerCoarse ? {
84
- onPress() {
85
- itemParentContext.setOpen(!context.open);
86
- }
87
- } : {
88
- onMouseDown() {
89
- context.floatingContext?.update?.();
90
- itemParentContext.setOpen(!context.open);
91
- }
92
- })
93
- } : {
94
- onPress() {
95
- itemParentContext.setOpen(!context.open);
96
- }
97
- })
98
- });
99
- });
33
+ const SelectTriggerFrame = (0, import_core.styled)(import_core.View, {
34
+ displayName: "SelectTrigger",
35
+ alignItems: "center",
36
+ flexDirection: "row",
37
+ render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button" })
38
+ });
39
+ const SelectTrigger = (0, import_core.createStyledHOC)(SelectTriggerFrame, function SelectTrigger2(props, forwardedRef) {
40
+ const { scope, disabled = false, ...triggerProps } = props;
41
+ const context = (0, import_context.useSelectContext)(scope);
42
+ const itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
43
+ const composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, context.floatingContext?.refs.setReference);
44
+ if (itemParentContext.shouldRenderWebNative) return null;
45
+ const toggleOpen = (event, reason = "trigger-press") => {
46
+ if (!disabled) itemParentContext.requestOpenChange(!context.open, (0, import_core.createChangeEventDetails)(reason, event?.nativeEvent || event, event?.currentTarget));
47
+ };
48
+ const interactionProps = context.interactions ? context.interactions.getReferenceProps({
49
+ ...triggerProps,
50
+ onMouseDown: (0, import_helpers.composeEventHandlers)(triggerProps.onMouseDown, () => context.floatingContext?.update?.())
51
+ }) : {
52
+ ...triggerProps,
53
+ ...import_constants.isWeb ? { onMouseDown: (0, import_helpers.composeEventHandlers)(triggerProps.onMouseDown, (event) => {
54
+ event.preventDefault();
55
+ toggleOpen(event);
56
+ }) } : { onPress: (0, import_helpers.composeEventHandlers)(triggerProps.onPress, toggleOpen) },
57
+ onKeyDown: (0, import_helpers.composeEventHandlers)(triggerProps.onKeyDown, (event) => {
58
+ if (event.key === "Enter" || event.key === " ") {
59
+ event.preventDefault();
60
+ toggleOpen(event, "keyboard");
61
+ }
62
+ })
63
+ };
64
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectTriggerFrame, {
65
+ type: "button",
66
+ id: itemParentContext.id,
67
+ role: "combobox",
68
+ "aria-haspopup": "listbox",
69
+ "aria-expanded": context.open,
70
+ "data-state": context.open ? "open" : "closed",
71
+ "aria-autocomplete": "none",
72
+ accessibilityRole: import_constants.isWeb ? void 0 : "button",
73
+ accessibilityState: import_constants.isWeb ? void 0 : {
74
+ expanded: context.open,
75
+ disabled
76
+ },
77
+ dir: context.dir,
78
+ disabled,
79
+ "data-disabled": disabled ? "" : void 0,
80
+ ...interactionProps,
81
+ ref: composedRefs
82
+ });
83
+ });
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
25
+ value: mod,
26
+ enumerable: true
27
+ }) : target, mod));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var SelectTrigger_exports = {};
30
+ __export(SelectTrigger_exports, {
31
+ SelectTrigger: () => SelectTrigger,
32
+ SelectTriggerFrame: () => SelectTriggerFrame
33
+ });
34
+ module.exports = __toCommonJS(SelectTrigger_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_compose_refs = require("@tamagui/compose-refs");
37
+ var import_constants = require("@tamagui/constants");
38
+ var import_core = require("@tamagui/core");
39
+ var import_helpers = require("@tamagui/helpers");
40
+ __toESM(require("react"), 1);
41
+ var import_context = require("./context.native.js");
42
+ var SelectTriggerFrame = (0, import_core.styled)(import_core.View, {
43
+ displayName: "SelectTrigger",
44
+ alignItems: "center",
45
+ flexDirection: "row",
46
+ render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button" })
47
+ });
48
+ var SelectTrigger = (0, import_core.createStyledHOC)(SelectTriggerFrame, function SelectTrigger2(props, forwardedRef) {
49
+ var _context_floatingContext;
50
+ var { scope, disabled = false, ...triggerProps } = props;
51
+ var context = (0, import_context.useSelectContext)(scope);
52
+ var itemParentContext = (0, import_context.useSelectItemParentContext)(scope);
53
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, (_context_floatingContext = context.floatingContext) === null || _context_floatingContext === void 0 ? void 0 : _context_floatingContext.refs.setReference);
54
+ if (itemParentContext.shouldRenderWebNative) return null;
55
+ var toggleOpen = function(event) {
56
+ var reason = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "trigger-press";
57
+ if (!disabled) itemParentContext.requestOpenChange(!context.open, (0, import_core.createChangeEventDetails)(reason, (event === null || event === void 0 ? void 0 : event.nativeEvent) || event, event === null || event === void 0 ? void 0 : event.currentTarget));
58
+ };
59
+ var interactionProps = {
60
+ ...triggerProps,
61
+ ...import_constants.isWeb ? { onMouseDown: (0, import_helpers.composeEventHandlers)(triggerProps.onMouseDown, function(event) {
62
+ event.preventDefault();
63
+ toggleOpen(event);
64
+ }) } : { onPress: (0, import_helpers.composeEventHandlers)(triggerProps.onPress, toggleOpen) },
65
+ onKeyDown: (0, import_helpers.composeEventHandlers)(triggerProps.onKeyDown, function(event) {
66
+ if (event.key === "Enter" || event.key === " ") {
67
+ event.preventDefault();
68
+ toggleOpen(event, "keyboard");
69
+ }
70
+ })
71
+ };
72
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectTriggerFrame, {
73
+ type: "button",
74
+ id: itemParentContext.id,
75
+ role: "combobox",
76
+ "aria-haspopup": "listbox",
77
+ "aria-expanded": context.open,
78
+ "aria-autocomplete": "none",
79
+ accessibilityRole: import_constants.isWeb ? void 0 : "button",
80
+ accessibilityState: import_constants.isWeb ? void 0 : {
81
+ expanded: context.open,
82
+ disabled
83
+ },
84
+ dir: context.dir,
85
+ disabled,
86
+ "data-disabled": disabled ? "" : void 0,
87
+ ...interactionProps,
88
+ ref: composedRefs
89
+ });
90
+ });