@tamagui/sheet 1.0.1-rc.7 → 1.0.1-rc.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.
@@ -52,9 +52,14 @@ const SheetScrollView = (0, import_react.forwardRef)(
52
52
  lastPageY: 0,
53
53
  dragAt: 0,
54
54
  dys: [],
55
- isScrolling: false
55
+ isScrolling: false,
56
+ isDragging: false
56
57
  });
57
58
  const release = () => {
59
+ if (!state.current.isDragging) {
60
+ return;
61
+ }
62
+ state.current.isDragging = false;
58
63
  scrollBridge.scrollStartY = -1;
59
64
  state.current.isScrolling = false;
60
65
  setScrollEnabled(true);
@@ -85,6 +90,7 @@ const SheetScrollView = (0, import_react.forwardRef)(
85
90
  },
86
91
  onStartShouldSetResponder: () => {
87
92
  scrollBridge.scrollStartY = -1;
93
+ state.current.isDragging = true;
88
94
  return true;
89
95
  },
90
96
  onMoveShouldSetResponder: () => true,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SheetScrollView.tsx"],
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 })\n\n const release = () => {\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 return true\n }}\n onMoveShouldSetResponder={() => true}\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 {...props}\n >\n {useMemo(() => children, [children])}\n <Stack height={(percentToPadBottom / 100) * frameSize} width={0} />\n </ScrollView>\n )\n }\n)\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkEM;AAlEN,kBAAmD;AACnD,yBAA4C;AAC5C,mBAAsD;AAGtD,0BAAgC;AAShC,MAAM,yBAAyB;AAExB,MAAM,sBAAkB;AAAA,EAC7B,CAAC,EAAE,cAAc,aAAa,MAAM,GAAsC,QAAQ;AAChF,UAAM,EAAE,cAAc,UAAU,YAAY,WAAW,KAAK,QAAI;AAAA,MAC9D;AAAA,MACA;AAAA,IACF;AACA,UAAM,CAAC,eAAe,iBAAiB,QAAI,uBAAS,IAAI;AACxD,UAAM,gBAAY,qBAA4B,IAAI;AAElD,UAAM,gBAAgB,WAAW,aAAa;AAC9C,UAAM,CAAC,oBAAoB,qBAAqB,QAAI,uBAAS,CAAC;AAE9D,UAAM,OAAO,MAAM;AACnB,QAAI,QAAQ,SAAS,oBAAoB;AACvC,4BAAsB,IAAI;AAAA,IAC5B;AAEA,UAAM,mBAAmB,CAACA,UAAkB;AAjChD;AAkCM,4BAAU,YAAV,mBAAmB,mBAAnB,4BAAoC;AAAA,QAClC,eAAeA;AAAA,MACjB;AACA,wBAAkBA,KAAI;AAAA,IACxB;AAEA,UAAM,YAAQ,qBAAO;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,KAAK,CAAC;AAAA,MACN,aAAa;AAAA,IACf,CAAC;AAED,UAAM,UAAU,MAAM;AACpB,mBAAa,eAAe;AAC5B,YAAM,QAAQ,cAAc;AAC5B,uBAAiB,IAAI;AACrB,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,6CAAC;AAAA,MACC,SAAK,yBAAY,WAAkB,GAAG;AAAA,MACtC,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB;AAAA,MACA,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,eAAO;AAAA,MACT;AAAA,MACA,0BAA0B,MAAM;AAAA,MAmChC,oBAAoB;AAAA,MACnB,GAAG;AAAA,MAEH;AAAA,kCAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC;AAAA,QACnC,4CAAC;AAAA,UAAM,QAAS,qBAAqB,MAAO;AAAA,UAAW,OAAO;AAAA,SAAG;AAAA;AAAA,KACnE;AAAA,EAEJ;AACF;",
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 onMoveShouldSetResponder={() => true}\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 {...props}\n >\n {useMemo(() => children, [children])}\n <Stack height={(percentToPadBottom / 100) * frameSize} width={0} />\n </ScrollView>\n )\n }\n)\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAuEM;AAvEN,kBAAmD;AACnD,yBAA4C;AAC5C,mBAAsD;AAGtD,0BAAgC;AAShC,MAAM,yBAAyB;AAExB,MAAM,sBAAkB;AAAA,EAC7B,CAAC,EAAE,cAAc,aAAa,MAAM,GAAsC,QAAQ;AAChF,UAAM,EAAE,cAAc,UAAU,YAAY,WAAW,KAAK,QAAI;AAAA,MAC9D;AAAA,MACA;AAAA,IACF;AACA,UAAM,CAAC,eAAe,iBAAiB,QAAI,uBAAS,IAAI;AACxD,UAAM,gBAAY,qBAA4B,IAAI;AAElD,UAAM,gBAAgB,WAAW,aAAa;AAC9C,UAAM,CAAC,oBAAoB,qBAAqB,QAAI,uBAAS,CAAC;AAE9D,UAAM,OAAO,MAAM;AACnB,QAAI,QAAQ,SAAS,oBAAoB;AACvC,4BAAsB,IAAI;AAAA,IAC5B;AAEA,UAAM,mBAAmB,CAACA,UAAkB;AAjChD;AAkCM,4BAAU,YAAV,mBAAmB,mBAAnB,4BAAoC;AAAA,QAClC,eAAeA;AAAA,MACjB;AACA,wBAAkBA,KAAI;AAAA,IACxB;AAEA,UAAM,YAAQ,qBAAO;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;AAC5B,uBAAiB,IAAI;AACrB,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,6CAAC;AAAA,MACC,SAAK,yBAAY,WAAkB,GAAG;AAAA,MACtC,MAAM;AAAA,MACN,qBAAqB;AAAA,MACrB;AAAA,MACA,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,MACA,0BAA0B,MAAM;AAAA,MAmChC,oBAAoB;AAAA,MACnB,GAAG;AAAA,MAEH;AAAA,kCAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC;AAAA,QACnC,4CAAC;AAAA,UAAM,QAAS,qBAAqB,MAAO;AAAA,UAAW,OAAO;AAAA,SAAG;AAAA;AAAA,KACnE;AAAA,EAEJ;AACF;",
6
6
  "names": ["next"]
