@apexnative/navigation 1.0.0-alpha.3 → 1.0.0-alpha.5

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 (239) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/android/CLAUDE.md +26 -9
  3. package/android/CORE.md +32 -17
  4. package/android/RECIPES.md +9 -3
  5. package/android/src/main/java/dev/apexnative/navigation/NavigationActivity.kt +25 -9
  6. package/android/src/main/java/dev/apexnative/navigation/NavigationApplication.kt +34 -13
  7. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutChecks.kt +5 -1
  8. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutNode.kt +6 -2
  9. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenContext.kt +2 -2
  10. package/android/src/main/java/dev/apexnative/navigation/options/AnimationsOptions.kt +2 -2
  11. package/android/src/main/java/dev/apexnative/navigation/options/ButtonMenuOptions.kt +2 -2
  12. package/android/src/main/java/dev/apexnative/navigation/options/ButtonOptions.kt +2 -2
  13. package/android/src/main/java/dev/apexnative/navigation/options/HardwareBackButtonOptions.kt +9 -1
  14. package/android/src/main/java/dev/apexnative/navigation/options/OptionsCache.kt +8 -4
  15. package/android/src/main/java/dev/apexnative/navigation/options/StackAnimationOptions.kt +40 -2
  16. package/android/src/main/java/dev/apexnative/navigation/options/UserChoices.kt +159 -0
  17. package/android/src/main/java/dev/apexnative/navigation/react/ArrangementStates.kt +6 -6
  18. package/android/src/main/java/dev/apexnative/navigation/react/CommandAnswer.kt +29 -36
  19. package/android/src/main/java/dev/apexnative/navigation/react/CommandContract.kt +59 -0
  20. package/android/src/main/java/dev/apexnative/navigation/react/Hinge.kt +33 -22
  21. package/android/src/main/java/dev/apexnative/navigation/react/NavigationTurboModule.kt +5 -4
  22. package/android/src/main/java/dev/apexnative/navigation/react/PendingCalls.kt +48 -0
  23. package/android/src/main/java/dev/apexnative/navigation/react/ReactView.kt +39 -20
  24. package/android/src/main/java/dev/apexnative/navigation/react/ReloadCoordinator.kt +7 -4
  25. package/android/src/main/java/dev/apexnative/navigation/react/ScreenInsets.kt +6 -6
  26. package/android/src/main/java/dev/apexnative/navigation/react/ScreenRegions.kt +10 -5
  27. package/android/src/main/java/dev/apexnative/navigation/react/events/AppearanceDispatcher.kt +47 -46
  28. package/android/src/main/java/dev/apexnative/navigation/react/events/EventEmitter.kt +34 -7
  29. package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationState.kt +154 -0
  30. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaView.kt +6 -4
  31. package/android/src/main/java/dev/apexnative/navigation/slots/SlotContainers.kt +10 -7
  32. package/android/src/main/java/dev/apexnative/navigation/slots/SlotScreenView.kt +12 -12
  33. package/android/src/main/java/dev/apexnative/navigation/slots/SlotView.kt +4 -3
  34. package/android/src/main/java/dev/apexnative/navigation/slots/SlotViews.kt +40 -0
  35. package/android/src/main/java/dev/apexnative/navigation/utils/ImageKey.kt +66 -0
  36. package/android/src/main/java/dev/apexnative/navigation/utils/ImageLoader.kt +7 -89
  37. package/android/src/main/java/dev/apexnative/navigation/utils/ImageRequests.kt +76 -0
  38. package/android/src/main/java/dev/apexnative/navigation/utils/OptionImages.kt +262 -0
  39. package/android/src/main/java/dev/apexnative/navigation/utils/ViewController.kt +3 -1
  40. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementController.kt +3 -2
  41. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/AppliedTabCalls.kt +49 -0
  42. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsController.kt +25 -17
  43. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsPresenter.kt +25 -24
  44. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentViewController.kt +6 -2
  45. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ContentReadiness.kt +2 -2
  46. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RenderWait.kt +27 -7
  47. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenReadiness.kt +103 -56
  48. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalCoordinator.kt +5 -5
  49. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackCheck.kt +50 -0
  50. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackState.kt +45 -14
  51. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigator.kt +25 -8
  52. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/RootCoordinator.kt +8 -5
  53. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayCoordinator.kt +8 -8
  54. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/Capabilities.kt +11 -4
  55. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuController.kt +1 -1
  56. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitPanes.kt +23 -0
  57. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewController.kt +61 -15
  58. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackCommands.kt +28 -18
  59. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackController.kt +25 -12
  60. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackDisplay.kt +2 -1
  61. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackQueue.kt +85 -29
  62. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackViews.kt +2 -2
  63. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPresenter.kt +7 -5
  64. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/ScreenSearch.kt +3 -5
  65. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/StackSearchPresenter.kt +5 -8
  66. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarComponents.kt +5 -51
  67. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/MenuChecks.kt +13 -56
  68. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarPresenter.kt +14 -11
  69. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ViewController.kt +56 -21
  70. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabs.kt +4 -2
  71. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomBottomTabItemView.kt +0 -5
  72. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/Fab.kt +14 -10
  73. package/cli/doctor/checks/app.js +61 -13
  74. package/cli/doctor/checks/splash.js +4 -22
  75. package/cli/migrate/native.js +18 -0
  76. package/cli/setup/source.js +2 -1
  77. package/cli/setup/steps/mainApplication.js +134 -19
  78. package/cli/splash/index.js +3 -1
  79. package/docs-md/architecture/transitions.md +6 -7
  80. package/docs-md/containers/modals.md +2 -2
  81. package/docs-md/guides/cli.md +1 -2
  82. package/docs-md/help/glossary.md +1 -1
  83. package/docs-md/help/troubleshooting.md +22 -5
  84. package/docs-md/index.json +4 -0
  85. package/docs-md/migration/from-react-native-navigation.md +8 -2
  86. package/docs-md/screen-ui/back-and-gestures.md +24 -2
  87. package/docs-md/start/installation.md +4 -2
  88. package/ios/CLAUDE.md +17 -5
  89. package/ios/CORE.md +18 -13
  90. package/ios/Contract/ANNCommandAnswer.h +9 -2
  91. package/ios/Contract/ANNCommandAnswer.mm +28 -30
  92. package/ios/Contract/ANNCommandContract.h +15 -0
  93. package/ios/Contract/ANNCommandContract.mm +78 -0
  94. package/ios/Core/ANNAppearanceDispatcher.h +5 -4
  95. package/ios/Core/ANNAppearanceDispatcher.mm +12 -1
  96. package/ios/Core/ANNErrorHandler.h +1 -1
  97. package/ios/Core/ANNErrorHandler.mm +3 -1
  98. package/ios/Core/ANNEventEmitter.h +1 -1
  99. package/ios/Core/ANNEventEmitter.mm +2 -2
  100. package/ios/Core/ANNJavaScriptCalls.h +34 -0
  101. package/ios/Core/ANNJavaScriptCalls.mm +61 -0
  102. package/ios/Core/ANNNavigationState.h +7 -5
  103. package/ios/Core/ANNNavigationState.mm +8 -7
  104. package/ios/Core/ANNNodeHelper.h +32 -12
  105. package/ios/Core/ANNNodeHelper.mm +100 -3
  106. package/ios/Core/ANNRenderWait.h +15 -1
  107. package/ios/Core/ANNRenderWait.mm +119 -17
  108. package/ios/Core/UIViewController+LayoutProtocol.h +9 -2
  109. package/ios/Core/UIViewController+LayoutProtocol.mm +8 -0
  110. package/ios/Layouts/Modal/ANNModalCoordinator.h +1 -1
  111. package/ios/Layouts/Modal/ANNModalCoordinator.mm +55 -14
  112. package/ios/Layouts/Root/ANNSplashViewController.h +5 -3
  113. package/ios/Layouts/Root/ANNSplashViewController.mm +147 -0
  114. package/ios/Layouts/Screen/ANNComponentViewController.h +8 -0
  115. package/ios/Layouts/Screen/ANNComponentViewController.mm +32 -5
  116. package/ios/Layouts/Screen/ANNScreenPlace.h +41 -0
  117. package/ios/Layouts/Screen/ANNScreenPlace.mm +175 -0
  118. package/ios/Layouts/SplitView/ANNSplitViewCommands.h +3 -2
  119. package/ios/Layouts/SplitView/ANNSplitViewCommands.mm +105 -39
  120. package/ios/Layouts/SplitView/ANNSplitViewController.mm +4 -2
  121. package/ios/Layouts/Stack/ANNPreviewPush.h +5 -5
  122. package/ios/Layouts/Stack/ANNPreviewPush.mm +85 -22
  123. package/ios/Layouts/Stack/ANNStackCommands.mm +1 -0
  124. package/ios/Layouts/Stack/ANNStackController.mm +26 -3
  125. package/ios/Layouts/Stack/ANNStackQueue.h +3 -1
  126. package/ios/Layouts/Stack/ANNStackQueue.mm +56 -43
  127. package/ios/Layouts/Stack/UINavigationController+ANNCommands.h +4 -2
  128. package/ios/Layouts/Stack/UINavigationController+ANNCommands.mm +2 -3
  129. package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.h +4 -0
  130. package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.mm +11 -0
  131. package/ios/Layouts/Tabs/ANNBottomTabsController.mm +13 -5
  132. package/ios/Layouts/Tabs/ANNBottomTabsPresenter.h +2 -2
  133. package/ios/Layouts/Tabs/ANNBottomTabsPresenter.mm +109 -7
  134. package/ios/Options/ANNOptionsCache.h +7 -6
  135. package/ios/Options/ANNSearchBarOptions.h +4 -3
  136. package/ios/Options/ANNUserChoice.h +57 -0
  137. package/ios/Options/ANNUserChoice.mm +44 -0
  138. package/ios/Options/Params/ANNImageSource.h +61 -0
  139. package/ios/Options/Params/ANNImageSource.mm +101 -0
  140. package/ios/Options/Params/ANNOptionImages.h +37 -0
  141. package/ios/Options/Params/ANNOptionImages.mm +284 -0
  142. package/ios/Options/Params/Image.h +11 -2
  143. package/ios/Options/Params/Image.mm +15 -2
  144. package/ios/Options/Params/ImageParser.h +5 -5
  145. package/ios/Options/Params/ImageParser.mm +28 -46
  146. package/ios/Public/ApexNavigation/ApexNavigation.h +1 -1
  147. package/ios/RECIPES.md +11 -5
  148. package/ios/React/Slots/ANNSlotComponentView.mm +24 -17
  149. package/ios/React/Slots/ANNSlotContainers.h +14 -6
  150. package/ios/React/Slots/ANNSlotContainers.mm +75 -2
  151. package/ios/TopBar/ANNBarButtons.h +9 -5
  152. package/ios/TopBar/ANNBarButtons.mm +211 -63
  153. package/ios/TopBar/ANNIconButtonImage.h +1 -0
  154. package/ios/TopBar/ANNIconButtonImage.mm +34 -1
  155. package/ios/TopBar/ANNLargeTitlePresenter.h +13 -0
  156. package/ios/TopBar/ANNLargeTitlePresenter.mm +26 -3
  157. package/ios/TopBar/ANNSearchPresenter.mm +170 -19
  158. package/ios/TopBar/ANNTopBarPresenter.h +5 -0
  159. package/ios/TopBar/ANNTopBarPresenter.mm +60 -11
  160. package/ios/TurboModules/ANNTurboModule.mm +39 -21
  161. package/lib/module/ARCHITECTURE.md +18 -18
  162. package/lib/module/adapters/NativeANNTurboModule.js.map +1 -1
  163. package/lib/module/api/commands/commands.js +54 -6
  164. package/lib/module/api/commands/commands.js.map +1 -1
  165. package/lib/module/api/navigation.js.map +1 -1
  166. package/lib/module/engine/commands.js +9 -7
  167. package/lib/module/engine/commands.js.map +1 -1
  168. package/lib/module/engine/layout.js +13 -9
  169. package/lib/module/engine/layout.js.map +1 -1
  170. package/lib/module/engine/options.js +44 -11
  171. package/lib/module/engine/options.js.map +1 -1
  172. package/lib/module/engine/places.js +52 -7
  173. package/lib/module/engine/places.js.map +1 -1
  174. package/lib/module/engine/props.js +30 -1
  175. package/lib/module/engine/props.js.map +1 -1
  176. package/lib/module/engine/rememberedOptions.js +1 -1
  177. package/lib/module/engine/rememberedOptions.js.map +1 -1
  178. package/lib/module/engine/screens.js +22 -12
  179. package/lib/module/engine/screens.js.map +1 -1
  180. package/lib/module/interfaces/contract/commands.json +101 -0
  181. package/lib/typescript/adapters/NativeANNTurboModule.d.ts +5 -2
  182. package/lib/typescript/adapters/NativeANNTurboModule.d.ts.map +1 -1
  183. package/lib/typescript/api/commands/commands.d.ts.map +1 -1
  184. package/lib/typescript/api/commands/presentation.d.ts +4 -3
  185. package/lib/typescript/api/commands/presentation.d.ts.map +1 -1
  186. package/lib/typescript/api/events/navigationEvents.d.ts +1 -1
  187. package/lib/typescript/api/events/navigationEvents.d.ts.map +1 -1
  188. package/lib/typescript/api/hooks/useNavigation.d.ts +1 -1
  189. package/lib/typescript/api/hooks/useNavigation.d.ts.map +1 -1
  190. package/lib/typescript/api/navigation.d.ts +4 -1
  191. package/lib/typescript/api/navigation.d.ts.map +1 -1
  192. package/lib/typescript/engine/commands.d.ts.map +1 -1
  193. package/lib/typescript/engine/options.d.ts +5 -2
  194. package/lib/typescript/engine/options.d.ts.map +1 -1
  195. package/lib/typescript/engine/places.d.ts +7 -2
  196. package/lib/typescript/engine/places.d.ts.map +1 -1
  197. package/lib/typescript/engine/props.d.ts +8 -1
  198. package/lib/typescript/engine/props.d.ts.map +1 -1
  199. package/lib/typescript/engine/rememberedOptions.d.ts.map +1 -1
  200. package/lib/typescript/engine/screens.d.ts.map +1 -1
  201. package/lib/typescript/interfaces/ComponentEvents.d.ts +2 -2
  202. package/lib/typescript/interfaces/ComponentEvents.d.ts.map +1 -1
  203. package/lib/typescript/interfaces/Events.d.ts +19 -10
  204. package/lib/typescript/interfaces/Events.d.ts.map +1 -1
  205. package/lib/typescript/interfaces/Options.d.ts +1 -1
  206. package/lib/typescript/interfaces/Options.d.ts.map +1 -1
  207. package/lib/typescript/interfaces/options/animations.d.ts +23 -4
  208. package/lib/typescript/interfaces/options/animations.d.ts.map +1 -1
  209. package/lib/typescript/interfaces/options/buttons.d.ts +13 -5
  210. package/lib/typescript/interfaces/options/buttons.d.ts.map +1 -1
  211. package/lib/typescript/interfaces/options/stack.d.ts +9 -0
  212. package/lib/typescript/interfaces/options/stack.d.ts.map +1 -1
  213. package/lib/typescript/interfaces/options/topBar.d.ts +22 -9
  214. package/lib/typescript/interfaces/options/topBar.d.ts.map +1 -1
  215. package/package.json +1 -1
  216. package/src/ARCHITECTURE.md +18 -18
  217. package/src/adapters/NativeANNTurboModule.ts +5 -2
  218. package/src/api/commands/commands.ts +48 -7
  219. package/src/api/commands/presentation.ts +4 -3
  220. package/src/api/events/navigationEvents.ts +1 -1
  221. package/src/api/hooks/useNavigation.ts +1 -1
  222. package/src/api/navigation.ts +4 -1
  223. package/src/engine/commands.ts +19 -7
  224. package/src/engine/layout.ts +16 -9
  225. package/src/engine/options.ts +39 -11
  226. package/src/engine/places.ts +65 -7
  227. package/src/engine/props.ts +30 -1
  228. package/src/engine/rememberedOptions.ts +4 -1
  229. package/src/engine/screens.tsx +23 -13
  230. package/src/interfaces/ComponentEvents.ts +2 -2
  231. package/src/interfaces/Events.ts +19 -10
  232. package/src/interfaces/Options.ts +1 -0
  233. package/src/interfaces/contract/commands.json +101 -0
  234. package/src/interfaces/options/animations.ts +24 -4
  235. package/src/interfaces/options/buttons.ts +13 -5
  236. package/src/interfaces/options/stack.ts +9 -0
  237. package/src/interfaces/options/topBar.ts +22 -9
  238. package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationStateReporter.kt +0 -62
  239. package/android/src/main/java/dev/apexnative/navigation/react/events/StateHold.kt +0 -62
