@tamagui/select 1.13.2 → 1.13.4

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 (143) hide show
  1. package/dist/cjs/BubbleSelect.js +1 -47
  2. package/dist/cjs/BubbleSelect.js.map +2 -2
  3. package/dist/cjs/Select.js +1 -494
  4. package/dist/cjs/Select.js.map +2 -2
  5. package/dist/cjs/SelectContent.js +1 -54
  6. package/dist/cjs/SelectContent.js.map +2 -2
  7. package/dist/cjs/SelectContent.native.js +1 -30
  8. package/dist/cjs/SelectContent.native.js.map +2 -2
  9. package/dist/cjs/SelectImpl.js +1 -308
  10. package/dist/cjs/SelectImpl.js.map +2 -2
  11. package/dist/cjs/SelectImpl.native.js +1 -34
  12. package/dist/cjs/SelectImpl.native.js.map +2 -2
  13. package/dist/cjs/SelectScrollButton.js +1 -175
  14. package/dist/cjs/SelectScrollButton.js.map +2 -2
  15. package/dist/cjs/SelectScrollButton.native.js +1 -31
  16. package/dist/cjs/SelectScrollButton.native.js.map +2 -2
  17. package/dist/cjs/SelectViewport.js +2 -115
  18. package/dist/cjs/SelectViewport.js.map +2 -2
  19. package/dist/cjs/SelectViewport.native.js +1 -52
  20. package/dist/cjs/SelectViewport.native.js.map +2 -2
  21. package/dist/cjs/constants.js +1 -46
  22. package/dist/cjs/constants.js.map +2 -2
  23. package/dist/cjs/context.js +1 -43
  24. package/dist/cjs/context.js.map +2 -2
  25. package/dist/cjs/index.js +1 -19
  26. package/dist/cjs/index.js.map +2 -2
  27. package/dist/cjs/types.js +1 -16
  28. package/dist/cjs/types.js.map +2 -2
  29. package/dist/cjs/useSelectBreakpointActive.js +1 -42
  30. package/dist/cjs/useSelectBreakpointActive.js.map +2 -2
  31. package/dist/esm/BubbleSelect.js +1 -24
  32. package/dist/esm/BubbleSelect.js.map +2 -2
  33. package/dist/esm/BubbleSelect.mjs +1 -24
  34. package/dist/esm/BubbleSelect.mjs.map +2 -2
  35. package/dist/esm/Select.js +1 -464
  36. package/dist/esm/Select.js.map +2 -2
  37. package/dist/esm/Select.mjs +1 -464
  38. package/dist/esm/Select.mjs.map +2 -2
  39. package/dist/esm/SelectContent.js +1 -30
  40. package/dist/esm/SelectContent.js.map +2 -2
  41. package/dist/esm/SelectContent.mjs +1 -30
  42. package/dist/esm/SelectContent.mjs.map +2 -2
  43. package/dist/esm/SelectContent.native.js +1 -6
  44. package/dist/esm/SelectContent.native.js.map +2 -2
  45. package/dist/esm/SelectContent.native.mjs +1 -6
  46. package/dist/esm/SelectContent.native.mjs.map +2 -2
  47. package/dist/esm/SelectImpl.js +1 -294
  48. package/dist/esm/SelectImpl.js.map +2 -2
  49. package/dist/esm/SelectImpl.mjs +1 -294
  50. package/dist/esm/SelectImpl.mjs.map +2 -2
  51. package/dist/esm/SelectImpl.native.js +1 -10
  52. package/dist/esm/SelectImpl.native.js.map +2 -2
  53. package/dist/esm/SelectImpl.native.mjs +1 -10
  54. package/dist/esm/SelectImpl.native.mjs.map +2 -2
  55. package/dist/esm/SelectScrollButton.js +1 -140
  56. package/dist/esm/SelectScrollButton.js.map +2 -2
  57. package/dist/esm/SelectScrollButton.mjs +1 -140
  58. package/dist/esm/SelectScrollButton.mjs.map +2 -2
  59. package/dist/esm/SelectScrollButton.native.js +1 -6
  60. package/dist/esm/SelectScrollButton.native.js.map +2 -2
  61. package/dist/esm/SelectScrollButton.native.mjs +1 -6
  62. package/dist/esm/SelectScrollButton.native.mjs.map +2 -2
  63. package/dist/esm/SelectViewport.js +2 -80
  64. package/dist/esm/SelectViewport.js.map +2 -2
  65. package/dist/esm/SelectViewport.mjs +2 -80
  66. package/dist/esm/SelectViewport.mjs.map +2 -2
  67. package/dist/esm/SelectViewport.native.js +1 -18
  68. package/dist/esm/SelectViewport.native.js.map +2 -2
  69. package/dist/esm/SelectViewport.native.mjs +1 -18
  70. package/dist/esm/SelectViewport.native.mjs.map +2 -2
  71. package/dist/esm/constants.js +1 -16
  72. package/dist/esm/constants.js.map +2 -2
  73. package/dist/esm/constants.mjs +1 -16
  74. package/dist/esm/constants.mjs.map +2 -2
  75. package/dist/esm/context.js +1 -15
  76. package/dist/esm/context.js.map +2 -2
  77. package/dist/esm/context.mjs +1 -15
  78. package/dist/esm/context.mjs.map +2 -2
  79. package/dist/esm/index.js +1 -2
  80. package/dist/esm/index.js.map +1 -1
  81. package/dist/esm/index.mjs +1 -2
  82. package/dist/esm/index.mjs.map +1 -1
  83. package/dist/esm/useSelectBreakpointActive.js +1 -17
  84. package/dist/esm/useSelectBreakpointActive.js.map +2 -2
  85. package/dist/esm/useSelectBreakpointActive.mjs +1 -17
  86. package/dist/esm/useSelectBreakpointActive.mjs.map +2 -2
  87. package/dist/jsx/BubbleSelect.js +1 -24
  88. package/dist/jsx/BubbleSelect.js.map +2 -2
  89. package/dist/jsx/BubbleSelect.mjs +1 -24
  90. package/dist/jsx/BubbleSelect.mjs.map +2 -2
  91. package/dist/jsx/Select.js +1 -428
  92. package/dist/jsx/Select.js.map +2 -2
  93. package/dist/jsx/Select.mjs +1 -428
  94. package/dist/jsx/Select.mjs.map +2 -2
  95. package/dist/jsx/SelectContent.js +1 -29
  96. package/dist/jsx/SelectContent.js.map +2 -2
  97. package/dist/jsx/SelectContent.mjs +1 -29
  98. package/dist/jsx/SelectContent.mjs.map +2 -2
  99. package/dist/jsx/SelectContent.native.js +1 -6
  100. package/dist/jsx/SelectContent.native.js.map +2 -2
  101. package/dist/jsx/SelectContent.native.mjs +1 -6
  102. package/dist/jsx/SelectContent.native.mjs.map +2 -2
  103. package/dist/jsx/SelectImpl.js +1 -286
  104. package/dist/jsx/SelectImpl.js.map +2 -2
  105. package/dist/jsx/SelectImpl.mjs +1 -286
  106. package/dist/jsx/SelectImpl.mjs.map +2 -2
  107. package/dist/jsx/SelectImpl.native.js +1 -9
  108. package/dist/jsx/SelectImpl.native.js.map +2 -2
  109. package/dist/jsx/SelectImpl.native.mjs +1 -9
  110. package/dist/jsx/SelectImpl.native.mjs.map +2 -2
  111. package/dist/jsx/SelectScrollButton.js +1 -126
  112. package/dist/jsx/SelectScrollButton.js.map +2 -2
  113. package/dist/jsx/SelectScrollButton.mjs +1 -126
  114. package/dist/jsx/SelectScrollButton.mjs.map +2 -2
  115. package/dist/jsx/SelectScrollButton.native.js +1 -6
  116. package/dist/jsx/SelectScrollButton.native.js.map +2 -2
  117. package/dist/jsx/SelectScrollButton.native.mjs +1 -6
  118. package/dist/jsx/SelectScrollButton.native.mjs.map +2 -2
  119. package/dist/jsx/SelectViewport.js +2 -72
  120. package/dist/jsx/SelectViewport.js.map +2 -2
  121. package/dist/jsx/SelectViewport.mjs +2 -72
  122. package/dist/jsx/SelectViewport.mjs.map +2 -2
  123. package/dist/jsx/SelectViewport.native.js +1 -17
  124. package/dist/jsx/SelectViewport.native.js.map +2 -2
  125. package/dist/jsx/SelectViewport.native.mjs +1 -17
  126. package/dist/jsx/SelectViewport.native.mjs.map +2 -2
  127. package/dist/jsx/constants.js +1 -16
  128. package/dist/jsx/constants.js.map +2 -2
  129. package/dist/jsx/constants.mjs +1 -16
  130. package/dist/jsx/constants.mjs.map +2 -2
  131. package/dist/jsx/context.js +1 -14
  132. package/dist/jsx/context.js.map +2 -2
  133. package/dist/jsx/context.mjs +1 -14
  134. package/dist/jsx/context.mjs.map +2 -2
  135. package/dist/jsx/index.js +1 -2
  136. package/dist/jsx/index.js.map +1 -1
  137. package/dist/jsx/index.mjs +1 -2
  138. package/dist/jsx/index.mjs.map +1 -1
  139. package/dist/jsx/useSelectBreakpointActive.js +1 -17
  140. package/dist/jsx/useSelectBreakpointActive.js.map +2 -2
  141. package/dist/jsx/useSelectBreakpointActive.mjs +1 -17
  142. package/dist/jsx/useSelectBreakpointActive.mjs.map +2 -2
  143. package/package.json +16 -16
