@tamagui/sheet 1.61.2 → 1.62.0

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 (166) hide show
  1. package/dist/cjs/Sheet.js +16 -30
  2. package/dist/cjs/Sheet.js.map +1 -1
  3. package/dist/cjs/Sheet.native.js +119 -0
  4. package/dist/cjs/Sheet.native.js.map +6 -0
  5. package/dist/cjs/SheetContext.js +7 -13
  6. package/dist/cjs/SheetContext.js.map +1 -1
  7. package/dist/cjs/SheetContext.native.js +36 -0
  8. package/dist/cjs/SheetContext.native.js.map +6 -0
  9. package/dist/cjs/SheetController.js +7 -15
  10. package/dist/cjs/SheetController.js.map +1 -1
  11. package/dist/cjs/SheetController.native.js +42 -0
  12. package/dist/cjs/SheetController.native.js.map +6 -0
  13. package/dist/cjs/SheetImplementationCustom.js +99 -240
  14. package/dist/cjs/SheetImplementationCustom.js.map +2 -2
  15. package/dist/cjs/SheetImplementationCustom.native.js +281 -0
  16. package/dist/cjs/SheetImplementationCustom.native.js.map +6 -0
  17. package/dist/cjs/SheetScrollView.js +18 -44
  18. package/dist/cjs/SheetScrollView.js.map +1 -1
  19. package/dist/cjs/SheetScrollView.native.js +69 -0
  20. package/dist/cjs/SheetScrollView.native.js.map +6 -0
  21. package/dist/cjs/constants.js +7 -17
  22. package/dist/cjs/constants.js.map +1 -1
  23. package/dist/cjs/constants.native.js +36 -0
  24. package/dist/cjs/constants.native.js.map +6 -0
  25. package/dist/cjs/contexts.js +6 -11
  26. package/dist/cjs/contexts.js.map +1 -1
  27. package/dist/cjs/contexts.native.js +31 -0
  28. package/dist/cjs/contexts.native.js.map +6 -0
  29. package/dist/cjs/createSheet.js +42 -90
  30. package/dist/cjs/createSheet.js.map +2 -2
  31. package/dist/cjs/createSheet.native.js +146 -0
  32. package/dist/cjs/createSheet.native.js.map +6 -0
  33. package/dist/cjs/helpers.js +6 -13
  34. package/dist/cjs/helpers.js.map +1 -1
  35. package/dist/cjs/helpers.native.js +32 -0
  36. package/dist/cjs/helpers.native.js.map +6 -0
  37. package/dist/cjs/index.js +6 -11
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/index.native.js +36 -0
  40. package/dist/cjs/index.native.js.map +6 -0
  41. package/dist/cjs/nativeSheet.js +25 -42
  42. package/dist/cjs/nativeSheet.js.map +1 -1
  43. package/dist/cjs/nativeSheet.native.js +55 -0
  44. package/dist/cjs/nativeSheet.native.js.map +6 -0
  45. package/dist/cjs/types.js +3 -6
  46. package/dist/cjs/types.js.map +1 -1
  47. package/dist/cjs/types.native.js +15 -0
  48. package/dist/cjs/types.native.js.map +6 -0
  49. package/dist/cjs/useSheet.js +5 -9
  50. package/dist/cjs/useSheet.js.map +1 -1
  51. package/dist/cjs/useSheet.native.js +27 -0
  52. package/dist/cjs/useSheet.native.js.map +6 -0
  53. package/dist/cjs/useSheetController.js +8 -15
  54. package/dist/cjs/useSheetController.js.map +1 -1
  55. package/dist/cjs/useSheetController.native.js +39 -0
  56. package/dist/cjs/useSheetController.native.js.map +6 -0
  57. package/dist/cjs/useSheetOffscreenSize.js +13 -30
  58. package/dist/cjs/useSheetOffscreenSize.js.map +2 -2
  59. package/dist/cjs/useSheetOffscreenSize.native.js +48 -0
  60. package/dist/cjs/useSheetOffscreenSize.native.js.map +6 -0
  61. package/dist/cjs/useSheetOpenState.js +12 -21
  62. package/dist/cjs/useSheetOpenState.js.map +1 -1
  63. package/dist/cjs/useSheetOpenState.native.js +43 -0
  64. package/dist/cjs/useSheetOpenState.native.js.map +6 -0
  65. package/dist/cjs/useSheetProviderProps.js +44 -96
  66. package/dist/cjs/useSheetProviderProps.js.map +1 -1
  67. package/dist/cjs/useSheetProviderProps.native.js +116 -0
  68. package/dist/cjs/useSheetProviderProps.native.js.map +6 -0
  69. package/dist/esm/Sheet.js +9 -14
  70. package/dist/esm/Sheet.js.map +1 -1
  71. package/dist/esm/SheetContext.js +1 -2
  72. package/dist/esm/SheetContext.js.map +1 -1
  73. package/dist/esm/SheetController.js +2 -3
  74. package/dist/esm/SheetController.js.map +1 -1
  75. package/dist/esm/SheetImplementationCustom.js +95 -217
  76. package/dist/esm/SheetImplementationCustom.js.map +2 -2
  77. package/dist/esm/SheetScrollView.js +13 -31
  78. package/dist/esm/SheetScrollView.js.map +1 -1
  79. package/dist/esm/constants.js +2 -8
  80. package/dist/esm/constants.js.map +1 -1
  81. package/dist/esm/contexts.js +1 -2
  82. package/dist/esm/contexts.js.map +1 -1
  83. package/dist/esm/createSheet.js +38 -70
  84. package/dist/esm/createSheet.js.map +2 -2
  85. package/dist/esm/helpers.js +1 -4
  86. package/dist/esm/helpers.js.map +1 -1
  87. package/dist/esm/nativeSheet.js +20 -27
  88. package/dist/esm/nativeSheet.js.map +1 -1
  89. package/dist/esm/useSheetController.js +3 -6
  90. package/dist/esm/useSheetController.js.map +1 -1
  91. package/dist/esm/useSheetOffscreenSize.js +8 -21
  92. package/dist/esm/useSheetOffscreenSize.js.map +2 -2
  93. package/dist/esm/useSheetOpenState.js +6 -10
  94. package/dist/esm/useSheetOpenState.js.map +1 -1
  95. package/dist/esm/useSheetProviderProps.js +36 -79
  96. package/dist/esm/useSheetProviderProps.js.map +1 -1
  97. package/dist/jsx/Sheet.js +9 -14
  98. package/dist/jsx/Sheet.js.map +1 -1
  99. package/dist/jsx/Sheet.native.js +95 -0
  100. package/dist/jsx/Sheet.native.js.map +6 -0
  101. package/dist/jsx/SheetContext.js +1 -2
  102. package/dist/jsx/SheetContext.js.map +1 -1
  103. package/dist/jsx/SheetContext.native.js +13 -0
  104. package/dist/jsx/SheetContext.native.js.map +6 -0
  105. package/dist/jsx/SheetController.js +1 -2
  106. package/dist/jsx/SheetController.js.map +1 -1
  107. package/dist/jsx/SheetController.native.js +23 -0
  108. package/dist/jsx/SheetController.native.js.map +6 -0
  109. package/dist/jsx/SheetImplementationCustom.js +90 -210
  110. package/dist/jsx/SheetImplementationCustom.js.map +2 -2
  111. package/dist/jsx/SheetImplementationCustom.native.js +288 -0
  112. package/dist/jsx/SheetImplementationCustom.native.js.map +6 -0
  113. package/dist/jsx/SheetScrollView.js +12 -30
  114. package/dist/jsx/SheetScrollView.js.map +1 -1
  115. package/dist/jsx/SheetScrollView.native.js +47 -0
  116. package/dist/jsx/SheetScrollView.native.js.map +6 -0
  117. package/dist/jsx/constants.js +2 -8
  118. package/dist/jsx/constants.js.map +1 -1
  119. package/dist/jsx/constants.native.js +11 -0
  120. package/dist/jsx/constants.native.js.map +6 -0
  121. package/dist/jsx/contexts.js +1 -2
  122. package/dist/jsx/contexts.js.map +1 -1
  123. package/dist/jsx/contexts.native.js +9 -0
  124. package/dist/jsx/contexts.native.js.map +6 -0
  125. package/dist/jsx/createSheet.js +30 -61
  126. package/dist/jsx/createSheet.js.map +2 -2
  127. package/dist/jsx/createSheet.native.js +128 -0
  128. package/dist/jsx/createSheet.native.js.map +6 -0
  129. package/dist/jsx/helpers.js +1 -4
  130. package/dist/jsx/helpers.js.map +1 -1
  131. package/dist/jsx/helpers.native.js +11 -0
  132. package/dist/jsx/helpers.native.js.map +6 -0
  133. package/dist/jsx/index.native.js +10 -0
  134. package/dist/jsx/index.native.js.map +6 -0
  135. package/dist/jsx/nativeSheet.js +21 -27
  136. package/dist/jsx/nativeSheet.js.map +1 -1
  137. package/dist/jsx/nativeSheet.native.js +40 -0
  138. package/dist/jsx/nativeSheet.native.js.map +6 -0
  139. package/dist/jsx/types.native.js +1 -0
  140. package/dist/jsx/types.native.js.map +6 -0
  141. package/dist/jsx/useSheet.native.js +6 -0
  142. package/dist/jsx/useSheet.native.js.map +6 -0
  143. package/dist/jsx/useSheetController.js +2 -5
  144. package/dist/jsx/useSheetController.js.map +1 -1
  145. package/dist/jsx/useSheetController.native.js +17 -0
  146. package/dist/jsx/useSheetController.native.js.map +6 -0
  147. package/dist/jsx/useSheetOffscreenSize.js +8 -21
  148. package/dist/jsx/useSheetOffscreenSize.js.map +2 -2
  149. package/dist/jsx/useSheetOffscreenSize.native.js +27 -0
  150. package/dist/jsx/useSheetOffscreenSize.native.js.map +6 -0
  151. package/dist/jsx/useSheetOpenState.js +5 -8
  152. package/dist/jsx/useSheetOpenState.js.map +1 -1
  153. package/dist/jsx/useSheetOpenState.native.js +23 -0
  154. package/dist/jsx/useSheetOpenState.native.js.map +6 -0
  155. package/dist/jsx/useSheetProviderProps.js +36 -79
  156. package/dist/jsx/useSheetProviderProps.js.map +1 -1
  157. package/dist/jsx/useSheetProviderProps.native.js +90 -0
  158. package/dist/jsx/useSheetProviderProps.native.js.map +6 -0
  159. package/package.json +14 -14
  160. package/src/SheetImplementationCustom.tsx +21 -3
  161. package/src/createSheet.tsx +21 -3
  162. package/types/Sheet.d.ts +2 -0
  163. package/types/Sheet.d.ts.map +1 -1
  164. package/types/SheetImplementationCustom.d.ts.map +1 -1
  165. package/types/createSheet.d.ts +22 -0
  166. package/types/createSheet.d.ts.map +1 -1
