@tamagui/sheet 3.0.0-beta.924.1 → 3.0.0

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 (190) hide show
  1. package/dist/cjs/Sheet.cjs +48 -16
  2. package/dist/cjs/Sheet.native.cjs +46 -17
  3. package/dist/cjs/Sheet.native.js +46 -17
  4. package/dist/cjs/Sheet.native.js.map +1 -1
  5. package/dist/cjs/SheetDragSurface.cjs +50 -0
  6. package/dist/{jsx/GestureDetectorWrapper.native.js → cjs/SheetDragSurface.native.cjs} +24 -12
  7. package/dist/cjs/{GestureDetectorWrapper.native.js → SheetDragSurface.native.js} +25 -11
  8. package/dist/cjs/SheetDragSurface.native.js.map +1 -0
  9. package/dist/cjs/SheetImplementationCustom.cjs +41 -58
  10. package/dist/cjs/SheetImplementationCustom.native.cjs +43 -59
  11. package/dist/cjs/SheetImplementationCustom.native.js +43 -59
  12. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  13. package/dist/cjs/SheetScrollView.cjs +15 -3
  14. package/dist/cjs/SheetScrollView.native.cjs +17 -4
  15. package/dist/cjs/SheetScrollView.native.js +17 -4
  16. package/dist/cjs/SheetScrollView.native.js.map +1 -1
  17. package/dist/cjs/nativeSheet.cjs +3 -59
  18. package/dist/cjs/nativeSheet.native.cjs +70 -58
  19. package/dist/cjs/nativeSheet.native.js +70 -58
  20. package/dist/cjs/nativeSheet.native.js.map +1 -1
  21. package/dist/cjs/stableViewportHeight.cjs +27 -0
  22. package/dist/cjs/stableViewportHeight.native.cjs +29 -0
  23. package/dist/cjs/stableViewportHeight.native.js +31 -0
  24. package/dist/cjs/stableViewportHeight.native.js.map +1 -0
  25. package/dist/cjs/useSheetOffscreenSize.cjs +3 -1
  26. package/dist/cjs/useSheetOffscreenSize.native.cjs +3 -2
  27. package/dist/cjs/useSheetOffscreenSize.native.js +3 -2
  28. package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -1
  29. package/dist/cjs/useSheetOpenState.cjs +13 -6
  30. package/dist/cjs/useSheetOpenState.native.cjs +15 -5
  31. package/dist/cjs/useSheetOpenState.native.js +15 -5
  32. package/dist/cjs/useSheetOpenState.native.js.map +1 -1
  33. package/dist/cjs/useSheetProviderProps.cjs +5 -94
  34. package/dist/cjs/useSheetProviderProps.native.cjs +5 -103
  35. package/dist/cjs/useSheetProviderProps.native.js +5 -103
  36. package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
  37. package/dist/cjs/useSheetState.cjs +120 -0
  38. package/dist/cjs/useSheetState.native.cjs +131 -0
  39. package/dist/cjs/useSheetState.native.js +133 -0
  40. package/dist/cjs/useSheetState.native.js.map +1 -0
  41. package/dist/esm/Sheet.mjs +48 -15
  42. package/dist/esm/Sheet.mjs.map +1 -1
  43. package/dist/esm/Sheet.native.js +46 -17
  44. package/dist/esm/Sheet.native.js.map +1 -1
  45. package/dist/esm/SheetDragSurface.mjs +25 -0
  46. package/dist/esm/SheetDragSurface.mjs.map +1 -0
  47. package/dist/esm/SheetDragSurface.native.js +34 -0
  48. package/dist/esm/SheetDragSurface.native.js.map +1 -0
  49. package/dist/esm/SheetImplementationCustom.mjs +39 -56
  50. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  51. package/dist/esm/SheetImplementationCustom.native.js +41 -57
  52. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  53. package/dist/esm/SheetScrollView.mjs +16 -4
  54. package/dist/esm/SheetScrollView.mjs.map +1 -1
  55. package/dist/esm/SheetScrollView.native.js +18 -5
  56. package/dist/esm/SheetScrollView.native.js.map +1 -1
  57. package/dist/esm/nativeSheet.mjs +3 -60
  58. package/dist/esm/nativeSheet.mjs.map +1 -1
  59. package/dist/esm/nativeSheet.native.js +70 -58
  60. package/dist/esm/nativeSheet.native.js.map +1 -1
  61. package/dist/esm/stableViewportHeight.mjs +8 -0
  62. package/dist/esm/stableViewportHeight.mjs.map +1 -0
  63. package/dist/esm/stableViewportHeight.native.js +8 -0
  64. package/dist/esm/stableViewportHeight.native.js.map +1 -0
  65. package/dist/esm/useKeyboardControllerSheet.native.js +0 -5
  66. package/dist/esm/useSheetOffscreenSize.mjs +3 -1
  67. package/dist/esm/useSheetOffscreenSize.mjs.map +1 -1
  68. package/dist/esm/useSheetOffscreenSize.native.js +3 -2
  69. package/dist/esm/useSheetOffscreenSize.native.js.map +1 -1
  70. package/dist/esm/useSheetOpenState.mjs +14 -7
  71. package/dist/esm/useSheetOpenState.mjs.map +1 -1
  72. package/dist/esm/useSheetOpenState.native.js +16 -6
  73. package/dist/esm/useSheetOpenState.native.js.map +1 -1
  74. package/dist/esm/useSheetProviderProps.mjs +5 -88
  75. package/dist/esm/useSheetProviderProps.mjs.map +1 -1
  76. package/dist/esm/useSheetProviderProps.native.js +5 -97
  77. package/dist/esm/useSheetProviderProps.native.js.map +1 -1
  78. package/dist/esm/useSheetState.mjs +95 -0
  79. package/dist/esm/useSheetState.mjs.map +1 -0
  80. package/dist/esm/useSheetState.native.js +104 -0
  81. package/dist/esm/useSheetState.native.js.map +1 -0
  82. package/dist/jsx/Sheet.mjs +48 -15
  83. package/dist/jsx/Sheet.mjs.map +1 -1
  84. package/dist/jsx/Sheet.native.cjs +46 -17
  85. package/dist/jsx/Sheet.native.js +46 -17
  86. package/dist/jsx/Sheet.native.js.map +1 -1
  87. package/dist/jsx/SheetDragSurface.mjs +25 -0
  88. package/dist/jsx/SheetDragSurface.mjs.map +1 -0
  89. package/dist/{cjs/GestureDetectorWrapper.native.cjs → jsx/SheetDragSurface.native.cjs} +24 -10
  90. package/dist/jsx/{GestureDetectorWrapper.native.cjs → SheetDragSurface.native.js} +26 -10
  91. package/dist/jsx/SheetDragSurface.native.js.map +1 -0
  92. package/dist/jsx/SheetImplementationCustom.mjs +39 -56
  93. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  94. package/dist/jsx/SheetImplementationCustom.native.cjs +43 -59
  95. package/dist/jsx/SheetImplementationCustom.native.js +43 -59
  96. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  97. package/dist/jsx/SheetScrollView.mjs +16 -4
  98. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  99. package/dist/jsx/SheetScrollView.native.cjs +17 -4
  100. package/dist/jsx/SheetScrollView.native.js +17 -4
  101. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  102. package/dist/jsx/nativeSheet.mjs +3 -60
  103. package/dist/jsx/nativeSheet.mjs.map +1 -1
  104. package/dist/jsx/nativeSheet.native.cjs +70 -58
  105. package/dist/jsx/nativeSheet.native.js +70 -58
  106. package/dist/jsx/nativeSheet.native.js.map +1 -1
  107. package/dist/jsx/stableViewportHeight.mjs +8 -0
  108. package/dist/jsx/stableViewportHeight.mjs.map +1 -0
  109. package/dist/jsx/stableViewportHeight.native.cjs +29 -0
  110. package/dist/jsx/stableViewportHeight.native.js +31 -0
  111. package/dist/jsx/stableViewportHeight.native.js.map +1 -0
  112. package/dist/jsx/useSheetOffscreenSize.mjs +3 -1
  113. package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -1
  114. package/dist/jsx/useSheetOffscreenSize.native.cjs +3 -2
  115. package/dist/jsx/useSheetOffscreenSize.native.js +3 -2
  116. package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -1
  117. package/dist/jsx/useSheetOpenState.mjs +14 -7
  118. package/dist/jsx/useSheetOpenState.mjs.map +1 -1
  119. package/dist/jsx/useSheetOpenState.native.cjs +15 -5
  120. package/dist/jsx/useSheetOpenState.native.js +15 -5
  121. package/dist/jsx/useSheetOpenState.native.js.map +1 -1
  122. package/dist/jsx/useSheetProviderProps.mjs +5 -88
  123. package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
  124. package/dist/jsx/useSheetProviderProps.native.cjs +5 -103
  125. package/dist/jsx/useSheetProviderProps.native.js +5 -103
  126. package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
  127. package/dist/jsx/useSheetState.mjs +95 -0
  128. package/dist/jsx/useSheetState.mjs.map +1 -0
  129. package/dist/jsx/useSheetState.native.cjs +131 -0
  130. package/dist/jsx/useSheetState.native.js +133 -0
  131. package/dist/jsx/useSheetState.native.js.map +1 -0
  132. package/package.json +27 -22
  133. package/src/Sheet.tsx +45 -18
  134. package/src/SheetDragSurface.native.tsx +42 -0
  135. package/src/SheetDragSurface.tsx +40 -0
  136. package/src/SheetImplementationCustom.tsx +67 -92
  137. package/src/SheetScrollView.tsx +26 -4
  138. package/src/nativeSheet.native.tsx +110 -0
  139. package/src/nativeSheet.ts +16 -0
  140. package/src/stableViewportHeight.native.ts +9 -0
  141. package/src/stableViewportHeight.ts +15 -0
  142. package/src/types.tsx +44 -1
  143. package/src/useSheetOffscreenSize.tsx +3 -7
  144. package/src/useSheetOpenState.tsx +18 -8
  145. package/src/useSheetProviderProps.tsx +18 -149
  146. package/src/useSheetScrollViewGestures.native.ts +4 -1
  147. package/src/useSheetState.tsx +139 -0
  148. package/types/Sheet.d.ts +71 -167
  149. package/types/Sheet.d.ts.map +1 -1
  150. package/types/SheetDragSurface.d.ts +11 -0
  151. package/types/SheetDragSurface.d.ts.map +1 -0
  152. package/types/SheetDragSurface.native.d.ts +11 -0
  153. package/types/SheetDragSurface.native.d.ts.map +1 -0
  154. package/types/SheetImplementationCustom.d.ts +1 -2
  155. package/types/SheetImplementationCustom.d.ts.map +1 -1
  156. package/types/SheetScrollView.d.ts +3 -3
  157. package/types/SheetScrollView.d.ts.map +1 -1
  158. package/types/nativeSheet.d.ts +8 -9
  159. package/types/nativeSheet.d.ts.map +1 -1
  160. package/types/nativeSheet.native.d.ts +4 -0
  161. package/types/nativeSheet.native.d.ts.map +1 -0
  162. package/types/stableViewportHeight.d.ts +12 -0
  163. package/types/stableViewportHeight.d.ts.map +1 -0
  164. package/types/stableViewportHeight.native.d.ts +6 -0
  165. package/types/stableViewportHeight.native.d.ts.map +1 -0
  166. package/types/types.d.ts +34 -1
  167. package/types/types.d.ts.map +1 -1
  168. package/types/useSheetOffscreenSize.d.ts +1 -1
  169. package/types/useSheetOffscreenSize.d.ts.map +1 -1
  170. package/types/useSheetOpenState.d.ts +3 -1
  171. package/types/useSheetOpenState.d.ts.map +1 -1
  172. package/types/useSheetProviderProps.d.ts +15 -13
  173. package/types/useSheetProviderProps.d.ts.map +1 -1
  174. package/types/useSheetScrollViewGestures.native.d.ts +1 -1
  175. package/types/useSheetScrollViewGestures.native.d.ts.map +1 -1
  176. package/types/useSheetState.d.ts +26 -0
  177. package/types/useSheetState.d.ts.map +1 -0
  178. package/dist/cjs/GestureDetectorWrapper.cjs +0 -44
  179. package/dist/cjs/GestureDetectorWrapper.native.js.map +0 -1
  180. package/dist/esm/GestureDetectorWrapper.mjs +0 -25
  181. package/dist/esm/GestureDetectorWrapper.mjs.map +0 -1
  182. package/dist/esm/GestureDetectorWrapper.native.js +0 -26
  183. package/dist/esm/GestureDetectorWrapper.native.js.map +0 -1
  184. package/dist/jsx/GestureDetectorWrapper.mjs +0 -25
  185. package/dist/jsx/GestureDetectorWrapper.mjs.map +0 -1
  186. package/dist/jsx/GestureDetectorWrapper.native.js.map +0 -1
  187. package/src/GestureDetectorWrapper.tsx +0 -38
  188. package/src/nativeSheet.tsx +0 -86
  189. package/types/GestureDetectorWrapper.d.ts +0 -14
  190. package/types/GestureDetectorWrapper.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useSheetOffscreenSize.native.js","names":[],"sources":["esm/useSheetOffscreenSize.native.js"],"sourcesContent":["var useSheetOffscreenSize = function(param) {\n var { snapPoints, position, screenSize, frameSize, snapPointsMode } = param;\n if (snapPointsMode === \"fit\") {\n return 0;\n }\n if (snapPointsMode === \"constant\") {\n var maxSize = Number(snapPoints[0]);\n var _snapPoints_position;\n var currentSize = Number((_snapPoints_position = snapPoints[position]) !== null && _snapPoints_position !== void 0 ? _snapPoints_position : 0);\n var offscreenSize = maxSize - currentSize;\n return offscreenSize;\n }\n if (snapPointsMode === \"percent\") {\n var maxPercentOpened = Number(snapPoints[0]) / 100;\n var _snapPoints_position1;\n var percentOpened = Number((_snapPoints_position1 = snapPoints[position]) !== null && _snapPoints_position1 !== void 0 ? _snapPoints_position1 : 0) / 100;\n var percentHidden = maxPercentOpened - percentOpened;\n var offscreenSize1 = percentHidden * screenSize;\n return offscreenSize1;\n }\n var maxSnapPoint = snapPoints[0];\n if (maxSnapPoint === \"fit\") {\n return 0;\n }\n var maxSize1 = typeof maxSnapPoint === \"string\" ? Number(maxSnapPoint.slice(0, -1)) / 100 * screenSize : maxSnapPoint;\n var _snapPoints_position2;\n var currentSnapPoint = (_snapPoints_position2 = snapPoints[position]) !== null && _snapPoints_position2 !== void 0 ? _snapPoints_position2 : 0;\n var currentSize1 = typeof currentSnapPoint === \"string\" ? Number(currentSnapPoint.slice(0, -1)) / 100 * screenSize : currentSnapPoint;\n var offscreenSize2 = maxSize1 - currentSize1;\n if (Number.isNaN(offscreenSize2)) {\n return 0;\n }\n return offscreenSize2;\n};\nexport {\n useSheetOffscreenSize\n};\n//# sourceMappingURL=useSheetOffscreenSize.js.map\n"],"mappings":";AAAA,IAAI,wBAAwB,SAAS,OAAO;CAC1C,IAAI,EAAE,YAAY,UAAU,YAAY,WAAW,mBAAmB;CACtE,IAAI,mBAAmB,OAAO;EAC5B,OAAO;CACT;CACA,IAAI,mBAAmB,YAAY;EACjC,IAAI,UAAU,OAAO,WAAW,EAAE;EAClC,IAAI;EACJ,IAAI,cAAc,QAAQ,uBAAuB,WAAW,eAAe,QAAQ,yBAAyB,KAAK,IAAI,uBAAuB,CAAC;EAC7I,IAAI,gBAAgB,UAAU;EAC9B,OAAO;CACT;CACA,IAAI,mBAAmB,WAAW;EAChC,IAAI,mBAAmB,OAAO,WAAW,EAAE,IAAI;EAC/C,IAAI;EACJ,IAAI,gBAAgB,QAAQ,wBAAwB,WAAW,eAAe,QAAQ,0BAA0B,KAAK,IAAI,wBAAwB,CAAC,IAAI;EACtJ,IAAI,gBAAgB,mBAAmB;EACvC,IAAI,iBAAiB,gBAAgB;EACrC,OAAO;CACT;CACA,IAAI,eAAe,WAAW;CAC9B,IAAI,iBAAiB,OAAO;EAC1B,OAAO;CACT;CACA,IAAI,WAAW,OAAO,iBAAiB,WAAW,OAAO,aAAa,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,aAAa;CACzG,IAAI;CACJ,IAAI,oBAAoB,wBAAwB,WAAW,eAAe,QAAQ,0BAA0B,KAAK,IAAI,wBAAwB;CAC7I,IAAI,eAAe,OAAO,qBAAqB,WAAW,OAAO,iBAAiB,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,aAAa;CACrH,IAAI,iBAAiB,WAAW;CAChC,IAAI,OAAO,MAAM,cAAc,GAAG;EAChC,OAAO;CACT;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"useSheetOffscreenSize.native.js","names":[],"sources":["esm/useSheetOffscreenSize.native.js"],"sourcesContent":["var useSheetOffscreenSize = function(context) {\n if (context.onlyShowContainer) return 0;\n var { snapPoints, position, screenSize, frameSize, snapPointsMode } = context;\n if (snapPointsMode === \"fit\") {\n return 0;\n }\n if (snapPointsMode === \"constant\") {\n var maxSize = Number(snapPoints[0]);\n var _snapPoints_position;\n var currentSize = Number((_snapPoints_position = snapPoints[position]) !== null && _snapPoints_position !== void 0 ? _snapPoints_position : 0);\n var offscreenSize = maxSize - currentSize;\n return offscreenSize;\n }\n if (snapPointsMode === \"percent\") {\n var maxPercentOpened = Number(snapPoints[0]) / 100;\n var _snapPoints_position1;\n var percentOpened = Number((_snapPoints_position1 = snapPoints[position]) !== null && _snapPoints_position1 !== void 0 ? _snapPoints_position1 : 0) / 100;\n var percentHidden = maxPercentOpened - percentOpened;\n var offscreenSize1 = percentHidden * screenSize;\n return offscreenSize1;\n }\n var maxSnapPoint = snapPoints[0];\n if (maxSnapPoint === \"fit\") {\n return 0;\n }\n var maxSize1 = typeof maxSnapPoint === \"string\" ? Number(maxSnapPoint.slice(0, -1)) / 100 * screenSize : maxSnapPoint;\n var _snapPoints_position2;\n var currentSnapPoint = (_snapPoints_position2 = snapPoints[position]) !== null && _snapPoints_position2 !== void 0 ? _snapPoints_position2 : 0;\n var currentSize1 = typeof currentSnapPoint === \"string\" ? Number(currentSnapPoint.slice(0, -1)) / 100 * screenSize : currentSnapPoint;\n var offscreenSize2 = maxSize1 - currentSize1;\n if (Number.isNaN(offscreenSize2)) {\n return 0;\n }\n return offscreenSize2;\n};\nexport {\n useSheetOffscreenSize\n};\n//# sourceMappingURL=useSheetOffscreenSize.js.map\n"],"mappings":";AAAA,IAAI,wBAAwB,SAAS,SAAS;CAC5C,IAAI,QAAQ,mBAAmB,OAAO;CACtC,IAAI,EAAE,YAAY,UAAU,YAAY,WAAW,mBAAmB;CACtE,IAAI,mBAAmB,OAAO;EAC5B,OAAO;CACT;CACA,IAAI,mBAAmB,YAAY;EACjC,IAAI,UAAU,OAAO,WAAW,EAAE;EAClC,IAAI;EACJ,IAAI,cAAc,QAAQ,uBAAuB,WAAW,eAAe,QAAQ,yBAAyB,KAAK,IAAI,uBAAuB,CAAC;EAC7I,IAAI,gBAAgB,UAAU;EAC9B,OAAO;CACT;CACA,IAAI,mBAAmB,WAAW;EAChC,IAAI,mBAAmB,OAAO,WAAW,EAAE,IAAI;EAC/C,IAAI;EACJ,IAAI,gBAAgB,QAAQ,wBAAwB,WAAW,eAAe,QAAQ,0BAA0B,KAAK,IAAI,wBAAwB,CAAC,IAAI;EACtJ,IAAI,gBAAgB,mBAAmB;EACvC,IAAI,iBAAiB,gBAAgB;EACrC,OAAO;CACT;CACA,IAAI,eAAe,WAAW;CAC9B,IAAI,iBAAiB,OAAO;EAC1B,OAAO;CACT;CACA,IAAI,WAAW,OAAO,iBAAiB,WAAW,OAAO,aAAa,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,aAAa;CACzG,IAAI;CACJ,IAAI,oBAAoB,wBAAwB,WAAW,eAAe,QAAQ,0BAA0B,KAAK,IAAI,wBAAwB;CAC7I,IAAI,eAAe,OAAO,qBAAqB,WAAW,OAAO,iBAAiB,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,aAAa;CACrH,IAAI,iBAAiB,WAAW;CAChC,IAAI,OAAO,MAAM,cAAc,GAAG;EAChC,OAAO;CACT;CACA,OAAO;AACT"}
@@ -1,13 +1,14 @@
1
- import { useAdaptContext, useAdaptTarget } from "@tamagui/adapt";
1
+ import { useAdaptContext, useAdaptTarget, useAdaptTargetScope } from "@tamagui/adapt";
2
2
  import React from "react";
3
3
  import { useControllableState } from "@tamagui/use-controllable-state";
4
4
  import { useSheetController } from "./useSheetController.mjs";
5
5
 
6
- const useSheetOpenState = (props) => {
7
- const adaptContext = useAdaptContext();
8
- const adapt = useAdaptTarget();
6
+ const useSheetOpenState = (props, strategy = "most-recent-wins") => {
7
+ const adaptTargetScope = useAdaptTargetScope();
8
+ const adapt = useAdaptTarget(adaptTargetScope ?? void 0);
9
+ const adaptContext = useAdaptContext(adaptTargetScope ?? void 0);
9
10
  const { isHidden: controllerIsHidden, controller: legacyController } = useSheetController(props.scope);
10
- const shouldUseAdapt = Boolean(adaptContext.open !== void 0 || adaptContext.onOpenChange);
11
+ const shouldUseAdapt = adaptTargetScope === adaptContext.scopeName && Boolean(adaptContext.open !== void 0 || adaptContext.onOpenChange);
11
12
  const isHidden = shouldUseAdapt ? !adaptContext.active : controllerIsHidden;
12
13
  const wasHiddenRef = React.useRef(isHidden);
13
14
  const controllerOpen = shouldUseAdapt ? Boolean(adaptContext.open) && !adaptContext.handoff.hidden : legacyController?.open;
@@ -41,13 +42,19 @@ const useSheetOpenState = (props) => {
41
42
  prop: propVal,
42
43
  defaultProp: props.defaultOpen ?? false,
43
44
  onChange: onOpenChangeInternal,
44
- strategy: "most-recent-wins"
45
+ strategy
45
46
  });
46
47
  return {
47
48
  open,
48
49
  setOpen,
49
50
  isHidden,
50
- controller
51
+ controller,
52
+ strategy,
53
+ onNativeDismiss: shouldUseAdapt ? () => adapt?.handoff.onTransition({
54
+ phase: "end",
55
+ cause: "close",
56
+ finished: true
57
+ }) : void 0
51
58
  };
52
59
  };
53
60
 
@@ -1 +1 @@
1
- {"version":3,"file":"useSheetOpenState.js","names":[],"sources":["esm/useSheetOpenState.js"],"sourcesContent":["import { useAdaptContext, useAdaptTarget } from \"@tamagui/adapt\";\nimport React from \"react\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nimport { useSheetController } from \"./useSheetController\";\nconst useSheetOpenState = (props) => {\n const adaptContext = useAdaptContext();\n const adapt = useAdaptTarget();\n const { isHidden: controllerIsHidden, controller: legacyController } = useSheetController(props.scope);\n const shouldUseAdapt = Boolean(\n adaptContext.open !== void 0 || adaptContext.onOpenChange\n );\n const isHidden = shouldUseAdapt ? !adaptContext.active : controllerIsHidden;\n const wasHiddenRef = React.useRef(isHidden);\n const controllerOpen = shouldUseAdapt ? Boolean(adaptContext.open) && !adaptContext.handoff.hidden : legacyController?.open;\n const localSkipNextAnimation = Boolean(\n wasHiddenRef.current && !isHidden && controllerOpen\n );\n const skipNextAnimation = (shouldUseAdapt ? adapt?.handoff.skipNextAnimation : void 0) ?? localSkipNextAnimation;\n wasHiddenRef.current = isHidden;\n const adaptController = React.useMemo(() => {\n if (!adapt || !shouldUseAdapt) return null;\n return {\n open: adaptContext.open,\n hidden: isHidden,\n onOpenChange: adaptContext.active ? adaptContext.onOpenChange : void 0,\n onTransition: adapt?.handoff.onTransition,\n skipNextAnimation\n };\n }, [adapt, adaptContext, isHidden, shouldUseAdapt, skipNextAnimation]);\n const controller = adaptController ?? legacyController;\n const controllerOnOpenChange = (shouldUseAdapt && adaptContext.active ? adaptContext.onOpenChange : void 0) ?? legacyController?.onOpenChange;\n const onOpenChangeInternal = (val) => {\n controllerOnOpenChange?.(val);\n props.onOpenChange?.(val);\n };\n const propVal = props.preferAdaptParentOpenState ? controllerOpen ?? props.open : props.open ?? controllerOpen;\n const [open, setOpen] = useControllableState({\n prop: propVal,\n defaultProp: props.defaultOpen ?? false,\n onChange: onOpenChangeInternal,\n strategy: \"most-recent-wins\"\n });\n return {\n open,\n setOpen,\n isHidden,\n controller\n };\n};\nexport {\n useSheetOpenState\n};\n//# sourceMappingURL=useSheetOpenState.js.map\n"],"mappings":";;;;;;AAIA,MAAM,qBAAqB,UAAU;CACnC,MAAM,eAAe,gBAAgB;CACrC,MAAM,QAAQ,eAAe;CAC7B,MAAM,EAAE,UAAU,oBAAoB,YAAY,qBAAqB,mBAAmB,MAAM,KAAK;CACrG,MAAM,iBAAiB,QACrB,aAAa,SAAS,KAAK,KAAK,aAAa,YAC/C;CACA,MAAM,WAAW,iBAAiB,CAAC,aAAa,SAAS;CACzD,MAAM,eAAe,MAAM,OAAO,QAAQ;CAC1C,MAAM,iBAAiB,iBAAiB,QAAQ,aAAa,IAAI,KAAK,CAAC,aAAa,QAAQ,SAAS,kBAAkB;CACvH,MAAM,yBAAyB,QAC7B,aAAa,WAAW,CAAC,YAAY,cACvC;CACA,MAAM,qBAAqB,iBAAiB,OAAO,QAAQ,oBAAoB,KAAK,MAAM;CAC1F,aAAa,UAAU;CACvB,MAAM,kBAAkB,MAAM,cAAc;EAC1C,IAAI,CAAC,SAAS,CAAC,gBAAgB,OAAO;EACtC,OAAO;GACL,MAAM,aAAa;GACnB,QAAQ;GACR,cAAc,aAAa,SAAS,aAAa,eAAe,KAAK;GACrE,cAAc,OAAO,QAAQ;GAC7B;EACF;CACF,GAAG;EAAC;EAAO;EAAc;EAAU;EAAgB;CAAiB,CAAC;CACrE,MAAM,aAAa,mBAAmB;CACtC,MAAM,0BAA0B,kBAAkB,aAAa,SAAS,aAAa,eAAe,KAAK,MAAM,kBAAkB;CACjI,MAAM,wBAAwB,QAAQ;EACpC,yBAAyB,GAAG;EAC5B,MAAM,eAAe,GAAG;CAC1B;CACA,MAAM,UAAU,MAAM,6BAA6B,kBAAkB,MAAM,OAAO,MAAM,QAAQ;CAChG,MAAM,CAAC,MAAM,WAAW,qBAAqB;EAC3C,MAAM;EACN,aAAa,MAAM,eAAe;EAClC,UAAU;EACV,UAAU;CACZ,CAAC;CACD,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"useSheetOpenState.js","names":[],"sources":["esm/useSheetOpenState.js"],"sourcesContent":["import { useAdaptContext, useAdaptTarget, useAdaptTargetScope } from \"@tamagui/adapt\";\nimport React from \"react\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nimport { useSheetController } from \"./useSheetController\";\nconst useSheetOpenState = (props, strategy = \"most-recent-wins\") => {\n const adaptTargetScope = useAdaptTargetScope();\n const adapt = useAdaptTarget(adaptTargetScope ?? void 0);\n const adaptContext = useAdaptContext(adaptTargetScope ?? void 0);\n const { isHidden: controllerIsHidden, controller: legacyController } = useSheetController(props.scope);\n const shouldUseAdapt = adaptTargetScope === adaptContext.scopeName && Boolean(adaptContext.open !== void 0 || adaptContext.onOpenChange);\n const isHidden = shouldUseAdapt ? !adaptContext.active : controllerIsHidden;\n const wasHiddenRef = React.useRef(isHidden);\n const controllerOpen = shouldUseAdapt ? Boolean(adaptContext.open) && !adaptContext.handoff.hidden : legacyController?.open;\n const localSkipNextAnimation = Boolean(\n wasHiddenRef.current && !isHidden && controllerOpen\n );\n const skipNextAnimation = (shouldUseAdapt ? adapt?.handoff.skipNextAnimation : void 0) ?? localSkipNextAnimation;\n wasHiddenRef.current = isHidden;\n const adaptController = React.useMemo(() => {\n if (!adapt || !shouldUseAdapt) return null;\n return {\n open: adaptContext.open,\n hidden: isHidden,\n onOpenChange: adaptContext.active ? adaptContext.onOpenChange : void 0,\n onTransition: adapt?.handoff.onTransition,\n skipNextAnimation\n };\n }, [adapt, adaptContext, isHidden, shouldUseAdapt, skipNextAnimation]);\n const controller = adaptController ?? legacyController;\n const controllerOnOpenChange = (shouldUseAdapt && adaptContext.active ? adaptContext.onOpenChange : void 0) ?? legacyController?.onOpenChange;\n const onOpenChangeInternal = (val) => {\n controllerOnOpenChange?.(val);\n props.onOpenChange?.(val);\n };\n const propVal = props.preferAdaptParentOpenState ? controllerOpen ?? props.open : props.open ?? controllerOpen;\n const [open, setOpen] = useControllableState({\n prop: propVal,\n defaultProp: props.defaultOpen ?? false,\n onChange: onOpenChangeInternal,\n strategy\n });\n return {\n open,\n setOpen,\n isHidden,\n controller,\n strategy,\n onNativeDismiss: shouldUseAdapt ? () => adapt?.handoff.onTransition({ phase: \"end\", cause: \"close\", finished: true }) : void 0\n };\n};\nexport {\n useSheetOpenState\n};\n//# sourceMappingURL=useSheetOpenState.js.map\n"],"mappings":";;;;;;AAIA,MAAM,qBAAqB,OAAO,WAAW,uBAAuB;CAClE,MAAM,mBAAmB,oBAAoB;CAC7C,MAAM,QAAQ,eAAe,oBAAoB,KAAK,CAAC;CACvD,MAAM,eAAe,gBAAgB,oBAAoB,KAAK,CAAC;CAC/D,MAAM,EAAE,UAAU,oBAAoB,YAAY,qBAAqB,mBAAmB,MAAM,KAAK;CACrG,MAAM,iBAAiB,qBAAqB,aAAa,aAAa,QAAQ,aAAa,SAAS,KAAK,KAAK,aAAa,YAAY;CACvI,MAAM,WAAW,iBAAiB,CAAC,aAAa,SAAS;CACzD,MAAM,eAAe,MAAM,OAAO,QAAQ;CAC1C,MAAM,iBAAiB,iBAAiB,QAAQ,aAAa,IAAI,KAAK,CAAC,aAAa,QAAQ,SAAS,kBAAkB;CACvH,MAAM,yBAAyB,QAC7B,aAAa,WAAW,CAAC,YAAY,cACvC;CACA,MAAM,qBAAqB,iBAAiB,OAAO,QAAQ,oBAAoB,KAAK,MAAM;CAC1F,aAAa,UAAU;CACvB,MAAM,kBAAkB,MAAM,cAAc;EAC1C,IAAI,CAAC,SAAS,CAAC,gBAAgB,OAAO;EACtC,OAAO;GACL,MAAM,aAAa;GACnB,QAAQ;GACR,cAAc,aAAa,SAAS,aAAa,eAAe,KAAK;GACrE,cAAc,OAAO,QAAQ;GAC7B;EACF;CACF,GAAG;EAAC;EAAO;EAAc;EAAU;EAAgB;CAAiB,CAAC;CACrE,MAAM,aAAa,mBAAmB;CACtC,MAAM,0BAA0B,kBAAkB,aAAa,SAAS,aAAa,eAAe,KAAK,MAAM,kBAAkB;CACjI,MAAM,wBAAwB,QAAQ;EACpC,yBAAyB,GAAG;EAC5B,MAAM,eAAe,GAAG;CAC1B;CACA,MAAM,UAAU,MAAM,6BAA6B,kBAAkB,MAAM,OAAO,MAAM,QAAQ;CAChG,MAAM,CAAC,MAAM,WAAW,qBAAqB;EAC3C,MAAM;EACN,aAAa,MAAM,eAAe;EAClC,UAAU;EACV;CACF,CAAC;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA,iBAAiB,uBAAuB,OAAO,QAAQ,aAAa;GAAE,OAAO;GAAO,OAAO;GAAS,UAAU;EAAK,CAAC,IAAI,KAAK;CAC/H;AACF"}
@@ -1,13 +1,15 @@
1
- import { useAdaptContext, useAdaptTarget } from "@tamagui/adapt";
1
+ import { useAdaptContext, useAdaptTarget, useAdaptTargetScope } from "@tamagui/adapt";
2
2
  import React from "react";
