@tamagui/sheet 1.1.7 → 1.1.9

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.
package/dist/esm/Sheet.js CHANGED
@@ -66,15 +66,18 @@ const SheetHandleFrame = styled(XStack, {
66
66
  const SheetHandle = SheetHandleFrame.extractable(
67
67
  ({ __scopeSheet, ...props }) => {
68
68
  const context = useSheetContext(SHEET_HANDLE_NAME, __scopeSheet);
69
- return /* @__PURE__ */ jsx(SheetHandleFrame, {
70
- onPress: () => {
71
- const max = context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0);
72
- const nextPos = (context.position + 1) % max;
73
- context.setPosition(nextPos);
74
- },
75
- open: context.open,
76
- ...props
77
- });
69
+ return /* @__PURE__ */ jsx(
70
+ SheetHandleFrame,
71
+ {
72
+ onPress: () => {
73
+ const max = context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0);
74
+ const nextPos = (context.position + 1) % max;
75
+ context.setPosition(nextPos);
76
+ },
77
+ open: context.open,
78
+ ...props
79
+ }
80
+ );
78
81
  }
79
82
  );
80
83
  const SHEET_OVERLAY_NAME = "SheetOverlay";
@@ -99,16 +102,19 @@ const SheetOverlayFrame = styled(YStack, {
99
102
  const SheetOverlay = SheetOverlayFrame.extractable(
100
103
  ({ __scopeSheet, ...props }) => {
101
104
  const context = useSheetContext(SHEET_OVERLAY_NAME, __scopeSheet);
102
- return /* @__PURE__ */ jsx(SheetOverlayFrame, {
103
- closed: !context.open || context.hidden,
104
- ...props,
105
- onPress: mergeEvent(
106
- props.onPress,
107
- context.dismissOnOverlayPress ? () => {
108
- context.setOpen(false);
109
- } : void 0
110
- )
111
- });
105
+ return /* @__PURE__ */ jsx(
106
+ SheetOverlayFrame,
107
+ {
108
+ closed: !context.open || context.hidden,
109
+ ...props,
110
+ onPress: mergeEvent(
111
+ props.onPress,
112
+ context.dismissOnOverlayPress ? () => {
113
+ context.setOpen(false);
114
+ } : void 0
115
+ )
116
+ }
117
+ );
112
118
  }
113
119
  );
114
120
  const selectionStyleSheet = isClient ? document.createElement("style") : null;
@@ -119,8 +125,8 @@ const SheetFrameFrame = styled(YStack, {
119
125
  name: SHEET_NAME,
120
126
  flex: 1,
121
127
  backgroundColor: "$background",
122
- borderTopLeftRadius: "$4",
123
- borderTopRightRadius: "$4",
128
+ borderTopLeftRadius: "$true",
129
+ borderTopRightRadius: "$true",
124
130
  width: "100%",
125
131
  maxHeight: "100%",
126
132
  overflow: "hidden",
@@ -131,10 +137,7 @@ const SheetFrame = SheetFrameFrame.extractable(
131
137
  ({ __scopeSheet, ...props }, forwardedRef) => {
132
138
  const context = useSheetContext(SHEET_NAME, __scopeSheet);
133
139
  const composedContentRef = useComposedRefs(forwardedRef, context.contentRef);
134
- return /* @__PURE__ */ jsx(SheetFrameFrame, {
135
- ref: composedContentRef,
136
- ...props
137
- });
140
+ return /* @__PURE__ */ jsx(SheetFrameFrame, { ref: composedContentRef, ...props });
138
141
  }
139
142
  )
140
143
  );
@@ -165,10 +168,7 @@ const Sheet = withStaticProperties(
165
168
  if (isShowingNonSheet || !hydrated) {
166
169
  return null;
167
170
  }
168
- return /* @__PURE__ */ jsx(SheetImplementation, {
169
- ref,
170
- ...props
171
- });
171
+ return /* @__PURE__ */ jsx(SheetImplementation, { ref, ...props });
172
172
  }),
173
173
  sheetComponents
174
174
  );
@@ -236,6 +236,7 @@ const SheetImplementation = themeable(
236
236
  const [frameSize, setFrameSize] = useState(0);
237
237
  const snapPoints = useMemo(
238
238
  () => dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp,
239
+ // eslint-disable-next-line react-hooks/exhaustive-deps
239
240
  [JSON.stringify(snapPointsProp), dismissOnSnapToBottom]
240
241
  );
241
242
  const [position_, setPosition_] = useControllableState({
@@ -432,6 +433,7 @@ const SheetImplementation = themeable(
432
433
  onPanResponderRelease: finish
433
434
  });
434
435
  },
436
+ // eslint-disable-next-line react-hooks/exhaustive-deps
435
437
  [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition]
436
438
  );
437
439
  let handleComponent = null;
@@ -492,9 +494,9 @@ const SheetImplementation = themeable(
492
494
  });
493
495
  }, []);
494
496
  const removeScrollEnabled = forceRemoveScrollEnabled ?? (open && modal);
495
- const contents = /* @__PURE__ */ jsx(ParentSheetContext.Provider, {
496
- value: nextParentContext,
497
- children: /* @__PURE__ */ jsxs(SheetProvider, {
497
+ const contents = /* @__PURE__ */ jsx(ParentSheetContext.Provider, { value: nextParentContext, children: /* @__PURE__ */ jsxs(
498
+ SheetProvider,
499
+ {
498
500
  modal,
499
501
  contentRef,
500
502
  frameSize,
@@ -510,57 +512,49 @@ const SheetImplementation = themeable(
510
512
  scrollBridge,
511
513
  children: [
512
514
  isResizing || shouldHideParentSheet ? null : overlayComponent,
513
- /* @__PURE__ */ jsxs(AnimatedView, {
514
- ref,
515
- ...panResponder == null ? void 0 : panResponder.panHandlers,
516
- onLayout: handleLayout,
517
- pointerEvents: open && !shouldHideParentSheet ? "auto" : "none",
518
- style: [
519
- {
520
- position: "absolute",
521
- zIndex,
522
- width: "100%",
523
- height: "100%",
524
- opacity
525
- },
526
- animatedStyle
527
- ],
528
- children: [
529
- handleComponent,
530
- /* @__PURE__ */ jsx(RemoveScroll, {
531
- forwardProps: true,
532
- enabled: removeScrollEnabled,
533
- allowPinchZoom: true,
534
- shards: [contentRef],
535
- removeScrollBar: false,
536
- children: isResizing ? /* @__PURE__ */ jsx(Fragment, {}) : frameComponent
537
- })
538
- ]
539
- })
515
+ /* @__PURE__ */ jsxs(
516
+ AnimatedView,
517
+ {
518
+ ref,
519
+ ...panResponder == null ? void 0 : panResponder.panHandlers,
520
+ onLayout: handleLayout,
521
+ pointerEvents: open && !shouldHideParentSheet ? "auto" : "none",
522
+ style: [
523
+ {
524
+ position: "absolute",
525
+ zIndex,
526
+ width: "100%",
527
+ height: "100%",
528
+ opacity
529
+ },
530
+ animatedStyle
531
+ ],
532
+ children: [
533
+ handleComponent,
534
+ /* @__PURE__ */ jsx(
535
+ RemoveScroll,
536
+ {
537
+ forwardProps: true,
538
+ enabled: removeScrollEnabled,
539
+ allowPinchZoom: true,
540
+ shards: [contentRef],
541
+ removeScrollBar: false,
542
+ children: isResizing ? /* @__PURE__ */ jsx(Fragment, {}) : frameComponent
543
+ }
544
+ )
545
+ ]
546
+ }
547
+ )
540
548
  ]
541
- })
542
- });
549
+ }
550
+ ) });
543
551
  const adaptContext = useContext(AdaptParentContext);
544
552
  if (modal) {
545
- const modalContents = /* @__PURE__ */ jsx(Portal, {
546
- zIndex,
547
- ...portalProps,
548
- children: /* @__PURE__ */ jsx(Theme, {
549
- forceClassName: true,
550
- name: themeName,
551
- children: /* @__PURE__ */ jsx(AdaptParentContext.Provider, {
552
- value: adaptContext,
553
- children: contents
554
- })
555
- })
556
- });
553
+ const modalContents = /* @__PURE__ */ jsx(Portal, { zIndex, ...portalProps, children: /* @__PURE__ */ jsx(Theme, { forceClassName: true, name: themeName, children: /* @__PURE__ */ jsx(AdaptParentContext.Provider, { value: adaptContext, children: contents }) }) });
557
554
  if (isWeb) {
558
555
  return modalContents;
559
556
  }
560
- return /* @__PURE__ */ jsx(SheetInsideSheetContext.Provider, {
561
- value: onInnerSheet,
562
- children: modalContents
563
- });
557
+ return /* @__PURE__ */ jsx(SheetInsideSheetContext.Provider, { value: onInnerSheet, children: modalContents });
564
558
  }
565
559
  return contents;
566
560
  }),