7
7
  }
@@ -29,9 +29,14 @@ const SheetScrollView = forwardRef(
29
29
  lastPageY: 0,
30
30
  dragAt: 0,
31
31
  dys: [],
32
- isScrolling: false
32
+ isScrolling: false,
33
+ isDragging: false
33
34
  });
34
35
  const release = () => {
36
+ if (!state.current.isDragging) {
37
+ return;
38
+ }
39
+ state.current.isDragging = false;
35
40
  scrollBridge.scrollStartY = -1;
36
41
  state.current.isScrolling = false;
37
42
  setScrollEnabled(true);
@@ -62,6 +67,7 @@ const SheetScrollView = forwardRef(
62
67
  },
63
68
  onStartShouldSetResponder: () => {
64
69
  scrollBridge.scrollStartY = -1;
70
+ state.current.isDragging = true;
65
71
  return true;
66
72
  },
67
73
  onMoveShouldSetResponder: () => true,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SheetScrollView.tsx"],
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 })\n\n const release = () => {\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 return true\n }}\n onMoveShouldSetResponder={() => true}\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 {...props}\n >\n {useMemo(() => children, [children])}\n <Stack height={(percentToPadBottom / 100) * frameSize} width={0} />\n </ScrollView>\n )\n }\n)\n"],
5
- "mappings": "AAkEM,SAuDE,KAvDF;AAlEN,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;AACA,UAAM,CAAC,eAAe,iBAAiB,IAAI,SAAS,IAAI;AACxD,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;AAEA,UAAM,mBAAmB,CAACA,UAAkB;AAjChD;AAkCM,4BAAU,YAAV,mBAAmB,mBAAnB,4BAAoC;AAAA,QAClC,eAAeA;AAAA,MACjB;AACA,wBAAkBA,KAAI;AAAA,IACxB;AAEA,UAAM,QAAQ,OAAO;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,KAAK,CAAC;AAAA,MACN,aAAa;AAAA,IACf,CAAC;AAED,UAAM,UAAU,MAAM;AACpB,mBAAa,eAAe;AAC5B,YAAM,QAAQ,cAAc;AAC5B,uBAAiB,IAAI;AACrB,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,MACrB;AAAA,MACA,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,eAAO;AAAA,MACT;AAAA,MACA,0BAA0B,MAAM;AAAA,MAmChC,oBAAoB;AAAA,MACnB,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;",
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 onMoveShouldSetResponder={() => true}\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 {...props}\n >\n {useMemo(() => children, [children])}\n <Stack height={(percentToPadBottom / 100) * frameSize} width={0} />\n </ScrollView>\n )\n }\n)\n"],
5
+ "mappings": "AAuEM,SAwDE,KAxDF;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;AACA,UAAM,CAAC,eAAe,iBAAiB,IAAI,SAAS,IAAI;AACxD,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;AAEA,UAAM,mBAAmB,CAACA,UAAkB;AAjChD;AAkCM,4BAAU,YAAV,mBAAmB,mBAAnB,4BAAoC;AAAA,QAClC,eAAeA;AAAA,MACjB;AACA,wBAAkBA,KAAI;AAAA,IACxB;AAEA,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;AAC5B,uBAAiB,IAAI;AACrB,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,MACrB;AAAA,MACA,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,MACA,0BAA0B,MAAM;AAAA,MAmChC,oBAAoB;AAAA,MACnB,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;",
6
6
  "names": ["next"]