3
3
  import { useControllableState } from "@tamagui/use-controllable-state";
4
4
  import { useSheetController } from "./useSheetController.native.js";
5
5
 
6
6
  var useSheetOpenState = function(props) {
7
- var adaptContext = useAdaptContext();
8
- var adapt = useAdaptTarget();
7
+ var strategy = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "most-recent-wins";
8
+ var adaptTargetScope = useAdaptTargetScope();
9
+ var adapt = useAdaptTarget(adaptTargetScope !== null && adaptTargetScope !== void 0 ? adaptTargetScope : void 0);
10
+ var adaptContext = useAdaptContext(adaptTargetScope !== null && adaptTargetScope !== void 0 ? adaptTargetScope : void 0);
9
11
  var { isHidden: controllerIsHidden, controller: legacyController } = useSheetController(props.scope);
10
- var shouldUseAdapt = Boolean(adaptContext.open !== void 0 || adaptContext.onOpenChange);
12
+ var shouldUseAdapt = adaptTargetScope === adaptContext.scopeName && Boolean(adaptContext.open !== void 0 || adaptContext.onOpenChange);
11
13
  var isHidden = shouldUseAdapt ? !adaptContext.active : controllerIsHidden;
12
14
  var wasHiddenRef = React.useRef(isHidden);
13
15
  var controllerOpen = shouldUseAdapt ? Boolean(adaptContext.open) && !adaptContext.handoff.hidden : legacyController === null || legacyController === void 0 ? void 0 : legacyController.open;
@@ -46,13 +48,21 @@ var useSheetOpenState = function(props) {
46
48
  prop: propVal,
47
49
  defaultProp: (_props_defaultOpen = props.defaultOpen) !== null && _props_defaultOpen !== void 0 ? _props_defaultOpen : false,
48
50
  onChange: onOpenChangeInternal,
49
- strategy: "most-recent-wins"
51
+ strategy
50
52
  });
