@tamagui/sheet 1.2.8 → 1.2.10

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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SheetContext.tsx"],
4
+ "sourcesContent": ["import { TamaguiElement } from '@tamagui/core'\nimport { createContextScope } from '@tamagui/create-context'\nimport React from 'react'\n\nimport { SHEET_NAME } from './constants'\nimport { PositionChangeHandler, ScrollBridge, SheetProps } from './types'\n\ntype SheetContextValue = Required<\n Pick<SheetProps, 'open' | 'position' | 'snapPoints' | 'dismissOnOverlayPress'>\n> & {\n hidden: boolean\n setPosition: PositionChangeHandler\n setOpen: React.Dispatch<React.SetStateAction<boolean>>\n contentRef: React.RefObject<TamaguiElement>\n dismissOnSnapToBottom: boolean\n scrollBridge: ScrollBridge\n frameSize: number\n modal: boolean\n}\n\nexport const [createSheetContext, createSheetScope] = createContextScope(SHEET_NAME)\n\nexport const [SheetProvider, useSheetContext] = createSheetContext<SheetContextValue>(\n SHEET_NAME,\n {} as any\n)\n"],
5
+ "mappings": "AACA,SAAS,0BAA0B;AAGnC,SAAS,kBAAkB;AAgBpB,MAAM,CAAC,oBAAoB,gBAAgB,IAAI,mBAAmB,UAAU;AAE5E,MAAM,CAAC,eAAe,eAAe,IAAI;AAAA,EAC9C;AAAA,EACA,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,76 @@
1
+ import { Stack, composeRefs } from "@tamagui/core";
2
+ import { ScrollView } from "@tamagui/scroll-view";
3
+ import { forwardRef, useMemo, useRef, useState } from "react";
4
+ import { useSheetContext } from "./SheetContext";
5
+ const SHEET_SCROLL_VIEW_NAME = "SheetScrollView";
6
+ const SheetScrollView = forwardRef(
7
+ ({ __scopeSheet, children, ...props }, ref) => {
8
+ const { scrollBridge, position, snapPoints, frameSize, open } = useSheetContext(
9
+ SHEET_SCROLL_VIEW_NAME,
10
+ __scopeSheet
11
+ );
12
+ const scrollRef = useRef(null);
13
+ const percentOpened = snapPoints[position] ?? 0;
14
+ const [percentToPadBottom, setPercentToPadBottom] = useState(0);
15
+ const next = 100 - percentOpened;
16
+ if (open && next !== percentToPadBottom) {
17
+ setPercentToPadBottom(next);
18
+ }
19
+ const state = useRef({
20
+ lastPageY: 0,
21
+ dragAt: 0,
22
+ dys: [],
23
+ // store a few recent dys to get velocity on release
24
+ isScrolling: false,
25
+ isDragging: false
26
+ });
27
+ const release = () => {
28
+ if (!state.current.isDragging) {
29
+ return;
30
+ }
31
+ state.current.isDragging = false;
32
+ scrollBridge.scrollStartY = -1;
33
+ state.current.isScrolling = false;
34
+ let vy = 0;
35
+ if (state.current.dys.length) {
36
+ const recentDys = state.current.dys.slice(-10);
37
+ const dist = recentDys.length ? recentDys.reduce((a, b) => a + b, 0) : 0;
38
+ const avgDy = dist / recentDys.length;
39
+ vy = avgDy * 0.04;
40
+ }
41
+ state.current.dys = [];
42
+ scrollBridge.release({
43
+ dragAt: state.current.dragAt,
44
+ vy
45
+ });
46
+ };
47
+ return <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) {
55
+ 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
+ >
68
+ {useMemo(() => children, [children])}
69
+ <Stack height={percentToPadBottom / 100 * frameSize} width={0} />
70
+ </ScrollView>;
71
+ }
72
+ );
73
+ export {
74
+ SheetScrollView
75
+ };
76
+ //# sourceMappingURL=SheetScrollView.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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 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": "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,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,CAAC;AAAA,MACC,KAAK,YAAY,WAAkB,GAAG;AAAA,MACtC,MAAM;AAAA,MACN,qBAAqB;AAAA,MAErB,UAAU,CAAC,MAAM;AACf,cAAM,EAAE,EAAE,IAAI,EAAE,YAAY;AAC5B,qBAAa,IAAI;AACjB,YAAI,IAAI,GAAG;AACT,uBAAa,eAAe;AAAA,QAC9B;AAAA,MACF;AAAA,MACA,2BAA2B,MAAM;AAC/B,qBAAa,eAAe;AAC5B,cAAM,QAAQ,aAAa;AAC3B,eAAO;AAAA,MACT;AAAA,MAEA,0BAA0B,MAAM;AAAA,MAmChC,oBAAoB;AAAA,MACpB,UAAU;AAAA,UACN;AAAA;AAAA,OAEH,QAAQ,MAAM,UAAU,CAAC,QAAQ,CAAC;AAAA,MACnC,CAAC,MAAM,QAAS,qBAAqB,MAAO,WAAW,OAAO,GAAG;AAAA,IACnE,EA3DC;AAAA,EA6DL;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ const constants = {};
2
+ const SHEET_NAME = "Sheet";
3
+ const SHEET_HANDLE_NAME = "SheetHandle";
4
+ export {
5
+ SHEET_HANDLE_NAME,
6
+ SHEET_NAME,
7
+ constants
8
+ };
9
+ //# sourceMappingURL=constants.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/constants.tsx"],
4
+ "sourcesContent": ["export const constants = {}\n\nexport const SHEET_NAME = 'Sheet'\nexport const SHEET_HANDLE_NAME = 'SheetHandle'\n"],
5
+ "mappings": "AAAO,MAAM,YAAY,CAAC;AAEnB,MAAM,aAAa;AACnB,MAAM,oBAAoB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./Sheet";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["export * from './Sheet'\n"],
5
+ "mappings": "AAAA,cAAc;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/sheet",
3
- "version": "1.2.8",
3
+ "version": "1.2.10",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -22,16 +22,16 @@
22
22
  "lint:fix": "../../node_modules/.bin/rome check --apply-suggested src"