@@ -1,287 +1,2 @@
1
- import {
2
- autoUpdate,
3
- flip,
4
- inner,
5
- offset,
6
- shift,
7
- size,
8
- useClick,
9
- useDismiss,
10
- useFloating,
11
- useInnerOffset,
12
- useInteractions,
13
- useListNavigation,
14
- useRole,
15
- useTypeahead
16
- } from "@floating-ui/react";
17
- import {
18
- isClient,
19
- isWeb,
20
- useIsTouchDevice,
21
- useIsomorphicLayoutEffect
22
- } from "@tamagui/core";
23
- import * as React from "react";
24
- import { flushSync } from "react-dom";
25
- import { SCROLL_ARROW_THRESHOLD, WINDOW_PADDING } from "./constants";
26
- import { SelectProvider, useSelectContext } from "./context";
27
- const SelectInlineImpl = (props) => {
28
- const {
29
- __scopeSelect,
30
- children,
31
- open = false,
32
- selectedIndexRef,
33
- listContentRef
34
- } = props;
35
- const selectContext = useSelectContext("SelectSheetImpl", __scopeSelect);
36
- const {
37
- setActiveIndex,
38
- setOpen,
39
- setSelectedIndex,
40
- selectedIndex,
41
- activeIndex,
42
- forceUpdate
43
- } = selectContext;
44
- const [scrollTop, setScrollTop] = React.useState(0);
45
- const touch = useIsTouchDevice();
46
- const listItemsRef = React.useRef([]);
47
- const overflowRef = React.useRef(null);
48
- const upArrowRef = React.useRef(null);
49
- const downArrowRef = React.useRef(null);
50
- const allowSelectRef = React.useRef(false);
51
- const allowMouseUpRef = React.useRef(true);
52
- const selectTimeoutRef = React.useRef();
53
- const state = React.useRef({
54
- isMouseOutside: false
55
- });
56
- const [controlledScrolling, setControlledScrolling] = React.useState(false);
57
- const [fallback, setFallback] = React.useState(false);
58
- const [innerOffset, setInnerOffset] = React.useState(0);
59
- const [blockSelection, setBlockSelection] = React.useState(false);
60
- const floatingStyle = React.useRef({});
61
- React.useEffect(() => {
62
- const frame = requestAnimationFrame(() => {
63
- if (!open) {
64
- setScrollTop(0);
65
- setFallback(false);
66
- setActiveIndex(null);
67
- setControlledScrolling(false);
68
- }
69
- });
70
- return () => {
71
- cancelAnimationFrame(frame);
72
- };
73
- }, [open, setActiveIndex]);
74
- if (isWeb && isClient) {
75
- React.useEffect(() => {
76
- if (!open)
77
- return;
78
- const mouseUp = (e) => {
79
- if (state.current.isMouseOutside) {
80
- setOpen(false);
81
- }
82
- };
83
- document.addEventListener("mouseup", mouseUp);
84
- return () => {
85
- document.removeEventListener("mouseup", mouseUp);
86
- };
87
- }, [open]);
88
- }
89
- const updateFloatingSize = size({
90
- apply({
91
- availableHeight,
92
- rects: {
93
- reference: { width }
94
- }
95
- }) {
96
- floatingStyle.current = {
97
- width,
98
- maxHeight: availableHeight
99
- };
100
- },
101
- padding: WINDOW_PADDING
102
- });
103
- const { x, y, reference, floating, strategy, context, refs } = useFloating({
104
- open,
105
- onOpenChange: setOpen,
106
- whileElementsMounted: autoUpdate,
107
- placement: "bottom-start",
108
- middleware: fallback ? [
109
- offset(5),
110
- ...[
111
- touch ? shift({ crossAxis: true, padding: WINDOW_PADDING }) : flip({ padding: WINDOW_PADDING })
112
- ],
113
- updateFloatingSize
114
- ] : [
115
- inner({
116
- listRef: listItemsRef,
117
- overflowRef,
118
- index: selectedIndex,
119
- offset: innerOffset,
120
- onFallbackChange: setFallback,
121
- padding: 10,
122
- minItemsVisible: touch ? 10 : 4,
123
- referenceOverflowThreshold: 20
124
- }),
125
- updateFloatingSize
126
- ]
127
- });
128
- const floatingRef = refs.floating;
129
- const showUpArrow = open && scrollTop > SCROLL_ARROW_THRESHOLD;
130
- const showDownArrow = open && floatingRef.current && scrollTop < floatingRef.current.scrollHeight - floatingRef.current.clientHeight - SCROLL_ARROW_THRESHOLD;
131
- const interactions = useInteractions([
132
- useClick(context, { event: "mousedown" }),
133
- useDismiss(context, { outsidePress: true }),
134
- useRole(context, { role: "listbox" }),
135
- useInnerOffset(context, {
136
- enabled: !fallback,
137
- onChange: setInnerOffset,
138
- overflowRef
139
- }),
140
- useListNavigation(context, {
141
- listRef: listItemsRef,
142
- activeIndex,
143
- selectedIndex,
144
- onNavigate: setActiveIndex
145
- }),
146
- useTypeahead(context, {
147
- listRef: listContentRef,
148
- onMatch: open ? setActiveIndex : setSelectedIndex,
149
- selectedIndex,
150
- activeIndex
151
- })
152
- ]);
153
- const interactionsContext = React.useMemo(() => {
154
- return {
155
- ...interactions,
156
- getReferenceProps() {
157
- return interactions.getReferenceProps({
158
- ref: reference,
159
- className: "SelectTrigger",
160
- onKeyDown(event) {
161
- if (event.key === "Enter" || event.key === " " && !context.dataRef.current.typing) {
162
- event.preventDefault();
163
- setOpen(true);
164
- }
165
- }
166
- });
167
- },
168
- getFloatingProps(props2) {
169
- return interactions.getFloatingProps({
170
- ref: floating,
171
- className: "Select",
172
- ...props2,
173
- style: {
174
- position: strategy,
175
- top: y ?? "",
176
- left: x ?? "",
177
- outline: 0,
178
- scrollbarWidth: "none",
179
- ...floatingStyle.current,
180
- ...props2?.style
181
- },
182
- onPointerEnter() {
183
- setControlledScrolling(false);
184
- state.current.isMouseOutside = false;
185
- },
186
- onPointerLeave() {
187
- state.current.isMouseOutside = true;
188
- },
189
- onPointerMove() {
190
- state.current.isMouseOutside = false;
191
- setControlledScrolling(false);
192
- },
193
- onKeyDown() {
194
- setControlledScrolling(true);
195
- },
196
- onContextMenu(e) {
197
- e.preventDefault();
198
- },
199
- onScroll(event) {
200
- flushSync(() => setScrollTop(event.currentTarget.scrollTop));
201
- }
202
- });
203
- }
204
- };
205
- }, [floating, y, x, interactions]);
206
- useIsomorphicLayoutEffect(() => {
207
- if (open) {
208
- selectTimeoutRef.current = setTimeout(() => {
209
- allowSelectRef.current = true;
210
- }, 300);
211
- return () => {
212
- clearTimeout(selectTimeoutRef.current);
213
- };
214
- } else {
215
- allowSelectRef.current = false;
216
- allowMouseUpRef.current = true;
217
- setInnerOffset(0);
218
- setFallback(false);
219
- setBlockSelection(false);
220
- }
221
- }, [open]);
222
- useIsomorphicLayoutEffect(() => {
223
- function onPointerDown(e) {
224
- const target = e.target;
225
- if (!(refs.floating.current?.contains(target) || upArrowRef.current?.contains(target) || downArrowRef.current?.contains(target))) {
226
- setOpen(false);
227
- setControlledScrolling(false);
228
- }
229
- }
230
- if (open) {
231
- document.addEventListener("pointerdown", onPointerDown);
232
- return () => {
233
- document.removeEventListener("pointerdown", onPointerDown);
234
- };
235
- }
236
- }, [open, refs, setOpen]);
237
- useIsomorphicLayoutEffect(() => {
238
- if (open && controlledScrolling) {
239
- if (activeIndex != null) {
240
- listItemsRef.current[activeIndex]?.scrollIntoView({ block: "nearest" });
241
- }
242
- }
243
- setScrollTop(refs.floating.current?.scrollTop ?? 0);
244
- }, [open, refs, controlledScrolling, activeIndex]);
245
- useIsomorphicLayoutEffect(() => {
246
- if (open && fallback) {
247
- if (selectedIndex != null) {
248
- listItemsRef.current[selectedIndex]?.scrollIntoView({ block: "nearest" });
249
- }
250
- }
251
- }, [open, fallback, selectedIndex]);
252
- useIsomorphicLayoutEffect(() => {
253
- if (refs.floating.current && fallback) {
254
- refs.floating.current.style.maxHeight = "";
255
- }
256
- }, [refs, fallback]);
257
- return <SelectProvider
258
- scope={__scopeSelect}
259
- {...selectContext}
260
- setScrollTop={setScrollTop}
261
- setInnerOffset={setInnerOffset}
262
- floatingRef={floatingRef}
263
- setValueAtIndex={(index, value) => {
264
- listContentRef.current[index] = value;
265
- }}
266
- fallback={fallback}
267
- interactions={interactionsContext}
268
- floatingContext={context}
269
- activeIndex={activeIndex}
270
- canScrollDown={!!showDownArrow}
271
- canScrollUp={!!showUpArrow}
272
- controlledScrolling={controlledScrolling}
273
- dataRef={context.dataRef}
274
- listRef={listItemsRef}
275
- blockSelection={blockSelection}
276
- allowMouseUpRef={allowMouseUpRef}
277
- upArrowRef={upArrowRef}
278
- downArrowRef={downArrowRef}
279
- selectTimeoutRef={selectTimeoutRef}
280
- allowSelectRef={allowSelectRef}
281
- >{children}</SelectProvider>;
282
- };
283
- const userAgent = typeof navigator !== "undefined" && navigator.userAgent || "";
284
- export {
285
- SelectInlineImpl
286
- };
1
+ import{autoUpdate as Y,flip as Z,inner as $,offset as ee,shift as te,size as ne,useClick as oe,useDismiss as re,useFloating as se,useInnerOffset as le,useInteractions as ce,useListNavigation as ie,useRole as ue,useTypeahead as ae}from"@floating-ui/react";import{isClient as fe,isWeb as de,useIsTouchDevice as pe,useIsomorphicLayoutEffect as d}from"@tamagui/core";import*as t from"react";import{flushSync as me}from"react-dom";import{SCROLL_ARROW_THRESHOLD as W,WINDOW_PADDING as O}from"./constants";import{SelectProvider as Re,useSelectContext as Se}from"./context";const Ee=_=>{const{__scopeSelect:T,children:V,open:n=!1,selectedIndexRef:we,listContentRef:b}=_,A=Se("SelectSheetImpl",T),{setActiveIndex:p,setOpen:u,setSelectedIndex:j,selectedIndex:c,activeIndex:i,forceUpdate:ve}=A,[E,m]=t.useState(0),M=pe(),a=t.useRef([]),D=t.useRef(null),P=t.useRef(null),C=t.useRef(null),w=t.useRef(!1),L=t.useRef(!0),v=t.useRef(),g=t.useRef({isMouseOutside:!1}),[I,f]=t.useState(!1),[l,h]=t.useState(!1),[q,x]=t.useState(0),[z,K]=t.useState(!1),k=t.useRef({});t.useEffect(()=>{const e=requestAnimationFrame(()=>{n||(m(0),h(!1),p(null),f(!1))});return()=>{cancelAnimationFrame(e)}},[n,p]),de&&fe&&t.useEffect(()=>{if(!n)return;const e=o=>{g.current.isMouseOutside&&u(!1)};return document.addEventListener("mouseup",e),()=>{document.removeEventListener("mouseup",e)}},[n]);const H=ne({apply({availableHeight:e,rects:{reference:{width:o}}}){k.current={width:o,maxHeight:e}},padding:O}),{x:F,y:N,reference:B,floating:U,strategy:G,context:r,refs:s}=se({open:n,onOpenChange:u,whileElementsMounted:Y,placement:"bottom-start",middleware:l?[ee(5),M?te({crossAxis:!0,padding:O}):Z({padding:O}),H]:[$({listRef:a,overflowRef:D,index:c,offset:q,onFallbackChange:h,padding:10,minItemsVisible:M?10:4,referenceOverflowThreshold:20}),H]}),R=s.floating,J=n&&E>W,Q=n&&R.current&&E<R.current.scrollHeight-R.current.clientHeight-W,S=ce([oe(r,{event:"mousedown"}),re(r,{outsidePress:!0}),ue(r,{role:"listbox"}),le(r,{enabled:!l,onChange:x,overflowRef:D}),ie(r,{listRef:a,activeIndex:i,selectedIndex:c,onNavigate:p}),ae(r,{listRef:b,onMatch:n?p:j,selectedIndex:c,activeIndex:i})]),X=t.useMemo(()=>({...S,getReferenceProps(){return S.getReferenceProps({ref:B,className:"SelectTrigger",onKeyDown(e){(e.key==="Enter"||e.key===" "&&!r.dataRef.current.typing)&&(e.preventDefault(),u(!0))}})},getFloatingProps(e){return S.getFloatingProps({ref:U,className:"Select",...e,style:{position:G,top:N??"",left:F??"",outline:0,scrollbarWidth:"none",...k.current,...e?.style},onPointerEnter(){f(!1),g.current.isMouseOutside=!1},onPointerLeave(){g.current.isMouseOutside=!0},onPointerMove(){g.current.isMouseOutside=!1,f(!1)},onKeyDown(){f(!0)},onContextMenu(o){o.preventDefault()},onScroll(o){me(()=>m(o.currentTarget.scrollTop))}})}}),[U,N,F,S]);return d(()=>{if(n)return v.current=setTimeout(()=>{w.current=!0},300),()=>{clearTimeout(v.current)};w.current=!1,L.current=!0,x(0),h(!1),K(!1)},[n]),d(()=>{function e(o){const y=o.target;s.floating.current?.contains(y)||P.current?.contains(y)||C.current?.contains(y)||(u(!1),f(!1))}if(n)return document.addEventListener("pointerdown",e),()=>{document.removeEventListener("pointerdown",e)}},[n,s,u]),d(()=>{n&&I&&i!=null&&a.current[i]?.scrollIntoView({block:"nearest"}),m(s.floating.current?.scrollTop??0)},[n,s,I,i]),d(()=>{n&&l&&c!=null&&a.current[c]?.scrollIntoView({block:"nearest"})},[n,l,c]),d(()=>{s.floating.current&&l&&(s.floating.current.style.maxHeight="")},[s,l]),<Re scope={T}{...A}setScrollTop={m}setInnerOffset={x}floatingRef={R}setValueAtIndex={(e,o)=>{b.current[e]=o}}fallback={l}interactions={X}floatingContext={r}activeIndex={i}canScrollDown={!!Q}canScrollUp={!!J}controlledScrolling={I}dataRef={r.dataRef}listRef={a}blockSelection={z}allowMouseUpRef={L}upArrowRef={P}downArrowRef={C}selectTimeoutRef={v}allowSelectRef={w}>{V}</Re>},Me=typeof navigator<"u"&&navigator.userAgent||"";export{Ee as SelectInlineImpl};
287
2
  //# sourceMappingURL=SelectImpl.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectImpl.tsx"],