@@ -605,10 +599,7 @@ const SheetController = ({
605
599
  }),
606
600
  [onOpenChange, value.open, value.hidden, value.disableDrag]
607
601
  );
608
- return /* @__PURE__ */ jsx(SheetControllerContext.Provider, {
609
- value: memoValue,
610
- children
611
- });
602
+ return /* @__PURE__ */ jsx(SheetControllerContext.Provider, { value: memoValue, children });
612
603
  };
613
604
  export {
614
605
  ControlledSheet,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Sheet.tsx"],
4
- "sourcesContent": ["import { AdaptParentContext } from '@tamagui/adapt'\nimport { useComposedRefs } from '@tamagui/compose-refs'\nimport {\n GetProps,\n Slot,\n TamaguiElement,\n Theme,\n getAnimationDriver,\n isClient,\n isTouchable,\n isWeb,\n mergeEvent,\n styled,\n themeable,\n useDidFinishSSR,\n useEvent,\n useIsomorphicLayoutEffect,\n useThemeName,\n withStaticProperties,\n} from '@tamagui/core'\nimport { Portal } from '@tamagui/portal'\nimport { RemoveScroll } from '@tamagui/remove-scroll'\nimport { XStack, XStackProps, YStack, YStackProps } from '@tamagui/stacks'\nimport { useConstant } from '@tamagui/use-constant'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, {\n FunctionComponent,\n RefAttributes,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n Animated,\n GestureResponderEvent,\n PanResponder,\n PanResponderGestureState,\n View,\n} from 'react-native'\n\nimport { SHEET_HANDLE_NAME, SHEET_NAME } from './constants'\nimport { SheetProvider, useSheetContext } from './SheetContext'\nimport { SheetScrollView } from './SheetScrollView'\nimport { ScrollBridge, SheetProps, SheetScopedProps } from './types'\n\nexport { createSheetScope } from './SheetContext'\n\n/* -------------------------------------------------------------------------------------------------\n * SheetHandle\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SheetHandleFrame = styled(XStack, {\n name: SHEET_HANDLE_NAME,\n height: 10,\n borderRadius: 100,\n backgroundColor: '$background',\n zIndex: 10,\n marginHorizontal: '35%',\n marginBottom: '$2',\n opacity: 0.5,\n\n hoverStyle: {\n opacity: 0.7,\n },\n\n variants: {\n open: {\n true: {\n pointerEvents: 'auto',\n },\n false: {\n opacity: 0,\n pointerEvents: 'none',\n },\n },\n } as const,\n})\n\nexport const SheetHandle = SheetHandleFrame.extractable(\n ({ __scopeSheet, ...props }: SheetScopedProps<XStackProps>) => {\n const context = useSheetContext(SHEET_HANDLE_NAME, __scopeSheet)\n return (\n <SheetHandleFrame\n onPress={() => {\n // don't toggle to the bottom snap position when dismissOnSnapToBottom set\n const max = context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0)\n const nextPos = (context.position + 1) % max\n context.setPosition(nextPos)\n }}\n open={context.open}\n {...props}\n />\n )\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * SheetOverlay\n * -----------------------------------------------------------------------------------------------*/\n\nconst SHEET_OVERLAY_NAME = 'SheetOverlay'\n\nexport const SheetOverlayFrame = styled(YStack, {\n name: SHEET_OVERLAY_NAME,\n backgroundColor: '$color10',\n fullscreen: true,\n opacity: 0.5,\n zIndex: 0,\n\n variants: {\n closed: {\n true: {\n opacity: 0,\n pointerEvents: 'none',\n },\n false: {\n pointerEvents: 'auto',\n },\n },\n } as const,\n})\n\nexport type SheetOverlayProps = GetProps<typeof SheetOverlayFrame>\n\nexport const SheetOverlay = SheetOverlayFrame.extractable(\n ({ __scopeSheet, ...props }: SheetScopedProps<SheetOverlayProps>) => {\n const context = useSheetContext(SHEET_OVERLAY_NAME, __scopeSheet)\n return (\n <SheetOverlayFrame\n closed={!context.open || context.hidden}\n {...props}\n onPress={mergeEvent(\n props.onPress as any,\n context.dismissOnOverlayPress\n ? () => {\n context.setOpen(false)\n }\n : undefined\n )}\n />\n )\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * Sheet\n * -----------------------------------------------------------------------------------------------*/\n\nconst selectionStyleSheet = isClient ? document.createElement('style') : null\nif (selectionStyleSheet) {\n document.head.appendChild(selectionStyleSheet)\n}\n\nexport const SheetFrameFrame = styled(YStack, {\n name: SHEET_NAME,\n flex: 1,\n backgroundColor: '$background',\n borderTopLeftRadius: '$4',\n borderTopRightRadius: '$4',\n width: '100%',\n maxHeight: '100%',\n overflow: 'hidden',\n pointerEvents: 'auto',\n})\n\nexport const SheetFrame = SheetFrameFrame.extractable(\n forwardRef(\n ({ __scopeSheet, ...props }: SheetScopedProps<YStackProps>, forwardedRef) => {\n const context = useSheetContext(SHEET_NAME, __scopeSheet)\n const composedContentRef = useComposedRefs(forwardedRef, context.contentRef)\n return <SheetFrameFrame ref={composedContentRef} {...props} />\n }\n )\n)\n\n// set all the way off screen\nconst HIDDEN_SIZE = 10_000\n\nconst sheetComponents = {\n Handle: SheetHandle,\n Frame: SheetFrame,\n Overlay: SheetOverlay,\n ScrollView: SheetScrollView,\n}\n\nconst ParentSheetContext = createContext({\n zIndex: 40,\n})\n\nconst useSheetContoller = () => {\n const controller = useContext(SheetControllerContext)\n const isHidden = controller?.hidden\n const isShowingNonSheet = isHidden && controller?.open\n return {\n controller,\n isHidden,\n isShowingNonSheet,\n }\n}\n\nexport const Sheet = withStaticProperties(\n forwardRef<View, SheetProps>(function Sheet(props, ref) {\n const hydrated = useDidFinishSSR()\n const { isShowingNonSheet } = useSheetContoller()\n\n /**\n * Performance is sensitive here so avoid all the hooks below with this\n */\n if (isShowingNonSheet || !hydrated) {\n return null\n }\n\n return <SheetImplementation ref={ref} {...props} />\n }),\n sheetComponents\n)\n\nconst SheetImplementation = themeable(\n forwardRef<View, SheetProps>(function SheetImplementation(props, ref) {\n const parentSheet = useContext(ParentSheetContext)\n const { isHidden, controller } = useSheetContoller()\n\n const {\n __scopeSheet,\n snapPoints: snapPointsProp = [80],\n open: openProp,\n defaultOpen,\n children: childrenProp,\n position: positionProp,\n onPositionChange,\n onOpenChange,\n defaultPosition,\n dismissOnOverlayPress = true,\n animationConfig,\n dismissOnSnapToBottom = false,\n forceRemoveScrollEnabled = null,\n disableDrag: disableDragProp,\n modal = false,\n zIndex = parentSheet.zIndex + 1,\n portalProps,\n } = props\n\n if (process.env.NODE_ENV === 'development') {\n if (snapPointsProp.some((p) => p < 0 || p > 100)) {\n // eslint-disable-next-line no-console\n console.warn(\n '\u26A0\uFE0F Invalid snapPoint given, snapPoints must be between 0 and 100, equal to percent height of frame'\n )\n }\n }\n\n const driver = getAnimationDriver()\n if (!driver) {\n throw new Error('Must set animations in tamagui.config.ts')\n }\n\n const disableDrag = disableDragProp ?? controller?.disableDrag\n const themeName = useThemeName()\n const contentRef = React.useRef<TamaguiElement>(null)\n const scrollBridge = useConstant<ScrollBridge>(() => ({\n enabled: false,\n y: 0,\n paneY: 0,\n paneMinY: 0,\n scrollStartY: -1,\n drag: () => {},\n release: () => {},\n scrollLock: false,\n }))\n\n const onOpenChangeInternal = (val: boolean) => {\n controller?.onOpenChange?.(val)\n onOpenChange?.(val)\n }\n\n const [open, setOpen] = useControllableState({\n prop: controller?.open ?? openProp,\n defaultProp: true,\n onChange: onOpenChangeInternal,\n strategy: 'most-recent-wins',\n transition: true,\n })\n\n const [frameSize, setFrameSize] = useState<number>(0)\n\n const snapPoints = useMemo(\n () => (dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(snapPointsProp), dismissOnSnapToBottom]\n )\n\n // lets set -1 to be always the \"open = false\" position\n const [position_, setPosition_] = useControllableState({\n prop: positionProp,\n defaultProp: defaultPosition || (open ? 0 : -1),\n onChange: onPositionChange,\n strategy: 'most-recent-wins',\n transition: true,\n })\n const position = open === false ? -1 : position_\n\n // reset position to fully open on re-open after dismissOnSnapToBottom\n if (open && dismissOnSnapToBottom && position === snapPoints.length - 1) {\n setPosition_(0)\n }\n\n const setPosition = useCallback(\n (next: number) => {\n // close on dismissOnSnapToBottom (and set position so it animates)\n if (dismissOnSnapToBottom && next === snapPoints.length - 1) {\n setOpen(false)\n } else {\n setPosition_(next)\n }\n },\n [dismissOnSnapToBottom, snapPoints.length, setPosition_, setOpen]\n )\n\n const { useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle } =\n driver\n\n const animatedNumber = useAnimatedNumber(HIDDEN_SIZE)\n\n // native only fix\n const at = useRef(0)\n\n useAnimatedNumberReaction(animatedNumber, (value) => {\n at.current = value\n scrollBridge.paneY = value\n })\n\n const [isResizing, setIsResizing] = useState(true)\n useIsomorphicLayoutEffect(() => {\n if (!isResizing) {\n setIsResizing(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [modal])\n\n function stopSpring() {\n animatedNumber.stop()\n if (scrollBridge.onFinishAnimate) {\n scrollBridge.onFinishAnimate()\n scrollBridge.onFinishAnimate = undefined\n }\n }\n\n // open must set position\n const shouldSetPositionOpen = open && position < 0\n useEffect(() => {\n if (shouldSetPositionOpen) {\n setPosition(0)\n }\n }, [setPosition, shouldSetPositionOpen])\n\n const positions = useMemo(\n () => snapPoints.map((point) => getPercentSize(point, frameSize)),\n [frameSize, snapPoints]\n )\n\n // we need to set this *after* fully closed to 0, to avoid it overlapping\n // the page when resizing quickly on web for example\n const [opacity, setOpacity] = useState(open ? 1 : 0)\n if (open && opacity === 0) {\n setOpacity(1)\n }\n useEffect(() => {\n if (!open) {\n // need to wait for animation complete, for now lets just do it naively\n const tm = setTimeout(() => {\n setOpacity(0)\n }, 400)\n return () => {\n clearTimeout(tm)\n }\n }\n }, [open])\n\n const animateTo = useEvent((position: number) => {\n const current = animatedNumber.getValue()\n if (isHidden && open) return\n if (!current) return\n if (frameSize === 0) return\n const hiddenValue = frameSize === 0 ? HIDDEN_SIZE : frameSize\n const toValue = isHidden || position === -1 ? hiddenValue : positions[position]\n if (at.current === toValue) return\n stopSpring()\n if (isHidden || isResizing) {\n if (isResizing) {\n setIsResizing(false)\n }\n animatedNumber.setValue(toValue, {\n type: 'timing',\n duration: 0,\n })\n at.current = toValue\n return\n }\n // dont bounce on initial measure to bottom\n const overshootClamping = at.current === HIDDEN_SIZE\n animatedNumber.setValue(toValue, {\n ...animationConfig,\n type: 'spring',\n overshootClamping,\n })\n })\n\n useIsomorphicLayoutEffect(() => {\n animateTo(position)\n }, [isHidden, frameSize, position, animateTo])\n\n /**\n * This is a hacky workaround for native:\n */\n const [isShowingInnerSheet, setIsShowingInnerSheet] = useState(false)\n const shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet\n const parentSheetContext = useContext(SheetInsideSheetContext)\n const onInnerSheet = useCallback((hasChild: boolean) => {\n setIsShowingInnerSheet(hasChild)\n }, [])\n\n const panResponder = useMemo(\n () => {\n if (disableDrag) return\n if (!frameSize) return\n if (isShowingInnerSheet) return\n\n const minY = positions[0]\n scrollBridge.paneMinY = minY\n let startY = at.current\n\n function makeUnselectable(val: boolean) {\n if (!selectionStyleSheet) return\n if (!val) {\n selectionStyleSheet.innerText = ''\n } else {\n selectionStyleSheet.innerText =\n ':root * { user-select: none !important; -webkit-user-select: none !important; }'\n }\n }\n\n const release = ({ vy, dragAt }: { dragAt: number; vy: number }) => {\n isExternalDrag = false\n previouslyScrolling = false\n makeUnselectable(false)\n const at = dragAt + startY\n // seems liky vy goes up to about 4 at the very most (+ is down, - is up)\n // lets base our multiplier on the total layout height\n const end = at + frameSize * vy * 0.2\n let closestPoint = 0\n let dist = Infinity\n for (let i = 0; i < positions.length; i++) {\n const position = positions[i]\n const curDist = end > position ? end - position : position - end\n if (curDist < dist) {\n dist = curDist\n closestPoint = i\n }\n }\n // have to call both because state may not change but need to snap back\n setPosition(closestPoint)\n animateTo(closestPoint)\n }\n\n const finish = (_e: GestureResponderEvent, state: PanResponderGestureState) => {\n release({\n vy: state.vy,\n dragAt: state.dy,\n })\n }\n\n let previouslyScrolling = false\n\n const onMoveShouldSet = (\n _e: GestureResponderEvent,\n { dy }: PanResponderGestureState\n ) => {\n const isScrolled = scrollBridge.y !== 0\n const isDraggingUp = dy < 0\n // we can treat near top instead of exactly to avoid trouble with springs\n const isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY\n if (isScrolled) {\n previouslyScrolling = true\n return false\n }\n // prevent drag once at top and pulling up\n if (isNearTop) {\n if (!isScrolled && isDraggingUp) {\n return false\n }\n }\n // we could do some detection of other touchables and cancel here..\n return Math.abs(dy) > 5\n }\n\n const grant = () => {\n makeUnselectable(true)\n stopSpring()\n startY = at.current\n }\n\n let isExternalDrag = false\n\n scrollBridge.drag = (dy) => {\n if (!isExternalDrag) {\n isExternalDrag = true\n grant()\n }\n const to = dy + startY\n animatedNumber.setValue(resisted(to, minY), { type: 'direct' })\n }\n\n scrollBridge.release = release\n\n return PanResponder.create({\n onMoveShouldSetPanResponder: onMoveShouldSet,\n onPanResponderGrant: grant,\n onPanResponderMove: (_e, { dy }) => {\n const toFull = dy + startY\n const to = resisted(toFull, minY)\n animatedNumber.setValue(to, { type: 'direct' })\n },\n onPanResponderEnd: finish,\n onPanResponderTerminate: finish,\n onPanResponderRelease: finish,\n })\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition]\n )\n\n let handleComponent: React.ReactElement | null = null\n let overlayComponent: React.ReactElement | null = null\n let frameComponent: React.ReactElement | null = null\n\n // TODO do more radix-like and don't require direct children descendents\n React.Children.forEach(childrenProp, (child) => {\n if (isValidElement(child)) {\n const name = child.type?.['staticConfig']?.componentName\n switch (name) {\n case 'SheetHandle':\n handleComponent = child\n break\n case 'Sheet':\n frameComponent = child\n break\n case 'SheetOverlay':\n overlayComponent = child\n break\n default:\n // eslint-disable-next-line no-console\n console.warn('Warning: passed invalid child to Sheet', child)\n }\n }\n })\n\n const animatedStyle = useAnimatedNumberStyle(animatedNumber, (val) => {\n const translateY = frameSize === 0 ? HIDDEN_SIZE : val\n return {\n transform: [{ translateY }],\n }\n })\n\n // temp until reanimated useAnimatedNumber fix\n const AnimatedView = (driver['NumberView'] ?? driver.View) as typeof Animated.View\n\n useIsomorphicLayoutEffect(() => {\n if (!(parentSheetContext && open)) return\n parentSheetContext(true)\n return () => {\n parentSheetContext(false)\n }\n }, [parentSheetContext, open])\n\n const nextParentContext = useMemo(\n () => ({\n zIndex,\n }),\n [zIndex]\n )\n\n const handleLayout = useCallback((e) => {\n let next = e.nativeEvent?.layout.height\n if (isWeb && isTouchable && !open) {\n // temp fix ios bug where it doesn't go below dynamic bottom...\n next += 100\n }\n if (!next) return\n setFrameSize((prev) => {\n const isBigChange = Math.abs(prev - next) > 20\n setIsResizing(isBigChange)\n return next\n })\n }, [])\n\n const removeScrollEnabled = forceRemoveScrollEnabled ?? (open && modal)\n\n const contents = (\n <ParentSheetContext.Provider value={nextParentContext}>\n <SheetProvider\n modal={modal}\n contentRef={contentRef}\n frameSize={frameSize}\n dismissOnOverlayPress={dismissOnOverlayPress}\n dismissOnSnapToBottom={dismissOnSnapToBottom}\n open={open}\n hidden={!!isHidden}\n scope={__scopeSheet}\n position={position}\n snapPoints={snapPoints}\n setPosition={setPosition}\n setOpen={setOpen}\n scrollBridge={scrollBridge}\n >\n {isResizing || shouldHideParentSheet ? null : overlayComponent}\n\n <AnimatedView\n ref={ref}\n {...panResponder?.panHandlers}\n onLayout={handleLayout}\n pointerEvents={open && !shouldHideParentSheet ? 'auto' : 'none'}\n style={[\n {\n position: 'absolute',\n zIndex,\n width: '100%',\n height: '100%',\n opacity,\n },\n animatedStyle,\n ]}\n >\n {handleComponent}\n\n {/* @ts-ignore */}\n <RemoveScroll\n forwardProps\n enabled={removeScrollEnabled}\n allowPinchZoom\n shards={[contentRef]}\n // causes lots of bugs on touch web on site\n removeScrollBar={false}\n >\n {isResizing ? <></> : frameComponent}\n </RemoveScroll>\n </AnimatedView>\n </SheetProvider>\n </ParentSheetContext.Provider>\n )\n\n const adaptContext = useContext(AdaptParentContext)\n\n if (modal) {\n const modalContents = (\n <Portal zIndex={zIndex} {...portalProps}>\n <Theme forceClassName name={themeName}>\n <AdaptParentContext.Provider value={adaptContext}>\n {contents}\n </AdaptParentContext.Provider>\n </Theme>\n </Portal>\n )\n\n if (isWeb) {\n return modalContents\n }\n\n // on native we don't support multiple modals yet... fix for now is to hide outer one\n return (\n <SheetInsideSheetContext.Provider value={onInnerSheet}>\n {modalContents}\n </SheetInsideSheetContext.Provider>\n )\n }\n\n return contents\n }),\n { componentName: 'Sheet' }\n)\n\nconst SheetInsideSheetContext = createContext<((hasChild: boolean) => void) | null>(null)\n\nexport const ControlledSheet = Sheet as FunctionComponent<\n Omit<SheetProps, 'open' | 'onOpenChange'> & RefAttributes<View>\n> &\n typeof sheetComponents\n\n/* -------------------------------------------------------------------------------------------------*/\n\nfunction getPercentSize(point?: number, frameSize?: number) {\n if (!frameSize) return 0\n if (point === undefined) {\n // eslint-disable-next-line no-console\n console.warn('No snapPoint')\n return 0\n }\n const pct = point / 100\n const next = Math.round(frameSize - pct * frameSize)\n return next\n}\n\nfunction resisted(y: number, minY: number, maxOverflow = 25) {\n if (y < minY) {\n const past = minY - y\n const pctPast = Math.min(maxOverflow, past) / maxOverflow\n const diminishBy = 1.1 - Math.pow(0.1, pctPast)\n const extra = -diminishBy * maxOverflow\n return minY + extra\n }\n return y\n}\n\ntype SheetControllerContextValue = {\n disableDrag?: boolean\n open?: boolean\n // hide without \"closing\" to prevent re-animation when shown again\n hidden?: boolean\n onOpenChange?: React.Dispatch<React.SetStateAction<boolean>> | ((val: boolean) => void)\n}\n\nconst SheetControllerContext = createContext<SheetControllerContextValue | null>(null)\n\nexport const SheetController = ({\n children,\n onOpenChange: onOpenChangeProp,\n ...value\n}: Partial<SheetControllerContextValue> & { children?: React.ReactNode }) => {\n const onOpenChange = useEvent(onOpenChangeProp)\n\n const memoValue = useMemo(\n () => ({\n open: value.open,\n hidden: value.hidden,\n disableDrag: value.disableDrag,\n onOpenChange,\n }),\n [onOpenChange, value.open, value.hidden, value.disableDrag]\n )\n\n return (\n <SheetControllerContext.Provider value={memoValue}>\n {children}\n </SheetControllerContext.Provider>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { AdaptParentContext } from '@tamagui/adapt'\nimport { useComposedRefs } from '@tamagui/compose-refs'\nimport {\n GetProps,\n Slot,\n TamaguiElement,\n Theme,\n getAnimationDriver,\n isClient,\n isTouchable,\n isWeb,\n mergeEvent,\n styled,\n themeable,\n useDidFinishSSR,\n useEvent,\n useIsomorphicLayoutEffect,\n useThemeName,\n withStaticProperties,\n} from '@tamagui/core'\nimport { Portal } from '@tamagui/portal'\nimport { RemoveScroll } from '@tamagui/remove-scroll'\nimport { XStack, XStackProps, YStack, YStackProps } from '@tamagui/stacks'\nimport { useConstant } from '@tamagui/use-constant'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, {\n FunctionComponent,\n RefAttributes,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {\n Animated,\n GestureResponderEvent,\n PanResponder,\n PanResponderGestureState,\n View,\n} from 'react-native'\n\nimport { SHEET_HANDLE_NAME, SHEET_NAME } from './constants'\nimport { SheetProvider, useSheetContext } from './SheetContext'\nimport { SheetScrollView } from './SheetScrollView'\nimport { ScrollBridge, SheetProps, SheetScopedProps } from './types'\n\nexport { createSheetScope } from './SheetContext'\n\n/* -------------------------------------------------------------------------------------------------\n * SheetHandle\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SheetHandleFrame = styled(XStack, {\n name: SHEET_HANDLE_NAME,\n height: 10,\n borderRadius: 100,\n backgroundColor: '$background',\n zIndex: 10,\n marginHorizontal: '35%',\n marginBottom: '$2',\n opacity: 0.5,\n\n hoverStyle: {\n opacity: 0.7,\n },\n\n variants: {\n open: {\n true: {\n pointerEvents: 'auto',\n },\n false: {\n opacity: 0,\n pointerEvents: 'none',\n },\n },\n } as const,\n})\n\nexport const SheetHandle = SheetHandleFrame.extractable(\n ({ __scopeSheet, ...props }: SheetScopedProps<XStackProps>) => {\n const context = useSheetContext(SHEET_HANDLE_NAME, __scopeSheet)\n return (\n <SheetHandleFrame\n onPress={() => {\n // don't toggle to the bottom snap position when dismissOnSnapToBottom set\n const max = context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0)\n const nextPos = (context.position + 1) % max\n context.setPosition(nextPos)\n }}\n open={context.open}\n {...props}\n />\n )\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * SheetOverlay\n * -----------------------------------------------------------------------------------------------*/\n\nconst SHEET_OVERLAY_NAME = 'SheetOverlay'\n\nexport const SheetOverlayFrame = styled(YStack, {\n name: SHEET_OVERLAY_NAME,\n backgroundColor: '$color10',\n fullscreen: true,\n opacity: 0.5,\n zIndex: 0,\n\n variants: {\n closed: {\n true: {\n opacity: 0,\n pointerEvents: 'none',\n },\n false: {\n pointerEvents: 'auto',\n },\n },\n } as const,\n})\n\nexport type SheetOverlayProps = GetProps<typeof SheetOverlayFrame>\n\nexport const SheetOverlay = SheetOverlayFrame.extractable(\n ({ __scopeSheet, ...props }: SheetScopedProps<SheetOverlayProps>) => {\n const context = useSheetContext(SHEET_OVERLAY_NAME, __scopeSheet)\n return (\n <SheetOverlayFrame\n closed={!context.open || context.hidden}\n {...props}\n onPress={mergeEvent(\n props.onPress as any,\n context.dismissOnOverlayPress\n ? () => {\n context.setOpen(false)\n }\n : undefined\n )}\n />\n )\n }\n)\n\n/* -------------------------------------------------------------------------------------------------\n * Sheet\n * -----------------------------------------------------------------------------------------------*/\n\nconst selectionStyleSheet = isClient ? document.createElement('style') : null\nif (selectionStyleSheet) {\n document.head.appendChild(selectionStyleSheet)\n}\n\nexport const SheetFrameFrame = styled(YStack, {\n name: SHEET_NAME,\n flex: 1,\n backgroundColor: '$background',\n borderTopLeftRadius: '$true',\n borderTopRightRadius: '$true',\n width: '100%',\n maxHeight: '100%',\n overflow: 'hidden',\n pointerEvents: 'auto',\n})\n\nexport const SheetFrame = SheetFrameFrame.extractable(\n forwardRef(\n ({ __scopeSheet, ...props }: SheetScopedProps<YStackProps>, forwardedRef) => {\n const context = useSheetContext(SHEET_NAME, __scopeSheet)\n const composedContentRef = useComposedRefs(forwardedRef, context.contentRef)\n return <SheetFrameFrame ref={composedContentRef} {...props} />\n }\n )\n)\n\n// set all the way off screen\nconst HIDDEN_SIZE = 10_000\n\nconst sheetComponents = {\n Handle: SheetHandle,\n Frame: SheetFrame,\n Overlay: SheetOverlay,\n ScrollView: SheetScrollView,\n}\n\nconst ParentSheetContext = createContext({\n zIndex: 40,\n})\n\nconst useSheetContoller = () => {\n const controller = useContext(SheetControllerContext)\n const isHidden = controller?.hidden\n const isShowingNonSheet = isHidden && controller?.open\n return {\n controller,\n isHidden,\n isShowingNonSheet,\n }\n}\n\nexport const Sheet = withStaticProperties(\n forwardRef<View, SheetProps>(function Sheet(props, ref) {\n const hydrated = useDidFinishSSR()\n const { isShowingNonSheet } = useSheetContoller()\n\n /**\n * Performance is sensitive here so avoid all the hooks below with this\n */\n if (isShowingNonSheet || !hydrated) {\n return null\n }\n\n return <SheetImplementation ref={ref} {...props} />\n }),\n sheetComponents\n)\n\nconst SheetImplementation = themeable(\n forwardRef<View, SheetProps>(function SheetImplementation(props, ref) {\n const parentSheet = useContext(ParentSheetContext)\n const { isHidden, controller } = useSheetContoller()\n\n const {\n __scopeSheet,\n snapPoints: snapPointsProp = [80],\n open: openProp,\n defaultOpen,\n children: childrenProp,\n position: positionProp,\n onPositionChange,\n onOpenChange,\n defaultPosition,\n dismissOnOverlayPress = true,\n animationConfig,\n dismissOnSnapToBottom = false,\n forceRemoveScrollEnabled = null,\n disableDrag: disableDragProp,\n modal = false,\n zIndex = parentSheet.zIndex + 1,\n portalProps,\n } = props\n\n if (process.env.NODE_ENV === 'development') {\n if (snapPointsProp.some((p) => p < 0 || p > 100)) {\n // eslint-disable-next-line no-console\n console.warn(\n '\u26A0\uFE0F Invalid snapPoint given, snapPoints must be between 0 and 100, equal to percent height of frame'\n )\n }\n }\n\n const driver = getAnimationDriver()\n if (!driver) {\n throw new Error('Must set animations in tamagui.config.ts')\n }\n\n const disableDrag = disableDragProp ?? controller?.disableDrag\n const themeName = useThemeName()\n const contentRef = React.useRef<TamaguiElement>(null)\n const scrollBridge = useConstant<ScrollBridge>(() => ({\n enabled: false,\n y: 0,\n paneY: 0,\n paneMinY: 0,\n scrollStartY: -1,\n drag: () => {},\n release: () => {},\n scrollLock: false,\n }))\n\n const onOpenChangeInternal = (val: boolean) => {\n controller?.onOpenChange?.(val)\n onOpenChange?.(val)\n }\n\n const [open, setOpen] = useControllableState({\n prop: controller?.open ?? openProp,\n defaultProp: true,\n onChange: onOpenChangeInternal,\n strategy: 'most-recent-wins',\n transition: true,\n })\n\n const [frameSize, setFrameSize] = useState<number>(0)\n\n const snapPoints = useMemo(\n () => (dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(snapPointsProp), dismissOnSnapToBottom]\n )\n\n // lets set -1 to be always the \"open = false\" position\n const [position_, setPosition_] = useControllableState({\n prop: positionProp,\n defaultProp: defaultPosition || (open ? 0 : -1),\n onChange: onPositionChange,\n strategy: 'most-recent-wins',\n transition: true,\n })\n const position = open === false ? -1 : position_\n\n // reset position to fully open on re-open after dismissOnSnapToBottom\n if (open && dismissOnSnapToBottom && position === snapPoints.length - 1) {\n setPosition_(0)\n }\n\n const setPosition = useCallback(\n (next: number) => {\n // close on dismissOnSnapToBottom (and set position so it animates)\n if (dismissOnSnapToBottom && next === snapPoints.length - 1) {\n setOpen(false)\n } else {\n setPosition_(next)\n }\n },\n [dismissOnSnapToBottom, snapPoints.length, setPosition_, setOpen]\n )\n\n const { useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle } =\n driver\n\n const animatedNumber = useAnimatedNumber(HIDDEN_SIZE)\n\n // native only fix\n const at = useRef(0)\n\n useAnimatedNumberReaction(animatedNumber, (value) => {\n at.current = value\n scrollBridge.paneY = value\n })\n\n const [isResizing, setIsResizing] = useState(true)\n useIsomorphicLayoutEffect(() => {\n if (!isResizing) {\n setIsResizing(true)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [modal])\n\n function stopSpring() {\n animatedNumber.stop()\n if (scrollBridge.onFinishAnimate) {\n scrollBridge.onFinishAnimate()\n scrollBridge.onFinishAnimate = undefined\n }\n }\n\n // open must set position\n const shouldSetPositionOpen = open && position < 0\n useEffect(() => {\n if (shouldSetPositionOpen) {\n setPosition(0)\n }\n }, [setPosition, shouldSetPositionOpen])\n\n const positions = useMemo(\n () => snapPoints.map((point) => getPercentSize(point, frameSize)),\n [frameSize, snapPoints]\n )\n\n // we need to set this *after* fully closed to 0, to avoid it overlapping\n // the page when resizing quickly on web for example\n const [opacity, setOpacity] = useState(open ? 1 : 0)\n if (open && opacity === 0) {\n setOpacity(1)\n }\n useEffect(() => {\n if (!open) {\n // need to wait for animation complete, for now lets just do it naively\n const tm = setTimeout(() => {\n setOpacity(0)\n }, 400)\n return () => {\n clearTimeout(tm)\n }\n }\n }, [open])\n\n const animateTo = useEvent((position: number) => {\n const current = animatedNumber.getValue()\n if (isHidden && open) return\n if (!current) return\n if (frameSize === 0) return\n const hiddenValue = frameSize === 0 ? HIDDEN_SIZE : frameSize\n const toValue = isHidden || position === -1 ? hiddenValue : positions[position]\n if (at.current === toValue) return\n stopSpring()\n if (isHidden || isResizing) {\n if (isResizing) {\n setIsResizing(false)\n }\n animatedNumber.setValue(toValue, {\n type: 'timing',\n duration: 0,\n })\n at.current = toValue\n return\n }\n // dont bounce on initial measure to bottom\n const overshootClamping = at.current === HIDDEN_SIZE\n animatedNumber.setValue(toValue, {\n ...animationConfig,\n type: 'spring',\n overshootClamping,\n })\n })\n\n useIsomorphicLayoutEffect(() => {\n animateTo(position)\n }, [isHidden, frameSize, position, animateTo])\n\n /**\n * This is a hacky workaround for native:\n */\n const [isShowingInnerSheet, setIsShowingInnerSheet] = useState(false)\n const shouldHideParentSheet = !isWeb && modal && isShowingInnerSheet\n const parentSheetContext = useContext(SheetInsideSheetContext)\n const onInnerSheet = useCallback((hasChild: boolean) => {\n setIsShowingInnerSheet(hasChild)\n }, [])\n\n const panResponder = useMemo(\n () => {\n if (disableDrag) return\n if (!frameSize) return\n if (isShowingInnerSheet) return\n\n const minY = positions[0]\n scrollBridge.paneMinY = minY\n let startY = at.current\n\n function makeUnselectable(val: boolean) {\n if (!selectionStyleSheet) return\n if (!val) {\n selectionStyleSheet.innerText = ''\n } else {\n selectionStyleSheet.innerText =\n ':root * { user-select: none !important; -webkit-user-select: none !important; }'\n }\n }\n\n const release = ({ vy, dragAt }: { dragAt: number; vy: number }) => {\n isExternalDrag = false\n previouslyScrolling = false\n makeUnselectable(false)\n const at = dragAt + startY\n // seems liky vy goes up to about 4 at the very most (+ is down, - is up)\n // lets base our multiplier on the total layout height\n const end = at + frameSize * vy * 0.2\n let closestPoint = 0\n let dist = Infinity\n for (let i = 0; i < positions.length; i++) {\n const position = positions[i]\n const curDist = end > position ? end - position : position - end\n if (curDist < dist) {\n dist = curDist\n closestPoint = i\n }\n }\n // have to call both because state may not change but need to snap back\n setPosition(closestPoint)\n animateTo(closestPoint)\n }\n\n const finish = (_e: GestureResponderEvent, state: PanResponderGestureState) => {\n release({\n vy: state.vy,\n dragAt: state.dy,\n })\n }\n\n let previouslyScrolling = false\n\n const onMoveShouldSet = (\n _e: GestureResponderEvent,\n { dy }: PanResponderGestureState\n ) => {\n const isScrolled = scrollBridge.y !== 0\n const isDraggingUp = dy < 0\n // we can treat near top instead of exactly to avoid trouble with springs\n const isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY\n if (isScrolled) {\n previouslyScrolling = true\n return false\n }\n // prevent drag once at top and pulling up\n if (isNearTop) {\n if (!isScrolled && isDraggingUp) {\n return false\n }\n }\n // we could do some detection of other touchables and cancel here..\n return Math.abs(dy) > 5\n }\n\n const grant = () => {\n makeUnselectable(true)\n stopSpring()\n startY = at.current\n }\n\n let isExternalDrag = false\n\n scrollBridge.drag = (dy) => {\n if (!isExternalDrag) {\n isExternalDrag = true\n grant()\n }\n const to = dy + startY\n animatedNumber.setValue(resisted(to, minY), { type: 'direct' })\n }\n\n scrollBridge.release = release\n\n return PanResponder.create({\n onMoveShouldSetPanResponder: onMoveShouldSet,\n onPanResponderGrant: grant,\n onPanResponderMove: (_e, { dy }) => {\n const toFull = dy + startY\n const to = resisted(toFull, minY)\n animatedNumber.setValue(to, { type: 'direct' })\n },\n onPanResponderEnd: finish,\n onPanResponderTerminate: finish,\n onPanResponderRelease: finish,\n })\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition]\n )\n\n let handleComponent: React.ReactElement | null = null\n let overlayComponent: React.ReactElement | null = null\n let frameComponent: React.ReactElement | null = null\n\n // TODO do more radix-like and don't require direct children descendents\n React.Children.forEach(childrenProp, (child) => {\n if (isValidElement(child)) {\n const name = child.type?.['staticConfig']?.componentName\n switch (name) {\n case 'SheetHandle':\n handleComponent = child\n break\n case 'Sheet':\n frameComponent = child\n break\n case 'SheetOverlay':\n overlayComponent = child\n break\n default:\n // eslint-disable-next-line no-console\n console.warn('Warning: passed invalid child to Sheet', child)\n }\n }\n })\n\n const animatedStyle = useAnimatedNumberStyle(animatedNumber, (val) => {\n const translateY = frameSize === 0 ? HIDDEN_SIZE : val\n return {\n transform: [{ translateY }],\n }\n })\n\n // temp until reanimated useAnimatedNumber fix\n const AnimatedView = (driver['NumberView'] ?? driver.View) as typeof Animated.View\n\n useIsomorphicLayoutEffect(() => {\n if (!(parentSheetContext && open)) return\n parentSheetContext(true)\n return () => {\n parentSheetContext(false)\n }\n }, [parentSheetContext, open])\n\n const nextParentContext = useMemo(\n () => ({\n zIndex,\n }),\n [zIndex]\n )\n\n const handleLayout = useCallback((e) => {\n let next = e.nativeEvent?.layout.height\n if (isWeb && isTouchable && !open) {\n // temp fix ios bug where it doesn't go below dynamic bottom...\n next += 100\n }\n if (!next) return\n setFrameSize((prev) => {\n const isBigChange = Math.abs(prev - next) > 20\n setIsResizing(isBigChange)\n return next\n })\n }, [])\n\n const removeScrollEnabled = forceRemoveScrollEnabled ?? (open && modal)\n\n const contents = (\n <ParentSheetContext.Provider value={nextParentContext}>\n <SheetProvider\n modal={modal}\n contentRef={contentRef}\n frameSize={frameSize}\n dismissOnOverlayPress={dismissOnOverlayPress}\n dismissOnSnapToBottom={dismissOnSnapToBottom}\n open={open}\n hidden={!!isHidden}\n scope={__scopeSheet}\n position={position}\n snapPoints={snapPoints}\n setPosition={setPosition}\n setOpen={setOpen}\n scrollBridge={scrollBridge}\n >\n {isResizing || shouldHideParentSheet ? null : overlayComponent}\n\n <AnimatedView\n ref={ref}\n {...panResponder?.panHandlers}\n onLayout={handleLayout}\n pointerEvents={open && !shouldHideParentSheet ? 'auto' : 'none'}\n style={[\n {\n position: 'absolute',\n zIndex,\n width: '100%',\n height: '100%',\n opacity,\n },\n animatedStyle,\n ]}\n >\n {handleComponent}\n\n {/* @ts-ignore */}\n <RemoveScroll\n forwardProps\n enabled={removeScrollEnabled}\n allowPinchZoom\n shards={[contentRef]}\n // causes lots of bugs on touch web on site\n removeScrollBar={false}\n >\n {isResizing ? <></> : frameComponent}\n </RemoveScroll>\n </AnimatedView>\n </SheetProvider>\n </ParentSheetContext.Provider>\n )\n\n const adaptContext = useContext(AdaptParentContext)\n\n if (modal) {\n const modalContents = (\n <Portal zIndex={zIndex} {...portalProps}>\n <Theme forceClassName name={themeName}>\n <AdaptParentContext.Provider value={adaptContext}>\n {contents}\n </AdaptParentContext.Provider>\n </Theme>\n </Portal>\n )\n\n if (isWeb) {\n return modalContents\n }\n\n // on native we don't support multiple modals yet... fix for now is to hide outer one\n return (\n <SheetInsideSheetContext.Provider value={onInnerSheet}>\n {modalContents}\n </SheetInsideSheetContext.Provider>\n )\n }\n\n return contents\n }),\n { componentName: 'Sheet' }\n)\n\nconst SheetInsideSheetContext = createContext<((hasChild: boolean) => void) | null>(null)\n\nexport const ControlledSheet = Sheet as FunctionComponent<\n Omit<SheetProps, 'open' | 'onOpenChange'> & RefAttributes<View>\n> &\n typeof sheetComponents\n\n/* -------------------------------------------------------------------------------------------------*/\n\nfunction getPercentSize(point?: number, frameSize?: number) {\n if (!frameSize) return 0\n if (point === undefined) {\n // eslint-disable-next-line no-console\n console.warn('No snapPoint')\n return 0\n }\n const pct = point / 100\n const next = Math.round(frameSize - pct * frameSize)\n return next\n}\n\nfunction resisted(y: number, minY: number, maxOverflow = 25) {\n if (y < minY) {\n const past = minY - y\n const pctPast = Math.min(maxOverflow, past) / maxOverflow\n const diminishBy = 1.1 - Math.pow(0.1, pctPast)\n const extra = -diminishBy * maxOverflow\n return minY + extra\n }\n return y\n}\n\ntype SheetControllerContextValue = {\n disableDrag?: boolean\n open?: boolean\n // hide without \"closing\" to prevent re-animation when shown again\n hidden?: boolean\n onOpenChange?: React.Dispatch<React.SetStateAction<boolean>> | ((val: boolean) => void)\n}\n\nconst SheetControllerContext = createContext<SheetControllerContextValue | null>(null)\n\nexport const SheetController = ({\n children,\n onOpenChange: onOpenChangeProp,\n ...value\n}: Partial<SheetControllerContextValue> & { children?: React.ReactNode }) => {\n const onOpenChange = useEvent(onOpenChangeProp)\n\n const memoValue = useMemo(\n () => ({\n open: value.open,\n hidden: value.hidden,\n disableDrag: value.disableDrag,\n onOpenChange,\n }),\n [onOpenChange, value.open, value.hidden, value.disableDrag]\n )\n\n return (\n <SheetControllerContext.Provider value={memoValue}>\n {children}\n </SheetControllerContext.Provider>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Sheet", "SheetImplementation", "position", "at"]
7
7
  }
