@tamagui/sheet 1.0.1-beta.100

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,264 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import { isSSR, isWeb, styled, themeable, withStaticProperties } from "@tamagui/core";
33
+ import { createContextScope } from "@tamagui/create-context";
34
+ import { XStack, YStack } from "@tamagui/stacks";
35
+ import { useControllableState } from "@tamagui/use-controllable-state";
36
+ import React, {
37
+ forwardRef,
38
+ isValidElement,
39
+ useCallback,
40
+ useEffect,
41
+ useLayoutEffect,
42
+ useMemo,
43
+ useRef,
44
+ useState
45
+ } from "react";
46
+ import { Animated, PanResponder } from "react-native";
47
+ const DRAWER_NAME = "Drawer";
48
+ const DRAWER_HANDLE_NAME = "DrawerHandle";
49
+ const DrawerHandleFrame = styled(XStack, {
50
+ name: DRAWER_HANDLE_NAME,
51
+ height: 10,
52
+ borderRadius: 100,
53
+ backgroundColor: "$background",
54
+ position: "absolute",
55
+ pointerEvents: "auto",
56
+ zIndex: 10,
57
+ y: -18,
58
+ top: 0,
59
+ left: "35%",
60
+ right: "35%",
61
+ opacity: 0.5,
62
+ hoverStyle: {
63
+ opacity: 0.7
64
+ }
65
+ });
66
+ const DrawerHandle = DrawerHandleFrame.extractable((_a) => {
67
+ var _b = _a, { __scopeDrawer } = _b, props = __objRest(_b, ["__scopeDrawer"]);
68
+ const context = useDrawerContext(DRAWER_HANDLE_NAME, __scopeDrawer);
69
+ return /* @__PURE__ */ React.createElement(DrawerHandleFrame, __spreadValues({
70
+ onPress: () => {
71
+ const nextPos = (context.position + 1) % context.snapPoints.length;
72
+ context.setPosition(nextPos);
73
+ }
74
+ }, props));
75
+ });
76
+ const [createDrawerContext, createDrawerScope] = createContextScope(DRAWER_NAME);
77
+ const [DrawerProvider, useDrawerContext] = createDrawerContext(DRAWER_NAME, {});
78
+ const DrawerBackdrop = styled(YStack, {
79
+ name: "DrawerBackdrop",
80
+ backgroundColor: "$color",
81
+ fullscreen: true,
82
+ opacity: 0.2
83
+ });
84
+ const DrawerFrame = styled(YStack, {
85
+ name: "DrawerFrame",
86
+ flex: 1,
87
+ backgroundColor: "$background",
88
+ borderTopLeftRadius: "$4",
89
+ borderTopRightRadius: "$4",
90
+ padding: "$4",
91
+ width: "100%"
92
+ });
93
+ const useIsSSR = () => {
94
+ const [val, setVal] = useState(isWeb ? isSSR : false);
95
+ useEffect(() => {
96
+ if (isWeb && !isSSR) {
97
+ setVal(false);
98
+ }
99
+ }, []);
100
+ return val;
101
+ };
102
+ const Drawer = withStaticProperties(themeable(forwardRef((props, ref) => {
103
+ const _a = props, {
104
+ __scopeDrawer,
105
+ snapPoints: snapPointsProp = [80, 10],
106
+ children: childrenProp,
107
+ position: positionProp,
108
+ onChangePosition,
109
+ defaultPosition
110
+ } = _a, rest = __objRest(_a, [
111
+ "__scopeDrawer",
112
+ "snapPoints",
113
+ "children",
114
+ "position",
115
+ "onChangePosition",
116
+ "defaultPosition"
117
+ ]);
118
+ const isServerSide = useIsSSR();
119
+ const [position, setPosition] = useControllableState({
120
+ prop: positionProp,
121
+ defaultProp: defaultPosition || 0,
122
+ onChange: onChangePosition,
123
+ strategy: "most-recent-wins"
124
+ });
125
+ const [layout, setLayout] = useState();
126
+ const positionValue = useRef();
127
+ if (!positionValue.current) {
128
+ positionValue.current = new Animated.Value(position);
129
+ }
130
+ const snapPoints = useMemo(() => snapPointsProp, [JSON.stringify(snapPointsProp)]);
131
+ if (isServerSide) {
132
+ return null;
133
+ }
134
+ const spring = useRef(null);
135
+ function stopSpring() {
136
+ var _a2;
137
+ (_a2 = spring.current) == null ? void 0 : _a2.stop();
138
+ spring.current = null;
139
+ }
140
+ const positions = useMemo(() => snapPoints.map((point) => getYForPosition(point, layout)), [layout, snapPoints]);
141
+ const animateTo = useCallback((position2) => {
142
+ if (!positionValue.current)
143
+ return;
144
+ const toValue = positions[position2];
145
+ stopSpring();
146
+ spring.current = Animated.spring(positionValue.current, {
147
+ useNativeDriver: !isWeb,
148
+ toValue
149
+ });
150
+ spring.current.start(({ finished }) => finished && stopSpring());
151
+ }, [positions]);
152
+ useLayoutEffect(() => {
153
+ animateTo(position);
154
+ }, [position, animateTo]);
155
+ const panResponder = useMemo(() => {
156
+ if (!layout)
157
+ return;
158
+ console.log("setup pan");
159
+ const pos = positionValue.current;
160
+ const minY = positions[0];
161
+ let startY = pos["_value"];
162
+ return PanResponder.create({
163
+ onMoveShouldSetPanResponder: (_e, { dy }) => {
164
+ return Math.abs(dy) > 6;
165
+ },
166
+ onPanResponderGrant: () => {
167
+ stopSpring();
168
+ startY = pos["_value"];
169
+ },
170
+ onPanResponderMove: (_e, { dy }) => {
171
+ const to = dy + startY;
172
+ pos.setValue(resisted(to, minY));
173
+ },
174
+ onPanResponderRelease: (_e, { vy, dy }) => {
175
+ const at = dy + startY;
176
+ const end = at + layout.height * vy * 0.33;
177
+ let closestPoint = 0;
178
+ let dist = Infinity;
179
+ for (let i = 0; i < positions.length; i++) {
180
+ const position2 = positions[i];
181
+ const curDist = end > position2 ? end - position2 : position2 - end;
182
+ if (curDist < dist) {
183
+ dist = curDist;
184
+ closestPoint = i;
185
+ }
186
+ }
187
+ setPosition(closestPoint);
188
+ animateTo(closestPoint);
189
+ }
190
+ });
191
+ }, [layout, positions, setPosition]);
192
+ let handleComponent = null;
193
+ let backdropComponent = null;
194
+ let frameComponent = null;
195
+ React.Children.forEach(childrenProp, (child) => {
196
+ var _a2;
197
+ if (isValidElement(child)) {
198
+ switch ((_a2 = child.type) == null ? void 0 : _a2["staticConfig"].componentName) {
199
+ case "DrawerHandle":
200
+ handleComponent = child;
201
+ break;
202
+ case "DrawerFrame":
203
+ frameComponent = child;
204
+ break;
205
+ case "DrawerBackdrop":
206
+ backdropComponent = child;
207
+ break;
208
+ default:
209
+ console.warn("Warning: passed invalid child to Drawer", child);
210
+ }
211
+ }
212
+ });
213
+ return /* @__PURE__ */ React.createElement(DrawerProvider, {
214
+ scope: __scopeDrawer,
215
+ position,
216
+ snapPoints,
217
+ setPosition
218
+ }, backdropComponent, handleComponent, /* @__PURE__ */ React.createElement(Animated.View, __spreadProps(__spreadValues({}, panResponder == null ? void 0 : panResponder.panHandlers), {
219
+ onLayout: (e) => {
220
+ setLayout(e.nativeEvent.layout);
221
+ },
222
+ style: {
223
+ width: "100%",
224
+ height: "100%",
225
+ transform: [{ translateY: positionValue.current }]
226
+ }
227
+ }), frameComponent));
228
+ }), {
229
+ componentName: "Drawer"
230
+ }), {
231
+ Handle: DrawerHandle,
232
+ Frame: DrawerFrame,
233
+ Backdrop: DrawerBackdrop
234
+ });
235
+ function getYForPosition(point, layout) {
236
+ if (!layout)
237
+ return 0;
238
+ if (point === void 0) {
239
+ console.warn(`No snapPoint`);
240
+ return 0;
241
+ }
242
+ const pct = point / 100;
243
+ const next = layout.height - pct * layout.height;
244
+ return next;
245
+ }
246
+ function resisted(y, minY, maxOverflow = 25) {
247
+ if (y < minY) {
248
+ const past = minY - y;
249
+ const pctPast = Math.min(maxOverflow, past) / maxOverflow;
250
+ const diminishBy = 1.1 - Math.pow(0.1, pctPast);
251
+ const extra = -diminishBy * maxOverflow;
252
+ return minY + extra;
253
+ }
254
+ return y;
255
+ }
256
+ export {
257
+ Drawer,
258
+ DrawerBackdrop,
259
+ DrawerFrame,
260
+ DrawerHandle,
261
+ DrawerHandleFrame,
262
+ createDrawerScope
263
+ };
264
+ //# sourceMappingURL=Drawer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Drawer.tsx"],
4
+ "sourcesContent": ["import { isSSR, isWeb, styled, themeable, withStaticProperties } from '@tamagui/core'\nimport { ScopedProps, createContextScope } from '@tamagui/create-context'\nimport { XStack, XStackProps, YStack } from '@tamagui/stacks'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, {\n ReactNode,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { Animated, LayoutRectangle, PanResponder, View } from 'react-native'\n\ntype PositionChangeHandler =\n | ((position: number) => void)\n | React.Dispatch<React.SetStateAction<number>>\n\nconst DRAWER_NAME = 'Drawer'\nconst DRAWER_HANDLE_NAME = 'DrawerHandle'\n\nexport const DrawerHandleFrame = styled(XStack, {\n name: DRAWER_HANDLE_NAME,\n height: 10,\n borderRadius: 100,\n backgroundColor: '$background',\n position: 'absolute',\n pointerEvents: 'auto',\n zIndex: 10,\n y: -18,\n top: 0,\n left: '35%',\n right: '35%',\n opacity: 0.5,\n\n hoverStyle: {\n opacity: 0.7,\n },\n})\n\nexport const DrawerHandle = DrawerHandleFrame.extractable(\n ({ __scopeDrawer, ...props }: ScopedProps<XStackProps, 'Drawer'>) => {\n const context = useDrawerContext(DRAWER_HANDLE_NAME, __scopeDrawer)\n\n return (\n <DrawerHandleFrame\n onPress={() => {\n const nextPos = (context.position + 1) % context.snapPoints.length\n context.setPosition(nextPos)\n }}\n {...props}\n />\n )\n }\n)\n\ntype DrawerContextValue = {\n position: number\n snapPoints: number[]\n setPosition: React.Dispatch<React.SetStateAction<number>>\n}\n\nconst [createDrawerContext, createDrawerScope] = createContextScope(DRAWER_NAME)\nconst [DrawerProvider, useDrawerContext] = createDrawerContext<DrawerContextValue>(\n DRAWER_NAME,\n {} as any\n)\n\nexport const DrawerBackdrop = styled(YStack, {\n name: 'DrawerBackdrop',\n backgroundColor: '$color',\n fullscreen: true,\n opacity: 0.2,\n})\n\nexport const DrawerFrame = styled(YStack, {\n name: 'DrawerFrame',\n flex: 1,\n backgroundColor: '$background',\n borderTopLeftRadius: '$4',\n borderTopRightRadius: '$4',\n padding: '$4',\n width: '100%',\n})\n\nexport type DrawerProps = ScopedProps<\n {\n open?: boolean\n defaultOpen?: boolean\n defaultPosition?: number\n snapPoints?: number[]\n position?: number\n onChangePosition?: PositionChangeHandler\n children?: ReactNode\n },\n 'Drawer'\n>\n\nconst useIsSSR = () => {\n const [val, setVal] = useState(isWeb ? isSSR : false)\n useEffect(() => {\n if (isWeb && !isSSR) {\n setVal(false)\n }\n }, [])\n return val\n}\n\nexport const Drawer = withStaticProperties(\n themeable(\n forwardRef<View, DrawerProps>((props, ref) => {\n const {\n __scopeDrawer,\n snapPoints: snapPointsProp = [80, 10],\n children: childrenProp,\n position: positionProp,\n onChangePosition,\n defaultPosition,\n ...rest\n } = props\n const isServerSide = useIsSSR()\n\n const [position, setPosition] = useControllableState({\n prop: positionProp,\n defaultProp: defaultPosition || 0,\n onChange: onChangePosition,\n strategy: 'most-recent-wins',\n })\n\n const [layout, setLayout] = useState<LayoutRectangle>()\n\n const positionValue = useRef<Animated.Value>()\n if (!positionValue.current) {\n positionValue.current = new Animated.Value(position)\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const snapPoints = useMemo(() => snapPointsProp, [JSON.stringify(snapPointsProp)])\n\n // we can put non-server side hooks after conditional because based on env\n if (isServerSide) {\n return null\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const spring = useRef<Animated.CompositeAnimation | null>(null)\n\n function stopSpring() {\n spring.current?.stop()\n spring.current = null\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const positions = useMemo(\n () => snapPoints.map((point) => getYForPosition(point, layout)),\n [layout, snapPoints]\n )\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const animateTo = useCallback(\n (position: number) => {\n if (!positionValue.current) return\n const toValue = positions[position]\n stopSpring()\n spring.current = Animated.spring(positionValue.current, {\n useNativeDriver: !isWeb,\n toValue,\n })\n spring.current.start(({ finished }) => finished && stopSpring())\n },\n [positions]\n )\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n animateTo(position)\n }, [position, animateTo])\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const panResponder = useMemo(() => {\n if (!layout) return\n console.log('setup pan')\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const pos = positionValue.current!\n const minY = positions[0]\n let startY = pos['_value']\n\n return PanResponder.create({\n onMoveShouldSetPanResponder: (_e, { dy }) => {\n // we could do some detection of other touchables and cancel here..\n // console.log('wut is', _e)\n return Math.abs(dy) > 6\n },\n onPanResponderGrant: () => {\n stopSpring()\n startY = pos['_value']\n },\n onPanResponderMove: (_e, { dy }) => {\n const to = dy + startY\n pos.setValue(resisted(to, minY))\n },\n onPanResponderRelease: (_e, { vy, dy }) => {\n const at = dy + 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 + layout.height * vy * 0.33\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 }, [layout, positions, setPosition])\n\n let handleComponent: React.ReactElement | null = null\n let backdropComponent: React.ReactElement | null = null\n let frameComponent: React.ReactElement | null = null\n\n React.Children.forEach(childrenProp, (child) => {\n if (isValidElement(child)) {\n switch (child.type?.['staticConfig'].componentName) {\n case 'DrawerHandle':\n handleComponent = child\n break\n case 'DrawerFrame':\n frameComponent = child\n break\n case 'DrawerBackdrop':\n backdropComponent = child\n break\n default:\n console.warn('Warning: passed invalid child to Drawer', child)\n }\n }\n })\n\n return (\n <DrawerProvider\n scope={__scopeDrawer}\n position={position}\n snapPoints={snapPoints}\n setPosition={setPosition}\n >\n {backdropComponent}\n {handleComponent}\n <Animated.View\n {...panResponder?.panHandlers}\n onLayout={(e) => {\n setLayout(e.nativeEvent.layout)\n }}\n style={{\n width: '100%',\n height: '100%',\n transform: [{ translateY: positionValue.current }],\n }}\n >\n {frameComponent}\n </Animated.View>\n </DrawerProvider>\n )\n }),\n {\n componentName: 'Drawer',\n }\n ),\n {\n Handle: DrawerHandle,\n Frame: DrawerFrame,\n Backdrop: DrawerBackdrop,\n }\n)\n\nfunction getYForPosition(point?: number, layout?: LayoutRectangle) {\n if (!layout) return 0\n if (point === undefined) {\n console.warn(`No snapPoint`)\n return 0\n }\n const pct = point / 100\n const next = layout.height - pct * layout.height\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\nexport { createDrawerScope }\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AAMA,MAAM,cAAc;AACpB,MAAM,qBAAqB;AAEpB,MAAM,oBAAoB,OAAO,QAAQ;AAAA,EAC9C,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,GAAG;AAAA,EACH,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,SAAS;AAAA,EAET,YAAY;AAAA,IACV,SAAS;AAAA,EACX;AACF,CAAC;AAEM,MAAM,eAAe,kBAAkB,YAC5C,CAAC,OAAoE;AAApE,eAAE,oBAAF,IAAoB,kBAApB,IAAoB,CAAlB;AACD,QAAM,UAAU,iBAAiB,oBAAoB,aAAa;AAElE,SACE,oCAAC;AAAA,IACC,SAAS,MAAM;AACb,YAAM,UAAW,SAAQ,WAAW,KAAK,QAAQ,WAAW;AAC5D,cAAQ,YAAY,OAAO;AAAA,IAC7B;AAAA,KACI,MACN;AAEJ,CACF;AAQA,MAAM,CAAC,qBAAqB,qBAAqB,mBAAmB,WAAW;AAC/E,MAAM,CAAC,gBAAgB,oBAAoB,oBACzC,aACA,CAAC,CACH;AAEO,MAAM,iBAAiB,OAAO,QAAQ;AAAA,EAC3C,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,SAAS;AACX,CAAC;AAEM,MAAM,cAAc,OAAO,QAAQ;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,SAAS;AAAA,EACT,OAAO;AACT,CAAC;AAeD,MAAM,WAAW,MAAM;AACrB,QAAM,CAAC,KAAK,UAAU,SAAS,QAAQ,QAAQ,KAAK;AACpD,YAAU,MAAM;AACd,QAAI,SAAS,CAAC,OAAO;AACnB,aAAO,KAAK;AAAA,IACd;AAAA,EACF,GAAG,CAAC,CAAC;AACL,SAAO;AACT;AAEO,MAAM,SAAS,qBACpB,UACE,WAA8B,CAAC,OAAO,QAAQ;AAC5C,QAQI,YAPF;AAAA;AAAA,IACA,YAAY,iBAAiB,CAAC,IAAI,EAAE;AAAA,IACpC,UAAU;AAAA,IACV,UAAU;AAAA,IACV;AAAA,IACA;AAAA,MAEE,IADC,iBACD,IADC;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGF,QAAM,eAAe,SAAS;AAE9B,QAAM,CAAC,UAAU,eAAe,qBAAqB;AAAA,IACnD,MAAM;AAAA,IACN,aAAa,mBAAmB;AAAA,IAChC,UAAU;AAAA,IACV,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,CAAC,QAAQ,aAAa,SAA0B;AAEtD,QAAM,gBAAgB,OAAuB;AAC7C,MAAI,CAAC,cAAc,SAAS;AAC1B,kBAAc,UAAU,IAAI,SAAS,MAAM,QAAQ;AAAA,EACrD;AAGA,QAAM,aAAa,QAAQ,MAAM,gBAAgB,CAAC,KAAK,UAAU,cAAc,CAAC,CAAC;AAGjF,MAAI,cAAc;AAChB,WAAO;AAAA,EACT;AAGA,QAAM,SAAS,OAA2C,IAAI;AAE9D,wBAAsB;AAtJ5B;AAuJQ,kBAAO,YAAP,oBAAgB;AAChB,WAAO,UAAU;AAAA,EACnB;AAGA,QAAM,YAAY,QAChB,MAAM,WAAW,IAAI,CAAC,UAAU,gBAAgB,OAAO,MAAM,CAAC,GAC9D,CAAC,QAAQ,UAAU,CACrB;AAGA,QAAM,YAAY,YAChB,CAAC,cAAqB;AACpB,QAAI,CAAC,cAAc;AAAS;AAC5B,UAAM,UAAU,UAAU;AAC1B,eAAW;AACX,WAAO,UAAU,SAAS,OAAO,cAAc,SAAS;AAAA,MACtD,iBAAiB,CAAC;AAAA,MAClB;AAAA,IACF,CAAC;AACD,WAAO,QAAQ,MAAM,CAAC,EAAE,eAAe,YAAY,WAAW,CAAC;AAAA,EACjE,GACA,CAAC,SAAS,CACZ;AAGA,kBAAgB,MAAM;AACpB,cAAU,QAAQ;AAAA,EACpB,GAAG,CAAC,UAAU,SAAS,CAAC;AAGxB,QAAM,eAAe,QAAQ,MAAM;AACjC,QAAI,CAAC;AAAQ;AACb,YAAQ,IAAI,WAAW;AAGvB,UAAM,MAAM,cAAc;AAC1B,UAAM,OAAO,UAAU;AACvB,QAAI,SAAS,IAAI;AAEjB,WAAO,aAAa,OAAO;AAAA,MACzB,6BAA6B,CAAC,IAAI,EAAE,SAAS;AAG3C,eAAO,KAAK,IAAI,EAAE,IAAI;AAAA,MACxB;AAAA,MACA,qBAAqB,MAAM;AACzB,mBAAW;AACX,iBAAS,IAAI;AAAA,MACf;AAAA,MACA,oBAAoB,CAAC,IAAI,EAAE,SAAS;AAClC,cAAM,KAAK,KAAK;AAChB,YAAI,SAAS,SAAS,IAAI,IAAI,CAAC;AAAA,MACjC;AAAA,MACA,uBAAuB,CAAC,IAAI,EAAE,IAAI,SAAS;AACzC,cAAM,KAAK,KAAK;AAGhB,cAAM,MAAM,KAAK,OAAO,SAAS,KAAK;AACtC,YAAI,eAAe;AACnB,YAAI,OAAO;AACX,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,gBAAM,YAAW,UAAU;AAC3B,gBAAM,UAAU,MAAM,YAAW,MAAM,YAAW,YAAW;AAC7D,cAAI,UAAU,MAAM;AAClB,mBAAO;AACP,2BAAe;AAAA,UACjB;AAAA,QACF;AAEA,oBAAY,YAAY;AACxB,kBAAU,YAAY;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,WAAW,WAAW,CAAC;AAEnC,MAAI,kBAA6C;AACjD,MAAI,oBAA+C;AACnD,MAAI,iBAA4C;AAEhD,QAAM,SAAS,QAAQ,cAAc,CAAC,UAAU;AAvOtD;AAwOQ,QAAI,eAAe,KAAK,GAAG;AACzB,cAAQ,aAAM,SAAN,oBAAa,gBAAgB;AAAA,aAC9B;AACH,4BAAkB;AAClB;AAAA,aACG;AACH,2BAAiB;AACjB;AAAA,aACG;AACH,8BAAoB;AACpB;AAAA;AAEA,kBAAQ,KAAK,2CAA2C,KAAK;AAAA;AAAA,IAEnE;AAAA,EACF,CAAC;AAED,SACE,oCAAC;AAAA,IACC,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,KAEC,mBACA,iBACD,oCAAC,SAAS,MAAT,iCACK,6CAAc,cADnB;AAAA,IAEC,UAAU,CAAC,MAAM;AACf,gBAAU,EAAE,YAAY,MAAM;AAAA,IAChC;AAAA,IACA,OAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW,CAAC,EAAE,YAAY,cAAc,QAAQ,CAAC;AAAA,IACnD;AAAA,MAEC,cACH,CACF;AAEJ,CAAC,GACD;AAAA,EACE,eAAe;AACjB,CACF,GACA;AAAA,EACE,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,UAAU;AACZ,CACF;AAEA,yBAAyB,OAAgB,QAA0B;AACjE,MAAI,CAAC;AAAQ,WAAO;AACpB,MAAI,UAAU,QAAW;AACvB,YAAQ,KAAK,cAAc;AAC3B,WAAO;AAAA,EACT;AACA,QAAM,MAAM,QAAQ;AACpB,QAAM,OAAO,OAAO,SAAS,MAAM,OAAO;AAC1C,SAAO;AACT;AAEA,kBAAkB,GAAW,MAAc,cAAc,IAAI;AAC3D,MAAI,IAAI,MAAM;AACZ,UAAM,OAAO,OAAO;AACpB,UAAM,UAAU,KAAK,IAAI,aAAa,IAAI,IAAI;AAC9C,UAAM,aAAa,MAAM,KAAK,IAAI,KAAK,OAAO;AAC9C,UAAM,QAAQ,CAAC,aAAa;AAC5B,WAAO,OAAO;AAAA,EAChB;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,264 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import { isSSR, isWeb, styled, themeable, withStaticProperties } from "@tamagui/core";
33
+ import { createContextScope } from "@tamagui/create-context";
34
+ import { XStack, YStack } from "@tamagui/stacks";
35
+ import { useControllableState } from "@tamagui/use-controllable-state";
36
+ import React, {
37
+ forwardRef,
38
+ isValidElement,
39
+ useCallback,
40
+ useEffect,
41
+ useLayoutEffect,
42
+ useMemo,
43
+ useRef,
44
+ useState
45
+ } from "react";
46
+ import { Animated, PanResponder } from "react-native";
47
+ const DRAWER_NAME = "Drawer";
48
+ const DRAWER_HANDLE_NAME = "DrawerHandle";
49
+ const DrawerHandleFrame = styled(XStack, {
50
+ name: DRAWER_HANDLE_NAME,
51
+ height: 10,
52
+ borderRadius: 100,
53
+ backgroundColor: "$background",
54
+ position: "absolute",
55
+ pointerEvents: "auto",
56
+ zIndex: 10,
57
+ y: -18,
58
+ top: 0,
59
+ left: "35%",
60
+ right: "35%",
61
+ opacity: 0.5,
62
+ hoverStyle: {
63
+ opacity: 0.7
64
+ }
65
+ });
66
+ const DrawerHandle = DrawerHandleFrame.extractable((_a) => {
67
+ var _b = _a, { __scopeDrawer } = _b, props = __objRest(_b, ["__scopeDrawer"]);
68
+ const context = useDrawerContext(DRAWER_HANDLE_NAME, __scopeDrawer);
69
+ return /* @__PURE__ */ React.createElement(DrawerHandleFrame, __spreadValues({
70
+ onPress: () => {
71
+ const nextPos = (context.position + 1) % context.snapPoints.length;
72
+ context.setPosition(nextPos);
73
+ }
74
+ }, props));
75
+ });
76
+ const [createDrawerContext, createDrawerScope] = createContextScope(DRAWER_NAME);
77
+ const [DrawerProvider, useDrawerContext] = createDrawerContext(DRAWER_NAME, {});
78
+ const DrawerBackdrop = styled(YStack, {
79
+ name: "DrawerBackdrop",
80
+ backgroundColor: "$color",
81
+ fullscreen: true,
82
+ opacity: 0.2
83
+ });
84
+ const DrawerFrame = styled(YStack, {
85
+ name: "DrawerFrame",
86
+ flex: 1,
87
+ backgroundColor: "$background",
88
+ borderTopLeftRadius: "$4",
89
+ borderTopRightRadius: "$4",
90
+ padding: "$4",
91
+ width: "100%"
92
+ });
93
+ const useIsSSR = () => {
94
+ const [val, setVal] = useState(isWeb ? isSSR : false);
95
+ useEffect(() => {
96
+ if (isWeb && !isSSR) {
97
+ setVal(false);
98
+ }
99
+ }, []);
100
+ return val;
101
+ };
102
+ const Drawer = withStaticProperties(themeable(forwardRef((props, ref) => {
103
+ const _a = props, {
104
+ __scopeDrawer,
105
+ snapPoints: snapPointsProp = [80, 10],
106
+ children: childrenProp,
107
+ position: positionProp,
108
+ onChangePosition,
109
+ defaultPosition
110
+ } = _a, rest = __objRest(_a, [
111
+ "__scopeDrawer",
112
+ "snapPoints",
113
+ "children",
114
+ "position",
115
+ "onChangePosition",
116
+ "defaultPosition"
117
+ ]);
118
+ const isServerSide = useIsSSR();
119
+ const [position, setPosition] = useControllableState({
120
+ prop: positionProp,
121
+ defaultProp: defaultPosition || 0,
122
+ onChange: onChangePosition,
123
+ strategy: "most-recent-wins"
124
+ });
125
+ const [layout, setLayout] = useState();
126
+ const positionValue = useRef();
127
+ if (!positionValue.current) {
128
+ positionValue.current = new Animated.Value(position);
129
+ }
130
+ const snapPoints = useMemo(() => snapPointsProp, [JSON.stringify(snapPointsProp)]);
131
+ if (isServerSide) {
132
+ return null;
133
+ }
134
+ const spring = useRef(null);
135
+ function stopSpring() {
136
+ var _a2;
137
+ (_a2 = spring.current) == null ? void 0 : _a2.stop();
138
+ spring.current = null;
139
+ }
140
+ const positions = useMemo(() => snapPoints.map((point) => getYForPosition(point, layout)), [layout, snapPoints]);
141
+ const animateTo = useCallback((position2) => {
142
+ if (!positionValue.current)
143
+ return;
144
+ const toValue = positions[position2];
145
+ stopSpring();
146
+ spring.current = Animated.spring(positionValue.current, {
147
+ useNativeDriver: !isWeb,
148
+ toValue
149
+ });
150
+ spring.current.start(({ finished }) => finished && stopSpring());
151
+ }, [positions]);
152
+ useLayoutEffect(() => {
153
+ animateTo(position);
154
+ }, [position, animateTo]);
155
+ const panResponder = useMemo(() => {
156
+ if (!layout)
157
+ return;
158
+ console.log("setup pan");
159
+ const pos = positionValue.current;
160
+ const minY = positions[0];
161
+ let startY = pos["_value"];
162
+ return PanResponder.create({
163
+ onMoveShouldSetPanResponder: (_e, { dy }) => {
164
+ return Math.abs(dy) > 6;
165
+ },
166
+ onPanResponderGrant: () => {
167
+ stopSpring();
168
+ startY = pos["_value"];
169
+ },
170
+ onPanResponderMove: (_e, { dy }) => {
171
+ const to = dy + startY;
172
+ pos.setValue(resisted(to, minY));
173
+ },
174
+ onPanResponderRelease: (_e, { vy, dy }) => {
175
+ const at = dy + startY;
176
+ const end = at + layout.height * vy * 0.33;
177
+ let closestPoint = 0;
178
+ let dist = Infinity;
179
+ for (let i = 0; i < positions.length; i++) {
180
+ const position2 = positions[i];
181
+ const curDist = end > position2 ? end - position2 : position2 - end;
182
+ if (curDist < dist) {
183
+ dist = curDist;
184
+ closestPoint = i;
185
+ }
186
+ }
187
+ setPosition(closestPoint);
188
+ animateTo(closestPoint);
189
+ }
190
+ });
191
+ }, [layout, positions, setPosition]);
192
+ let handleComponent = null;
193
+ let backdropComponent = null;
194
+ let frameComponent = null;
195
+ React.Children.forEach(childrenProp, (child) => {
196
+ var _a2;
197
+ if (isValidElement(child)) {
198
+ switch ((_a2 = child.type) == null ? void 0 : _a2["staticConfig"].componentName) {
199
+ case "DrawerHandle":
200
+ handleComponent = child;
201
+ break;
202
+ case "DrawerFrame":
203
+ frameComponent = child;
204
+ break;
205
+ case "DrawerBackdrop":
206
+ backdropComponent = child;
207
+ break;
208
+ default:
209
+ console.warn("Warning: passed invalid child to Drawer", child);
210
+ }
211
+ }
212
+ });
213
+ return /* @__PURE__ */ React.createElement(DrawerProvider, {
214
+ scope: __scopeDrawer,
215
+ position,
216
+ snapPoints,
217
+ setPosition
218
+ }, backdropComponent, handleComponent, /* @__PURE__ */ React.createElement(Animated.View, __spreadProps(__spreadValues({}, panResponder == null ? void 0 : panResponder.panHandlers), {
219
+ onLayout: (e) => {
220
+ setLayout(e.nativeEvent.layout);
221
+ },
222
+ style: {
223
+ width: "100%",
224
+ height: "100%",
225
+ transform: [{ translateY: positionValue.current }]
226
+ }
227
+ }), frameComponent));
228
+ }), {
229
+ componentName: "Drawer"
230
+ }), {
231
+ Handle: DrawerHandle,
232
+ Frame: DrawerFrame,
233
+ Backdrop: DrawerBackdrop
234
+ });
235
+ function getYForPosition(point, layout) {
236
+ if (!layout)
237
+ return 0;
238
+ if (point === void 0) {
239
+ console.warn(`No snapPoint`);
240
+ return 0;
241
+ }
242
+ const pct = point / 100;
243
+ const next = layout.height - pct * layout.height;
244
+ return next;
245
+ }
246
+ function resisted(y, minY, maxOverflow = 25) {
247
+ if (y < minY) {
248
+ const past = minY - y;
249
+ const pctPast = Math.min(maxOverflow, past) / maxOverflow;
250
+ const diminishBy = 1.1 - Math.pow(0.1, pctPast);
251
+ const extra = -diminishBy * maxOverflow;
252
+ return minY + extra;
253
+ }
254
+ return y;
255
+ }
256
+ export {
257
+ Drawer,
258
+ DrawerBackdrop,
259
+ DrawerFrame,
260
+ DrawerHandle,
261
+ DrawerHandleFrame,
262
+ createDrawerScope
263
+ };
264
+ //# sourceMappingURL=Sheet.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Sheet.tsx"],
4
+ "sourcesContent": ["import { isSSR, isWeb, styled, themeable, withStaticProperties } from '@tamagui/core'\nimport { ScopedProps, createContextScope } from '@tamagui/create-context'\nimport { XStack, XStackProps, YStack } from '@tamagui/stacks'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport React, {\n ReactNode,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { Animated, LayoutRectangle, PanResponder, View } from 'react-native'\n\ntype PositionChangeHandler =\n | ((position: number) => void)\n | React.Dispatch<React.SetStateAction<number>>\n\nconst DRAWER_NAME = 'Drawer'\nconst DRAWER_HANDLE_NAME = 'DrawerHandle'\n\nexport const DrawerHandleFrame = styled(XStack, {\n name: DRAWER_HANDLE_NAME,\n height: 10,\n borderRadius: 100,\n backgroundColor: '$background',\n position: 'absolute',\n pointerEvents: 'auto',\n zIndex: 10,\n y: -18,\n top: 0,\n left: '35%',\n right: '35%',\n opacity: 0.5,\n\n hoverStyle: {\n opacity: 0.7,\n },\n})\n\nexport const DrawerHandle = DrawerHandleFrame.extractable(\n ({ __scopeDrawer, ...props }: ScopedProps<XStackProps, 'Drawer'>) => {\n const context = useDrawerContext(DRAWER_HANDLE_NAME, __scopeDrawer)\n\n return (\n <DrawerHandleFrame\n onPress={() => {\n const nextPos = (context.position + 1) % context.snapPoints.length\n context.setPosition(nextPos)\n }}\n {...props}\n />\n )\n }\n)\n\ntype DrawerContextValue = {\n position: number\n snapPoints: number[]\n setPosition: React.Dispatch<React.SetStateAction<number>>\n}\n\nconst [createDrawerContext, createDrawerScope] = createContextScope(DRAWER_NAME)\nconst [DrawerProvider, useDrawerContext] = createDrawerContext<DrawerContextValue>(\n DRAWER_NAME,\n {} as any\n)\n\nexport const DrawerBackdrop = styled(YStack, {\n name: 'DrawerBackdrop',\n backgroundColor: '$color',\n fullscreen: true,\n opacity: 0.2,\n})\n\nexport const DrawerFrame = styled(YStack, {\n name: 'DrawerFrame',\n flex: 1,\n backgroundColor: '$background',\n borderTopLeftRadius: '$4',\n borderTopRightRadius: '$4',\n padding: '$4',\n width: '100%',\n})\n\nexport type DrawerProps = ScopedProps<\n {\n open?: boolean\n defaultOpen?: boolean\n defaultPosition?: number\n snapPoints?: number[]\n position?: number\n onChangePosition?: PositionChangeHandler\n children?: ReactNode\n },\n 'Drawer'\n>\n\nconst useIsSSR = () => {\n const [val, setVal] = useState(isWeb ? isSSR : false)\n useEffect(() => {\n if (isWeb && !isSSR) {\n setVal(false)\n }\n }, [])\n return val\n}\n\nexport const Drawer = withStaticProperties(\n themeable(\n forwardRef<View, DrawerProps>((props, ref) => {\n const {\n __scopeDrawer,\n snapPoints: snapPointsProp = [80, 10],\n children: childrenProp,\n position: positionProp,\n onChangePosition,\n defaultPosition,\n ...rest\n } = props\n const isServerSide = useIsSSR()\n\n const [position, setPosition] = useControllableState({\n prop: positionProp,\n defaultProp: defaultPosition || 0,\n onChange: onChangePosition,\n strategy: 'most-recent-wins',\n })\n\n const [layout, setLayout] = useState<LayoutRectangle>()\n\n const positionValue = useRef<Animated.Value>()\n if (!positionValue.current) {\n positionValue.current = new Animated.Value(position)\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const snapPoints = useMemo(() => snapPointsProp, [JSON.stringify(snapPointsProp)])\n\n // we can put non-server side hooks after conditional because based on env\n if (isServerSide) {\n return null\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const spring = useRef<Animated.CompositeAnimation | null>(null)\n\n function stopSpring() {\n spring.current?.stop()\n spring.current = null\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const positions = useMemo(\n () => snapPoints.map((point) => getYForPosition(point, layout)),\n [layout, snapPoints]\n )\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const animateTo = useCallback(\n (position: number) => {\n if (!positionValue.current) return\n const toValue = positions[position]\n stopSpring()\n spring.current = Animated.spring(positionValue.current, {\n useNativeDriver: !isWeb,\n toValue,\n })\n spring.current.start(({ finished }) => finished && stopSpring())\n },\n [positions]\n )\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n animateTo(position)\n }, [position, animateTo])\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const panResponder = useMemo(() => {\n if (!layout) return\n console.log('setup pan')\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const pos = positionValue.current!\n const minY = positions[0]\n let startY = pos['_value']\n\n return PanResponder.create({\n onMoveShouldSetPanResponder: (_e, { dy }) => {\n // we could do some detection of other touchables and cancel here..\n // console.log('wut is', _e)\n return Math.abs(dy) > 6\n },\n onPanResponderGrant: () => {\n stopSpring()\n startY = pos['_value']\n },\n onPanResponderMove: (_e, { dy }) => {\n const to = dy + startY\n pos.setValue(resisted(to, minY))\n },\n onPanResponderRelease: (_e, { vy, dy }) => {\n const at = dy + 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 + layout.height * vy * 0.33\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 }, [layout, positions, setPosition])\n\n let handleComponent: React.ReactElement | null = null\n let backdropComponent: React.ReactElement | null = null\n let frameComponent: React.ReactElement | null = null\n\n React.Children.forEach(childrenProp, (child) => {\n if (isValidElement(child)) {\n switch (child.type?.['staticConfig'].componentName) {\n case 'DrawerHandle':\n handleComponent = child\n break\n case 'DrawerFrame':\n frameComponent = child\n break\n case 'DrawerBackdrop':\n backdropComponent = child\n break\n default:\n console.warn('Warning: passed invalid child to Drawer', child)\n }\n }\n })\n\n return (\n <DrawerProvider\n scope={__scopeDrawer}\n position={position}\n snapPoints={snapPoints}\n setPosition={setPosition}\n >\n {backdropComponent}\n {handleComponent}\n <Animated.View\n {...panResponder?.panHandlers}\n onLayout={(e) => {\n setLayout(e.nativeEvent.layout)\n }}\n style={{\n width: '100%',\n height: '100%',\n transform: [{ translateY: positionValue.current }],\n }}\n >\n {frameComponent}\n </Animated.View>\n </DrawerProvider>\n )\n }),\n {\n componentName: 'Drawer',\n }\n ),\n {\n Handle: DrawerHandle,\n Frame: DrawerFrame,\n Backdrop: DrawerBackdrop,\n }\n)\n\nfunction getYForPosition(point?: number, layout?: LayoutRectangle) {\n if (!layout) return 0\n if (point === undefined) {\n console.warn(`No snapPoint`)\n return 0\n }\n const pct = point / 100\n const next = layout.height - pct * layout.height\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\nexport { createDrawerScope }\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./Sheet";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["export * from './Sheet'\n"],
5
+ "mappings": "AAAA;",
6
+ "names": []
7
+ }