4
4
  "sourcesContent": ["import {\n SideObject,\n autoUpdate,\n flip,\n inner,\n offset,\n shift,\n size,\n useClick,\n useDismiss,\n useFloating,\n useInnerOffset,\n useInteractions,\n useListNavigation,\n useRole,\n useTypeahead,\n} from '@floating-ui/react'\nimport {\n isClient,\n isWeb,\n useIsTouchDevice,\n useIsomorphicLayoutEffect,\n} from '@tamagui/core'\nimport * as React from 'react'\nimport { flushSync } from 'react-dom'\n\nimport { SCROLL_ARROW_THRESHOLD, WINDOW_PADDING } from './constants'\nimport { SelectProvider, useSelectContext } from './context'\nimport { SelectImplProps } from './types'\n\n// TODO use id for focusing from label\nexport const SelectInlineImpl = (props: SelectImplProps) => {\n const {\n __scopeSelect,\n children,\n open = false,\n selectedIndexRef,\n listContentRef,\n } = props\n\n const selectContext = useSelectContext('SelectSheetImpl', __scopeSelect)\n const {\n setActiveIndex,\n setOpen,\n setSelectedIndex,\n selectedIndex,\n activeIndex,\n forceUpdate,\n } = selectContext\n const [scrollTop, setScrollTop] = React.useState(0)\n const touch = useIsTouchDevice()\n\n const listItemsRef = React.useRef<Array<HTMLElement | null>>([])\n const overflowRef = React.useRef<null | SideObject>(null)\n const upArrowRef = React.useRef<HTMLDivElement | null>(null)\n const downArrowRef = React.useRef<HTMLDivElement | null>(null)\n const allowSelectRef = React.useRef(false)\n const allowMouseUpRef = React.useRef(true)\n const selectTimeoutRef = React.useRef<any>()\n const state = React.useRef({\n isMouseOutside: false,\n })\n\n const [controlledScrolling, setControlledScrolling] = React.useState(false)\n const [fallback, setFallback] = React.useState(false)\n const [innerOffset, setInnerOffset] = React.useState(0)\n const [blockSelection, setBlockSelection] = React.useState(false)\n const floatingStyle = React.useRef({})\n\n // Wait for scroll position to settle before showing arrows to prevent\n // interference with pointer events.\n React.useEffect(() => {\n const frame = requestAnimationFrame(() => {\n if (!open) {\n setScrollTop(0)\n setFallback(false)\n setActiveIndex(null)\n setControlledScrolling(false)\n }\n })\n return () => {\n cancelAnimationFrame(frame)\n }\n }, [open, setActiveIndex])\n\n // close when mouseup outside select\n if (isWeb && isClient) {\n React.useEffect(() => {\n if (!open) return\n const mouseUp = (e: MouseEvent) => {\n if (state.current.isMouseOutside) {\n setOpen(false)\n }\n }\n document.addEventListener('mouseup', mouseUp)\n return () => {\n document.removeEventListener('mouseup', mouseUp)\n }\n }, [open])\n }\n\n const updateFloatingSize = size({\n apply({\n availableHeight,\n rects: {\n reference: { width },\n },\n }) {\n floatingStyle.current = {\n width: width,\n maxHeight: availableHeight,\n }\n },\n padding: WINDOW_PADDING,\n })\n\n const { x, y, reference, floating, strategy, context, refs } = useFloating({\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n placement: 'bottom-start',\n middleware: fallback\n ? [\n offset(5),\n ...[\n touch\n ? shift({ crossAxis: true, padding: WINDOW_PADDING })\n : flip({ padding: WINDOW_PADDING }),\n ],\n updateFloatingSize,\n ]\n : [\n inner({\n listRef: listItemsRef,\n overflowRef,\n index: selectedIndex,\n offset: innerOffset,\n onFallbackChange: setFallback,\n padding: 10,\n minItemsVisible: touch ? 10 : 4,\n referenceOverflowThreshold: 20,\n }),\n updateFloatingSize,\n ],\n })\n\n const floatingRef = refs.floating\n\n const showUpArrow = open && scrollTop > SCROLL_ARROW_THRESHOLD\n const showDownArrow =\n open &&\n floatingRef.current &&\n scrollTop <\n floatingRef.current.scrollHeight -\n floatingRef.current.clientHeight -\n SCROLL_ARROW_THRESHOLD\n\n const interactions = useInteractions([\n useClick(context, { event: 'mousedown' }),\n useDismiss(context, { outsidePress: true }),\n useRole(context, { role: 'listbox' }),\n useInnerOffset(context, {\n enabled: !fallback,\n onChange: setInnerOffset,\n overflowRef,\n }),\n useListNavigation(context, {\n listRef: listItemsRef,\n activeIndex,\n selectedIndex,\n onNavigate: setActiveIndex,\n }),\n useTypeahead(context, {\n listRef: listContentRef,\n onMatch: open ? setActiveIndex : setSelectedIndex,\n selectedIndex,\n activeIndex,\n }),\n ])\n\n const interactionsContext = React.useMemo(() => {\n return {\n ...interactions,\n getReferenceProps() {\n return interactions.getReferenceProps({\n ref: reference,\n className: 'SelectTrigger',\n onKeyDown(event) {\n if (\n event.key === 'Enter' ||\n (event.key === ' ' && !context.dataRef.current.typing)\n ) {\n event.preventDefault()\n setOpen(true)\n }\n },\n })\n },\n getFloatingProps(props) {\n return interactions.getFloatingProps({\n ref: floating,\n className: 'Select',\n ...props,\n style: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n outline: 0,\n scrollbarWidth: 'none',\n ...floatingStyle.current,\n ...props?.style,\n },\n onPointerEnter() {\n setControlledScrolling(false)\n state.current.isMouseOutside = false\n },\n onPointerLeave() {\n state.current.isMouseOutside = true\n },\n onPointerMove() {\n state.current.isMouseOutside = false\n setControlledScrolling(false)\n },\n onKeyDown() {\n setControlledScrolling(true)\n },\n onContextMenu(e) {\n e.preventDefault()\n },\n onScroll(event) {\n // In React 18, the ScrollArrows need to synchronously know this value to prevent\n // painting at the wrong time.\n flushSync(() => setScrollTop(event.currentTarget.scrollTop))\n },\n })\n },\n }\n }, [floating, y, x, interactions])\n\n // effects\n\n useIsomorphicLayoutEffect(() => {\n if (open) {\n selectTimeoutRef.current = setTimeout(() => {\n allowSelectRef.current = true\n }, 300)\n\n return () => {\n clearTimeout(selectTimeoutRef.current)\n }\n } else {\n allowSelectRef.current = false\n allowMouseUpRef.current = true\n setInnerOffset(0)\n setFallback(false)\n setBlockSelection(false)\n }\n }, [open])\n\n // Replacement for `useDismiss` as the arrows are outside of the floating\n // element DOM tree.\n useIsomorphicLayoutEffect(() => {\n function onPointerDown(e: PointerEvent) {\n const target = e.target as Node\n if (\n !(\n refs.floating.current?.contains(target) ||\n upArrowRef.current?.contains(target) ||\n downArrowRef.current?.contains(target)\n )\n ) {\n setOpen(false)\n setControlledScrolling(false)\n }\n }\n\n if (open) {\n document.addEventListener('pointerdown', onPointerDown)\n return () => {\n document.removeEventListener('pointerdown', onPointerDown)\n }\n }\n }, [open, refs, setOpen])\n\n // Scroll the `activeIndex` item into view only in \"controlledScrolling\"\n // (keyboard nav) mode.\n useIsomorphicLayoutEffect(() => {\n if (open && controlledScrolling) {\n if (activeIndex != null) {\n listItemsRef.current[activeIndex]?.scrollIntoView({ block: 'nearest' })\n }\n }\n\n setScrollTop(refs.floating.current?.scrollTop ?? 0)\n }, [open, refs, controlledScrolling, activeIndex])\n\n // Scroll the `selectedIndex` into view upon opening the floating element.\n useIsomorphicLayoutEffect(() => {\n if (open && fallback) {\n if (selectedIndex != null) {\n listItemsRef.current[selectedIndex]?.scrollIntoView({ block: 'nearest' })\n }\n }\n }, [open, fallback, selectedIndex])\n\n // Unset the height limiting for fallback mode. This gets executed prior to\n // the positioning call.\n useIsomorphicLayoutEffect(() => {\n if (refs.floating.current && fallback) {\n refs.floating.current.style.maxHeight = ''\n }\n }, [refs, fallback])\n\n // We set this to true by default so that events bubble to forms without JS (SSR)\n // const isFormControl = trigger ? Boolean(trigger.closest('form')) : true\n // const [bubbleSelect, setBubbleSelect] = React.useState<HTMLSelectElement | null>(null)\n // const triggerPointerDownPosRef = React.useRef<{ x: number; y: number } | null>(null)\n\n return (\n <SelectProvider\n scope={__scopeSelect}\n {...(selectContext as Required<typeof selectContext>)}\n setScrollTop={setScrollTop}\n setInnerOffset={setInnerOffset}\n floatingRef={floatingRef}\n setValueAtIndex={(index, value) => {\n listContentRef.current[index] = value\n }}\n fallback={fallback}\n interactions={interactionsContext}\n floatingContext={context}\n activeIndex={activeIndex}\n canScrollDown={!!showDownArrow}\n canScrollUp={!!showUpArrow}\n controlledScrolling={controlledScrolling}\n dataRef={context.dataRef}\n listRef={listItemsRef}\n blockSelection={blockSelection}\n allowMouseUpRef={allowMouseUpRef}\n upArrowRef={upArrowRef}\n downArrowRef={downArrowRef}\n selectTimeoutRef={selectTimeoutRef}\n allowSelectRef={allowSelectRef}\n >\n {children}\n {/* {isFormControl ? (\n <BubbleSelect\n ref={setBubbleSelect}\n aria-hidden\n tabIndex={-1}\n name={name}\n autoComplete={autoComplete}\n value={value}\n // enable form autofill\n onChange={(event) => setValue(event.target.value)}\n />\n ) : null} */}\n </SelectProvider>\n )\n}\n\n// Cross browser fixes for pinch-zooming/backdrop-filter \uD83D\uDE44\nconst userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || ''\n"],
