react-native-navigation 8.1.0-alpha01 → 8.1.0-rc01-snapshot.1685
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.
- package/autolink/postlink/__snapshots__/appDelegateLinker.test.js.snap +12 -12
- package/index.e2e.js +2 -1
- package/lib/Mock/Components/ComponentScreen.tsx +2 -1
- package/lib/Mock/Components/LayoutComponent.tsx +9 -0
- package/lib/Mock/Components/SideMenu.tsx +27 -0
- package/lib/Mock/Layouts/BottomTabsNode.ts +4 -2
- package/lib/Mock/Layouts/LayoutNodeFactory.ts +14 -1
- package/lib/Mock/Layouts/ParentNode.ts +4 -0
- package/lib/Mock/Layouts/SideMenu.ts +87 -0
- package/lib/Mock/Stores/LayoutStore.ts +42 -10
- package/lib/Mock/actions/layoutActions.ts +11 -0
- package/lib/Mock/mocks/NativeCommandsSender.tsx +1 -0
- package/lib/android/app/build.gradle +22 -125
- package/lib/android/app/src/main/java/com/reactnativenavigation/FeatureToggles.kt +4 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +4 -4
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationPackage.kt +27 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationReactInitializer.java +2 -14
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationTurboModule.kt +291 -0
- package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/ReactGateway.java +23 -23
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/ReactView.java +6 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ColorUtils.java +11 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/MotionEvent.kt +4 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +12 -17
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +20 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentPresenter.java +18 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +5 -17
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +28 -13
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +13 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +35 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/statusbar/StatusBarPresenter.kt +212 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +10 -178
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/StatusBarColorAnimator.kt +28 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java +34 -7
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerVisibilityInfo.kt +5 -0
- package/lib/android/build.gradle +27 -15
- package/lib/dist/Mock/Components/ComponentScreen.js +2 -1
- package/lib/dist/Mock/Components/LayoutComponent.js +9 -0
- package/lib/dist/Mock/Components/SideMenu.d.ts +58 -0
- package/lib/dist/Mock/Components/SideMenu.js +25 -0
- package/lib/dist/Mock/Layouts/BottomTabsNode.d.ts +1 -1
- package/lib/dist/Mock/Layouts/BottomTabsNode.js +3 -2
- package/lib/dist/Mock/Layouts/LayoutNodeFactory.d.ts +2 -1
- package/lib/dist/Mock/Layouts/LayoutNodeFactory.js +10 -1
- package/lib/dist/Mock/Layouts/ParentNode.d.ts +1 -0
- package/lib/dist/Mock/Layouts/ParentNode.js +3 -0
- package/lib/dist/Mock/Layouts/SideMenu.d.ts +31 -0
- package/lib/dist/Mock/Layouts/SideMenu.js +80 -0
- package/lib/dist/Mock/Stores/LayoutStore.js +38 -9
- package/lib/dist/Mock/actions/layoutActions.d.ts +3 -0
- package/lib/dist/Mock/actions/layoutActions.js +11 -1
- package/lib/dist/Mock/mocks/NativeCommandsSender.js +1 -0
- package/lib/dist/src/adapters/NativeCommandsSender.d.ts +39 -4
- package/lib/dist/src/adapters/NativeCommandsSender.js +2 -2
- package/lib/dist/src/adapters/NativeRNNTurboEventEmitter.js +2 -9
- package/lib/dist/src/adapters/NativeRNNTurboModule.d.ts +9 -10
- package/lib/dist/src/adapters/NativeRNNTurboModule.js +1 -12
- package/lib/dist/src/commands/Commands.d.ts +13 -13
- package/lib/ios/AnimatedTextView.mm +1 -0
- package/lib/ios/Constants.mm +7 -1
- package/lib/ios/RNNAppDelegate.mm +3 -1
- package/lib/ios/RNNCommandsHandler.mm +1 -0
- package/lib/ios/RNNCustomTitleView.h +1 -0
- package/lib/ios/RNNCustomTitleView.mm +8 -1
- package/lib/ios/RNNEventEmitter.mm +3 -0
- package/lib/ios/RNNReactButtonView.mm +1 -1
- package/lib/ios/RNNReactView.h +3 -1
- package/lib/ios/RNNReactView.mm +45 -20
- package/lib/ios/TopBarTitlePresenter.mm +2 -0
- package/lib/ios/TurboModules/RNNTurboEventEmitter.mm +7 -0
- package/lib/ios/UINavigationController+RNNCommands.mm +4 -0
- package/lib/src/adapters/NativeCommandsSender.ts +7 -7
- package/lib/src/adapters/NativeRNNTurboEventEmitter.ts +3 -9
- package/lib/src/adapters/NativeRNNTurboModule.ts +23 -21
- package/package.json +14 -17
- package/react-native.config.js +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/DevPermissionRequest.java +0 -42
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/statusbar/StatusBarController.kt +0 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/statusbar/StatusBarPresenter.kt +0 -9
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative55/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -71
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative56/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -70
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative57/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -70
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/SyncUiImplementation.java +0 -83
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative57_5/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -28
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -28
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -67
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/ReactGateway.java +0 -70
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -25
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative60/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/options/parsers/ColorParser.java +0 -18
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -67
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -27
- package/lib/android/app/src/reactNative62/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -66
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -81
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -38
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -66
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/ReactGateway.java +0 -72
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -87
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -42
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -12
- package/lib/android/app/src/reactNative68/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -32
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -38
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -22
- package/lib/android/app/src/reactNative71/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -12
- /package/lib/android/app/src/{reactNative63 → main}/java/com/reactnativenavigation/options/parsers/ColorParser.kt +0 -0
- /package/lib/android/app/src/{reactNative62 → main}/java/com/reactnativenavigation/react/DevBundleDownloadListenerAdapter.java +0 -0
- /package/lib/android/app/src/{reactNative62 → main}/java/com/reactnativenavigation/react/JsDevReloadHandlerFacade.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -0
- /package/lib/android/app/src/{reactNative51 → main}/java/com/reactnativenavigation/react/ReloadHandlerFacade.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxDelegate.kt +0 -0
- /package/lib/android/app/src/{reactNative63 → main}/java/com/reactnativenavigation/viewcontrollers/viewcontroller/YellowBoxHelper.java +0 -0
- /package/lib/android/app/src/{reactNative71 → main}/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SideMenuCenterNode = exports.SideMenuRightNode = exports.SideMenuLeftNode = exports.SideMenuNode = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ParentNode_1 = tslib_1.__importDefault(require("./ParentNode"));
|
|
6
|
+
const layoutActions = tslib_1.__importStar(require("../actions/layoutActions"));
|
|
7
|
+
const isCenterChild = (child) => child.type === 'SideMenuCenter';
|
|
8
|
+
const isLeftChild = (child) => child.type === 'SideMenuLeft';
|
|
9
|
+
const isRightChild = (child) => child.type === 'SideMenuRight';
|
|
10
|
+
class SideMenuRootNode extends ParentNode_1.default {
|
|
11
|
+
visibleChild;
|
|
12
|
+
constructor(layout, parentNode) {
|
|
13
|
+
super(layout, 'SideMenuRoot', parentNode);
|
|
14
|
+
this.visibleChild = this._getCenterChild();
|
|
15
|
+
if (!this.visibleChild) {
|
|
16
|
+
throw new Error('SideMenuRootNode must have a SideMenuCenter child');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
applyOptions(_options) {
|
|
20
|
+
super.applyOptions(_options);
|
|
21
|
+
this._updateVisibility(_options);
|
|
22
|
+
}
|
|
23
|
+
mergeOptions(options) {
|
|
24
|
+
super.mergeOptions(options);
|
|
25
|
+
this._updateVisibility(options);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @override
|
|
29
|
+
*/
|
|
30
|
+
getVisibleLayout() {
|
|
31
|
+
return this.visibleChild.getVisibleLayout();
|
|
32
|
+
}
|
|
33
|
+
_updateVisibility(options) {
|
|
34
|
+
if (options.sideMenu) {
|
|
35
|
+
if (options.sideMenu.left?.visible) {
|
|
36
|
+
this.visibleChild = this._getLeftChild();
|
|
37
|
+
layoutActions.openSideMenu(this.visibleChild);
|
|
38
|
+
}
|
|
39
|
+
else if (options.sideMenu.right?.visible) {
|
|
40
|
+
this.visibleChild = this._getRightChild();
|
|
41
|
+
layoutActions.openSideMenu(this.visibleChild);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.visibleChild = this._getCenterChild();
|
|
45
|
+
layoutActions.closeSideMenu(this.visibleChild);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
_getCenterChild = () => this.children.find(isCenterChild);
|
|
50
|
+
_getLeftChild = () => this.children.find(isLeftChild);
|
|
51
|
+
_getRightChild = () => this.children.find(isRightChild);
|
|
52
|
+
}
|
|
53
|
+
exports.default = SideMenuRootNode;
|
|
54
|
+
class SideMenuNode extends ParentNode_1.default {
|
|
55
|
+
constructor(layout, type, parentNode) {
|
|
56
|
+
super(layout, type, parentNode);
|
|
57
|
+
}
|
|
58
|
+
getVisibleLayout() {
|
|
59
|
+
return this.children[0].getVisibleLayout();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.SideMenuNode = SideMenuNode;
|
|
63
|
+
class SideMenuLeftNode extends SideMenuNode {
|
|
64
|
+
constructor(layout, parentNode) {
|
|
65
|
+
super(layout, 'SideMenuLeft', parentNode);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.SideMenuLeftNode = SideMenuLeftNode;
|
|
69
|
+
class SideMenuRightNode extends SideMenuNode {
|
|
70
|
+
constructor(layout, parentNode) {
|
|
71
|
+
super(layout, 'SideMenuRight', parentNode);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.SideMenuRightNode = SideMenuRightNode;
|
|
75
|
+
class SideMenuCenterNode extends SideMenuNode {
|
|
76
|
+
constructor(layout, parentNode) {
|
|
77
|
+
super(layout, 'SideMenuCenter', parentNode);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.SideMenuCenterNode = SideMenuCenterNode;
|
|
@@ -9,6 +9,7 @@ const state = remx.state({
|
|
|
9
9
|
root: {},
|
|
10
10
|
modals: [],
|
|
11
11
|
overlays: [],
|
|
12
|
+
sideMenu: undefined,
|
|
12
13
|
});
|
|
13
14
|
const setters = remx.setters({
|
|
14
15
|
setRoot(layout) {
|
|
@@ -73,6 +74,23 @@ const setters = remx.setters({
|
|
|
73
74
|
selectTabIndex(layout, index) {
|
|
74
75
|
getters.getLayoutById(layout.nodeId).selectedIndex = index;
|
|
75
76
|
},
|
|
77
|
+
openSideMenu(layout) {
|
|
78
|
+
if (state.sideMenu) {
|
|
79
|
+
throw new Error('A side-menu is already open; Mocked-testing of multiple side-menu scenarios is not supported yet.' +
|
|
80
|
+
' You can submit a request in https://github.com/wix/react-native-navigation/issues/new/choose.');
|
|
81
|
+
}
|
|
82
|
+
state.sideMenu = layout;
|
|
83
|
+
},
|
|
84
|
+
closeSideMenu(_layout) {
|
|
85
|
+
state.sideMenu = undefined;
|
|
86
|
+
},
|
|
87
|
+
applyOptions(componentId, options) {
|
|
88
|
+
const layout = getters.getLayoutById(componentId);
|
|
89
|
+
if (layout)
|
|
90
|
+
layout.applyOptions(options);
|
|
91
|
+
else
|
|
92
|
+
console.warn(`[RNN error] Merge options failure: cannot find layout for: ${componentId}`);
|
|
93
|
+
},
|
|
76
94
|
mergeOptions(componentId, options) {
|
|
77
95
|
const layout = getters.getLayoutById(componentId);
|
|
78
96
|
if (layout)
|
|
@@ -86,14 +104,25 @@ const getters = remx.getters({
|
|
|
86
104
|
return state.root;
|
|
87
105
|
},
|
|
88
106
|
getVisibleLayout() {
|
|
107
|
+
let layout;
|
|
89
108
|
if (state.modals.length > 0) {
|
|
90
|
-
|
|
109
|
+
layout = lodash_1.default.last(state.modals);
|
|
110
|
+
}
|
|
111
|
+
else if (!lodash_1.default.isEqual(state.root, {})) {
|
|
112
|
+
layout = state.root;
|
|
113
|
+
}
|
|
114
|
+
// Note: While this logic should be fair for all use cases (i.e. even multiple side-menus across tabs),
|
|
115
|
+
// there is no current test case that justifies it. Nevertheless, it's required to pass the tests,
|
|
116
|
+
// because otherwise getVisibleLayout() would not be revisited whenever side-menus are opened/closed.
|
|
117
|
+
if (layout && state.sideMenu && findNode(state.sideMenu.nodeId, layout)) {
|
|
118
|
+
layout = state.sideMenu.parentNode;
|
|
91
119
|
}
|
|
92
|
-
|
|
93
|
-
return state.root.getVisibleLayout();
|
|
120
|
+
return layout?.getVisibleLayout();
|
|
94
121
|
},
|
|
95
122
|
isVisibleLayout(layout) {
|
|
96
|
-
|
|
123
|
+
const nodeId = layout.nodeId;
|
|
124
|
+
const visibleLayout = getters.getVisibleLayout();
|
|
125
|
+
return visibleLayout?.nodeId === nodeId;
|
|
97
126
|
},
|
|
98
127
|
getModals() {
|
|
99
128
|
return state.modals;
|
|
@@ -103,11 +132,11 @@ const getters = remx.getters({
|
|
|
103
132
|
},
|
|
104
133
|
getLayoutById(layoutId) {
|
|
105
134
|
if (getters.getModalById(layoutId))
|
|
106
|
-
return
|
|
107
|
-
return
|
|
135
|
+
return findNode(layoutId, getters.getModalById(layoutId));
|
|
136
|
+
return findNode(layoutId, state.root);
|
|
108
137
|
},
|
|
109
138
|
getModalById(layoutId) {
|
|
110
|
-
return lodash_1.default.find(state.modals, (layout) =>
|
|
139
|
+
return lodash_1.default.find(state.modals, (layout) => findNode(layoutId, layout));
|
|
111
140
|
},
|
|
112
141
|
getLayoutChildren(layoutId) {
|
|
113
142
|
return getters.getLayoutById(layoutId).children;
|
|
@@ -117,14 +146,14 @@ const getters = remx.getters({
|
|
|
117
146
|
lodash_1.default.find(state.modals, (layout) => findStack(layoutId, layout)));
|
|
118
147
|
},
|
|
119
148
|
});
|
|
120
|
-
function
|
|
149
|
+
function findNode(layoutId, layout) {
|
|
121
150
|
if (layoutId === layout.nodeId) {
|
|
122
151
|
return layout;
|
|
123
152
|
}
|
|
124
153
|
else if (layout.children) {
|
|
125
154
|
for (let i = 0; i < layout.children.length; i += 1) {
|
|
126
155
|
const child = layout.children[i];
|
|
127
|
-
const result =
|
|
156
|
+
const result = findNode(layoutId, child);
|
|
128
157
|
if (result !== false) {
|
|
129
158
|
return result;
|
|
130
159
|
}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import ParentNode from '../Layouts/ParentNode';
|
|
2
|
+
import { SideMenuNode } from '../Layouts/SideMenu';
|
|
2
3
|
export declare const switchTabByIndex: (bottomTabs: ParentNode | undefined, index: number) => void;
|
|
4
|
+
export declare const openSideMenu: (sideMenu: SideMenuNode) => void;
|
|
5
|
+
export declare const closeSideMenu: (layout: SideMenuNode) => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.switchTabByIndex = void 0;
|
|
3
|
+
exports.closeSideMenu = exports.openSideMenu = exports.switchTabByIndex = void 0;
|
|
4
4
|
const LayoutStore_1 = require("../Stores/LayoutStore");
|
|
5
5
|
const switchTabByIndex = (bottomTabs, index) => {
|
|
6
6
|
if (bottomTabs) {
|
|
@@ -10,3 +10,13 @@ const switchTabByIndex = (bottomTabs, index) => {
|
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
12
|
exports.switchTabByIndex = switchTabByIndex;
|
|
13
|
+
const openSideMenu = (sideMenu) => {
|
|
14
|
+
LayoutStore_1.LayoutStore.openSideMenu(sideMenu);
|
|
15
|
+
LayoutStore_1.LayoutStore.getVisibleLayout().componentDidAppear();
|
|
16
|
+
};
|
|
17
|
+
exports.openSideMenu = openSideMenu;
|
|
18
|
+
const closeSideMenu = (layout) => {
|
|
19
|
+
LayoutStore_1.LayoutStore.getVisibleLayout().componentDidDisappear();
|
|
20
|
+
LayoutStore_1.LayoutStore.closeSideMenu(layout);
|
|
21
|
+
};
|
|
22
|
+
exports.closeSideMenu = closeSideMenu;
|
|
@@ -34,6 +34,7 @@ class NativeCommandsSender {
|
|
|
34
34
|
const layoutNode = LayoutNodeFactory_1.default.create(layout, stack);
|
|
35
35
|
stack.getVisibleLayout().componentDidDisappear();
|
|
36
36
|
LayoutStore_1.LayoutStore.push(layoutNode, stack);
|
|
37
|
+
LayoutStore_1.LayoutStore.applyOptions(layoutNode.nodeId, layoutNode.data.options);
|
|
37
38
|
stack.getVisibleLayout().componentDidAppear();
|
|
38
39
|
resolve(stack.getVisibleLayout().nodeId);
|
|
39
40
|
this.reportCommandCompletion(CommandName_1.CommandName.Push, commandId);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { NavigationConstants } from './Constants';
|
|
2
|
-
|
|
3
|
-
private readonly nativeCommandsModule;
|
|
4
|
-
constructor();
|
|
2
|
+
interface NativeCommandsModule {
|
|
5
3
|
setRoot(commandId: string, layout: {
|
|
6
4
|
root: any;
|
|
7
5
|
modals: any[];
|
|
@@ -13,7 +11,7 @@ export declare class NativeCommandsSender {
|
|
|
13
11
|
pop(commandId: string, componentId: string, options?: object): Promise<any>;
|
|
14
12
|
popTo(commandId: string, componentId: string, options?: object): Promise<any>;
|
|
15
13
|
popToRoot(commandId: string, componentId: string, options?: object): Promise<any>;
|
|
16
|
-
setStackRoot(commandId: string, onComponentId: string, layout: object): Promise<any>;
|
|
14
|
+
setStackRoot(commandId: string, onComponentId: string, layout: object[]): Promise<any>;
|
|
17
15
|
showModal(commandId: string, layout: object): Promise<any>;
|
|
18
16
|
dismissModal(commandId: string, componentId: string, options?: object): Promise<any>;
|
|
19
17
|
dismissAllModals(commandId: string, options?: object): Promise<any>;
|
|
@@ -23,4 +21,41 @@ export declare class NativeCommandsSender {
|
|
|
23
21
|
getLaunchArgs(commandId: string): Promise<any>;
|
|
24
22
|
getNavigationConstants(): Promise<NavigationConstants>;
|
|
25
23
|
getNavigationConstantsSync(): NavigationConstants;
|
|
24
|
+
getConstants?: () => NavigationConstants;
|
|
25
|
+
}
|
|
26
|
+
export declare class NativeCommandsSender implements NativeCommandsModule {
|
|
27
|
+
private readonly nativeCommandsModule;
|
|
28
|
+
constructor();
|
|
29
|
+
setRoot(commandId: string, layout: {
|
|
30
|
+
root: any;
|
|
31
|
+
modals: any[];
|
|
32
|
+
overlays: any[];
|
|
33
|
+
}): Promise<string>;
|
|
34
|
+
setDefaultOptions(options: object): void;
|
|
35
|
+
mergeOptions(componentId: string, options: object): void;
|
|
36
|
+
push(commandId: string, onComponentId: string, layout: object): Promise<string>;
|
|
37
|
+
pop(commandId: string, componentId: string, options?: object): Promise<string>;
|
|
38
|
+
popTo(commandId: string, componentId: string, options?: object): Promise<string>;
|
|
39
|
+
popToRoot(commandId: string, componentId: string, options?: object): Promise<string>;
|
|
40
|
+
setStackRoot(commandId: string, onComponentId: string, layout: object[]): Promise<string>;
|
|
41
|
+
showModal(commandId: string, layout: object): Promise<string>;
|
|
42
|
+
dismissModal(commandId: string, componentId: string, options?: object): Promise<string>;
|
|
43
|
+
dismissAllModals(commandId: string, options?: object): Promise<string>;
|
|
44
|
+
showOverlay(commandId: string, layout: object): Promise<string>;
|
|
45
|
+
dismissOverlay(commandId: string, componentId: string): Promise<string>;
|
|
46
|
+
dismissAllOverlays(commandId: string): Promise<string>;
|
|
47
|
+
getLaunchArgs(commandId: string): Promise<string[]>;
|
|
48
|
+
getNavigationConstants(): Promise<{
|
|
49
|
+
topBarHeight: number;
|
|
50
|
+
statusBarHeight: number;
|
|
51
|
+
bottomTabsHeight: number;
|
|
52
|
+
backButtonId: string;
|
|
53
|
+
}>;
|
|
54
|
+
getNavigationConstantsSync(): {
|
|
55
|
+
topBarHeight: number;
|
|
56
|
+
statusBarHeight: number;
|
|
57
|
+
bottomTabsHeight: number;
|
|
58
|
+
backButtonId: string;
|
|
59
|
+
};
|
|
26
60
|
}
|
|
61
|
+
export {};
|
|
@@ -54,10 +54,10 @@ class NativeCommandsSender {
|
|
|
54
54
|
return this.nativeCommandsModule.getLaunchArgs(commandId);
|
|
55
55
|
}
|
|
56
56
|
getNavigationConstants() {
|
|
57
|
-
return this.nativeCommandsModule.
|
|
57
|
+
return Promise.resolve(this.nativeCommandsModule.getConstants());
|
|
58
58
|
}
|
|
59
59
|
getNavigationConstantsSync() {
|
|
60
|
-
return this.nativeCommandsModule.
|
|
60
|
+
return this.nativeCommandsModule.getConstants();
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
exports.NativeCommandsSender = NativeCommandsSender;
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const react_native_1 = require("react-native");
|
|
4
|
-
let eventEmitter
|
|
5
|
-
|
|
6
|
-
// Running in bridge mode
|
|
7
|
-
eventEmitter = react_native_1.NativeModules.RNNBridgeEventEmitter;
|
|
8
|
-
}
|
|
9
|
-
catch (e) {
|
|
10
|
-
// Running in bridgeless, access to NativeModules is prohibited
|
|
11
|
-
eventEmitter = react_native_1.TurboModuleRegistry.get('RNNTurboEventEmitter');
|
|
12
|
-
}
|
|
4
|
+
let eventEmitter;
|
|
5
|
+
eventEmitter = react_native_1.TurboModuleRegistry.get('RNNTurboEventEmitter');
|
|
13
6
|
exports.default = eventEmitter;
|
|
@@ -5,24 +5,23 @@ export interface Spec extends TurboModule {
|
|
|
5
5
|
topBarHeight: Double;
|
|
6
6
|
statusBarHeight: Double;
|
|
7
7
|
bottomTabsHeight: Double;
|
|
8
|
+
backButtonId: string;
|
|
8
9
|
};
|
|
9
10
|
setRoot(commandId: string, layout: UnsafeObject): Promise<string>;
|
|
10
11
|
setDefaultOptions(options: UnsafeObject): void;
|
|
11
12
|
mergeOptions(componentId: string, options: UnsafeObject): void;
|
|
12
13
|
push(commandId: string, componentId: string, layout: UnsafeObject): Promise<string>;
|
|
13
|
-
pop(commandId: string, componentId: string, options
|
|
14
|
-
popTo(commandId: string, componentId: string, options
|
|
15
|
-
popToRoot(commandId: string, componentId: string, options
|
|
14
|
+
pop(commandId: string, componentId: string, options?: UnsafeObject): Promise<string>;
|
|
15
|
+
popTo(commandId: string, componentId: string, options?: UnsafeObject): Promise<string>;
|
|
16
|
+
popToRoot(commandId: string, componentId: string, options?: UnsafeObject): Promise<string>;
|
|
16
17
|
setStackRoot(commandId: string, componentId: string, layout: Array<UnsafeObject>): Promise<string>;
|
|
17
18
|
showModal(commandId: string, layout: UnsafeObject): Promise<string>;
|
|
18
|
-
dismissModal(commandId: string, componentId: string, options
|
|
19
|
-
dismissAllModals(commandId: string, options
|
|
19
|
+
dismissModal(commandId: string, componentId: string, options?: UnsafeObject): Promise<string>;
|
|
20
|
+
dismissAllModals(commandId: string, options?: UnsafeObject): Promise<string>;
|
|
20
21
|
showOverlay(commandId: string, layout: UnsafeObject): Promise<string>;
|
|
21
|
-
dismissOverlay(commandId: string, componentId: string): Promise<
|
|
22
|
-
dismissAllOverlays(commandId: string): Promise<
|
|
22
|
+
dismissOverlay(commandId: string, componentId: string): Promise<string>;
|
|
23
|
+
dismissAllOverlays(commandId: string): Promise<string>;
|
|
23
24
|
getLaunchArgs(commandId: string): Promise<Array<string>>;
|
|
24
25
|
}
|
|
25
|
-
declare const commands:
|
|
26
|
-
export declare const RCTAssertNewArchEnabled: () => void;
|
|
27
|
-
export declare const isRNNTurboModuleAvailable: boolean;
|
|
26
|
+
declare const commands: Spec;
|
|
28
27
|
export default commands;
|
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isRNNTurboModuleAvailable = exports.RCTAssertNewArchEnabled = void 0;
|
|
4
3
|
const react_native_1 = require("react-native");
|
|
5
|
-
const
|
|
6
|
-
const commands = isTurboModuleEnabled && react_native_1.Platform.OS === 'ios'
|
|
7
|
-
? react_native_1.TurboModuleRegistry.get('RNNTurboModule')
|
|
8
|
-
: react_native_1.NativeModules.RNNBridgeModule;
|
|
9
|
-
const isNewArchWithBridgeless = isTurboModuleEnabled;
|
|
10
|
-
const RCTAssertNewArchEnabled = () => {
|
|
11
|
-
if (!isNewArchWithBridgeless)
|
|
12
|
-
throw new Error('Allowed only in New Architecture with Bridgeless!');
|
|
13
|
-
};
|
|
14
|
-
exports.RCTAssertNewArchEnabled = RCTAssertNewArchEnabled;
|
|
15
|
-
exports.isRNNTurboModuleAvailable = isNewArchWithBridgeless;
|
|
4
|
+
const commands = react_native_1.TurboModuleRegistry.get('RNNTurboModule');
|
|
16
5
|
exports.default = commands;
|
|
@@ -20,20 +20,20 @@ export declare class Commands {
|
|
|
20
20
|
private readonly layoutProcessor;
|
|
21
21
|
private readonly optionsCrawler;
|
|
22
22
|
constructor(store: Store, nativeCommandsSender: NativeCommandsSender, layoutTreeParser: LayoutTreeParser, layoutTreeCrawler: LayoutTreeCrawler, commandsObserver: CommandsObserver, uniqueIdProvider: UniqueIdProvider, optionsProcessor: OptionsProcessor, layoutProcessor: LayoutProcessor, optionsCrawler: OptionsCrawler);
|
|
23
|
-
setRoot(simpleApi: LayoutRoot): Promise<
|
|
23
|
+
setRoot(simpleApi: LayoutRoot): Promise<string>;
|
|
24
24
|
setDefaultOptions(options: Options): void;
|
|
25
25
|
mergeOptions(componentId: string, options: Options): void;
|
|
26
26
|
updateProps(componentId: string, props: object, callback?: () => void): void;
|
|
27
|
-
showModal<P>(layout: Layout<P>): Promise<
|
|
28
|
-
dismissModal(componentId: string, mergeOptions?: Options): Promise<
|
|
29
|
-
dismissAllModals(mergeOptions?: Options): Promise<
|
|
30
|
-
push<P>(componentId: string, simpleApi: Layout<P>): Promise<
|
|
31
|
-
pop(componentId: string, mergeOptions?: Options): Promise<
|
|
32
|
-
popTo(componentId: string, mergeOptions?: Options): Promise<
|
|
33
|
-
popToRoot(componentId: string, mergeOptions?: Options): Promise<
|
|
34
|
-
setStackRoot<P>(componentId: string, children: Layout<P>[]): Promise<
|
|
35
|
-
showOverlay<P>(simpleApi: Layout<P>): Promise<
|
|
36
|
-
dismissOverlay(componentId: string): Promise<
|
|
37
|
-
dismissAllOverlays(): Promise<
|
|
38
|
-
getLaunchArgs(): Promise<
|
|
27
|
+
showModal<P>(layout: Layout<P>): Promise<string>;
|
|
28
|
+
dismissModal(componentId: string, mergeOptions?: Options): Promise<string>;
|
|
29
|
+
dismissAllModals(mergeOptions?: Options): Promise<string>;
|
|
30
|
+
push<P>(componentId: string, simpleApi: Layout<P>): Promise<string>;
|
|
31
|
+
pop(componentId: string, mergeOptions?: Options): Promise<string>;
|
|
32
|
+
popTo(componentId: string, mergeOptions?: Options): Promise<string>;
|
|
33
|
+
popToRoot(componentId: string, mergeOptions?: Options): Promise<string>;
|
|
34
|
+
setStackRoot<P>(componentId: string, children: Layout<P>[]): Promise<string>;
|
|
35
|
+
showOverlay<P>(simpleApi: Layout<P>): Promise<string>;
|
|
36
|
+
dismissOverlay(componentId: string): Promise<string>;
|
|
37
|
+
dismissAllOverlays(): Promise<string>;
|
|
38
|
+
getLaunchArgs(): Promise<string[]>;
|
|
39
39
|
}
|
package/lib/ios/Constants.mm
CHANGED
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
JS::NativeRNNTurboModule::Constants::Builder::Input input = {
|
|
17
17
|
[self topBarHeight],
|
|
18
18
|
[self statusBarHeight],
|
|
19
|
-
[self bottomTabsHeight]
|
|
19
|
+
[self bottomTabsHeight],
|
|
20
|
+
[self backButtonId]
|
|
20
21
|
};
|
|
21
22
|
|
|
22
23
|
return input;
|
|
@@ -35,4 +36,9 @@
|
|
|
35
36
|
return [UIApplication.sharedApplication.delegate.window.rootViewController getBottomTabsHeight];
|
|
36
37
|
}
|
|
37
38
|
|
|
39
|
+
+ (NSString*)backButtonId {
|
|
40
|
+
// This property is used only in android but we have to add it for compatability in turbo modules
|
|
41
|
+
return @"";
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
@end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
#import "RNNAppDelegate.h"
|
|
2
3
|
#import <ReactNativeNavigation/ReactNativeNavigation.h>
|
|
3
4
|
|
|
@@ -39,6 +40,7 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot";
|
|
|
39
40
|
RCTAppSetupPrepareApp(application, self.turboModuleEnabled);
|
|
40
41
|
RCTSetNewArchEnabled(TRUE);
|
|
41
42
|
|
|
43
|
+
|
|
42
44
|
if (self.bridgelessEnabled) {
|
|
43
45
|
// Creating host instead of bridge
|
|
44
46
|
self.rootViewFactory.reactHost = [self.rootViewFactory createReactHost:launchOptions];
|
|
@@ -113,7 +115,7 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot";
|
|
|
113
115
|
}
|
|
114
116
|
|
|
115
117
|
- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass {
|
|
116
|
-
return RCTAppSetupDefaultModuleFromClass(moduleClass);
|
|
118
|
+
return RCTAppSetupDefaultModuleFromClass(moduleClass, self.dependencyProvider);
|
|
117
119
|
}
|
|
118
120
|
#endif
|
|
119
121
|
|
|
@@ -300,6 +300,7 @@ static NSString *const setDefaultOptions = @"setDefaultOptions";
|
|
|
300
300
|
completion:^{
|
|
301
301
|
[self->_eventEmitter sendOnNavigationCommandCompletion:pop
|
|
302
302
|
commandId:commandId];
|
|
303
|
+
NSLog(@"Pop commandshandler completed");
|
|
303
304
|
completion();
|
|
304
305
|
}
|
|
305
306
|
rejection:rejection];
|
|
@@ -55,8 +55,15 @@
|
|
|
55
55
|
|
|
56
56
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
57
57
|
- (void)surface:(RCTSurface *)surface didChangeIntrinsicSize:(CGSize)intrinsicSize {
|
|
58
|
-
|
|
58
|
+
if ([self.alignment isEqualToString:@"center"]) {
|
|
59
|
+
[self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y,
|
|
60
|
+
self.subView.intrinsicContentSize.width,
|
|
61
|
+
self.subView.intrinsicContentSize.height)];
|
|
62
|
+
[self.subView setFrame:CGRectMake(0, 0, surface.intrinsicSize.width,
|
|
63
|
+
surface.intrinsicSize.height)];
|
|
64
|
+
}
|
|
59
65
|
}
|
|
66
|
+
|
|
60
67
|
#else
|
|
61
68
|
- (void)rootViewDidChangeIntrinsicSize:(RCTRootView *)rootView {
|
|
62
69
|
if ([self.alignment isEqualToString:@"center"]) {
|
|
@@ -154,6 +154,9 @@ static NSString *const BottomTabPressed = @"RNN.BottomTabPressed";
|
|
|
154
154
|
#pragma mark private
|
|
155
155
|
|
|
156
156
|
- (void)send:(NSString *)eventName body:(id)body {
|
|
157
|
+
if (self.bridge == nil) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
157
160
|
[self sendEventWithName:eventName body:body];
|
|
158
161
|
}
|
|
159
162
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
- (instancetype)initWithHost:(RCTHost *)host
|
|
6
6
|
moduleName:(NSString *)moduleName
|
|
7
7
|
initialProperties:(NSDictionary *)initialProperties
|
|
8
|
-
eventEmitter:(
|
|
8
|
+
eventEmitter:(RNNTurboEventEmitter *)eventEmitter
|
|
9
9
|
sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode
|
|
10
10
|
reactViewReadyBlock:(RNNReactViewReadyCompletionBlock)reactViewReadyBlock {
|
|
11
11
|
self = [super initWithHost:host moduleName:moduleName initialProperties:initialProperties eventEmitter:eventEmitter sizeMeasureMode:convertToSurfaceSizeMeasureMode(RCTRootViewSizeFlexibilityWidthAndHeight) reactViewReadyBlock:reactViewReadyBlock];
|
package/lib/ios/RNNReactView.h
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
#define ComponentTypeButton @"TopBarButton"
|
|
16
16
|
#define ComponentTypeBackground @"TopBarBackground"
|
|
17
17
|
|
|
18
|
+
#import "RNNTurboEventEmitter.h"
|
|
19
|
+
|
|
18
20
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
19
21
|
static RCTSurfaceSizeMeasureMode convertToSurfaceSizeMeasureMode(RCTRootViewSizeFlexibility sizeFlexibility)
|
|
20
22
|
{
|
|
@@ -92,7 +94,7 @@ typedef void (^RNNReactViewReadyCompletionBlock)(void);
|
|
|
92
94
|
- (instancetype)initWithHost:(RCTHost *)host
|
|
93
95
|
moduleName:(NSString *)moduleName
|
|
94
96
|
initialProperties:(NSDictionary *)initialProperties
|
|
95
|
-
eventEmitter:(
|
|
97
|
+
eventEmitter:(RNNTurboEventEmitter *)eventEmitter
|
|
96
98
|
sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode
|
|
97
99
|
reactViewReadyBlock:(RNNReactViewReadyCompletionBlock)reactViewReadyBlock;
|
|
98
100
|
|
package/lib/ios/RNNReactView.mm
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
@implementation RNNReactView {
|
|
13
13
|
BOOL _isMounted;
|
|
14
|
+
BOOL _pendingWillAppear;
|
|
14
15
|
BOOL _pendingDidAppear;
|
|
15
16
|
BOOL _didAppear;
|
|
16
17
|
BOOL _willAppear;
|
|
@@ -56,17 +57,18 @@
|
|
|
56
57
|
- (instancetype)initWithHost:(RCTHost *)host
|
|
57
58
|
moduleName:(NSString *)moduleName
|
|
58
59
|
initialProperties:(NSDictionary *)initialProperties
|
|
59
|
-
eventEmitter:(
|
|
60
|
+
eventEmitter:(RNNTurboEventEmitter *)eventEmitter
|
|
60
61
|
sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode
|
|
61
62
|
reactViewReadyBlock:(RNNReactViewReadyCompletionBlock)reactViewReadyBlock {
|
|
63
|
+
|
|
62
64
|
RCTFabricSurface *surface = [host createSurfaceWithModuleName:moduleName
|
|
63
65
|
initialProperties:initialProperties];
|
|
64
|
-
|
|
66
|
+
[host.surfacePresenter addObserver:self];
|
|
65
67
|
self = [super initWithSurface:surface sizeMeasureMode:sizeMeasureMode];
|
|
66
|
-
|
|
68
|
+
|
|
67
69
|
_reactViewReadyBlock = reactViewReadyBlock;
|
|
68
70
|
_eventEmitter = eventEmitter;
|
|
69
|
-
|
|
71
|
+
|
|
70
72
|
return self;
|
|
71
73
|
}
|
|
72
74
|
#endif
|
|
@@ -88,7 +90,7 @@
|
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
92
|
#endif
|
|
91
|
-
|
|
93
|
+
|
|
92
94
|
- (void)reactViewReady {
|
|
93
95
|
if (_reactViewReadyBlock) {
|
|
94
96
|
_reactViewReadyBlock();
|
|
@@ -99,12 +101,19 @@
|
|
|
99
101
|
#endif
|
|
100
102
|
}
|
|
101
103
|
|
|
104
|
+
#pragma mark - RNNComponentProtocol
|
|
102
105
|
- (void)componentWillAppear {
|
|
106
|
+
if (!_isMounted) {
|
|
107
|
+
_pendingWillAppear = YES;
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
_pendingWillAppear = NO;
|
|
112
|
+
|
|
103
113
|
if (!_willAppear) {
|
|
104
114
|
[_eventEmitter sendComponentWillAppear:self.componentId
|
|
105
115
|
componentName:self.moduleName
|
|
106
116
|
componentType:self.componentType];
|
|
107
|
-
|
|
108
117
|
_willAppear = YES;
|
|
109
118
|
}
|
|
110
119
|
}
|
|
@@ -116,6 +125,7 @@
|
|
|
116
125
|
}
|
|
117
126
|
|
|
118
127
|
_pendingDidAppear = NO;
|
|
128
|
+
|
|
119
129
|
if (!_didAppear) {
|
|
120
130
|
[_eventEmitter sendComponentDidAppear:self.componentId
|
|
121
131
|
componentName:self.moduleName
|
|
@@ -131,18 +141,43 @@
|
|
|
131
141
|
_willAppear = NO;
|
|
132
142
|
_didAppear = NO;
|
|
133
143
|
}
|
|
144
|
+
|
|
145
|
+
- (NSString *)componentId {
|
|
146
|
+
return self.appProperties[@"componentId"];
|
|
147
|
+
}
|
|
134
148
|
|
|
149
|
+
- (NSString *)componentType {
|
|
150
|
+
@throw [NSException exceptionWithName:@"componentType not implemented"
|
|
151
|
+
reason:@"Should always subclass RNNReactView"
|
|
152
|
+
userInfo:nil];
|
|
153
|
+
}
|
|
154
|
+
#pragma mark -
|
|
155
|
+
|
|
156
|
+
|
|
135
157
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
158
|
+
|
|
159
|
+
#pragma mark - RCTSurfacePresenterObserver
|
|
160
|
+
- (void)willMountComponentsWithRootTag:(NSInteger)rootTag {
|
|
161
|
+
if (self.surface.rootTag == rootTag) {
|
|
162
|
+
_isMounted = YES;
|
|
163
|
+
|
|
164
|
+
if (_pendingWillAppear) {
|
|
165
|
+
[self componentWillAppear];
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
136
169
|
|
|
137
170
|
- (void)didMountComponentsWithRootTag:(NSInteger)rootTag {
|
|
138
171
|
if (self.surface.rootTag == rootTag) {
|
|
139
172
|
_isMounted = YES;
|
|
173
|
+
|
|
140
174
|
if (_pendingDidAppear) {
|
|
141
175
|
[self componentDidAppear];
|
|
142
176
|
}
|
|
143
177
|
}
|
|
144
178
|
}
|
|
145
|
-
|
|
179
|
+
#pragma mark -
|
|
180
|
+
|
|
146
181
|
- (NSDictionary *)appProperties {
|
|
147
182
|
@synchronized(self) {
|
|
148
183
|
return self.surface.properties;
|
|
@@ -175,7 +210,7 @@
|
|
|
175
210
|
}
|
|
176
211
|
|
|
177
212
|
- (UIView *)contentView {
|
|
178
|
-
|
|
213
|
+
return self;
|
|
179
214
|
}
|
|
180
215
|
|
|
181
216
|
- (RCTRootViewSizeFlexibility)sizeFlexibility {
|
|
@@ -185,17 +220,7 @@
|
|
|
185
220
|
- (void)setSizeFlexibility:(RCTRootViewSizeFlexibility)sizeFlexibility {
|
|
186
221
|
super.sizeMeasureMode = convertToSurfaceSizeMeasureMode(sizeFlexibility);
|
|
187
222
|
}
|
|
188
|
-
|
|
223
|
+
|
|
189
224
|
#endif
|
|
190
|
-
|
|
191
|
-
- (NSString *)componentId {
|
|
192
|
-
return self.appProperties[@"componentId"];
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
- (NSString *)componentType {
|
|
196
|
-
@throw [NSException exceptionWithName:@"componentType not implemented"
|
|
197
|
-
reason:@"Should always subclass RNNReactView"
|
|
198
|
-
userInfo:nil];
|
|
199
|
-
}
|
|
200
|
-
|
|
225
|
+
|
|
201
226
|
@end
|