@lodev09/react-native-true-sheet 4.0.0-beta.0 → 4.0.0-beta.2

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 (388) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +42 -31
  3. package/RNTrueSheet.podspec +10 -2
  4. package/android/build.gradle +2 -1
  5. package/android/src/main/java/com/lodev09/truesheet/TrueSheetContainerView.kt +174 -49
  6. package/android/src/main/java/com/lodev09/truesheet/TrueSheetContainerViewManager.kt +7 -0
  7. package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentView.kt +371 -18
  8. package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentViewManager.kt +14 -0
  9. package/android/src/main/java/com/lodev09/truesheet/TrueSheetFooterView.kt +156 -21
  10. package/android/src/main/java/com/lodev09/truesheet/TrueSheetFooterViewManager.kt +14 -0
  11. package/android/src/main/java/com/lodev09/truesheet/TrueSheetHeaderView.kt +38 -0
  12. package/android/src/main/java/com/lodev09/truesheet/TrueSheetHeaderViewManager.kt +28 -0
  13. package/android/src/main/java/com/lodev09/truesheet/TrueSheetModule.kt +84 -24
  14. package/android/src/main/java/com/lodev09/truesheet/TrueSheetPackage.kt +5 -4
  15. package/android/src/main/java/com/lodev09/truesheet/TrueSheetPeekView.kt +72 -0
  16. package/android/src/main/java/com/lodev09/truesheet/TrueSheetPeekViewManager.kt +33 -0
  17. package/android/src/main/java/com/lodev09/truesheet/TrueSheetStateUpdater.kt +45 -0
  18. package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +526 -231
  19. package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +1224 -603
  20. package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewManager.kt +136 -29
  21. package/android/src/main/java/com/lodev09/truesheet/core/RNScreensEventObserver.kt +63 -0
  22. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetBottomSheetBehavior.kt +36 -0
  23. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetBottomSheetView.kt +255 -0
  24. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetCoordinatorLayout.kt +303 -0
  25. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetDetentCalculator.kt +277 -0
  26. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetDimView.kt +162 -0
  27. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetGrabberView.kt +180 -0
  28. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetKeyboardObserver.kt +207 -0
  29. package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetStackManager.kt +220 -0
  30. package/android/src/main/java/com/lodev09/truesheet/events/TrueSheetDragEvents.kt +71 -0
  31. package/android/src/main/java/com/lodev09/truesheet/events/TrueSheetFocusEvents.kt +65 -0
  32. package/android/src/main/java/com/lodev09/truesheet/events/TrueSheetLifecycleEvents.kt +112 -0
  33. package/android/src/main/java/com/lodev09/truesheet/events/TrueSheetStateEvents.kt +56 -0
  34. package/android/src/main/java/com/lodev09/truesheet/utils/KeyboardUtils.kt +84 -0
  35. package/android/src/main/java/com/lodev09/truesheet/utils/ScreenUtils.kt +93 -67
  36. package/android/src/main/java/com/lodev09/truesheet/utils/TouchEventDeduper.kt +31 -0
  37. package/android/src/main/java/com/lodev09/truesheet/utils/ViewUtils.kt +30 -0
  38. package/android/src/main/jni/CMakeLists.txt +63 -0
  39. package/android/src/main/jni/TrueSheetSpec.h +19 -0
  40. package/android/src/main/jni/TrueSheetStateUpdater.cpp +96 -0
  41. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewComponentDescriptor.h +24 -0
  42. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewShadowNode.cpp +43 -0
  43. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewShadowNode.h +28 -0
  44. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewState.cpp +11 -0
  45. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewState.h +37 -0
  46. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetFooterViewComponentDescriptor.h +24 -0
  47. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetFooterViewShadowNode.cpp +56 -0
  48. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetFooterViewShadowNode.h +28 -0
  49. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetFooterViewState.cpp +11 -0
  50. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetFooterViewState.h +41 -0
  51. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetInsets.cpp +18 -0
  52. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetInsets.h +16 -0
  53. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetViewComponentDescriptor.h +28 -0
  54. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetViewShadowNode.cpp +61 -0
  55. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetViewShadowNode.h +45 -0
  56. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetViewState.cpp +23 -0
  57. package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetViewState.h +52 -0
  58. package/ios/TrueSheetContainerView.h +81 -6
  59. package/ios/TrueSheetContainerView.mm +275 -21
  60. package/ios/TrueSheetContentView.h +38 -1
  61. package/ios/TrueSheetContentView.mm +413 -43
  62. package/ios/TrueSheetFooterView.h +27 -2
  63. package/ios/TrueSheetFooterView.mm +141 -35
  64. package/ios/{events/OnDidDismissEvent.h → TrueSheetHeaderView.h} +10 -7
  65. package/ios/TrueSheetHeaderView.mm +64 -0
  66. package/ios/TrueSheetModule.mm +92 -5
  67. package/ios/TrueSheetPeekView.h +32 -0
  68. package/ios/TrueSheetPeekView.mm +99 -0
  69. package/ios/TrueSheetView.h +7 -15
  70. package/ios/TrueSheetView.mm +633 -215
  71. package/ios/TrueSheetViewController.h +84 -16
  72. package/ios/TrueSheetViewController.mm +1133 -333
  73. package/ios/core/RNScreensEventObserver.h +46 -0
  74. package/ios/core/RNScreensEventObserver.mm +280 -0
  75. package/ios/core/TrueSheetBlurView.h +27 -0
  76. package/ios/core/TrueSheetBlurView.mm +82 -0
  77. package/ios/core/TrueSheetDetentCalculator.h +107 -0
  78. package/ios/core/TrueSheetDetentCalculator.mm +197 -0
  79. package/ios/core/TrueSheetGrabberView.h +72 -0
  80. package/ios/core/TrueSheetGrabberView.mm +178 -0
  81. package/ios/core/TrueSheetKeyboardObserver.h +39 -0
  82. package/ios/core/TrueSheetKeyboardObserver.mm +112 -0
  83. package/ios/events/TrueSheetDragEvents.h +39 -0
  84. package/ios/events/TrueSheetDragEvents.mm +62 -0
  85. package/ios/events/{OnPositionChangeEvent.h → TrueSheetFocusEvents.h} +8 -5
  86. package/ios/events/TrueSheetFocusEvents.mm +49 -0
  87. package/ios/events/TrueSheetLifecycleEvents.h +40 -0
  88. package/ios/events/TrueSheetLifecycleEvents.mm +71 -0
  89. package/ios/events/TrueSheetStateEvents.h +35 -0
  90. package/ios/events/TrueSheetStateEvents.mm +49 -0
  91. package/ios/tvos/TrueSheetStubs.mm +154 -0
  92. package/ios/{events/OnMountEvent.h → utils/BlurUtil.h} +5 -7
  93. package/ios/utils/BlurUtil.mm +69 -0
  94. package/ios/utils/GestureUtil.h +7 -0
  95. package/ios/utils/GestureUtil.mm +12 -0
  96. package/ios/utils/PlatformUtil.h +15 -0
  97. package/ios/utils/UIView+FirstResponder.h +15 -0
  98. package/ios/utils/UIView+FirstResponder.mm +26 -0
  99. package/ios/{events/OnWillDismissEvent.h → utils/UIView+ScrollEdgeInteraction.h} +6 -7
  100. package/ios/utils/UIView+ScrollEdgeInteraction.mm +62 -0
  101. package/ios/utils/WindowUtil.mm +17 -1
  102. package/lib/module/TrueSheet.js +230 -64
  103. package/lib/module/TrueSheet.js.map +1 -1
  104. package/lib/module/TrueSheet.web.js +1203 -0
  105. package/lib/module/TrueSheet.web.js.map +1 -0
  106. package/lib/module/TrueSheetPeek.js +15 -0
  107. package/lib/module/TrueSheetPeek.js.map +1 -0
  108. package/lib/module/TrueSheetPeek.web.js +55 -0
  109. package/lib/module/TrueSheetPeek.web.js.map +1 -0
  110. package/lib/module/TrueSheetProvider.js +28 -0
  111. package/lib/module/TrueSheetProvider.js.map +1 -0
  112. package/lib/module/TrueSheetProvider.web.js +157 -0
  113. package/lib/module/TrueSheetProvider.web.js.map +1 -0
  114. package/lib/module/fabric/TrueSheetContainerViewNativeComponent.ts +1 -1
  115. package/lib/module/fabric/TrueSheetContentViewNativeComponent.ts +5 -1
  116. package/lib/module/fabric/TrueSheetFooterViewNativeComponent.ts +10 -2
  117. package/lib/module/fabric/TrueSheetHeaderViewNativeComponent.ts +8 -0
  118. package/lib/module/fabric/TrueSheetPeekViewNativeComponent.ts +8 -0
  119. package/lib/module/fabric/TrueSheetViewNativeComponent.ts +105 -18
  120. package/lib/module/index.js +3 -3
  121. package/lib/module/index.js.map +1 -1
  122. package/lib/module/mocks/index.js +93 -0
  123. package/lib/module/mocks/index.js.map +1 -0
  124. package/lib/module/mocks/navigation.js +95 -0
  125. package/lib/module/mocks/navigation.js.map +1 -0
  126. package/lib/module/mocks/navigationExpoRouter.js +21 -0
  127. package/lib/module/mocks/navigationExpoRouter.js.map +1 -0
  128. package/lib/module/mocks/reanimated.js +91 -0
  129. package/lib/module/mocks/reanimated.js.map +1 -0
  130. package/lib/module/navigation/TrueSheetNavigatorContent.js +73 -0
  131. package/lib/module/navigation/TrueSheetNavigatorContent.js.map +1 -0
  132. package/lib/module/navigation/actions.js +50 -0
  133. package/lib/module/navigation/actions.js.map +1 -0
  134. package/lib/module/navigation/createTrueSheetRouter.js +166 -0
  135. package/lib/module/navigation/createTrueSheetRouter.js.map +1 -0
  136. package/lib/module/navigation/expo-router/index.js +48 -0
  137. package/lib/module/navigation/expo-router/index.js.map +1 -0
  138. package/lib/module/navigation/index.js +47 -0
  139. package/lib/module/navigation/index.js.map +1 -0
  140. package/lib/module/navigation/navigator.js +10 -0
  141. package/lib/module/navigation/navigator.js.map +1 -0
  142. package/lib/module/navigation/screen/ReanimatedTrueSheetScreen.js +56 -0
  143. package/lib/module/navigation/screen/ReanimatedTrueSheetScreen.js.map +1 -0
  144. package/lib/module/navigation/screen/TrueSheetScreen.js +49 -0
  145. package/lib/module/navigation/screen/TrueSheetScreen.js.map +1 -0
  146. package/lib/module/navigation/screen/index.js +5 -0
  147. package/lib/module/navigation/screen/index.js.map +1 -0
  148. package/lib/module/navigation/screen/types.js +4 -0
  149. package/lib/module/navigation/screen/types.js.map +1 -0
  150. package/lib/module/navigation/screen/useSheetScreenState.js +68 -0
  151. package/lib/module/navigation/screen/useSheetScreenState.js.map +1 -0
  152. package/lib/module/navigation/types.js +4 -0
  153. package/lib/module/navigation/types.js.map +1 -0
  154. package/lib/module/navigation/useTrueSheetNavigation.js +24 -0
  155. package/lib/module/navigation/useTrueSheetNavigation.js.map +1 -0
  156. package/lib/module/reanimated/ReanimatedTrueSheet.js +15 -9
  157. package/lib/module/reanimated/ReanimatedTrueSheet.js.map +1 -1
  158. package/lib/module/reanimated/ReanimatedTrueSheet.web.js +81 -0
  159. package/lib/module/reanimated/ReanimatedTrueSheet.web.js.map +1 -0
  160. package/lib/module/reanimated/ReanimatedTrueSheetProvider.js +4 -2
  161. package/lib/module/reanimated/ReanimatedTrueSheetProvider.js.map +1 -1
  162. package/lib/module/reanimated/index.js +2 -2
  163. package/lib/module/reanimated/index.js.map +1 -1
  164. package/lib/module/reanimated/useReanimatedPositionChangeHandler.web.js +20 -0
  165. package/lib/module/reanimated/useReanimatedPositionChangeHandler.web.js.map +1 -0
  166. package/lib/module/specs/NativeTrueSheetModule.js.map +1 -1
  167. package/lib/module/web/constants.js +16 -0
  168. package/lib/module/web/constants.js.map +1 -0
  169. package/lib/module/web/dom.js +10 -0
  170. package/lib/module/web/dom.js.map +1 -0
  171. package/lib/module/web/vaul/README.md +9 -0
  172. package/lib/module/web/vaul/browser.js +30 -0
  173. package/lib/module/web/vaul/browser.js.map +1 -0
  174. package/lib/module/web/vaul/constants.js +15 -0
  175. package/lib/module/web/vaul/constants.js.map +1 -0
  176. package/lib/module/web/vaul/context.js +59 -0
  177. package/lib/module/web/vaul/context.js.map +1 -0
  178. package/lib/module/web/vaul/helpers.js +99 -0
  179. package/lib/module/web/vaul/helpers.js.map +1 -0
  180. package/lib/module/web/vaul/index.js +1309 -0
  181. package/lib/module/web/vaul/index.js.map +1 -0
  182. package/lib/module/web/vaul/style.css +287 -0
  183. package/lib/module/web/vaul/style.css.d.js +2 -0
  184. package/lib/module/web/vaul/style.css.d.js.map +1 -0
  185. package/lib/module/web/vaul/types.js +2 -0
  186. package/lib/module/web/vaul/types.js.map +1 -0
  187. package/lib/module/web/vaul/use-composed-refs.js +34 -0
  188. package/lib/module/web/vaul/use-composed-refs.js.map +1 -0
  189. package/lib/module/web/vaul/use-controllable-state.js +54 -0
  190. package/lib/module/web/vaul/use-controllable-state.js.map +1 -0
  191. package/lib/module/web/vaul/use-position-fixed.js +123 -0
  192. package/lib/module/web/vaul/use-position-fixed.js.map +1 -0
  193. package/lib/module/web/vaul/use-prevent-scroll.js +258 -0
  194. package/lib/module/web/vaul/use-prevent-scroll.js.map +1 -0
  195. package/lib/module/web/vaul/use-scale-background.js +57 -0
  196. package/lib/module/web/vaul/use-scale-background.js.map +1 -0
  197. package/lib/module/web/vaul/use-snap-points.js +305 -0
  198. package/lib/module/web/vaul/use-snap-points.js.map +1 -0
  199. package/lib/typescript/src/TrueSheet.d.ts +51 -14
  200. package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
  201. package/lib/typescript/src/TrueSheet.types.d.ts +463 -54
  202. package/lib/typescript/src/TrueSheet.types.d.ts.map +1 -1
  203. package/lib/typescript/src/TrueSheet.web.d.ts +5 -0
  204. package/lib/typescript/src/TrueSheet.web.d.ts.map +1 -0
  205. package/lib/typescript/src/TrueSheetPeek.d.ts +9 -0
  206. package/lib/typescript/src/TrueSheetPeek.d.ts.map +1 -0
  207. package/lib/typescript/src/TrueSheetPeek.web.d.ts +28 -0
  208. package/lib/typescript/src/TrueSheetPeek.web.d.ts.map +1 -0
  209. package/lib/typescript/src/TrueSheetProvider.d.ts +18 -0
  210. package/lib/typescript/src/TrueSheetProvider.d.ts.map +1 -0
  211. package/lib/typescript/src/TrueSheetProvider.web.d.ts +27 -0
  212. package/lib/typescript/src/TrueSheetProvider.web.d.ts.map +1 -0
  213. package/lib/typescript/src/fabric/TrueSheetContainerViewNativeComponent.d.ts.map +1 -1
  214. package/lib/typescript/src/fabric/TrueSheetContentViewNativeComponent.d.ts.map +1 -1
  215. package/lib/typescript/src/fabric/TrueSheetFooterViewNativeComponent.d.ts +2 -0
  216. package/lib/typescript/src/fabric/TrueSheetFooterViewNativeComponent.d.ts.map +1 -1
  217. package/lib/typescript/src/fabric/TrueSheetHeaderViewNativeComponent.d.ts +6 -0
  218. package/lib/typescript/src/fabric/TrueSheetHeaderViewNativeComponent.d.ts.map +1 -0
  219. package/lib/typescript/src/fabric/TrueSheetPeekViewNativeComponent.d.ts +6 -0
  220. package/lib/typescript/src/fabric/TrueSheetPeekViewNativeComponent.d.ts.map +1 -0
  221. package/lib/typescript/src/fabric/TrueSheetViewNativeComponent.d.ts +67 -16
  222. package/lib/typescript/src/fabric/TrueSheetViewNativeComponent.d.ts.map +1 -1
  223. package/lib/typescript/src/index.d.ts +2 -2
  224. package/lib/typescript/src/index.d.ts.map +1 -1
  225. package/lib/typescript/src/mocks/index.d.ts +43 -0
  226. package/lib/typescript/src/mocks/index.d.ts.map +1 -0
  227. package/lib/typescript/src/mocks/navigation.d.ts +70 -0
  228. package/lib/typescript/src/mocks/navigation.d.ts.map +1 -0
  229. package/lib/typescript/src/mocks/navigationExpoRouter.d.ts +22 -0
  230. package/lib/typescript/src/mocks/navigationExpoRouter.d.ts.map +1 -0
  231. package/lib/typescript/src/mocks/reanimated.d.ts +48 -0
  232. package/lib/typescript/src/mocks/reanimated.d.ts.map +1 -0
  233. package/lib/typescript/src/navigation/TrueSheetNavigatorContent.d.ts +5 -0
  234. package/lib/typescript/src/navigation/TrueSheetNavigatorContent.d.ts.map +1 -0
  235. package/lib/typescript/src/navigation/actions.d.ts +71 -0
  236. package/lib/typescript/src/navigation/actions.d.ts.map +1 -0
  237. package/lib/typescript/src/navigation/createTrueSheetRouter.d.ts +14 -0
  238. package/lib/typescript/src/navigation/createTrueSheetRouter.d.ts.map +1 -0
  239. package/lib/typescript/src/navigation/expo-router/index.d.ts +37 -0
  240. package/lib/typescript/src/navigation/expo-router/index.d.ts.map +1 -0
  241. package/lib/typescript/src/navigation/index.d.ts +46 -0
  242. package/lib/typescript/src/navigation/index.d.ts.map +1 -0
  243. package/lib/typescript/src/navigation/navigator.d.ts +7 -0
  244. package/lib/typescript/src/navigation/navigator.d.ts.map +1 -0
  245. package/lib/typescript/src/navigation/screen/ReanimatedTrueSheetScreen.d.ts +3 -0
  246. package/lib/typescript/src/navigation/screen/ReanimatedTrueSheetScreen.d.ts.map +1 -0
  247. package/lib/typescript/src/navigation/screen/TrueSheetScreen.d.ts +3 -0
  248. package/lib/typescript/src/navigation/screen/TrueSheetScreen.d.ts.map +1 -0
  249. package/lib/typescript/src/navigation/screen/index.d.ts +4 -0
  250. package/lib/typescript/src/navigation/screen/index.d.ts.map +1 -0
  251. package/lib/typescript/src/navigation/screen/types.d.ts +14 -0
  252. package/lib/typescript/src/navigation/screen/types.d.ts.map +1 -0
  253. package/lib/typescript/src/navigation/screen/useSheetScreenState.d.ts +33 -0
  254. package/lib/typescript/src/navigation/screen/useSheetScreenState.d.ts.map +1 -0
  255. package/lib/typescript/src/navigation/types.d.ts +177 -0
  256. package/lib/typescript/src/navigation/types.d.ts.map +1 -0
  257. package/lib/typescript/src/navigation/useTrueSheetNavigation.d.ts +23 -0
  258. package/lib/typescript/src/navigation/useTrueSheetNavigation.d.ts.map +1 -0
  259. package/lib/typescript/src/reanimated/ReanimatedTrueSheet.d.ts.map +1 -1
  260. package/lib/typescript/src/reanimated/ReanimatedTrueSheet.web.d.ts +41 -0
  261. package/lib/typescript/src/reanimated/ReanimatedTrueSheet.web.d.ts.map +1 -0
  262. package/lib/typescript/src/reanimated/ReanimatedTrueSheetProvider.d.ts +8 -2
  263. package/lib/typescript/src/reanimated/ReanimatedTrueSheetProvider.d.ts.map +1 -1
  264. package/lib/typescript/src/reanimated/useReanimatedPositionChangeHandler.web.d.ts +15 -0
  265. package/lib/typescript/src/reanimated/useReanimatedPositionChangeHandler.web.d.ts.map +1 -0
  266. package/lib/typescript/src/specs/NativeTrueSheetModule.d.ts +25 -3
  267. package/lib/typescript/src/specs/NativeTrueSheetModule.d.ts.map +1 -1
  268. package/lib/typescript/src/web/constants.d.ts +14 -0
  269. package/lib/typescript/src/web/constants.d.ts.map +1 -0
  270. package/lib/typescript/src/web/dom.d.ts +7 -0
  271. package/lib/typescript/src/web/dom.d.ts.map +1 -0
  272. package/lib/typescript/src/web/vaul/browser.d.ts +8 -0
  273. package/lib/typescript/src/web/vaul/browser.d.ts.map +1 -0
  274. package/lib/typescript/src/web/vaul/constants.d.ts +13 -0
  275. package/lib/typescript/src/web/vaul/constants.d.ts.map +1 -0
  276. package/lib/typescript/src/web/vaul/context.d.ts +53 -0
  277. package/lib/typescript/src/web/vaul/context.d.ts.map +1 -0
  278. package/lib/typescript/src/web/vaul/helpers.d.ts +17 -0
  279. package/lib/typescript/src/web/vaul/helpers.d.ts.map +1 -0
  280. package/lib/typescript/src/web/vaul/index.d.ts +228 -0
  281. package/lib/typescript/src/web/vaul/index.d.ts.map +1 -0
  282. package/lib/typescript/src/web/vaul/types.d.ts +7 -0
  283. package/lib/typescript/src/web/vaul/types.d.ts.map +1 -0
  284. package/lib/typescript/src/web/vaul/use-composed-refs.d.ts +14 -0
  285. package/lib/typescript/src/web/vaul/use-composed-refs.d.ts.map +1 -0
  286. package/lib/typescript/src/web/vaul/use-controllable-state.d.ts +9 -0
  287. package/lib/typescript/src/web/vaul/use-controllable-state.d.ts.map +1 -0
  288. package/lib/typescript/src/web/vaul/use-position-fixed.d.ts +19 -0
  289. package/lib/typescript/src/web/vaul/use-position-fixed.d.ts.map +1 -0
  290. package/lib/typescript/src/web/vaul/use-prevent-scroll.d.ts +18 -0
  291. package/lib/typescript/src/web/vaul/use-prevent-scroll.d.ts.map +1 -0
  292. package/lib/typescript/src/web/vaul/use-scale-background.d.ts +2 -0
  293. package/lib/typescript/src/web/vaul/use-scale-background.d.ts.map +1 -0
  294. package/lib/typescript/src/web/vaul/use-snap-points.d.ts +38 -0
  295. package/lib/typescript/src/web/vaul/use-snap-points.d.ts.map +1 -0
  296. package/package.json +95 -36
  297. package/react-native.config.js +9 -2
  298. package/src/TrueSheet.tsx +281 -62
  299. package/src/TrueSheet.types.ts +525 -71
  300. package/src/TrueSheet.web.tsx +1362 -0
  301. package/src/TrueSheetPeek.tsx +11 -0
  302. package/src/TrueSheetPeek.web.tsx +64 -0
  303. package/src/TrueSheetProvider.tsx +33 -0
  304. package/src/TrueSheetProvider.web.tsx +220 -0
  305. package/src/fabric/TrueSheetContainerViewNativeComponent.ts +1 -1
  306. package/src/fabric/TrueSheetContentViewNativeComponent.ts +5 -1
  307. package/src/fabric/TrueSheetFooterViewNativeComponent.ts +10 -2
  308. package/src/fabric/TrueSheetHeaderViewNativeComponent.ts +8 -0
  309. package/src/fabric/TrueSheetPeekViewNativeComponent.ts +8 -0
  310. package/src/fabric/TrueSheetViewNativeComponent.ts +105 -18
  311. package/src/index.ts +2 -2
  312. package/src/mocks/index.ts +89 -0
  313. package/src/mocks/navigation.ts +79 -0
  314. package/src/mocks/navigationExpoRouter.ts +40 -0
  315. package/src/mocks/reanimated.ts +100 -0
  316. package/src/navigation/TrueSheetNavigatorContent.tsx +106 -0
  317. package/src/navigation/actions.ts +78 -0
  318. package/src/navigation/createTrueSheetRouter.ts +222 -0
  319. package/src/navigation/expo-router/index.ts +89 -0
  320. package/src/navigation/index.ts +81 -0
  321. package/src/navigation/navigator.ts +18 -0
  322. package/src/navigation/screen/ReanimatedTrueSheetScreen.tsx +61 -0
  323. package/src/navigation/screen/TrueSheetScreen.tsx +54 -0
  324. package/src/navigation/screen/index.ts +3 -0
  325. package/src/navigation/screen/types.ts +19 -0
  326. package/src/navigation/screen/useSheetScreenState.ts +100 -0
  327. package/src/navigation/types.ts +251 -0
  328. package/src/navigation/useTrueSheetNavigation.ts +26 -0
  329. package/src/reanimated/ReanimatedTrueSheet.tsx +12 -7
  330. package/src/reanimated/ReanimatedTrueSheet.web.tsx +75 -0
  331. package/src/reanimated/ReanimatedTrueSheetProvider.tsx +12 -8
  332. package/src/reanimated/useReanimatedPositionChangeHandler.web.ts +31 -0
  333. package/src/specs/NativeTrueSheetModule.ts +28 -3
  334. package/src/web/constants.ts +13 -0
  335. package/src/web/dom.ts +9 -0
  336. package/src/web/vaul/README.md +9 -0
  337. package/src/web/vaul/browser.ts +38 -0
  338. package/src/web/vaul/constants.ts +20 -0
  339. package/src/web/vaul/context.ts +101 -0
  340. package/src/web/vaul/helpers.ts +131 -0
  341. package/src/web/vaul/index.tsx +1740 -0
  342. package/src/web/vaul/style.css +287 -0
  343. package/src/web/vaul/style.css.d.ts +1 -0
  344. package/src/web/vaul/types.ts +7 -0
  345. package/src/web/vaul/use-composed-refs.ts +35 -0
  346. package/src/web/vaul/use-controllable-state.ts +66 -0
  347. package/src/web/vaul/use-position-fixed.ts +147 -0
  348. package/src/web/vaul/use-prevent-scroll.ts +309 -0
  349. package/src/web/vaul/use-scale-background.ts +64 -0
  350. package/src/web/vaul/use-snap-points.ts +455 -0
  351. package/android/src/main/java/com/lodev09/truesheet/events/DetentChangeEvent.kt +0 -26
  352. package/android/src/main/java/com/lodev09/truesheet/events/DidDismissEvent.kt +0 -20
  353. package/android/src/main/java/com/lodev09/truesheet/events/DidPresentEvent.kt +0 -26
  354. package/android/src/main/java/com/lodev09/truesheet/events/DragBeginEvent.kt +0 -26
  355. package/android/src/main/java/com/lodev09/truesheet/events/DragChangeEvent.kt +0 -26
  356. package/android/src/main/java/com/lodev09/truesheet/events/DragEndEvent.kt +0 -26
  357. package/android/src/main/java/com/lodev09/truesheet/events/MountEvent.kt +0 -20
  358. package/android/src/main/java/com/lodev09/truesheet/events/PositionChangeEvent.kt +0 -32
  359. package/android/src/main/java/com/lodev09/truesheet/events/SizeChangeEvent.kt +0 -27
  360. package/android/src/main/java/com/lodev09/truesheet/events/WillDismissEvent.kt +0 -20
  361. package/android/src/main/java/com/lodev09/truesheet/events/WillPresentEvent.kt +0 -26
  362. package/android/src/main/res/values/styles.xml +0 -8
  363. package/ios/events/OnDetentChangeEvent.h +0 -28
  364. package/ios/events/OnDetentChangeEvent.mm +0 -30
  365. package/ios/events/OnDidDismissEvent.mm +0 -25
  366. package/ios/events/OnDidPresentEvent.h +0 -28
  367. package/ios/events/OnDidPresentEvent.mm +0 -30
  368. package/ios/events/OnDragBeginEvent.h +0 -28
  369. package/ios/events/OnDragBeginEvent.mm +0 -30
  370. package/ios/events/OnDragChangeEvent.h +0 -28
  371. package/ios/events/OnDragChangeEvent.mm +0 -30
  372. package/ios/events/OnDragEndEvent.h +0 -28
  373. package/ios/events/OnDragEndEvent.mm +0 -30
  374. package/ios/events/OnMountEvent.mm +0 -25
  375. package/ios/events/OnPositionChangeEvent.mm +0 -32
  376. package/ios/events/OnSizeChangeEvent.h +0 -28
  377. package/ios/events/OnSizeChangeEvent.mm +0 -30
  378. package/ios/events/OnWillDismissEvent.mm +0 -25
  379. package/ios/events/OnWillPresentEvent.h +0 -28
  380. package/ios/events/OnWillPresentEvent.mm +0 -30
  381. package/ios/utils/LayoutUtil.h +0 -44
  382. package/ios/utils/LayoutUtil.mm +0 -50
  383. package/lib/module/TrueSheetGrabber.js +0 -51
  384. package/lib/module/TrueSheetGrabber.js.map +0 -1
  385. package/lib/typescript/src/TrueSheetGrabber.d.ts +0 -39
  386. package/lib/typescript/src/TrueSheetGrabber.d.ts.map +0 -1
  387. package/src/TrueSheetGrabber.tsx +0 -82
  388. package/src/__mocks__/index.js +0 -67
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ import React, { createElement, isValidElement } from 'react';
4
+ import { View } from 'react-native';
5
+ /**
6
+ * Mock TrueSheet component for testing.
7
+ * Import from '@lodev09/react-native-true-sheet/mock' in your test setup.
8
+ */
9
+ export class TrueSheet extends React.Component {
10
+ static instances = {};
11
+ static dismiss = jest.fn((_name, _animated) => Promise.resolve());
12
+ static dismissStack = jest.fn((_name, _animated) => Promise.resolve());
13
+ static present = jest.fn((_name, _index, _animated) => Promise.resolve());
14
+ static resize = jest.fn((_name, _index) => Promise.resolve());
15
+ static dismissAll = jest.fn(_animated => Promise.resolve());
16
+ dismiss = jest.fn(_animated => Promise.resolve());
17
+ dismissStack = jest.fn(_animated => Promise.resolve());
18
+ present = jest.fn((_index, _animated) => Promise.resolve());
19
+ resize = jest.fn(_index => Promise.resolve());
20
+ componentDidMount() {
21
+ const {
22
+ name
23
+ } = this.props;
24
+ if (name) {
25
+ TrueSheet.instances[name] = this;
26
+ }
27
+ }
28
+ componentWillUnmount() {
29
+ const {
30
+ name
31
+ } = this.props;
32
+ if (name) {
33
+ delete TrueSheet.instances[name];
34
+ }
35
+ }
36
+ renderHeader() {
37
+ const {
38
+ header
39
+ } = this.props;
40
+ if (!header) return null;
41
+ return /*#__PURE__*/isValidElement(header) ? header : /*#__PURE__*/createElement(header);
42
+ }
43
+ renderFooter() {
44
+ const {
45
+ footer
46
+ } = this.props;
47
+ if (!footer) return null;
48
+ return /*#__PURE__*/isValidElement(footer) ? footer : /*#__PURE__*/createElement(footer);
49
+ }
50
+ render() {
51
+ const {
52
+ children,
53
+ style
54
+ } = this.props;
55
+ return /*#__PURE__*/React.createElement(View, {
56
+ style
57
+ }, this.renderHeader(), children, this.renderFooter());
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Mock TrueSheetPeek component for testing.
63
+ */
64
+ export function TrueSheetPeek({
65
+ children,
66
+ ...rest
67
+ }) {
68
+ return /*#__PURE__*/React.createElement(View, rest, children);
69
+ }
70
+
71
+ /**
72
+ * Mock TrueSheetProvider for testing.
73
+ */
74
+ export function TrueSheetProvider({
75
+ children
76
+ }) {
77
+ return children;
78
+ }
79
+
80
+ /**
81
+ * Mock useTrueSheet hook for testing.
82
+ */
83
+ export function useTrueSheet() {
84
+ return {
85
+ present: TrueSheet.present,
86
+ dismiss: TrueSheet.dismiss,
87
+ dismissStack: TrueSheet.dismissStack,
88
+ resize: TrueSheet.resize,
89
+ dismissAll: TrueSheet.dismissAll
90
+ };
91
+ }
92
+ export * from "../TrueSheet.types.js";
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createElement","isValidElement","View","TrueSheet","Component","instances","dismiss","jest","fn","_name","_animated","Promise","resolve","dismissStack","present","_index","resize","dismissAll","componentDidMount","name","props","componentWillUnmount","renderHeader","header","renderFooter","footer","render","children","style","TrueSheetPeek","rest","TrueSheetProvider","useTrueSheet"],"sourceRoot":"../../../src","sources":["mocks/index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Mock createTrueSheetNavigator for testing.
5
+ * Import from '@lodev09/react-native-true-sheet/navigation/mock' in your test setup.
6
+ */
7
+ export const createTrueSheetNavigator = jest.fn(() => ({
8
+ Navigator: jest.fn(({
9
+ children
10
+ }) => children),
11
+ Screen: jest.fn(() => null),
12
+ Group: jest.fn(() => null)
13
+ }));
14
+
15
+ /**
16
+ * Mock createTrueSheetScreen for testing the static API.
17
+ */
18
+ export const createTrueSheetScreen = jest.fn(config => config);
19
+
20
+ /**
21
+ * Mock TrueSheetActions for testing.
22
+ */
23
+ export const TrueSheetActions = {
24
+ push: jest.fn((name, params) => ({
25
+ type: 'PUSH',
26
+ payload: {
27
+ name,
28
+ params
29
+ }
30
+ })),
31
+ pop: jest.fn(count => ({
32
+ type: 'POP',
33
+ payload: {
34
+ count
35
+ }
36
+ })),
37
+ popTo: jest.fn((name, params) => ({
38
+ type: 'POP_TO',
39
+ payload: {
40
+ name,
41
+ params
42
+ }
43
+ })),
44
+ popToTop: jest.fn(() => ({
45
+ type: 'POP_TO_TOP'
46
+ })),
47
+ replace: jest.fn((name, params) => ({
48
+ type: 'REPLACE',
49
+ payload: {
50
+ name,
51
+ params
52
+ }
53
+ })),
54
+ resize: jest.fn(index => ({
55
+ type: 'RESIZE',
56
+ index
57
+ })),
58
+ dismiss: jest.fn(() => ({
59
+ type: 'DISMISS'
60
+ })),
61
+ remove: jest.fn(() => ({
62
+ type: 'REMOVE'
63
+ }))
64
+ };
65
+
66
+ /**
67
+ * Mock useTrueSheetNavigation hook for testing.
68
+ */
69
+ export const useTrueSheetNavigation = jest.fn(() => {
70
+ // Partial drops react-navigation's private-brand member (PrivateValueStore),
71
+ // which no mock can implement — the members themselves stay type-checked.
72
+ const navigation = {
73
+ navigate: jest.fn(),
74
+ goBack: jest.fn(),
75
+ reset: jest.fn(),
76
+ setParams: jest.fn(),
77
+ dispatch: jest.fn(),
78
+ isFocused: jest.fn(() => true),
79
+ canGoBack: jest.fn(() => true),
80
+ getId: jest.fn(),
81
+ getParent: jest.fn(),
82
+ getState: jest.fn(),
83
+ addListener: jest.fn(() => jest.fn()),
84
+ removeListener: jest.fn(),
85
+ setOptions: jest.fn(),
86
+ push: jest.fn(),
87
+ pop: jest.fn(),
88
+ popTo: jest.fn(),
89
+ popToTop: jest.fn(),
90
+ replace: jest.fn(),
91
+ resize: jest.fn()
92
+ };
93
+ return navigation;
94
+ });
95
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createTrueSheetNavigator","jest","fn","Navigator","children","Screen","Group","createTrueSheetScreen","config","TrueSheetActions","push","name","params","type","payload","pop","count","popTo","popToTop","replace","resize","index","dismiss","remove","useTrueSheetNavigation","navigation","navigate","goBack","reset","setParams","dispatch","isFocused","canGoBack","getId","getParent","getState","addListener","removeListener","setOptions"],"sourceRoot":"../../../src","sources":["mocks/navigation.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ import { TrueSheetActions, useTrueSheetNavigation as useTrueSheetNavigationMock } from "./navigation.js";
4
+
5
+ /**
6
+ * Mock Sheet layout for testing.
7
+ * Import from '@lodev09/react-native-true-sheet/navigation/expo-router/mock' in your test setup.
8
+ */
9
+ export const Sheet = Object.assign(jest.fn(({
10
+ children
11
+ }) => children), {
12
+ Screen: jest.fn(() => null),
13
+ Protected: jest.fn(() => null)
14
+ });
15
+
16
+ /**
17
+ * Mock useTrueSheetNavigation hook for testing.
18
+ */
19
+ export const useTrueSheetNavigation = jest.fn(() => useTrueSheetNavigationMock());
20
+ export { TrueSheetActions };
21
+ //# sourceMappingURL=navigationExpoRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TrueSheetActions","useTrueSheetNavigation","useTrueSheetNavigationMock","Sheet","Object","assign","jest","fn","children","Screen","Protected"],"sourceRoot":"../../../src","sources":["mocks/navigationExpoRouter.ts"],"mappings":";;AAGA,SACEA,gBAAgB,EAChBC,sBAAsB,IAAIC,0BAA0B,QAC/C,iBAAc;;AAErB;AACA;AACA;AACA;AACA,OAAO,MAAMC,KAAK,GAAGC,MAAM,CAACC,MAAM,CAChCC,IAAI,CAACC,EAAE,CAAC,CAAC;EAAEC;AAAwC,CAAC,KAAKA,QAAQ,CAAC,EAClE;EACEC,MAAM,EAAEH,IAAI,CAACC,EAAE,CAAC,MAAM,IAAI,CAAC;EAC3BG,SAAS,EAAEJ,IAAI,CAACC,EAAE,CAAC,MAAM,IAAI;AAC/B,CACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMN,sBAAsB,GAAGK,IAAI,CAACC,EAAE,CAC3C,MACEL,0BAA0B,CAAC,CAC/B,CAAC;AAED,SAASF,gBAAgB","ignoreList":[]}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ import React, { createElement, isValidElement } from 'react';
4
+ import { View } from 'react-native';
5
+ const createMockSharedValue = initialValue => ({
6
+ value: initialValue,
7
+ get: () => initialValue,
8
+ set: () => {},
9
+ addListener: () => {},
10
+ removeListener: () => {},
11
+ modify: () => {}
12
+ });
13
+
14
+ /**
15
+ * Mock ReanimatedTrueSheet component for testing.
16
+ * Import from '@lodev09/react-native-true-sheet/reanimated/mock' in your test setup.
17
+ */
18
+ export class ReanimatedTrueSheet extends React.Component {
19
+ static instances = {};
20
+ static dismiss = jest.fn((_name, _animated) => Promise.resolve());
21
+ static dismissStack = jest.fn((_name, _animated) => Promise.resolve());
22
+ static present = jest.fn((_name, _index, _animated) => Promise.resolve());
23
+ static resize = jest.fn((_name, _index) => Promise.resolve());
24
+ dismiss = jest.fn(_animated => Promise.resolve());
25
+ dismissStack = jest.fn(_animated => Promise.resolve());
26
+ present = jest.fn((_index, _animated) => Promise.resolve());
27
+ resize = jest.fn(_index => Promise.resolve());
28
+ componentDidMount() {
29
+ const {
30
+ name
31
+ } = this.props;
32
+ if (name) {
33
+ ReanimatedTrueSheet.instances[name] = this;
34
+ }
35
+ }
36
+ componentWillUnmount() {
37
+ const {
38
+ name
39
+ } = this.props;
40
+ if (name) {
41
+ delete ReanimatedTrueSheet.instances[name];
42
+ }
43
+ }
44
+ renderHeader() {
45
+ const {
46
+ header
47
+ } = this.props;
48
+ if (!header) return null;
49
+ return /*#__PURE__*/isValidElement(header) ? header : /*#__PURE__*/createElement(header);
50
+ }
51
+ renderFooter() {
52
+ const {
53
+ footer
54
+ } = this.props;
55
+ if (!footer) return null;
56
+ return /*#__PURE__*/isValidElement(footer) ? footer : /*#__PURE__*/createElement(footer);
57
+ }
58
+ render() {
59
+ const {
60
+ children,
61
+ style
62
+ } = this.props;
63
+ return /*#__PURE__*/React.createElement(View, {
64
+ style
65
+ }, this.renderHeader(), children, this.renderFooter());
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Mock ReanimatedTrueSheetProvider for testing.
71
+ */
72
+ export function ReanimatedTrueSheetProvider({
73
+ children
74
+ }) {
75
+ return children;
76
+ }
77
+
78
+ /**
79
+ * Mock useReanimatedTrueSheet hook for testing.
80
+ */
81
+ export const useReanimatedTrueSheet = jest.fn(() => ({
82
+ animatedPosition: createMockSharedValue(0),
83
+ animatedIndex: createMockSharedValue(-1),
84
+ animatedDetent: createMockSharedValue(0)
85
+ }));
86
+
87
+ /**
88
+ * Mock useReanimatedPositionChangeHandler hook for testing.
89
+ */
90
+ export const useReanimatedPositionChangeHandler = jest.fn((_handler, _dependencies) => jest.fn());
91
+ //# sourceMappingURL=reanimated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createElement","isValidElement","View","createMockSharedValue","initialValue","value","get","set","addListener","removeListener","modify","ReanimatedTrueSheet","Component","instances","dismiss","jest","fn","_name","_animated","Promise","resolve","dismissStack","present","_index","resize","componentDidMount","name","props","componentWillUnmount","renderHeader","header","renderFooter","footer","render","children","style","ReanimatedTrueSheetProvider","useReanimatedTrueSheet","animatedPosition","animatedIndex","animatedDetent","useReanimatedPositionChangeHandler","_handler","_dependencies"],"sourceRoot":"../../../src","sources":["mocks/reanimated.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ import { TrueSheetScreen } from "./screen/index.js";
4
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
5
+ let ReanimatedTrueSheetScreen = null;
6
+ const getReanimatedScreen = () => {
7
+ if (!ReanimatedTrueSheetScreen) {
8
+ ReanimatedTrueSheetScreen = require('./screen/ReanimatedTrueSheetScreen').ReanimatedTrueSheetScreen;
9
+ }
10
+ return ReanimatedTrueSheetScreen;
11
+ };
12
+ const DEFAULT_DETENTS = ['auto'];
13
+ const clampDetentIndex = (index, detentsLength) => Math.min(index, Math.max(detentsLength - 1, 0));
14
+ export const TrueSheetNavigatorContent = ({
15
+ routes,
16
+ dispatch,
17
+ descriptors,
18
+ emitter
19
+ }) => {
20
+ // First route is the base screen, rest are sheets.
21
+ // Rendered from the raw routes (not the standard state) so custom fields are
22
+ // available and preloaded routes never present as sheets.
23
+ const [baseRoute, ...sheetRoutes] = routes;
24
+ const baseDescriptor = baseRoute ? descriptors[baseRoute.key] : null;
25
+ return /*#__PURE__*/_jsxs(_Fragment, {
26
+ children: [baseDescriptor?.render(), sheetRoutes.map(route => {
27
+ const descriptor = descriptors[route.key];
28
+ if (!descriptor) {
29
+ return null;
30
+ }
31
+ const {
32
+ options,
33
+ render
34
+ } = descriptor;
35
+ const {
36
+ detentIndex = 0,
37
+ detents = DEFAULT_DETENTS,
38
+ reanimated,
39
+ positionChangeHandler,
40
+ ...sheetProps
41
+ } = options;
42
+ const resolvedIndex = clampDetentIndex(route.resizeIndex ?? detentIndex, detents.length);
43
+ if (reanimated) {
44
+ const ReanimatedScreen = getReanimatedScreen();
45
+ return /*#__PURE__*/_jsx(ReanimatedScreen, {
46
+ routeKey: route.key,
47
+ closing: route.closing,
48
+ detentIndex: resolvedIndex,
49
+ resizeKey: route.resizeKey,
50
+ detents: detents,
51
+ dispatch: dispatch,
52
+ emit: emitter.emit,
53
+ positionChangeHandler: positionChangeHandler,
54
+ ...sheetProps,
55
+ children: render()
56
+ }, route.key);
57
+ }
58
+ return /*#__PURE__*/_jsx(TrueSheetScreen, {
59
+ routeKey: route.key,
60
+ closing: route.closing,
61
+ detentIndex: resolvedIndex,
62
+ resizeKey: route.resizeKey,
63
+ detents: detents,
64
+ dispatch: dispatch,
65
+ emit: emitter.emit,
66
+ positionChangeHandler: positionChangeHandler,
67
+ ...sheetProps,
68
+ children: render()
69
+ }, route.key);
70
+ })]
71
+ });
72
+ };
73
+ //# sourceMappingURL=TrueSheetNavigatorContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TrueSheetScreen","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ReanimatedTrueSheetScreen","getReanimatedScreen","require","DEFAULT_DETENTS","clampDetentIndex","index","detentsLength","Math","min","max","TrueSheetNavigatorContent","routes","dispatch","descriptors","emitter","baseRoute","sheetRoutes","baseDescriptor","key","children","render","map","route","descriptor","options","detentIndex","detents","reanimated","positionChangeHandler","sheetProps","resolvedIndex","resizeIndex","length","ReanimatedScreen","routeKey","closing","resizeKey","emit"],"sourceRoot":"../../../src","sources":["navigation/TrueSheetNavigatorContent.tsx"],"mappings":";;AAOA,SAASA,eAAe,QAAmC,mBAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAEtE,IAAIC,yBAA2E,GAAG,IAAI;AAEtF,MAAMC,mBAAmB,GAAGA,CAAA,KAAiD;EAC3E,IAAI,CAACD,yBAAyB,EAAE;IAC9BA,yBAAyB,GACvBE,OAAO,CAAC,oCAAoC,CAAC,CAACF,yBAAyB;EAC3E;EACA,OAAOA,yBAAyB;AAClC,CAAC;AAED,MAAMG,eAAoC,GAAG,CAAC,MAAM,CAAC;AAErD,MAAMC,gBAAgB,GAAGA,CAACC,KAAa,EAAEC,aAAqB,KAC5DC,IAAI,CAACC,GAAG,CAACH,KAAK,EAAEE,IAAI,CAACE,GAAG,CAACH,aAAa,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAQjD,OAAO,MAAMI,yBAAyB,GAAGA,CAAC;EACxCC,MAAM;EACNC,QAAQ;EACRC,WAAW;EACXC;AAC8B,CAAC,KAAK;EACpC;EACA;EACA;EACA,MAAM,CAACC,SAAS,EAAE,GAAGC,WAAW,CAAC,GAAGL,MAAM;EAE1C,MAAMM,cAAc,GAAGF,SAAS,GAAGF,WAAW,CAACE,SAAS,CAACG,GAAG,CAAC,GAAG,IAAI;EAEpE,oBACEnB,KAAA,CAAAF,SAAA;IAAAsB,QAAA,GAEGF,cAAc,EAAEG,MAAM,CAAC,CAAC,EAGxBJ,WAAW,CAACK,GAAG,CAAEC,KAAK,IAAK;MAC1B,MAAMC,UAAU,GAAGV,WAAW,CAACS,KAAK,CAACJ,GAAG,CAAC;MAEzC,IAAI,CAACK,UAAU,EAAE;QACf,OAAO,IAAI;MACb;MAEA,MAAM;QAAEC,OAAO;QAAEJ;MAAO,CAAC,GAAGG,UAAU;MACtC,MAAM;QACJE,WAAW,GAAG,CAAC;QACfC,OAAO,GAAGvB,eAAe;QACzBwB,UAAU;QACVC,qBAAqB;QACrB,GAAGC;MACL,CAAC,GAAGL,OAAO;MACX,MAAMM,aAAa,GAAG1B,gBAAgB,CAACkB,KAAK,CAACS,WAAW,IAAIN,WAAW,EAAEC,OAAO,CAACM,MAAM,CAAC;MAExF,IAAIL,UAAU,EAAE;QACd,MAAMM,gBAAgB,GAAGhC,mBAAmB,CAAC,CAAC;QAC9C,oBACEN,IAAA,CAACsC,gBAAgB;UAEfC,QAAQ,EAAEZ,KAAK,CAACJ,GAAI;UACpBiB,OAAO,EAAEb,KAAK,CAACa,OAAQ;UACvBV,WAAW,EAAEK,aAAc;UAC3BM,SAAS,EAAEd,KAAK,CAACc,SAAU;UAC3BV,OAAO,EAAEA,OAAQ;UACjBd,QAAQ,EAAEA,QAAS;UACnByB,IAAI,EAAEvB,OAAO,CAACuB,IAAK;UACnBT,qBAAqB,EAAEA,qBAAsB;UAAA,GACzCC,UAAU;UAAAV,QAAA,EAEbC,MAAM,CAAC;QAAC,GAXJE,KAAK,CAACJ,GAYK,CAAC;MAEvB;MAEA,oBACEvB,IAAA,CAACF,eAAe;QAEdyC,QAAQ,EAAEZ,KAAK,CAACJ,GAAI;QACpBiB,OAAO,EAAEb,KAAK,CAACa,OAAQ;QACvBV,WAAW,EAAEK,aAAc;QAC3BM,SAAS,EAAEd,KAAK,CAACc,SAAU;QAC3BV,OAAO,EAAEA,OAAQ;QACjBd,QAAQ,EAAEA,QAAS;QACnByB,IAAI,EAAEvB,OAAO,CAACuB,IAAK;QACnBT,qBAAqB,EAAEA,qBAAsB;QAAA,GACzCC,UAAU;QAAAV,QAAA,EAEbC,MAAM,CAAC;MAAC,GAXJE,KAAK,CAACJ,GAYI,CAAC;IAEtB,CAAC,CAAC;EAAA,CACF,CAAC;AAEP,CAAC","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Action creators for the TrueSheet navigator.
5
+ * Plain objects matching `StackActions` shapes, plus sheet-specific actions.
6
+ */
7
+ export const TrueSheetActions = {
8
+ push: (name, params) => ({
9
+ type: 'PUSH',
10
+ payload: {
11
+ name,
12
+ params
13
+ }
14
+ }),
15
+ pop: (count = 1) => ({
16
+ type: 'POP',
17
+ payload: {
18
+ count
19
+ }
20
+ }),
21
+ popTo: (name, params, options) => ({
22
+ type: 'POP_TO',
23
+ payload: {
24
+ name,
25
+ params,
26
+ merge: options?.merge
27
+ }
28
+ }),
29
+ popToTop: () => ({
30
+ type: 'POP_TO_TOP'
31
+ }),
32
+ replace: (name, params) => ({
33
+ type: 'REPLACE',
34
+ payload: {
35
+ name,
36
+ params
37
+ }
38
+ }),
39
+ resize: index => ({
40
+ type: 'RESIZE',
41
+ index
42
+ }),
43
+ dismiss: () => ({
44
+ type: 'DISMISS'
45
+ }),
46
+ remove: () => ({
47
+ type: 'REMOVE'
48
+ })
49
+ };
50
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TrueSheetActions","push","name","params","type","payload","pop","count","popTo","options","merge","popToTop","replace","resize","index","dismiss","remove"],"sourceRoot":"../../../src","sources":["navigation/actions.ts"],"mappings":";;AAoDA;AACA;AACA;AACA;AACA,OAAO,MAAMA,gBAAgB,GAAG;EAC9BC,IAAI,EAAEA,CAACC,IAAY,EAAEC,MAAe,MAA2B;IAC7DC,IAAI,EAAE,MAAM;IACZC,OAAO,EAAE;MAAEH,IAAI;MAAEC;IAAO;EAC1B,CAAC,CAAC;EACFG,GAAG,EAAEA,CAACC,KAAa,GAAG,CAAC,MAA2B;IAChDH,IAAI,EAAE,KAAK;IACXC,OAAO,EAAE;MAAEE;IAAM;EACnB,CAAC,CAAC;EACFC,KAAK,EAAEA,CAACN,IAAY,EAAEC,MAAe,EAAEM,OAA6B,MAA2B;IAC7FL,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE;MAAEH,IAAI;MAAEC,MAAM;MAAEO,KAAK,EAAED,OAAO,EAAEC;IAAM;EACjD,CAAC,CAAC;EACFC,QAAQ,EAAEA,CAAA,MAA4B;IAAEP,IAAI,EAAE;EAAa,CAAC,CAAC;EAC7DQ,OAAO,EAAEA,CAACV,IAAY,EAAEC,MAAe,MAA2B;IAChEC,IAAI,EAAE,SAAS;IACfC,OAAO,EAAE;MAAEH,IAAI;MAAEC;IAAO;EAC1B,CAAC,CAAC;EACFU,MAAM,EAAGC,KAAa,KAA2B;IAAEV,IAAI,EAAE,QAAQ;IAAEU;EAAM,CAAC,CAAC;EAC3EC,OAAO,EAAEA,CAAA,MAA4B;IAAEX,IAAI,EAAE;EAAU,CAAC,CAAC;EACzDY,MAAM,EAAEA,CAAA,MAA4B;IAAEZ,IAAI,EAAE;EAAS,CAAC;AACxD,CAAC","ignoreList":[]}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ import { TrueSheetActions } from "./actions.js";
4
+
5
+ /**
6
+ * The base `StackRouter` factory to wrap, typed generically over the state and
7
+ * action types the wrapper threads through — `StackRouter` is structural and
8
+ * never touches the sheet-specific fields.
9
+ * Injected by each entry point so the shared router never imports
10
+ * `@react-navigation/*` at runtime (Expo Router apps don't install it).
11
+ */
12
+
13
+ const uid = () => Math.random().toString(36).slice(2, 10);
14
+ const ensureBaseRoute = (state, baseRouteName, routeParamList) => {
15
+ if (!baseRouteName) {
16
+ return state;
17
+ }
18
+ const hasBaseRoute = state.routes.some(r => r.name === baseRouteName);
19
+ if (!hasBaseRoute) {
20
+ const baseRoute = {
21
+ key: `${baseRouteName}-${uid()}`,
22
+ name: baseRouteName,
23
+ params: routeParamList?.[baseRouteName]
24
+ };
25
+ return {
26
+ ...state,
27
+ index: state.routes.length,
28
+ routes: [baseRoute, ...state.routes]
29
+ };
30
+ }
31
+ return state;
32
+ };
33
+ export const createTrueSheetRouter = stackRouter => routerOptions => {
34
+ const baseRouter = stackRouter(routerOptions);
35
+ return {
36
+ ...baseRouter,
37
+ type: 'true-sheet',
38
+ getInitialState(options) {
39
+ const state = baseRouter.getInitialState(options);
40
+ const baseRouteName = routerOptions.initialRouteName ?? options.routeNames[0];
41
+ const stateWithBaseRoute = ensureBaseRoute(state, baseRouteName, options.routeParamList);
42
+ return {
43
+ ...stateWithBaseRoute,
44
+ stale: false,
45
+ type: 'true-sheet',
46
+ key: `true-sheet-${uid()}`
47
+ };
48
+ },
49
+ getStateForAction(state, action, options) {
50
+ switch (action.type) {
51
+ case 'RESIZE':
52
+ {
53
+ const routeIndex = action.target === state.key && action.source ? state.routes.findIndex(r => r.key === action.source) : state.index;
54
+ return {
55
+ ...state,
56
+ routes: state.routes.map((route, i) => i === routeIndex ? {
57
+ ...route,
58
+ resizeIndex: action.index,
59
+ resizeKey: (route.resizeKey ?? 0) + 1
60
+ } : route)
61
+ };
62
+ }
63
+ case 'GO_BACK':
64
+ case 'DISMISS':
65
+ {
66
+ return this.getStateForAction(state, TrueSheetActions.pop(1), options);
67
+ }
68
+ case 'POP':
69
+ {
70
+ // Only base screen remains - let parent navigator handle it
71
+ if (state.routes.length <= 1) {
72
+ return null;
73
+ }
74
+ const count = 'payload' in action && typeof action.payload?.count === 'number' ? action.payload.count : 1;
75
+
76
+ // Calculate how many routes we can actually pop (don't pop base screen)
77
+ const maxPopCount = state.routes.length - 1;
78
+ const actualCount = Math.min(count, maxPopCount);
79
+
80
+ // Base screen - let parent navigator handle it
81
+ if (actualCount <= 0) {
82
+ return null;
83
+ }
84
+
85
+ // Target index is the route we want to stay on (land on after pop)
86
+ // closingIndex is the first route to be dismissed (the one after target)
87
+ const targetIndex = state.routes.length - 1 - actualCount;
88
+ const closingIndex = targetIndex + 1;
89
+
90
+ // Mark only the bottom-most route to pop as closing
91
+ // The sheet's dismiss() will handle dismissing sheets above it first
92
+ return {
93
+ ...state,
94
+ index: closingIndex,
95
+ routes: state.routes.map((route, i) => i === closingIndex ? {
96
+ ...route,
97
+ closing: true
98
+ } : route)
99
+ };
100
+ }
101
+ case 'POP_TO_TOP':
102
+ {
103
+ const popCount = state.routes.length - 1;
104
+ return this.getStateForAction(state, TrueSheetActions.pop(popCount), options);
105
+ }
106
+ case 'POP_TO':
107
+ {
108
+ const targetName = 'payload' in action && typeof action.payload?.name === 'string' ? action.payload.name : null;
109
+ if (!targetName) {
110
+ return null;
111
+ }
112
+ const targetIndex = state.routes.findIndex(r => r.name === targetName);
113
+
114
+ // Target not found or is the current route
115
+ if (targetIndex === -1 || targetIndex >= state.index) {
116
+ return null;
117
+ }
118
+ const popCount = state.routes.length - 1 - targetIndex;
119
+ return this.getStateForAction(state, TrueSheetActions.pop(popCount), options);
120
+ }
121
+ case 'REMOVE':
122
+ {
123
+ // Actually remove the closing route and all routes above it
124
+ const routeKey = action.source;
125
+ const routeIndex = routeKey ? state.routes.findIndex(r => r.key === routeKey) : state.routes.findIndex(r => r.closing);
126
+ if (routeIndex === -1) {
127
+ return state;
128
+ }
129
+
130
+ // Remove the route and all routes above it (they were dismissed together)
131
+ const routes = state.routes.filter((_, i) => i < routeIndex);
132
+ return {
133
+ ...state,
134
+ index: Math.min(state.index, routes.length - 1),
135
+ routes
136
+ };
137
+ }
138
+ default:
139
+ return baseRouter.getStateForAction(state, action, options);
140
+ }
141
+ },
142
+ getRehydratedState(partialState, {
143
+ routeNames,
144
+ routeParamList,
145
+ routeGetIdList
146
+ }) {
147
+ if (partialState.stale === false) {
148
+ return partialState;
149
+ }
150
+ const state = baseRouter.getRehydratedState(partialState, {
151
+ routeNames,
152
+ routeParamList,
153
+ routeGetIdList
154
+ });
155
+ const baseRouteName = routerOptions.initialRouteName ?? routeNames[0];
156
+ const stateWithBaseRoute = ensureBaseRoute(state, baseRouteName, routeParamList);
157
+ return {
158
+ ...stateWithBaseRoute,
159
+ type: 'true-sheet',
160
+ key: `true-sheet-${uid()}`
161
+ };
162
+ },
163
+ actionCreators: TrueSheetActions
164
+ };
165
+ };
166
+ //# sourceMappingURL=createTrueSheetRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TrueSheetActions","uid","Math","random","toString","slice","ensureBaseRoute","state","baseRouteName","routeParamList","hasBaseRoute","routes","some","r","name","baseRoute","key","params","index","length","createTrueSheetRouter","stackRouter","routerOptions","baseRouter","type","getInitialState","options","initialRouteName","routeNames","stateWithBaseRoute","stale","getStateForAction","action","routeIndex","target","source","findIndex","map","route","i","resizeIndex","resizeKey","pop","count","payload","maxPopCount","actualCount","min","targetIndex","closingIndex","closing","popCount","targetName","routeKey","filter","_","getRehydratedState","partialState","routeGetIdList","actionCreators"],"sourceRoot":"../../../src","sources":["navigation/createTrueSheetRouter.ts"],"mappings":"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","ignoreList":[]}