mobx-route 0.0.69 → 0.0.70
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/package.json +6 -1
- package/react/components/index.d.ts +1 -0
- package/react/components/index.d.ts.map +1 -1
- package/react/components/index.js +1 -0
- package/react/components/route-group-view.d.ts +5 -4
- package/react/components/route-group-view.d.ts.map +1 -1
- package/react/components/route-group-view.js +13 -7
- package/react/components/route-view-map.d.ts +19 -0
- package/react/components/route-view-map.d.ts.map +1 -0
- package/react/components/route-view-map.js +35 -0
- package/react/components/route-view.d.ts +1 -1
- package/react/components/route-view.d.ts.map +1 -1
- package/react/components/route-view.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobx-route",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.70",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"mobx",
|
|
6
6
|
"react",
|
|
@@ -145,6 +145,11 @@
|
|
|
145
145
|
"default": "./react/components/route-group-view.js",
|
|
146
146
|
"types": "./react/components/route-group-view.d.ts"
|
|
147
147
|
},
|
|
148
|
+
"./react/components/route-view-map": {
|
|
149
|
+
"import": "./react/components/route-view-map.js",
|
|
150
|
+
"default": "./react/components/route-view-map.js",
|
|
151
|
+
"types": "./react/components/route-view-map.d.ts"
|
|
152
|
+
},
|
|
148
153
|
"./react/components/route-view": {
|
|
149
154
|
"import": "./react/components/route-view.js",
|
|
150
155
|
"default": "./react/components/route-view.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
|
|
@@ -11,9 +11,10 @@ export type RouteGroupViews<TRoutes extends RoutesCollection> = TRoutes extends
|
|
|
11
11
|
export interface RouteGroupViewProps<TRouteGroup extends AnyRouteGroup> {
|
|
12
12
|
group: TRouteGroup;
|
|
13
13
|
views: Partial<RouteGroupViews<TRouteGroup['routes']>>;
|
|
14
|
-
|
|
14
|
+
onFallback?: VoidFunction;
|
|
15
|
+
fallbackView?: ReactNode;
|
|
15
16
|
}
|
|
16
|
-
declare const
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
export declare const RouteGroupView: (<TRouteGroup extends AnyRouteGroup>({ group, views, fallbackView, onFallback, }: RouteGroupViewProps<TRouteGroup>) => string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null) & {
|
|
18
|
+
displayName: string;
|
|
19
|
+
};
|
|
19
20
|
//# sourceMappingURL=route-group-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-group-view.d.ts","sourceRoot":"","sources":["../../../src/react/components/route-group-view.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route-group-view.d.ts","sourceRoot":"","sources":["../../../src/react/components/route-group-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA4B,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EACL,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,cAAc,CAAC,YAAY,SAAS,cAAc,IAE1D,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,GAEjD,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAErC,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,gBAAgB,IAC1D,OAAO,SAAS,qBAAqB,GACjC;KACG,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,cAAc,GACnD,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAC1B,KAAK;CACV,GACD,OAAO,SAAS,sBAAsB,GACpC;KACG,CAAC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,cAAc,GACnD,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAC1B,KAAK;CACV,GACD,WAAW,CAAC;AAEpB,MAAM,WAAW,mBAAmB,CAAC,WAAW,SAAS,aAAa;IACpE,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAmDD,eAAO,MAAM,cAAc,IAjDC,WAAW,SAAS,aAAa,+CAK1D,mBAAmB,CAAC,WAAW,CAAC;;CA4CuB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { observer } from 'mobx-react-lite';
|
|
3
|
+
import { useLayoutEffect, useMemo } from 'react';
|
|
3
4
|
import { RouteView, } from './route-view.js';
|
|
4
|
-
const RouteGroupViewBase = ({ group, views,
|
|
5
|
-
const viewEntries = Object.entries(views);
|
|
5
|
+
const RouteGroupViewBase = ({ group, views, fallbackView, onFallback, }) => {
|
|
6
|
+
const viewEntries = useMemo(() => Object.entries(views), []);
|
|
6
7
|
const openedRouteEntry = viewEntries.find(([routeName]) => {
|
|
7
8
|
// @ts-expect-error Object.entries is not accept types for arrays
|
|
8
9
|
const route = group.routes[routeName];
|
|
@@ -14,8 +15,13 @@ const RouteGroupViewBase = ({ group, views, notOpenedContent, }) => {
|
|
|
14
15
|
? // @ts-expect-error Object.entries is not accept types for arrays
|
|
15
16
|
group.routes[openedRouteName]
|
|
16
17
|
: undefined;
|
|
18
|
+
useLayoutEffect(() => {
|
|
19
|
+
if (!openedRoute) {
|
|
20
|
+
onFallback?.();
|
|
21
|
+
}
|
|
22
|
+
}, [openedRoute]);
|
|
17
23
|
if (!openedRoute) {
|
|
18
|
-
return
|
|
24
|
+
return fallbackView ?? null;
|
|
19
25
|
}
|
|
20
26
|
const openedRouteViewProps = openedRoutePropsOrView &&
|
|
21
27
|
(typeof openedRoutePropsOrView === 'function' ||
|
|
@@ -23,12 +29,12 @@ const RouteGroupViewBase = ({ group, views, notOpenedContent, }) => {
|
|
|
23
29
|
'$$typeof' in openedRoutePropsOrView)
|
|
24
30
|
? {
|
|
25
31
|
view: openedRoutePropsOrView,
|
|
26
|
-
|
|
32
|
+
fallbackView,
|
|
27
33
|
}
|
|
28
34
|
: {
|
|
29
35
|
...openedRoutePropsOrView,
|
|
30
|
-
|
|
36
|
+
fallbackView: openedRoutePropsOrView?.fallbackView ?? fallbackView,
|
|
31
37
|
};
|
|
32
38
|
return _jsx(RouteView, { route: openedRoute, ...openedRouteViewProps });
|
|
33
39
|
};
|
|
34
|
-
export const RouteGroupView =
|
|
40
|
+
export const RouteGroupView = observer(RouteGroupViewBase);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { AnyRouteEntity } from '../../core/index.js';
|
|
3
|
+
import { RouteViewComponent, RouteViewConfigProps } from './route-view.js';
|
|
4
|
+
export type MappedRouteView<TRouteEntity extends AnyRouteEntity> = Omit<RouteViewConfigProps<TRouteEntity>, 'route'> | RouteViewComponent<TRouteEntity>;
|
|
5
|
+
type RouteViewMapArrayType = [
|
|
6
|
+
AnyRouteEntity,
|
|
7
|
+
MappedRouteView<AnyRouteEntity>
|
|
8
|
+
][];
|
|
9
|
+
export type RouteViewMapType = RouteViewMapArrayType;
|
|
10
|
+
export interface RouteViewMapProps<TMap extends RouteViewMapType> {
|
|
11
|
+
map: TMap;
|
|
12
|
+
onFallback?: VoidFunction;
|
|
13
|
+
fallbackView?: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
export declare const RouteViewMap: (<TMap extends RouteViewMapType>({ map, onFallback, fallbackView, }: RouteViewMapProps<TMap>) => string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null) & {
|
|
16
|
+
displayName: string;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=route-view-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-view-map.d.ts","sourceRoot":"","sources":["../../../src/react/components/route-view-map.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA4B,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAEL,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,eAAe,CAAC,YAAY,SAAS,cAAc,IAE3D,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,GAEjD,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAErC,KAAK,qBAAqB,GAAG;IAC3B,cAAc;IACd,eAAe,CAAC,cAAc,CAAC;CAChC,EAAE,CAAC;AAGJ,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAErD,MAAM,WAAW,iBAAiB,CAAC,IAAI,SAAS,gBAAgB;IAC9D,GAAG,EAAE,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AA2CD,eAAO,MAAM,YAAY,IAzCC,IAAI,SAAS,gBAAgB,sCAIpD,iBAAiB,CAAC,IAAI,CAAC;;CAqC4B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { observer } from 'mobx-react-lite';
|
|
3
|
+
import { useLayoutEffect, useMemo } from 'react';
|
|
4
|
+
import { RouteView, } from './route-view.js';
|
|
5
|
+
const RouteViewMapBase = ({ map, onFallback, fallbackView, }) => {
|
|
6
|
+
const viewEntries = useMemo(() => Object.entries(map), []);
|
|
7
|
+
const openedRouteEntry = viewEntries.find(([, data]) => {
|
|
8
|
+
const route = data[0];
|
|
9
|
+
return route.isOpened;
|
|
10
|
+
});
|
|
11
|
+
const openedRoute = openedRouteEntry?.[1]?.[0];
|
|
12
|
+
const openedRoutePropsOrView = openedRouteEntry?.[1]?.[1];
|
|
13
|
+
useLayoutEffect(() => {
|
|
14
|
+
if (!openedRoute) {
|
|
15
|
+
onFallback?.();
|
|
16
|
+
}
|
|
17
|
+
}, [openedRoute]);
|
|
18
|
+
if (!openedRoute) {
|
|
19
|
+
return fallbackView ?? null;
|
|
20
|
+
}
|
|
21
|
+
const openedRouteViewProps = openedRoutePropsOrView &&
|
|
22
|
+
(typeof openedRoutePropsOrView === 'function' ||
|
|
23
|
+
'contextTypes' in openedRoutePropsOrView ||
|
|
24
|
+
'$$typeof' in openedRoutePropsOrView)
|
|
25
|
+
? {
|
|
26
|
+
view: openedRoutePropsOrView,
|
|
27
|
+
fallbackView,
|
|
28
|
+
}
|
|
29
|
+
: {
|
|
30
|
+
...openedRoutePropsOrView,
|
|
31
|
+
fallbackView: openedRoutePropsOrView?.fallbackView ?? fallbackView,
|
|
32
|
+
};
|
|
33
|
+
return _jsx(RouteView, { route: openedRoute, ...openedRouteViewProps });
|
|
34
|
+
};
|
|
35
|
+
export const RouteViewMap = observer(RouteViewMapBase);
|
|
@@ -6,7 +6,7 @@ export interface RouteViewConfigProps<TRouteEntity extends AnyRouteEntity> {
|
|
|
6
6
|
view?: RouteViewComponent<TRouteEntity>;
|
|
7
7
|
lazyView?: () => Promise<ComponentType<RouteViewProps<TRouteEntity>>>;
|
|
8
8
|
loader?: ComponentType;
|
|
9
|
-
|
|
9
|
+
fallbackView?: ReactNode;
|
|
10
10
|
children?: ReactNode;
|
|
11
11
|
}
|
|
12
12
|
export type RouteViewProps<TRouteEntity extends AnyRouteEntity> = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-view.d.ts","sourceRoot":"","sources":["../../../src/react/components/route-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAU,MAAM,OAAO,CAAC;AAGzD,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,kBAAkB,CAAC,YAAY,SAAS,cAAc,IAChE,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;AAE9C,MAAM,WAAW,oBAAoB,CAAC,YAAY,SAAS,cAAc;IACvE,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"route-view.d.ts","sourceRoot":"","sources":["../../../src/react/components/route-view.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAU,MAAM,OAAO,CAAC;AAGzD,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,kBAAkB,CAAC,YAAY,SAAS,cAAc,IAChE,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;AAE9C,MAAM,WAAW,oBAAoB,CAAC,YAAY,SAAS,cAAc;IACvE,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,CAAC,YAAY,SAAS,cAAc,IAAI;IAChE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,SAAS,QAAQ,GACjC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,GACjD,YAAY,SAAS,eAAe,GAClC,YAAY,CAAC,QAAQ,CAAC,GACtB,KAAK,CAAC;CACb,CAAC;AAEF,iBAAS,aAAa,CAAC,YAAY,SAAS,cAAc,EACxD,KAAK,EAAE,oBAAoB,CAAC,YAAY,CAAC,gHA0B1C;AAED,eAAO,MAAM,SAAS;;CAA0B,CAAC"}
|
|
@@ -6,7 +6,7 @@ function RouteViewBase(props) {
|
|
|
6
6
|
const lazyViewComponentRef = useRef();
|
|
7
7
|
let Component;
|
|
8
8
|
if (!props.route.isOpened) {
|
|
9
|
-
return props.
|
|
9
|
+
return props.fallbackView ?? null;
|
|
10
10
|
}
|
|
11
11
|
if (props.lazyView) {
|
|
12
12
|
lazyViewComponentRef.current = loadable(props.lazyView, {
|