5
- "mappings": "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",
6
- "names": ["props"]
5
+ "mappings": "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",
6
+ "names": ["autoUpdate", "flip", "inner", "offset", "shift", "size", "useClick", "useDismiss", "useFloating", "useInnerOffset", "useInteractions", "useListNavigation", "useRole", "useTypeahead", "isClient", "isWeb", "useIsTouchDevice", "useIsomorphicLayoutEffect", "React", "flushSync", "SCROLL_ARROW_THRESHOLD", "WINDOW_PADDING", "SelectProvider", "useSelectContext", "SelectInlineImpl", "props", "__scopeSelect", "children", "open", "selectedIndexRef", "listContentRef", "selectContext", "setActiveIndex", "setOpen", "setSelectedIndex", "selectedIndex", "activeIndex", "forceUpdate", "scrollTop", "setScrollTop", "touch", "listItemsRef", "overflowRef", "upArrowRef", "downArrowRef", "allowSelectRef", "allowMouseUpRef", "selectTimeoutRef", "state", "controlledScrolling", "setControlledScrolling", "fallback", "setFallback", "innerOffset", "setInnerOffset", "blockSelection", "setBlockSelection", "floatingStyle", "frame", "mouseUp", "e", "updateFloatingSize", "availableHeight", "width", "x", "y", "reference", "floating", "strategy", "context", "refs", "floatingRef", "showUpArrow", "showDownArrow", "interactions", "interactionsContext", "event", "onPointerDown", "target", "index", "value", "userAgent"]
7
7
  }