51
53
  return {
52
54
  open,
53
55
  setOpen,
54
56
  isHidden,
55
- controller
57
+ controller,
58
+ strategy,
59
+ onNativeDismiss: shouldUseAdapt ? function() {
60
+ return adapt === null || adapt === void 0 ? void 0 : adapt.handoff.onTransition({
61
+ phase: "end",
62
+ cause: "close",
63
+ finished: true
64
+ });
65
+ } : void 0
56
66
  };
57
67
  };
58
68
 
@@ -1 +1 @@
1
- {"version":3,"file":"useSheetOpenState.native.js","names":[],"sources":["esm/useSheetOpenState.native.js"],"sourcesContent":["import { useAdaptContext, useAdaptTarget } from \"@tamagui/adapt\";\nimport React from \"react\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nimport { useSheetController } from \"./useSheetController\";\nvar useSheetOpenState = function(props) {\n var adaptContext = useAdaptContext();\n var adapt = useAdaptTarget();\n var { isHidden: controllerIsHidden, controller: legacyController } = useSheetController(props.scope);\n var shouldUseAdapt = Boolean(adaptContext.open !== void 0 || adaptContext.onOpenChange);\n var isHidden = shouldUseAdapt ? !adaptContext.active : controllerIsHidden;\n var wasHiddenRef = React.useRef(isHidden);\n var controllerOpen = shouldUseAdapt ? Boolean(adaptContext.open) && !adaptContext.handoff.hidden : legacyController === null || legacyController === void 0 ? void 0 : legacyController.open;\n var localSkipNextAnimation = Boolean(wasHiddenRef.current && !isHidden && controllerOpen);\n var _ref;\n var skipNextAnimation = (_ref = shouldUseAdapt ? adapt === null || adapt === void 0 ? void 0 : adapt.handoff.skipNextAnimation : void 0) !== null && _ref !== void 0 ? _ref : localSkipNextAnimation;\n wasHiddenRef.current = isHidden;\n var adaptController = React.useMemo(function() {\n if (!adapt || !shouldUseAdapt) return null;\n return {\n open: adaptContext.open,\n hidden: isHidden,\n onOpenChange: adaptContext.active ? adaptContext.onOpenChange : void 0,\n onTransition: adapt === null || adapt === void 0 ? void 0 : adapt.handoff.onTransition,\n skipNextAnimation\n };\n }, [\n adapt,\n adaptContext,\n isHidden,\n shouldUseAdapt,\n skipNextAnimation\n ]);\n var controller = adaptController !== null && adaptController !== void 0 ? adaptController : legacyController;\n var _ref1;\n var controllerOnOpenChange = (_ref1 = shouldUseAdapt && adaptContext.active ? adaptContext.onOpenChange : void 0) !== null && _ref1 !== void 0 ? _ref1 : legacyController === null || legacyController === void 0 ? void 0 : legacyController.onOpenChange;\n var onOpenChangeInternal = function(val) {\n var _props_onOpenChange;\n controllerOnOpenChange === null || controllerOnOpenChange === void 0 ? void 0 : controllerOnOpenChange(val);\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, val);\n };\n var _props_open;\n var propVal = props.preferAdaptParentOpenState ? controllerOpen !== null && controllerOpen !== void 0 ? controllerOpen : props.open : (_props_open = props.open) !== null && _props_open !== void 0 ? _props_open : controllerOpen;\n var _props_defaultOpen;\n var [open, setOpen] = useControllableState({\n prop: propVal,\n defaultProp: (_props_defaultOpen = props.defaultOpen) !== null && _props_defaultOpen !== void 0 ? _props_defaultOpen : false,\n onChange: onOpenChangeInternal,\n strategy: \"most-recent-wins\"\n });\n return {\n open,\n setOpen,\n isHidden,\n controller\n };\n};\nexport {\n useSheetOpenState\n};\n//# sourceMappingURL=useSheetOpenState.js.map\n"],"mappings":";;;;;;AAIA,IAAI,oBAAoB,SAAS,OAAO;CACtC,IAAI,eAAe,gBAAgB;CACnC,IAAI,QAAQ,eAAe;CAC3B,IAAI,EAAE,UAAU,oBAAoB,YAAY,qBAAqB,mBAAmB,MAAM,KAAK;CACnG,IAAI,iBAAiB,QAAQ,aAAa,SAAS,KAAK,KAAK,aAAa,YAAY;CACtF,IAAI,WAAW,iBAAiB,CAAC,aAAa,SAAS;CACvD,IAAI,eAAe,MAAM,OAAO,QAAQ;CACxC,IAAI,iBAAiB,iBAAiB,QAAQ,aAAa,IAAI,KAAK,CAAC,aAAa,QAAQ,SAAS,qBAAqB,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB;CACxL,IAAI,yBAAyB,QAAQ,aAAa,WAAW,CAAC,YAAY,cAAc;CACxF,IAAI;CACJ,IAAI,qBAAqB,OAAO,iBAAiB,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,QAAQ,oBAAoB,KAAK,OAAO,QAAQ,SAAS,KAAK,IAAI,OAAO;CAC9K,aAAa,UAAU;CACvB,IAAI,kBAAkB,MAAM,QAAQ,WAAW;EAC7C,IAAI,CAAC,SAAS,CAAC,gBAAgB,OAAO;EACtC,OAAO;GACL,MAAM,aAAa;GACnB,QAAQ;GACR,cAAc,aAAa,SAAS,aAAa,eAAe,KAAK;GACrE,cAAc,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,QAAQ;GAC1E;EACF;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,IAAI,aAAa,oBAAoB,QAAQ,oBAAoB,KAAK,IAAI,kBAAkB;CAC5F,IAAI;CACJ,IAAI,0BAA0B,QAAQ,kBAAkB,aAAa,SAAS,aAAa,eAAe,KAAK,OAAO,QAAQ,UAAU,KAAK,IAAI,QAAQ,qBAAqB,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB;CAC9O,IAAI,uBAAuB,SAAS,KAAK;EACvC,IAAI;EACJ,2BAA2B,QAAQ,2BAA2B,KAAK,IAAI,KAAK,IAAI,uBAAuB,GAAG;EAC1G,CAAC,sBAAsB,MAAM,kBAAkB,QAAQ,wBAAwB,KAAK,IAAI,KAAK,IAAI,oBAAoB,KAAK,OAAO,GAAG;CACtI;CACA,IAAI;CACJ,IAAI,UAAU,MAAM,6BAA6B,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,iBAAiB,MAAM,QAAQ,cAAc,MAAM,UAAU,QAAQ,gBAAgB,KAAK,IAAI,cAAc;CACpN,IAAI;CACJ,IAAI,CAAC,MAAM,WAAW,qBAAqB;EACzC,MAAM;EACN,cAAc,qBAAqB,MAAM,iBAAiB,QAAQ,uBAAuB,KAAK,IAAI,qBAAqB;EACvH,UAAU;EACV,UAAU;CACZ,CAAC;CACD,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"useSheetOpenState.native.js","names":[],"sources":["esm/useSheetOpenState.native.js"],"sourcesContent":["import { useAdaptContext, useAdaptTarget, useAdaptTargetScope } from \"@tamagui/adapt\";\nimport React from \"react\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nimport { useSheetController } from \"./useSheetController\";\nvar useSheetOpenState = function(props) {\n var strategy = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"most-recent-wins\";\n var adaptTargetScope = useAdaptTargetScope();\n var adapt = useAdaptTarget(adaptTargetScope !== null && adaptTargetScope !== void 0 ? adaptTargetScope : void 0);\n var adaptContext = useAdaptContext(adaptTargetScope !== null && adaptTargetScope !== void 0 ? adaptTargetScope : void 0);\n var { isHidden: controllerIsHidden, controller: legacyController } = useSheetController(props.scope);\n var shouldUseAdapt = adaptTargetScope === adaptContext.scopeName && Boolean(adaptContext.open !== void 0 || adaptContext.onOpenChange);\n var isHidden = shouldUseAdapt ? !adaptContext.active : controllerIsHidden;\n var wasHiddenRef = React.useRef(isHidden);\n var controllerOpen = shouldUseAdapt ? Boolean(adaptContext.open) && !adaptContext.handoff.hidden : legacyController === null || legacyController === void 0 ? void 0 : legacyController.open;\n var localSkipNextAnimation = Boolean(wasHiddenRef.current && !isHidden && controllerOpen);\n var _ref;\n var skipNextAnimation = (_ref = shouldUseAdapt ? adapt === null || adapt === void 0 ? void 0 : adapt.handoff.skipNextAnimation : void 0) !== null && _ref !== void 0 ? _ref : localSkipNextAnimation;\n wasHiddenRef.current = isHidden;\n var adaptController = React.useMemo(function() {\n if (!adapt || !shouldUseAdapt) return null;\n return {\n open: adaptContext.open,\n hidden: isHidden,\n onOpenChange: adaptContext.active ? adaptContext.onOpenChange : void 0,\n onTransition: adapt === null || adapt === void 0 ? void 0 : adapt.handoff.onTransition,\n skipNextAnimation\n };\n }, [\n adapt,\n adaptContext,\n isHidden,\n shouldUseAdapt,\n skipNextAnimation\n ]);\n var controller = adaptController !== null && adaptController !== void 0 ? adaptController : legacyController;\n var _ref1;\n var controllerOnOpenChange = (_ref1 = shouldUseAdapt && adaptContext.active ? adaptContext.onOpenChange : void 0) !== null && _ref1 !== void 0 ? _ref1 : legacyController === null || legacyController === void 0 ? void 0 : legacyController.onOpenChange;\n var onOpenChangeInternal = function(val) {\n var _props_onOpenChange;\n controllerOnOpenChange === null || controllerOnOpenChange === void 0 ? void 0 : controllerOnOpenChange(val);\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, val);\n };\n var _props_open;\n var propVal = props.preferAdaptParentOpenState ? controllerOpen !== null && controllerOpen !== void 0 ? controllerOpen : props.open : (_props_open = props.open) !== null && _props_open !== void 0 ? _props_open : controllerOpen;\n var _props_defaultOpen;\n var [open, setOpen] = useControllableState({\n prop: propVal,\n defaultProp: (_props_defaultOpen = props.defaultOpen) !== null && _props_defaultOpen !== void 0 ? _props_defaultOpen : false,\n onChange: onOpenChangeInternal,\n strategy\n });\n return {\n open,\n setOpen,\n isHidden,\n controller,\n strategy,\n onNativeDismiss: shouldUseAdapt ? function() {\n return adapt === null || adapt === void 0 ? void 0 : adapt.handoff.onTransition({\n phase: \"end\",\n cause: \"close\",\n finished: true\n });\n } : void 0\n };\n};\nexport {\n useSheetOpenState\n};\n//# sourceMappingURL=useSheetOpenState.js.map\n"],"mappings":";;;;;;AAIA,IAAI,oBAAoB,SAAS,OAAO;CACtC,IAAI,WAAW,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAChF,IAAI,mBAAmB,oBAAoB;CAC3C,IAAI,QAAQ,eAAe,qBAAqB,QAAQ,qBAAqB,KAAK,IAAI,mBAAmB,KAAK,CAAC;CAC/G,IAAI,eAAe,gBAAgB,qBAAqB,QAAQ,qBAAqB,KAAK,IAAI,mBAAmB,KAAK,CAAC;CACvH,IAAI,EAAE,UAAU,oBAAoB,YAAY,qBAAqB,mBAAmB,MAAM,KAAK;CACnG,IAAI,iBAAiB,qBAAqB,aAAa,aAAa,QAAQ,aAAa,SAAS,KAAK,KAAK,aAAa,YAAY;CACrI,IAAI,WAAW,iBAAiB,CAAC,aAAa,SAAS;CACvD,IAAI,eAAe,MAAM,OAAO,QAAQ;CACxC,IAAI,iBAAiB,iBAAiB,QAAQ,aAAa,IAAI,KAAK,CAAC,aAAa,QAAQ,SAAS,qBAAqB,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB;CACxL,IAAI,yBAAyB,QAAQ,aAAa,WAAW,CAAC,YAAY,cAAc;CACxF,IAAI;CACJ,IAAI,qBAAqB,OAAO,iBAAiB,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,QAAQ,oBAAoB,KAAK,OAAO,QAAQ,SAAS,KAAK,IAAI,OAAO;CAC9K,aAAa,UAAU;CACvB,IAAI,kBAAkB,MAAM,QAAQ,WAAW;EAC7C,IAAI,CAAC,SAAS,CAAC,gBAAgB,OAAO;EACtC,OAAO;GACL,MAAM,aAAa;GACnB,QAAQ;GACR,cAAc,aAAa,SAAS,aAAa,eAAe,KAAK;GACrE,cAAc,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,QAAQ;GAC1E;EACF;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,IAAI,aAAa,oBAAoB,QAAQ,oBAAoB,KAAK,IAAI,kBAAkB;CAC5F,IAAI;CACJ,IAAI,0BAA0B,QAAQ,kBAAkB,aAAa,SAAS,aAAa,eAAe,KAAK,OAAO,QAAQ,UAAU,KAAK,IAAI,QAAQ,qBAAqB,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB;CAC9O,IAAI,uBAAuB,SAAS,KAAK;EACvC,IAAI;EACJ,2BAA2B,QAAQ,2BAA2B,KAAK,IAAI,KAAK,IAAI,uBAAuB,GAAG;EAC1G,CAAC,sBAAsB,MAAM,kBAAkB,QAAQ,wBAAwB,KAAK,IAAI,KAAK,IAAI,oBAAoB,KAAK,OAAO,GAAG;CACtI;CACA,IAAI;CACJ,IAAI,UAAU,MAAM,6BAA6B,mBAAmB,QAAQ,mBAAmB,KAAK,IAAI,iBAAiB,MAAM,QAAQ,cAAc,MAAM,UAAU,QAAQ,gBAAgB,KAAK,IAAI,cAAc;CACpN,IAAI;CACJ,IAAI,CAAC,MAAM,WAAW,qBAAqB;EACzC,MAAM;EACN,cAAc,qBAAqB,MAAM,iBAAiB,QAAQ,uBAAuB,KAAK,IAAI,qBAAqB;EACvH,UAAU;EACV;CACF,CAAC;CACD,OAAO;EACL;EACA;EACA;EACA;EACA;EACA,iBAAiB,iBAAiB,WAAW;GAC3C,OAAO,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,QAAQ,aAAa;IAC9E,OAAO;IACP,OAAO;IACP,UAAU;GACZ,CAAC;EACH,IAAI,KAAK;CACX;AACF"}
@@ -1,75 +1,10 @@
1
- import React from "react";
2
1
  import { useConfiguration } from "@tamagui/core";