@@ -2,16 +2,25 @@
2
2
 
3
3
  import { DynamicColorIOS, Image, Platform, processColor } from 'react-native';
4
4
  import { nextId } from "./ids.js";
5
- import { rememberButtonRoot, setProps } from "./props.js";
5
+ import { rememberButtonRoot, rememberOptionsComponent, setProps } from "./props.js";
6
6
  /**
7
7
  * The options as the native side reads them: colors in the format of the platform, images resolved, and every
8
8
  * component in them with an id of its own (its props stay in JavaScript). Options come in their own form only:
9
- * animations with `enter` and `exit`, `searchBar` and `interpolation` as objects.
9
+ * animations with `enter` and `exit`, `searchBar` and `interpolation` as objects. `owner` is the id of the node the
10
+ * options are for, or `'defaultOptions'`: a component without an id of its own gets one made of the owner, its place
11
+ * in the options and its name, the same for every `mergeOptions` of the node, so the native side keeps the mounted
12
+ * component and only its props change. Without an owner each conversion gives it a new one.
10
13
  */
11
- export function toNativeOptions(options) {
12
- return convert(options);
14
+ export function toNativeOptions(options, owner) {
15
+ return convert(options, undefined, {
16
+ owner,
17
+ path: ''
18
+ });
13
19
  }
14
20
 
21
+ // Where a value is in the options being converted: the node they are for, and the path to the value
22
+ // (`topBar.rightButtons[0].component`).
23
+
15
24
  /**
16
25
  * Options as the native side reads them over others, merged as the native side merges them: groups key by key, while
17
26
  * a color or an image, an object here too, replaces what was there as any value does. `undefined` keeps it.
@@ -30,11 +39,19 @@ export function mergeNativeOptions(base, over) {
30
39
  function isGroup(value) {
31
40
  return isFields(value) && !Array.isArray(value);
32
41
  }
33
- function convert(value, key) {
42
+ function convert(value, key, place) {
34
43
  if (key !== undefined && isColor(key)) return nativeColor(value);
35
44
  if (key !== undefined && isImage(key)) return nativeImage(value);
36
45
  if (Array.isArray(value)) {
37
- const items = value.map(item => convert(item));
46
+ // An item is known by its id where it has one (a button, a suggestion), so a component keeps its root when the
47
+ // list around it changes; by its place in the list otherwise.
48
+ const items = value.map((item, index) => {
49
+ const id = isFields(item) && typeof item.id === 'string' && item.id ? item.id : index;
50
+ return convert(item, undefined, {
51
+ ...place,
52
+ path: `${place.path}[${id}]`
53
+ });
54
+ });
38
55
  if (key?.endsWith('Buttons') || key === 'buttons') items.forEach(noteButtonRoot);
39
56
  return key?.endsWith('Buttons') ? items.map(takeButtonProps) : items;
40
57
  }
@@ -42,9 +59,13 @@ function convert(value, key) {
42
59
  const result = {};
43
60
  for (const [name, item] of Object.entries(withSymbols(value))) {
44
61
  // The props of a component are its own, not options.
45
- result[name] = name === 'passProps' ? item : convert(item, name);
62
+ const path = place.path ? `${place.path}.${name}` : name;
63
+ result[name] = name === 'passProps' ? item : convert(item, name, {
64
+ ...place,
65
+ path
66
+ });
46
67
  }
47
- return key === 'component' || key === 'resultsComponent' ? takeComponentProps(result) : result;
68
+ return key === 'component' || key === 'resultsComponent' ? takeComponentProps(result, place) : result;
48
69
  }
49
70
  function isColor(key) {
50
71
  return (key === 'color' || key.endsWith('Color')) && key !== 'bkgColor';
@@ -98,18 +119,30 @@ function isFields(value) {
98
119
  return typeof value === 'object' && value !== null;
99
120
  }
100
121
 
101
- // A component in the options gets an id; the native side creates it with that id, and its props wait here.
122
+ // A component in the options gets an id; the native side creates it with that id, and its props wait here. Without
123
+ // an id of its own it is the owner's, the place of the component (`topBar.title`, `topBar.rightButtons[Save]` by the
124
+ // button's id, `topBar.searchBar.resultsComponent`) and its name: another name there is another component.
102
125
  function takeComponentProps({
103
126
  passProps,
104
127
  ...component
105
- }) {
106
- const componentId = component.id || nextId('CustomComponent');
128
+ }, place) {
129
+ const componentId = component.id || componentIdAt(place, component.name);
107
130
  if (passProps) setProps(componentId, passProps);
108
131
  return {
109
132
  ...component,
110
133
  componentId
111
134
  };
112
135
  }
136
+ function componentIdAt({
137
+ owner,
138
+ path
139
+ }, name) {
140
+ if (owner === undefined) return nextId('CustomComponent');
141
+ const at = path.endsWith('.component') ? path.slice(0, -'.component'.length) : path;
142
+ const id = `${owner}/${at}/${String(name)}`;
143
+ rememberOptionsComponent(owner, id);
144
+ return id;
145
+ }
113
146
 
114
147
  // The component of a bar button (the top bar's `*Buttons`, the toolbar's `buttons`) is a root the native side only
115
148
  // sizes: its wrapper centers the content in the button's slot.
@@ -1 +1 @@
1
- {"version":3,"names":["DynamicColorIOS","Image","Platform","processColor","nextId","rememberButtonRoot","setProps","toNativeOptions","options","convert","mergeNativeOptions","base","over","result","key","next","Object","entries","undefined","previous","isColor","isImage","isGroup","value","isFields","Array","isArray","nativeColor","nativeImage","items","map","item","endsWith","forEach","noteButtonRoot","takeButtonProps","name","withSymbols","takeComponentProps","SYMBOL_FIELDS","icon","selectedIcon","isPlatformIcon","fields","field","symbolField","own","OS","ios","android","system","resolveAssetSource","passProps","component","componentId","id","button","rest","iosColor","androidColor","pair","dynamic","light","dark","color","appearance"],"sourceRoot":"../../../src","sources":["engine/options.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DynamicColorIOS","Image","Platform","processColor","nextId","rememberButtonRoot","rememberOptionsComponent","setProps","toNativeOptions","options","owner","convert","undefined","path","mergeNativeOptions","base","over","result","key","next","Object","entries","previous","isColor","isImage","isGroup","value","isFields","Array","isArray","place","nativeColor","nativeImage","items","map","item","index","id","endsWith","forEach","noteButtonRoot","takeButtonProps","name","withSymbols","takeComponentProps","SYMBOL_FIELDS","icon","selectedIcon","isPlatformIcon","fields","field","symbolField","own","OS","ios","android","system","resolveAssetSource","passProps","component","componentId","componentIdAt","at","slice","length","String","button","rest","iosColor","androidColor","pair","dynamic","light","dark","color","appearance"],"sourceRoot":"../../../src","sources":["engine/options.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { onNativeEvent } from "./native.js";
4
+ import { forgetProps } from "./props.js";
4
5
  import { screenNameOf } from "./slots.js";
5
6
 
6
7
  // Where each screen is, noted as the engine builds the layouts of the commands: what it shows in and its place in its
@@ -28,6 +29,11 @@ const stackedSplits = new Set();
28
29
  let listeningToSplitViews = false;
29
30
  // The primaries of pairs shown alone, noted as their node is built, until their place is noted.
30
31
  const alone = new Set();
32
+ // The layouts each screen shows in (its stack, pair, tabs, menu, split view, and the root of its layer), and how many
33
+ // live screens each layout holds. A layout whose last screen went is gone, and with it the props of the components the
34
+ // library named in its options: they stay as long as any of its screens may show them again.
35
+ const layoutsOfScreen = new Map();
36
+ const screensInLayout = new Map();
31
37
  // The last screens that went, so a command from one of them can say so; a screen the engine never saw is not one.
32
38
  const gone = new Set();
33
39
  const GONE_KEPT = 200;
@@ -35,6 +41,14 @@ export function placeOf(screenId) {
35
41
  return places.get(screenId);
36
42
  }
37
43
 
44
+ /** The first screen of a stack, as the engine noted it; with a pair first, its primary. */
45
+ export function firstScreenOf(stack) {
46
+ for (const [id, place] of places) {
47
+ if (place.stack === stack && place.index === 0 && place.arrangement?.placement !== 'secondary') return id;
48
+ }
49
+ return undefined;
50
+ }
51
+
38
52
  /** Notes that a screen is the primary of a pair shown alone, where the native side shows no pairs. */
39
53
  export function noteAlone(screenId) {
40
54
  alone.add(screenId);
@@ -45,15 +59,22 @@ export function isGone(screenId) {
45
59
  return gone.has(screenId);
46
60
  }
47
61
 
62
+ /** The layouts the screen shows in, outermost first: those whose screens come with it in a command go in it too. */
63
+ export function layoutsOf(screenId) {
64
+ return layoutsOfScreen.get(screenId) ?? [];
65
+ }
66
+
48
67
  /**
49
68
  * Notes the screens of a layout, the first of a stack at `index`. A modal or an overlay given as a whole is a layer of
50
- * its own; screens added to one, such as a push, take the layer of the screen they come from.
69
+ * its own; screens added to one, such as a push, take the layer of the screen they come from, and `within`, the
70
+ * layouts they show in (`layoutsOf` that screen).
51
71
  */
52
- export function notePlaces(node, container, stack = null, index = 0, menu, layer = container === 'root' ? 'root' : node.id) {
72
+ export function notePlaces(node, container, stack = null, index = 0, menu, layer = container === 'root' ? 'root' : node.id, within = []) {
53
73
  if (node.type === 'Component' || node.type === 'ExternalComponent') {
54
74
  const name = node.data.name ?? '';
55
75
  gone.delete(node.id);
56
76
  columnOfScreen.delete(node.id);
77
+ noteLayouts(node.id, within);
57
78
  places.set(node.id, {
58
79
  name: screenNameOf(name),
59
80
  container,
@@ -74,7 +95,7 @@ export function notePlaces(node, container, stack = null, index = 0, menu, layer
74
95
  } else if (node.type === 'Arrangement') {
75
96
  // One entry of its stack: both screens have its place there, and each knows the pair.
76
97
  node.children.forEach((child, childIndex) => {
77
- notePlaces(child, container, stack, index, menu, layer);
98
+ notePlaces(child, container, stack, index, menu, layer, [...within, node.id]);
78
99
  const place = places.get(child.id);
79
100
  if (place) {
80
101
  const placement = childIndex === 0 ? 'primary' : 'secondary';
@@ -89,7 +110,7 @@ export function notePlaces(node, container, stack = null, index = 0, menu, layer
89
110
  });
90
111
  } else if (node.type === 'Stack') {
91
112
  columnOfStack.delete(node.id);
92
- node.children.forEach((child, childIndex) => notePlaces(child, container, node.id, childIndex, menu, layer));
113
+ node.children.forEach((child, childIndex) => notePlaces(child, container, node.id, childIndex, menu, layer, [...within, node.id]));
93
114
  } else if (node.type === 'SplitView') {
94
115
  // A split view sent again with its id starts anew: its columns are noted again, and it isn't one stack until the
95
116
  // native side says so.
@@ -97,7 +118,7 @@ export function notePlaces(node, container, stack = null, index = 0, menu, layer
97
118
  const columns = node.data.columns ?? [];
98
119
  const stacks = {};
99
120
  node.children.forEach((child, childIndex) => {
100
- notePlaces(child, container, null, 0, menu, layer);
121
+ notePlaces(child, container, null, 0, menu, layer, [...within, node.id]);
101
122
  const column = columns[childIndex];
102
123
  if (!column) return;
103
124
  if (child.type === 'Stack') stacks[column] = child.id;
@@ -110,13 +131,36 @@ export function notePlaces(node, container, stack = null, index = 0, menu, layer
110
131
  } else if (node.type === 'SideMenuRoot') {
111
132
  for (const part of node.children) {
112
133
  const side = MENU_PARTS[part.type];
134
+ const parts = [...within, node.id, part.id];
113
135
  part.children.forEach(child => notePlaces(child, container, null, 0, side ? {
114
136
  id: node.id,
115
137
  part: side
116
- } : menu, layer));
138
+ } : menu, layer, parts));
117
139
  }
118
140
  } else {
119
- node.children.forEach(child => notePlaces(child, container, null, 0, menu, layer));
141
+ node.children.forEach(child => notePlaces(child, container, null, 0, menu, layer, [...within, node.id]));
142
+ }
143
+ }
144
+
145
+ // A screen noted again under its id (a layout sent again) leaves the layouts it was in before.
146
+ function noteLayouts(screenId, within) {
147
+ leaveLayouts(screenId);
148
+ const layouts = [...new Set(within)];
149
+ layoutsOfScreen.set(screenId, layouts);
150
+ for (const layout of layouts) screensInLayout.set(layout, (screensInLayout.get(layout) ?? 0) + 1);
151
+ }
152
+ function leaveLayouts(screenId) {
153
+ const layouts = layoutsOfScreen.get(screenId);
154
+ if (!layouts) return;
155
+ layoutsOfScreen.delete(screenId);
156
+ for (const layout of layouts) {
157
+ const count = (screensInLayout.get(layout) ?? 1) - 1;
158
+ if (count > 0) {
159
+ screensInLayout.set(layout, count);
160
+ continue;
161
+ }
162
+ screensInLayout.delete(layout);
163
+ forgetProps(layout);
120
164
  }
121
165
  }
122
166
 
@@ -170,6 +214,7 @@ export function listenToSplitViews() {
170
214
 
171
215
  /** The screen is gone. */
172
216
  export function forgetPlace(screenId) {
217
+ leaveLayouts(screenId);
173
218
  places.delete(screenId);
174
219
  columnOfScreen.delete(screenId);
175
220
  gone.add(screenId);
@@ -1 +1 @@
1
- {"version":3,"names":["onNativeEvent","screenNameOf","MENU_PARTS","SideMenuLeft","SideMenuCenter","SideMenuRight","places","Map","columnOfStack","columnOfScreen","stacksOfSplit","stackedSplits","Set","listeningToSplitViews","alone","gone","GONE_KEPT","placeOf","screenId","get","noteAlone","add","isGone","has","notePlaces","node","container","stack","index","menu","layer","id","type","name","data","delete","set","arrangement","placement","children","forEach","child","childIndex","place","forgetSplit","columns","stacks","column","noteColumn","split","part","side","columnOf","undefined","stackOfColumn","coversColumn","listenToSplitViews","componentId","stacked","forgetPlace","size","values","next","value"],"sourceRoot":"../../../src","sources":["engine/places.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["onNativeEvent","forgetProps","screenNameOf","MENU_PARTS","SideMenuLeft","SideMenuCenter","SideMenuRight","places","Map","columnOfStack","columnOfScreen","stacksOfSplit","stackedSplits","Set","listeningToSplitViews","alone","layoutsOfScreen","screensInLayout","gone","GONE_KEPT","placeOf","screenId","get","firstScreenOf","stack","id","place","index","arrangement","placement","undefined","noteAlone","add","isGone","has","layoutsOf","notePlaces","node","container","menu","layer","within","type","name","data","delete","noteLayouts","set","children","forEach","child","childIndex","forgetSplit","columns","stacks","column","noteColumn","split","part","side","parts","leaveLayouts","layouts","layout","count","columnOf","stackOfColumn","coversColumn","listenToSplitViews","componentId","stacked","forgetPlace","size","values","next","value"],"sourceRoot":"../../../src","sources":["engine/places.ts"],"mappings":";;AAEA,SAASA,aAAa,QAAQ,aAAU;AACxC,SAASC,WAAW,QAAQ,YAAS;AACrC,SAASC,YAAY,QAAQ,YAAS;;AAEtC;AACA;AACA;;AAEA;;AAqBA,MAAMC,UAA4E,GAAG;EACnFC,YAAY,EAAE,MAAM;EACpBC,cAAc,EAAE,QAAQ;EACxBC,aAAa,EAAE;AACjB,CAAC;;AAED;;AAMA,MAAMC,MAAM,GAAG,IAAIC,GAAG,CAAsB,CAAC;AAC7C;AACA;AACA,MAAMC,aAAa,GAAG,IAAID,GAAG,CAAsB,CAAC;AACpD,MAAME,cAAc,GAAG,IAAIF,GAAG,CAAsB,CAAC;AACrD,MAAMG,aAAa,GAAG,IAAIH,GAAG,CAA0C,CAAC;AACxE;AACA,MAAMI,aAAa,GAAG,IAAIC,GAAG,CAAS,CAAC;AACvC,IAAIC,qBAAqB,GAAG,KAAK;AACjC;AACA,MAAMC,KAAK,GAAG,IAAIF,GAAG,CAAS,CAAC;AAC/B;AACA;AACA;AACA,MAAMG,eAAe,GAAG,IAAIR,GAAG,CAA4B,CAAC;AAC5D,MAAMS,eAAe,GAAG,IAAIT,GAAG,CAAiB,CAAC;AACjD;AACA,MAAMU,IAAI,GAAG,IAAIL,GAAG,CAAS,CAAC;AAC9B,MAAMM,SAAS,GAAG,GAAG;AAErB,OAAO,SAASC,OAAOA,CAACC,QAAgB,EAA2B;EACjE,OAAOd,MAAM,CAACe,GAAG,CAACD,QAAQ,CAAC;AAC7B;;AAEA;AACA,OAAO,SAASE,aAAaA,CAACC,KAAa,EAAsB;EAC/D,KAAK,MAAM,CAACC,EAAE,EAAEC,KAAK,CAAC,IAAInB,MAAM,EAAE;IAChC,IAAImB,KAAK,CAACF,KAAK,KAAKA,KAAK,IAAIE,KAAK,CAACC,KAAK,KAAK,CAAC,IAAID,KAAK,CAACE,WAAW,EAAEC,SAAS,KAAK,WAAW,EAC5F,OAAOJ,EAAE;EACb;EACA,OAAOK,SAAS;AAClB;;AAEA;AACA,OAAO,SAASC,SAASA,CAACV,QAAgB,EAAQ;EAChDN,KAAK,CAACiB,GAAG,CAACX,QAAQ,CAAC;AACrB;;AAEA;AACA,OAAO,SAASY,MAAMA,CAACZ,QAAgB,EAAW;EAChD,OAAOH,IAAI,CAACgB,GAAG,CAACb,QAAQ,CAAC;AAC3B;;AAEA;AACA,OAAO,SAASc,SAASA,CAACd,QAAgB,EAAqB;EAC7D,OAAOL,eAAe,CAACM,GAAG,CAACD,QAAQ,CAAC,IAAI,EAAE;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASe,UAAUA,CACxBC,IAAgB,EAChBC,SAAmC,EACnCd,KAAoB,GAAG,IAAI,EAC3BG,KAAK,GAAG,CAAC,EACTY,IAA0B,EAC1BC,KAAa,GAAGF,SAAS,KAAK,MAAM,GAAG,MAAM,GAAGD,IAAI,CAACZ,EAAE,EACvDgB,MAAyB,GAAG,EAAE,EACxB;EACN,IAAIJ,IAAI,CAACK,IAAI,KAAK,WAAW,IAAIL,IAAI,CAACK,IAAI,KAAK,mBAAmB,EAAE;IAClE,MAAMC,IAAI,GAAGN,IAAI,CAACO,IAAI,CAACD,IAAI,IAAI,EAAE;IACjCzB,IAAI,CAAC2B,MAAM,CAACR,IAAI,CAACZ,EAAE,CAAC;IACpBf,cAAc,CAACmC,MAAM,CAACR,IAAI,CAACZ,EAAE,CAAC;IAC9BqB,WAAW,CAACT,IAAI,CAACZ,EAAE,EAAEgB,MAAM,CAAC;IAC5BlC,MAAM,CAACwC,GAAG,CAACV,IAAI,CAACZ,EAAE,EAAE;MAClBkB,IAAI,EAAEzC,YAAY,CAACyC,IAAI,CAAC;MACxBL,SAAS;MACTd,KAAK;MACLG,KAAK;MACL,IAAIY,IAAI,IAAI;QAAEA;MAAK,CAAC,CAAC;MACrBC,KAAK;MACL,IAAIzB,KAAK,CAAC8B,MAAM,CAACR,IAAI,CAACZ,EAAE,CAAC,GACrB;QAAEG,WAAW,EAAE;UAAEH,EAAE,EAAEY,IAAI,CAACZ,EAAE;UAAEI,SAAS,EAAE,SAAkB;UAAEd,KAAK,EAAE;QAAK;MAAE,CAAC,GAC5E,CAAC,CAAC;IACR,CAAC,CAAC;EACJ,CAAC,MAAM,IAAIsB,IAAI,CAACK,IAAI,KAAK,aAAa,EAAE;IACtC;IACAL,IAAI,CAACW,QAAQ,CAACC,OAAO,CAAC,CAACC,KAAK,EAAEC,UAAU,KAAK;MAC3Cf,UAAU,CAACc,KAAK,EAAEZ,SAAS,EAAEd,KAAK,EAAEG,KAAK,EAAEY,IAAI,EAAEC,KAAK,EAAE,CAAC,GAAGC,MAAM,EAAEJ,IAAI,CAACZ,EAAE,CAAC,CAAC;MAC7E,MAAMC,KAAK,GAAGnB,MAAM,CAACe,GAAG,CAAC4B,KAAK,CAACzB,EAAE,CAAC;MAClC,IAAIC,KAAK,EAAE;QACT,MAAMG,SAAS,GAAGsB,UAAU,KAAK,CAAC,GAAG,SAAS,GAAG,WAAW;QAC5D5C,MAAM,CAACwC,GAAG,CAACG,KAAK,CAACzB,EAAE,EAAE;UAAE,GAAGC,KAAK;UAAEE,WAAW,EAAE;YAAEH,EAAE,EAAEY,IAAI,CAACZ,EAAE;YAAEI;UAAU;QAAE,CAAC,CAAC;MAC7E;IACF,CAAC,CAAC;EACJ,CAAC,MAAM,IAAIQ,IAAI,CAACK,IAAI,KAAK,OAAO,EAAE;IAChCjC,aAAa,CAACoC,MAAM,CAACR,IAAI,CAACZ,EAAE,CAAC;IAC7BY,IAAI,CAACW,QAAQ,CAACC,OAAO,CAAC,CAACC,KAAK,EAAEC,UAAU,KACtCf,UAAU,CAACc,KAAK,EAAEZ,SAAS,EAAED,IAAI,CAACZ,EAAE,EAAE0B,UAAU,EAAEZ,IAAI,EAAEC,KAAK,EAAE,CAAC,GAAGC,MAAM,EAAEJ,IAAI,CAACZ,EAAE,CAAC,CACrF,CAAC;EACH,CAAC,MAAM,IAAIY,IAAI,CAACK,IAAI,KAAK,WAAW,EAAE;IACpC;IACA;IACAU,WAAW,CAACf,IAAI,CAACZ,EAAE,CAAC;IACpB,MAAM4B,OAAO,GAAGhB,IAAI,CAACO,IAAI,CAACS,OAAO,IAAI,EAAE;IACvC,MAAMC,MAAuC,GAAG,CAAC,CAAC;IAClDjB,IAAI,CAACW,QAAQ,CAACC,OAAO,CAAC,CAACC,KAAK,EAAEC,UAAU,KAAK;MAC3Cf,UAAU,CAACc,KAAK,EAAEZ,SAAS,EAAE,IAAI,EAAE,CAAC,EAAEC,IAAI,EAAEC,KAAK,EAAE,CAAC,GAAGC,MAAM,EAAEJ,IAAI,CAACZ,EAAE,CAAC,CAAC;MACxE,MAAM8B,MAAM,GAAGF,OAAO,CAACF,UAAU,CAAC;MAClC,IAAI,CAACI,MAAM,EAAE;MACb,IAAIL,KAAK,CAACR,IAAI,KAAK,OAAO,EAAEY,MAAM,CAACC,MAAM,CAAC,GAAGL,KAAK,CAACzB,EAAE;MACrD+B,UAAU,CAACN,KAAK,EAAE;QAAEO,KAAK,EAAEpB,IAAI,CAACZ,EAAE;QAAE8B;MAAO,CAAC,CAAC;IAC/C,CAAC,CAAC;IACF5C,aAAa,CAACoC,GAAG,CAACV,IAAI,CAACZ,EAAE,EAAE6B,MAAM,CAAC;EACpC,CAAC,MAAM,IAAIjB,IAAI,CAACK,IAAI,KAAK,cAAc,EAAE;IACvC,KAAK,MAAMgB,IAAI,IAAIrB,IAAI,CAACW,QAAQ,EAAE;MAChC,MAAMW,IAAI,GAAGxD,UAAU,CAACuD,IAAI,CAAChB,IAAI,CAAC;MAClC,MAAMkB,KAAK,GAAG,CAAC,GAAGnB,MAAM,EAAEJ,IAAI,CAACZ,EAAE,EAAEiC,IAAI,CAACjC,EAAE,CAAC;MAC3CiC,IAAI,CAACV,QAAQ,CAACC,OAAO,CAAEC,KAAK,IAC1Bd,UAAU,CACRc,KAAK,EACLZ,SAAS,EACT,IAAI,EACJ,CAAC,EACDqB,IAAI,GAAG;QAAElC,EAAE,EAAEY,IAAI,CAACZ,EAAE;QAAEiC,IAAI,EAAEC;MAAK,CAAC,GAAGpB,IAAI,EACzCC,KAAK,EACLoB,KACF,CACF,CAAC;IACH;EACF,CAAC,MAAM;IACLvB,IAAI,CAACW,QAAQ,CAACC,OAAO,CAAEC,KAAK,IAC1Bd,UAAU,CAACc,KAAK,EAAEZ,SAAS,EAAE,IAAI,EAAE,CAAC,EAAEC,IAAI,EAAEC,KAAK,EAAE,CAAC,GAAGC,MAAM,EAAEJ,IAAI,CAACZ,EAAE,CAAC,CACzE,CAAC;EACH;AACF;;AAEA;AACA,SAASqB,WAAWA,CAACzB,QAAgB,EAAEoB,MAAyB,EAAQ;EACtEoB,YAAY,CAACxC,QAAQ,CAAC;EACtB,MAAMyC,OAAO,GAAG,CAAC,GAAG,IAAIjD,GAAG,CAAC4B,MAAM,CAAC,CAAC;EACpCzB,eAAe,CAAC+B,GAAG,CAAC1B,QAAQ,EAAEyC,OAAO,CAAC;EACtC,KAAK,MAAMC,MAAM,IAAID,OAAO,EAAE7C,eAAe,CAAC8B,GAAG,CAACgB,MAAM,EAAE,CAAC9C,eAAe,CAACK,GAAG,CAACyC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnG;AAEA,SAASF,YAAYA,CAACxC,QAAgB,EAAQ;EAC5C,MAAMyC,OAAO,GAAG9C,eAAe,CAACM,GAAG,CAACD,QAAQ,CAAC;EAC7C,IAAI,CAACyC,OAAO,EAAE;EACd9C,eAAe,CAAC6B,MAAM,CAACxB,QAAQ,CAAC;EAChC,KAAK,MAAM0C,MAAM,IAAID,OAAO,EAAE;IAC5B,MAAME,KAAK,GAAG,CAAC/C,eAAe,CAACK,GAAG,CAACyC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACpD,IAAIC,KAAK,GAAG,CAAC,EAAE;MACb/C,eAAe,CAAC8B,GAAG,CAACgB,MAAM,EAAEC,KAAK,CAAC;MAClC;IACF;IACA/C,eAAe,CAAC4B,MAAM,CAACkB,MAAM,CAAC;IAC9B9D,WAAW,CAAC8D,MAAM,CAAC;EACrB;AACF;;AAEA;AACA,SAASP,UAAUA,CAACnB,IAAgB,EAAEkB,MAAmB,EAAQ;EAC/D,IAAIlB,IAAI,CAACK,IAAI,KAAK,OAAO,EAAEjC,aAAa,CAACsC,GAAG,CAACV,IAAI,CAACZ,EAAE,EAAE8B,MAAM,CAAC,CAAC,KACzD,IAAIlB,IAAI,CAACK,IAAI,KAAK,WAAW,IAAIL,IAAI,CAACK,IAAI,KAAK,mBAAmB,EAAE;IACvEhC,cAAc,CAACqC,GAAG,CAACV,IAAI,CAACZ,EAAE,EAAE8B,MAAM,CAAC;EACrC,CAAC,MAAMlB,IAAI,CAACW,QAAQ,CAACC,OAAO,CAAEC,KAAK,IAAKM,UAAU,CAACN,KAAK,EAAEK,MAAM,CAAC,CAAC;AACpE;AAEA,SAASH,WAAWA,CAACK,KAAa,EAAQ;EACxC7C,aAAa,CAACiC,MAAM,CAACY,KAAK,CAAC;EAC3B9C,aAAa,CAACkC,MAAM,CAACY,KAAK,CAAC;EAC3B,KAAK,MAAMJ,OAAO,IAAI,CAAC5C,aAAa,EAAEC,cAAc,CAAC,EAAE;IACrD,KAAK,MAAM,CAACe,EAAE,EAAE8B,MAAM,CAAC,IAAIF,OAAO,EAAE,IAAIE,MAAM,CAACE,KAAK,KAAKA,KAAK,EAAEJ,OAAO,CAACR,MAAM,CAACpB,EAAE,CAAC;EACpF;AACF;;AAEA;AACA,OAAO,SAASwC,QAAQA,CAAC5C,QAAgB,EAA2B;EAClE,MAAMK,KAAK,GAAGnB,MAAM,CAACe,GAAG,CAACD,QAAQ,CAAC;EAClC,IAAI,CAACK,KAAK,EAAE,OAAOI,SAAS;EAC5B,OAAOJ,KAAK,CAACF,KAAK,KAAK,IAAI,GAAGf,aAAa,CAACa,GAAG,CAACI,KAAK,CAACF,KAAK,CAAC,GAAGd,cAAc,CAACY,GAAG,CAACD,QAAQ,CAAC;AAC7F;;AAEA;AACA,OAAO,SAAS6C,aAAaA,CAACT,KAAa,EAAEF,MAAc,EAAsB;EAC/E,OAAO5C,aAAa,CAACW,GAAG,CAACmC,KAAK,CAAC,GAAGF,MAAM,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASY,YAAYA,CAAC9C,QAAgB,EAAW;EACtD,MAAMK,KAAK,GAAGnB,MAAM,CAACe,GAAG,CAACD,QAAQ,CAAC;EAClC,MAAMkC,MAAM,GAAGU,QAAQ,CAAC5C,QAAQ,CAAC;EACjC,OACEK,KAAK,KAAKI,SAAS,IACnBJ,KAAK,CAACF,KAAK,KAAK,IAAI,IACpBE,KAAK,CAACC,KAAK,KAAK,CAAC,IACjB4B,MAAM,KAAKzB,SAAS,KACnByB,MAAM,CAACA,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACA,MAAM,KAAK,eAAe,CAAC,IACpEW,aAAa,CAACX,MAAM,CAACE,KAAK,EAAEF,MAAM,CAACA,MAAM,CAAC,KAAK7B,KAAK,CAACF,KAAK,IAC1DZ,aAAa,CAACsB,GAAG,CAACqB,MAAM,CAACE,KAAK,CAAC;AAEnC;;AAEA;AACA,OAAO,SAASW,kBAAkBA,CAAA,EAAS;EACzC,IAAItD,qBAAqB,EAAE;EAC3BA,qBAAqB,GAAG,IAAI;EAC5Bd,aAAa,CACX,yBAAyB,EACzB,CAAC;IAAEqE,WAAW;IAAEC;EAAQ,CAAC,KAAK;IAC5B,IAAIA,OAAO,EAAE1D,aAAa,CAACoB,GAAG,CAACqC,WAAW,CAAC,CAAC,KACvCzD,aAAa,CAACiC,MAAM,CAACwB,WAAW,CAAC;EACxC,CACF,CAAC;AACH;;AAEA;AACA,OAAO,SAASE,WAAWA,CAAClD,QAAgB,EAAQ;EAClDwC,YAAY,CAACxC,QAAQ,CAAC;EACtBd,MAAM,CAACsC,MAAM,CAACxB,QAAQ,CAAC;EACvBX,cAAc,CAACmC,MAAM,CAACxB,QAAQ,CAAC;EAC/BH,IAAI,CAACc,GAAG,CAACX,QAAQ,CAAC;EAClB,IAAIH,IAAI,CAACsD,IAAI,GAAGrD,SAAS,EAAED,IAAI,CAAC2B,MAAM,CAAC3B,IAAI,CAACuD,MAAM,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,KAAM,CAAC;AACrE","ignoreList":[]}
@@ -9,6 +9,11 @@ const watchers = new Map();
9
9
  const none = {};
10
10
  // The roots that are the components of bar buttons: their wrapper centers the content in the button's slot.
11
11
  const buttonRoots = new Set();
12
+ // The ids the library gave components in options, by the node whose options they are in. Such an id stays the same
13
+ // for every show of the node and may have several roots at once (a component of the default or a stack's options):
14
+ // its props go with the node, not with a root.
15
+ const optionComponents = new Map();
16
+ const optionComponentIds = new Set();
12
17
  export function setProps(id, props) {
13
18
  if (props === undefined) byId.delete(id);else byId.set(id, props);
14
19
  watchers.get(id)?.forEach(watcher => watcher());
@@ -36,9 +41,33 @@ export function isButtonRoot(id) {
36
41
  return buttonRoots.has(id);
37
42
  }
38
43
 
39
- /** The view is gone: its props, and whether it is a button's root, are not needed again. */
44
+ /** Notes an id the library gave a component in the options of the node `owner`. */
45
+ export function rememberOptionsComponent(owner, id) {
46
+ let ids = optionComponents.get(owner);
47
+ if (!ids) optionComponents.set(owner, ids = new Set());
48
+ ids.add(id);
49
+ optionComponentIds.add(id);
50
+ }
51
+
52
+ /** Whether the library gave the id to a component in options: its props go with the node, not with a root. */
53
+ export function isOptionsComponent(id) {
54
+ return optionComponentIds.has(id);
55
+ }
56
+
57
+ /**
58
+ * The view is gone: its props, and whether it is a button's root, are not needed again; nor are those of the
59
+ * components the library named in its options.
60
+ */
40
61
  export function forgetProps(id) {
41
62
  byId.delete(id);
42
63
  buttonRoots.delete(id);
64
+ const ids = optionComponents.get(id);
65
+ if (!ids) return;
66
+ optionComponents.delete(id);
67
+ for (const component of ids) {
68
+ byId.delete(component);
69
+ buttonRoots.delete(component);
70
+ optionComponentIds.delete(component);
71
+ }
43
72
  }
44
73
  //# sourceMappingURL=props.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["byId","Map","watchers","none","buttonRoots","Set","setProps","id","props","undefined","delete","set","get","forEach","watcher","propsOf","watchProps","add","size","rememberButtonRoot","isButtonRoot","has","forgetProps"],"sourceRoot":"../../../src","sources":["engine/props.ts"],"mappings":";;AAAA;AACA;AACA;AACA,MAAMA,IAAI,GAAG,IAAIC,GAAG,CAAiB,CAAC;AACtC,MAAMC,QAAQ,GAAG,IAAID,GAAG,CAA0B,CAAC;AACnD;AACA,MAAME,IAAI,GAAG,CAAC,CAAC;AACf;AACA,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAAS,CAAC;AAErC,OAAO,SAASC,QAAQA,CAACC,EAAU,EAAEC,KAAyB,EAAQ;EACpE,IAAIA,KAAK,KAAKC,SAAS,EAAET,IAAI,CAACU,MAAM,CAACH,EAAE,CAAC,CAAC,KACpCP,IAAI,CAACW,GAAG,CAACJ,EAAE,EAAEC,KAAK,CAAC;EACxBN,QAAQ,CAACU,GAAG,CAACL,EAAE,CAAC,EAAEM,OAAO,CAAEC,OAAO,IAAKA,OAAO,CAAC,CAAC,CAAC;AACnD;AAEA,OAAO,SAASC,OAAOA,CAACR,EAAU,EAAU;EAC1C,OAAOP,IAAI,CAACY,GAAG,CAACL,EAAE,CAAC,IAAIJ,IAAI;AAC7B;;AAEA;AACA,OAAO,SAASa,UAAUA,CAACT,EAAU,EAAEO,OAAmB,EAAc;EACtE,IAAIH,GAAG,GAAGT,QAAQ,CAACU,GAAG,CAACL,EAAE,CAAC;EAC1B,IAAI,CAACI,GAAG,EAAET,QAAQ,CAACS,GAAG,CAACJ,EAAE,EAAGI,GAAG,GAAG,IAAIN,GAAG,CAAC,CAAE,CAAC;EAC7CM,GAAG,CAACM,GAAG,CAACH,OAAO,CAAC;EAChB,OAAO,MAAM;IACXH,GAAG,CAACD,MAAM,CAACI,OAAO,CAAC;IACnB,IAAIH,GAAG,CAACO,IAAI,KAAK,CAAC,EAAEhB,QAAQ,CAACQ,MAAM,CAACH,EAAE,CAAC;EACzC,CAAC;AACH;AAEA,OAAO,SAASY,kBAAkBA,CAACZ,EAAU,EAAQ;EACnDH,WAAW,CAACa,GAAG,CAACV,EAAE,CAAC;AACrB;;AAEA;AACA,OAAO,SAASa,YAAYA,CAACb,EAAU,EAAW;EAChD,OAAOH,WAAW,CAACiB,GAAG,CAACd,EAAE,CAAC;AAC5B;;AAEA;AACA,OAAO,SAASe,WAAWA,CAACf,EAAU,EAAQ;EAC5CP,IAAI,CAACU,MAAM,CAACH,EAAE,CAAC;EACfH,WAAW,CAACM,MAAM,CAACH,EAAE,CAAC;AACxB","ignoreList":[]}
1
+ {"version":3,"names":["byId","Map","watchers","none","buttonRoots","Set","optionComponents","optionComponentIds","setProps","id","props","undefined","delete","set","get","forEach","watcher","propsOf","watchProps","add","size","rememberButtonRoot","isButtonRoot","has","rememberOptionsComponent","owner","ids","isOptionsComponent","forgetProps","component"],"sourceRoot":"../../../src","sources":["engine/props.ts"],"mappings":"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","ignoreList":[]}
@@ -59,7 +59,7 @@ export function rootGoesOut(nodes, again) {
59
59
  pairNodes(before.nodes, nodes, (old, node) => {
60
60
  const options = remembered.get(old.id);
61
61
  if (!options) return;
62
- node.data.options = mergeNativeOptions(node.data.options ?? {}, toNativeOptions(options));
62
+ node.data.options = mergeNativeOptions(node.data.options ?? {}, toNativeOptions(options, node.id));
63
63
  moved.set(node.id, options);
64
64
  });
65
65
  }
@@ -1 +1 @@
1
- {"version":3,"names":["mergeOptions","mergeNativeOptions","toNativeOptions","remembered","Map","lastRoot","rememberMergedOptions","id","options","ids","has","kept","withoutOneTimeOptions","before","get","set","forgetMergedOptions","delete","mergedOptionsOf","sentRoot","rootGoesOut","nodes","again","Set","flatMap","idsOf","moved","pairNodes","old","node","data","forEach","children","after","pair","index","type","name","result","bottomTabs","currentTabIndex","currentTabId","sideMenu","side","settings","visible"],"sourceRoot":"../../../src","sources":["engine/rememberedOptions.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["mergeOptions","mergeNativeOptions","toNativeOptions","remembered","Map","lastRoot","rememberMergedOptions","id","options","ids","has","kept","withoutOneTimeOptions","before","get","set","forgetMergedOptions","delete","mergedOptionsOf","sentRoot","rootGoesOut","nodes","again","Set","flatMap","idsOf","moved","pairNodes","old","node","data","forEach","children","after","pair","index","type","name","result","bottomTabs","currentTabIndex","currentTabId","sideMenu","side","settings","visible"],"sourceRoot":"../../../src","sources":["engine/rememberedOptions.ts"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  import React, { useCallback, useEffect, useSyncExternalStore } from 'react';
4
4
  import { AppRegistry } from 'react-native';
5
5
  import { forgetPlace } from "./places.js";
6
- import { forgetProps, propsOf, watchProps } from "./props.js";
6
+ import { forgetProps, isOptionsComponent, propsOf, watchProps } from "./props.js";
7
7
  import { forgetMergedOptions } from "./rememberedOptions.js";
8
8
  import { hasSlot } from "./slots.js";
9
9
 
@@ -19,10 +19,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
19
19
  const screens = new Map();
20
20
  const roots = new Map();
21
21
  let unmounted;
22
- // The React root that shows each screen, by its root tag. After a JavaScript reload React Native starts the roots of
23
- // the old screens again in the new runtime, under the ids the new screens get too, and unmounts them once the new ones
24
- // show; their root tags are older, as the native side counts them up for as long as the app runs. A slot of the app's
25
- // one tree has no tag: while the one tree shows a screen with the id, no root of that id lets it go.
22
+ // The React roots mounted under each id, by their root tags. One id can have several: after a JavaScript reload React
23
+ // Native starts the roots of the old screens again in the new runtime, under the ids the new screens get too, and
24
+ // unmounts them once the new ones show; a component of the default or a stack's options has one id and a root in the
25
+ // bar of every screen that shows it. The id lets its props go only with the last of them. A slot of the app's one tree
26
+ // has no tag: while the one tree shows a screen with the id, no root of that id lets it go.
26
27
  const owners = new Map();
27
28
 
28
29
  /** What runs when the root of a screen unmounts: the screen is gone. */
@@ -165,17 +166,26 @@ export function screenRoot(name) {
165
166
  const watch = useCallback(watcher => watchProps(componentId, watcher), [componentId]);
166
167
  const props = useSyncExternalStore(watch, () => propsOf(componentId));
167
168
  useEffect(() => {
168
- if (rootTag !== undefined && rootTag > (owners.get(componentId) ?? -1)) {
169
- owners.set(componentId, rootTag);
169
+ if (rootTag !== undefined) {
170
+ const tags = owners.get(componentId) ?? new Set();
171
+ tags.add(rootTag);
172
+ owners.set(componentId, tags);
170
173
  }
171
174
  return () => {
172
- // An old root of the same id leaves the screen alone, and so does any root while the one tree still has a slot
173
- // with the id: a later screen under the id, the restarted root of a screen after a reload into the one tree
174
- // (its slot may mount only once the app's provider lets it), the screen rendering again under the provider.
175
- if (rootTag !== undefined && owners.get(componentId) !== rootTag) return;
175
+ // A root while another root of the id is mounted leaves the screen alone, and so does any root while the one
176
+ // tree still has a slot with the id: a later screen under the id, the restarted root of a screen after a
177
+ // reload into the one tree (its slot may mount only once the app's provider lets it), the screen rendering
178
+ // again under the provider.
179
+ const tags = owners.get(componentId);
180
+ if (rootTag !== undefined && tags) {
181
+ tags.delete(rootTag);
182
+ if (tags.size > 0) return;
183
+ }
176
184
  if (hasSlot(componentId)) return;
177
185
  owners.delete(componentId);
178
- forgetProps(componentId);
186
+ // A component the library named in options keeps its props for the next root under its id (the node shows
187
+ // it again, or another screen shows the same default): they go with the node.
188
+ if (!isOptionsComponent(componentId)) forgetProps(componentId);
179
189
  forgetPlace(componentId);
180
190
  forgetMergedOptions(componentId);
181
191
  unmounted?.(componentId);
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useSyncExternalStore","AppRegistry","forgetPlace","forgetProps","propsOf","watchProps","forgetMergedOptions","hasSlot","jsx","_jsx","screens","Map","roots","unmounted","owners","onScreenUnmounted","listener","registerScreen","name","screen","set","delete","registerComponent","screenRoot","loadScreens","names","named","flatMap","get","pair","primary","secondary","secondaries","arrangementOf","first","loadNames","then","loads","Set","loading","load","undefined","push","length","Promise","all","afterLoading","run","error","reject","screenKey","props","key","screenOptions","options","arrangement","checkArrangement","part","Error","checkArrangements","nativeScreenName","nativeName","nativeScreenController","controller","hasNativeScreenHooks","values","some","rendersInSlot","ownRoot","isReactScreen","root","Screen","component","ScreenRoot","rootProps","componentId","rootTag","watch","watcher","displayName"],"sourceRoot":"../../../src","sources":["engine/screens.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useSyncExternalStore","AppRegistry","forgetPlace","forgetProps","isOptionsComponent","propsOf","watchProps","forgetMergedOptions","hasSlot","jsx","_jsx","screens","Map","roots","unmounted","owners","onScreenUnmounted","listener","registerScreen","name","screen","set","delete","registerComponent","screenRoot","loadScreens","names","named","flatMap","get","pair","primary","secondary","secondaries","arrangementOf","first","loadNames","then","loads","Set","loading","load","undefined","push","length","Promise","all","afterLoading","run","error","reject","screenKey","props","key","screenOptions","options","arrangement","checkArrangement","part","Error","checkArrangements","nativeScreenName","nativeName","nativeScreenController","controller","hasNativeScreenHooks","values","some","rendersInSlot","ownRoot","isReactScreen","root","Screen","component","ScreenRoot","rootProps","componentId","rootTag","watch","watcher","tags","add","size","displayName"],"sourceRoot":"../../../src","sources":["engine/screens.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,101 @@
1
+ {
2
+ "description": "Every command with a promise (an async method of src/adapters/NativeANNTurboModule.ts): what it resolves with, whether the navigation state goes before its answer (`state`), and whether `ANN.CommandCompleted` follows the answer (`completed`). scripts/contract.mjs makes ios/Contract/ANNCommandContract.{h,mm} and android/.../react/CommandContract.kt from it, and fails when a command of the spec is missing here or a command here is not in the spec.",
3
+ "commands": [
4
+ {
5
+ "name": "setRoot",
6
+ "resolves": "the id of the root, once the root and the layout's modals and overlays show",
7
+ "state": true,
8
+ "completed": true
9
+ },
10
+ {
11
+ "name": "push",
12
+ "resolves": "the id of the screen that shows; of a pair, the pair's id",
13
+ "state": true,
14
+ "completed": true
15
+ },
16
+ {
17
+ "name": "preparePush",
18
+ "resolves": "the frame `{ width, height, padding }` of the prepared screen, or null; always null on iOS",
19
+ "state": false,
20
+ "completed": false
21
+ },
22
+ {
23
+ "name": "pop",
24
+ "resolves": "the id of the screen that went",
25
+ "state": true,
26
+ "completed": true
27
+ },
28
+ {
29
+ "name": "popTo",
30
+ "resolves": "the id of the screen it went back to",
31
+ "state": true,
32
+ "completed": true
33
+ },
34
+ {
35
+ "name": "popToRoot",
36
+ "resolves": "the id of the first screen of the stack",
37
+ "state": true,
38
+ "completed": true
39
+ },
40
+ {
41
+ "name": "setStackRoot",
42
+ "resolves": "the id of the new top screen",
43
+ "state": true,
44
+ "completed": true
45
+ },
46
+ {
47
+ "name": "showModal",
48
+ "resolves": "the id of the modal's root",
49
+ "state": true,
50
+ "completed": true
51
+ },
52
+ {
53
+ "name": "dismissModal",
54
+ "resolves": "the id of the modal's root",
55
+ "state": true,
56
+ "completed": true
57
+ },
58
+ {
59
+ "name": "dismissAllModals",
60
+ "resolves": "an empty string",
61
+ "state": true,
62
+ "completed": true
63
+ },
64
+ {
65
+ "name": "showOverlay",
66
+ "resolves": "the id of the overlay's root",
67
+ "state": true,
68
+ "completed": true
69
+ },
70
+ {
71
+ "name": "dismissOverlay",
72
+ "resolves": "the id of the overlay's root",
73
+ "state": true,
74
+ "completed": true
75
+ },
76
+ {
77
+ "name": "dismissAllOverlays",
78
+ "resolves": "an empty string",
79
+ "state": true,
80
+ "completed": true
81
+ },
82
+ {
83
+ "name": "showInColumn",
84
+ "resolves": "the id of the screen that shows",
85
+ "state": true,
86
+ "completed": true
87
+ },
88
+ {
89
+ "name": "setColumnShown",
90
+ "resolves": "nothing once the columns stopped moving (`undefined` on iOS, `null` on Android)",
91
+ "state": true,
92
+ "completed": false
93
+ },
94
+ {
95
+ "name": "getLaunchLink",
96
+ "resolves": "the link that launched the app, or null",
97
+ "state": false,
98
+ "completed": false
99
+ }
100
+ ]
101
+ }