@@ -1,10 +1,2 @@
1
- const SelectInlineImpl = (props) => {
2
- if (process.env.NODE_ENV === "development") {
3
- console.warn("Sheet not implemented inline on native");
4
- }
5
- return <>{props.children}</>;
6
- };
7
- export {
8
- SelectInlineImpl
9
- };
1
+ const o=e=>(process.env.NODE_ENV==="development"&&console.warn("Sheet not implemented inline on native"),<>{e.children}</>);export{o as SelectInlineImpl};
10
2
  //# sourceMappingURL=SelectImpl.native.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectImpl.native.tsx"],
4
4
  "sourcesContent": ["import { SelectImplProps } from './types'\n\n/**\n * TODO can just make it a sheet for native\n * later on can have `native` prop\n */\n\nexport const SelectInlineImpl = (props: SelectImplProps) => {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('Sheet not implemented inline on native')\n }\n return <>{props.children}</>\n}\n"],
5
- "mappings": "AAOO,MAAM,mBAAmB,CAAC,UAA2B;AAC1D,MAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,YAAQ,KAAK,wCAAwC;AAAA,EACvD;AACA,SAAO,GAAG,MAAM,SAAS;AAC3B;",
6
- "names": []
5
+ "mappings": "AAOO,MAAMA,EAAoBC,IAC3B,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KAAK,wCAAwC,EAEhD,GAAGA,EAAM,SAAS",
6
+ "names": ["SelectInlineImpl", "props"]
7
7
  }