3
2
  import { useConstant } from "@tamagui/use-constant";
4
- import { useControllableState } from "@tamagui/use-controllable-state";
3
+ import { useSheetState } from "./useSheetState.mjs";
5
4
 
6
5
  function useSheetProviderProps(props, state) {
7
- const handleRef = React.useRef(null);
8
- const contentRef = React.useRef(null);
9
- const [frameSize, setFrameSize] = React.useState(0);
10
- const [maxContentSize, setMaxContentSize] = React.useState(0);
11
- const snapPointsMode = props.snapPointsMode ?? "percent";
12
- const snapPointsProp = props.snapPoints ?? (snapPointsMode === "percent" ? [80] : snapPointsMode === "constant" ? [256] : ["fit"]);
13
- const hasFit = snapPointsProp[0] === "fit";
14
- const snapPoints = React.useMemo(() => props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp, [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]);
15
- const [position_, setPositionImmediate] = useControllableState({
16
- prop: props.position,
17
- defaultProp: props.defaultPosition || (state.open ? 0 : -1),
18
- onChange: props.onPositionChange,
19
- strategy: "most-recent-wins"
20
- });
21
- const position = state.open === false ? -1 : position_;
22
- const { open } = state;
23
- const setPosition = React.useCallback((next) => {
24
- if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
25
- state.setOpen(false);
26
- } else {
27
- setPositionImmediate(next);
28
- }
29
- }, [
30
- props.dismissOnSnapToBottom,
31
- snapPoints.length,
32
- setPositionImmediate,
33
- state.setOpen
34
- ]);
35
- if (process.env.NODE_ENV === "development") {
36
- if (snapPointsMode === "mixed" && snapPoints.some((p) => {
37
- if (typeof p === "string") {
38
- if (p === "fit") {
39
- return false;
40
- }
41
- if (p.endsWith("%")) {
42
- const n = Number(p.slice(0, -1));
43
- return n < 0 || n > 100;
44
- }
45
- return true;
46
- }
47
- return typeof p !== "number" || p < 0;
48
- })) {
49
- console.warn("⚠️ Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or \"fit\" when snapPointsMode is mixed");
50
- }
51
- if (snapPointsMode === "mixed" && snapPoints.indexOf("fit") > 0) {
52
- console.warn("⚠️ Invalid snapPoint given, \"fit\" must be the first/largest snap point when snapPointsMode is mixed");
53
- }
54
- if (snapPointsMode === "fit" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== "fit")) {
55
- console.warn("⚠️ Invalid snapPoint given, there are no snap points when snapPointsMode is fit");
56
- }
57
- if (snapPointsMode === "constant" && snapPoints.some((p) => typeof p !== "number" || p < 0)) {
58
- console.warn("⚠️ Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant");
59
- }
60
- if (snapPointsMode === "percent" && snapPoints.some((p) => typeof p !== "number" || p < 0 || p > 100)) {
61
- console.warn("⚠️ Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent");
62
- }
63
- }
64
- if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
65
- setPositionImmediate(0);
66
- }
67
- const shouldSetPositionOpen = open && position < 0;
68
- React.useEffect(() => {
69
- if (shouldSetPositionOpen) {
70
- setPosition(0);
71
- }
72
- }, [setPosition, shouldSetPositionOpen]);
6
+ const { maxContentSize, ...sheetState } = useSheetState(props, state);
7
+ const { frameSize, snapPointsMode, snapPoints, open } = sheetState;
73
8
  const { animationDriver } = useConfiguration();
