@sigmela/router 0.2.8 → 0.3.1
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/README.md +107 -1
- package/lib/module/Drawer/Drawer.js +250 -0
- package/lib/module/Drawer/DrawerContext.js +4 -0
- package/lib/module/Drawer/DrawerIcon.web.js +47 -0
- package/lib/module/Drawer/RenderDrawer.native.js +244 -0
- package/lib/module/Drawer/RenderDrawer.web.js +197 -0
- package/lib/module/Drawer/useDrawer.js +11 -0
- package/lib/module/Navigation.js +4 -2
- package/lib/module/NavigationStack.js +14 -4
- package/lib/module/Router.js +214 -60
- package/lib/module/RouterContext.js +1 -1
- package/lib/module/ScreenStack/ScreenStack.web.js +78 -12
- package/lib/module/ScreenStackItem/ScreenStackItem.js +7 -7
- package/lib/module/ScreenStackItem/ScreenStackItem.web.js +65 -6
- package/lib/module/ScreenStackSheetItem/ScreenStackSheetItem.native.js +4 -5
- package/lib/module/SplitView/RenderSplitView.web.js +5 -7
- package/lib/module/SplitView/SplitView.js +10 -2
- package/lib/module/StackRenderer.js +10 -4
- package/lib/module/TabBar/RenderTabBar.native.js +55 -24
- package/lib/module/TabBar/RenderTabBar.web.js +25 -2
- package/lib/module/TabBar/TabBar.js +8 -1
- package/lib/module/TabBar/TabIcon.web.js +12 -7
- package/lib/module/index.js +2 -0
- package/lib/module/styles.css +255 -91
- package/lib/typescript/src/Drawer/Drawer.d.ts +100 -0
- package/lib/typescript/src/Drawer/DrawerContext.d.ts +3 -0
- package/lib/typescript/src/Drawer/DrawerIcon.web.d.ts +7 -0
- package/lib/typescript/src/Drawer/RenderDrawer.native.d.ts +8 -0
- package/lib/typescript/src/Drawer/RenderDrawer.web.d.ts +8 -0
- package/lib/typescript/src/Drawer/useDrawer.d.ts +2 -0
- package/lib/typescript/src/NavigationStack.d.ts +1 -0
- package/lib/typescript/src/Router.d.ts +13 -0
- package/lib/typescript/src/ScreenStack/ScreenStackContext.d.ts +1 -1
- package/lib/typescript/src/ScreenStack/animationHelpers.d.ts +1 -1
- package/lib/typescript/src/SplitView/SplitView.d.ts +2 -0
- package/lib/typescript/src/TabBar/TabBar.d.ts +10 -1
- package/lib/typescript/src/index.d.ts +5 -0
- package/lib/typescript/src/types.d.ts +12 -3
- package/package.json +28 -12
|
@@ -10,6 +10,7 @@ export class TabBar {
|
|
|
10
10
|
stacks = {};
|
|
11
11
|
nodes = {};
|
|
12
12
|
listeners = new Set();
|
|
13
|
+
_cachedRenderer = null;
|
|
13
14
|
constructor(options = {}) {
|
|
14
15
|
this.tabBarId = `tabbar-${Math.random().toString(36).slice(2)}`;
|
|
15
16
|
this.state = {
|
|
@@ -146,14 +147,20 @@ export class TabBar {
|
|
|
146
147
|
return children;
|
|
147
148
|
}
|
|
148
149
|
getRenderer() {
|
|
150
|
+
if (this._cachedRenderer) {
|
|
151
|
+
return this._cachedRenderer;
|
|
152
|
+
}
|
|
153
|
+
|
|
149
154
|
// eslint-disable-next-line consistent-this
|
|
150
155
|
const tabBarInstance = this;
|
|
151
|
-
|
|
156
|
+
const renderer = function TabBarScreen(props) {
|
|
152
157
|
return /*#__PURE__*/React.createElement(RenderTabBar, {
|
|
153
158
|
tabBar: tabBarInstance,
|
|
154
159
|
appearance: props?.appearance
|
|
155
160
|
});
|
|
156
161
|
};
|
|
162
|
+
this._cachedRenderer = renderer;
|
|
163
|
+
return renderer;
|
|
157
164
|
}
|
|
158
165
|
seed() {
|
|
159
166
|
const activeTab = this.state.tabs[this.state.index];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { memo } from 'react';
|
|
3
|
+
import { memo, useMemo } from 'react';
|
|
4
4
|
import { Image } from 'react-native';
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
6
|
const resolveImageUri = source => {
|
|
@@ -20,18 +20,23 @@ export const TabIcon = /*#__PURE__*/memo(({
|
|
|
20
20
|
}) => {
|
|
21
21
|
const iconUri = resolveImageUri(source);
|
|
22
22
|
const useMask = Boolean(tintColor && iconUri);
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const maskStyle = useMemo(() => {
|
|
24
|
+
if (!useMask || !iconUri) return undefined;
|
|
25
|
+
return {
|
|
25
26
|
backgroundColor: tintColor,
|
|
26
27
|
WebkitMaskImage: `url(${iconUri})`,
|
|
27
|
-
maskImage: `url(${iconUri})`,
|
|
28
28
|
WebkitMaskSize: 'contain',
|
|
29
|
-
maskSize: 'contain',
|
|
30
29
|
WebkitMaskRepeat: 'no-repeat',
|
|
31
|
-
maskRepeat: 'no-repeat',
|
|
32
30
|
WebkitMaskPosition: 'center',
|
|
33
|
-
|
|
31
|
+
maskImage: `url(${iconUri})`,
|
|
32
|
+
maskSize: 'contain',
|
|
33
|
+
maskRepeat: 'no-repeat',
|
|
34
|
+
maskPosition: 'center',
|
|
35
|
+
width: '100%',
|
|
36
|
+
height: '100%'
|
|
34
37
|
};
|
|
38
|
+
}, [tintColor, iconUri, useMask]);
|
|
39
|
+
if (maskStyle) {
|
|
35
40
|
return /*#__PURE__*/_jsx("div", {
|
|
36
41
|
style: maskStyle
|
|
37
42
|
});
|
package/lib/module/index.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
export { useTabBar } from "./TabBar/useTabBar.js";
|
|
4
4
|
export { useTabBarHeight, TAB_BAR_HEIGHT } from "./TabBar/useTabBarHeight.js";
|
|
5
5
|
export { TabBar } from "./TabBar/TabBar.js";
|
|
6
|
+
export { Drawer } from "./Drawer/Drawer.js";
|
|
7
|
+
export { useDrawer } from "./Drawer/useDrawer.js";
|
|
6
8
|
export { SplitView } from "./SplitView/SplitView.js";
|
|
7
9
|
export { useSplitView } from "./SplitView/useSplitView.js";
|
|
8
10
|
export { Router } from "./Router.js";
|