This pr adds support for changing tab initialisation mode. Currently bottom tabs are attached together and consequently, their corresponding react root views are created and rendered. This adds lots of stress on the js thread and hiders app start time.
To mitigate this issue, this pr adds support for three modes
* `together` (default, current behaviour) - all tabs are loaded together, adding unnecessary load on the js thread as we're loading invisible views, which leads to increased app start time.
* `afterInitialTab` - Initial tab is loaded first. After it is rendered, other tabs are loaded as well. This should shave a few hunderdish ms from app start time. Since other tabs are loaded after the initial tab is visible, the ui might be unresponsive for a few hunderdish ms as multiple root views (which are typically complex) are being created and attached to hierarchy at once.
* `onSwitchToTab` - initial tab is loaded. Other tabs are loaded when switching to them (tab click or programmatically). While this won't stress js thread after initial tab is rendered, there will be a flicker when entering a tab for the first time as it's ui isn't ready.
In some places “enable” was used to control certain options. This commit adds backwards compatible support
for “enabled” property which should be used from now on.
Unmount title view when corresponding child component is unmounted (#3759)
Unmount Title component only when related child component is destroyed
Currently TopBar title component, background and buttons are unmounted when a new screen is pushed to the stack.
This causes a bug when props are passed to these components as props are cleared when child components unmount.
This commit fixes this bug for title components.
[Breaking[ Modal refactor
* [Breaking] Showing modal removes the previously visible ViewController from hierarchy
* Modal implementation does not rely on Dialog
* Modal view is added to `content` layout
* Overlay is added to `root` layout, on top of the application's content
* Introduce StackControllerBuilder
* Show modal with animation
* Dismiss modal with animation
* Add previous modal at index 0
* Add root at index 0
* dismissAllModals dismisses only top modal with animation