74
9
  if (!animationDriver) {
75
10
  throw new Error(process.env.NODE_ENV === "production" ? `\u274C 008` : "Must set animations in tamagui.config.ts");
@@ -105,32 +40,14 @@ function useSheetProviderProps(props, state) {
105
40
  const disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;
106
41
  const maxSnapPoint = snapPoints[0];
107
42
  const screenSize = snapPointsMode === "percent" ? frameSize / ((typeof maxSnapPoint === "number" ? maxSnapPoint : 100) / 100) : maxContentSize;
108
- const providerProps = {
43
+ return {
44
+ ...sheetState,
109
45
  screenSize,
110
46
  maxSnapPoint,
111
47
  disableRemoveScroll,
112
48
  scrollBridge,
113
- modal: !!props.modal,
114
- open: state.open,
115
- setOpen: state.setOpen,
116
- hidden: !!state.isHidden,
117
- contentRef,
118
- handleRef,
119
- frameSize,
120
- setFrameSize,
121
- dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,
122
- dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,
123
- scope: props.scope ?? "",
124
- hasFit,
125
- position,
126
- snapPoints,
127
- snapPointsMode,
128
- setMaxContentSize,
129
- setPosition,
130
- setPositionImmediate,
131
49
  onlyShowContainer: false
132
50
  };
133
- return providerProps;
134
51
  }
135
52
 
136
53
  export { useSheetProviderProps };
@@ -1 +1 @@
1
- {"version":3,"file":"useSheetProviderProps.js","names":[],"sources":["esm/useSheetProviderProps.js"],"sourcesContent":["import React from \"react\";\nimport { useConfiguration } from \"@tamagui/core\";\nimport { useConstant } from \"@tamagui/use-constant\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nfunction useSheetProviderProps(props, state) {\n const handleRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [frameSize, setFrameSize] = React.useState(0);\n const [maxContentSize, setMaxContentSize] = React.useState(0);\n const snapPointsMode = props.snapPointsMode ?? \"percent\";\n const snapPointsProp = props.snapPoints ?? (snapPointsMode === \"percent\" ? [80] : snapPointsMode === \"constant\" ? [256] : [\"fit\"]);\n const hasFit = snapPointsProp[0] === \"fit\";\n const snapPoints = React.useMemo(\n () => props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp,\n [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]\n );\n const [position_, setPositionImmediate] = useControllableState({\n prop: props.position,\n defaultProp: props.defaultPosition || (state.open ? 0 : -1),\n onChange: props.onPositionChange,\n strategy: \"most-recent-wins\"\n });\n const position = state.open === false ? -1 : position_;\n const { open } = state;\n const setPosition = React.useCallback(\n (next) => {\n if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {\n state.setOpen(false);\n } else {\n setPositionImmediate(next);\n }\n },\n [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]\n );\n if (process.env.NODE_ENV === \"development\") {\n if (snapPointsMode === \"mixed\" && snapPoints.some((p) => {\n if (typeof p === \"string\") {\n if (p === \"fit\") {\n return false;\n }\n if (p.endsWith(\"%\")) {\n const n = Number(p.slice(0, -1));\n return n < 0 || n > 100;\n }\n return true;\n }\n return typeof p !== \"number\" || p < 0;\n })) {\n console.warn(\n '\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or \"fit\" when snapPointsMode is mixed'\n );\n }\n if (snapPointsMode === \"mixed\" && snapPoints.indexOf(\"fit\") > 0) {\n console.warn(\n '\\u26A0\\uFE0F Invalid snapPoint given, \"fit\" must be the first/largest snap point when snapPointsMode is mixed'\n );\n }\n if (snapPointsMode === \"fit\" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== \"fit\")) {\n console.warn(\n \"\\u26A0\\uFE0F Invalid snapPoint given, there are no snap points when snapPointsMode is fit\"\n );\n }\n if (snapPointsMode === \"constant\" && snapPoints.some((p) => typeof p !== \"number\" || p < 0)) {\n console.warn(\n \"\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant\"\n );\n }\n if (snapPointsMode === \"percent\" && snapPoints.some((p) => typeof p !== \"number\" || p < 0 || p > 100)) {\n console.warn(\n \"\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent\"\n );\n }\n }\n if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {\n setPositionImmediate(0);\n }\n const shouldSetPositionOpen = open && position < 0;\n React.useEffect(() => {\n if (shouldSetPositionOpen) {\n setPosition(0);\n }\n }, [setPosition, shouldSetPositionOpen]);\n const { animationDriver } = useConfiguration();\n if (!animationDriver) {\n throw new Error(\n process.env.NODE_ENV === \"production\" ? `\\u274C 008` : \"Must set animations in tamagui.config.ts\"\n );\n }\n const scrollBridge = useConstant(() => {\n const parentDragListeners = /* @__PURE__ */ new Set();\n const bridge = {\n hasScrollableContent: false,\n enabled: false,\n y: 0,\n paneY: 0,\n paneMinY: 0,\n scrollStartY: -1,\n drag: () => {\n },\n release: () => {\n },\n scrollLock: false,\n isParentDragging: false,\n onParentDragging: (cb) => {\n parentDragListeners.add(cb);\n return () => {\n parentDragListeners.delete(cb);\n };\n },\n setParentDragging: (val) => {\n if (val !== bridge.isParentDragging) {\n bridge.isParentDragging = val;\n parentDragListeners.forEach((cb) => cb(val));\n }\n }\n };\n return bridge;\n });\n const disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;\n const maxSnapPoint = snapPoints[0];\n const screenSize = snapPointsMode === \"percent\" ? frameSize / ((typeof maxSnapPoint === \"number\" ? maxSnapPoint : 100) / 100) : maxContentSize;\n const providerProps = {\n screenSize,\n maxSnapPoint,\n disableRemoveScroll,\n scrollBridge,\n modal: !!props.modal,\n open: state.open,\n setOpen: state.setOpen,\n hidden: !!state.isHidden,\n contentRef,\n handleRef,\n frameSize,\n setFrameSize,\n dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,\n dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,\n scope: props.scope ?? \"\",\n hasFit,\n position,\n snapPoints,\n snapPointsMode,\n setMaxContentSize,\n setPosition,\n setPositionImmediate,\n onlyShowContainer: false\n };\n return providerProps;\n}\nexport {\n useSheetProviderProps\n};\n//# sourceMappingURL=useSheetProviderProps.js.map\n"],"mappings":";;;;;;AAIA,SAAS,sBAAsB,OAAO,OAAO;CAC3C,MAAM,YAAY,MAAM,OAAO,IAAI;CACnC,MAAM,aAAa,MAAM,OAAO,IAAI;CACpC,MAAM,CAAC,WAAW,gBAAgB,MAAM,SAAS,CAAC;CAClD,MAAM,CAAC,gBAAgB,qBAAqB,MAAM,SAAS,CAAC;CAC5D,MAAM,iBAAiB,MAAM,kBAAkB;CAC/C,MAAM,iBAAiB,MAAM,eAAe,mBAAmB,YAAY,CAAC,EAAE,IAAI,mBAAmB,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK;CAChI,MAAM,SAAS,eAAe,OAAO;CACrC,MAAM,aAAa,MAAM,cACjB,MAAM,wBAAwB,CAAC,GAAG,gBAAgB,CAAC,IAAI,gBAC7D,CAAC,KAAK,UAAU,cAAc,GAAG,MAAM,qBAAqB,CAC9D;CACA,MAAM,CAAC,WAAW,wBAAwB,qBAAqB;EAC7D,MAAM,MAAM;EACZ,aAAa,MAAM,oBAAoB,MAAM,OAAO,IAAI,CAAC;EACzD,UAAU,MAAM;EAChB,UAAU;CACZ,CAAC;CACD,MAAM,WAAW,MAAM,SAAS,QAAQ,CAAC,IAAI;CAC7C,MAAM,EAAE,SAAS;CACjB,MAAM,cAAc,MAAM,aACvB,SAAS;EACR,IAAI,MAAM,yBAAyB,SAAS,WAAW,SAAS,GAAG;GACjE,MAAM,QAAQ,KAAK;EACrB,OAAO;GACL,qBAAqB,IAAI;EAC3B;CACF,GACA;EAAC,MAAM;EAAuB,WAAW;EAAQ;EAAsB,MAAM;CAAO,CACtF;CACA,IAAI,QAAQ,IAAI,aAAa,eAAe;EAC1C,IAAI,mBAAmB,WAAW,WAAW,MAAM,MAAM;GACvD,IAAI,OAAO,MAAM,UAAU;IACzB,IAAI,MAAM,OAAO;KACf,OAAO;IACT;IACA,IAAI,EAAE,SAAS,GAAG,GAAG;KACnB,MAAM,IAAI,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;KAC/B,OAAO,IAAI,KAAK,IAAI;IACtB;IACA,OAAO;GACT;GACA,OAAO,OAAO,MAAM,YAAY,IAAI;EACtC,CAAC,GAAG;GACF,QAAQ,KACN,oJACF;EACF;EACA,IAAI,mBAAmB,WAAW,WAAW,QAAQ,KAAK,IAAI,GAAG;GAC/D,QAAQ,KACN,uGACF;EACF;EACA,IAAI,mBAAmB,UAAU,WAAW,YAAY,MAAM,wBAAwB,IAAI,MAAM,WAAW,OAAO,QAAQ;GACxH,QAAQ,KACN,iFACF;EACF;EACA,IAAI,mBAAmB,cAAc,WAAW,MAAM,MAAM,OAAO,MAAM,YAAY,IAAI,CAAC,GAAG;GAC3F,QAAQ,KACN,wGACF;EACF;EACA,IAAI,mBAAmB,aAAa,WAAW,MAAM,MAAM,OAAO,MAAM,YAAY,IAAI,KAAK,IAAI,GAAG,GAAG;GACrG,QAAQ,KACN,gHACF;EACF;CACF;CACA,IAAI,QAAQ,MAAM,yBAAyB,aAAa,WAAW,SAAS,GAAG;EAC7E,qBAAqB,CAAC;CACxB;CACA,MAAM,wBAAwB,QAAQ,WAAW;CACjD,MAAM,gBAAgB;EACpB,IAAI,uBAAuB;GACzB,YAAY,CAAC;EACf;CACF,GAAG,CAAC,aAAa,qBAAqB,CAAC;CACvC,MAAM,EAAE,oBAAoB,iBAAiB;CAC7C,IAAI,CAAC,iBAAiB;EACpB,MAAM,IAAI,MACR,QAAQ,IAAI,aAAa,eAAe,eAAe,0CACzD;CACF;CACA,MAAM,eAAe,kBAAkB;EACrC,MAAM,sCAAsC,IAAI,IAAI;EACpD,MAAM,SAAS;GACb,sBAAsB;GACtB,SAAS;GACT,GAAG;GACH,OAAO;GACP,UAAU;GACV,cAAc,CAAC;GACf,YAAY,CACZ;GACA,eAAe,CACf;GACA,YAAY;GACZ,kBAAkB;GAClB,mBAAmB,OAAO;IACxB,oBAAoB,IAAI,EAAE;IAC1B,aAAa;KACX,oBAAoB,OAAO,EAAE;IAC/B;GACF;GACA,oBAAoB,QAAQ;IAC1B,IAAI,QAAQ,OAAO,kBAAkB;KACnC,OAAO,mBAAmB;KAC1B,oBAAoB,SAAS,OAAO,GAAG,GAAG,CAAC;IAC7C;GACF;EACF;EACA,OAAO;CACT,CAAC;CACD,MAAM,sBAAsB,MAAM,uBAAuB,CAAC,QAAQ,CAAC,MAAM;CACzE,MAAM,eAAe,WAAW;CAChC,MAAM,aAAa,mBAAmB,YAAY,cAAc,OAAO,iBAAiB,WAAW,eAAe,OAAO,OAAO;CAChI,MAAM,gBAAgB;EACpB;EACA;EACA;EACA;EACA,OAAO,CAAC,CAAC,MAAM;EACf,MAAM,MAAM;EACZ,SAAS,MAAM;EACf,QAAQ,CAAC,CAAC,MAAM;EAChB;EACA;EACA;EACA;EACA,uBAAuB,MAAM,yBAAyB;EACtD,uBAAuB,MAAM,yBAAyB;EACtD,OAAO,MAAM,SAAS;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA,mBAAmB;CACrB;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"useSheetProviderProps.js","names":[],"sources":["esm/useSheetProviderProps.js"],"sourcesContent":["import { useConfiguration } from \"@tamagui/core\";\nimport { useConstant } from \"@tamagui/use-constant\";\nimport { useSheetState } from \"./useSheetState\";\nfunction useSheetProviderProps(props, state) {\n const { maxContentSize, ...sheetState } = useSheetState(props, state);\n const { frameSize, snapPointsMode, snapPoints, open } = sheetState;\n const { animationDriver } = useConfiguration();\n if (!animationDriver) {\n throw new Error(\n process.env.NODE_ENV === \"production\" ? `\\u274C 008` : \"Must set animations in tamagui.config.ts\"\n );\n }\n const scrollBridge = useConstant(() => {\n const parentDragListeners = /* @__PURE__ */ new Set();\n const bridge = {\n hasScrollableContent: false,\n enabled: false,\n y: 0,\n paneY: 0,\n paneMinY: 0,\n scrollStartY: -1,\n drag: () => {\n },\n release: () => {\n },\n scrollLock: false,\n isParentDragging: false,\n onParentDragging: (cb) => {\n parentDragListeners.add(cb);\n return () => {\n parentDragListeners.delete(cb);\n };\n },\n setParentDragging: (val) => {\n if (val !== bridge.isParentDragging) {\n bridge.isParentDragging = val;\n parentDragListeners.forEach((cb) => cb(val));\n }\n }\n };\n return bridge;\n });\n const disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;\n const maxSnapPoint = snapPoints[0];\n const screenSize = snapPointsMode === \"percent\" ? frameSize / ((typeof maxSnapPoint === \"number\" ? maxSnapPoint : 100) / 100) : maxContentSize;\n return {\n ...sheetState,\n screenSize,\n maxSnapPoint,\n disableRemoveScroll,\n scrollBridge,\n onlyShowContainer: false\n };\n}\nexport {\n useSheetProviderProps\n};\n//# sourceMappingURL=useSheetProviderProps.js.map\n"],"mappings":";;;;;AAGA,SAAS,sBAAsB,OAAO,OAAO;CAC3C,MAAM,EAAE,gBAAgB,GAAG,eAAe,cAAc,OAAO,KAAK;CACpE,MAAM,EAAE,WAAW,gBAAgB,YAAY,SAAS;CACxD,MAAM,EAAE,oBAAoB,iBAAiB;CAC7C,IAAI,CAAC,iBAAiB;EACpB,MAAM,IAAI,MACR,QAAQ,IAAI,aAAa,eAAe,eAAe,0CACzD;CACF;CACA,MAAM,eAAe,kBAAkB;EACrC,MAAM,sCAAsC,IAAI,IAAI;EACpD,MAAM,SAAS;GACb,sBAAsB;GACtB,SAAS;GACT,GAAG;GACH,OAAO;GACP,UAAU;GACV,cAAc,CAAC;GACf,YAAY,CACZ;GACA,eAAe,CACf;GACA,YAAY;GACZ,kBAAkB;GAClB,mBAAmB,OAAO;IACxB,oBAAoB,IAAI,EAAE;IAC1B,aAAa;KACX,oBAAoB,OAAO,EAAE;IAC/B;GACF;GACA,oBAAoB,QAAQ;IAC1B,IAAI,QAAQ,OAAO,kBAAkB;KACnC,OAAO,mBAAmB;KAC1B,oBAAoB,SAAS,OAAO,GAAG,GAAG,CAAC;IAC7C;GACF;EACF;EACA,OAAO;CACT,CAAC;CACD,MAAM,sBAAsB,MAAM,uBAAuB,CAAC,QAAQ,CAAC,MAAM;CACzE,MAAM,eAAe,WAAW;CAChC,MAAM,aAAa,mBAAmB,YAAY,cAAc,OAAO,iBAAiB,WAAW,eAAe,OAAO,OAAO;CAChI,OAAO;EACL,GAAG;EACH;EACA;EACA;EACA;EACA,mBAAmB;CACrB;AACF"}
@@ -1,83 +1,10 @@
1
- import React from "react";
2
1
  import { useConfiguration } from "@tamagui/core";
3
2
  import { useConstant } from "@tamagui/use-constant";
4
- import { useControllableState } from "@tamagui/use-controllable-state";
3
+ import { useSheetState } from "./useSheetState.native.js";
5
4
 
6
5
  function useSheetProviderProps(props, state) {
7
- var handleRef = React.useRef(null);
8
- var contentRef = React.useRef(null);
9
- var [frameSize, setFrameSize] = React.useState(0);
10
- var [maxContentSize, setMaxContentSize] = React.useState(0);
11
- var _props_snapPointsMode;
12
- var snapPointsMode = (_props_snapPointsMode = props.snapPointsMode) !== null && _props_snapPointsMode !== void 0 ? _props_snapPointsMode : "percent";
13
- var _props_snapPoints;
14
- var snapPointsProp = (_props_snapPoints = props.snapPoints) !== null && _props_snapPoints !== void 0 ? _props_snapPoints : snapPointsMode === "percent" ? [80] : snapPointsMode === "constant" ? [256] : ["fit"];
15
- var hasFit = snapPointsProp[0] === "fit";
16
- var snapPoints = React.useMemo(function() {
17
- return props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp;
18
- }, [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]);
19
- var [position_, setPositionImmediate] = useControllableState({
20
- prop: props.position,
21
- defaultProp: props.defaultPosition || (state.open ? 0 : -1),
22
- onChange: props.onPositionChange,
23
- strategy: "most-recent-wins"
24
- });
25
- var position = state.open === false ? -1 : position_;
26
- var { open } = state;
27
- var setPosition = React.useCallback(function(next) {
28
- if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
29
- state.setOpen(false);
30
- } else {
31
- setPositionImmediate(next);
32
- }
33
- }, [
34
- props.dismissOnSnapToBottom,
35
- snapPoints.length,
36
- setPositionImmediate,
37
- state.setOpen
38
- ]);
39
- if (process.env.NODE_ENV === "development") {
40
- if (snapPointsMode === "mixed" && snapPoints.some(function(p) {
41
- if (typeof p === "string") {
42
- if (p === "fit") {
43
- return false;
44
- }
45
- if (p.endsWith("%")) {
46
- var n = Number(p.slice(0, -1));
47
- return n < 0 || n > 100;
48
- }
49
- return true;
50
- }
51
- return typeof p !== "number" || p < 0;
52
- })) {
53
- console.warn("⚠️ Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or \"fit\" when snapPointsMode is mixed");
54
- }
55
- if (snapPointsMode === "mixed" && snapPoints.indexOf("fit") > 0) {
56
- console.warn("⚠️ Invalid snapPoint given, \"fit\" must be the first/largest snap point when snapPointsMode is mixed");
57
- }
58
- if (snapPointsMode === "fit" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== "fit")) {
59
- console.warn("⚠️ Invalid snapPoint given, there are no snap points when snapPointsMode is fit");
60
- }
61
- if (snapPointsMode === "constant" && snapPoints.some(function(p) {
62
- return typeof p !== "number" || p < 0;
63
- })) {
64
- console.warn("⚠️ Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant");
65
- }
66
- if (snapPointsMode === "percent" && snapPoints.some(function(p) {
67
- return typeof p !== "number" || p < 0 || p > 100;
68
- })) {
69
- console.warn("⚠️ Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent");
70
- }
71
- }
72
- if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
73
- setPositionImmediate(0);
74
- }
75
- var shouldSetPositionOpen = open && position < 0;
76
- React.useEffect(function() {
77
- if (shouldSetPositionOpen) {
78
- setPosition(0);
79
- }
80
- }, [setPosition, shouldSetPositionOpen]);
6
+ var { maxContentSize, ...sheetState } = useSheetState(props, state);
7
+ var { frameSize, snapPointsMode, snapPoints, open } = sheetState;
81
8
  var { animationDriver } = useConfiguration();