@@ -21,6 +21,7 @@ const SheetScrollView = forwardRef(
21
21
  lastPageY: 0,
22
22
  dragAt: 0,
23
23
  dys: [],
24
+ // store a few recent dys to get velocity on release
24
25
  isScrolling: false,
25
26
  isDragging: false
26
27
  });
@@ -44,34 +45,34 @@ const SheetScrollView = forwardRef(
44
45
  vy
45
46
  });
46
47
  };
47
- return /* @__PURE__ */ jsxs(ScrollView, {
48
- ref: composeRefs(scrollRef, ref),
49
- flex: 1,
50
- scrollEventThrottle: 8,
51
- onScroll: (e) => {
52
- const { y } = e.nativeEvent.contentOffset;
53
- scrollBridge.y = y;
54
- if (y > 0) {
48
+ return /* @__PURE__ */ jsxs(
49
+ ScrollView,
50
+ {
51
+ ref: composeRefs(scrollRef, ref),
52
+ flex: 1,
53
+ scrollEventThrottle: 8,
54
+ onScroll: (e) => {
55
+ const { y } = e.nativeEvent.contentOffset;
56
+ scrollBridge.y = y;
57
+ if (y > 0) {
58
+ scrollBridge.scrollStartY = -1;
59
+ }
60
+ },
61
+ onStartShouldSetResponder: () => {
55
62
  scrollBridge.scrollStartY = -1;
56
- }
57
- },
58
- onStartShouldSetResponder: () => {
59
- scrollBridge.scrollStartY = -1;
60
- state.current.isDragging = true;
61
- return true;
62
- },
63
- onMoveShouldSetResponder: () => false,
64
- onResponderRelease: release,
65
- className: "_ovs-contain",
66
- ...props,
67
- children: [
68
- useMemo(() => children, [children]),
69
- /* @__PURE__ */ jsx(Stack, {
70
- height: percentToPadBottom / 100 * frameSize,
71
- width: 0
72
- })
73
- ]
74
- });
63
+ state.current.isDragging = true;
64
+ return true;
65
+ },
66
+ onMoveShouldSetResponder: () => false,
67
+ onResponderRelease: release,
68
+ className: "_ovs-contain",
69
+ ...props,
70
+ children: [
71
+ useMemo(() => children, [children]),
72
+ /* @__PURE__ */ jsx(Stack, { height: percentToPadBottom / 100 * frameSize, width: 0 })
73
+ ]
74
+ }
75
+ );
75
76
  }