@@ -1,10 +1,2 @@
1
- const SelectInlineImpl = (props) => {
2
- if (process.env.NODE_ENV === "development") {
3
- console.warn("Sheet not implemented inline on native");
4
- }
5
- return <>{props.children}</>;
6
- };
7
- export {
8
- SelectInlineImpl
9
- };
1
+ const o=e=>(process.env.NODE_ENV==="development"&&console.warn("Sheet not implemented inline on native"),<>{e.children}</>);export{o as SelectInlineImpl};
10
2
  //# sourceMappingURL=SelectImpl.native.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectImpl.native.tsx"],
4
4
  "sourcesContent": ["import { SelectImplProps } from './types'\n\n/**\n * TODO can just make it a sheet for native\n * later on can have `native` prop\n */\n\nexport const SelectInlineImpl = (props: SelectImplProps) => {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('Sheet not implemented inline on native')\n }\n return <>{props.children}</>\n}\n"],
5
- "mappings": "AAOO,MAAM,mBAAmB,CAAC,UAA2B;AAC1D,MAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,YAAQ,KAAK,wCAAwC;AAAA,EACvD;AACA,SAAO,GAAG,MAAM,SAAS;AAC3B;",
6
- "names": []
5
+ "mappings": "AAOO,MAAMA,EAAoBC,IAC3B,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KAAK,wCAAwC,EAEhD,GAAGA,EAAM,SAAS",
6
+ "names": ["SelectInlineImpl", "props"]
7
7
  }
