@tamagui/sheet 1.26.0 → 1.27.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 (53) hide show
  1. package/dist/cjs/Sheet.js +23 -425
  2. package/dist/cjs/Sheet.js.map +2 -2
  3. package/dist/cjs/StyledSheet.js +132 -0
  4. package/dist/cjs/StyledSheet.js.map +6 -0
  5. package/dist/cjs/constants.js +3 -0
  6. package/dist/cjs/constants.js.map +1 -1
  7. package/dist/cjs/createSheet.js +439 -0
  8. package/dist/cjs/createSheet.js.map +6 -0
  9. package/dist/cjs/index.js +2 -0
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/esm/Sheet.js +20 -447
  12. package/dist/esm/Sheet.js.map +2 -2
  13. package/dist/esm/StyledSheet.js +100 -0
  14. package/dist/esm/StyledSheet.js.map +6 -0
  15. package/dist/esm/constants.js +2 -0
  16. package/dist/esm/constants.js.map +1 -1
  17. package/dist/esm/createSheet.js +441 -0
  18. package/dist/esm/createSheet.js.map +6 -0
  19. package/dist/esm/index.js +1 -0
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/jsx/Sheet.js +20 -434
  22. package/dist/jsx/Sheet.js.map +2 -2
  23. package/dist/jsx/Sheet.mjs +20 -434
  24. package/dist/jsx/Sheet.mjs.map +2 -2
  25. package/dist/jsx/StyledSheet.js +100 -0
  26. package/dist/jsx/StyledSheet.js.map +6 -0
  27. package/dist/jsx/StyledSheet.mjs +100 -0
  28. package/dist/jsx/StyledSheet.mjs.map +6 -0
  29. package/dist/jsx/constants.js +2 -0
  30. package/dist/jsx/constants.js.map +1 -1
  31. package/dist/jsx/constants.mjs +2 -0
  32. package/dist/jsx/constants.mjs.map +1 -1
  33. package/dist/jsx/createSheet.js +428 -0
  34. package/dist/jsx/createSheet.js.map +6 -0
  35. package/dist/jsx/createSheet.mjs +428 -0
  36. package/dist/jsx/createSheet.mjs.map +6 -0
  37. package/dist/jsx/index.js +1 -0
  38. package/dist/jsx/index.js.map +1 -1
  39. package/dist/jsx/index.mjs +1 -0
  40. package/dist/jsx/index.mjs.map +1 -1
  41. package/package.json +13 -13
  42. package/src/Sheet.tsx +20 -543
  43. package/src/constants.tsx +1 -0
  44. package/src/createSheet.tsx +565 -0
  45. package/src/index.ts +1 -0
  46. package/types/Sheet.d.ts +159 -80
  47. package/types/Sheet.d.ts.map +1 -1
  48. package/types/constants.d.ts +1 -0
  49. package/types/constants.d.ts.map +1 -1
  50. package/types/createSheet.d.ts +66 -0
  51. package/types/createSheet.d.ts.map +1 -0
  52. package/types/index.d.ts +1 -0
  53. package/types/index.d.ts.map +1 -1