23
23
  },
24
24
  "dependencies": {
25
- "@tamagui/animations-react-native": "^1.2.8",
26
- "@tamagui/compose-refs": "^1.2.8",
27
- "@tamagui/core": "^1.2.8",
28
- "@tamagui/create-context": "^1.2.8",
29
- "@tamagui/portal": "^1.2.8",
30
- "@tamagui/remove-scroll": "^1.2.8",
31
- "@tamagui/scroll-view": "^1.2.8",
32
- "@tamagui/stacks": "^1.2.8",
33
- "@tamagui/use-constant": "^1.2.8",
34
- "@tamagui/use-controllable-state": "^1.2.8"
25
+ "@tamagui/animations-react-native": "^1.2.10",
26
+ "@tamagui/compose-refs": "^1.2.10",
27
+ "@tamagui/core": "^1.2.10",
28
+ "@tamagui/create-context": "^1.2.10",
29
+ "@tamagui/portal": "^1.2.10",
30
+ "@tamagui/remove-scroll": "^1.2.10",
31
+ "@tamagui/scroll-view": "^1.2.10",
32
+ "@tamagui/stacks": "^1.2.10",
33
+ "@tamagui/use-constant": "^1.2.10",
34
+ "@tamagui/use-controllable-state": "^1.2.10"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "react": "*",
@@ -39,7 +39,7 @@
39
39
  "react-native": "*"
40
40
  },
41
41
  "devDependencies": {
42
- "@tamagui/build": "^1.2.8",
42
+ "@tamagui/build": "^1.2.10",
43
43
  "react": "^18.2.0",
44
44
  "react-dom": "^18.2.0",
45
45
  "react-native": "*"
@@ -17,7 +17,10 @@ export declare const createSheetContext: <ContextValueType extends object | null
17
17
  children: React.ReactNode;
18
18
  }): JSX.Element;
19
19
  displayName: string;
20
- }, (consumerName: string, scope: import("@tamagui/create-context").Scope<ContextValueType | undefined>) => ContextValueType], createSheetScope: import("@tamagui/create-context").CreateScope;
20
+ }, (consumerName: string, scope: import("@tamagui/create-context").Scope<ContextValueType | undefined>, options?: {
21
+ warn?: boolean | undefined;
22
+ fallback?: Partial<ContextValueType> | undefined;
23
+ } | undefined) => ContextValueType], createSheetScope: import("@tamagui/create-context").CreateScope;
21
24
  export declare const SheetProvider: {
22
25
  (props: Required<Pick<SheetProps, "position" | "open" | "snapPoints" | "dismissOnOverlayPress">> & {
23
26
  hidden: boolean;
@@ -33,6 +36,9 @@ export declare const SheetProvider: {
33
36
  children: React.ReactNode;
34
37
  }): JSX.Element;
35
38
  displayName: string;
36
- }, useSheetContext: (consumerName: string, scope: import("@tamagui/create-context").Scope<SheetContextValue | undefined>) => SheetContextValue;
39
+ }, useSheetContext: (consumerName: string, scope: import("@tamagui/create-context").Scope<SheetContextValue | undefined>, options?: {
40
+ warn?: boolean | undefined;
41
+ fallback?: Partial<SheetContextValue> | undefined;
42
+ } | undefined) => SheetContextValue;
37
43
  export {};
38
44
  //# sourceMappingURL=SheetContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SheetContext.d.ts","sourceRoot":"","sources":["../src/SheetContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzE,KAAK,iBAAiB,GAAG,QAAQ,CAC/B,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,uBAAuB,CAAC,CAC/E,GAAG;IACF,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,qBAAqB,CAAA;IAClC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IAC3C,qBAAqB,EAAE,OAAO,CAAA;IAC9B,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,eAAO,MAAO,kBAAkB;;;;;;8HAAE,gBAAgB,+CAAkC,CAAA;AAEpF,eAAO,MAAO,aAAa;;gBAZjB,OAAO;qBACF,qBAAqB;iBACzB,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM,SAAS,CAAC,cAAc,CAAC;+BACpB,OAAO;sBAChB,YAAY;mBACf,MAAM;eACV,OAAO;;;;;;GAKa,eAAe,4HAG3C,CAAA"}
1
+ {"version":3,"file":"SheetContext.d.ts","sourceRoot":"","sources":["../src/SheetContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzE,KAAK,iBAAiB,GAAG,QAAQ,CAC/B,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,uBAAuB,CAAC,CAC/E,GAAG;IACF,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,qBAAqB,CAAA;IAClC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IAC3C,qBAAqB,EAAE,OAAO,CAAA;IAC9B,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,eAAO,MAAO,kBAAkB;;;;;;;;;qCAAE,gBAAgB,+CAAkC,CAAA;AAEpF,eAAO,MAAO,aAAa;;gBAZjB,OAAO;qBACF,qBAAqB;iBACzB,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;oBAC1C,MAAM,SAAS,CAAC,cAAc,CAAC;+BACpB,OAAO;sBAChB,YAAY;mBACf,MAAM;eACV,OAAO;;;;;;GAKa,eAAe;;;mCAG3C,CAAA"}