@@ -1,127 +1,2 @@
1
- import { autoUpdate, offset, useFloating } from "@floating-ui/react";
2
- import { useComposedRefs } from "@tamagui/compose-refs";
3
- import { useIsomorphicLayoutEffect } from "@tamagui/core";
4
- import { YStack } from "@tamagui/stacks";
5
- import * as React from "react";
6
- import { flushSync } from "react-dom";
7
- import { useSelectContext } from "./context";
8
- const SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton";
9
- const SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {
10
- return <SelectScrollButtonImpl
11
- componentName={SCROLL_UP_BUTTON_NAME}
12
- {...props}
13
- dir="up"
14
- ref={forwardedRef}
15
- />;
16
- });
17
- SelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;
18
- const SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton";
19
- const SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {
20
- return <SelectScrollButtonImpl
21
- componentName={SCROLL_DOWN_BUTTON_NAME}
22
- {...props}
23
- dir="down"
24
- ref={forwardedRef}
25
- />;
26
- });
27
- SelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;
28
- const SelectScrollButtonImpl = React.memo(
29
- React.forwardRef(
30
- (props, forwardedRef) => {
31
- const { __scopeSelect, dir, componentName, ...scrollIndicatorProps } = props;
32
- const {
33
- floatingRef,
34
- forceUpdate,
35
- open,
36
- fallback,
37
- setScrollTop,
38
- setInnerOffset,
39
- ...context
40
- } = useSelectContext(componentName, __scopeSelect);
41
- const [element, setElement] = React.useState(null);
42
- const statusRef = React.useRef("idle");
43
- const isVisible = context[dir === "down" ? "canScrollDown" : "canScrollUp"];
44
- const frameRef = React.useRef();
45
- const { x, y, reference, floating, strategy, update, refs } = useFloating({
46
- open: open && isVisible,
47
- strategy: "fixed",
48
- placement: dir === "up" ? "top" : "bottom",
49
- middleware: [offset(({ rects }) => -rects.floating.height)],
50
- whileElementsMounted: (...args) => autoUpdate(...args, { animationFrame: true })
51
- });
52
- const composedRef = useComposedRefs(forwardedRef, floating);
53
- if (floatingRef) {
54
- if (open) {
55
- if (element !== floatingRef.current) {
56
- setElement(floatingRef.current);
57
- reference(floatingRef.current);
58
- requestAnimationFrame(update);
59
- }
60
- } else {
61
- cancelAnimationFrame(frameRef.current);
62
- }
63
- }
64
- useIsomorphicLayoutEffect(() => {
65
- return () => {
66
- cancelAnimationFrame(frameRef.current);
67
- };
68
- }, []);
69
- if (!(isVisible && floatingRef)) {
70
- return null;
71
- }
72
- const onScroll = (amount) => {
73
- console.log("on scroll?");
74
- if (fallback) {
75
- if (refs.floating.current) {
76
- refs.floating.current.scrollTop -= amount;
77
- flushSync(() => setScrollTop(refs.floating.current?.scrollTop ?? 0));
78
- }
79
- } else {
80
- flushSync(() => setInnerOffset((value) => value - amount));
81
- }
82
- };
83
- return <YStack
84
- ref={composedRef}
85
- componentName={componentName}
86
- aria-hidden
87
- {...scrollIndicatorProps}
88
- zIndex={1e3}
89
- position={strategy}
90
- left={x || 0}
91
- top={y || 0}
92
- width={`calc(${(floatingRef?.current?.offsetWidth ?? 0) - 2}px)`}
93
- onPointerEnter={() => {
94
- statusRef.current = "active";
95
- let prevNow = Date.now();
96
- function frame() {
97
- if (element) {
98
- const currentNow = Date.now();
99
- const msElapsed = currentNow - prevNow;
100
- prevNow = currentNow;
101
- const pixelsToScroll = msElapsed / 2;
102
- const remainingPixels = dir === "up" ? element.scrollTop : element.scrollHeight - element.clientHeight - element.scrollTop;
103
- const scrollRemaining = dir === "up" ? element.scrollTop - pixelsToScroll > 0 : element.scrollTop + pixelsToScroll < element.scrollHeight - element.clientHeight;
104
- onScroll(
105
- dir === "up" ? Math.min(pixelsToScroll, remainingPixels) : Math.max(-pixelsToScroll, -remainingPixels)
106
- );
107
- if (scrollRemaining) {
108
- frameRef.current = requestAnimationFrame(frame);
109
- }
110
- }
111
- }
112
- cancelAnimationFrame(frameRef.current);
113
- frameRef.current = requestAnimationFrame(frame);
114
- }}
115
- onPointerLeave={() => {
116
- statusRef.current = "idle";
117
- cancelAnimationFrame(frameRef.current);
118
- }}
119
- />;
120
- }
121
- )
122
- );
123
- export {
124
- SelectScrollDownButton,
125
- SelectScrollUpButton
126
- };
1
+ import{autoUpdate as q,offset as k,useFloating as W}from"@floating-ui/react";import{useComposedRefs as z}from"@tamagui/compose-refs";import{useIsomorphicLayoutEffect as V}from"@tamagui/core";import{YStack as Y}from"@tamagui/stacks";import*as o from"react";import{flushSync as B}from"react-dom";import{useSelectContext as $}from"./context";const P="SelectScrollUpButton",j=o.forwardRef((l,c)=><E componentName={P}{...l}dir="up"ref={c}/>);j.displayName=P;const T="SelectScrollDownButton",G=o.forwardRef((l,c)=><E componentName={T}{...l}dir="down"ref={c}/>);G.displayName=T;const E=o.memo(o.forwardRef((l,c)=>{const{__scopeSelect:R,dir:s,componentName:p,...N}=l,{floatingRef:r,forceUpdate:J,open:u,fallback:x,setScrollTop:I,setInnerOffset:y,...A}=$(p,R),[e,F]=o.useState(null),f=o.useRef("idle"),S=A[s==="down"?"canScrollDown":"canScrollUp"],n=o.useRef(),{x:U,y:_,reference:L,floating:D,strategy:M,update:O,refs:m}=W({open:u&&S,strategy:"fixed",placement:s==="up"?"top":"bottom",middleware:[k(({rects:t})=>-t.floating.height)],whileElementsMounted:(...t)=>q(...t,{animationFrame:!0})}),H=z(c,D);if(r&&(u?e!==r.current&&(F(r.current),L(r.current),requestAnimationFrame(O)):cancelAnimationFrame(n.current)),V(()=>()=>{cancelAnimationFrame(n.current)},[]),!(S&&r))return null;const b=t=>{console.log("on scroll?"),x?m.floating.current&&(m.floating.current.scrollTop-=t,B(()=>I(m.floating.current?.scrollTop??0))):B(()=>y(i=>i-t))};return<Y ref={H}componentName={p}aria-hidden{...N}zIndex={1e3}position={M}left={U||0}top={_||0}width={`calc(${(r?.current?.offsetWidth??0)-2}px)`}onPointerEnter={()=>{f.current="active";let t=Date.now();function i(){if(e){const d=Date.now(),v=d-t;t=d;const a=v/2,g=s==="up"?e.scrollTop:e.scrollHeight-e.clientHeight-e.scrollTop,C=s==="up"?e.scrollTop-a>0:e.scrollTop+a<e.scrollHeight-e.clientHeight;b(s==="up"?Math.min(a,g):Math.max(-a,-g)),C&&(n.current=requestAnimationFrame(i))}}cancelAnimationFrame(n.current),n.current=requestAnimationFrame(i)}}onPointerLeave={()=>{f.current="idle",cancelAnimationFrame(n.current)}}/>}));export{G as SelectScrollDownButton,j as SelectScrollUpButton};
127
2
  //# sourceMappingURL=SelectScrollButton.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/SelectScrollButton.tsx"],
