expo-router 7.0.0-canary-20251127-587bc53 → 7.0.0-canary-20251205-a1dedc6

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 (177) hide show
  1. package/android/build.gradle +2 -2
  2. package/build/fork/getStateFromPath-forks.d.ts +5 -10
  3. package/build/fork/getStateFromPath-forks.d.ts.map +1 -1
  4. package/build/fork/getStateFromPath-forks.js +14 -13
  5. package/build/fork/getStateFromPath-forks.js.map +1 -1
  6. package/build/fork/getStateFromPath.js +3 -3
  7. package/build/fork/getStateFromPath.js.map +1 -1
  8. package/build/fork/native-stack/createNativeStackNavigator.d.ts.map +1 -1
  9. package/build/fork/native-stack/createNativeStackNavigator.js +12 -3
  10. package/build/fork/native-stack/createNativeStackNavigator.js.map +1 -1
  11. package/build/fork/native-stack/descriptors-context.d.ts +8 -0
  12. package/build/fork/native-stack/descriptors-context.d.ts.map +1 -0
  13. package/build/fork/native-stack/descriptors-context.js +6 -0
  14. package/build/fork/native-stack/descriptors-context.js.map +1 -0
  15. package/build/internal/utils.d.ts +1 -0
  16. package/build/internal/utils.d.ts.map +1 -1
  17. package/build/internal/utils.js +3 -1
  18. package/build/internal/utils.js.map +1 -1
  19. package/build/layouts/StackClient.d.ts.map +1 -1
  20. package/build/layouts/StackClient.js +34 -1
  21. package/build/layouts/StackClient.js.map +1 -1
  22. package/build/link/ExpoLink.d.ts.map +1 -1
  23. package/build/link/ExpoLink.js +12 -4
  24. package/build/link/ExpoLink.js.map +1 -1
  25. package/build/link/Link.d.ts +2 -0
  26. package/build/link/Link.d.ts.map +1 -1
  27. package/build/link/Link.js +2 -0
  28. package/build/link/Link.js.map +1 -1
  29. package/build/link/LinkWithPreview.d.ts +6 -1
  30. package/build/link/LinkWithPreview.d.ts.map +1 -1
  31. package/build/link/LinkWithPreview.js +6 -5
  32. package/build/link/LinkWithPreview.js.map +1 -1
  33. package/build/link/elements.d.ts +8 -0
  34. package/build/link/elements.d.ts.map +1 -1
  35. package/build/link/elements.js +7 -2
  36. package/build/link/elements.js.map +1 -1
  37. package/build/link/preview/native.d.ts +17 -0
  38. package/build/link/preview/native.d.ts.map +1 -1
  39. package/build/link/preview/native.js +22 -0
  40. package/build/link/preview/native.js.map +1 -1
  41. package/build/link/zoom/ZoomTransitionEnabler.d.ts +5 -0
  42. package/build/link/zoom/ZoomTransitionEnabler.d.ts.map +1 -0
  43. package/build/link/zoom/ZoomTransitionEnabler.ios.d.ts +5 -0
  44. package/build/link/zoom/ZoomTransitionEnabler.ios.d.ts.map +1 -0
  45. package/build/link/zoom/ZoomTransitionEnabler.ios.js +44 -0
  46. package/build/link/zoom/ZoomTransitionEnabler.ios.js.map +1 -0
  47. package/build/link/zoom/ZoomTransitionEnabler.js +13 -0
  48. package/build/link/zoom/ZoomTransitionEnabler.js.map +1 -0
  49. package/build/link/zoom/ZoomTransitionEnabler.types.d.ts +4 -0
  50. package/build/link/zoom/ZoomTransitionEnabler.types.d.ts.map +1 -0
  51. package/build/link/zoom/ZoomTransitionEnabler.types.js +3 -0
  52. package/build/link/zoom/ZoomTransitionEnabler.types.js.map +1 -0
  53. package/build/link/zoom/link-apple-zoom.d.ts +23 -0
  54. package/build/link/zoom/link-apple-zoom.d.ts.map +1 -0
  55. package/build/link/zoom/link-apple-zoom.js +40 -0
  56. package/build/link/zoom/link-apple-zoom.js.map +1 -0
  57. package/build/link/zoom/useZoomTransitionPrimitives.d.ts +6 -0
  58. package/build/link/zoom/useZoomTransitionPrimitives.d.ts.map +1 -0
  59. package/build/link/zoom/useZoomTransitionPrimitives.ios.d.ts +11 -0
  60. package/build/link/zoom/useZoomTransitionPrimitives.ios.d.ts.map +1 -0
  61. package/build/link/zoom/useZoomTransitionPrimitives.ios.js +66 -0
  62. package/build/link/zoom/useZoomTransitionPrimitives.ios.js.map +1 -0
  63. package/build/link/zoom/useZoomTransitionPrimitives.js +9 -0
  64. package/build/link/zoom/useZoomTransitionPrimitives.js.map +1 -0
  65. package/build/link/zoom/zoom-transition-context.d.ts +7 -0
  66. package/build/link/zoom/zoom-transition-context.d.ts.map +1 -0
  67. package/build/link/zoom/zoom-transition-context.js +6 -0
  68. package/build/link/zoom/zoom-transition-context.js.map +1 -0
  69. package/build/native-tabs/NativeBottomTabsNavigator.d.ts +3 -15
  70. package/build/native-tabs/NativeBottomTabsNavigator.d.ts.map +1 -1
  71. package/build/native-tabs/NativeBottomTabsNavigator.js +10 -2
  72. package/build/native-tabs/NativeBottomTabsNavigator.js.map +1 -1
  73. package/build/native-tabs/NativeBottomTabsRouter.d.ts.map +1 -1
  74. package/build/native-tabs/NativeBottomTabsRouter.js +12 -1
  75. package/build/native-tabs/NativeBottomTabsRouter.js.map +1 -1
  76. package/build/native-tabs/NativeTabTrigger.d.ts +1 -1
  77. package/build/native-tabs/NativeTabTrigger.d.ts.map +1 -1
  78. package/build/native-tabs/NativeTabTrigger.js +3 -1
  79. package/build/native-tabs/NativeTabTrigger.js.map +1 -1
  80. package/build/native-tabs/NativeTabs.d.ts +6 -3
  81. package/build/native-tabs/NativeTabs.d.ts.map +1 -1
  82. package/build/native-tabs/NativeTabs.js +7 -2
  83. package/build/native-tabs/NativeTabs.js.map +1 -1
  84. package/build/native-tabs/NativeTabsView.d.ts.map +1 -1
  85. package/build/native-tabs/NativeTabsView.js +26 -3
  86. package/build/native-tabs/NativeTabsView.js.map +1 -1
  87. package/build/native-tabs/common/elements.d.ts +25 -0
  88. package/build/native-tabs/common/elements.d.ts.map +1 -1
  89. package/build/native-tabs/common/elements.js +26 -1
  90. package/build/native-tabs/common/elements.js.map +1 -1
  91. package/build/native-tabs/hooks.d.ts +45 -0
  92. package/build/native-tabs/hooks.d.ts.map +1 -0
  93. package/build/native-tabs/hooks.js +57 -0
  94. package/build/native-tabs/hooks.js.map +1 -0
  95. package/build/native-tabs/types.d.ts +36 -2
  96. package/build/native-tabs/types.d.ts.map +1 -1
  97. package/build/native-tabs/types.js.map +1 -1
  98. package/build/native-tabs/utils/bottomAccessory.d.ts +9 -0
  99. package/build/native-tabs/utils/bottomAccessory.d.ts.map +1 -0
  100. package/build/native-tabs/utils/bottomAccessory.js +17 -0
  101. package/build/native-tabs/utils/bottomAccessory.js.map +1 -0
  102. package/build/navigationParams.d.ts +3 -1
  103. package/build/navigationParams.d.ts.map +1 -1
  104. package/build/navigationParams.js +5 -1
  105. package/build/navigationParams.js.map +1 -1
  106. package/build/toolbar/elements.d.ts +24 -0
  107. package/build/toolbar/elements.d.ts.map +1 -0
  108. package/build/toolbar/elements.js +36 -0
  109. package/build/toolbar/elements.js.map +1 -0
  110. package/build/toolbar/index.d.ts +9 -0
  111. package/build/toolbar/index.d.ts.map +1 -0
  112. package/build/toolbar/index.js +12 -0
  113. package/build/toolbar/index.js.map +1 -0
  114. package/build/toolbar/native.d.ts +4 -0
  115. package/build/toolbar/native.d.ts.map +1 -0
  116. package/build/toolbar/native.ios.d.ts +4 -0
  117. package/build/toolbar/native.ios.d.ts.map +1 -0
  118. package/build/toolbar/native.ios.js +21 -0
  119. package/build/toolbar/native.ios.js.map +1 -0
  120. package/build/toolbar/native.js +11 -0
  121. package/build/toolbar/native.js.map +1 -0
  122. package/build/toolbar/native.types.d.ts +30 -0
  123. package/build/toolbar/native.types.d.ts.map +1 -0
  124. package/build/toolbar/native.types.js +3 -0
  125. package/build/toolbar/native.types.js.map +1 -0
  126. package/build/useScreens.d.ts.map +1 -1
  127. package/build/useScreens.js +13 -5
  128. package/build/useScreens.js.map +1 -1
  129. package/build/views/Sitemap.js +3 -2
  130. package/build/views/Sitemap.js.map +1 -1
  131. package/expo-module.config.json +2 -2
  132. package/ios/LinkPreview/LinkPreviewNativeActionView.swift +1 -0
  133. package/ios/LinkPreview/LinkPreviewNativeModule.swift +49 -1
  134. package/ios/LinkPreview/LinkPreviewNativeNavigation.swift +132 -70
  135. package/ios/LinkPreview/LinkPreviewNativeView.swift +28 -14
  136. package/ios/LinkPreview/LinkZoomTransition.swift +227 -0
  137. package/ios/Toolbar/RouterToolbarHostView.swift +140 -0
  138. package/ios/Toolbar/RouterToolbarItemView.swift +171 -0
  139. package/ios/Toolbar/RouterToolbarModule.swift +102 -0
  140. package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.module → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.module} +7 -7
  141. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.module.md5 +1 -0
  142. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.module.sha1 +1 -0
  143. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.module.sha256 +1 -0
  144. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.module.sha512 +1 -0
  145. package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.pom → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.pom} +1 -1
  146. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.pom.md5 +1 -0
  147. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.pom.sha1 +1 -0
  148. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.pom.sha256 +1 -0
  149. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.pom.sha512 +1 -0
  150. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml +4 -4
  151. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.md5 +1 -1
  152. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha1 +1 -1
  153. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha256 +1 -1
  154. package/local-maven-repo/expo/modules/router/expo.modules.router/maven-metadata.xml.sha512 +1 -1
  155. package/package.json +14 -12
  156. package/unstable-toolbar.d.ts +1 -0
  157. package/unstable-toolbar.js +1 -0
  158. package/ios/LinkPreview/LinkPreviewNativeNavigation.h +0 -50
  159. package/ios/LinkPreview/LinkPreviewNativeNavigation.mm +0 -164
  160. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.module.md5 +0 -1
  161. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.module.sha1 +0 -1
  162. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.module.sha256 +0 -1
  163. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.module.sha512 +0 -1
  164. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.pom.md5 +0 -1
  165. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.pom.sha1 +0 -1
  166. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.pom.sha256 +0 -1
  167. package/local-maven-repo/expo/modules/router/expo.modules.router/7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.pom.sha512 +0 -1
  168. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53-sources.jar → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6-sources.jar} +0 -0
  169. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53-sources.jar.md5 → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6-sources.jar.md5} +0 -0
  170. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53-sources.jar.sha1 → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6-sources.jar.sha1} +0 -0
  171. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53-sources.jar.sha256 → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6-sources.jar.sha256} +0 -0
  172. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53-sources.jar.sha512 → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6-sources.jar.sha512} +0 -0
  173. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.aar → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar} +0 -0
  174. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.aar.md5 → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar.md5} +0 -0
  175. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.aar.sha1 → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar.sha1} +0 -0
  176. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.aar.sha256 → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar.sha256} +0 -0
  177. /package/local-maven-repo/expo/modules/router/expo.modules.router/{7.0.0-canary-20251127-587bc53/expo.modules.router-7.0.0-canary-20251127-587bc53.aar.sha512 → 7.0.0-canary-20251205-a1dedc6/expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar.sha512} +0 -0