7
7
  }
@@ -27,9 +27,14 @@ const SheetScrollView = forwardRef(
27
27
  lastPageY: 0,
28
28
  dragAt: 0,
29
29
  dys: [],
30
- isScrolling: false
30
+ isScrolling: false,
31
+ isDragging: false
31
32
  });
32
33
  const release = () => {
34
+ if (!state.current.isDragging) {
35
+ return;
36
+ }
37
+ state.current.isDragging = false;
33
38
  scrollBridge.scrollStartY = -1;
34
39
  state.current.isScrolling = false;
35
40
  setScrollEnabled(true);
@@ -54,6 +59,7 @@ const SheetScrollView = forwardRef(
54
59
  }
55
60
  }} onStartShouldSetResponder={() => {
56
61
  scrollBridge.scrollStartY = -1;
62
+ state.current.isDragging = true;
57
63
  return true;
58
64
  }} onMoveShouldSetResponder={() => true} onResponderRelease={release} {...props}>
59
65
  {useMemo(() => children, [children])}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SheetScrollView.tsx"],
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 })\n\n const release = () => {\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 return true\n }}\n onMoveShouldSetResponder={() => true}\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 {...props}\n >\n {useMemo(() => children, [children])}\n <Stack height={(percentToPadBottom / 100) * frameSize} width={0} />\n </ScrollView>\n )\n }\n)\n"],
5
- "mappings": "AAAA,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;AACA,UAAM,CAAC,eAAe,iBAAiB,IAAI,SAAS,IAAI;AACxD,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;AAEA,UAAM,mBAAmB,CAACA,UAAkB;AAC1C,gBAAU,SAAS,iBAAiB;AAAA,QAClC,eAAeA;AAAA,MACjB,CAAC;AACD,wBAAkBA,KAAI;AAAA,IACxB;AAEA,UAAM,QAAQ,OAAO;AAAA,MACnB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,KAAK,CAAC;AAAA,MACN,aAAa;AAAA,IACf,CAAC;AAED,UAAM,UAAU,MAAM;AACpB,mBAAa,eAAe;AAC5B,YAAM,QAAQ,cAAc;AAC5B,uBAAiB,IAAI;AACrB,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,WACC,KAAK,YAAY,WAAkB,GAAG,GACtC,MAAM,GACN,qBAAqB,GACrB,eAAe,eACf,UAAU,CAAC,MAAM;AACf,YAAM,EAAE,EAAE,IAAI,EAAE,YAAY;AAC5B,mBAAa,IAAI;AACjB,UAAI,IAAI,GAAG;AACT,qBAAa,eAAe;AAAA,MAC9B;AAAA,IACF,GACA,2BAA2B,MAAM;AAC/B,mBAAa,eAAe;AAC5B,aAAO;AAAA,IACT,GACA,0BAA0B,MAAM,MAmChC,oBAAoB,aAChB;AAAA,OAEH,QAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC;AAAA,MACnC,CAAC,MAAM,QAAS,qBAAqB,MAAO,WAAW,OAAO,GAAG;AAAA,IACnE,EAxDC;AAAA,EA0DL;AACF;",
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 onMoveShouldSetResponder={() => true}\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 {...props}\n >\n {useMemo(() => children, [children])}\n <Stack height={(percentToPadBottom / 100) * frameSize} width={0} />\n </ScrollView>\n )\n }\n)\n"],
5
+ "mappings": "AAAA,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;AACA,UAAM,CAAC,eAAe,iBAAiB,IAAI,SAAS,IAAI;AACxD,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;AAEA,UAAM,mBAAmB,CAACA,UAAkB;AAC1C,gBAAU,SAAS,iBAAiB;AAAA,QAClC,eAAeA;AAAA,MACjB,CAAC;AACD,wBAAkBA,KAAI;AAAA,IACxB;AAEA,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;AAC5B,uBAAiB,IAAI;AACrB,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,WACC,KAAK,YAAY,WAAkB,GAAG,GACtC,MAAM,GACN,qBAAqB,GACrB,eAAe,eACf,UAAU,CAAC,MAAM;AACf,YAAM,EAAE,EAAE,IAAI,EAAE,YAAY;AAC5B,mBAAa,IAAI;AACjB,UAAI,IAAI,GAAG;AACT,qBAAa,eAAe;AAAA,MAC9B;AAAA,IACF,GACA,2BAA2B,MAAM;AAC/B,mBAAa,eAAe;AAC5B,YAAM,QAAQ,aAAa;AAC3B,aAAO;AAAA,IACT,GACA,0BAA0B,MAAM,MAmChC,oBAAoB,aAChB;AAAA,OAEH,QAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC;AAAA,MACnC,CAAC,MAAM,QAAS,qBAAqB,MAAO,WAAW,OAAO,GAAG;AAAA,IACnE,EAzDC;AAAA,EA2DL;AACF;",
6
6
  "names": ["next"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/sheet",
3
- "version": "1.0.1-rc.7",
3
+ "version": "1.0.1-rc.9",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -22,15 +22,15 @@
22
22
  "lint:fix": "../../node_modules/.bin/rome check --apply-suggested src"
23
23
  },
