react-native-navigation 8.7.4 → 8.7.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.
- package/ios/RNNNavigationOptions.h +1 -0
- package/ios/RNNNavigationOptions.mm +4 -0
- package/ios/RNNOverlayManager.mm +4 -0
- package/ios/ScreenAnimationController.mm +29 -24
- package/ios/StackControllerDelegate.mm +21 -3
- package/lib/module/Mock/Application.js +33 -0
- package/lib/module/Mock/Application.js.map +1 -0
- package/lib/module/Mock/ComponentProps.js +4 -0
- package/lib/module/Mock/ComponentProps.js.map +1 -0
- package/lib/module/Mock/Components/BottomTabs.js +16 -0
- package/lib/module/Mock/Components/BottomTabs.js.map +1 -0
- package/lib/module/Mock/Components/ComponentScreen.js +101 -0
- package/lib/module/Mock/Components/ComponentScreen.js.map +1 -0
- package/lib/module/Mock/Components/LayoutComponent.js +50 -0
- package/lib/module/Mock/Components/LayoutComponent.js.map +1 -0
- package/lib/module/Mock/Components/Modals.js +22 -0
- package/lib/module/Mock/Components/Modals.js.map +1 -0
- package/lib/module/Mock/Components/NavigationButton.js +72 -0
- package/lib/module/Mock/Components/NavigationButton.js.map +1 -0
- package/lib/module/Mock/Components/Overlays.js +23 -0
- package/lib/module/Mock/Components/Overlays.js.map +1 -0
- package/lib/module/Mock/Components/SideMenu.js +29 -0
- package/lib/module/Mock/Components/SideMenu.js.map +1 -0
- package/lib/module/Mock/Components/Stack.js +18 -0
- package/lib/module/Mock/Components/Stack.js.map +1 -0
- package/lib/module/Mock/Components/TopBar.js +81 -0
- package/lib/module/Mock/Components/TopBar.js.map +1 -0
- package/lib/module/Mock/Layouts/BottomTabsNode.js +30 -0
- package/lib/module/Mock/Layouts/BottomTabsNode.js.map +1 -0
- package/lib/module/Mock/Layouts/ComponentNode.js +102 -0
- package/lib/module/Mock/Layouts/ComponentNode.js.map +1 -0
- package/lib/module/Mock/Layouts/LayoutNodeFactory.js +28 -0
- package/lib/module/Mock/Layouts/LayoutNodeFactory.js.map +1 -0
- package/lib/module/Mock/Layouts/Node.js +14 -0
- package/lib/module/Mock/Layouts/Node.js.map +1 -0
- package/lib/module/Mock/Layouts/ParentNode.js +66 -0
- package/lib/module/Mock/Layouts/ParentNode.js.map +1 -0
- package/lib/module/Mock/Layouts/SideMenu.js +72 -0
- package/lib/module/Mock/Layouts/SideMenu.js.map +1 -0
- package/lib/module/Mock/Layouts/StackNode.js +12 -0
- package/lib/module/Mock/Layouts/StackNode.js.map +1 -0
- package/lib/module/Mock/Stores/EventsStore.js +53 -0
- package/lib/module/Mock/Stores/EventsStore.js.map +1 -0
- package/lib/module/Mock/Stores/LayoutStore.js +176 -0
- package/lib/module/Mock/Stores/LayoutStore.js.map +1 -0
- package/lib/module/Mock/actions/layoutActions.js +19 -0
- package/lib/module/Mock/actions/layoutActions.js.map +1 -0
- package/lib/module/Mock/connect.js +8 -0
- package/lib/module/Mock/connect.js.map +1 -0
- package/lib/module/Mock/constants.js +5 -0
- package/lib/module/Mock/constants.js.map +1 -0
- package/lib/module/Mock/index.js +20 -0
- package/lib/module/Mock/index.js.map +1 -0
- package/lib/module/Mock/mocks/AppRegistryService.js +6 -0
- package/lib/module/Mock/mocks/AppRegistryService.js.map +1 -0
- package/lib/module/Mock/mocks/NativeCommandsSender.js +146 -0
- package/lib/module/Mock/mocks/NativeCommandsSender.js.map +1 -0
- package/lib/module/Mock/mocks/NativeEventsReceiver.js +103 -0
- package/lib/module/Mock/mocks/NativeEventsReceiver.js.map +1 -0
- package/lib/typescript/Mock/Application.d.ts.map +1 -1
- package/lib/typescript/Mock/ComponentProps.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/BottomTabs.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/ComponentScreen.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/LayoutComponent.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/Modals.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/NavigationButton.d.ts +1 -1
- package/lib/typescript/Mock/Components/NavigationButton.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/Overlays.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/SideMenu.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/Stack.d.ts.map +1 -1
- package/lib/typescript/Mock/Components/TopBar.d.ts +1 -1
- package/lib/typescript/Mock/Components/TopBar.d.ts.map +1 -1
- package/lib/typescript/Mock/Layouts/BottomTabsNode.d.ts +1 -1
- package/lib/typescript/Mock/Layouts/BottomTabsNode.d.ts.map +1 -1
- package/lib/typescript/Mock/Layouts/ComponentNode.d.ts +1 -1
- package/lib/typescript/Mock/Layouts/ComponentNode.d.ts.map +1 -1
- package/lib/typescript/Mock/Layouts/LayoutNodeFactory.d.ts.map +1 -1
- package/lib/typescript/Mock/Layouts/Node.d.ts +1 -1
- package/lib/typescript/Mock/Layouts/Node.d.ts.map +1 -1
- package/lib/typescript/Mock/Layouts/ParentNode.d.ts +2 -2
- package/lib/typescript/Mock/Layouts/ParentNode.d.ts.map +1 -1
- package/lib/typescript/Mock/Layouts/SideMenu.d.ts +1 -1
- package/lib/typescript/Mock/Layouts/SideMenu.d.ts.map +1 -1
- package/lib/typescript/Mock/Layouts/StackNode.d.ts.map +1 -1
- package/lib/typescript/Mock/Stores/EventsStore.d.ts +3 -3
- package/lib/typescript/Mock/Stores/EventsStore.d.ts.map +1 -1
- package/lib/typescript/Mock/Stores/LayoutStore.d.ts.map +1 -1
- package/lib/typescript/Mock/actions/layoutActions.d.ts.map +1 -1
- package/lib/typescript/Mock/connect.d.ts.map +1 -1
- package/lib/typescript/Mock/constants.d.ts.map +1 -1
- package/lib/typescript/Mock/index.d.ts.map +1 -1
- package/lib/typescript/Mock/mocks/AppRegistryService.d.ts.map +1 -1
- package/lib/typescript/Mock/mocks/NativeCommandsSender.d.ts +2 -2
- package/lib/typescript/Mock/mocks/NativeCommandsSender.d.ts.map +1 -1
- package/lib/typescript/Mock/mocks/NativeEventsReceiver.d.ts +2 -2
- package/lib/typescript/Mock/mocks/NativeEventsReceiver.d.ts.map +1 -1
- package/lib/typescript/Navigation.d.ts.map +1 -0
- package/lib/typescript/NavigationDelegate.d.ts.map +1 -0
- package/lib/typescript/adapters/AppRegistryService.d.ts.map +1 -0
- package/lib/typescript/adapters/AssetResolver.d.ts.map +1 -0
- package/lib/typescript/adapters/ColorService.d.ts.map +1 -0
- package/lib/typescript/adapters/Constants.d.ts.map +1 -0
- package/lib/typescript/adapters/NativeCommandsSender.d.ts.map +1 -0
- package/lib/typescript/adapters/NativeEventsReceiver.d.ts.map +1 -0
- package/lib/typescript/adapters/NativeEventsReceiver.mock.d.ts.map +1 -0
- package/lib/typescript/adapters/NativeRNNTurboEventEmitter.d.ts.map +1 -0
- package/lib/typescript/adapters/NativeRNNTurboModule.d.ts.map +1 -0
- package/lib/typescript/adapters/TouchablePreview.d.ts.map +1 -0
- package/lib/typescript/adapters/UniqueIdProvider.d.ts.map +1 -0
- package/lib/typescript/commands/Commands.d.ts.map +1 -0
- package/lib/typescript/commands/Commands.test.d.ts.map +1 -0
- package/lib/typescript/commands/Deprecations.d.ts.map +1 -0
- package/lib/typescript/commands/LayoutTreeCrawler.d.ts.map +1 -0
- package/lib/typescript/commands/LayoutTreeCrawler.test.d.ts.map +1 -0
- package/lib/typescript/commands/LayoutTreeParser.d.ts.map +1 -0
- package/lib/typescript/commands/LayoutTreeParser.test.d.ts.map +1 -0
- package/lib/typescript/commands/LayoutType.d.ts.map +1 -0
- package/lib/typescript/commands/LayoutType.test.d.ts.map +1 -0
- package/lib/typescript/commands/OptionsCrawler.d.ts.map +1 -0
- package/lib/typescript/commands/OptionsCrawler.test.d.ts.map +1 -0
- package/lib/typescript/commands/OptionsProcessor.d.ts.map +1 -0
- package/lib/typescript/commands/OptionsProcessor.test.d.ts.map +1 -0
- package/lib/typescript/components/ComponentRegistry.d.ts.map +1 -0
- package/lib/typescript/components/ComponentRegistry.test.d.ts.map +1 -0
- package/lib/typescript/components/ComponentWrapper.d.ts.map +1 -0
- package/lib/typescript/components/ComponentWrapper.test.d.ts.map +1 -0
- package/lib/typescript/components/Modal.d.ts.map +1 -0
- package/lib/typescript/components/Store.d.ts.map +1 -0
- package/lib/typescript/components/Store.test.d.ts.map +1 -0
- package/lib/typescript/events/CommandsObserver.d.ts.map +1 -0
- package/lib/typescript/events/CommandsObserver.test.d.ts.map +1 -0
- package/lib/typescript/events/ComponentEventsObserver.d.ts.map +1 -0
- package/lib/typescript/events/ComponentEventsObserver.test.d.ts.map +1 -0
- package/lib/typescript/events/EventsRegistry.d.ts.map +1 -0
- package/lib/typescript/events/EventsRegistry.test.d.ts.map +1 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/interfaces/CommandName.d.ts.map +1 -0
- package/lib/typescript/interfaces/ComponentEvents.d.ts.map +1 -0
- package/lib/typescript/interfaces/EventSubscription.d.ts.map +1 -0
- package/lib/typescript/interfaces/Events.d.ts.map +1 -0
- package/lib/typescript/interfaces/Layout.d.ts.map +1 -0
- package/lib/typescript/interfaces/NavigationComponent.d.ts.map +1 -0
- package/lib/typescript/interfaces/NavigationComponentListener.d.ts.map +1 -0
- package/lib/typescript/interfaces/NavigationComponentProps.d.ts.map +1 -0
- package/lib/typescript/interfaces/NavigationFunctionComponent.d.ts.map +1 -0
- package/lib/typescript/interfaces/Options.d.ts.map +1 -0
- package/lib/typescript/interfaces/ProcessorSubscription.d.ts.map +1 -0
- package/lib/typescript/interfaces/Processors.d.ts.map +1 -0
- package/lib/typescript/processors/LayoutProcessor.d.ts.map +1 -0
- package/lib/typescript/processors/LayoutProcessor.test.d.ts.map +1 -0
- package/lib/typescript/processors/LayoutProcessorsStore.d.ts.map +1 -0
- package/lib/typescript/processors/LayoutProcessorsStore.test.d.ts.map +1 -0
- package/lib/typescript/processors/OptionProcessorsStore.d.ts.map +1 -0
- package/lib/typescript/processors/OptionProcessorsStore.test.d.ts.map +1 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +12 -6
- package/src/Mock/Application.tsx +30 -0
- package/src/Mock/ComponentProps.tsx +6 -0
- package/src/Mock/Components/BottomTabs.tsx +14 -0
- package/src/Mock/Components/ComponentScreen.tsx +107 -0
- package/src/Mock/Components/LayoutComponent.tsx +37 -0
- package/src/Mock/Components/Modals.tsx +22 -0
- package/src/Mock/Components/NavigationButton.tsx +86 -0
- package/src/Mock/Components/Overlays.tsx +23 -0
- package/src/Mock/Components/SideMenu.tsx +27 -0
- package/src/Mock/Components/Stack.tsx +16 -0
- package/src/Mock/Components/TopBar.tsx +96 -0
- package/src/Mock/Layouts/BottomTabsNode.ts +34 -0
- package/src/Mock/Layouts/ComponentNode.ts +124 -0
- package/src/Mock/Layouts/LayoutNodeFactory.ts +31 -0
- package/src/Mock/Layouts/Node.ts +35 -0
- package/src/Mock/Layouts/ParentNode.ts +86 -0
- package/src/Mock/Layouts/SideMenu.ts +87 -0
- package/src/Mock/Layouts/StackNode.ts +11 -0
- package/src/Mock/Stores/EventsStore.ts +68 -0
- package/src/Mock/Stores/LayoutStore.ts +200 -0
- package/src/Mock/actions/layoutActions.ts +21 -0
- package/src/Mock/connect.ts +6 -0
- package/src/Mock/constants.ts +2 -0
- package/src/Mock/index.ts +16 -0
- package/src/Mock/mocks/AppRegistryService.ts +5 -0
- package/src/Mock/mocks/NativeCommandsSender.tsx +168 -0
- package/src/Mock/mocks/NativeEventsReceiver.ts +162 -0
- package/lib/typescript/src/Navigation.d.ts.map +0 -1
- package/lib/typescript/src/NavigationDelegate.d.ts.map +0 -1
- package/lib/typescript/src/adapters/AppRegistryService.d.ts.map +0 -1
- package/lib/typescript/src/adapters/AssetResolver.d.ts.map +0 -1
- package/lib/typescript/src/adapters/ColorService.d.ts.map +0 -1
- package/lib/typescript/src/adapters/Constants.d.ts.map +0 -1
- package/lib/typescript/src/adapters/NativeCommandsSender.d.ts.map +0 -1
- package/lib/typescript/src/adapters/NativeEventsReceiver.d.ts.map +0 -1
- package/lib/typescript/src/adapters/NativeEventsReceiver.mock.d.ts.map +0 -1
- package/lib/typescript/src/adapters/NativeRNNTurboEventEmitter.d.ts.map +0 -1
- package/lib/typescript/src/adapters/NativeRNNTurboModule.d.ts.map +0 -1
- package/lib/typescript/src/adapters/TouchablePreview.d.ts.map +0 -1
- package/lib/typescript/src/adapters/UniqueIdProvider.d.ts.map +0 -1
- package/lib/typescript/src/commands/Commands.d.ts.map +0 -1
- package/lib/typescript/src/commands/Commands.test.d.ts.map +0 -1
- package/lib/typescript/src/commands/Deprecations.d.ts.map +0 -1
- package/lib/typescript/src/commands/LayoutTreeCrawler.d.ts.map +0 -1
- package/lib/typescript/src/commands/LayoutTreeCrawler.test.d.ts.map +0 -1
- package/lib/typescript/src/commands/LayoutTreeParser.d.ts.map +0 -1
- package/lib/typescript/src/commands/LayoutTreeParser.test.d.ts.map +0 -1
- package/lib/typescript/src/commands/LayoutType.d.ts.map +0 -1
- package/lib/typescript/src/commands/LayoutType.test.d.ts.map +0 -1
- package/lib/typescript/src/commands/OptionsCrawler.d.ts.map +0 -1
- package/lib/typescript/src/commands/OptionsCrawler.test.d.ts.map +0 -1
- package/lib/typescript/src/commands/OptionsProcessor.d.ts.map +0 -1
- package/lib/typescript/src/commands/OptionsProcessor.test.d.ts.map +0 -1
- package/lib/typescript/src/components/ComponentRegistry.d.ts.map +0 -1
- package/lib/typescript/src/components/ComponentRegistry.test.d.ts.map +0 -1
- package/lib/typescript/src/components/ComponentWrapper.d.ts.map +0 -1
- package/lib/typescript/src/components/ComponentWrapper.test.d.ts.map +0 -1
- package/lib/typescript/src/components/Modal.d.ts.map +0 -1
- package/lib/typescript/src/components/Store.d.ts.map +0 -1
- package/lib/typescript/src/components/Store.test.d.ts.map +0 -1
- package/lib/typescript/src/events/CommandsObserver.d.ts.map +0 -1
- package/lib/typescript/src/events/CommandsObserver.test.d.ts.map +0 -1
- package/lib/typescript/src/events/ComponentEventsObserver.d.ts.map +0 -1
- package/lib/typescript/src/events/ComponentEventsObserver.test.d.ts.map +0 -1
- package/lib/typescript/src/events/EventsRegistry.d.ts.map +0 -1
- package/lib/typescript/src/events/EventsRegistry.test.d.ts.map +0 -1
- package/lib/typescript/src/index.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/CommandName.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/ComponentEvents.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/EventSubscription.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/Events.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/Layout.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/NavigationComponent.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/NavigationComponentListener.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/NavigationComponentProps.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/NavigationFunctionComponent.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/Options.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/ProcessorSubscription.d.ts.map +0 -1
- package/lib/typescript/src/interfaces/Processors.d.ts.map +0 -1
- package/lib/typescript/src/processors/LayoutProcessor.d.ts.map +0 -1
- package/lib/typescript/src/processors/LayoutProcessor.test.d.ts.map +0 -1
- package/lib/typescript/src/processors/LayoutProcessorsStore.d.ts.map +0 -1
- package/lib/typescript/src/processors/LayoutProcessorsStore.test.d.ts.map +0 -1
- package/lib/typescript/src/processors/OptionProcessorsStore.d.ts.map +0 -1
- package/lib/typescript/src/processors/OptionProcessorsStore.test.d.ts.map +0 -1
- package/lib/typescript/src/types.d.ts.map +0 -1
- /package/lib/typescript/{src/Navigation.d.ts → Navigation.d.ts} +0 -0
- /package/lib/typescript/{src/NavigationDelegate.d.ts → NavigationDelegate.d.ts} +0 -0
- /package/lib/typescript/{src/adapters → adapters}/AppRegistryService.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/AssetResolver.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/ColorService.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/Constants.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/NativeCommandsSender.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/NativeEventsReceiver.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/NativeEventsReceiver.mock.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/NativeRNNTurboEventEmitter.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/NativeRNNTurboModule.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/TouchablePreview.d.ts +0 -0
- /package/lib/typescript/{src/adapters → adapters}/UniqueIdProvider.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/Commands.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/Commands.test.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/Deprecations.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/LayoutTreeCrawler.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/LayoutTreeCrawler.test.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/LayoutTreeParser.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/LayoutTreeParser.test.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/LayoutType.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/LayoutType.test.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/OptionsCrawler.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/OptionsCrawler.test.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/OptionsProcessor.d.ts +0 -0
- /package/lib/typescript/{src/commands → commands}/OptionsProcessor.test.d.ts +0 -0
- /package/lib/typescript/{src/components → components}/ComponentRegistry.d.ts +0 -0
- /package/lib/typescript/{src/components → components}/ComponentRegistry.test.d.ts +0 -0
- /package/lib/typescript/{src/components → components}/ComponentWrapper.d.ts +0 -0
- /package/lib/typescript/{src/components → components}/ComponentWrapper.test.d.ts +0 -0
- /package/lib/typescript/{src/components → components}/Modal.d.ts +0 -0
- /package/lib/typescript/{src/components → components}/Store.d.ts +0 -0
- /package/lib/typescript/{src/components → components}/Store.test.d.ts +0 -0
- /package/lib/typescript/{src/events → events}/CommandsObserver.d.ts +0 -0
- /package/lib/typescript/{src/events → events}/CommandsObserver.test.d.ts +0 -0
- /package/lib/typescript/{src/events → events}/ComponentEventsObserver.d.ts +0 -0
- /package/lib/typescript/{src/events → events}/ComponentEventsObserver.test.d.ts +0 -0
- /package/lib/typescript/{src/events → events}/EventsRegistry.d.ts +0 -0
- /package/lib/typescript/{src/events → events}/EventsRegistry.test.d.ts +0 -0
- /package/lib/typescript/{src/index.d.ts → index.d.ts} +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/CommandName.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/ComponentEvents.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/EventSubscription.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/Events.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/Layout.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/NavigationComponent.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/NavigationComponentListener.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/NavigationComponentProps.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/NavigationFunctionComponent.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/Options.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/ProcessorSubscription.d.ts +0 -0
- /package/lib/typescript/{src/interfaces → interfaces}/Processors.d.ts +0 -0
- /package/lib/typescript/{src/processors → processors}/LayoutProcessor.d.ts +0 -0
- /package/lib/typescript/{src/processors → processors}/LayoutProcessor.test.d.ts +0 -0
- /package/lib/typescript/{src/processors → processors}/LayoutProcessorsStore.d.ts +0 -0
- /package/lib/typescript/{src/processors → processors}/LayoutProcessorsStore.test.d.ts +0 -0
- /package/lib/typescript/{src/processors → processors}/OptionProcessorsStore.d.ts +0 -0
- /package/lib/typescript/{src/processors → processors}/OptionProcessorsStore.test.d.ts +0 -0
- /package/lib/typescript/{src/types.d.ts → types.d.ts} +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Options } from '../../index';
|
|
2
|
+
import ParentNode from './ParentNode';
|
|
3
|
+
|
|
4
|
+
interface Data {
|
|
5
|
+
name: string;
|
|
6
|
+
options: Options;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type NodeType =
|
|
10
|
+
| 'Component'
|
|
11
|
+
| 'ExternalComponent'
|
|
12
|
+
| 'Stack'
|
|
13
|
+
| 'BottomTabs'
|
|
14
|
+
| 'TopTabs'
|
|
15
|
+
| 'SideMenuRoot'
|
|
16
|
+
| 'SideMenuLeft'
|
|
17
|
+
| 'SideMenuRight'
|
|
18
|
+
| 'SideMenuCenter'
|
|
19
|
+
| 'SplitView';
|
|
20
|
+
|
|
21
|
+
export default class Node {
|
|
22
|
+
readonly nodeId: string;
|
|
23
|
+
readonly data: Data;
|
|
24
|
+
readonly type: NodeType;
|
|
25
|
+
// options: Options;
|
|
26
|
+
parentNode?: ParentNode;
|
|
27
|
+
|
|
28
|
+
constructor(layout: any, type: NodeType, parentNode?: ParentNode) {
|
|
29
|
+
this.nodeId = layout.id;
|
|
30
|
+
this.data = layout.data;
|
|
31
|
+
// this.options = layout.data.options;
|
|
32
|
+
this.parentNode = parentNode;
|
|
33
|
+
this.type = type;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import { OptionsTopBarButton } from '../../interfaces/Options';
|
|
3
|
+
import { Options } from '../../index';
|
|
4
|
+
import { LayoutStore } from '../Stores/LayoutStore';
|
|
5
|
+
import ComponentNode from './ComponentNode';
|
|
6
|
+
import LayoutNodeFactory from './LayoutNodeFactory';
|
|
7
|
+
import Node, { NodeType } from './Node';
|
|
8
|
+
|
|
9
|
+
export default class ParentNode extends Node {
|
|
10
|
+
children: ParentNode[];
|
|
11
|
+
|
|
12
|
+
constructor(layout: any, type: NodeType, parentNode?: ParentNode) {
|
|
13
|
+
super(layout, type, parentNode);
|
|
14
|
+
this.children = layout.children.map((childLayout: any) =>
|
|
15
|
+
LayoutNodeFactory.create(childLayout, this)
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
componentDidMount() {}
|
|
20
|
+
|
|
21
|
+
componentDidAppear() {
|
|
22
|
+
this.getVisibleLayout().componentDidAppear();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
componentDidDisappear() {
|
|
26
|
+
this.getVisibleLayout().componentDidDisappear();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
getVisibleLayout(): ComponentNode {
|
|
30
|
+
return this.children[this.children.length - 1].getVisibleLayout();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
getTopParent(): Node {
|
|
34
|
+
if (this.parentNode) return this.parentNode.getTopParent();
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
applyOptions(_options: Options) {
|
|
39
|
+
this.parentNode?.applyOptions(_options);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
mergeOptions(options: Options) {
|
|
43
|
+
this.data.options = _.mergeWith(this.data.options, options, (objValue, srcValue, key) => {
|
|
44
|
+
if (_.isArray(objValue)) {
|
|
45
|
+
if (key === 'rightButtons' || key === 'leftButtons') {
|
|
46
|
+
this.buttonsChanged(objValue, srcValue);
|
|
47
|
+
}
|
|
48
|
+
return srcValue;
|
|
49
|
+
}
|
|
50
|
+
if (key === 'title' && srcValue.component) {
|
|
51
|
+
this.titleChanged(objValue, srcValue);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
this.parentNode?.mergeOptions(options);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
buttonsChanged(_oldButtons: OptionsTopBarButton[], _newButtons: OptionsTopBarButton[]) {}
|
|
59
|
+
|
|
60
|
+
titleChanged(_oldComponent: any, _newComponent: any) {}
|
|
61
|
+
|
|
62
|
+
resolveOptions(): Options {
|
|
63
|
+
const options = _.merge(_.cloneDeep(this.data.options), this.getVisibleLayout().data.options);
|
|
64
|
+
return _.merge(_.cloneDeep(LayoutStore.getDefaultOptions()), options);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public getStack(): ParentNode | undefined {
|
|
68
|
+
if (this.type === 'Stack') {
|
|
69
|
+
return this as ParentNode;
|
|
70
|
+
} else if (this.parentNode) {
|
|
71
|
+
return this.parentNode.getStack();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public getBottomTabs(): ParentNode | undefined {
|
|
78
|
+
if (this.type === 'BottomTabs') {
|
|
79
|
+
return this as ParentNode;
|
|
80
|
+
} else if (this.parentNode) {
|
|
81
|
+
return this.parentNode.getBottomTabs();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import ParentNode from './ParentNode';
|
|
2
|
+
import ComponentNode from './ComponentNode';
|
|
3
|
+
import { Options } from '../../index';
|
|
4
|
+
import * as layoutActions from '../actions/layoutActions';
|
|
5
|
+
import { NodeType } from './Node';
|
|
6
|
+
|
|
7
|
+
const isCenterChild = (child: ParentNode) => child.type === 'SideMenuCenter';
|
|
8
|
+
const isLeftChild = (child: ParentNode) => child.type === 'SideMenuLeft';
|
|
9
|
+
const isRightChild = (child: ParentNode) => child.type === 'SideMenuRight';
|
|
10
|
+
|
|
11
|
+
export default class SideMenuRootNode extends ParentNode {
|
|
12
|
+
visibleChild: ParentNode;
|
|
13
|
+
|
|
14
|
+
constructor(layout: any, parentNode?: ParentNode) {
|
|
15
|
+
super(layout, 'SideMenuRoot', parentNode);
|
|
16
|
+
|
|
17
|
+
this.visibleChild = this._getCenterChild();
|
|
18
|
+
if (!this.visibleChild) {
|
|
19
|
+
throw new Error('SideMenuRootNode must have a SideMenuCenter child');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
applyOptions(_options: Options) {
|
|
24
|
+
super.applyOptions(_options);
|
|
25
|
+
|
|
26
|
+
this._updateVisibility(_options);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
mergeOptions(options: Options) {
|
|
30
|
+
super.mergeOptions(options);
|
|
31
|
+
|
|
32
|
+
this._updateVisibility(options);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @override
|
|
37
|
+
*/
|
|
38
|
+
getVisibleLayout(): ComponentNode {
|
|
39
|
+
return this.visibleChild.getVisibleLayout();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
_updateVisibility(options: Options) {
|
|
43
|
+
if (options.sideMenu) {
|
|
44
|
+
if (options.sideMenu.left?.visible) {
|
|
45
|
+
this.visibleChild = this._getLeftChild();
|
|
46
|
+
layoutActions.openSideMenu(this.visibleChild);
|
|
47
|
+
} else if (options.sideMenu.right?.visible) {
|
|
48
|
+
this.visibleChild = this._getRightChild();
|
|
49
|
+
layoutActions.openSideMenu(this.visibleChild);
|
|
50
|
+
} else {
|
|
51
|
+
this.visibleChild = this._getCenterChild();
|
|
52
|
+
layoutActions.closeSideMenu(this.visibleChild);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
_getCenterChild = () => this.children.find(isCenterChild) as ParentNode;
|
|
58
|
+
_getLeftChild = () => this.children.find(isLeftChild) as ParentNode;
|
|
59
|
+
_getRightChild = () => this.children.find(isRightChild) as ParentNode;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export class SideMenuNode extends ParentNode {
|
|
63
|
+
constructor(layout: any, type: NodeType, parentNode?: ParentNode) {
|
|
64
|
+
super(layout, type, parentNode);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getVisibleLayout() {
|
|
68
|
+
return this.children[0].getVisibleLayout();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export class SideMenuLeftNode extends SideMenuNode {
|
|
73
|
+
constructor(layout: any, parentNode?: ParentNode) {
|
|
74
|
+
super(layout, 'SideMenuLeft', parentNode);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export class SideMenuRightNode extends SideMenuNode {
|
|
78
|
+
constructor(layout: any, parentNode?: ParentNode) {
|
|
79
|
+
super(layout, 'SideMenuRight', parentNode);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export class SideMenuCenterNode extends SideMenuNode {
|
|
84
|
+
constructor(layout: any, parentNode?: ParentNode) {
|
|
85
|
+
super(layout, 'SideMenuCenter', parentNode);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import ParentNode from './ParentNode';
|
|
2
|
+
|
|
3
|
+
export default class StackNode extends ParentNode {
|
|
4
|
+
constructor(layout: any, parentNode?: ParentNode) {
|
|
5
|
+
super(layout, 'Stack', parentNode);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
getVisibleLayout() {
|
|
9
|
+
return this.children[this.children.length - 1].getVisibleLayout();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ComponentDidDisappearEvent,
|
|
3
|
+
ComponentWillAppearEvent,
|
|
4
|
+
ModalDismissedEvent,
|
|
5
|
+
ScreenPoppedEvent,
|
|
6
|
+
} from '../../interfaces/ComponentEvents';
|
|
7
|
+
import { ComponentDidAppearEvent, NavigationButtonPressedEvent } from '../../index';
|
|
8
|
+
import { BottomTabPressedEvent, CommandCompletedEvent } from '../../interfaces/Events';
|
|
9
|
+
|
|
10
|
+
export const events = {
|
|
11
|
+
navigationButtonPressed: [(_event: NavigationButtonPressedEvent) => {}],
|
|
12
|
+
componentWillAppear: [(_event: ComponentWillAppearEvent) => {}],
|
|
13
|
+
componentDidAppear: [(_event: ComponentDidAppearEvent) => {}],
|
|
14
|
+
componentDidDisappear: [(_event: ComponentDidDisappearEvent) => {}],
|
|
15
|
+
modalDismissed: [(_event: ModalDismissedEvent) => {}],
|
|
16
|
+
bottomTabPressed: [(_event: BottomTabPressedEvent) => {}],
|
|
17
|
+
commandCompleted: [(_event: CommandCompletedEvent) => {}],
|
|
18
|
+
screenPopped: [(_event: ScreenPoppedEvent) => {}],
|
|
19
|
+
|
|
20
|
+
invokeComponentWillAppear: (event: ComponentWillAppearEvent) => {
|
|
21
|
+
events.componentWillAppear &&
|
|
22
|
+
events.componentWillAppear.forEach((listener) => {
|
|
23
|
+
listener(event);
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
invokeComponentDidAppear: (event: ComponentDidAppearEvent) => {
|
|
27
|
+
events.componentDidAppear &&
|
|
28
|
+
events.componentDidAppear.forEach((listener) => {
|
|
29
|
+
listener(event);
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
invokeComponentDidDisappear: (event: ComponentDidDisappearEvent) => {
|
|
33
|
+
events.componentDidDisappear &&
|
|
34
|
+
events.componentDidDisappear.forEach((listener) => {
|
|
35
|
+
listener(event);
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
invokeModalDismissed: (event: ModalDismissedEvent) => {
|
|
39
|
+
events.modalDismissed &&
|
|
40
|
+
events.modalDismissed.forEach((listener) => {
|
|
41
|
+
listener(event);
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
invokeNavigationButtonPressed: (event: NavigationButtonPressedEvent) => {
|
|
45
|
+
events.navigationButtonPressed &&
|
|
46
|
+
events.navigationButtonPressed.forEach((listener) => {
|
|
47
|
+
listener(event);
|
|
48
|
+
});
|
|
49
|
+
},
|
|
50
|
+
invokeBottomTabPressed: (event: BottomTabPressedEvent) => {
|
|
51
|
+
events.bottomTabPressed &&
|
|
52
|
+
events.bottomTabPressed?.forEach((listener) => {
|
|
53
|
+
listener(event);
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
invokeCommandCompleted: (event: CommandCompletedEvent) => {
|
|
57
|
+
events.commandCompleted &&
|
|
58
|
+
events.commandCompleted.forEach((listener) => {
|
|
59
|
+
listener(event);
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
invokeScreenPopped: (event: ScreenPoppedEvent) => {
|
|
63
|
+
events.screenPopped &&
|
|
64
|
+
events.screenPopped.forEach((listener) => {
|
|
65
|
+
listener(event);
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
import BottomTabsNode from '../Layouts/BottomTabsNode';
|
|
3
|
+
import ParentNode from '../Layouts/ParentNode';
|
|
4
|
+
import LayoutNodeFactory from '../Layouts/LayoutNodeFactory';
|
|
5
|
+
import { SideMenuNode } from '../Layouts/SideMenu';
|
|
6
|
+
import StackNode from '../Layouts/StackNode';
|
|
7
|
+
import { Options } from '../../interfaces/Options';
|
|
8
|
+
|
|
9
|
+
const remx = require('remx');
|
|
10
|
+
|
|
11
|
+
const state = remx.state({
|
|
12
|
+
root: {},
|
|
13
|
+
modals: [],
|
|
14
|
+
overlays: [],
|
|
15
|
+
sideMenu: undefined,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
const setters = remx.setters({
|
|
19
|
+
setRoot(layout: ParentNode) {
|
|
20
|
+
state.modals = [];
|
|
21
|
+
state.root = layout;
|
|
22
|
+
},
|
|
23
|
+
push(layout: ParentNode, stack: StackNode) {
|
|
24
|
+
stack.children.push(layout);
|
|
25
|
+
},
|
|
26
|
+
pop(layoutId: string) {
|
|
27
|
+
const stack = getters.getLayoutById(layoutId).getStack();
|
|
28
|
+
if (stack.children.length === 1) return;
|
|
29
|
+
const poppedChild = stack.children.pop();
|
|
30
|
+
const newVisibleChild = stack.getVisibleLayout();
|
|
31
|
+
poppedChild.componentDidDisappear();
|
|
32
|
+
newVisibleChild.componentDidAppear();
|
|
33
|
+
return _.clone(poppedChild.nodeId);
|
|
34
|
+
},
|
|
35
|
+
popTo(layoutId: string) {
|
|
36
|
+
const stack = getters.getLayoutById(layoutId).getStack();
|
|
37
|
+
while (stack.getVisibleLayout().nodeId != layoutId) {
|
|
38
|
+
stack.children.pop();
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
popToRoot(layoutId: string) {
|
|
42
|
+
const stack = getters.getLayoutById(layoutId).getStack();
|
|
43
|
+
while (stack.children.length > 1) {
|
|
44
|
+
stack.children.pop();
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
setStackRoot(layoutId: string, layout: any) {
|
|
48
|
+
const currentLayout = getters.getLayoutById(layoutId);
|
|
49
|
+
if (currentLayout) {
|
|
50
|
+
const stack = currentLayout.getStack();
|
|
51
|
+
stack.children = layout.map((child: any) => LayoutNodeFactory.create(child, stack));
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
showOverlay(overlay: ParentNode) {
|
|
55
|
+
state.overlays.push(overlay);
|
|
56
|
+
},
|
|
57
|
+
dismissOverlay(overlayId: string) {
|
|
58
|
+
_.remove(state.overlays, (overlay: ParentNode) => overlay.nodeId === overlayId);
|
|
59
|
+
},
|
|
60
|
+
dismissAllOverlays() {
|
|
61
|
+
state.overlays = [];
|
|
62
|
+
},
|
|
63
|
+
showModal(modal: ParentNode) {
|
|
64
|
+
state.modals.push(modal);
|
|
65
|
+
},
|
|
66
|
+
dismissModal(componentId: string) {
|
|
67
|
+
const modal = getters.getModalById(componentId);
|
|
68
|
+
if (modal) {
|
|
69
|
+
const child = modal.getVisibleLayout();
|
|
70
|
+
const topParent = child.getTopParent();
|
|
71
|
+
_.remove(state.modals, (modal: ParentNode) => modal.nodeId === topParent.nodeId);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
dismissAllModals() {
|
|
75
|
+
state.modals = [];
|
|
76
|
+
},
|
|
77
|
+
selectTabIndex(layout: BottomTabsNode, index: number) {
|
|
78
|
+
getters.getLayoutById(layout.nodeId).selectedIndex = index;
|
|
79
|
+
},
|
|
80
|
+
openSideMenu(layout: SideMenuNode) {
|
|
81
|
+
if (state.sideMenu) {
|
|
82
|
+
throw new Error(
|
|
83
|
+
'A side-menu is already open; Mocked-testing of multiple side-menu scenarios is not supported yet.' +
|
|
84
|
+
' You can submit a request in https://github.com/wix/react-native-navigation/issues/new/choose.'
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
state.sideMenu = layout;
|
|
88
|
+
},
|
|
89
|
+
closeSideMenu(_layout: SideMenuNode) {
|
|
90
|
+
state.sideMenu = undefined;
|
|
91
|
+
},
|
|
92
|
+
applyOptions(componentId: string, options: Options) {
|
|
93
|
+
const layout = getters.getLayoutById(componentId);
|
|
94
|
+
if (layout) layout.applyOptions(options);
|
|
95
|
+
else console.warn(`[RNN error] Merge options failure: cannot find layout for: ${componentId}`);
|
|
96
|
+
},
|
|
97
|
+
mergeOptions(componentId: string, options: Options) {
|
|
98
|
+
const layout = getters.getLayoutById(componentId);
|
|
99
|
+
if (layout) layout.mergeOptions(options);
|
|
100
|
+
else console.warn(`[RNN error] Merge options failure: cannot find layout for: ${componentId}`);
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
const getters = remx.getters({
|
|
105
|
+
getLayout() {
|
|
106
|
+
return state.root;
|
|
107
|
+
},
|
|
108
|
+
getVisibleLayout() {
|
|
109
|
+
let layout: ParentNode | undefined;
|
|
110
|
+
if (state.modals.length > 0) {
|
|
111
|
+
layout = _.last<ParentNode>(state.modals)!;
|
|
112
|
+
} else if (!_.isEqual(state.root, {})) {
|
|
113
|
+
layout = state.root;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Note: While this logic should be fair for all use cases (i.e. even multiple side-menus across tabs),
|
|
117
|
+
// there is no current test case that justifies it. Nevertheless, it's required to pass the tests,
|
|
118
|
+
// because otherwise getVisibleLayout() would not be revisited whenever side-menus are opened/closed.
|
|
119
|
+
if (layout && state.sideMenu && findNode(state.sideMenu.nodeId, layout!)) {
|
|
120
|
+
layout = state.sideMenu.parentNode;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return layout?.getVisibleLayout();
|
|
124
|
+
},
|
|
125
|
+
isVisibleLayout(layout: ParentNode) {
|
|
126
|
+
const nodeId = layout.nodeId;
|
|
127
|
+
const visibleLayout = getters.getVisibleLayout();
|
|
128
|
+
return visibleLayout?.nodeId === nodeId;
|
|
129
|
+
},
|
|
130
|
+
getModals() {
|
|
131
|
+
return state.modals;
|
|
132
|
+
},
|
|
133
|
+
getOverlays() {
|
|
134
|
+
return state.overlays;
|
|
135
|
+
},
|
|
136
|
+
getLayoutById(layoutId: string) {
|
|
137
|
+
if (getters.getModalById(layoutId)) return findNode(layoutId, getters.getModalById(layoutId));
|
|
138
|
+
|
|
139
|
+
return findNode(layoutId, state.root);
|
|
140
|
+
},
|
|
141
|
+
getModalById(layoutId: string) {
|
|
142
|
+
return _.find(state.modals, (layout) => findNode(layoutId, layout));
|
|
143
|
+
},
|
|
144
|
+
getLayoutChildren(layoutId: string) {
|
|
145
|
+
return getters.getLayoutById(layoutId).children;
|
|
146
|
+
},
|
|
147
|
+
getStack(layoutId: string) {
|
|
148
|
+
return (
|
|
149
|
+
findStack(layoutId, state.root) ||
|
|
150
|
+
_.find(state.modals, (layout) => findStack(layoutId, layout))
|
|
151
|
+
);
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
function findNode(layoutId: string, layout: ParentNode): any | ParentNode {
|
|
156
|
+
if (layoutId === layout.nodeId) {
|
|
157
|
+
return layout;
|
|
158
|
+
} else if (layout.children) {
|
|
159
|
+
for (let i = 0; i < layout.children.length; i += 1) {
|
|
160
|
+
const child = layout.children[i];
|
|
161
|
+
const result = findNode(layoutId, child);
|
|
162
|
+
|
|
163
|
+
if (result !== false) {
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function findStack(layoutId: string, layout: ParentNode): any | ParentNode {
|
|
173
|
+
if (layout.type === 'Stack' && _.find(layout.children, (child) => child.nodeId === layoutId)) {
|
|
174
|
+
return layout;
|
|
175
|
+
} else if (layout.children) {
|
|
176
|
+
for (let i = 0; i < layout.children.length; i += 1) {
|
|
177
|
+
const child = layout.children[i];
|
|
178
|
+
const result = findStack(layoutId, child);
|
|
179
|
+
|
|
180
|
+
if (result !== false) {
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
let defaultOptions: Options;
|
|
190
|
+
|
|
191
|
+
export const LayoutStore = {
|
|
192
|
+
...getters,
|
|
193
|
+
...setters,
|
|
194
|
+
setDefaultOptions(options: Options) {
|
|
195
|
+
defaultOptions = options;
|
|
196
|
+
},
|
|
197
|
+
getDefaultOptions() {
|
|
198
|
+
return defaultOptions;
|
|
199
|
+
},
|
|
200
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import ParentNode from '../Layouts/ParentNode';
|
|
2
|
+
import { SideMenuNode } from '../Layouts/SideMenu';
|
|
3
|
+
import { LayoutStore } from '../Stores/LayoutStore';
|
|
4
|
+
|
|
5
|
+
export const switchTabByIndex = (bottomTabs: ParentNode | undefined, index: number) => {
|
|
6
|
+
if (bottomTabs) {
|
|
7
|
+
LayoutStore.getVisibleLayout().componentDidDisappear();
|
|
8
|
+
LayoutStore.selectTabIndex(bottomTabs, index);
|
|
9
|
+
LayoutStore.getVisibleLayout().componentDidAppear();
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const openSideMenu = (sideMenu: SideMenuNode) => {
|
|
14
|
+
LayoutStore.openSideMenu(sideMenu);
|
|
15
|
+
LayoutStore.getVisibleLayout().componentDidAppear();
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const closeSideMenu = (layout: SideMenuNode) => {
|
|
19
|
+
LayoutStore.getVisibleLayout().componentDidDisappear();
|
|
20
|
+
LayoutStore.closeSideMenu(layout);
|
|
21
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const ApplicationMock = require('./Application').Application;
|
|
2
|
+
|
|
3
|
+
export * from './constants';
|
|
4
|
+
|
|
5
|
+
export function mockNativeComponents() {
|
|
6
|
+
const { NativeCommandsSender } = require('./mocks/NativeCommandsSender');
|
|
7
|
+
const { NativeEventsReceiver } = require('./mocks/NativeEventsReceiver');
|
|
8
|
+
const { AppRegistryService } = require('./mocks/AppRegistryService');
|
|
9
|
+
const { Navigation } = require('react-native-navigation');
|
|
10
|
+
|
|
11
|
+
Navigation.mockNativeComponents(
|
|
12
|
+
new NativeCommandsSender(),
|
|
13
|
+
new NativeEventsReceiver(),
|
|
14
|
+
new AppRegistryService()
|
|
15
|
+
);
|
|
16
|
+
}
|