76
77
  );
77
78
  export {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/SheetScrollView.tsx"],
4
4
  "sourcesContent": ["import { Stack, TamaguiElement, composeRefs } from '@tamagui/core'\nimport { ScrollView, ScrollViewProps } from '@tamagui/scroll-view'\nimport { forwardRef, useMemo, useRef, useState } from 'react'\nimport { ScrollView as RNScrollView } from 'react-native'\n\nimport { useSheetContext } from './SheetContext'\nimport { SheetScopedProps } from './types'\n\n// TODO ideally would replicate https://github.com/ammarahm-ed/react-native-actions-sheet/blob/master/src/index.tsx\n\n/* -------------------------------------------------------------------------------------------------\n * SheetScrollView\n * -----------------------------------------------------------------------------------------------*/\n\nconst SHEET_SCROLL_VIEW_NAME = 'SheetScrollView'\n\nexport const SheetScrollView = forwardRef<TamaguiElement, ScrollViewProps>(\n ({ __scopeSheet, children, ...props }: SheetScopedProps<ScrollViewProps>, ref) => {\n const { scrollBridge, position, snapPoints, frameSize, open } = useSheetContext(\n SHEET_SCROLL_VIEW_NAME,\n __scopeSheet\n )\n // const [scrollEnabled, setScrollEnabled_] = useState(true)\n const scrollRef = useRef<RNScrollView | null>(null)\n\n const percentOpened = snapPoints[position] ?? 0\n const [percentToPadBottom, setPercentToPadBottom] = useState(0)\n\n const next = 100 - percentOpened\n if (open && next !== percentToPadBottom) {\n setPercentToPadBottom(next)\n }\n\n // const setScrollEnabled = (next: boolean) => {\n // scrollRef.current?.setNativeProps?.({\n // scrollEnabled: next,\n // })\n // setScrollEnabled_(next)\n // }\n\n const state = useRef({\n lastPageY: 0,\n dragAt: 0,\n dys: [] as number[], // store a few recent dys to get velocity on release\n isScrolling: false,\n isDragging: false,\n })\n\n const release = () => {\n if (!state.current.isDragging) {\n return\n }\n state.current.isDragging = false\n scrollBridge.scrollStartY = -1\n state.current.isScrolling = false\n // setScrollEnabled(true)\n let vy = 0\n if (state.current.dys.length) {\n const recentDys = state.current.dys.slice(-10)\n const dist = recentDys.length ? recentDys.reduce((a, b) => a + b, 0) : 0\n const avgDy = dist / recentDys.length\n vy = avgDy * 0.04\n }\n state.current.dys = []\n scrollBridge.release({\n dragAt: state.current.dragAt,\n vy,\n })\n }\n\n return (\n <ScrollView\n ref={composeRefs(scrollRef as any, ref)}\n flex={1}\n scrollEventThrottle={8}\n // scrollEnabled={scrollEnabled}\n onScroll={(e) => {\n const { y } = e.nativeEvent.contentOffset\n scrollBridge.y = y\n if (y > 0) {\n scrollBridge.scrollStartY = -1\n }\n }}\n onStartShouldSetResponder={() => {\n scrollBridge.scrollStartY = -1\n state.current.isDragging = true\n return true\n }}\n // setting to false while onResponderMove is disabled\n onMoveShouldSetResponder={() => false}\n // somehow disabling works better, regression, no more nice drag continue scroll\n // onResponderMove={(e) => {\n // const { pageY } = e.nativeEvent\n\n // if (state.current.isScrolling) {\n // return\n // }\n\n // if (scrollBridge.scrollStartY === -1) {\n // scrollBridge.scrollStartY = pageY\n // state.current.lastPageY = pageY\n // }\n\n // const dragAt = pageY - scrollBridge.scrollStartY\n // const dy = pageY - state.current.lastPageY\n // state.current.lastPageY = pageY // after dy\n // const isDraggingUp = dy < 0\n // const isPaneAtTop = scrollBridge.paneY <= scrollBridge.paneMinY\n\n // if ((dy === 0 || isDraggingUp) && isPaneAtTop) {\n // state.current.isScrolling = true\n // setScrollEnabled(true)\n // return\n // }\n\n // setScrollEnabled(false)\n // scrollBridge.drag(dragAt)\n // state.current.dragAt = dragAt\n // state.current.dys.push(dy)\n // // only do every so often, cut down to 10 again\n // if (state.current.dys.length > 100) {\n // state.current.dys = state.current.dys.slice(-10)\n // }\n // }}\n onResponderRelease={release}\n className=\"_ovs-contain\"\n {...props}\n >\n {useMemo(() => children, [children])}\n <Stack height={(percentToPadBottom / 100) * frameSize} width={0} />\n </ScrollView>\n )\n }\n)\n"],
5
- "mappings": "AAuEM,SA0DE,KA1DF;AAvEN,SAAS,OAAuB,mBAAmB;AACnD,SAAS,kBAAmC;AAC5C,SAAS,YAAY,SAAS,QAAQ,gBAAgB;AAGtD,SAAS,uBAAuB;AAShC,MAAM,yBAAyB;AAExB,MAAM,kBAAkB;AAAA,EAC7B,CAAC,EAAE,cAAc,aAAa,MAAM,GAAsC,QAAQ;AAChF,UAAM,EAAE,cAAc,UAAU,YAAY,WAAW,KAAK,IAAI;AAAA,MAC9D;AAAA,MACA;AAAA,IACF;AAEA,UAAM,YAAY,OAA4B,IAAI;AAElD,UAAM,gBAAgB,WAAW,aAAa;AAC9C,UAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAS,CAAC;AAE9D,UAAM,OAAO,MAAM;AACnB,QAAI,QAAQ,SAAS,oBAAoB;AACvC,4BAAsB,IAAI;AAAA,IAC5B;AASA,UAAM,QAAQ,OAAO;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,KAAK,CAAC;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,qBAAC;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,WAAU;AAAA,MACT,GAAG;AAAA,MAEH;AAAA,gBAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC;AAAA,QACnC,oBAAC;AAAA,UAAM,QAAS,qBAAqB,MAAO;AAAA,UAAW,OAAO;AAAA,SAAG;AAAA;AAAA,KACnE;AAAA,EAEJ;AACF;",
5
+ "mappings": "AAuEM,SA0DE,KA1DF;AAvEN,SAAS,OAAuB,mBAAmB;AACnD,SAAS,kBAAmC;AAC5C,SAAS,YAAY,SAAS,QAAQ,gBAAgB;AAGtD,SAAS,uBAAuB;AAShC,MAAM,yBAAyB;AAExB,MAAM,kBAAkB;AAAA,EAC7B,CAAC,EAAE,cAAc,UAAU,GAAG,MAAM,GAAsC,QAAQ;AAChF,UAAM,EAAE,cAAc,UAAU,YAAY,WAAW,KAAK,IAAI;AAAA,MAC9D;AAAA,MACA;AAAA,IACF;AAEA,UAAM,YAAY,OAA4B,IAAI;AAElD,UAAM,gBAAgB,WAAW,QAAQ,KAAK;AAC9C,UAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAS,CAAC;AAE9D,UAAM,OAAO,MAAM;AACnB,QAAI,QAAQ,SAAS,oBAAoB;AACvC,4BAAsB,IAAI;AAAA,IAC5B;AASA,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;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,YAAY,WAAkB,GAAG;AAAA,QACtC,MAAM;AAAA,QACN,qBAAqB;AAAA,QAErB,UAAU,CAAC,MAAM;AACf,gBAAM,EAAE,EAAE,IAAI,EAAE,YAAY;AAC5B,uBAAa,IAAI;AACjB,cAAI,IAAI,GAAG;AACT,yBAAa,eAAe;AAAA,UAC9B;AAAA,QACF;AAAA,QACA,2BAA2B,MAAM;AAC/B,uBAAa,eAAe;AAC5B,gBAAM,QAAQ,aAAa;AAC3B,iBAAO;AAAA,QACT;AAAA,QAEA,0BAA0B,MAAM;AAAA,QAmChC,oBAAoB;AAAA,QACpB,WAAU;AAAA,QACT,GAAG;AAAA,QAEH;AAAA,kBAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC;AAAA,UACnC,oBAAC,SAAM,QAAS,qBAAqB,MAAO,WAAW,OAAO,GAAG;AAAA;AAAA;AAAA,IACnE;AAAA,EAEJ;AACF;",
6
6
  "names": []
7
7
  }