24
24
  "dependencies": {
25
- "@tamagui/animations-react-native": "^1.0.1-rc.7",
26
- "@tamagui/compose-refs": "^1.0.1-rc.7",
27
- "@tamagui/core": "^1.0.1-rc.7",
28
- "@tamagui/create-context": "^1.0.1-rc.7",
29
- "@tamagui/remove-scroll": "^1.0.1-rc.7",
30
- "@tamagui/scroll-view": "^1.0.1-rc.7",
31
- "@tamagui/stacks": "^1.0.1-rc.7",
32
- "@tamagui/use-constant": "^1.0.1-rc.7",
33
- "@tamagui/use-controllable-state": "^1.0.1-rc.7"
25
+ "@tamagui/animations-react-native": "^1.0.1-rc.9",
26
+ "@tamagui/compose-refs": "^1.0.1-rc.9",
27
+ "@tamagui/core": "^1.0.1-rc.9",
28
+ "@tamagui/create-context": "^1.0.1-rc.9",
29
+ "@tamagui/remove-scroll": "^1.0.1-rc.9",
30
+ "@tamagui/scroll-view": "^1.0.1-rc.9",
31
+ "@tamagui/stacks": "^1.0.1-rc.9",
32
+ "@tamagui/use-constant": "^1.0.1-rc.9",
33
+ "@tamagui/use-controllable-state": "^1.0.1-rc.9"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "react": "^18.2.0",
@@ -38,7 +38,7 @@
38
38
  "react-native": "*"
39
39
  },
40
40
  "devDependencies": {
41
- "@tamagui/build": "^1.0.1-rc.7",
41
+ "@tamagui/build": "^1.0.1-rc.9",
42
42
  "react": "^18.2.0",
43
43
  "react-dom": "^18.2.0",
44
44
  "react-native": "*"
@@ -43,9 +43,14 @@ export const SheetScrollView = forwardRef<TamaguiElement, ScrollViewProps>(
43
43
  dragAt: 0,
44
44
  dys: [] as number[], // store a few recent dys to get velocity on release
45
45
  isScrolling: false,
46
+ isDragging: false,
46
47
  })
47
48
 
48
49
  const release = () => {
50
+ if (!state.current.isDragging) {
51
+ return
52
+ }
53
+ state.current.isDragging = false
49
54
  scrollBridge.scrollStartY = -1
50
55
  state.current.isScrolling = false
51
56
  setScrollEnabled(true)
@@ -78,6 +83,7 @@ export const SheetScrollView = forwardRef<TamaguiElement, ScrollViewProps>(
78
83
  }}
79
84
  onStartShouldSetResponder={() => {
80
85
  scrollBridge.scrollStartY = -1
86
+ state.current.isDragging = true
81
87
  return true
82
88
  }}
83
89
  onMoveShouldSetResponder={() => true}