@react-navigation/native 8.0.0-alpha.3 → 8.0.0-alpha.31

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 (416) hide show
  1. package/android/build.gradle +80 -6
  2. package/android/src/main/java/org/reactnavigation/MaterialSymbolModule.kt +33 -12
  3. package/android/src/main/java/org/reactnavigation/MaterialSymbolTypeface.kt +81 -8
  4. package/android/src/main/java/org/reactnavigation/MaterialSymbolView.kt +39 -6
  5. package/android/src/main/java/org/reactnavigation/MaterialSymbolViewManager.kt +14 -7
  6. package/android/src/main/java/org/reactnavigation/ReactNavigationPackage.kt +3 -1
  7. package/assets/fonts/MaterialSymbolsOutlined_100.ttf +0 -0
  8. package/assets/fonts/MaterialSymbolsOutlined_200.ttf +0 -0
  9. package/assets/fonts/MaterialSymbolsOutlined_300.ttf +0 -0
  10. package/assets/fonts/MaterialSymbolsOutlined_500.ttf +0 -0
  11. package/assets/fonts/MaterialSymbolsOutlined_600.ttf +0 -0
  12. package/assets/fonts/MaterialSymbolsOutlined_700.ttf +0 -0
  13. package/assets/fonts/MaterialSymbolsRounded.codepoints +4102 -0
  14. package/assets/fonts/MaterialSymbolsRounded_100.ttf +0 -0
  15. package/assets/fonts/MaterialSymbolsRounded_200.ttf +0 -0
  16. package/assets/fonts/MaterialSymbolsRounded_300.ttf +0 -0
  17. package/assets/fonts/MaterialSymbolsRounded_400.ttf +0 -0
  18. package/assets/fonts/MaterialSymbolsRounded_500.ttf +0 -0
  19. package/assets/fonts/MaterialSymbolsRounded_600.ttf +0 -0
  20. package/assets/fonts/MaterialSymbolsRounded_700.ttf +0 -0
  21. package/assets/fonts/MaterialSymbolsSharp.codepoints +4102 -0
  22. package/assets/fonts/MaterialSymbolsSharp_100.ttf +0 -0
  23. package/assets/fonts/MaterialSymbolsSharp_200.ttf +0 -0
  24. package/assets/fonts/MaterialSymbolsSharp_300.ttf +0 -0
  25. package/assets/fonts/MaterialSymbolsSharp_400.ttf +0 -0
  26. package/assets/fonts/MaterialSymbolsSharp_500.ttf +0 -0
  27. package/assets/fonts/MaterialSymbolsSharp_600.ttf +0 -0
  28. package/assets/fonts/MaterialSymbolsSharp_700.ttf +0 -0
  29. package/ios/ReactNavigationCornerInsetView.h +14 -0
  30. package/ios/ReactNavigationCornerInsetView.mm +182 -0
  31. package/ios/ReactNavigationCornerInsetView.swift +193 -0
  32. package/ios/ReactNavigationCornerInsetViewComponentDescriptor.h +23 -0
  33. package/ios/ReactNavigationCornerInsetViewShadowNode.h +27 -0
  34. package/ios/ReactNavigationCornerInsetViewShadowNode.mm +42 -0
  35. package/ios/ReactNavigationCornerInsetViewState.h +19 -0
  36. package/ios/ReactNavigationSFSymbolView.mm +34 -0
  37. package/ios/ReactNavigationSFSymbolView.swift +543 -7
  38. package/lib/module/NavigationContainer.js +16 -11
  39. package/lib/module/NavigationContainer.js.map +1 -1
  40. package/lib/module/__stubs__/createStackNavigator.js +10 -4
  41. package/lib/module/__stubs__/createStackNavigator.js.map +1 -1
  42. package/lib/module/__stubs__/window.js +3 -0
  43. package/lib/module/__stubs__/window.js.map +1 -1
  44. package/lib/module/createMemoryHistory.js +15 -6
  45. package/lib/module/createMemoryHistory.js.map +1 -1
  46. package/lib/module/createStandardNavigationFactories.js +99 -0
  47. package/lib/module/createStandardNavigationFactories.js.map +1 -0
  48. package/lib/module/createStaticNavigation.js +5 -4
  49. package/lib/module/createStaticNavigation.js.map +1 -1
  50. package/lib/module/extractPathFromURL.js +2 -2
  51. package/lib/module/extractPathFromURL.js.map +1 -1
  52. package/lib/module/getStateFromHref.js +2 -2
  53. package/lib/module/getStateFromHref.js.map +1 -1
  54. package/lib/module/index.js +4 -2
  55. package/lib/module/index.js.map +1 -1
  56. package/lib/module/native/CornerInset.ios.js +66 -0
  57. package/lib/module/native/CornerInset.ios.js.map +1 -0
  58. package/lib/module/native/CornerInset.js +17 -0
  59. package/lib/module/native/CornerInset.js.map +1 -0
  60. package/lib/module/native/MaterialSymbol.android.js +9 -20
  61. package/lib/module/native/MaterialSymbol.android.js.map +1 -1
  62. package/lib/module/native/MaterialSymbolData.js +0 -7
  63. package/lib/module/native/MaterialSymbolData.js.map +1 -1
  64. package/lib/module/native/MaterialSymbolViewNativeComponent.ts +4 -4
  65. package/lib/module/native/NativeMaterialSymbolModule.js.map +1 -1
  66. package/lib/module/native/ReactNavigationCornerInsetViewNativeComponent.ts +32 -0
  67. package/lib/module/native/SFSymbol.ios.js +45 -1
  68. package/lib/module/native/SFSymbol.ios.js.map +1 -1
  69. package/lib/module/native/SFSymbolViewNativeComponent.ts +28 -1
  70. package/lib/module/native/constants.js +14 -0
  71. package/lib/module/native/constants.js.map +1 -0
  72. package/lib/module/server/ServerContext.js.map +1 -0
  73. package/lib/module/server/index.js +21 -0
  74. package/lib/module/server/index.js.map +1 -0
  75. package/lib/module/theming/DarkTheme.js +4 -4
  76. package/lib/module/theming/{DefaultTheme.js → LightTheme.js} +5 -5
  77. package/lib/module/theming/LightTheme.js.map +1 -0
  78. package/lib/module/theming/MaterialFallbackTheme.js +28 -0
  79. package/lib/module/theming/MaterialFallbackTheme.js.map +1 -0
  80. package/lib/module/theming/MaterialTheme.android.js +33 -0
  81. package/lib/module/theming/MaterialTheme.android.js.map +1 -0
  82. package/lib/module/theming/MaterialTheme.js +4 -0
  83. package/lib/module/theming/MaterialTheme.js.map +1 -0
  84. package/lib/module/useBackButton.js.map +1 -1
  85. package/lib/module/useDocumentTitle.js.map +1 -1
  86. package/lib/module/useLinkBuilder.js +8 -7
  87. package/lib/module/useLinkBuilder.js.map +1 -1
  88. package/lib/module/useLinkProps.js +5 -26
  89. package/lib/module/useLinkProps.js.map +1 -1
  90. package/lib/module/useLinkTo.js +1 -1
  91. package/lib/module/useLinkTo.js.map +1 -1
  92. package/lib/module/useLinking.js +81 -11
  93. package/lib/module/useLinking.js.map +1 -1
  94. package/lib/module/useLinking.native.js +25 -8
  95. package/lib/module/useLinking.native.js.map +1 -1
  96. package/lib/module/useLocale.js +1 -1
  97. package/lib/module/useLocale.js.map +1 -1
  98. package/lib/module/useMemoArray.js +25 -0
  99. package/lib/module/useMemoArray.js.map +1 -0
  100. package/lib/module/useRoutePath.js +1 -1
  101. package/lib/module/useRoutePath.js.map +1 -1
  102. package/lib/module/useScrollToTop.js +3 -2
  103. package/lib/module/useScrollToTop.js.map +1 -1
  104. package/lib/typescript/src/Link.d.ts +1 -1
  105. package/lib/typescript/src/Link.d.ts.map +1 -1
  106. package/lib/typescript/src/LinkingContext.d.ts +1 -1
  107. package/lib/typescript/src/LinkingContext.d.ts.map +1 -1
  108. package/lib/typescript/src/LocaleDirContext.d.ts +1 -1
  109. package/lib/typescript/src/LocaleDirContext.d.ts.map +1 -1
  110. package/lib/typescript/src/NavigationContainer.d.ts +13 -6
  111. package/lib/typescript/src/NavigationContainer.d.ts.map +1 -1
  112. package/lib/typescript/src/__stubs__/createStackNavigator.d.ts +6 -9
  113. package/lib/typescript/src/__stubs__/createStackNavigator.d.ts.map +1 -1
  114. package/lib/typescript/src/__stubs__/window.d.ts.map +1 -1
  115. package/lib/typescript/src/createMemoryHistory.d.ts +1 -1
  116. package/lib/typescript/src/createMemoryHistory.d.ts.map +1 -1
  117. package/lib/typescript/src/createStandardNavigationFactories.d.ts +31 -0
  118. package/lib/typescript/src/createStandardNavigationFactories.d.ts.map +1 -0
  119. package/lib/typescript/src/createStaticNavigation.d.ts +7 -7
  120. package/lib/typescript/src/createStaticNavigation.d.ts.map +1 -1
  121. package/lib/typescript/src/extractPathFromURL.d.ts +1 -1
  122. package/lib/typescript/src/extractPathFromURL.d.ts.map +1 -1
  123. package/lib/typescript/src/getStateFromHref.d.ts +3 -3
  124. package/lib/typescript/src/getStateFromHref.d.ts.map +1 -1
  125. package/lib/typescript/src/index.d.ts +17 -15
  126. package/lib/typescript/src/index.d.ts.map +1 -1
  127. package/lib/typescript/src/native/CornerInset.d.ts +28 -0
  128. package/lib/typescript/src/native/CornerInset.d.ts.map +1 -0
  129. package/lib/typescript/src/native/CornerInset.ios.d.ts +8 -0
  130. package/lib/typescript/src/native/CornerInset.ios.d.ts.map +1 -0
  131. package/lib/typescript/src/native/MaterialSymbol.android.d.ts +3 -3
  132. package/lib/typescript/src/native/MaterialSymbol.android.d.ts.map +1 -1
  133. package/lib/typescript/src/native/MaterialSymbol.d.ts +1 -1
  134. package/lib/typescript/src/native/MaterialSymbol.d.ts.map +1 -1
  135. package/lib/typescript/src/native/MaterialSymbolData.d.ts +0 -3
  136. package/lib/typescript/src/native/MaterialSymbolData.d.ts.map +1 -1
  137. package/lib/typescript/src/native/MaterialSymbolViewNativeComponent.d.ts +3 -3
  138. package/lib/typescript/src/native/MaterialSymbolViewNativeComponent.d.ts.map +1 -1
  139. package/lib/typescript/src/native/NativeMaterialSymbolModule.d.ts +1 -1
  140. package/lib/typescript/src/native/NativeMaterialSymbolModule.d.ts.map +1 -1
  141. package/lib/typescript/src/native/ReactNavigationCornerInsetViewNativeComponent.d.ts +14 -0
  142. package/lib/typescript/src/native/ReactNavigationCornerInsetViewNativeComponent.d.ts.map +1 -0
  143. package/lib/typescript/src/native/SFSymbol.d.ts +1 -1
  144. package/lib/typescript/src/native/SFSymbol.d.ts.map +1 -1
  145. package/lib/typescript/src/native/SFSymbol.ios.d.ts +2 -2
  146. package/lib/typescript/src/native/SFSymbol.ios.d.ts.map +1 -1
  147. package/lib/typescript/src/native/SFSymbolViewNativeComponent.d.ts +28 -1
  148. package/lib/typescript/src/native/SFSymbolViewNativeComponent.d.ts.map +1 -1
  149. package/lib/typescript/src/native/constants.d.ts +12 -0
  150. package/lib/typescript/src/native/constants.d.ts.map +1 -0
  151. package/lib/typescript/src/native/types.d.ts +345 -5
  152. package/lib/typescript/src/native/types.d.ts.map +1 -1
  153. package/lib/typescript/src/{ServerContext.d.ts → server/ServerContext.d.ts} +1 -4
  154. package/lib/typescript/src/server/ServerContext.d.ts.map +1 -0
  155. package/lib/typescript/src/server/index.d.ts +10 -0
  156. package/lib/typescript/src/server/index.d.ts.map +1 -0
  157. package/lib/typescript/src/theming/DarkTheme.d.ts +4 -4
  158. package/lib/typescript/src/theming/{DefaultTheme.d.ts → LightTheme.d.ts} +5 -5
  159. package/lib/typescript/src/theming/LightTheme.d.ts.map +1 -0
  160. package/lib/typescript/src/theming/MaterialFallbackTheme.d.ts +127 -0
  161. package/lib/typescript/src/theming/MaterialFallbackTheme.d.ts.map +1 -0
  162. package/lib/typescript/src/theming/MaterialTheme.android.d.ts +251 -0
  163. package/lib/typescript/src/theming/MaterialTheme.android.d.ts.map +1 -0
  164. package/lib/typescript/src/theming/MaterialTheme.d.ts +2 -0
  165. package/lib/typescript/src/theming/MaterialTheme.d.ts.map +1 -0
  166. package/lib/typescript/src/types.d.ts +13 -16
  167. package/lib/typescript/src/types.d.ts.map +1 -1
  168. package/lib/typescript/src/useBackButton.d.ts +1 -1
  169. package/lib/typescript/src/useBackButton.d.ts.map +1 -1
  170. package/lib/typescript/src/useDocumentTitle.d.ts +2 -2
  171. package/lib/typescript/src/useDocumentTitle.d.ts.map +1 -1
  172. package/lib/typescript/src/useLinkBuilder.d.ts +54 -66
  173. package/lib/typescript/src/useLinkBuilder.d.ts.map +1 -1
  174. package/lib/typescript/src/useLinkProps.d.ts.map +1 -1
  175. package/lib/typescript/src/useLinking.d.ts +17 -19
  176. package/lib/typescript/src/useLinking.d.ts.map +1 -1
  177. package/lib/typescript/src/useLinking.native.d.ts +31 -33
  178. package/lib/typescript/src/useLinking.native.d.ts.map +1 -1
  179. package/lib/typescript/src/useLocale.d.ts +1 -1
  180. package/lib/typescript/src/useMemoArray.d.ts +2 -0
  181. package/lib/typescript/src/useMemoArray.d.ts.map +1 -0
  182. package/lib/typescript/src/useScrollToTop.d.ts.map +1 -1
  183. package/package.json +41 -22
  184. package/src/NavigationContainer.tsx +41 -32
  185. package/src/__stubs__/createStackNavigator.tsx +19 -17
  186. package/src/__stubs__/window.tsx +5 -0
  187. package/src/createMemoryHistory.tsx +19 -6
  188. package/src/createStandardNavigationFactories.tsx +218 -0
  189. package/src/createStaticNavigation.tsx +13 -17
  190. package/src/extractPathFromURL.tsx +5 -3
  191. package/src/getStateFromHref.tsx +8 -3
  192. package/src/index.tsx +11 -2
  193. package/src/native/CornerInset.ios.tsx +85 -0
  194. package/src/native/CornerInset.tsx +40 -0
  195. package/src/native/MaterialSymbol.android.tsx +9 -28
  196. package/src/native/MaterialSymbolData.tsx +0 -4
  197. package/src/native/MaterialSymbolViewNativeComponent.ts +4 -4
  198. package/src/native/NativeMaterialSymbolModule.ts +3 -4
  199. package/src/native/ReactNavigationCornerInsetViewNativeComponent.ts +32 -0
  200. package/src/native/SFSymbol.ios.tsx +84 -2
  201. package/src/native/SFSymbolViewNativeComponent.ts +28 -1
  202. package/src/native/constants.tsx +11 -0
  203. package/src/native/types.tsx +433 -4
  204. package/src/{ServerContext.tsx → server/ServerContext.tsx} +1 -4
  205. package/src/server/index.tsx +19 -0
  206. package/src/theming/DarkTheme.tsx +4 -4
  207. package/src/theming/{DefaultTheme.tsx → LightTheme.tsx} +4 -4
  208. package/src/theming/MaterialFallbackTheme.tsx +29 -0
  209. package/src/theming/MaterialTheme.android.tsx +45 -0
  210. package/src/theming/MaterialTheme.tsx +4 -0
  211. package/src/types.tsx +38 -40
  212. package/src/useBackButton.tsx +2 -2
  213. package/src/useDocumentTitle.tsx +2 -2
  214. package/src/useLinkBuilder.tsx +15 -7
  215. package/src/useLinkProps.tsx +8 -41
  216. package/src/useLinkTo.tsx +1 -1
  217. package/src/useLinking.native.tsx +58 -30
  218. package/src/useLinking.tsx +132 -22
  219. package/src/useLocale.tsx +1 -1
  220. package/src/useMemoArray.tsx +41 -0
  221. package/src/useRoutePath.tsx +1 -1
  222. package/src/useScrollToTop.tsx +3 -2
  223. package/android/build/.transforms/586a73aab4c351d3f13dc604ca6964e8/results.bin +0 -1
  224. package/android/build/.transforms/586a73aab4c351d3f13dc604ca6964e8/transformed/classes/classes_dex/classes.dex +0 -0
  225. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/results.bin +0 -1
  226. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.dex +0 -0
  227. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.dex +0 -0
  228. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.dex +0 -0
  229. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerDelegate.dex +0 -0
  230. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerInterface.dex +0 -0
  231. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/BuildConfig.dex +0 -0
  232. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$Companion.dex +0 -0
  233. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$WhenMappings.dex +0 -0
  234. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$getImageSource$1.dex +0 -0
  235. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule.dex +0 -0
  236. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolTypeface.dex +0 -0
  237. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolView.dex +0 -0
  238. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolViewManager$Companion.dex +0 -0
  239. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolViewManager.dex +0 -0
  240. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/ReactNavigationPackage.dex +0 -0
  241. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  242. package/android/build/generated/source/buildConfig/debug/org/reactnavigation/BuildConfig.java +0 -10
  243. package/android/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.java +0 -38
  244. package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.java +0 -45
  245. package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.java +0 -22
  246. package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerDelegate.java +0 -39
  247. package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerInterface.java +0 -20
  248. package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -28
  249. package/android/build/generated/source/codegen/jni/ReactNavigationSpec-generated.cpp +0 -32
  250. package/android/build/generated/source/codegen/jni/ReactNavigationSpec.h +0 -31
  251. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ComponentDescriptors.cpp +0 -23
  252. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ComponentDescriptors.h +0 -25
  253. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/EventEmitters.cpp +0 -17
  254. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/EventEmitters.h +0 -30
  255. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/Props.cpp +0 -106
  256. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/Props.h +0 -113
  257. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ReactNavigationSpecJSI-generated.cpp +0 -32
  258. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ReactNavigationSpecJSI.h +0 -71
  259. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ShadowNodes.cpp +0 -18
  260. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ShadowNodes.h +0 -43
  261. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/States.cpp +0 -16
  262. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/States.h +0 -22
  263. package/android/build/generated/source/codegen/schema.json +0 -1
  264. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -7
  265. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
  266. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
  267. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
  268. package/android/build/intermediates/assets/debug/mergeDebugAssets/fonts/MaterialSymbolsOutlined_400.ttf +0 -0
  269. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  270. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  271. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  272. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  273. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  274. package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +0 -2
  275. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  276. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  277. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-navigation_native_debug.kotlin_module +0 -0
  278. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.class +0 -0
  279. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.class +0 -0
  280. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.class +0 -0
  281. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerDelegate.class +0 -0
  282. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerInterface.class +0 -0
  283. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/org/reactnavigation/BuildConfig.class +0 -0
  284. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
  285. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -7
  286. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -7
  287. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
  288. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
  289. package/android/build/intermediates/react-navigation/fonts/MaterialSymbolsOutlined_400.ttf +0 -0
  290. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-navigation_native_debug.kotlin_module +0 -0
  291. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.class +0 -0
  292. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.class +0 -0
  293. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.class +0 -0
  294. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerDelegate.class +0 -0
  295. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationSFSymbolViewManagerInterface.class +0 -0
  296. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/BuildConfig.class +0 -0
  297. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule$Companion.class +0 -0
  298. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule$WhenMappings.class +0 -0
  299. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule$getImageSource$1.class +0 -0
  300. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule.class +0 -0
  301. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolTypeface.class +0 -0
  302. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolView.class +0 -0
  303. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolViewManager$Companion.class +0 -0
  304. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolViewManager.class +0 -0
  305. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/ReactNavigationPackage.class +0 -0
  306. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  307. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
  308. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  309. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  310. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  311. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  312. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  313. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  314. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  315. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  316. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  317. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  318. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  319. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  320. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  321. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  322. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  323. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  324. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  325. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  326. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  327. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  328. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  329. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  330. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  331. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  332. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  333. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  334. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  335. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  336. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  337. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  338. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  339. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  340. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  341. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  342. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  343. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  344. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  345. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  346. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  347. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  348. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  349. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  350. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  351. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  352. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  353. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  354. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  355. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  356. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  357. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  358. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  359. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  360. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  361. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  362. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  363. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  364. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  365. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  366. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  367. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  368. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  369. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  370. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  371. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  372. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  373. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  374. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  375. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  376. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  377. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  378. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  379. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  380. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  381. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  382. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  383. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  384. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  385. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  386. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  387. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  388. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  389. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  390. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  391. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  392. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  393. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  394. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  395. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -16
  396. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  397. package/android/build/tmp/kotlin-classes/debug/META-INF/react-navigation_native_debug.kotlin_module +0 -0
  398. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule$Companion.class +0 -0
  399. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule$WhenMappings.class +0 -0
  400. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule$getImageSource$1.class +0 -0
  401. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule.class +0 -0
  402. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolTypeface.class +0 -0
  403. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolView.class +0 -0
  404. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolViewManager$Companion.class +0 -0
  405. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolViewManager.class +0 -0
  406. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/ReactNavigationPackage.class +0 -0
  407. package/lib/module/ServerContainer.js +0 -55
  408. package/lib/module/ServerContainer.js.map +0 -1
  409. package/lib/module/ServerContext.js.map +0 -1
  410. package/lib/module/theming/DefaultTheme.js.map +0 -1
  411. package/lib/typescript/src/ServerContainer.d.ts +0 -14
  412. package/lib/typescript/src/ServerContainer.d.ts.map +0 -1
  413. package/lib/typescript/src/ServerContext.d.ts.map +0 -1
  414. package/lib/typescript/src/theming/DefaultTheme.d.ts.map +0 -1
  415. package/src/ServerContainer.tsx +0 -57
  416. /package/lib/module/{ServerContext.js → server/ServerContext.js} +0 -0