@@ -0,0 +1,102 @@
1
+ import ExpoModulesCore
2
+
3
+ public class RouterToolbarModule: Module {
4
+ public func definition() -> ModuleDefinition {
5
+ Name("ExpoRouterToolbarModule")
6
+
7
+ View(RouterToolbarHostView.self) {
8
+ Prop("disableForceFlatten") { (_: RouterToolbarHostView, _: Bool) in
9
+ // This prop is used in ExpoShadowNode in order to disable force flattening, when display: contents is used
10
+ }
11
+ }
12
+ View(RouterToolbarItemView.self) {
13
+ Prop("identifier") { (view: RouterToolbarItemView, identifier: String) in
14
+ view.identifier = identifier
15
+ }
16
+ Prop("type") { (view: RouterToolbarItemView, type: ItemType) in
17
+ view.type = type
18
+ }
19
+ Prop("title") { (view: RouterToolbarItemView, title: String?) in
20
+ view.title = title
21
+ }
22
+ Prop("systemImageName") { (view: RouterToolbarItemView, systemImageName: String?) in
23
+ view.systemImageName = systemImageName
24
+ }
25
+ Prop("tintColor") { (view: RouterToolbarItemView, tintColor: UIColor?) in
26
+ view.customTintColor = tintColor
27
+ }
28
+ Prop("hidesSharedBackground") { (view: RouterToolbarItemView, hidesSharedBackground: Bool) in
29
+ view.hidesSharedBackground = hidesSharedBackground
30
+ }
31
+ Prop("sharesBackground") { (view: RouterToolbarItemView, sharesBackground: Bool) in
32
+ view.sharesBackground = sharesBackground
33
+ }
34
+ Prop("disableForceFlatten") { (_: RouterToolbarItemView, _: Bool) in
35
+ // This prop is used in ExpoShadowNode in order to disable force flattening, when display: contents is used
36
+ }
37
+ Prop("barButtonItemStyle") { (view: RouterToolbarItemView, style: BarItemStyle?) in
38
+ view.barButtonItemStyle = style?.toUIBarButtonItemStyle()
39
+ }
40
+ Prop("width") { (view: RouterToolbarItemView, width: Double?) in
41
+ view.width = width
42
+ }
43
+ Prop("hidden") { (view: RouterToolbarItemView, hidden: Bool) in
44
+ view.routerHidden = hidden
45
+ }
46
+ Prop("selected") { (view: RouterToolbarItemView, selected: Bool) in
47
+ view.selected = selected
48
+ }
49
+ Prop("possibleTitles") { (view: RouterToolbarItemView, possibleTitles: [String]?) in
50
+ if let possibleTitles = possibleTitles {
51
+ view.possibleTitles = Set(possibleTitles)
52
+ } else {
53
+ view.possibleTitles = nil
54
+ }
55
+ }
56
+ Prop("badgeConfiguration") {
57
+ (view: RouterToolbarItemView, config: BadgeConfigurationRecord?) in
58
+ view.badgeConfiguration = config?.toBadgeConfiguration()
59
+ }
60
+
61
+ Events("onSelected")
62
+ }
63
+ }
64
+ }
65
+
66
+ enum BarItemStyle: String, Enumerable {
67
+ case plain
68
+ case prominent
69
+
70
+ func toUIBarButtonItemStyle() -> UIBarButtonItem.Style {
71
+ switch self {
72
+ case .plain:
73
+ return .plain
74
+ case .prominent:
75
+ if #available(iOS 26.0, *) {
76
+ return .prominent
77
+ } else {
78
+ return .done
79
+ }
80
+ }
81
+ }
82
+ }
83
+
84
+ struct BadgeConfigurationRecord: Record {
85
+ @Field var value: String?
86
+ @Field var backgroundColor: UIColor?
87
+ @Field var color: UIColor?
88
+ @Field var fontFamily: String?
89
+ @Field var fontSize: Double?
90
+ @Field var fontWeight: String?
91
+
92
+ func toBadgeConfiguration() -> BadgeConfiguration {
93
+ return BadgeConfiguration(
94
+ value: value,
95
+ backgroundColor: backgroundColor,
96
+ color: color,
97
+ fontFamily: fontFamily,
98
+ fontSize: fontSize,
99
+ fontWeight: fontWeight
100
+ )
101
+ }
102
+ }
@@ -3,7 +3,7 @@
3
3
  "component": {
4
4
  "group": "expo.modules.router",
5
5
  "module": "expo.modules.router",
6
- "version": "7.0.0-canary-20251127-587bc53",
6
+ "version": "7.0.0-canary-20251205-a1dedc6",
7
7
  "attributes": {
8
8
  "org.gradle.status": "release"
9
9
  }
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "files": [
26
26
  {
27
- "name": "expo.modules.router-7.0.0-canary-20251127-587bc53.aar",
28
- "url": "expo.modules.router-7.0.0-canary-20251127-587bc53.aar",
27
+ "name": "expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar",
28
+ "url": "expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar",
29
29
  "size": 13671,
30
30
  "sha512": "f51bd2a6d3fcc9075dbf99d66f77162d530586d0793d68e109a55f6edfbe4ff98bc9c9c5d587d0feec99807b6ae94a729232000e89f840278b21f4d423caa520",
31
31
  "sha256": "089d182f36875a201ad1b30b44d39812cd5155af987f3d33cd5eef8542103c82",
@@ -60,8 +60,8 @@
60
60
  ],
61
61
  "files": [
62
62
  {
63
- "name": "expo.modules.router-7.0.0-canary-20251127-587bc53.aar",
64
- "url": "expo.modules.router-7.0.0-canary-20251127-587bc53.aar",
63
+ "name": "expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar",
64
+ "url": "expo.modules.router-7.0.0-canary-20251205-a1dedc6.aar",
65
65
  "size": 13671,
66
66
  "sha512": "f51bd2a6d3fcc9075dbf99d66f77162d530586d0793d68e109a55f6edfbe4ff98bc9c9c5d587d0feec99807b6ae94a729232000e89f840278b21f4d423caa520",
67
67
  "sha256": "089d182f36875a201ad1b30b44d39812cd5155af987f3d33cd5eef8542103c82",
@@ -80,8 +80,8 @@
80
80
  },
81
81
  "files": [
82
82
  {
83
- "name": "expo.modules.router-7.0.0-canary-20251127-587bc53-sources.jar",
84
- "url": "expo.modules.router-7.0.0-canary-20251127-587bc53-sources.jar",
83
+ "name": "expo.modules.router-7.0.0-canary-20251205-a1dedc6-sources.jar",
84
+ "url": "expo.modules.router-7.0.0-canary-20251205-a1dedc6-sources.jar",
85
85
  "size": 2318,
86
86
  "sha512": "9864add8e93e3c0a9a9c930aaed67016b15054c3fafd59a0bd3a5402d7cdc5827be84c22c2c137f3e5acb4e39270d9bfb9ca3fe11234458d4f2e0d4c78747f48",
87
87
  "sha256": "d5dff6259e86de721fc0f07fe740a5e18088e19b76738719b0a6f94caef06224",
@@ -0,0 +1 @@
1
+ 3ba10edb290a85e3420589a307207a6b14f3bb6766f9c240f69151112cd513f06c36d432a0e751386de3ae3d735671504716346dc58c7f7647ced5842728b3d3
@@ -9,7 +9,7 @@
9
9
  <modelVersion>4.0.0</modelVersion>
10
10
  <groupId>expo.modules.router</groupId>
11
11
  <artifactId>expo.modules.router</artifactId>
12
- <version>7.0.0-canary-20251127-587bc53</version>
12
+ <version>7.0.0-canary-20251205-a1dedc6</version>
13
13
  <packaging>aar</packaging>
14
14
  <name>expo.modules.router</name>
15
15
  <url>https://github.com/expo/expo</url>
@@ -0,0 +1 @@
1
+ a60e48e73ae85e066821c1a14f9656883077e1881eb90c08ea46f87f9f082d0d8ed732214638e346b7a6f4a7d8bc26a854dff33a89b984d43bf6744d3b0da739
@@ -3,11 +3,11 @@
3
3
  <groupId>expo.modules.router</groupId>
4
4
  <artifactId>expo.modules.router</artifactId>
5
5
  <versioning>
6
- <latest>7.0.0-canary-20251127-587bc53</latest>
7
- <release>7.0.0-canary-20251127-587bc53</release>
6
+ <latest>7.0.0-canary-20251205-a1dedc6</latest>
7
+ <release>7.0.0-canary-20251205-a1dedc6</release>
8
8
  <versions>
9
- <version>7.0.0-canary-20251127-587bc53</version>
9
+ <version>7.0.0-canary-20251205-a1dedc6</version>
10
10
  </versions>
11
- <lastUpdated>20251127152232</lastUpdated>
11
+ <lastUpdated>20251205162215</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- a9b5fb3f9ce8d0ca15f220a2efc58ddc
1
+ 0e5c2fad24d3d7038102b79ded85462f
@@ -1 +1 @@
1
- 491dba60f2dd13eb43c82c9be794b00d30eac1f0
1
+ 4047120fba6cd436de826604df1a829d597b8723
@@ -1 +1 @@
1
- 2a334ff6bfb9eba33afb7df9c1bc97dabcea810c6b7fcafa251397ec981f9d45
1
+ 9d67e61b727d7091d1dd72f6829d7802e0718d5d527847646c6e63ab22a36963
@@ -1 +1 @@
1
- 6be01b24a726e5d5f6081792a5be7870581c16a2b383c113eb021f30ff2098b688c396217cf3f7d79c440128898a17d05125a6c27c9c35c8982a2ee4433e493b
1
+ 94aab24adc6ee91c9589f4e4b2af7e738e8bbdb004f62109e07882f548e4800460174031d6c4025d093bc7ea6589e28423938ed26211bd60ecfc0d2a7b10d43f
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-router",
3
- "version": "7.0.0-canary-20251127-587bc53",
3
+ "version": "7.0.0-canary-20251205-a1dedc6",
4
4
  "description": "Expo Router is a file-based router for React Native and web applications.",
5
5
  "author": "650 Industries, Inc.",
6
6
  "license": "MIT",
@@ -42,6 +42,8 @@
42
42
  "unstable-native-tabs.d.ts",
43
43
  "unstable-split-view.js",
44
44
  "unstable-split-view.d.ts",
45
+ "unstable-toolbar.js",
46
+ "unstable-toolbar.d.ts",
45
47
  "node",
46
48
  "plugin",
47
49
  "rsc",
@@ -81,14 +83,14 @@
81
83
  "expo"
82
84
  ],
83
85
  "peerDependencies": {
84
- "@expo/metro-runtime": "6.2.0-canary-20251127-587bc53",
85
- "@expo/log-box": "0.0.13-canary-20251127-587bc53",
86
+ "@expo/metro-runtime": "6.2.0-canary-20251205-a1dedc6",
87
+ "@expo/log-box": "0.0.13-canary-20251205-a1dedc6",
86
88
  "@react-navigation/drawer": "^7.7.2",
87
89
  "@testing-library/react-native": ">= 12.0.0",
88
- "expo": "55.0.0-canary-20251127-587bc53",
89
- "expo-constants": "18.1.0-canary-20251127-587bc53",
90
- "expo-linking": "8.0.10-canary-20251127-587bc53",
91
- "expo-symbols": "1.1.0-canary-20251127-587bc53",
90
+ "expo": "55.0.0-canary-20251205-a1dedc6",
91
+ "expo-constants": "18.1.0-canary-20251205-a1dedc6",
92
+ "expo-linking": "8.0.11-canary-20251205-a1dedc6",
93
+ "expo-symbols": "1.1.0-canary-20251205-a1dedc6",
92
94
  "react": "*",
93
95
  "react-dom": "*",
94
96
  "react-native": "*",
@@ -97,7 +99,7 @@
97
99
  "react-native-safe-area-context": ">= 5.4.0",
98
100
  "react-native-screens": "*",
99
101
  "react-native-web": "*",
100
- "react-server-dom-webpack": ">= 19.0.0"
102
+ "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1"
101
103
  },
102
104
  "peerDependenciesMeta": {
103
105
  "@testing-library/react-native": {
@@ -130,11 +132,11 @@
130
132
  "@types/react-dom": "^19.1.7",
131
133
  "@types/semver": "^7.7.0",
132
134
  "immer": "^10.1.1",
133
- "react-server-dom-webpack": "~19.0.0"
135
+ "react-server-dom-webpack": "~19.0.1"
134
136
  },
135
137
  "dependencies": {
136
- "@expo/metro-runtime": "6.2.0-canary-20251127-587bc53",
137
- "@expo/schema-utils": "0.1.8-canary-20251127-587bc53",
138
+ "@expo/metro-runtime": "6.2.0-canary-20251205-a1dedc6",
139
+ "@expo/schema-utils": "0.1.9-canary-20251205-a1dedc6",
138
140
  "@radix-ui/react-slot": "1.2.0",
139
141
  "@radix-ui/react-tabs": "^1.1.12",
140
142
  "@react-navigation/bottom-tabs": "^7.7.3",
@@ -143,7 +145,7 @@
143
145
  "client-only": "^0.0.1",
144
146
  "debug": "^4.3.4",
145
147
  "escape-string-regexp": "^4.0.0",
146
- "expo-server": "1.0.5-canary-20251127-587bc53",
148
+ "expo-server": "1.0.6-canary-20251205-a1dedc6",
147
149
  "fast-deep-equal": "^3.1.3",
148
150
  "invariant": "^2.2.4",
149
151
  "nanoid": "^3.3.8",
@@ -0,0 +1 @@
1
+ export * from './build/toolbar';
@@ -0,0 +1 @@
1
+ module.exports = require('./build/toolbar');
@@ -1,50 +0,0 @@
1
- // Copyright 2015-present 650 Industries. All rights reserved.
2
-
3
- #import <RNScreens/RNSDismissibleModalProtocol.h>
4
- #import <RNScreens/RNSTabBarController.h>
5
-
6
- @interface LinkPreviewNativeNavigationObjC : NSObject
7
-
8
- /*
9
- * Pushes the previously preloaded view.
10
- * This function will set the activity state of the preloaded screen view to 2
11
- */
12
- + (void)pushPreloadedView:(nonnull UIView *)view
13
- ontoStackView:(nonnull UIView *)rawStackView;
14
-
15
- /*
16
- * Helper function to check if the view is a RNSScreenStackView. Can be used in
17
- * Swift
18
- */
19
- + (BOOL)isRNSScreenStackView:(UIView *)view;
20
- /*
21
- * Helper function to get all screen IDs from a RNSScreenStackView.
22
- */
23
- + (nonnull NSArray<NSString *> *)getStackViewScreenIds:(UIView *)view;
24
- /*
25
- * Helper function to get all screen views from a RNSScreenStackView.
26
- */
27
- + (nonnull NSArray<UIView *> *)getScreenViews:(UIView *)view;
28
- /*
29
- * Helper function to get the screen ID of a RNSScreenView.
30
- */
31
- + (nonnull NSString *)getScreenId:(UIView *)view;
32
-
33
- + (nonnull NSString *)getTabKey:(UIView *)view;
34
-
35
- + (BOOL)isRNSBottomTabsScreenComponentView:(UIView *)view;
36
-
37
- + (BOOL)isRNSTabBarController:(UIView *)view;
38
-
39
- + (nullable RNSTabBarController *)getBottomTabControllerFromView:(UIView *)view;
40
-
41
- + (BOOL)isRNSBottomTabsHostComponentView:(UIView *)view;
42
-
43
- + (nullable UIView *)getTab:(UITabBarController *)controller
44
- withKey:(NSString *)key;
45
-
46
- @end
47
-
48
- @protocol LinkPreviewModalDismissible <RNSDismissibleModalProtocol>
49
- @required
50
- @end
@@ -1,164 +0,0 @@
1
- // Copyright 2015-present 650 Industries. All rights reserved.
2
-
3
- #import "LinkPreviewNativeNavigation.h"
4
- #import <Foundation/Foundation.h>
5
- #include <Foundation/NSObjCRuntime.h>
6
- #import <RNScreens/RNSScreen.h>
7
- #import <RNScreens/RNSScreenStack.h>
8
-
9
- @implementation LinkPreviewNativeNavigationObjC {
10
- }
11
-
12
- + (BOOL)isRNSScreenStackView:(UIView *)view {
13
- if (view != nil) {
14
- return [view isKindOfClass:[RNSScreenStackView class]];
15
- }
16
-
17
- return NO;
18
- }
19
-
20
- + (BOOL)isRNSBottomTabsScreenComponentView:(UIView *)view {
21
- if (view != nil) {
22
- return [view isKindOfClass:[RNSBottomTabsScreenComponentView class]];
23
- }
24
-
25
- return NO;
26
- }
27
-
28
- + (BOOL)isRNSBottomTabsHostComponentView:(UIView *)view {
29
- if (view != nil) {
30
- return [view isKindOfClass:[RNSBottomTabsHostComponentView class]];
31
- }
32
-
33
- return NO;
34
- }
35
-
36
- + (nullable UITabBarController *)getBottomTabControllerFromView:(UIView *)view {
37
- if ([view isKindOfClass:[RNSBottomTabsScreenComponentView class]]) {
38
- RNSBottomTabsScreenComponentView *bottomTabsView =
39
- (RNSBottomTabsScreenComponentView *)view;
40
- UIViewController *reactVC = [bottomTabsView reactViewController];
41
- if (reactVC != nil &&
42
- [reactVC.tabBarController isKindOfClass:[RNSTabBarController class]]) {
43
- RNSTabBarController *tabBarController =
44
- (RNSTabBarController *)reactVC.tabBarController;
45
- return tabBarController;
46
- }
47
- }
48
- if ([view isKindOfClass:[RNSBottomTabsHostComponentView class]]) {
49
- RNSBottomTabsHostComponentView *bottomTabsView =
50
- (RNSBottomTabsHostComponentView *)view;
51
- return [bottomTabsView controller];
52
- }
53
- return nil;
54
- }
55
-
56
- + (nullable UIView *)getTab:(UITabBarController *)controller
57
- withKey:(NSString *)key {
58
- if (controller != nil) {
59
- for (UIViewController *subcontroller in controller.viewControllers) {
60
- if ([subcontroller.view
61
- isKindOfClass:[RNSBottomTabsScreenComponentView class]]) {
62
- if (((RNSBottomTabsScreenComponentView *)subcontroller.view).tabKey ==
63
- key) {
64
- return subcontroller.view;
65
- }
66
- }
67
- }
68
- }
69
-
70
- return nil;
71
- }
72
-
73
- + (nonnull NSArray<NSString *> *)getStackViewScreenIds:(UIView *)view {
74
- if (view != nil && [view isKindOfClass:[RNSScreenStackView class]]) {
75
- RNSScreenStackView *stackView = (RNSScreenStackView *)view;
76
- return stackView.screenIds;
77
- }
78
- return @[];
79
- }
80
-
81
- + (nonnull NSArray<UIView *> *)getScreenViews:(UIView *)view {
82
- if (view != nil && [view isKindOfClass:[RNSScreenStackView class]]) {
83
- RNSScreenStackView *stackView = (RNSScreenStackView *)view;
84
- return stackView.reactSubviews;
85
- }
86
- return @[];
87
- }
88
-
89
- + (nonnull NSString *)getScreenId:(UIView *)view {
90
- if (view != nil && [view isKindOfClass:[RNSScreenView class]]) {
91
- RNSScreenView *screenView = (RNSScreenView *)view;
92
- return screenView.screenId;
93
- }
94
- return nil;
95
- }
96
-
97
- + (nonnull NSString *)getTabKey:(UIView *)view {
98
- if (view != nil &&
99
- [view isKindOfClass:[RNSBottomTabsScreenComponentView class]]) {
100
- RNSBottomTabsScreenComponentView *tabScreenView =
101
- (RNSBottomTabsScreenComponentView *)view;
102
- return tabScreenView.tabKey;
103
- }
104
- return @"";
105
- }
106
-
107
- + (void)pushPreloadedView:(nonnull UIView *)view
108
- ontoStackView:(nonnull UIView *)rawStackView {
109
- if (![LinkPreviewNativeNavigationObjC isRNSScreenStackView:rawStackView]) {
110
- NSLog(@"ExpoRouter: The provided stack view is not a RNSScreenStackView.");
111
- return;
112
- }
113
- if (![view isKindOfClass:[RNSScreenView class]]) {
114
- NSLog(@"ExpoRouter: The provided view is not a RNSScreenView.");
115
- return;
116
- }
117
- RNSScreenStackView *stackView = (RNSScreenStackView *)rawStackView;
118
- RNSScreenView *preloadedScreenView = (RNSScreenView *)view;
119
- if (preloadedScreenView != nil && stackView != nil) {
120
- // Instead of pushing the preloaded screen view, we set its activity state
121
- // React native screens will then handle the rest.
122
- [preloadedScreenView setActivityState:2];
123
- [stackView markChildUpdated];
124
- // If the screen is modal with header then it will have exactly one child -
125
- // RNSNavigationController.
126
- // https://github.com/software-mansion/react-native-screens/blob/8b82e081e8fdfa6e0864821134bda9e87a745b00/src/components/ScreenStackItem.tsx#L146-L160
127
- if (preloadedScreenView.isModal &&
128
- preloadedScreenView.controller.childViewControllers.count == 1) {
129
- // The first child should be RNSNavigationController (<ScreenStack>).
130
- UIViewController *navController =
131
- preloadedScreenView.controller.childViewControllers[0];
132
- if ([navController isKindOfClass:[RNSNavigationController class]]) {
133
- RNSNavigationController *rnsNavController =
134
- (RNSNavigationController *)navController;
135
- // The delegate of RNSNavigationController is RNSScreenStackView.
136
- id<UINavigationControllerDelegate> delegate = rnsNavController.delegate;
137
- if ([delegate isKindOfClass:[RNSScreenStackView class]]) {
138
- RNSScreenStackView *innerScreenStack = (RNSScreenStackView *)delegate;
139
- // The first and only child of the inner screen stack should be
140
- // RNSScreenView (<ScreenStackItem>).
141
- UIView *firstChild = innerScreenStack.reactSubviews != nil
142
- ? innerScreenStack.reactSubviews[0]
143
- : nil;
144
- if (firstChild != nil &&
145
- [firstChild isKindOfClass:[RNSScreenView class]]) {
146
- RNSScreenView *screenContentView = (RNSScreenView *)firstChild;
147
- // Same as above, we let React Native Screens handle the transition.
148
- // We need to set the activity of inner screen as well, because its
149
- // react value is the same as the preloaded screen - 0.
150
- // https://github.com/software-mansion/react-native-screens/blob/8b82e081e8fdfa6e0864821134bda9e87a745b00/src/components/ScreenStackItem.tsx#L151
151
- [screenContentView setActivityState:2];
152
- [innerScreenStack markChildUpdated];
153
- }
154
- }
155
- }
156
- }
157
- NSLog(@"ExpoRouter: Preloaded screen view pushed.");
158
- } else {
159
- NSLog(@"ExpoRouter: No preloaded screen view found. Relying on JS "
160
- @"navigation.");
161
- }
162
- }
163
-
164
- @end
@@ -1 +0,0 @@
1
- f60f250f744bc5236eb9fcd802fe4318aa11e71733e2c80dcdc5774136e27e2acb2e314bb68f26de12e3a26ef897ec143c8847b949f50fbd2bf8afcef5554f1a
@@ -1 +0,0 @@
1
- 98d633b86820285b29e7f405048bb5dc017351395cec4dbab763604f25ce547a46db488f76fdd9d8190d71d9ae2ac62d92fc776406a6e24905b2d1e21b922d1a