@@ -0,0 +1,288 @@
1
+ import { AdaptParentContext } from "@tamagui/adapt";
2
+ import { AnimatePresence } from "@tamagui/animate-presence";
3
+ import { useComposedRefs } from "@tamagui/compose-refs";
4
+ import {
5
+ Theme,
6
+ getConfig,
7
+ isTouchable,
8
+ isWeb,
9
+ themeable,
10
+ useAnimationDriver,
11
+ useEvent,
12
+ useIsomorphicLayoutEffect,
13
+ useThemeName
14
+ } from "@tamagui/core";
15
+ import { Portal } from "@tamagui/portal";
16
+ import { useKeyboardVisible } from "@tamagui/use-keyboard-visible";
17
+ import {
18
+ forwardRef,
19
+ useCallback,
20
+ useContext,
21
+ useEffect,
22
+ useMemo,
23
+ useRef,
24
+ useState
25
+ } from "react";
26
+ import {
27
+ Keyboard,
28
+ PanResponder,
29
+ View
30
+ } from "react-native";
31
+ import { SHEET_HIDDEN_STYLESHEET } from "./constants";
32
+ import { ParentSheetContext, SheetInsideSheetContext } from "./contexts";
33
+ import { resisted } from "./helpers";
34
+ import { SheetProvider } from "./SheetContext";
35
+ import { useSheetOpenState } from "./useSheetOpenState";
36
+ import { useSheetProviderProps } from "./useSheetProviderProps";
37
+ let hiddenSize = 10000.1;
38
+ const SheetImplementationCustom = themeable(
39
+ forwardRef(function(props, forwardedRef) {
40
+ const parentSheet = useContext(ParentSheetContext), {
41
+ animation,
42
+ animationConfig: animationConfigProp,
43
+ modal = !1,
44
+ zIndex = parentSheet.zIndex + 1,
45
+ moveOnKeyboardChange = !1,
46
+ unmountChildrenWhenHidden = !1,
47
+ portalProps
48
+ } = props, keyboardIsVisible = useKeyboardVisible(), state = useSheetOpenState(props), [overlayComponent, setOverlayComponent] = useState(null), providerProps = useSheetProviderProps(props, state, {
49
+ onOverlayComponent: setOverlayComponent
50
+ }), {
51
+ frameSize,
52
+ setFrameSize,
53
+ snapPoints,
54
+ snapPointsMode,
55
+ hasFit,
56
+ position,
57
+ setPosition,
58
+ scrollBridge,
59
+ screenSize,
60
+ setMaxContentSize,
61
+ maxSnapPoint
62
+ } = providerProps, { open, controller, isHidden } = state, sheetRef = useRef(null), ref = useComposedRefs(forwardedRef, sheetRef), animationConfig = (() => {
63
+ const [animationProp, animationPropConfig] = animation ? Array.isArray(animation) ? animation : [animation] : [];
64
+ return animationConfigProp ?? (animationProp ? {
65
+ ...getConfig().animations.animations[animationProp],
66
+ ...animationPropConfig
67
+ } : null);
68
+ })(), [isShowingInnerSheet, setIsShowingInnerSheet] = useState(!1), shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet, parentSheetContext = useContext(SheetInsideSheetContext), onInnerSheet = useCallback((hasChild) => {
69
+ setIsShowingInnerSheet(hasChild);
70
+ }, []), positions = useMemo(
71
+ () => snapPoints.map(
72
+ (point) => getYPositions(snapPointsMode, point, screenSize, frameSize)
73
+ ),
74
+ [screenSize, frameSize, snapPoints, snapPointsMode]
75
+ ), driver = useAnimationDriver(), { useAnimatedNumber, useAnimatedNumberStyle, useAnimatedNumberReaction } = driver, AnimatedView = driver.View;
76
+ useIsomorphicLayoutEffect(() => {
77
+ if (parentSheetContext && open)
78
+ return parentSheetContext(!0), () => {
79
+ parentSheetContext(!1);
80
+ };
81
+ }, [parentSheetContext, open]);
82
+ const nextParentContext = useMemo(
83
+ () => ({
84
+ zIndex
85
+ }),
86
+ [zIndex]
87
+ ), animatedNumber = useAnimatedNumber(hiddenSize), at = useRef(hiddenSize);
88
+ useAnimatedNumberReaction(
89
+ {
90
+ value: animatedNumber,
91
+ hostRef: sheetRef
92
+ },
93
+ useCallback((value) => {
94
+ driver.isReactNative && (at.current = value, scrollBridge.paneY = value);
95
+ }, [])
96
+ );
97
+ function stopSpring() {
98
+ animatedNumber.stop(), scrollBridge.onFinishAnimate && (scrollBridge.onFinishAnimate(), scrollBridge.onFinishAnimate = void 0);
99
+ }
100
+ const hasntMeasured = at.current === hiddenSize, animateTo = useEvent((position2) => {
101
+ if (frameSize === 0)
102
+ return;
103
+ let toValue = isHidden || position2 === -1 ? screenSize : positions[position2];
104
+ if (at.current !== toValue) {
105
+ if (at.current = toValue, stopSpring(), hasntMeasured || isHidden) {
106
+ if (animatedNumber.setValue(screenSize, {
107
+ type: "timing",
108
+ duration: 0
109
+ }), isHidden)
110
+ return;
111
+ toValue = positions[position2], at.current = toValue;
112
+ }
113
+ animatedNumber.setValue(toValue, {
114
+ type: "spring",
115
+ ...animationConfig
116
+ });
117
+ }
118
+ });
119
+ useIsomorphicLayoutEffect(() => {
120
+ screenSize && hasntMeasured && animatedNumber.setValue(screenSize, {
121
+ type: "timing",
122
+ duration: 0
123
+ });
124
+ }, [hasntMeasured, screenSize]), useIsomorphicLayoutEffect(() => {
125
+ !frameSize || !screenSize || isHidden || hasntMeasured && !open || animateTo(position);
126
+ }, [isHidden, frameSize, screenSize, open, position]);
127
+ const disableDrag = props.disableDrag ?? controller?.disableDrag, themeName = useThemeName(), panResponder = useMemo(
128
+ () => {
129
+ if (disableDrag || !frameSize || isShowingInnerSheet)
130
+ return;
131
+ const minY = positions[0];
132
+ scrollBridge.paneMinY = minY;
133
+ let startY = at.current;
134
+ function makeUnselectable(val) {
135
+ SHEET_HIDDEN_STYLESHEET && (val ? SHEET_HIDDEN_STYLESHEET.innerText = ":root * { user-select: none !important; -webkit-user-select: none !important; }" : SHEET_HIDDEN_STYLESHEET.innerText = "");
136
+ }
137
+ const release = ({ vy, dragAt }) => {
138
+ isExternalDrag = !1, previouslyScrolling = !1, makeUnselectable(!1);
139
+ const end = dragAt + startY + frameSize * vy * 0.2;
140
+ let closestPoint = 0, dist = 1 / 0;
141
+ for (let i = 0; i < positions.length; i++) {
142
+ const position2 = positions[i], curDist = end > position2 ? end - position2 : position2 - end;
143
+ curDist < dist && (dist = curDist, closestPoint = i);
144
+ }
145
+ setPosition(closestPoint), animateTo(closestPoint);
146
+ }, finish = (_e, state2) => {
147
+ release({
148
+ vy: state2.vy,
149
+ dragAt: state2.dy
150
+ });
151
+ };
152
+ let previouslyScrolling = !1;
153
+ const onMoveShouldSet = (_e, { dy }) => {
154
+ const isScrolled = scrollBridge.y !== 0, isDraggingUp = dy < 0, isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;
155
+ return isScrolled ? (previouslyScrolling = !0, !1) : isNearTop && !isScrolled && isDraggingUp ? !1 : Math.abs(dy) > 5;
156
+ }, grant = () => {
157
+ makeUnselectable(!0), stopSpring(), startY = at.current;
158
+ };
159
+ let isExternalDrag = !1;
160
+ return scrollBridge.drag = (dy) => {
161
+ isExternalDrag || (isExternalDrag = !0, grant());
162
+ const to = dy + startY;
163
+ animatedNumber.setValue(resisted(to, minY), { type: "direct" });
164
+ }, scrollBridge.release = release, PanResponder.create({
165
+ onMoveShouldSetPanResponder: onMoveShouldSet,
166
+ onPanResponderGrant: grant,
167
+ onPanResponderMove: (_e, { dy }) => {
168
+ const toFull = dy + startY, to = resisted(toFull, minY);
169
+ animatedNumber.setValue(to, { type: "direct" });
170
+ },
171
+ onPanResponderEnd: finish,
172
+ onPanResponderTerminate: finish,
173
+ onPanResponderRelease: finish
174
+ });
175
+ },
176
+ // eslint-disable-next-line react-hooks/exhaustive-deps
177
+ [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition]
178
+ ), handleAnimationViewLayout = useCallback(
179
+ (e) => {
180
+ const next = (() => {
181
+ let _ = e.nativeEvent?.layout.height;
182
+ return isWeb && isTouchable && !open && (_ += 100), _;
183
+ })();
184
+ next && setFrameSize(next);
185
+ },
186
+ [keyboardIsVisible]
187
+ ), handleMaxContentViewLayout = useCallback(
188
+ (e) => {
189
+ const next = e.nativeEvent?.layout.height;
190
+ next && setMaxContentSize(next);
191
+ },
192
+ [keyboardIsVisible]
193
+ ), animatedStyle = useAnimatedNumberStyle(animatedNumber, (val) => {
194
+ "worklet";
195
+ return {
196
+ transform: [{ translateY: frameSize === 0 ? hiddenSize : val }]
197
+ };
198
+ }), sizeBeforeKeyboard = useRef(null);
199
+ useEffect(() => {
200
+ if (isWeb || !moveOnKeyboardChange)
201
+ return;
202
+ const keyboardDidShowListener = Keyboard.addListener("keyboardDidShow", (e) => {
203
+ sizeBeforeKeyboard.current === null && (sizeBeforeKeyboard.current = animatedNumber.getValue(), animatedNumber.setValue(
204
+ Math.max(animatedNumber.getValue() - e.endCoordinates.height, 0)
205
+ ));
206
+ }), keyboardDidHideListener = Keyboard.addListener("keyboardDidHide", () => {
207
+ sizeBeforeKeyboard.current !== null && (animatedNumber.setValue(sizeBeforeKeyboard.current), sizeBeforeKeyboard.current = null);
208
+ });
209
+ return () => {
210
+ keyboardDidHideListener.remove(), keyboardDidShowListener.remove();
211
+ };
212
+ }, [moveOnKeyboardChange]);
213
+ const [opacity, setOpacity] = useState(open ? 1 : 0);
214
+ open && opacity === 0 && setOpacity(1), useEffect(() => {
215
+ if (!open) {
216
+ const tm = setTimeout(() => {
217
+ setOpacity(0);
218
+ }, 400);
219
+ return () => {
220
+ clearTimeout(tm);
221
+ };
222
+ }
223
+ }, [open]);
224
+ const forcedContentHeight = hasFit ? void 0 : snapPointsMode === "percent" ? `${maxSnapPoint}%` : maxSnapPoint, contents = <ParentSheetContext.Provider value={nextParentContext}><SheetProvider {...providerProps}>
225
+ <AnimatePresence enterExitVariant="open">{shouldHideParentSheet || !open ? null : overlayComponent}</AnimatePresence>
226
+ {snapPointsMode !== "percent" && <View
227
+ style={{
228
+ opacity: 0,
229
+ position: "absolute",
230
+ top: 0,
231
+ left: 0,
232
+ right: 0,
233
+ bottom: 0,
234
+ pointerEvents: "none"
235
+ }}
236
+ pointerEvents="none"
237
+ onLayout={handleMaxContentViewLayout}
238
+ />}
239
+ <AnimatedView
240
+ ref={ref}
241
+ {...panResponder?.panHandlers}
242
+ onLayout={handleAnimationViewLayout}
243
+ pointerEvents={open && !shouldHideParentSheet ? "auto" : "none"}
244
+ style={[
245
+ {
246
+ position: "absolute",
247
+ zIndex,
248
+ width: "100%",
249
+ height: forcedContentHeight,
250
+ minHeight: forcedContentHeight,
251
+ opacity
252
+ },
253
+ animatedStyle
254
+ ]}
255
+ >{props.children}</AnimatedView>
256
+ </SheetProvider></ParentSheetContext.Provider>, adaptContext = useContext(AdaptParentContext), shouldMountChildren = !!(opacity || !unmountChildrenWhenHidden);
257
+ if (modal) {
258
+ const modalContents = <Portal zIndex={zIndex} {...portalProps}>{shouldMountChildren && <Theme forceClassName name={themeName}><AdaptParentContext.Provider value={adaptContext}>{contents}</AdaptParentContext.Provider></Theme>}</Portal>;
259
+ return isWeb ? modalContents : <SheetInsideSheetContext.Provider value={onInnerSheet}>{modalContents}</SheetInsideSheetContext.Provider>;
260
+ }
261
+ return contents;
262
+ })
263
+ );
264
+ function getYPositions(mode, point, screenSize, frameSize) {
265
+ if (!screenSize || !frameSize)
266
+ return 0;
267
+ if (mode === "mixed") {
268
+ if (typeof point == "number")
269
+ return screenSize - Math.min(screenSize, Math.max(0, point));
270
+ if (point === "fit")
271
+ return screenSize - frameSize;
272
+ if (point.endsWith("%")) {
273
+ const pct2 = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;
274
+ return Number.isNaN(pct2) ? (console.warn("Invalid snapPoint percentage string"), 0) : Math.round(screenSize - pct2 * screenSize);
275
+ }
276
+ return console.warn("Invalid snapPoint unknown value"), 0;
277
+ }
278
+ if (mode === "fit")
279
+ return point === 0 ? screenSize : screenSize - Math.min(screenSize, frameSize);
280
+ if (mode === "constant" && typeof point == "number")
281
+ return screenSize - Math.min(screenSize, Math.max(0, point));
282
+ const pct = Math.min(100, Math.max(0, Number(point))) / 100;
283
+ return Number.isNaN(pct) ? (console.warn("Invalid snapPoint percentage"), 0) : Math.round(screenSize - pct * screenSize);
284
+ }
285
+ export {
286
+ SheetImplementationCustom
287
+ };
288
+ //# sourceMappingURL=SheetImplementationCustom.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SheetImplementationCustom.tsx"],
4
+ "mappings": "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",
5
+ "names": ["position", "state", "pct"]
6
+ }
@@ -2,36 +2,25 @@ import { composeRefs } from "@tamagui/core";
2
2
  import { ScrollView } from "@tamagui/scroll-view";