@@ -0,0 +1,441 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { AdaptParentContext } from "@tamagui/adapt";
3
+ import { useComposedRefs } from "@tamagui/compose-refs";
4
+ import {
5
+ Theme,
6
+ isClient,
7
+ isTouchable,
8
+ isWeb,
9
+ mergeEvent,
10
+ themeable,
11
+ useAnimationDriver,
12
+ useDidFinishSSR,
13
+ useEvent,
14
+ useIsomorphicLayoutEffect,
15
+ useThemeName,
16
+ withStaticProperties
17
+ } from "@tamagui/core";
18
+ import { Portal } from "@tamagui/portal";
19
+ import { RemoveScroll } from "@tamagui/remove-scroll";
20
+ import { useKeyboardVisible } from "@tamagui/use-keyboard-visible";
21
+ import {
22
+ createContext,
23
+ forwardRef,
24
+ useCallback,
25
+ useContext,
26
+ useEffect,
27
+ useMemo,
28
+ useRef,
29
+ useState
30
+ } from "react";
31
+ import {
32
+ Keyboard,
33
+ PanResponder,
34
+ Platform
35
+ } from "react-native";
36
+ import { SHEET_HANDLE_NAME, SHEET_NAME, SHEET_OVERLAY_NAME } from "./constants";
37
+ import { getNativeSheet } from "./nativeSheet";
38
+ import { SheetProvider, useSheetContext } from "./SheetContext";
39
+ import { SheetScrollView } from "./SheetScrollView";
40
+ import { useSheetChildren } from "./useSheetChildren";
41
+ import { useSheetController } from "./useSheetController";
42
+ import { useSheetOpenState } from "./useSheetOpenState";
43
+ import { useSheetProviderProps } from "./useSheetProviderProps";
44
+ import { useSheetSnapPoints } from "./useSheetSnapPoints";
45
+ const selectionStyleSheet = isClient ? document.createElement("style") : null;
46
+ if (selectionStyleSheet) {
47
+ document.head.appendChild(selectionStyleSheet);
48
+ }
49
+ function createSheet({ Handle, Frame, Overlay }) {
50
+ const SheetHandle = Handle.extractable(
51
+ ({ __scopeSheet, ...props }) => {
52
+ const context = useSheetContext(SHEET_HANDLE_NAME, __scopeSheet);
53
+ return /* @__PURE__ */ jsx(
54
+ Handle,
55
+ {
56
+ onPress: () => {
57
+ const max = context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0);
58
+ const nextPos = (context.position + 1) % max;
59
+ context.setPosition(nextPos);
60
+ },
61
+ open: context.open,
62
+ ...props
63
+ }
64
+ );
65
+ }
66
+ );
67
+ const SheetOverlay = Overlay.extractable(
68
+ ({ __scopeSheet, ...props }) => {
69
+ const context = useSheetContext(SHEET_OVERLAY_NAME, __scopeSheet);
70
+ return /* @__PURE__ */ jsx(
71
+ Overlay,
72
+ {
73
+ open: context.open && !context.hidden,
74
+ ...props,
75
+ onPress: mergeEvent(
76
+ props.onPress,
77
+ context.dismissOnOverlayPress ? () => {
78
+ context.setOpen(false);
79
+ } : void 0
80
+ )
81
+ }
82
+ );
83
+ }
84
+ );
85
+ const SheetFrame = Frame.extractable(
86
+ forwardRef(
87
+ ({ __scopeSheet, ...props }, forwardedRef) => {
88
+ const context = useSheetContext(SHEET_NAME, __scopeSheet);
89
+ const composedContentRef = useComposedRefs(forwardedRef, context.contentRef);
90
+ return /* @__PURE__ */ jsx(Frame, { ref: composedContentRef, ...props });
91
+ }
92
+ )
93
+ );
94
+ const Sheet = forwardRef(function Sheet2(props, ref) {
95
+ const hydrated = useDidFinishSSR();
96
+ const { isShowingNonSheet } = useSheetController();
97
+ let SheetImplementation = SheetImplementationCustom;
98
+ if (props.native && Platform.OS === "ios") {
99
+ if (process.env.TAMAGUI_TARGET === "native") {
100
+ const impl = getNativeSheet("ios");
101
+ if (impl) {
102
+ SheetImplementation = impl;
103
+ }
104
+ }
105
+ }
106
+ if (isShowingNonSheet || !hydrated) {
107
+ return null;
108
+ }
109
+ return /* @__PURE__ */ jsx(SheetImplementation, { ref, ...props });
110
+ });
111
+ const components = {
112
+ Frame: SheetFrame,
113
+ Overlay: SheetOverlay,
114
+ Handle: SheetHandle,
115
+ ScrollView: SheetScrollView
116
+ };
117
+ const Controlled = withStaticProperties(Sheet, components);
118
+ return withStaticProperties(Sheet, {
119
+ ...components,
120
+ Controlled
121
+ });
122
+ }
123
+ const HIDDEN_SIZE = 1e4;
124
+ const ParentSheetContext = createContext({
125
+ zIndex: 1e5
126
+ });
127
+ const SheetImplementationCustom = themeable(
128
+ forwardRef(function SheetImplementationCustom2(props, forwardedRef) {
129
+ const parentSheet = useContext(ParentSheetContext);
130
+ const {
131
+ animationConfig,
132
+ forceRemoveScrollEnabled = null,
133
+ disableDrag: disableDragProp,
134
+ modal = false,
135
+ zIndex = parentSheet.zIndex + 1,
136
+ moveOnKeyboardChange = false,
137
+ portalProps
138
+ } = props;
139
+ const state = useSheetOpenState(props);
140
+ const providerProps = useSheetProviderProps(props, state);
141
+ const { positions, maxSnapPoint, screenSize } = useSheetSnapPoints(providerProps);
142
+ const { position, contentRef, setPosition, scrollBridge, frameSize, setFrameSize } = providerProps;
143
+ const { open, isHidden, controller } = state;
144
+ const { frameComponent, handleComponent, bottomCoverComponent, overlayComponent } = useSheetChildren(props.children);
145
+ const sheetRef = useRef(null);
146
+ const ref = useComposedRefs(forwardedRef, sheetRef);
147
+ const driver = useAnimationDriver();
148
+ if (!driver) {
149
+ throw new Error("Must set animations in tamagui.config.ts");
150
+ }
151
+ const disableDrag = disableDragProp ?? (controller == null ? void 0 : controller.disableDrag);
152
+ const keyboardIsVisible = useKeyboardVisible();
153
+ const themeName = useThemeName();
154
+ const { useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle } = driver;
155
+ const animatedNumber = useAnimatedNumber(HIDDEN_SIZE);
156
+ const at = useRef(0);
157
+ useAnimatedNumberReaction(
158
+ {
159
+ value: animatedNumber,
160
+ hostRef: sheetRef
161
+ },
162
+ (value) => {
163
+ if (!driver.isReactNative)
164
+ return;
165
+ at.current = value;
166
+ scrollBridge.paneY = value;
167
+ }
168
+ );
169
+ function stopSpring() {
170
+ animatedNumber.stop();
171
+ if (scrollBridge.onFinishAnimate) {
172
+ scrollBridge.onFinishAnimate();
173
+ scrollBridge.onFinishAnimate = void 0;
174
+ }
175
+ }
176
+ const [opacity, setOpacity] = useState(open ? 1 : 0);
177
+ if (open && opacity === 0) {
178
+ setOpacity(1);
179
+ }
180
+ useEffect(() => {
181
+ if (!open) {
182
+ const tm = setTimeout(() => {
183
+ setOpacity(0);
184
+ }, 400);
185
+ return () => {
186
+ clearTimeout(tm);
187
+ };
188
+ }
189
+ }, [open]);
190
+ const animateTo = useEvent((position2) => {
191
+ const current = animatedNumber.getValue();
192
+ if (isHidden && open)
193
+ return;
194
+ if (!current)
195
+ return;
196
+ if (frameSize === 0)
197
+ return;
198
+ const hiddenValue = frameSize === 0 ? HIDDEN_SIZE : screenSize;
199
+ const toValue = isHidden || position2 === -1 ? hiddenValue : positions[position2];
200
+ if (at.current === toValue)
201
+ return;
202
+ stopSpring();
203
+ if (isHidden) {
204
+ animatedNumber.setValue(toValue, {
205
+ type: "timing",
206
+ duration: 0
207
+ });
208
+ at.current = toValue;
209
+ return;
210
+ }
211
+ const overshootClamping = at.current === HIDDEN_SIZE;
212
+ animatedNumber.setValue(toValue, {
213
+ ...animationConfig,
214
+ type: "spring",
215
+ overshootClamping
216
+ });
217
+ });
218
+ useIsomorphicLayoutEffect(() => {
219
+ animateTo(position);
220
+ }, [isHidden, frameSize, position, animateTo]);
221
+ const [isShowingInnerSheet, setIsShowingInnerSheet] = useState(false);
222
+ const shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet;
223
+ const parentSheetContext = useContext(SheetInsideSheetContext);
224
+ const onInnerSheet = useCallback((hasChild) => {
225
+ setIsShowingInnerSheet(hasChild);
226
+ }, []);
227
+ const panResponder = useMemo(
228
+ () => {
229
+ if (disableDrag)
230
+ return;
231
+ if (!frameSize)
232
+ return;
233
+ if (isShowingInnerSheet)
234
+ return;
235
+ const minY = positions[0];
236
+ scrollBridge.paneMinY = minY;
237
+ let startY = at.current;
238
+ function makeUnselectable(val) {
239
+ if (!selectionStyleSheet)
240
+ return;
241
+ if (!val) {
242
+ selectionStyleSheet.innerText = "";
243
+ } else {
244
+ selectionStyleSheet.innerText = ":root * { user-select: none !important; -webkit-user-select: none !important; }";
245
+ }
246
+ }
247
+ const release = ({ vy, dragAt }) => {
248
+ isExternalDrag = false;
249
+ previouslyScrolling = false;
250
+ makeUnselectable(false);
251
+ const at2 = dragAt + startY;
252
+ const end = at2 + frameSize * vy * 0.2;
253
+ let closestPoint = 0;
254
+ let dist = Infinity;
255
+ for (let i = 0; i < positions.length; i++) {
256
+ const position2 = positions[i];
257
+ const curDist = end > position2 ? end - position2 : position2 - end;
258
+ if (curDist < dist) {
259
+ dist = curDist;
260
+ closestPoint = i;
261
+ }
262
+ }
263
+ setPosition(closestPoint);
264
+ animateTo(closestPoint);
265
+ };
266
+ const finish = (_e, state2) => {
267
+ release({
268
+ vy: state2.vy,
269
+ dragAt: state2.dy
270
+ });
271
+ };
272
+ let previouslyScrolling = false;
273
+ const onMoveShouldSet = (_e, { dy }) => {
274
+ const isScrolled = scrollBridge.y !== 0;
275
+ const isDraggingUp = dy < 0;
276
+ const isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;
277
+ if (isScrolled) {
278
+ previouslyScrolling = true;
279
+ return false;
280
+ }
281
+ if (isNearTop) {
282
+ if (!isScrolled && isDraggingUp) {
283
+ return false;
284
+ }
285
+ }
286
+ return Math.abs(dy) > 5;
287
+ };
288
+ const grant = () => {
289
+ makeUnselectable(true);
290
+ stopSpring();
291
+ startY = at.current;
292
+ };
293
+ let isExternalDrag = false;
294
+ scrollBridge.drag = (dy) => {
295
+ if (!isExternalDrag) {
296
+ isExternalDrag = true;
297
+ grant();
298
+ }
299
+ const to = dy + startY;
300
+ animatedNumber.setValue(resisted(to, minY), { type: "direct" });
301
+ };
302
+ scrollBridge.release = release;
303
+ return PanResponder.create({
304
+ onMoveShouldSetPanResponder: onMoveShouldSet,
305
+ onPanResponderGrant: grant,
306
+ onPanResponderMove: (_e, { dy }) => {
307
+ const toFull = dy + startY;
308
+ const to = resisted(toFull, minY);
309
+ animatedNumber.setValue(to, { type: "direct" });
310
+ },
311
+ onPanResponderEnd: finish,
312
+ onPanResponderTerminate: finish,
313
+ onPanResponderRelease: finish
314
+ });
315
+ },
316
+ // eslint-disable-next-line react-hooks/exhaustive-deps
317
+ [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition]
318
+ );
319
+ const animatedStyle = useAnimatedNumberStyle(animatedNumber, (val) => {
320
+ "worklet";
321
+ const translateY = frameSize === 0 ? HIDDEN_SIZE : val;
322
+ return {
323
+ transform: [{ translateY }]
324
+ };
325
+ });
326
+ const sizeBeforeKeyboard = useRef(null);
327
+ useEffect(() => {
328
+ if (isWeb || !moveOnKeyboardChange)
329
+ return;
330
+ const keyboardDidShowListener = Keyboard.addListener("keyboardDidShow", (e) => {
331
+ if (sizeBeforeKeyboard.current !== null)
332
+ return;
333
+ sizeBeforeKeyboard.current = animatedNumber.getValue();
334
+ animatedNumber.setValue(
335
+ Math.max(animatedNumber.getValue() - e.endCoordinates.height, 0)
336
+ );
337
+ });
338
+ const keyboardDidHideListener = Keyboard.addListener("keyboardDidHide", () => {
339
+ if (sizeBeforeKeyboard.current === null)
340
+ return;
341
+ animatedNumber.setValue(sizeBeforeKeyboard.current);
342
+ sizeBeforeKeyboard.current = null;
343
+ });
344
+ return () => {
345
+ keyboardDidHideListener.remove();
346
+ keyboardDidShowListener.remove();
347
+ };
348
+ }, []);
349
+ const AnimatedView = driver["NumberView"] ?? driver.View;
350
+ useIsomorphicLayoutEffect(() => {
351
+ if (!(parentSheetContext && open))
352
+ return;
353
+ parentSheetContext(true);
354
+ return () => {
355
+ parentSheetContext(false);
356
+ };
357
+ }, [parentSheetContext, open]);
358
+ const nextParentContext = useMemo(
359
+ () => ({
360
+ zIndex
361
+ }),
362
+ [zIndex]
363
+ );
364
+ const handleLayout = useCallback(
365
+ (e) => {
366
+ var _a;
367
+ let next = (_a = e.nativeEvent) == null ? void 0 : _a.layout.height;
368
+ if (isWeb && isTouchable && !open) {
369
+ next += 100;
370
+ }
371
+ if (!next)
372
+ return;
373
+ setFrameSize(() => next);
374
+ },
375
+ [keyboardIsVisible]
376
+ );
377
+ const removeScrollEnabled = forceRemoveScrollEnabled ?? (open && modal);
378
+ const contents = /* @__PURE__ */ jsx(ParentSheetContext.Provider, { value: nextParentContext, children: /* @__PURE__ */ jsxs(SheetProvider, { ...providerProps, children: [
379
+ shouldHideParentSheet ? null : overlayComponent,
380
+ /* @__PURE__ */ jsxs(
381
+ AnimatedView,
382
+ {
383
+ ref,
384
+ ...panResponder == null ? void 0 : panResponder.panHandlers,
385
+ onLayout: handleLayout,
386
+ pointerEvents: open && !shouldHideParentSheet ? "auto" : "none",
387
+ animation: props.animation,
388
+ style: [
389
+ {
390
+ position: "absolute",
391
+ zIndex,
392
+ width: "100%",
393
+ height: `${maxSnapPoint}%`,
394
+ opacity
395
+ },
396
+ animatedStyle
397
+ ],
398
+ children: [
399
+ handleComponent,
400
+ bottomCoverComponent,
401
+ /* @__PURE__ */ jsx(
402
+ RemoveScroll,
403
+ {
404
+ forwardProps: true,
405
+ enabled: removeScrollEnabled,
406
+ allowPinchZoom: true,
407
+ shards: [contentRef],
408
+ removeScrollBar: false,
409
+ children: frameComponent
410
+ }
411
+ )
412
+ ]
413
+ }
414
+ )
415
+ ] }) });
416
+ const adaptContext = useContext(AdaptParentContext);
417
+ if (modal) {
418
+ const modalContents = /* @__PURE__ */ jsx(Portal, { zIndex, ...portalProps, children: /* @__PURE__ */ jsx(Theme, { forceClassName: true, name: themeName, children: /* @__PURE__ */ jsx(AdaptParentContext.Provider, { value: adaptContext, children: contents }) }) });
419
+ if (isWeb) {
420
+ return modalContents;
421
+ }
422
+ return /* @__PURE__ */ jsx(SheetInsideSheetContext.Provider, { value: onInnerSheet, children: modalContents });
423
+ }
424
+ return contents;
425
+ })
426
+ );
427
+ const SheetInsideSheetContext = createContext(null);
428
+ function resisted(y, minY, maxOverflow = 25) {
429
+ if (y < minY) {
430
+ const past = minY - y;
431
+ const pctPast = Math.min(maxOverflow, past) / maxOverflow;
432
+ const diminishBy = 1.1 - Math.pow(0.1, pctPast);
433
+ const extra = -diminishBy * maxOverflow;
434
+ return minY + extra;
435
+ }
436
+ return y;
437
+ }
438
+ export {
439
+ createSheet
440
+ };
441
+ //# sourceMappingURL=createSheet.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/createSheet.tsx"],
4
+ "mappings": "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",
5
+ "names": ["Sheet", "SheetImplementationCustom", "position", "at", "state"]
6
+ }
package/dist/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./Sheet";
2
+ export * from "./createSheet";
2
3
  export * from "./SheetController";
3
4
  export * from "./useSheetController";
4
5
  import { setupNativeSheet } from "./nativeSheet";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,wBAAwB;",
4
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,wBAAwB;",
5
5
  "names": []
6
6
  }