@@ -1,3 +1,5 @@
1
+ import groovy.json.JsonSlurper
2
+
1
3
  buildscript {
2
4
  ext.ReactNavigation = [
3
5
  kotlinVersion: "2.0.21",
@@ -58,15 +60,87 @@ android {
58
60
  }
59
61
  }
60
62
 
61
- task copyAssets(type: Copy) {
62
- from "../assets/fonts"
63
- include "*.ttf"
64
- into "${buildDir}/intermediates/react-navigation/fonts"
63
+ tasks.register('copyMaterialFonts', Copy) {
64
+ def packageJsonFile = file(rootDir.path + "/../package.json")
65
+ def fontsConfig = null
66
+
67
+ if (packageJsonFile.exists()) {
68
+ def packageJson = new JsonSlurper().parse(packageJsonFile)
69
+
70
+ fontsConfig = packageJson["react-navigation"]?.get("material-symbols")?.get("fonts")
71
+ }
72
+
73
+ fontsConfig = fontsConfig != null ? fontsConfig : [[variant: "outlined", weights: [400]]]
74
+
75
+ def assetsFontsDir = file("../assets/fonts")
76
+ def availableFonts = assetsFontsDir.listFiles()
77
+ ?.findAll { it.name.startsWith("MaterialSymbols") && it.name.endsWith(".ttf") }
78
+ ?.collect { it.name.replaceFirst(/^MaterialSymbols/, '').replaceFirst(/\.ttf$/, '') } ?: []
79
+
80
+ def validVariants = availableFonts.collect { it.split('_')[0].toLowerCase() }.unique().sort()
81
+ def validWeights = availableFonts.collect { it.split('_')[1] as int }.unique().sort()
82
+
83
+ def errors = [] as Set
84
+
85
+ fontsConfig.each { font ->
86
+ if (font.variant && !validVariants.contains(font.variant.toLowerCase())) {
87
+ errors << "Invalid font variant: ${font.variant}"
88
+ }
89
+
90
+ font.weights.each { weight ->
91
+ if (!validWeights.contains(weight)) {
92
+ errors << "Invalid font weight: ${weight}"
93
+ }
94
+ }
95
+ }
96
+
97
+ if (errors) {
98
+ throw new GradleException(
99
+ errors.join("\n") + "\n\nAvailable variants: ${validVariants.join(", ")}.\nAvailable weights: ${validWeights.join(", ")}."
100
+ )
101
+ }
102
+
103
+ def fontFiles = fontsConfig.collectMany { font ->
104
+ def variant = font.variant?.capitalize() ?: ""
105
+
106
+ font.weights.collect { weight -> "MaterialSymbols${variant}_${weight}.ttf" }
107
+ }
108
+
109
+ if (fontFiles) {
110
+ from(assetsFontsDir) { include fontFiles }
111
+ }
112
+
113
+ into layout.buildDirectory.dir("intermediates/react-navigation/fonts")
114
+
115
+ doFirst {
116
+ if (destinationDir.exists()) {
117
+ def extraFiles = destinationDir.listFiles()?.findAll { file -> !fontFiles.contains(file.name) }
118
+
119
+ extraFiles?.each { file -> file.delete() }
120
+ }
121
+ }
122
+
123
+ doLast {
124
+ def digest = java.security.MessageDigest.getInstance("MD5")
125
+
126
+ fontFiles.sort().each { name ->
127
+ def fontFile = new File(assetsFontsDir, name)
128
+
129
+ if (fontFile.exists()) {
130
+ digest.update(fontFile.bytes)
131
+ }
132
+ }
133
+
134
+ def hash = digest.digest().encodeHex().toString().take(8)
135
+ def hashFile = new File(destinationDir, "MaterialSymbols.hash")
136
+
137
+ hashFile.text = hash
138
+ }
65
139
  }
66
140
 
67
- android.sourceSets.main.assets.srcDirs += file("${buildDir}/intermediates/react-navigation")
141
+ android.sourceSets.main.assets.srcDirs += layout.buildDirectory.dir("intermediates/react-navigation")
68
142
 
69
- preBuild.dependsOn(copyAssets)
143
+ preBuild.dependsOn(copyMaterialFonts)
70
144
 
71
145
  dependencies {
72
146
  implementation "com.facebook.react:react-android"
@@ -1,5 +1,6 @@
1
1
  package org.reactnavigation
2
2
 
3
+ import android.net.Uri
3
4
  import android.graphics.Bitmap
4
5
  import android.graphics.Canvas
5
6
  import android.graphics.Paint
@@ -15,6 +16,7 @@ import kotlinx.coroutines.SupervisorJob
15
16
  import kotlinx.coroutines.launch
16
17
  import java.io.File
17
18
  import java.io.FileOutputStream
19
+ import java.util.concurrent.ConcurrentHashMap
18
20
  import kotlin.math.roundToInt
19
21
 
20
22
  class MaterialSymbolModule(reactContext: ReactApplicationContext) :
@@ -24,10 +26,16 @@ class MaterialSymbolModule(reactContext: ReactApplicationContext) :
24
26
  const val NAME = NativeMaterialSymbolModuleSpec.NAME
25
27
 
26
28
  private val scope = CoroutineScope(Dispatchers.IO + SupervisorJob())
29
+ private val cleanedCacheDirs = ConcurrentHashMap.newKeySet<String>()
30
+ }
31
+
32
+ private val fontHash: String by lazy {
33
+ reactApplicationContext.assets.open("fonts/MaterialSymbols.hash").bufferedReader().readText()
34
+ .trim()
27
35
  }
28
36
 
29
37
  override fun getImageSource(
30
- name: String, variant: String, size: Double, weight: Double, color: ReadableMap, hash: String
38
+ name: String, variant: String?, weight: Double?, size: Double, color: ReadableMap
31
39
  ): String {
32
40
  val colorValue = color.getDynamic("value").let {
33
41
  when (it.type) {
@@ -37,32 +45,45 @@ class MaterialSymbolModule(reactContext: ReactApplicationContext) :
37
45
  }
38
46
  }
39
47
 
40
- val resolvedColor = ColorPropConverter.getColor(colorValue, reactApplicationContext)
41
- ?: throw IllegalArgumentException("Could not resolve color")
48
+ val resolvedColor = ColorPropConverter.getColor(
49
+ colorValue, currentActivity ?: reactApplicationContext
50
+ ) ?: throw IllegalArgumentException("Could not resolve color")
42
51
 
43
52
  val density = reactApplicationContext.resources.displayMetrics.density
44
53
  val scaledSize = (size * density).roundToInt().coerceAtLeast(1)
45
54
 
55
+ val (resolvedTypeface, typefaceSuffix) = MaterialSymbolTypeface.get(
56
+ reactApplicationContext, variant, weight?.toInt()
57
+ )
58
+
46
59
  val cacheDir = File(
47
- reactApplicationContext.cacheDir, "react_navigation/material_symbols/$variant-$weight/$hash"
60
+ reactApplicationContext.cacheDir,
61
+ "react_navigation/material_symbols/$typefaceSuffix/$fontHash"
48
62
  )
49
63
 
50
- val cacheKey = "${name.hashCode()}_${scaledSize}_$resolvedColor"
51
- val cacheFile = File(cacheDir, "$cacheKey.png")
64
+ val cacheFile = File(
65
+ cacheDir, "${Uri.encode(name)}_${scaledSize}_$resolvedColor.png"
66
+ )
67
+
68
+ val cacheUri = cacheFile.toUri().toString()
52
69
 
53
70
  if (cacheFile.exists()) {
54
- return cacheFile.toUri().toString()
71
+ return cacheUri
55
72
  }
56
73
 
57
- scope.launch {
58
- cacheDir.parentFile?.listFiles { it.isDirectory && it.name != hash }
59
- ?.forEach { it.deleteRecursively() }
74
+ val cacheParent = cacheDir.parentFile
75
+
76
+ if (cacheParent != null && cleanedCacheDirs.add(cacheParent.absolutePath)) {
77
+ scope.launch {
78
+ cacheParent.listFiles { it.isDirectory && it.name != fontHash }
79
+ ?.forEach { it.deleteRecursively() }
80
+ }
60
81
  }
61
82
 
62
83
  cacheDir.mkdirs()
63
84
 
64
85
  val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
65
- typeface = MaterialSymbolTypeface.get(reactApplicationContext, variant, weight.toInt())
86
+ typeface = resolvedTypeface
66
87
  textSize = scaledSize.toFloat()
67
88
  textAlign = Paint.Align.CENTER
68
89
 
@@ -85,6 +106,6 @@ class MaterialSymbolModule(reactContext: ReactApplicationContext) :
85
106
  bitmap.recycle()
86
107
  }
87
108
 
88
- return cacheFile.toUri().toString()
109
+ return cacheUri
89
110
  }
90
111
  }
@@ -2,22 +2,32 @@ package org.reactnavigation
2
2
 
3
3
  import android.content.Context
4
4
  import android.graphics.Typeface
5
+ import java.util.concurrent.ConcurrentHashMap
6
+
7
+ data class MaterialSymbolTypefaceResult(val typeface: Typeface, val suffix: String)
5
8
 
6
9
  object MaterialSymbolTypeface {
7
- private val typefaces = mutableMapOf<String, Typeface>()
10
+ private val typefaces = ConcurrentHashMap<String, Typeface>()
11
+ private var availableFonts: Map<String, Set<Int>>? = null
12
+
13
+ fun get(context: Context, variant: String?, weight: Int?): MaterialSymbolTypefaceResult {
14
+ val fonts = getAvailableFonts(context)
8
15
 
9
- fun get(context: Context, variant: String?, weight: Int?): Typeface {
10
- val resolvedVariant = when (variant) {
11
- "rounded" -> "Rounded"
12
- "sharp" -> "Sharp"
13
- else -> "Outlined"
16
+ val resolvedVariant = if (variant != null) {
17
+ when (variant) {
18
+ "rounded" -> "Rounded"
19
+ "sharp" -> "Sharp"
20
+ else -> "Outlined"
21
+ }
22
+ } else {
23
+ resolveDefaultVariant(fonts)
14
24
  }
15
25
 
16
- val resolvedWeight = weight ?: 400
26
+ val resolvedWeight = weight ?: resolveDefaultWeight(fonts, resolvedVariant)
17
27
 
18
28
  val suffix = "${resolvedVariant}_$resolvedWeight"
19
29
 
20
- return typefaces.getOrPut(suffix) {
30
+ val typeface = typefaces.getOrPut(suffix) {
21
31
  val path = "fonts/MaterialSymbols${suffix}.ttf"
22
32
 
23
33
  try {
@@ -26,5 +36,68 @@ object MaterialSymbolTypeface {
26
36
  throw RuntimeException("$path not found.", e)
27
37
  }
28
38
  }
39
+
40
+ return MaterialSymbolTypefaceResult(typeface, suffix)
41
+ }
42
+
43
+ private fun getAvailableFonts(context: Context): Map<String, Set<Int>> {
44
+ availableFonts?.let { return it }
45
+
46
+ val files = context.assets.list("fonts")
47
+ ?.filter { it.startsWith("MaterialSymbols") && it.endsWith(".ttf") } ?: emptyList()
48
+
49
+ if (files.isEmpty()) {
50
+ throw RuntimeException("No MaterialSymbols font found in assets.")
51
+ }
52
+
53
+ val fonts = mutableMapOf<String, MutableSet<Int>>()
54
+
55
+ for (file in files) {
56
+ val suffix = file.removePrefix("MaterialSymbols").removeSuffix(".ttf")
57
+ val variant = suffix.substringBefore("_")
58
+ val weight = suffix.substringAfter("_").toIntOrNull() ?: continue
59
+
60
+ fonts.getOrPut(variant) { mutableSetOf() }.add(weight)
61
+ }
62
+
63
+ availableFonts = fonts
64
+
65
+ return fonts
66
+ }
67
+
68
+ private fun resolveDefaultVariant(fonts: Map<String, Set<Int>>): String {
69
+ val variants = fonts.keys
70
+
71
+ if (variants.size == 1) {
72
+ return variants.first()
73
+ }
74
+
75
+ if (variants.contains("Outlined")) {
76
+ return "Outlined"
77
+ }
78
+
79
+ throw RuntimeException(
80
+ "Multiple MaterialSymbols variants found: ${variants.joinToString()}. " + "Please specify a variant explicitly."
81
+ )
82
+ }
83
+
84
+ private fun resolveDefaultWeight(fonts: Map<String, Set<Int>>, variant: String): Int {
85
+ val weights = fonts[variant]
86
+
87
+ if (weights.isNullOrEmpty()) {
88
+ throw RuntimeException("No MaterialSymbols font found for variant: $variant")
89
+ }
90
+
91
+ if (weights.size == 1) {
92
+ return weights.first()
93
+ }
94
+
95
+ if (weights.contains(400)) {
96
+ return 400
97
+ }
98
+
99
+ throw RuntimeException(
100
+ "Multiple MaterialSymbols weights found for variant $variant: ${weights.joinToString()}. " + "Please specify a weight explicitly."
101
+ )
29
102
  }
30
103
  }
@@ -12,6 +12,11 @@ class MaterialSymbolView @JvmOverloads constructor(
12
12
  private var variant: String? = null
13
13
  private var weight: Int? = null
14
14
 
15
+ init {
16
+ setColor(null)
17
+ updateTypeface()
18
+ }
19
+
15
20
  override fun onDraw(canvas: Canvas) {
16
21
  val text = text?.toString() ?: return
17
22
 
@@ -25,35 +30,63 @@ class MaterialSymbolView @JvmOverloads constructor(
25
30
  canvas.drawText(text, x, y, paint)
26
31
  }
27
32
 
28
- fun setName(name: String) {
33
+ fun setName(name: String?) {
29
34
  text = name
35
+
36
+ invalidate()
30
37
  }
31
38
 
32
- fun setVariant(variant: String) {
39
+ fun setVariant(variant: String?) {
33
40
  if (this.variant == variant) {
34
41
  return
35
42
  }
36
43
 
37
44
  this.variant = variant
45
+
38
46
  updateTypeface()
39
47
  }
40
48
 
41
- fun setWeight(weight: Int) {
49
+ fun setWeight(weight: Int?) {
42
50
  if (this.weight == weight) {
43
51
  return
44
52
  }
45
53
 
46
54
  this.weight = weight
55
+
47
56
  updateTypeface()
48
57
  }
49
58
 
50
59
  private fun updateTypeface() {
51
- setTypeface(MaterialSymbolTypeface.get(context, variant, weight))
60
+ setTypeface(
61
+ MaterialSymbolTypeface.get(
62
+ context,
63
+ variant?.ifEmpty { null },
64
+ weight.takeIf { it != 0 }).typeface
65
+ )
66
+
52
67
  invalidate()
53
68
  }
54
69
 
55
- fun setColor(color: Int) {
56
- setTextColor(color)
70
+ fun setColor(color: Int?) {
71
+ if (color == null) {
72
+ val typedValue = android.util.TypedValue()
73
+
74
+ context.theme.resolveAttribute(
75
+ android.R.attr.colorForeground, typedValue, true
76
+ )
77
+
78
+ val resolvedColor = if (typedValue.resourceId != 0) {
79
+ context.getColor(typedValue.resourceId)
80
+ } else {
81
+ typedValue.data
82
+ }
83
+
84
+ setTextColor(resolvedColor)
85
+ } else {
86
+ setTextColor(color)
87
+ }
88
+
89
+ invalidate()
57
90
  }
58
91
 
59
92
  fun setSize(size: Float) {
@@ -4,9 +4,11 @@ import com.facebook.react.module.annotations.ReactModule
4
4
  import com.facebook.react.uimanager.SimpleViewManager
5
5
  import com.facebook.react.uimanager.ThemedReactContext
6
6
  import com.facebook.react.uimanager.annotations.ReactProp
7
+ import com.facebook.react.viewmanagers.ReactNavigationMaterialSymbolViewManagerInterface
7
8
 
8
9
  @ReactModule(name = MaterialSymbolViewManager.NAME)
9
- class MaterialSymbolViewManager : SimpleViewManager<MaterialSymbolView>() {
10
+ class MaterialSymbolViewManager : SimpleViewManager<MaterialSymbolView>(),
11
+ ReactNavigationMaterialSymbolViewManagerInterface<MaterialSymbolView> {
10
12
 
11
13
  override fun getName(): String {
12
14
  return NAME
@@ -17,25 +19,30 @@ class MaterialSymbolViewManager : SimpleViewManager<MaterialSymbolView>() {
17
19
  }
18
20
 
19
21
  @ReactProp(name = "name")
20
- fun setName(view: MaterialSymbolView, name: String) {
22
+ override fun setName(view: MaterialSymbolView, name: String?) {
21
23
  view.setName(name)
22
24
  }
23
25
 
24
26
  @ReactProp(name = "variant")
25
- fun setVariant(view: MaterialSymbolView, variant: String) {
27
+ override fun setVariant(view: MaterialSymbolView, variant: String?) {
26
28
  view.setVariant(variant)
27
29
  }
28
30
 
29
- @ReactProp(name = "color", customType = "Color", defaultInt = android.graphics.Color.BLACK)
30
- fun setColor(view: MaterialSymbolView, color: Int) {
31
- view.setColor(color)
31
+ @ReactProp(name = "weight")
32
+ override fun setWeight(view: MaterialSymbolView, weight: Int?) {
33
+ view.setWeight(weight)
32
34
  }
33
35
 
34
36
  @ReactProp(name = "size")
35
- fun setSize(view: MaterialSymbolView, size: Float) {
37
+ override fun setSize(view: MaterialSymbolView, size: Float) {
36
38
  view.setSize(size)
37
39
  }
38
40
 
41
+ @ReactProp(name = "color", customType = "Color")
42
+ override fun setColor(view: MaterialSymbolView, color: Int?) {
43
+ view.setColor(color)
44
+ }
45
+
39
46
  companion object {
40
47
  const val NAME = "ReactNavigationMaterialSymbolView"
41
48
  }
@@ -9,7 +9,9 @@ import com.facebook.react.uimanager.ViewManager
9
9
 
10
10
  class ReactNavigationPackage : BaseReactPackage() {
11
11
  override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
12
- return listOf(MaterialSymbolViewManager())
12
+ return listOf(
13
+ MaterialSymbolViewManager()
14
+ )
13
15
  }
14
16
 
15
17
  override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {