@tamagui/sheet 1.26.1 → 1.27.1

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