3
3
  import { forwardRef, useMemo, useRef } from "react";
4
4
  import { useSheetContext } from "./SheetContext";
5
- const SHEET_SCROLL_VIEW_NAME = "SheetScrollView";
6
- const SheetScrollView = forwardRef(
5
+ const SHEET_SCROLL_VIEW_NAME = "SheetScrollView", SheetScrollView = forwardRef(
7
6
  ({ __scopeSheet, children, ...props }, ref) => {
8
- const context = useSheetContext(SHEET_SCROLL_VIEW_NAME, __scopeSheet);
9
- const { scrollBridge } = context;
10
- const scrollRef = useRef(null);
11
- const state = useRef({
7
+ const context = useSheetContext(SHEET_SCROLL_VIEW_NAME, __scopeSheet), { scrollBridge } = context, scrollRef = useRef(null), state = useRef({
12
8
  lastPageY: 0,
13
9
  dragAt: 0,
14
10
  dys: [],
15
11
  // store a few recent dys to get velocity on release
16
- isScrolling: false,
17
- isDragging: false
18
- });
19
- const release = () => {
20
- if (!state.current.isDragging) {
12
+ isScrolling: !1,
13
+ isDragging: !1
14
+ }), release = () => {
15
+ if (!state.current.isDragging)
21
16
  return;
22
- }
23
- state.current.isDragging = false;
24
- scrollBridge.scrollStartY = -1;
25
- state.current.isScrolling = false;
17
+ state.current.isDragging = !1, scrollBridge.scrollStartY = -1, state.current.isScrolling = !1;
26
18
  let vy = 0;
27
19
  if (state.current.dys.length) {
28
20
  const recentDys = state.current.dys.slice(-10);
29
- const dist = recentDys.length ? recentDys.reduce((a, b) => a + b, 0) : 0;
30
- const avgDy = dist / recentDys.length;
31
- vy = avgDy * 0.04;
21
+ vy = (recentDys.length ? recentDys.reduce((a, b) => a + b, 0) : 0) / recentDys.length * 0.04;
32
22
  }
33
- state.current.dys = [];
34
- scrollBridge.release({
23
+ state.current.dys = [], scrollBridge.release({
35
24
  dragAt: state.current.dragAt,
36
25
  vy
37
26
  });
@@ -42,17 +31,10 @@ const SheetScrollView = forwardRef(
42
31
  scrollEventThrottle={8}
43
32
  onScroll={(e) => {
44
33
  const { y } = e.nativeEvent.contentOffset;
45
- scrollBridge.y = y;
46
- if (y > 0) {
47
- scrollBridge.scrollStartY = -1;
48
- }
49
- }}
50
- onStartShouldSetResponder={() => {
51
- scrollBridge.scrollStartY = -1;
52
- state.current.isDragging = true;
53
- return true;
34
+ scrollBridge.y = y, y > 0 && (scrollBridge.scrollStartY = -1);
54
35
  }}
55
- onMoveShouldSetResponder={() => false}
36
+ onStartShouldSetResponder={() => (scrollBridge.scrollStartY = -1, state.current.isDragging = !0, !0)}
37
+ onMoveShouldSetResponder={() => !1}
56
38
  onResponderRelease={release}
57
39
  className="_ovs-contain"
58
40
  {...props}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SheetScrollView.tsx"],
4
- "mappings": "AAAA,SAAiB,mBAAmB;AACpC,SAAS,kBAAmC;AAC5C,SAAS,YAAY,SAAS,cAAc;AAG5C,SAAS,uBAAuB;AAShC,MAAM,yBAAyB;AAExB,MAAM,kBAAkB;AAAA,EAC7B,CAAC,EAAE,cAAc,UAAU,GAAG,MAAM,GAAsC,QAAQ;AAChF,UAAM,UAAU,gBAAgB,wBAAwB,YAAY;AACpE,UAAM,EAAE,aAAa,IAAI;AAEzB,UAAM,YAAY,OAA4B,IAAI;AAclD,UAAM,QAAQ,OAAO;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,KAAK,CAAC;AAAA;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,IACd,CAAC;AAED,UAAM,UAAU,MAAM;AACpB,UAAI,CAAC,MAAM,QAAQ,YAAY;AAC7B;AAAA,MACF;AACA,YAAM,QAAQ,aAAa;AAC3B,mBAAa,eAAe;AAC5B,YAAM,QAAQ,cAAc;AAE5B,UAAI,KAAK;AACT,UAAI,MAAM,QAAQ,IAAI,QAAQ;AAC5B,cAAM,YAAY,MAAM,QAAQ,IAAI,MAAM,GAAG;AAC7C,cAAM,OAAO,UAAU,SAAS,UAAU,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI;AACvE,cAAM,QAAQ,OAAO,UAAU;AAC/B,aAAK,QAAQ;AAAA,MACf;AACA,YAAM,QAAQ,MAAM,CAAC;AACrB,mBAAa,QAAQ;AAAA,QACnB,QAAQ,MAAM,QAAQ;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WACE,CAAC;AAAA,MACC,KAAK,YAAY,WAAkB,GAAG;AAAA,MACtC,MAAM;AAAA,MACN,qBAAqB;AAAA,MAErB,UAAU,CAAC,MAAM;AACf,cAAM,EAAE,EAAE,IAAI,EAAE,YAAY;AAC5B,qBAAa,IAAI;AACjB,YAAI,IAAI,GAAG;AACT,uBAAa,eAAe;AAAA,QAC9B;AAAA,MACF;AAAA,MACA,2BAA2B,MAAM;AAC/B,qBAAa,eAAe;AAC5B,cAAM,QAAQ,aAAa;AAC3B,eAAO;AAAA,MACT;AAAA,MAEA,0BAA0B,MAAM;AAAA,MAmChC,oBAAoB;AAAA,MACpB,UAAU;AAAA,UACN;AAAA,MAEH,QAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC,EACrC,EA1DC;AAAA,EA4DL;AACF;",
4
+ "mappings": "AAAA,SAAiB,mBAAmB;AACpC,SAAS,kBAAmC;AAC5C,SAAS,YAAY,SAAS,cAAc;AAG5C,SAAS,uBAAuB;AAShC,MAAM,yBAAyB,mBAElB,kBAAkB;AAAA,EAC7B,CAAC,EAAE,cAAc,UAAU,GAAG,MAAM,GAAsC,QAAQ;AAChF,UAAM,UAAU,gBAAgB,wBAAwB,YAAY,GAC9D,EAAE,aAAa,IAAI,SAEnB,YAAY,OAA4B,IAAI,GAc5C,QAAQ,OAAO;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,KAAK,CAAC;AAAA;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,IACd,CAAC,GAEK,UAAU,MAAM;AACpB,UAAI,CAAC,MAAM,QAAQ;AACjB;AAEF,YAAM,QAAQ,aAAa,IAC3B,aAAa,eAAe,IAC5B,MAAM,QAAQ,cAAc;AAE5B,UAAI,KAAK;AACT,UAAI,MAAM,QAAQ,IAAI,QAAQ;AAC5B,cAAM,YAAY,MAAM,QAAQ,IAAI,MAAM,GAAG;AAG7C,cAFa,UAAU,SAAS,UAAU,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,KAClD,UAAU,SAClB;AAAA,MACf;AACA,YAAM,QAAQ,MAAM,CAAC,GACrB,aAAa,QAAQ;AAAA,QACnB,QAAQ,MAAM,QAAQ;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WACE,CAAC;AAAA,MACC,KAAK,YAAY,WAAkB,GAAG;AAAA,MACtC,MAAM;AAAA,MACN,qBAAqB;AAAA,MAErB,UAAU,CAAC,MAAM;AACf,cAAM,EAAE,EAAE,IAAI,EAAE,YAAY;AAC5B,qBAAa,IAAI,GACb,IAAI,MACN,aAAa,eAAe;AAAA,MAEhC;AAAA,MACA,2BAA2B,OACzB,aAAa,eAAe,IAC5B,MAAM,QAAQ,aAAa,IACpB;AAAA,MAGT,0BAA0B,MAAM;AAAA,MAmChC,oBAAoB;AAAA,MACpB,UAAU;AAAA,UACN;AAAA,MAEH,QAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC,EACrC,EA1DC;AAAA,EA4DL;AACF;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,47 @@
1
+ import { composeRefs } from "@tamagui/core";
2
+ import { ScrollView } from "@tamagui/scroll-view";
3
+ import { forwardRef, useMemo, useRef } from "react";
4
+ import { useSheetContext } from "./SheetContext";
5
+ const SHEET_SCROLL_VIEW_NAME = "SheetScrollView", SheetScrollView = forwardRef(
6
+ ({ __scopeSheet, children, ...props }, ref) => {
7
+ const context = useSheetContext(SHEET_SCROLL_VIEW_NAME, __scopeSheet), { scrollBridge } = context, scrollRef = useRef(null), state = useRef({
8
+ lastPageY: 0,
9
+ dragAt: 0,
10
+ dys: [],
11
+ // store a few recent dys to get velocity on release
12
+ isScrolling: !1,
13
+ isDragging: !1
14
+ }), release = () => {
15
+ if (!state.current.isDragging)
16
+ return;
17
+ state.current.isDragging = !1, scrollBridge.scrollStartY = -1, state.current.isScrolling = !1;
18
+ let vy = 0;
19
+ if (state.current.dys.length) {
20
+ const recentDys = state.current.dys.slice(-10);
21
+ vy = (recentDys.length ? recentDys.reduce((a, b) => a + b, 0) : 0) / recentDys.length * 0.04;
22
+ }
23
+ state.current.dys = [], scrollBridge.release({
24
+ dragAt: state.current.dragAt,
25
+ vy
26
+ });
27
+ };
28
+ return <ScrollView
29
+ ref={composeRefs(scrollRef, ref)}
30
+ flex={1}
31
+ scrollEventThrottle={8}
32
+ onScroll={(e) => {
33
+ const { y } = e.nativeEvent.contentOffset;
34
+ scrollBridge.y = y, y > 0 && (scrollBridge.scrollStartY = -1);
35
+ }}
36
+ onStartShouldSetResponder={() => (scrollBridge.scrollStartY = -1, state.current.isDragging = !0, !0)}
37
+ onMoveShouldSetResponder={() => !1}
38
+ onResponderRelease={release}
39
+ className="_ovs-contain"
40
+ {...props}
41
+ >{useMemo(() => children, [children])}</ScrollView>;
42
+ }
43
+ );
44
+ export {
45
+ SheetScrollView
46
+ };
47
+ //# sourceMappingURL=SheetScrollView.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SheetScrollView.tsx"],
4
+ "mappings": "AAAA,SAAiB,mBAAmB;AACpC,SAAS,kBAAmC;AAC5C,SAAS,YAAY,SAAS,cAAc;AAG5C,SAAS,uBAAuB;AAShC,MAAM,yBAAyB,mBAElB,kBAAkB;AAAA,EAC7B,CAAC,EAAE,cAAc,UAAU,GAAG,MAAM,GAAsC,QAAQ;AAChF,UAAM,UAAU,gBAAgB,wBAAwB,YAAY,GAC9D,EAAE,aAAa,IAAI,SAEnB,YAAY,OAA4B,IAAI,GAc5C,QAAQ,OAAO;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,KAAK,CAAC;AAAA;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,IACd,CAAC,GAEK,UAAU,MAAM;AACpB,UAAI,CAAC,MAAM,QAAQ;AACjB;AAEF,YAAM,QAAQ,aAAa,IAC3B,aAAa,eAAe,IAC5B,MAAM,QAAQ,cAAc;AAE5B,UAAI,KAAK;AACT,UAAI,MAAM,QAAQ,IAAI,QAAQ;AAC5B,cAAM,YAAY,MAAM,QAAQ,IAAI,MAAM,GAAG;AAG7C,cAFa,UAAU,SAAS,UAAU,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,KAClD,UAAU,SAClB;AAAA,MACf;AACA,YAAM,QAAQ,MAAM,CAAC,GACrB,aAAa,QAAQ;AAAA,QACnB,QAAQ,MAAM,QAAQ;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WACE,CAAC;AAAA,MACC,KAAK,YAAY,WAAkB,GAAG;AAAA,MACtC,MAAM;AAAA,MACN,qBAAqB;AAAA,MAErB,UAAU,CAAC,MAAM;AACf,cAAM,EAAE,EAAE,IAAI,EAAE,YAAY;AAC5B,qBAAa,IAAI,GACb,IAAI,MACN,aAAa,eAAe;AAAA,MAEhC;AAAA,MACA,2BAA2B,OACzB,aAAa,eAAe,IAC5B,MAAM,QAAQ,aAAa,IACpB;AAAA,MAGT,0BAA0B,MAAM;AAAA,MAmChC,oBAAoB;AAAA,MACpB,UAAU;AAAA,UACN;AAAA,MAEH,QAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC,EACrC,EA1DC;AAAA,EA4DL;AACF;",
5
+ "names": []
6
+ }
@@ -1,12 +1,6 @@
1
1
  import { isClient } from "@tamagui/core";
2
- const constants = {};
3
- const SHEET_NAME = "Sheet";
4
- const SHEET_HANDLE_NAME = "SheetHandle";
5
- const SHEET_OVERLAY_NAME = "SheetOverlay";
6
- const SHEET_HIDDEN_STYLESHEET = isClient ? document.createElement("style") : null;
7
- if (SHEET_HIDDEN_STYLESHEET) {
8
- document.head.appendChild(SHEET_HIDDEN_STYLESHEET);
9
- }
2
+ const constants = {}, SHEET_NAME = "Sheet", SHEET_HANDLE_NAME = "SheetHandle", SHEET_OVERLAY_NAME = "SheetOverlay", SHEET_HIDDEN_STYLESHEET = isClient ? document.createElement("style") : null;
3
+ SHEET_HIDDEN_STYLESHEET && document.head.appendChild(SHEET_HIDDEN_STYLESHEET);
10
4
  export {
11
5
  SHEET_HANDLE_NAME,
12
6
  SHEET_HIDDEN_STYLESHEET,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/constants.tsx"],
4
- "mappings": "AAAA,SAAS,gBAAgB;AAElB,MAAM,YAAY,CAAC;AAEnB,MAAM,aAAa;AACnB,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAE3B,MAAM,0BAA0B,WAAW,SAAS,cAAc,OAAO,IAAI;AACpF,IAAI,yBAAyB;AAC3B,WAAS,KAAK,YAAY,uBAAuB;AACnD;",
4
+ "mappings": "AAAA,SAAS,gBAAgB;AAElB,MAAM,YAAY,CAAC,GAEb,aAAa,SACb,oBAAoB,eACpB,qBAAqB,gBAErB,0BAA0B,WAAW,SAAS,cAAc,OAAO,IAAI;AAChF,2BACF,SAAS,KAAK,YAAY,uBAAuB;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,11 @@
1
+ import { isClient } from "@tamagui/core";
2
+ const constants = {}, SHEET_NAME = "Sheet", SHEET_HANDLE_NAME = "SheetHandle", SHEET_OVERLAY_NAME = "SheetOverlay", SHEET_HIDDEN_STYLESHEET = isClient ? document.createElement("style") : null;
3
+ SHEET_HIDDEN_STYLESHEET && document.head.appendChild(SHEET_HIDDEN_STYLESHEET);
4
+ export {
5
+ SHEET_HANDLE_NAME,
6
+ SHEET_HIDDEN_STYLESHEET,
7
+ SHEET_NAME,
8
+ SHEET_OVERLAY_NAME,
9
+ constants
10
+ };
11
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/constants.tsx"],
4
+ "mappings": "AAAA,SAAS,gBAAgB;AAElB,MAAM,YAAY,CAAC,GAEb,aAAa,SACb,oBAAoB,eACpB,qBAAqB,gBAErB,0BAA0B,WAAW,SAAS,cAAc,OAAO,IAAI;AAChF,2BACF,SAAS,KAAK,YAAY,uBAAuB;",
5
+ "names": []
6
+ }
@@ -1,8 +1,7 @@
1
1
  import { createContext } from "react";
2
2
  const ParentSheetContext = createContext({
3
3
  zIndex: 1e5
4
- });
5
- const SheetInsideSheetContext = createContext(null);
4
+ }), SheetInsideSheetContext = createContext(null);
6
5
  export {
7
6
  ParentSheetContext,
8
7
  SheetInsideSheetContext
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/contexts.ts"],
4
- "mappings": "AAAA,SAAS,qBAAqB;AAEvB,MAAM,qBAAqB,cAAc;AAAA,EAC9C,QAAQ;AACV,CAAC;AAEM,MAAM,0BAA0B,cAErC,IAAI;",
4
+ "mappings": "AAAA,SAAS,qBAAqB;AAEvB,MAAM,qBAAqB,cAAc;AAAA,EAC9C,QAAQ;AACV,CAAC,GAEY,0BAA0B,cAErC,IAAI;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,9 @@
1
+ import { createContext } from "react";
2
+ const ParentSheetContext = createContext({
3
+ zIndex: 1e5
4
+ }), SheetInsideSheetContext = createContext(null);
5
+ export {
6
+ ParentSheetContext,
7
+ SheetInsideSheetContext
8
+ };
9
+ //# sourceMappingURL=contexts.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/contexts.ts"],
4
+ "mappings": "AAAA,SAAS,qBAAqB;AAEvB,MAAM,qBAAqB,cAAc;AAAA,EAC9C,QAAQ;AACV,CAAC,GAEY,0BAA0B,cAErC,IAAI;",
5
+ "names": []
6
+ }