82
9
  if (!animationDriver) {
83
10
  throw new Error(process.env.NODE_ENV === "production" ? `\u274C 008` : "Must set animations in tamagui.config.ts");
@@ -115,33 +42,14 @@ function useSheetProviderProps(props, state) {
115
42
  var disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;
116
43
  var maxSnapPoint = snapPoints[0];
117
44
  var screenSize = snapPointsMode === "percent" ? frameSize / ((typeof maxSnapPoint === "number" ? maxSnapPoint : 100) / 100) : maxContentSize;
118
- var _props_dismissOnOverlayPress, _props_dismissOnSnapToBottom, _props_scope;
119
- var providerProps = {
45
+ return {
46
+ ...sheetState,
120
47
  screenSize,
121
48
  maxSnapPoint,
122
49
  disableRemoveScroll,
123
50
  scrollBridge,
124
- modal: !!props.modal,
125
- open: state.open,
126
- setOpen: state.setOpen,
127
- hidden: !!state.isHidden,
128
- contentRef,
129
- handleRef,
130
- frameSize,
131
- setFrameSize,
132
- dismissOnOverlayPress: (_props_dismissOnOverlayPress = props.dismissOnOverlayPress) !== null && _props_dismissOnOverlayPress !== void 0 ? _props_dismissOnOverlayPress : true,
133
- dismissOnSnapToBottom: (_props_dismissOnSnapToBottom = props.dismissOnSnapToBottom) !== null && _props_dismissOnSnapToBottom !== void 0 ? _props_dismissOnSnapToBottom : false,
134
- scope: (_props_scope = props.scope) !== null && _props_scope !== void 0 ? _props_scope : "",
135
- hasFit,
136
- position,
137
- snapPoints,
138
- snapPointsMode,
139
- setMaxContentSize,
140
- setPosition,
141
- setPositionImmediate,
142
51
  onlyShowContainer: false
143
52
  };
144
- return providerProps;
145
53
  }
146
54
 
147
55
  export { useSheetProviderProps };
@@ -1 +1 @@
1
- {"version":3,"file":"useSheetProviderProps.native.js","names":[],"sources":["esm/useSheetProviderProps.native.js"],"sourcesContent":["import React from \"react\";\nimport { useConfiguration } from \"@tamagui/core\";\nimport { useConstant } from \"@tamagui/use-constant\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nfunction useSheetProviderProps(props, state) {\n var handleRef = React.useRef(null);\n var contentRef = React.useRef(null);\n var [frameSize, setFrameSize] = React.useState(0);\n var [maxContentSize, setMaxContentSize] = React.useState(0);\n var _props_snapPointsMode;\n var snapPointsMode = (_props_snapPointsMode = props.snapPointsMode) !== null && _props_snapPointsMode !== void 0 ? _props_snapPointsMode : \"percent\";\n var _props_snapPoints;\n var snapPointsProp = (_props_snapPoints = props.snapPoints) !== null && _props_snapPoints !== void 0 ? _props_snapPoints : snapPointsMode === \"percent\" ? [\n 80\n ] : snapPointsMode === \"constant\" ? [\n 256\n ] : [\n \"fit\"\n ];\n var hasFit = snapPointsProp[0] === \"fit\";\n var snapPoints = React.useMemo(function() {\n return props.dismissOnSnapToBottom ? [\n ...snapPointsProp,\n 0\n ] : snapPointsProp;\n }, [\n JSON.stringify(snapPointsProp),\n props.dismissOnSnapToBottom\n ]);\n var [position_, setPositionImmediate] = useControllableState({\n prop: props.position,\n defaultProp: props.defaultPosition || (state.open ? 0 : -1),\n onChange: props.onPositionChange,\n strategy: \"most-recent-wins\"\n });\n var position = state.open === false ? -1 : position_;\n var { open } = state;\n var setPosition = React.useCallback(function(next) {\n if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {\n state.setOpen(false);\n } else {\n setPositionImmediate(next);\n }\n }, [\n props.dismissOnSnapToBottom,\n snapPoints.length,\n setPositionImmediate,\n state.setOpen\n ]);\n if (process.env.NODE_ENV === \"development\") {\n if (snapPointsMode === \"mixed\" && snapPoints.some(function(p) {\n if (typeof p === \"string\") {\n if (p === \"fit\") {\n return false;\n }\n if (p.endsWith(\"%\")) {\n var n = Number(p.slice(0, -1));\n return n < 0 || n > 100;\n }\n return true;\n }\n return typeof p !== \"number\" || p < 0;\n })) {\n console.warn('\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or \"fit\" when snapPointsMode is mixed');\n }\n if (snapPointsMode === \"mixed\" && snapPoints.indexOf(\"fit\") > 0) {\n console.warn('\\u26A0\\uFE0F Invalid snapPoint given, \"fit\" must be the first/largest snap point when snapPointsMode is mixed');\n }\n if (snapPointsMode === \"fit\" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== \"fit\")) {\n console.warn(\"\\u26A0\\uFE0F Invalid snapPoint given, there are no snap points when snapPointsMode is fit\");\n }\n if (snapPointsMode === \"constant\" && snapPoints.some(function(p) {\n return typeof p !== \"number\" || p < 0;\n })) {\n console.warn(\"\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant\");\n }\n if (snapPointsMode === \"percent\" && snapPoints.some(function(p) {\n return typeof p !== \"number\" || p < 0 || p > 100;\n })) {\n console.warn(\"\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent\");\n }\n }\n if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {\n setPositionImmediate(0);\n }\n var shouldSetPositionOpen = open && position < 0;\n React.useEffect(function() {\n if (shouldSetPositionOpen) {\n setPosition(0);\n }\n }, [\n setPosition,\n shouldSetPositionOpen\n ]);\n var { animationDriver } = useConfiguration();\n if (!animationDriver) {\n throw new Error(process.env.NODE_ENV === \"production\" ? `\\u274C 008` : \"Must set animations in tamagui.config.ts\");\n }\n var scrollBridge = useConstant(function() {\n var parentDragListeners = /* @__PURE__ */ new Set();\n var bridge = {\n hasScrollableContent: false,\n enabled: false,\n y: 0,\n paneY: 0,\n paneMinY: 0,\n scrollStartY: -1,\n drag: function() {\n },\n release: function() {\n },\n scrollLock: false,\n isParentDragging: false,\n onParentDragging: function(cb) {\n parentDragListeners.add(cb);\n return function() {\n parentDragListeners.delete(cb);\n };\n },\n setParentDragging: function(val) {\n if (val !== bridge.isParentDragging) {\n bridge.isParentDragging = val;\n parentDragListeners.forEach(function(cb) {\n return cb(val);\n });\n }\n }\n };\n return bridge;\n });\n var disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;\n var maxSnapPoint = snapPoints[0];\n var screenSize = snapPointsMode === \"percent\" ? frameSize / ((typeof maxSnapPoint === \"number\" ? maxSnapPoint : 100) / 100) : maxContentSize;\n var _props_dismissOnOverlayPress, _props_dismissOnSnapToBottom, _props_scope;\n var providerProps = {\n screenSize,\n maxSnapPoint,\n disableRemoveScroll,\n scrollBridge,\n modal: !!props.modal,\n open: state.open,\n setOpen: state.setOpen,\n hidden: !!state.isHidden,\n contentRef,\n handleRef,\n frameSize,\n setFrameSize,\n dismissOnOverlayPress: (_props_dismissOnOverlayPress = props.dismissOnOverlayPress) !== null && _props_dismissOnOverlayPress !== void 0 ? _props_dismissOnOverlayPress : true,\n dismissOnSnapToBottom: (_props_dismissOnSnapToBottom = props.dismissOnSnapToBottom) !== null && _props_dismissOnSnapToBottom !== void 0 ? _props_dismissOnSnapToBottom : false,\n scope: (_props_scope = props.scope) !== null && _props_scope !== void 0 ? _props_scope : \"\",\n hasFit,\n position,\n snapPoints,\n snapPointsMode,\n setMaxContentSize,\n setPosition,\n setPositionImmediate,\n onlyShowContainer: false\n };\n return providerProps;\n}\nexport {\n useSheetProviderProps\n};\n//# sourceMappingURL=useSheetProviderProps.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"useSheetProviderProps.native.js","names":[],"sources":["esm/useSheetProviderProps.native.js"],"sourcesContent":["import { useConfiguration } from \"@tamagui/core\";\nimport { useConstant } from \"@tamagui/use-constant\";\nimport { useSheetState } from \"./useSheetState\";\nfunction useSheetProviderProps(props, state) {\n var { maxContentSize, ...sheetState } = useSheetState(props, state);\n var { frameSize, snapPointsMode, snapPoints, open } = sheetState;\n var { animationDriver } = useConfiguration();\n if (!animationDriver) {\n throw new Error(process.env.NODE_ENV === \"production\" ? `\\u274C 008` : \"Must set animations in tamagui.config.ts\");\n }\n var scrollBridge = useConstant(function() {\n var parentDragListeners = /* @__PURE__ */ new Set();\n var bridge = {\n hasScrollableContent: false,\n enabled: false,\n y: 0,\n paneY: 0,\n paneMinY: 0,\n scrollStartY: -1,\n drag: function() {\n },\n release: function() {\n },\n scrollLock: false,\n isParentDragging: false,\n onParentDragging: function(cb) {\n parentDragListeners.add(cb);\n return function() {\n parentDragListeners.delete(cb);\n };\n },\n setParentDragging: function(val) {\n if (val !== bridge.isParentDragging) {\n bridge.isParentDragging = val;\n parentDragListeners.forEach(function(cb) {\n return cb(val);\n });\n }\n }\n };\n return bridge;\n });\n var disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;\n var maxSnapPoint = snapPoints[0];\n var screenSize = snapPointsMode === \"percent\" ? frameSize / ((typeof maxSnapPoint === \"number\" ? maxSnapPoint : 100) / 100) : maxContentSize;\n return {\n ...sheetState,\n screenSize,\n maxSnapPoint,\n disableRemoveScroll,\n scrollBridge,\n onlyShowContainer: false\n };\n}\nexport {\n useSheetProviderProps\n};\n//# sourceMappingURL=useSheetProviderProps.js.map\n"],"mappings":";;;;;AAGA,SAAS,sBAAsB,OAAO,OAAO;CAC3C,IAAI,EAAE,gBAAgB,GAAG,eAAe,cAAc,OAAO,KAAK;CAClE,IAAI,EAAE,WAAW,gBAAgB,YAAY,SAAS;CACtD,IAAI,EAAE,oBAAoB,iBAAiB;CAC3C,IAAI,CAAC,iBAAiB;EACpB,MAAM,IAAI,MAAM,QAAQ,IAAI,aAAa,eAAe,eAAe,0CAA0C;CACnH;CACA,IAAI,eAAe,YAAY,WAAW;EACxC,IAAI,sCAAsC,IAAI,IAAI;EAClD,IAAI,SAAS;GACX,sBAAsB;GACtB,SAAS;GACT,GAAG;GACH,OAAO;GACP,UAAU;GACV,cAAc,CAAC;GACf,MAAM,WAAW,CACjB;GACA,SAAS,WAAW,CACpB;GACA,YAAY;GACZ,kBAAkB;GAClB,kBAAkB,SAAS,IAAI;IAC7B,oBAAoB,IAAI,EAAE;IAC1B,OAAO,WAAW;KAChB,oBAAoB,OAAO,EAAE;IAC/B;GACF;GACA,mBAAmB,SAAS,KAAK;IAC/B,IAAI,QAAQ,OAAO,kBAAkB;KACnC,OAAO,mBAAmB;KAC1B,oBAAoB,QAAQ,SAAS,IAAI;MACvC,OAAO,GAAG,GAAG;KACf,CAAC;IACH;GACF;EACF;EACA,OAAO;CACT,CAAC;CACD,IAAI,sBAAsB,MAAM,uBAAuB,CAAC,QAAQ,CAAC,MAAM;CACvE,IAAI,eAAe,WAAW;CAC9B,IAAI,aAAa,mBAAmB,YAAY,cAAc,OAAO,iBAAiB,WAAW,eAAe,OAAO,OAAO;CAC9H,OAAO;EACL,GAAG;EACH;EACA;EACA;EACA;EACA,mBAAmB;CACrB;AACF"}
@@ -0,0 +1,95 @@
1
+ import React from "react";
2
+ import { useControllableState } from "@tamagui/use-controllable-state";
3
+
4
+ function useSheetState(props, state) {
5
+ const handleRef = React.useRef(null);
6
+ const contentRef = React.useRef(null);
7
+ const [frameSize, setFrameSize] = React.useState(0);
8
+ const [maxContentSize, setMaxContentSize] = React.useState(0);
9
+ const snapPointsMode = props.snapPointsMode ?? "percent";
10
+ const snapPointsProp = props.snapPoints ?? (snapPointsMode === "percent" ? [80] : snapPointsMode === "constant" ? [256] : ["fit"]);
11
+ const hasFit = snapPointsProp[0] === "fit";
12
+ const snapPoints = React.useMemo(() => props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp, [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]);
13
+ const [position_, setPositionImmediate] = useControllableState({
14
+ prop: props.position,
15
+ defaultProp: props.defaultPosition || (state.open ? 0 : -1),
16
+ onChange: props.onPositionChange,
17
+ strategy: state.strategy
18
+ });
19
+ const position = state.open === false ? -1 : position_;
20
+ const { open } = state;
21
+ const setPosition = React.useCallback((next) => {
22
+ if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
23
+ state.setOpen(false);
24
+ } else {
25
+ setPositionImmediate(next);
26
+ }
27
+ }, [
28
+ props.dismissOnSnapToBottom,
29
+ snapPoints.length,
30
+ setPositionImmediate,
31
+ state.setOpen
32
+ ]);
33
+ if (process.env.NODE_ENV === "development") {
34
+ if (snapPointsMode === "mixed" && snapPoints.some((p) => {
35
+ if (typeof p === "string") {
36
+ if (p === "fit") {
37
+ return false;
38
+ }
39
+ if (p.endsWith("%")) {
40
+ const n = Number(p.slice(0, -1));
41
+ return n < 0 || n > 100;
42
+ }
43
+ return true;
44
+ }
45
+ return typeof p !== "number" || p < 0;
46
+ })) {
47
+ console.warn("⚠️ Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or \"fit\" when snapPointsMode is mixed");
48
+ }
49
+ if (snapPointsMode === "mixed" && snapPoints.indexOf("fit") > 0) {
50
+ console.warn("⚠️ Invalid snapPoint given, \"fit\" must be the first/largest snap point when snapPointsMode is mixed");
51
+ }
52
+ if (snapPointsMode === "fit" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== "fit")) {
53
+ console.warn("⚠️ Invalid snapPoint given, there are no snap points when snapPointsMode is fit");
54
+ }
55
+ if (snapPointsMode === "constant" && snapPoints.some((p) => typeof p !== "number" || p < 0)) {
56
+ console.warn("⚠️ Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant");
57
+ }
58
+ if (snapPointsMode === "percent" && snapPoints.some((p) => typeof p !== "number" || p < 0 || p > 100)) {
59
+ console.warn("⚠️ Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent");
60
+ }
61
+ }
62
+ if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
63
+ setPositionImmediate(0);
64
+ }
65
+ const shouldSetPositionOpen = open && position < 0;
66
+ React.useEffect(() => {
67
+ if (shouldSetPositionOpen) {
68
+ setPosition(0);
69
+ }
70
+ }, [setPosition, shouldSetPositionOpen]);
71
+ return {
72
+ modal: !!props.modal,
73
+ open: state.open,
74
+ setOpen: state.setOpen,
75
+ hidden: !!state.isHidden,
76
+ contentRef,
77
+ handleRef,
78
+ frameSize,
79
+ setFrameSize,
80
+ maxContentSize,
81
+ dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,
82
+ dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,
83
+ scope: props.scope ?? "",
84
+ hasFit,
85
+ position,
86
+ snapPoints,
87
+ snapPointsMode,
88
+ setMaxContentSize,
89
+ setPosition,
90
+ setPositionImmediate
91
+ };
92
+ }
93
+
94
+ export { useSheetState };
95
+ //# sourceMappingURL=useSheetState.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetState.js","names":[],"sources":["esm/useSheetState.js"],"sourcesContent":["import React from \"react\";\nimport { useControllableState } from \"@tamagui/use-controllable-state\";\nfunction useSheetState(props, state) {\n const handleRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [frameSize, setFrameSize] = React.useState(0);\n const [maxContentSize, setMaxContentSize] = React.useState(0);\n const snapPointsMode = props.snapPointsMode ?? \"percent\";\n const snapPointsProp = props.snapPoints ?? (snapPointsMode === \"percent\" ? [80] : snapPointsMode === \"constant\" ? [256] : [\"fit\"]);\n const hasFit = snapPointsProp[0] === \"fit\";\n const snapPoints = React.useMemo(\n () => props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp,\n [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]\n );\n const [position_, setPositionImmediate] = useControllableState({\n prop: props.position,\n defaultProp: props.defaultPosition || (state.open ? 0 : -1),\n onChange: props.onPositionChange,\n strategy: state.strategy\n });\n const position = state.open === false ? -1 : position_;\n const { open } = state;\n const setPosition = React.useCallback(\n (next) => {\n if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {\n state.setOpen(false);\n } else {\n setPositionImmediate(next);\n }\n },\n [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]\n );\n if (process.env.NODE_ENV === \"development\") {\n if (snapPointsMode === \"mixed\" && snapPoints.some((p) => {\n if (typeof p === \"string\") {\n if (p === \"fit\") {\n return false;\n }\n if (p.endsWith(\"%\")) {\n const n = Number(p.slice(0, -1));\n return n < 0 || n > 100;\n }\n return true;\n }\n return typeof p !== \"number\" || p < 0;\n })) {\n console.warn(\n '\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or \"fit\" when snapPointsMode is mixed'\n );\n }\n if (snapPointsMode === \"mixed\" && snapPoints.indexOf(\"fit\") > 0) {\n console.warn(\n '\\u26A0\\uFE0F Invalid snapPoint given, \"fit\" must be the first/largest snap point when snapPointsMode is mixed'\n );\n }\n if (snapPointsMode === \"fit\" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== \"fit\")) {\n console.warn(\n \"\\u26A0\\uFE0F Invalid snapPoint given, there are no snap points when snapPointsMode is fit\"\n );\n }\n if (snapPointsMode === \"constant\" && snapPoints.some((p) => typeof p !== \"number\" || p < 0)) {\n console.warn(\n \"\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant\"\n );\n }\n if (snapPointsMode === \"percent\" && snapPoints.some((p) => typeof p !== \"number\" || p < 0 || p > 100)) {\n console.warn(\n \"\\u26A0\\uFE0F Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent\"\n );\n }\n }\n if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {\n setPositionImmediate(0);\n }\n const shouldSetPositionOpen = open && position < 0;\n React.useEffect(() => {\n if (shouldSetPositionOpen) {\n setPosition(0);\n }\n }, [setPosition, shouldSetPositionOpen]);\n return {\n modal: !!props.modal,\n open: state.open,\n setOpen: state.setOpen,\n hidden: !!state.isHidden,\n contentRef,\n handleRef,\n frameSize,\n setFrameSize,\n maxContentSize,\n dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,\n dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,\n scope: props.scope ?? \"\",\n hasFit,\n position,\n snapPoints,\n snapPointsMode,\n setMaxContentSize,\n setPosition,\n setPositionImmediate\n };\n}\nexport {\n useSheetState\n};\n//# sourceMappingURL=useSheetState.js.map\n"],"mappings":";;;;AAEA,SAAS,cAAc,OAAO,OAAO;CACnC,MAAM,YAAY,MAAM,OAAO,IAAI;CACnC,MAAM,aAAa,MAAM,OAAO,IAAI;CACpC,MAAM,CAAC,WAAW,gBAAgB,MAAM,SAAS,CAAC;CAClD,MAAM,CAAC,gBAAgB,qBAAqB,MAAM,SAAS,CAAC;CAC5D,MAAM,iBAAiB,MAAM,kBAAkB;CAC/C,MAAM,iBAAiB,MAAM,eAAe,mBAAmB,YAAY,CAAC,EAAE,IAAI,mBAAmB,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK;CAChI,MAAM,SAAS,eAAe,OAAO;CACrC,MAAM,aAAa,MAAM,cACjB,MAAM,wBAAwB,CAAC,GAAG,gBAAgB,CAAC,IAAI,gBAC7D,CAAC,KAAK,UAAU,cAAc,GAAG,MAAM,qBAAqB,CAC9D;CACA,MAAM,CAAC,WAAW,wBAAwB,qBAAqB;EAC7D,MAAM,MAAM;EACZ,aAAa,MAAM,oBAAoB,MAAM,OAAO,IAAI,CAAC;EACzD,UAAU,MAAM;EAChB,UAAU,MAAM;CAClB,CAAC;CACD,MAAM,WAAW,MAAM,SAAS,QAAQ,CAAC,IAAI;CAC7C,MAAM,EAAE,SAAS;CACjB,MAAM,cAAc,MAAM,aACvB,SAAS;EACR,IAAI,MAAM,yBAAyB,SAAS,WAAW,SAAS,GAAG;GACjE,MAAM,QAAQ,KAAK;EACrB,OAAO;GACL,qBAAqB,IAAI;EAC3B;CACF,GACA;EAAC,MAAM;EAAuB,WAAW;EAAQ;EAAsB,MAAM;CAAO,CACtF;CACA,IAAI,QAAQ,IAAI,aAAa,eAAe;EAC1C,IAAI,mBAAmB,WAAW,WAAW,MAAM,MAAM;GACvD,IAAI,OAAO,MAAM,UAAU;IACzB,IAAI,MAAM,OAAO;KACf,OAAO;IACT;IACA,IAAI,EAAE,SAAS,GAAG,GAAG;KACnB,MAAM,IAAI,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;KAC/B,OAAO,IAAI,KAAK,IAAI;IACtB;IACA,OAAO;GACT;GACA,OAAO,OAAO,MAAM,YAAY,IAAI;EACtC,CAAC,GAAG;GACF,QAAQ,KACN,oJACF;EACF;EACA,IAAI,mBAAmB,WAAW,WAAW,QAAQ,KAAK,IAAI,GAAG;GAC/D,QAAQ,KACN,uGACF;EACF;EACA,IAAI,mBAAmB,UAAU,WAAW,YAAY,MAAM,wBAAwB,IAAI,MAAM,WAAW,OAAO,QAAQ;GACxH,QAAQ,KACN,iFACF;EACF;EACA,IAAI,mBAAmB,cAAc,WAAW,MAAM,MAAM,OAAO,MAAM,YAAY,IAAI,CAAC,GAAG;GAC3F,QAAQ,KACN,wGACF;EACF;EACA,IAAI,mBAAmB,aAAa,WAAW,MAAM,MAAM,OAAO,MAAM,YAAY,IAAI,KAAK,IAAI,GAAG,GAAG;GACrG,QAAQ,KACN,gHACF;EACF;CACF;CACA,IAAI,QAAQ,MAAM,yBAAyB,aAAa,WAAW,SAAS,GAAG;EAC7E,qBAAqB,CAAC;CACxB;CACA,MAAM,wBAAwB,QAAQ,WAAW;CACjD,MAAM,gBAAgB;EACpB,IAAI,uBAAuB;GACzB,YAAY,CAAC;EACf;CACF,GAAG,CAAC,aAAa,qBAAqB,CAAC;CACvC,OAAO;EACL,OAAO,CAAC,CAAC,MAAM;EACf,MAAM,MAAM;EACZ,SAAS,MAAM;EACf,QAAQ,CAAC,CAAC,MAAM;EAChB;EACA;EACA;EACA;EACA;EACA,uBAAuB,MAAM,yBAAyB;EACtD,uBAAuB,MAAM,yBAAyB;EACtD,OAAO,MAAM,SAAS;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}