package/dist/jsx/Sheet.js CHANGED
@@ -65,11 +65,15 @@ const SheetHandleFrame = styled(XStack, {
65
65
  const SheetHandle = SheetHandleFrame.extractable(
66
66
  ({ __scopeSheet, ...props }) => {
67
67
  const context = useSheetContext(SHEET_HANDLE_NAME, __scopeSheet);
68
- return <SheetHandleFrame onPress={() => {
69
- const max = context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0);
70
- const nextPos = (context.position + 1) % max;
71
- context.setPosition(nextPos);
72
- }} open={context.open} {...props} />;
68
+ return <SheetHandleFrame
69
+ onPress={() => {
70
+ const max = context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0);
71
+ const nextPos = (context.position + 1) % max;
72
+ context.setPosition(nextPos);
73
+ }}
74
+ open={context.open}
75
+ {...props}
76
+ />;
73
77
  }
74
78
  );
75
79
  const SHEET_OVERLAY_NAME = "SheetOverlay";
@@ -94,12 +98,16 @@ const SheetOverlayFrame = styled(YStack, {
94
98
  const SheetOverlay = SheetOverlayFrame.extractable(
95
99
  ({ __scopeSheet, ...props }) => {
96
100
  const context = useSheetContext(SHEET_OVERLAY_NAME, __scopeSheet);
97
- return <SheetOverlayFrame closed={!context.open || context.hidden} {...props} onPress={mergeEvent(
98
- props.onPress,
99
- context.dismissOnOverlayPress ? () => {
100
- context.setOpen(false);
101
- } : void 0
102
- )} />;
101
+ return <SheetOverlayFrame
102
+ closed={!context.open || context.hidden}
103
+ {...props}
104
+ onPress={mergeEvent(
105
+ props.onPress,
106
+ context.dismissOnOverlayPress ? () => {
107
+ context.setOpen(false);
108
+ } : void 0
109
+ )}
110
+ />;
103
111
  }
104
112
  );
105
113
  const selectionStyleSheet = isClient ? document.createElement("style") : null;
@@ -110,8 +118,8 @@ const SheetFrameFrame = styled(YStack, {
110
118
  name: SHEET_NAME,
111
119
  flex: 1,
112
120
  backgroundColor: "$background",
113
- borderTopLeftRadius: "$4",
114
- borderTopRightRadius: "$4",
121
+ borderTopLeftRadius: "$true",
122
+ borderTopRightRadius: "$true",
115
123
  width: "100%",
116
124
  maxHeight: "100%",
117
125
  overflow: "hidden",
@@ -220,6 +228,7 @@ const SheetImplementation = themeable(
220
228
  const [frameSize, setFrameSize] = useState(0);
221
229
  const snapPoints = useMemo(
222
230
  () => dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp,
231
+ // eslint-disable-next-line react-hooks/exhaustive-deps
223
232
  [JSON.stringify(snapPointsProp), dismissOnSnapToBottom]
224
233
  );
225
234
  const [position_, setPosition_] = useControllableState({
@@ -416,6 +425,7 @@ const SheetImplementation = themeable(
416
425
  onPanResponderRelease: finish
417
426
  });
418
427
  },
428
+ // eslint-disable-next-line react-hooks/exhaustive-deps
419
429
  [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition]
420
430
  );
421
431
  let handleComponent = null;
@@ -474,20 +484,46 @@ const SheetImplementation = themeable(
474
484
  });
475
485
  }, []);
476
486
  const removeScrollEnabled = forceRemoveScrollEnabled ?? (open && modal);
477
- const contents = <ParentSheetContext.Provider value={nextParentContext}><SheetProvider modal={modal} contentRef={contentRef} frameSize={frameSize} dismissOnOverlayPress={dismissOnOverlayPress} dismissOnSnapToBottom={dismissOnSnapToBottom} open={open} hidden={!!isHidden} scope={__scopeSheet} position={position} snapPoints={snapPoints} setPosition={setPosition} setOpen={setOpen} scrollBridge={scrollBridge}>
487
+ const contents = <ParentSheetContext.Provider value={nextParentContext}><SheetProvider
488
+ modal={modal}
489
+ contentRef={contentRef}
490
+ frameSize={frameSize}
491
+ dismissOnOverlayPress={dismissOnOverlayPress}
492
+ dismissOnSnapToBottom={dismissOnSnapToBottom}
493
+ open={open}
494
+ hidden={!!isHidden}
495
+ scope={__scopeSheet}
496
+ position={position}
497
+ snapPoints={snapPoints}
498
+ setPosition={setPosition}
499
+ setOpen={setOpen}
500
+ scrollBridge={scrollBridge}
501
+ >
478
502
  {isResizing || shouldHideParentSheet ? null : overlayComponent}
479
- <AnimatedView ref={ref} {...panResponder?.panHandlers} onLayout={handleLayout} pointerEvents={open && !shouldHideParentSheet ? "auto" : "none"} style={[
480
- {
481
- position: "absolute",
482
- zIndex,
483
- width: "100%",
484
- height: "100%",
485
- opacity
486
- },
487
- animatedStyle
488
- ]}>
503
+ <AnimatedView
504
+ ref={ref}
505
+ {...panResponder?.panHandlers}
506
+ onLayout={handleLayout}
507
+ pointerEvents={open && !shouldHideParentSheet ? "auto" : "none"}
508
+ style={[
509
+ {
510
+ position: "absolute",
511
+ zIndex,
512
+ width: "100%",
513
+ height: "100%",
514
+ opacity
515
+ },
516
+ animatedStyle
517
+ ]}
518
+ >
489
519
  {handleComponent}
490
- <RemoveScroll forwardProps enabled={removeScrollEnabled} allowPinchZoom shards={[contentRef]} removeScrollBar={false}>{isResizing ? <></> : frameComponent}</RemoveScroll>
520
+ <RemoveScroll
521
+ forwardProps
522
+ enabled={removeScrollEnabled}
523
+ allowPinchZoom
524
+ shards={[contentRef]}
525
+ removeScrollBar={false}
526
+ >{isResizing ? <></> : frameComponent}</RemoveScroll>
491
527
  </AnimatedView>
492
528
  </SheetProvider></ParentSheetContext.Provider>;
493
529
  const adaptContext = useContext(AdaptParentContext);