one 1.2.69 → 1.2.70

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 (266) hide show
  1. package/dist/cjs/__mocks__/@react-navigation/native-stack.cjs +29 -0
  2. package/dist/cjs/__mocks__/@react-navigation/native-stack.js +24 -0
  3. package/dist/cjs/__mocks__/@react-navigation/native-stack.js.map +6 -0
  4. package/dist/cjs/__mocks__/@react-navigation/native-stack.native.js +38 -0
  5. package/dist/cjs/__mocks__/@react-navigation/native-stack.native.js.map +1 -0
  6. package/dist/cjs/__mocks__/@react-navigation/native.js +45 -0
  7. package/dist/cjs/__mocks__/@react-navigation/native.js.map +1 -0
  8. package/dist/cjs/__mocks__/expo-linking.cjs +36 -0
  9. package/dist/cjs/__mocks__/expo-linking.js +25 -0
  10. package/dist/cjs/__mocks__/expo-linking.js.map +6 -0
  11. package/dist/cjs/__mocks__/expo-linking.native.js +47 -0
  12. package/dist/cjs/__mocks__/expo-linking.native.js.map +1 -0
  13. package/dist/cjs/__mocks__/expo-modules-core.cjs +36 -0
  14. package/dist/cjs/__mocks__/expo-modules-core.js +31 -0
  15. package/dist/cjs/__mocks__/expo-modules-core.js.map +6 -0
  16. package/dist/cjs/__mocks__/expo-modules-core.native.js +67 -0
  17. package/dist/cjs/__mocks__/expo-modules-core.native.js.map +1 -0
  18. package/dist/cjs/__mocks__/react-native-screens.cjs +28 -0
  19. package/dist/cjs/__mocks__/react-native-screens.js +22 -0
  20. package/dist/cjs/__mocks__/react-native-screens.js.map +6 -0
  21. package/dist/cjs/__mocks__/react-native-screens.native.js +31 -0
  22. package/dist/cjs/__mocks__/react-native-screens.native.js.map +1 -0
  23. package/dist/cjs/__mocks__/react-native.js +49 -0
  24. package/dist/cjs/__mocks__/react-native.js.map +1 -0
  25. package/dist/cjs/fork/NavigationContainer.js.map +1 -1
  26. package/dist/cjs/fork/NavigationContainer.native.js.map +1 -1
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/layouts/Stack.cjs +6 -1
  29. package/dist/cjs/layouts/Stack.js +5 -2
  30. package/dist/cjs/layouts/Stack.js.map +1 -1
  31. package/dist/cjs/layouts/Stack.native.js +6 -1
  32. package/dist/cjs/layouts/Stack.native.js.map +1 -1
  33. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.cjs +40 -0
  34. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.js +35 -0
  35. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.js.map +6 -0
  36. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js +43 -0
  37. package/dist/cjs/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -0
  38. package/dist/cjs/layouts/stack-utils/StackHeaderComponent.cjs +90 -0
  39. package/dist/cjs/layouts/stack-utils/StackHeaderComponent.js +64 -0
  40. package/dist/cjs/layouts/stack-utils/StackHeaderComponent.js.map +6 -0
  41. package/dist/cjs/layouts/stack-utils/StackHeaderComponent.native.js +99 -0
  42. package/dist/cjs/layouts/stack-utils/StackHeaderComponent.native.js.map +1 -0
  43. package/dist/cjs/layouts/stack-utils/StackHeaderLeft.cjs +35 -0
  44. package/dist/cjs/layouts/stack-utils/StackHeaderLeft.js +30 -0
  45. package/dist/cjs/layouts/stack-utils/StackHeaderLeft.js.map +6 -0
  46. package/dist/cjs/layouts/stack-utils/StackHeaderLeft.native.js +40 -0
  47. package/dist/cjs/layouts/stack-utils/StackHeaderLeft.native.js.map +1 -0
  48. package/dist/cjs/layouts/stack-utils/StackHeaderRight.cjs +35 -0
  49. package/dist/cjs/layouts/stack-utils/StackHeaderRight.js +30 -0
  50. package/dist/cjs/layouts/stack-utils/StackHeaderRight.js.map +6 -0
  51. package/dist/cjs/layouts/stack-utils/StackHeaderRight.native.js +40 -0
  52. package/dist/cjs/layouts/stack-utils/StackHeaderRight.native.js.map +1 -0
  53. package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.cjs +35 -0
  54. package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.js +30 -0
  55. package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.js.map +6 -0
  56. package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.native.js +38 -0
  57. package/dist/cjs/layouts/stack-utils/StackHeaderSearchBar.native.js.map +1 -0
  58. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.cjs +65 -0
  59. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.js +46 -0
  60. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.js.map +6 -0
  61. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js +68 -0
  62. package/dist/cjs/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -0
  63. package/dist/cjs/layouts/stack-utils/StackScreen.cjs +57 -0
  64. package/dist/cjs/layouts/stack-utils/StackScreen.js +43 -0
  65. package/dist/cjs/layouts/stack-utils/StackScreen.js.map +6 -0
  66. package/dist/cjs/layouts/stack-utils/StackScreen.native.js +64 -0
  67. package/dist/cjs/layouts/stack-utils/StackScreen.native.js.map +1 -0
  68. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.cjs +455 -0
  69. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.js +406 -0
  70. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.js.map +6 -0
  71. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js +480 -0
  72. package/dist/cjs/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -0
  73. package/dist/cjs/layouts/stack-utils/index.cjs +47 -0
  74. package/dist/cjs/layouts/stack-utils/index.js +36 -0
  75. package/dist/cjs/layouts/stack-utils/index.js.map +6 -0
  76. package/dist/cjs/layouts/stack-utils/index.native.js +50 -0
  77. package/dist/cjs/layouts/stack-utils/index.native.js.map +1 -0
  78. package/dist/cjs/layouts/withLayoutContext.cjs +2 -1
  79. package/dist/cjs/layouts/withLayoutContext.js +2 -2
  80. package/dist/cjs/layouts/withLayoutContext.js.map +1 -1
  81. package/dist/cjs/layouts/withLayoutContext.native.js +3 -2
  82. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  83. package/dist/cjs/utils/children.cjs +46 -0
  84. package/dist/cjs/utils/children.js +47 -0
  85. package/dist/cjs/utils/children.js.map +6 -0
  86. package/dist/cjs/utils/children.native.js +76 -0
  87. package/dist/cjs/utils/children.native.js.map +1 -0
  88. package/dist/cjs/utils/style.cjs +28 -0
  89. package/dist/cjs/utils/style.js +24 -0
  90. package/dist/cjs/utils/style.js.map +6 -0
  91. package/dist/cjs/utils/style.native.js +31 -0
  92. package/dist/cjs/utils/style.native.js.map +1 -0
  93. package/dist/esm/__mocks__/@react-navigation/native-stack.js +8 -0
  94. package/dist/esm/__mocks__/@react-navigation/native-stack.js.map +6 -0
  95. package/dist/esm/__mocks__/@react-navigation/native-stack.mjs +6 -0
  96. package/dist/esm/__mocks__/@react-navigation/native-stack.mjs.map +1 -0
  97. package/dist/esm/__mocks__/@react-navigation/native-stack.native.js +12 -0
  98. package/dist/esm/__mocks__/@react-navigation/native-stack.native.js.map +1 -0
  99. package/dist/esm/__mocks__/@react-navigation/native.js +18 -0
  100. package/dist/esm/__mocks__/@react-navigation/native.js.map +1 -0
  101. package/dist/esm/__mocks__/expo-linking.js +9 -0
  102. package/dist/esm/__mocks__/expo-linking.js.map +6 -0
  103. package/dist/esm/__mocks__/expo-linking.mjs +10 -0
  104. package/dist/esm/__mocks__/expo-linking.mjs.map +1 -0
  105. package/dist/esm/__mocks__/expo-linking.native.js +18 -0
  106. package/dist/esm/__mocks__/expo-linking.native.js.map +1 -0
  107. package/dist/esm/__mocks__/expo-modules-core.js +15 -0
  108. package/dist/esm/__mocks__/expo-modules-core.js.map +6 -0
  109. package/dist/esm/__mocks__/expo-modules-core.mjs +10 -0
  110. package/dist/esm/__mocks__/expo-modules-core.mjs.map +1 -0
  111. package/dist/esm/__mocks__/expo-modules-core.native.js +38 -0
  112. package/dist/esm/__mocks__/expo-modules-core.native.js.map +1 -0
  113. package/dist/esm/__mocks__/react-native-screens.js +6 -0
  114. package/dist/esm/__mocks__/react-native-screens.js.map +6 -0
  115. package/dist/esm/__mocks__/react-native-screens.mjs +4 -0
  116. package/dist/esm/__mocks__/react-native-screens.mjs.map +1 -0
  117. package/dist/esm/__mocks__/react-native-screens.native.js +4 -0
  118. package/dist/esm/__mocks__/react-native-screens.native.js.map +1 -0
  119. package/dist/esm/__mocks__/react-native.js +19 -0
  120. package/dist/esm/__mocks__/react-native.js.map +1 -0
  121. package/dist/esm/fork/NavigationContainer.js.map +1 -1
  122. package/dist/esm/fork/NavigationContainer.mjs.map +1 -1
  123. package/dist/esm/fork/NavigationContainer.native.js.map +1 -1
  124. package/dist/esm/index.js.map +1 -1
  125. package/dist/esm/index.mjs.map +1 -1
  126. package/dist/esm/index.native.js.map +1 -1
  127. package/dist/esm/layouts/Stack.js +5 -1
  128. package/dist/esm/layouts/Stack.js.map +1 -1
  129. package/dist/esm/layouts/Stack.mjs +6 -1
  130. package/dist/esm/layouts/Stack.mjs.map +1 -1
  131. package/dist/esm/layouts/Stack.native.js +6 -1
  132. package/dist/esm/layouts/Stack.native.js.map +1 -1
  133. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.js +19 -0
  134. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.js.map +6 -0
  135. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs +16 -0
  136. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.mjs.map +1 -0
  137. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js +16 -0
  138. package/dist/esm/layouts/stack-utils/StackHeaderBackButton.native.js.map +1 -0
  139. package/dist/esm/layouts/stack-utils/StackHeaderComponent.js +61 -0
  140. package/dist/esm/layouts/stack-utils/StackHeaderComponent.js.map +6 -0
  141. package/dist/esm/layouts/stack-utils/StackHeaderComponent.mjs +66 -0
  142. package/dist/esm/layouts/stack-utils/StackHeaderComponent.mjs.map +1 -0
  143. package/dist/esm/layouts/stack-utils/StackHeaderComponent.native.js +72 -0
  144. package/dist/esm/layouts/stack-utils/StackHeaderComponent.native.js.map +1 -0
  145. package/dist/esm/layouts/stack-utils/StackHeaderLeft.js +14 -0
  146. package/dist/esm/layouts/stack-utils/StackHeaderLeft.js.map +6 -0
  147. package/dist/esm/layouts/stack-utils/StackHeaderLeft.mjs +11 -0
  148. package/dist/esm/layouts/stack-utils/StackHeaderLeft.mjs.map +1 -0
  149. package/dist/esm/layouts/stack-utils/StackHeaderLeft.native.js +13 -0
  150. package/dist/esm/layouts/stack-utils/StackHeaderLeft.native.js.map +1 -0
  151. package/dist/esm/layouts/stack-utils/StackHeaderRight.js +14 -0
  152. package/dist/esm/layouts/stack-utils/StackHeaderRight.js.map +6 -0
  153. package/dist/esm/layouts/stack-utils/StackHeaderRight.mjs +11 -0
  154. package/dist/esm/layouts/stack-utils/StackHeaderRight.mjs.map +1 -0
  155. package/dist/esm/layouts/stack-utils/StackHeaderRight.native.js +13 -0
  156. package/dist/esm/layouts/stack-utils/StackHeaderRight.native.js.map +1 -0
  157. package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.js +14 -0
  158. package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.js.map +6 -0
  159. package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.mjs +11 -0
  160. package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.mjs.map +1 -0
  161. package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.native.js +11 -0
  162. package/dist/esm/layouts/stack-utils/StackHeaderSearchBar.native.js.map +1 -0
  163. package/dist/esm/layouts/stack-utils/StackHeaderTitle.js +31 -0
  164. package/dist/esm/layouts/stack-utils/StackHeaderTitle.js.map +6 -0
  165. package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs +41 -0
  166. package/dist/esm/layouts/stack-utils/StackHeaderTitle.mjs.map +1 -0
  167. package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js +41 -0
  168. package/dist/esm/layouts/stack-utils/StackHeaderTitle.native.js.map +1 -0
  169. package/dist/esm/layouts/stack-utils/StackScreen.js +33 -0
  170. package/dist/esm/layouts/stack-utils/StackScreen.js.map +6 -0
  171. package/dist/esm/layouts/stack-utils/StackScreen.mjs +33 -0
  172. package/dist/esm/layouts/stack-utils/StackScreen.mjs.map +1 -0
  173. package/dist/esm/layouts/stack-utils/StackScreen.native.js +38 -0
  174. package/dist/esm/layouts/stack-utils/StackScreen.native.js.map +1 -0
  175. package/dist/esm/layouts/stack-utils/__tests__/composition.test.js +422 -0
  176. package/dist/esm/layouts/stack-utils/__tests__/composition.test.js.map +6 -0
  177. package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs +456 -0
  178. package/dist/esm/layouts/stack-utils/__tests__/composition.test.mjs.map +1 -0
  179. package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js +478 -0
  180. package/dist/esm/layouts/stack-utils/__tests__/composition.test.native.js.map +1 -0
  181. package/dist/esm/layouts/stack-utils/index.js +26 -0
  182. package/dist/esm/layouts/stack-utils/index.js.map +6 -0
  183. package/dist/esm/layouts/stack-utils/index.mjs +16 -0
  184. package/dist/esm/layouts/stack-utils/index.mjs.map +1 -0
  185. package/dist/esm/layouts/stack-utils/index.native.js +16 -0
  186. package/dist/esm/layouts/stack-utils/index.native.js.map +1 -0
  187. package/dist/esm/layouts/withLayoutContext.js +2 -1
  188. package/dist/esm/layouts/withLayoutContext.js.map +1 -1
  189. package/dist/esm/layouts/withLayoutContext.mjs +2 -1
  190. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  191. package/dist/esm/layouts/withLayoutContext.native.js +2 -1
  192. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  193. package/dist/esm/utils/children.js +33 -0
  194. package/dist/esm/utils/children.js.map +6 -0
  195. package/dist/esm/utils/children.mjs +19 -0
  196. package/dist/esm/utils/children.mjs.map +1 -0
  197. package/dist/esm/utils/children.native.js +46 -0
  198. package/dist/esm/utils/children.native.js.map +1 -0
  199. package/dist/esm/utils/style.js +8 -0
  200. package/dist/esm/utils/style.js.map +6 -0
  201. package/dist/esm/utils/style.mjs +5 -0
  202. package/dist/esm/utils/style.mjs.map +1 -0
  203. package/dist/esm/utils/style.native.js +5 -0
  204. package/dist/esm/utils/style.native.js.map +1 -0
  205. package/package.json +9 -9
  206. package/src/__mocks__/@react-navigation/native-stack.ts +32 -0
  207. package/src/__mocks__/@react-navigation/native.ts +21 -0
  208. package/src/__mocks__/expo-linking.ts +6 -0
  209. package/src/__mocks__/expo-modules-core.ts +11 -0
  210. package/src/__mocks__/react-native-screens.ts +17 -0
  211. package/src/__mocks__/react-native.ts +20 -0
  212. package/src/fork/NavigationContainer.tsx +2 -0
  213. package/src/index.ts +10 -0
  214. package/src/layouts/Stack.tsx +7 -1
  215. package/src/layouts/stack-utils/README.md +211 -0
  216. package/src/layouts/stack-utils/StackHeaderBackButton.tsx +34 -0
  217. package/src/layouts/stack-utils/StackHeaderComponent.tsx +123 -0
  218. package/src/layouts/stack-utils/StackHeaderLeft.tsx +29 -0
  219. package/src/layouts/stack-utils/StackHeaderRight.tsx +29 -0
  220. package/src/layouts/stack-utils/StackHeaderSearchBar.tsx +21 -0
  221. package/src/layouts/stack-utils/StackHeaderTitle.tsx +72 -0
  222. package/src/layouts/stack-utils/StackScreen.tsx +66 -0
  223. package/src/layouts/stack-utils/__tests__/composition.test.tsx +634 -0
  224. package/src/layouts/stack-utils/index.tsx +35 -0
  225. package/src/layouts/withLayoutContext.tsx +3 -2
  226. package/src/router/router.ts +1 -1
  227. package/src/utils/children.ts +72 -0
  228. package/src/utils/style.ts +17 -0
  229. package/types/__mocks__/@react-navigation/native-stack.d.ts +30 -0
  230. package/types/__mocks__/@react-navigation/native-stack.d.ts.map +1 -0
  231. package/types/__mocks__/@react-navigation/native.d.ts +17 -0
  232. package/types/__mocks__/@react-navigation/native.d.ts.map +1 -0
  233. package/types/__mocks__/expo-linking.d.ts +9 -0
  234. package/types/__mocks__/expo-linking.d.ts.map +1 -0
  235. package/types/__mocks__/expo-modules-core.d.ts +11 -0
  236. package/types/__mocks__/expo-modules-core.d.ts.map +1 -0
  237. package/types/__mocks__/react-native-screens.d.ts +14 -0
  238. package/types/__mocks__/react-native-screens.d.ts.map +1 -0
  239. package/types/__mocks__/react-native.d.ts +12 -0
  240. package/types/__mocks__/react-native.d.ts.map +1 -0
  241. package/types/fork/NavigationContainer.d.ts.map +1 -1
  242. package/types/index.d.ts +1 -0
  243. package/types/index.d.ts.map +1 -1
  244. package/types/layouts/Stack.d.ts +10 -0
  245. package/types/layouts/Stack.d.ts.map +1 -1
  246. package/types/layouts/stack-utils/StackHeaderBackButton.d.ts +17 -0
  247. package/types/layouts/stack-utils/StackHeaderBackButton.d.ts.map +1 -0
  248. package/types/layouts/stack-utils/StackHeaderComponent.d.ts +36 -0
  249. package/types/layouts/stack-utils/StackHeaderComponent.d.ts.map +1 -0
  250. package/types/layouts/stack-utils/StackHeaderLeft.d.ts +13 -0
  251. package/types/layouts/stack-utils/StackHeaderLeft.d.ts.map +1 -0
  252. package/types/layouts/stack-utils/StackHeaderRight.d.ts +13 -0
  253. package/types/layouts/stack-utils/StackHeaderRight.d.ts.map +1 -0
  254. package/types/layouts/stack-utils/StackHeaderSearchBar.d.ts +10 -0
  255. package/types/layouts/stack-utils/StackHeaderSearchBar.d.ts.map +1 -0
  256. package/types/layouts/stack-utils/StackHeaderTitle.d.ts +26 -0
  257. package/types/layouts/stack-utils/StackHeaderTitle.d.ts.map +1 -0
  258. package/types/layouts/stack-utils/StackScreen.d.ts +22 -0
  259. package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -0
  260. package/types/layouts/stack-utils/index.d.ts +20 -0
  261. package/types/layouts/stack-utils/index.d.ts.map +1 -0
  262. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  263. package/types/utils/children.d.ts +23 -0
  264. package/types/utils/children.d.ts.map +1 -0
  265. package/types/utils/style.d.ts +7 -0
  266. package/types/utils/style.d.ts.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContextKey","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","withStaticProperties","isProtectedElement","Screen","jsx","useFilterScreenChildren","children","isCustomNavigator","contextKey","useMemo","customChildren","screens","protectedScreens","Set","flattenChild","child","exclude","isValidElement","type","props","name","Error","process","env","NODE_ENV","some","key","screenProps","add","push","excludeChildren","guard","Children","forEach","nested","console","warn","names","map","screen","size","length","withLayoutContext","Nav","processor","options","forwardRef","propsIn","ref","useEffect","processed","sorted","onlyMatching","id"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"AACA,OAAOA,KAAA,MAAW;AAClB,SAASC,aAAA,QAAqB;AAC9B,SAASC,uBAAA,EAAyBC,yBAAA,QAAiC;AACnE,SAA2BC,gBAAA,QAAwB;AAEnD,SAASC,oBAAA,QAA4B;AACrC,SAASC,kBAAA,QAA0B;AACnC,SAASC,MAAA,QAAc;AA6Ib,SAAAC,GAAA;AA3IH,SAASC,wBACdC,QAAA,EACA;EACEC,iBAAA;EACAC;AACF,IAII,CAAC,GACL;EACA,OAAOZ,KAAA,CAAMa,OAAA,CAAQ,MAAM;IACzB,MAAMC,cAAA,GAAwB,EAAC;MACzBC,OAAA,GAAiB,EAAC;MAClBC,gBAAA,GAAmB,mBAAIC,GAAA,CAAY;IAMzC,SAASC,aAAaC,KAAA,EAAwBC,OAAA,GAAU,IAAO;MAE7D,IAAIpB,KAAA,CAAMqB,cAAA,CAAeF,KAAK,KAAKA,KAAA,CAAMG,IAAA,KAASf,MAAA,EAAQ;QACxD,IACE,OAAOY,KAAA,CAAMI,KAAA,IAAU,YACvBJ,KAAA,CAAMI,KAAA,IACN,UAAUJ,KAAA,CAAMI,KAAA,IAChB,CAACJ,KAAA,CAAMI,KAAA,CAAMC,IAAA,EAEb,MAAM,IAAIC,KAAA,CACR,sDAAsDb,UAAU,8EAClE;QAEF,IAAIc,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,gBAEzB,CAAC,YAAY,aAAa,cAAc,EAAEC,IAAA,CACvCC,GAAA,IACCX,KAAA,CAAMI,KAAA,IAAS,OAAOJ,KAAA,CAAMI,KAAA,IAAU,YAAYO,GAAA,IAAOX,KAAA,CAAMI,KACnE,GAEA,MAAM,IAAIE,KAAA,CACR,sDAAsDb,UAAU,yHAClE;QAIJ,MAAMmB,WAAA,GAAcZ,KAAA,CAAMI,KAAA;QACtBH,OAAA,IAAWW,WAAA,CAAYP,IAAA,GACzBR,gBAAA,CAAiBgB,GAAA,CAAID,WAAA,CAAYP,IAAI,IAErCT,OAAA,CAAQkB,IAAA,CAAKF,WAAW;QAE1B;MACF;MAGA,IAAIzB,kBAAA,CAAmBa,KAAK,GAAG;QAE7B,MAAMe,eAAA,GAAkBd,OAAA,IAAW,CAACD,KAAA,CAAMI,KAAA,CAAMY,KAAA;QAChDnC,KAAA,CAAMoC,QAAA,CAASC,OAAA,CAAQlB,KAAA,CAAMI,KAAA,CAAMb,QAAA,EAAW4B,MAAA,IAAW;UACvDpB,YAAA,CAAaoB,MAAA,EAAQJ,eAAe;QACtC,CAAC;QACD;MACF;MAGIvB,iBAAA,GACFG,cAAA,CAAemB,IAAA,CAAKd,KAAK,IAChBA,KAAA,IAAS,QAClBoB,OAAA,CAAQC,IAAA,CACN,2JAA2J5B,UAAU,WACvK;IAEJ;IAKA,IAHAZ,KAAA,CAAMoC,QAAA,CAASC,OAAA,CAAQ3B,QAAA,EAAWS,KAAA,IAAUD,YAAA,CAAaC,KAAK,CAAC,GAG3DO,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;MAEzC,MAAMa,KAAA,GAAQ1B,OAAA,CAAQ2B,GAAA,CAAKC,MAAA,IAAWA,MAAA,CAAOnB,IAAI;MACjD,IAAIiB,KAAA,IAAS,IAAIxB,GAAA,CAAIwB,KAAK,EAAEG,IAAA,KAASH,KAAA,CAAMI,MAAA,EACzC,MAAM,IAAIpB,KAAA,CAAM,kCAAkCgB,KAAK;IAE3D;IAEA,OAAO;MACL1B,OAAA;MACAL,QAAA,EAAUI,cAAA;MACVE;IACF;EACF,GAAG,CAACN,QAAA,EAAUE,UAAA,EAAYD,iBAAiB,CAAC;AAC9C;AAGO,SAASmC,kBAMdC,GAAA,EACAC,SAAA,EAGAC,OAAA,EACA;EACA,OAAO5C,oBAAA,CACLL,KAAA,CAAMkD,UAAA,CACJ,CAACC,OAAA,EAASC,GAAA,KAAQ;IAChB,MAAM;QAAE1C,QAAA;QAAU,GAAGa;MAAM,IAAI4B,OAAA;MACzBvC,UAAA,GAAaX,aAAA,CAAc;MAC3B;QAAEc,OAAA;QAASC;MAAiB,IAAIP,uBAAA,CAAwBC,QAAA,EAAU;QACtEE;MACF,CAAC;IAIDV,uBAAA,CAAwBU,UAAA,EAAYI,gBAAgB,GAEpDhB,KAAA,CAAMqD,SAAA,CAAU,OACdnD,uBAAA,CAAwBU,UAAA,EAAYI,gBAAgB,GAC7C,MAAM;MACXb,yBAAA,CAA0BS,UAAU;IACtC,IACC,CAACA,UAAA,EAAYI,gBAAgB,CAAC;IAEjC,MAAMsC,SAAA,GAAYN,SAAA,GAAYA,SAAA,CAAUjC,OAAA,IAAY,EAAU,IAAIA,OAAA;MAC5DwC,MAAA,GAASnD,gBAAA,CAAkBkD,SAAA,IAAa,EAAC,EAAW;QACxDE,YAAA,EAAc;QACdxC;MACF,CAAC;IAGD,OAAKuC,MAAA,CAAOV,MAAA,GAKV,eAAArC,GAAA,CAACuC,GAAA;MAAK,GAAGE,OAAA,EAAS1B,KAAA;MAAQ,GAAGA,KAAA;MAAOkC,EAAA,EAAI7C,UAAA;MAAYwC,GAAA;MACjD1C,QAAA,EAAA6C;IAAA,CACH,IANO;EAQX,CACF,GACA;IACEhD;EACF,CACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["React","useContextKey","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","withStaticProperties","isProtectedElement","Screen","StackScreen","jsx","useFilterScreenChildren","children","isCustomNavigator","contextKey","useMemo","customChildren","screens","protectedScreens","Set","flattenChild","child","exclude","isValidElement","type","props","name","Error","process","env","NODE_ENV","some","key","screenProps","add","push","excludeChildren","guard","Children","forEach","nested","console","warn","names","map","screen","size","length","withLayoutContext","Nav","processor","options","forwardRef","propsIn","ref","useEffect","processed","sorted","onlyMatching","id"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ import { useSortedScreens } from "../router/useScreens.native.js";
6
6
  import { withStaticProperties } from "../utils/withStaticProperties.native.js";
7
7
  import { isProtectedElement } from "../views/Protected.native.js";
8
8
  import { Screen } from "../views/Screen.native.js";
9
+ import { StackScreen } from "./stack-utils/StackScreen.native.js";
9
10
  function _type_of(obj) {
10
11
  "@swc/helpers - typeof";
11
12
 
@@ -23,7 +24,7 @@ function useFilterScreenChildren(children) {
23
24
  protectedScreens = /* @__PURE__ */new Set();
24
25
  function flattenChild(child) {
25
26
  var exclude = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1;
26
- if (/* @__PURE__ */React.isValidElement(child) && child.type === Screen) {
27
+ if (/* @__PURE__ */React.isValidElement(child) && (child.type === Screen || child.type === StackScreen)) {
27
28
  if (_type_of(child.props) === "object" && child.props && "name" in child.props && !child.props.name) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must have a \`name\` prop when used as a child of a Layout Route.`);
28
29
  if (process.env.NODE_ENV !== "production" && ["children", "component", "getComponent"].some(function (key) {
29
30
  return child.props && _type_of(child.props) === "object" && key in child.props;
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","React","useContextKey","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","withStaticProperties","isProtectedElement","Screen","_type_of","obj","Symbol","constructor","useFilterScreenChildren","children","isCustomNavigator","contextKey","arguments","length","useMemo","customChildren","screens","protectedScreens","Set","flattenChild","child","exclude","isValidElement","type","props","name","Error","process","env","NODE_ENV","some","key","screenProps","add","push","excludeChildren","guard","Children","forEach","nested","console","warn","names","map","screen","size","withLayoutContext","Nav","processor","options","forwardRef","propsIn","ref","useEffect"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","React","useContextKey","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","withStaticProperties","isProtectedElement","Screen","StackScreen","_type_of","obj","Symbol","constructor","useFilterScreenChildren","children","isCustomNavigator","contextKey","arguments","length","useMemo","customChildren","screens","protectedScreens","Set","flattenChild","child","exclude","isValidElement","type","props","name","Error","process","env","NODE_ENV","some","key","screenProps","add","push","excludeChildren","guard","Children","forEach","nested","console","warn","names","map","screen","size","withLayoutContext","Nav","processor","options","forwardRef","propsIn","ref","useEffect"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"AACA,SAAOA,GAAA,IAAAC,IAAW;AAClB,OAAAC,KAAS;AACT,SAASC,aAAA,mCAAyB;AAClC,SAA2BC,uBAAA,EAAwBC,yBAAA;AAEnD,SAASC,gBAAA,wCAA4B;AACrC,SAASC,oBAAA,QAA0B;AACnC,SAASC,kBAAc;AACvB,SAASC,MAAA,mCAAmB;AA6IlB,SAAAC,WAAA;AA3IH,SAASC,SAAAC,GAAA;EAGZ;;EACA,OAAAA,GAAA,WAAAC,MAAA,UAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AACF;AAMA,SAAOG,uBAAoBA,CAAAC,QAAA;EACzB;IAAAC,iBAAM;IAAwBC;EACxB,IAAkBC,SAClB,CAAAC,MAAA,QAAmBD,SAAA,aAAgB,IAAAA,SAAA,OAMzC;EAEE,GACE;EAME,OAAAjB,KAAA,CAAAmB,OAAU;IAAA,IAAAC,cACR;MAAAC,OAAA;MAAAC,gBAAA,kBAAgE,IAAAC,GAAA;IAAA,SAClEC,aAAAC,KAAA;MAEF,IAAAC,OAAI,GAAQT,SAAI,CAAAC,MAAA,GAAa,KAAAD,SAEzB,CAAC,YAAY,IAAAA,SAAa;MAAgB,IACxC,eACQjB,KAAA,CAAA2B,cAAgB,CAAMF,KAAA,MAAUA,KAAA,CAAAG,IAAY,KAAArB,MAAO,IAAMkB,KAAA,CAAAG,IAAA,KAAApB,WAAA;QACnE,IAAAC,QAAA,CAAAgB,KAAA,CAAAI,KAAA,kBAAAJ,KAAA,CAAAI,KAAA,cAAAJ,KAAA,CAAAI,KAAA,KAAAJ,KAAA,CAAAI,KAAA,CAAAC,IAAA,EAEA,MAAM,IAAIC,KAAA,uDAAAf,UAAA;QAAA,IACRgB,OAAA,CAAAC,GAAA,CAAAC,QAAA,sBACF,YAIJ,WAAM,EACF,cAAW,CAKf,CAAAC,IAAA,WAAAC,GAAA;UACF,OAAAX,KAAA,CAAAI,KAAA,IAAApB,QAAA,CAAAgB,KAAA,CAAAI,KAAA,kBAAAO,GAAA,IAAAX,KAAA,CAAAI,KAAA;QAGA,EAAI,EAEF,MAAM,IAAAE,KAAA,uDAA0Cf,UAAA;QAChD,IAAAqB,WAAe,GAAAZ,KAAQ,CAAAI,KAAM;QAC3BH,OAAA,IAAAW,WAAa,CAAQP,IAAA,GAAAR,gBAAe,CAAAgB,GAAA,CAAAD,WAAA,CAAAP,IAAA,IAAAT,OAAA,CAAAkB,IAAA,CAAAF,WAAA;QACtC;MACA;MACF,IAAA/B,kBAAA,CAAAmB,KAAA;QAGI,IAAAe,eACF,GAAAd,OAAA,IAAe,CAAAD,KAAK,CAAAI,KAAK,CAAAY,KAChB;QAEPzC,KAAA,CAAA0C,QAAA,CAAAC,OAAA,CAAAlB,KAAA,CAAAI,KAAA,CAAAf,QAAA,YAAA8B,MAAA;UACFpB,YAAA,CAAAoB,MAAA,EAAAJ,eAAA;QAEJ;QAEA;MAKE;MACAzB,iBAAiB,GAAAK,cAAW,CAAAmB,IAAS,CAAAd,KAAM,IAAAA,KAAA,YAAAoB,OAAA,CAAAC,IAAA,4JAAA9B,UAAA;IACzC;IAEJ,IAAAhB,KAAA,CAAA0C,QAAA,CAAAC,OAAA,CAAA7B,QAAA,YAAAW,KAAA;MAEA,OAAOD,YAAA,CAAAC,KAAA;IAAA,EACL,EAAAO,OAAA,CAAAC,GAAA,CAAAC,QAAA;MACA,IAAAa,KAAA,GAAU1B,OAAA,CAAA2B,GAAA,WAAAC,MAAA;QACV,OAAAA,MAAA,CAAAnB,IAAA;MACF;MACE,IAAAiB,KAAA,IAAU,IAAAxB,GAAA,CAAAwB,KAAY,EAAAG,IAAA,KAAAH,KAAkB,CAAA7B,MAAA,EAC9C,UAAAa,KAAA,mCAAAgB,KAAA;IAGO;IAYL,OAAO;MACL1B,OAAM;MACJP,QAAC,EAASM,cAAQ;MAChBE;IAEwE;EACtE,IAKFR,QAAA,EAKIE,UAAA,EAAoCD,iBAEpC,CAEJ;AAC0D;AAC1C,SAAAoC,iBACdA,CAAAC,GAAA,EAAAC,SAAA,EAAAC,OAAA;EAAA,OACDjD,oBAAA,gBAAAL,KAAA,CAAAuD,UAAA,WAAAC,OAAA,EAAAC,GAAA;IAGD;QAAA3C,QAAK;QAAA,GAAOe;MAAA,IAKV2B,OAAA;MAAAxC,UAAC,GAAAf,aAAQ,EAAS;MAAA;QAAAoB,OAAW;QAAAC;MAAW,IAAYT,uBAEpD,CAAAC,QANO;QAQXE;MACF;IACAd,uBAAA,CAAAc,UAAA,EAAAM,gBAAA,GAAAtB,KAAA,CAAA0D,SAAA;MACE,OAAAxD,uBAAA,CAAAc,UAAA,EAAAM,gBAAA;QACFnB,yBAAA,CAAAa,UAAA;MACF;IACF,I","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ import {
2
+ isValidElement
3
+ } from "react";
4
+ function isChildOfType(element, type) {
5
+ return isValidElement(element) && element.type === type;
6
+ }
7
+ function getFirstChildOfType(children, type) {
8
+ const childArray = Array.isArray(children) ? children : [children];
9
+ for (const child of childArray)
10
+ if (isChildOfType(child, type))
11
+ return child;
12
+ }
13
+ function getAllChildrenOfType(children, type) {
14
+ return (Array.isArray(children) ? children : [children]).filter(
15
+ (child) => isChildOfType(child, type)
16
+ );
17
+ }
18
+ function getAllChildrenNotOfType(children, type) {
19
+ return (Array.isArray(children) ? children : [children]).filter((child) => !isChildOfType(child, type));
20
+ }
21
+ function filterAllowedChildrenElements(children, allowedTypes) {
22
+ return (Array.isArray(children) ? children : [children]).filter(
23
+ (child) => isValidElement(child) && allowedTypes.some((type) => child.type === type)
24
+ );
25
+ }
26
+ export {
27
+ filterAllowedChildrenElements,
28
+ getAllChildrenNotOfType,
29
+ getAllChildrenOfType,
30
+ getFirstChildOfType,
31
+ isChildOfType
32
+ };
33
+ //# sourceMappingURL=children.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/children.ts"],
4
+ "mappings": "AAAA;AAAA,EACE;AAAA,OAIK;AAMA,SAAS,cACd,SACA,MACuE;AACvE,SAAO,eAAe,OAAO,KAAK,QAAQ,SAAS;AACrD;AAKO,SAAS,oBACd,UACA,MACwE;AACxE,QAAM,aAAa,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;AACjE,aAAW,SAAS;AAClB,QAAI,cAAc,OAAO,IAAI;AAC3B,aAAO;AAIb;AAKO,SAAS,qBACd,UACA,MAC8D;AAE9D,UADmB,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ,GAC/C;AAAA,IAChB,CAAC,UACC,cAAc,OAAO,IAAI;AAAA,EAC7B;AACF;AAKO,SAAS,wBACd,UACA,MACa;AAEb,UADmB,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ,GAC/C,OAAO,CAAC,UAAU,CAAC,cAAc,OAAO,IAAI,CAAC;AACjE;AAKO,SAAS,8BACd,UACA,cAC8D;AAE9D,UADmB,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ,GAC/C;AAAA,IAChB,CAAC,UACC,eAAe,KAAK,KAAK,aAAa,KAAK,CAAC,SAAS,MAAM,SAAS,IAAI;AAAA,EAC5E;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,19 @@
1
+ import { isValidElement } from "react";
2
+ function isChildOfType(element, type) {
3
+ return isValidElement(element) && element.type === type;
4
+ }
5
+ function getFirstChildOfType(children, type) {
6
+ const childArray = Array.isArray(children) ? children : [children];
7
+ for (const child of childArray) if (isChildOfType(child, type)) return child;
8
+ }
9
+ function getAllChildrenOfType(children, type) {
10
+ return (Array.isArray(children) ? children : [children]).filter(child => isChildOfType(child, type));
11
+ }
12
+ function getAllChildrenNotOfType(children, type) {
13
+ return (Array.isArray(children) ? children : [children]).filter(child => !isChildOfType(child, type));
14
+ }
15
+ function filterAllowedChildrenElements(children, allowedTypes) {
16
+ return (Array.isArray(children) ? children : [children]).filter(child => isValidElement(child) && allowedTypes.some(type => child.type === type));
17
+ }
18
+ export { filterAllowedChildrenElements, getAllChildrenNotOfType, getAllChildrenOfType, getFirstChildOfType, isChildOfType };
19
+ //# sourceMappingURL=children.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isValidElement","isChildOfType","element","type","getFirstChildOfType","children","childArray","Array","isArray","child","getAllChildrenOfType","filter","getAllChildrenNotOfType","filterAllowedChildrenElements","allowedTypes","some"],"sources":["../../../src/utils/children.ts"],"sourcesContent":[null],"mappings":"AAAA,SACEA,cAAA,QAIK;AAMA,SAASC,cACdC,OAAA,EACAC,IAAA,EACuE;EACvE,OAAOH,cAAA,CAAeE,OAAO,KAAKA,OAAA,CAAQC,IAAA,KAASA,IAAA;AACrD;AAKO,SAASC,oBACdC,QAAA,EACAF,IAAA,EACwE;EACxE,MAAMG,UAAA,GAAaC,KAAA,CAAMC,OAAA,CAAQH,QAAQ,IAAIA,QAAA,GAAW,CAACA,QAAQ;EACjE,WAAWI,KAAA,IAASH,UAAA,EAClB,IAAIL,aAAA,CAAcQ,KAAA,EAAON,IAAI,GAC3B,OAAOM,KAAA;AAIb;AAKO,SAASC,qBACdL,QAAA,EACAF,IAAA,EAC8D;EAE9D,QADmBI,KAAA,CAAMC,OAAA,CAAQH,QAAQ,IAAIA,QAAA,GAAW,CAACA,QAAQ,GAC/CM,MAAA,CACfF,KAAA,IACCR,aAAA,CAAcQ,KAAA,EAAON,IAAI,CAC7B;AACF;AAKO,SAASS,wBACdP,QAAA,EACAF,IAAA,EACa;EAEb,QADmBI,KAAA,CAAMC,OAAA,CAAQH,QAAQ,IAAIA,QAAA,GAAW,CAACA,QAAQ,GAC/CM,MAAA,CAAQF,KAAA,IAAU,CAACR,aAAA,CAAcQ,KAAA,EAAON,IAAI,CAAC;AACjE;AAKO,SAASU,8BACdR,QAAA,EACAS,YAAA,EAC8D;EAE9D,QADmBP,KAAA,CAAMC,OAAA,CAAQH,QAAQ,IAAIA,QAAA,GAAW,CAACA,QAAQ,GAC/CM,MAAA,CACfF,KAAA,IACCT,cAAA,CAAeS,KAAK,KAAKK,YAAA,CAAaC,IAAA,CAAMZ,IAAA,IAASM,KAAA,CAAMN,IAAA,KAASA,IAAI,CAC5E;AACF","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ import { isValidElement } from "react";
2
+ function isChildOfType(element, type) {
3
+ return isValidElement(element) && element.type === type;
4
+ }
5
+ function getFirstChildOfType(children, type) {
6
+ var childArray = Array.isArray(children) ? children : [children],
7
+ _iteratorNormalCompletion = !0,
8
+ _didIteratorError = !1,
9
+ _iteratorError = void 0;
10
+ try {
11
+ for (var _iterator = childArray[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
12
+ var child = _step.value;
13
+ if (isChildOfType(child, type)) return child;
14
+ }
15
+ } catch (err) {
16
+ _didIteratorError = !0, _iteratorError = err;
17
+ } finally {
18
+ try {
19
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
20
+ } finally {
21
+ if (_didIteratorError) throw _iteratorError;
22
+ }
23
+ }
24
+ }
25
+ function getAllChildrenOfType(children, type) {
26
+ var childArray = Array.isArray(children) ? children : [children];
27
+ return childArray.filter(function (child) {
28
+ return isChildOfType(child, type);
29
+ });
30
+ }
31
+ function getAllChildrenNotOfType(children, type) {
32
+ var childArray = Array.isArray(children) ? children : [children];
33
+ return childArray.filter(function (child) {
34
+ return !isChildOfType(child, type);
35
+ });
36
+ }
37
+ function filterAllowedChildrenElements(children, allowedTypes) {
38
+ var childArray = Array.isArray(children) ? children : [children];
39
+ return childArray.filter(function (child) {
40
+ return isValidElement(child) && allowedTypes.some(function (type) {
41
+ return child.type === type;
42
+ });
43
+ });
44
+ }
45
+ export { filterAllowedChildrenElements, getAllChildrenNotOfType, getAllChildrenOfType, getFirstChildOfType, isChildOfType };
46
+ //# sourceMappingURL=children.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isValidElement","isChildOfType","element","type","getFirstChildOfType","children","childArray","Array","isArray","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","child","value","err","return"],"sources":["../../../src/utils/children.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,cAAA;AAAA,SACEC,cAAAC,OAAA,EAAAC,IAAA;EAAA,OAIKH,cAAA,CAAAE,OAAA,KAAAA,OAAA,CAAAC,IAAA,KAAAA,IAAA;AAMA;AAIL,SAAOC,mBAAeA,CAAAC,QAAY,EAAAF,IAAA,EAAQ;EAC5C,IAAAG,UAAA,GAAAC,KAAA,CAAAC,OAAA,CAAAH,QAAA,IAAAA,QAAA,IAKOA,QAAS,CAId;IAAAI,yBAAyB,KAAQ;IAAAC,iBAAY,IAAW,CAAC;IAAAC,cAAQ;EACjE;IACE,KAAI,IAAAC,SAAc,GAAAN,UAAW,CAAAO,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MAC3B,IAAAS,KAAO,GAAAH,KAAA,CAAAI,KAAA;MAIb,IAAAlB,aAAA,CAAAiB,KAAA,EAAAf,IAAA,GAKO,OAASe,KAAA;IAKd;EAAkB,EAChB,OAACE,GAAA,EACC;IACJV,iBAAA,OAAAC,cAAA,GAAAS,GAAA;EACF;IAKO;MAKL,CAAAX,yBADyC,IAAIG,SAAA,CAAAS,MAAY,IAAQ,IAC/C,IAAAT,SAAQ,CAAAS,MAAW;IACvC;MAKO,IAASX,iBAAA,EAKd,MADmBC,cAAc;IAE/B;EAEF;AACF","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ function convertFontWeightToStringFontWeight(fontWeight) {
2
+ if (fontWeight !== void 0)
3
+ return typeof fontWeight == "number" ? String(fontWeight) : fontWeight;
4
+ }
5
+ export {
6
+ convertFontWeightToStringFontWeight
7
+ };
8
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/style.ts"],
4
+ "mappings": "AAMO,SAAS,oCACd,YACsD;AACtD,MAAI,eAAe;AAGnB,WAAI,OAAO,cAAe,WACjB,OAAO,UAAU,IAEnB;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,5 @@
1
+ function convertFontWeightToStringFontWeight(fontWeight) {
2
+ if (fontWeight !== void 0) return typeof fontWeight == "number" ? String(fontWeight) : fontWeight;
3
+ }
4
+ export { convertFontWeightToStringFontWeight };
5
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["convertFontWeightToStringFontWeight","fontWeight","String"],"sources":["../../../src/utils/style.ts"],"sourcesContent":[null],"mappings":"AAMO,SAASA,oCACdC,UAAA,EACsD;EACtD,IAAIA,UAAA,KAAe,QAGnB,OAAI,OAAOA,UAAA,IAAe,WACjBC,MAAA,CAAOD,UAAU,IAEnBA,UAAA;AACT","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ function convertFontWeightToStringFontWeight(fontWeight) {
2
+ if (fontWeight !== void 0) return typeof fontWeight == "number" ? String(fontWeight) : fontWeight;
3
+ }
4
+ export { convertFontWeightToStringFontWeight };
5
+ //# sourceMappingURL=style.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["convertFontWeightToStringFontWeight","fontWeight","String"],"sources":["../../../src/utils/style.ts"],"sourcesContent":[null],"mappings":"AAMO,SAASA,oCACdC,UAAA,EACsD;EACtD,IAAIA,UAAA,KAAe,QAGnB,OAAI,OAAOA,UAAA,IAAe,WACjBC,MAAA,CAAOD,UAAU,IAEnBA,UAAA;AACT","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "1.2.69",
3
+ "version": "1.2.70",
4
4
  "license": "BSD-3-Clause",
5
5
  "sideEffects": [
6
6
  "setup.mjs",
@@ -139,17 +139,17 @@
139
139
  "@react-navigation/routers": "~7.5.1",
140
140
  "@swc/core": "^1.14.0",
141
141
  "@ungap/structured-clone": "^1.2.0",
142
- "@vxrn/color-scheme": "1.2.69",
143
- "@vxrn/compiler": "1.2.69",
144
- "@vxrn/resolve": "1.2.69",
145
- "@vxrn/tslib-lite": "1.2.69",
146
- "@vxrn/use-isomorphic-layout-effect": "1.2.69",
147
- "@vxrn/vite-plugin-metro": "1.2.69",
142
+ "@vxrn/color-scheme": "1.2.70",
143
+ "@vxrn/compiler": "1.2.70",
144
+ "@vxrn/resolve": "1.2.70",
145
+ "@vxrn/tslib-lite": "1.2.70",
146
+ "@vxrn/use-isomorphic-layout-effect": "1.2.70",
147
+ "@vxrn/vite-plugin-metro": "1.2.70",
148
148
  "babel-dead-code-elimination": "1.0.10",
149
149
  "babel-plugin-module-resolver": "^5.0.2",
150
150
  "citty": "^0.1.6",
151
151
  "core-js": "^3.38.1",
152
- "create-vxrn": "1.2.69",
152
+ "create-vxrn": "1.2.70",
153
153
  "escape-string-regexp": "^5.0.0",
154
154
  "expo-linking": "~8.0.8",
155
155
  "expo-modules-core": "~3.0.24",
@@ -177,7 +177,7 @@
177
177
  "vite": "^7.1.12",
178
178
  "vite-plugin-barrel": "^0.4.1",
179
179
  "vite-tsconfig-paths": "^5.1.4",
180
- "vxrn": "1.2.69",
180
+ "vxrn": "1.2.70",
181
181
  "ws": "^8.18.0",
182
182
  "xxhashjs": "^0.2.2"
183
183
  },
@@ -0,0 +1,32 @@
1
+ // Mock for @react-navigation/native-stack used in vitest tests
2
+
3
+ export type NativeStackNavigationOptions = {
4
+ title?: string
5
+ headerLargeTitle?: boolean
6
+ headerTitleAlign?: 'left' | 'center'
7
+ headerTitleStyle?: any
8
+ headerLargeTitleStyle?: any
9
+ headerBackTitle?: string
10
+ headerBackTitleStyle?: any
11
+ headerBackImageSource?: any
12
+ headerBackButtonDisplayMode?: string
13
+ headerBackButtonMenuEnabled?: boolean
14
+ headerBackVisible?: boolean
15
+ headerSearchBarOptions?: any
16
+ headerShown?: boolean
17
+ headerBlurEffect?: string
18
+ headerStyle?: any
19
+ headerLargeStyle?: any
20
+ headerShadowVisible?: boolean
21
+ headerLargeTitleShadowVisible?: boolean
22
+ headerLeft?: () => any
23
+ headerRight?: () => any
24
+ header?: () => any
25
+ animation?: string
26
+ gestureEnabled?: boolean
27
+ }
28
+
29
+ export const createNativeStackNavigator = () => ({
30
+ Navigator: () => null,
31
+ Screen: () => null,
32
+ })
@@ -0,0 +1,21 @@
1
+ // Mock for @react-navigation/native used in vitest tests
2
+
3
+ export const useNavigation = () => ({
4
+ navigate: () => {},
5
+ goBack: () => {},
6
+ setOptions: () => {},
7
+ getParent: () => null,
8
+ })
9
+
10
+ export const NavigationContainer = ({ children }: any) => children
11
+
12
+ export type NavigationProp<T = any> = {
13
+ navigate: (route: string, params?: any) => void
14
+ goBack: () => void
15
+ setOptions: (options: any) => void
16
+ getParent: (id?: string) => any
17
+ }
18
+
19
+ export type ParamListBase = Record<string, object | undefined>
20
+ export type StackNavigationState<T> = any
21
+ export type EventMapBase = any
@@ -0,0 +1,6 @@
1
+ // Mock for expo-linking used in vitest tests
2
+
3
+ export const createURL = (path: string) => `exp://localhost/${path}`
4
+ export const parse = (url: string) => ({ path: url })
5
+ export const addEventListener = () => ({ remove: () => {} })
6
+ export const getInitialURL = async () => null
@@ -0,0 +1,11 @@
1
+ // Mock for expo-modules-core used in vitest tests
2
+
3
+ export const EventEmitter = class EventEmitter {
4
+ addListener() {}
5
+ removeListener() {}
6
+ emit() {}
7
+ }
8
+
9
+ export const NativeModulesProxy = {}
10
+ export const requireNativeModule = () => ({})
11
+ export const requireOptionalNativeModule = () => null
@@ -0,0 +1,17 @@
1
+ // Mock for react-native-screens used in vitest tests
2
+
3
+ export const Screen = 'Screen'
4
+ export const ScreenContainer = 'ScreenContainer'
5
+
6
+ export type ScreenStackHeaderConfigProps = {
7
+ blurEffect?: string
8
+ backgroundColor?: string
9
+ largeTitleBackgroundColor?: string
10
+ backButtonDisplayMode?: 'default' | 'minimal' | 'generic'
11
+ }
12
+
13
+ export type SearchBarProps = {
14
+ placeholder?: string
15
+ onChangeText?: (text: string) => void
16
+ autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters'
17
+ }
@@ -0,0 +1,20 @@
1
+ // Mock for react-native used in vitest tests
2
+
3
+ export const StyleSheet = {
4
+ create: <T extends Record<string, any>>(styles: T): T => styles,
5
+ flatten: (style: any): any => {
6
+ if (Array.isArray(style)) {
7
+ return Object.assign({}, ...style.filter(Boolean))
8
+ }
9
+ return style || {}
10
+ },
11
+ }
12
+
13
+ export const Platform = {
14
+ OS: 'web',
15
+ select: (obj: any) => obj.web || obj.default,
16
+ }
17
+
18
+ export const View = 'View'
19
+ export const Text = 'Text'
20
+ export const Pressable = 'Pressable'
@@ -44,6 +44,7 @@ import { useThenable } from './useThenable'
44
44
 
45
45
  declare global {
46
46
  // eslint-disable-next-line no-var
47
+ // @ts-ignore - Type differs between react-navigation versions
47
48
  var REACT_NAVIGATION_DEVTOOLS: WeakMap<
48
49
  NavigationContainerRef<any>,
49
50
  { readonly linking: LinkingOptions<any> }
@@ -147,6 +148,7 @@ function NavigationContainerInner(
147
148
  // This will be used by the devtools
148
149
  React.useEffect(() => {
149
150
  if (refContainer.current) {
151
+ // @ts-ignore - Type differs between react-navigation versions in monorepo
150
152
  REACT_NAVIGATION_DEVTOOLS.set(refContainer.current, {
151
153
  get linking() {
152
154
  return {
package/src/index.ts CHANGED
@@ -72,6 +72,16 @@ export { href } from './href'
72
72
  export { Stack } from './layouts/Stack'
73
73
  export { Tabs } from './layouts/Tabs'
74
74
  export { Protected, type ProtectedProps } from './views/Protected'
75
+ // Stack header compositional API types
76
+ export type {
77
+ StackHeaderProps,
78
+ StackHeaderBackButtonProps,
79
+ StackHeaderTitleProps,
80
+ StackHeaderLeftProps,
81
+ StackHeaderRightProps,
82
+ StackHeaderSearchBarProps,
83
+ StackScreenProps,
84
+ } from './layouts/stack-utils'
75
85
  // utilities
76
86
  export { withLayoutContext } from './layouts/withLayoutContext'
77
87
  export { Link } from './link/Link'
@@ -5,15 +5,21 @@ import {
5
5
  type NativeStackNavigationOptions,
6
6
  } from '@react-navigation/native-stack'
7
7
 
8
+ import { StackScreen, StackHeader } from './stack-utils'
8
9
  import { withLayoutContext } from './withLayoutContext'
9
10
 
10
11
  const NativeStackNavigator = createNativeStackNavigator().Navigator
11
12
 
12
- export const Stack = withLayoutContext<
13
+ const StackBase = withLayoutContext<
13
14
  NativeStackNavigationOptions,
14
15
  typeof NativeStackNavigator,
15
16
  StackNavigationState<ParamListBase>,
16
17
  NativeStackNavigationEventMap
17
18
  >(NativeStackNavigator)
18
19
 
20
+ export const Stack = Object.assign(StackBase, {
21
+ Screen: StackScreen,
22
+ Header: StackHeader,
23
+ })
24
+
19
25
  export default Stack
@@ -0,0 +1,211 @@
1
+ # Stack Header Composition API
2
+
3
+ A declarative JSX API for configuring native stack headers in One.
4
+
5
+ ## Overview
6
+
7
+ The Stack Header Composition API provides a more intuitive way to configure stack navigation headers using JSX components instead of the traditional options object. This is particularly useful for complex header configurations like large titles, custom buttons, and search bars.
8
+
9
+ ## Installation
10
+
11
+ The components are available through the main `one` package:
12
+
13
+ ```tsx
14
+ import { Stack } from 'one'
15
+ ```
16
+
17
+ ## Core Components
18
+
19
+ | Component | Description |
20
+ |-----------|-------------|
21
+ | `Stack.Screen` | Screen wrapper with header composition support |
22
+ | `Stack.Header` | Main header configuration container |
23
+ | `Stack.Header.Title` | Configure title text and large title mode |
24
+ | `Stack.Header.Left` | Custom left header content |
25
+ | `Stack.Header.Right` | Custom right header content |
26
+ | `Stack.Header.BackButton` | Back button configuration |
27
+ | `Stack.Header.SearchBar` | Search bar configuration |
28
+
29
+ ## Basic Usage
30
+
31
+ ```tsx
32
+ import { Stack } from 'one'
33
+
34
+ export default function Layout() {
35
+ return (
36
+ <Stack>
37
+ <Stack.Screen name="index">
38
+ <Stack.Header>
39
+ <Stack.Header.Title large>Welcome</Stack.Header.Title>
40
+ </Stack.Header>
41
+ </Stack.Screen>
42
+ </Stack>
43
+ )
44
+ }
45
+ ```
46
+
47
+ ## Large Title with Blur Effect (iOS)
48
+
49
+ The classic iOS large title pattern with blur effect:
50
+
51
+ ```tsx
52
+ <Stack.Screen name="feed">
53
+ <Stack.Header blurEffect="regular" style={{ backgroundColor: 'transparent' }}>
54
+ <Stack.Header.Title large>Feed</Stack.Header.Title>
55
+ </Stack.Header>
56
+ </Stack.Screen>
57
+ ```
58
+
59
+ ## Custom Header Buttons
60
+
61
+ Add custom buttons to the left or right side of the header:
62
+
63
+ ```tsx
64
+ <Stack.Screen name="profile">
65
+ <Stack.Header>
66
+ <Stack.Header.Title>Profile</Stack.Header.Title>
67
+ <Stack.Header.Left asChild>
68
+ <Button onPress={goBack}>Back</Button>
69
+ </Stack.Header.Left>
70
+ <Stack.Header.Right asChild>
71
+ <Button onPress={openSettings}>Settings</Button>
72
+ </Stack.Header.Right>
73
+ </Stack.Header>
74
+ </Stack.Screen>
75
+ ```
76
+
77
+ ## Search Bar
78
+
79
+ Add an integrated search bar to the header:
80
+
81
+ ```tsx
82
+ <Stack.Screen name="search">
83
+ <Stack.Header>
84
+ <Stack.Header.Title>Search</Stack.Header.Title>
85
+ <Stack.Header.SearchBar
86
+ placeholder="Search..."
87
+ onChangeText={handleSearch}
88
+ />
89
+ </Stack.Header>
90
+ </Stack.Screen>
91
+ ```
92
+
93
+ ## Back Button Configuration
94
+
95
+ Customize the back button appearance and behavior:
96
+
97
+ ```tsx
98
+ <Stack.Screen name="detail">
99
+ <Stack.Header>
100
+ <Stack.Header.Title>Detail</Stack.Header.Title>
101
+ <Stack.Header.BackButton
102
+ displayMode="minimal"
103
+ hidden={false}
104
+ >
105
+ Back
106
+ </Stack.Header.BackButton>
107
+ </Stack.Header>
108
+ </Stack.Screen>
109
+ ```
110
+
111
+ ## Custom Header Component
112
+
113
+ Replace the entire header with a custom component:
114
+
115
+ ```tsx
116
+ <Stack.Screen name="custom">
117
+ <Stack.Header asChild>
118
+ <CustomHeader />
119
+ </Stack.Header>
120
+ </Stack.Screen>
121
+ ```
122
+
123
+ ## Combining with Options
124
+
125
+ You can combine the composition API with the traditional options prop:
126
+
127
+ ```tsx
128
+ <Stack.Screen
129
+ name="mixed"
130
+ options={{
131
+ animation: 'slide_from_right',
132
+ gestureEnabled: true,
133
+ }}
134
+ >
135
+ <Stack.Header>
136
+ <Stack.Header.Title large>Mixed Config</Stack.Header.Title>
137
+ </Stack.Header>
138
+ </Stack.Screen>
139
+ ```
140
+
141
+ ## API Reference
142
+
143
+ ### Stack.Header Props
144
+
145
+ | Prop | Type | Description |
146
+ |------|------|-------------|
147
+ | `hidden` | `boolean` | Hide the header entirely |
148
+ | `asChild` | `boolean` | Render children as the entire header |
149
+ | `blurEffect` | `'regular' \| 'prominent' \| ...` | iOS blur effect |
150
+ | `style` | `StyleProp` | Header style (backgroundColor, shadowColor) |
151
+ | `largeStyle` | `StyleProp` | Large title header style |
152
+
153
+ ### Stack.Header.Title Props
154
+
155
+ | Prop | Type | Description |
156
+ |------|------|-------------|
157
+ | `children` | `string` | Title text |
158
+ | `large` | `boolean` | Enable large title mode |
159
+ | `style` | `StyleProp` | Title text style |
160
+ | `largeStyle` | `StyleProp` | Large title text style |
161
+
162
+ ### Stack.Header.Left / Right Props
163
+
164
+ | Prop | Type | Description |
165
+ |------|------|-------------|
166
+ | `children` | `ReactNode` | Content to render |
167
+ | `asChild` | `boolean` | Required to render custom content |
168
+
169
+ ### Stack.Header.BackButton Props
170
+
171
+ | Prop | Type | Description |
172
+ |------|------|-------------|
173
+ | `children` | `string` | Back button title |
174
+ | `hidden` | `boolean` | Hide the back button |
175
+ | `displayMode` | `'default' \| 'minimal' \| 'generic'` | Display mode |
176
+ | `withMenu` | `boolean` | Enable back button menu |
177
+ | `src` | `ImageSourcePropType` | Custom back button image |
178
+ | `style` | `TextStyle` | Back button title style |
179
+
180
+ ### Stack.Header.SearchBar Props
181
+
182
+ Accepts all props from `react-native-screens` SearchBarProps.
183
+
184
+ ## Comparison with Options API
185
+
186
+ **Traditional options API:**
187
+ ```tsx
188
+ <Stack.Screen
189
+ name="index"
190
+ options={{
191
+ title: 'Welcome',
192
+ headerLargeTitle: true,
193
+ headerBlurEffect: 'regular',
194
+ headerRight: () => <Button>Action</Button>,
195
+ }}
196
+ />
197
+ ```
198
+
199
+ **Composition API:**
200
+ ```tsx
201
+ <Stack.Screen name="index">
202
+ <Stack.Header blurEffect="regular">
203
+ <Stack.Header.Title large>Welcome</Stack.Header.Title>
204
+ <Stack.Header.Right asChild>
205
+ <Button>Action</Button>
206
+ </Stack.Header.Right>
207
+ </Stack.Header>
208
+ </Stack.Screen>
209
+ ```
210
+
211
+ Both approaches work, choose based on your preference. The composition API can be more readable for complex configurations.