4
4
  "sourcesContent": ["import { autoUpdate, offset, useFloating } from '@floating-ui/react'\nimport { useComposedRefs } from '@tamagui/compose-refs'\nimport { TamaguiElement, useIsomorphicLayoutEffect } from '@tamagui/core'\nimport { YStack } from '@tamagui/stacks'\nimport * as React from 'react'\nimport { flushSync } from 'react-dom'\n\nimport { useSelectContext } from './context'\nimport {\n ScopedProps,\n SelectScrollButtonImplProps,\n SelectScrollButtonProps,\n} from './types'\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollUpButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_UP_BUTTON_NAME = 'SelectScrollUpButton'\n\nexport const SelectScrollUpButton = React.forwardRef<\n TamaguiElement,\n SelectScrollButtonProps\n>((props: ScopedProps<SelectScrollButtonProps>, forwardedRef) => {\n return (\n <SelectScrollButtonImpl\n componentName={SCROLL_UP_BUTTON_NAME}\n {...props}\n dir=\"up\"\n ref={forwardedRef}\n />\n )\n})\n\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * SelectScrollDownButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SCROLL_DOWN_BUTTON_NAME = 'SelectScrollDownButton'\n\nexport const SelectScrollDownButton = React.forwardRef<\n TamaguiElement,\n SelectScrollButtonProps\n>((props: ScopedProps<SelectScrollButtonProps>, forwardedRef) => {\n return (\n <SelectScrollButtonImpl\n componentName={SCROLL_DOWN_BUTTON_NAME}\n {...props}\n dir=\"down\"\n ref={forwardedRef}\n />\n )\n})\n\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME\n\ntype SelectScrollButtonImplElement = TamaguiElement\n\nconst SelectScrollButtonImpl = React.memo(\n React.forwardRef<SelectScrollButtonImplElement, SelectScrollButtonImplProps>(\n (props: ScopedProps<SelectScrollButtonImplProps>, forwardedRef) => {\n const { __scopeSelect, dir, componentName, ...scrollIndicatorProps } = props\n const {\n floatingRef,\n forceUpdate,\n open,\n fallback,\n setScrollTop,\n setInnerOffset,\n ...context\n } = useSelectContext(componentName, __scopeSelect)\n\n const [element, setElement] = React.useState<HTMLElement | null>(null)\n const statusRef = React.useRef<'idle' | 'active'>('idle')\n const isVisible = context[dir === 'down' ? 'canScrollDown' : 'canScrollUp']\n const frameRef = React.useRef<any>()\n\n const { x, y, reference, floating, strategy, update, refs } = useFloating({\n open: open && isVisible,\n strategy: 'fixed',\n placement: dir === 'up' ? 'top' : 'bottom',\n middleware: [offset(({ rects }) => -rects.floating.height)],\n whileElementsMounted: (...args) => autoUpdate(...args, { animationFrame: true }),\n })\n\n const composedRef = useComposedRefs(forwardedRef, floating)\n\n if (floatingRef) {\n if (open) {\n if (element !== floatingRef.current) {\n setElement(floatingRef.current)\n reference(floatingRef.current)\n requestAnimationFrame(update)\n }\n } else {\n cancelAnimationFrame(frameRef.current)\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n cancelAnimationFrame(frameRef.current)\n }\n }, [])\n\n if (!(isVisible && floatingRef)) {\n return null\n }\n\n const onScroll = (amount: number) => {\n console.log('on scroll?')\n if (fallback) {\n if (refs.floating.current) {\n refs.floating.current.scrollTop -= amount\n flushSync(() => setScrollTop!(refs.floating.current?.scrollTop ?? 0))\n }\n } else {\n flushSync(() => setInnerOffset!((value) => value - amount))\n }\n }\n\n return (\n <YStack\n ref={composedRef}\n componentName={componentName}\n aria-hidden\n {...scrollIndicatorProps}\n zIndex={1000}\n // @ts-expect-error\n position={strategy}\n left={x || 0}\n top={y || 0}\n width={`calc(${(floatingRef?.current?.offsetWidth ?? 0) - 2}px)`}\n onPointerEnter={() => {\n statusRef.current = 'active'\n let prevNow = Date.now()\n\n function frame() {\n if (element) {\n const currentNow = Date.now()\n const msElapsed = currentNow - prevNow\n prevNow = currentNow\n\n const pixelsToScroll = msElapsed / 2\n\n const remainingPixels =\n dir === 'up'\n ? element.scrollTop\n : element.scrollHeight - element.clientHeight - element.scrollTop\n\n const scrollRemaining =\n dir === 'up'\n ? element.scrollTop - pixelsToScroll > 0\n : element.scrollTop + pixelsToScroll <\n element.scrollHeight - element.clientHeight\n\n onScroll(\n dir === 'up'\n ? Math.min(pixelsToScroll, remainingPixels)\n : Math.max(-pixelsToScroll, -remainingPixels)\n )\n\n if (scrollRemaining) {\n frameRef.current = requestAnimationFrame(frame)\n }\n }\n }\n\n cancelAnimationFrame(frameRef.current)\n frameRef.current = requestAnimationFrame(frame)\n }}\n onPointerLeave={() => {\n statusRef.current = 'idle'\n cancelAnimationFrame(frameRef.current)\n }}\n />\n )\n }\n )\n)\n"],
5
- "mappings": "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",
6
- "names": []
5
+ "mappings": "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",
6
+ "names": ["autoUpdate", "offset", "useFloating", "useComposedRefs", "useIsomorphicLayoutEffect", "YStack", "React", "flushSync", "useSelectContext", "SCROLL_UP_BUTTON_NAME", "SelectScrollUpButton", "props", "forwardedRef", "SelectScrollButtonImpl", "SCROLL_DOWN_BUTTON_NAME", "SelectScrollDownButton", "__scopeSelect", "dir", "componentName", "scrollIndicatorProps", "floatingRef", "forceUpdate", "open", "fallback", "setScrollTop", "setInnerOffset", "context", "element", "setElement", "statusRef", "isVisible", "frameRef", "x", "y", "reference", "floating", "strategy", "update", "refs", "rects", "args", "composedRef", "onScroll", "amount", "value", "prevNow", "frame", "currentNow", "msElapsed", "pixelsToScroll", "remainingPixels", "scrollRemaining"]
7
7
  }