mobx-route 0.0.26 → 0.0.28

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.
@@ -4,6 +4,7 @@ export declare class RouteGroup<TRoutesCollection extends RoutesCollection> {
4
4
  routes: TRoutesCollection;
5
5
  constructor(routes: TRoutesCollection);
6
6
  get isOpened(): boolean;
7
+ get indexRoute(): import("./route-group.types.js").AnyRouteEntity | undefined;
7
8
  open(params?: any, navigateParams?: RouteNavigateParams): void;
8
9
  }
9
10
  //# sourceMappingURL=route-group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route-group.d.ts","sourceRoot":"","sources":["../../../src/core/route-group/route-group.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,qBAAa,UAAU,CAAC,iBAAiB,SAAS,gBAAgB;IAC7C,MAAM,EAAE,iBAAiB;gBAAzB,MAAM,EAAE,iBAAiB;IAM5C,IAAI,QAAQ,IAAI,OAAO,CAGtB;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,mBAAmB;CAqBxD"}
1
+ {"version":3,"file":"route-group.d.ts","sourceRoot":"","sources":["../../../src/core/route-group/route-group.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,qBAAa,UAAU,CAAC,iBAAiB,SAAS,gBAAgB;IAC7C,MAAM,EAAE,iBAAiB;gBAAzB,MAAM,EAAE,iBAAiB;IAO5C,IAAI,QAAQ,IAAI,OAAO,CAGtB;IAED,IAAI,UAAU,gEAIb;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,mBAAmB;CAuBxD"}
@@ -4,6 +4,7 @@ export class RouteGroup {
4
4
  constructor(routes) {
5
5
  this.routes = routes;
6
6
  computed.struct(this, 'isMatches');
7
+ computed.struct(this, 'indexRoute');
7
8
  observable.shallow(this, 'routes');
8
9
  makeObservable(this);
9
10
  }
@@ -11,17 +12,20 @@ export class RouteGroup {
11
12
  const routes = Object.values(this.routes);
12
13
  return routes.some((route) => route.isOpened);
13
14
  }
15
+ get indexRoute() {
16
+ return Object.values(this.routes).find((route) => 'isIndex' in route && route.isIndex);
17
+ }
14
18
  open(params, navigateParams) {
15
19
  let lastGroupRoute;
20
+ if (this.indexRoute) {
21
+ this.indexRoute.open(params, navigateParams);
22
+ return;
23
+ }
16
24
  for (const routeName in this.routes) {
17
25
  const route = this.routes[routeName];
18
26
  if (route instanceof RouteGroup) {
19
27
  lastGroupRoute = route;
20
28
  }
21
- else if ('isIndex' in route && route.isIndex) {
22
- route.open(params, navigateParams);
23
- return;
24
- }
25
29
  }
26
30
  if (lastGroupRoute) {
27
31
  lastGroupRoute.open(params, navigateParams);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx-route",
3
- "version": "0.0.26",
3
+ "version": "0.0.28",
4
4
  "keywords": [
5
5
  "mobx",
6
6
  "react",
@@ -136,6 +136,11 @@
136
136
  "default": "./react/components/link.js",
137
137
  "types": "./react/components/link.d.ts"
138
138
  },
139
+ "./react/components/route-group-view": {
140
+ "import": "./react/components/route-group-view.js",
141
+ "default": "./react/components/route-group-view.js",
142
+ "types": "./react/components/route-group-view.d.ts"
143
+ },
139
144
  "./react/components/route-view": {
140
145
  "import": "./react/components/route-view.js",
141
146
  "default": "./react/components/route-view.js",
@@ -1,3 +1,4 @@
1
1
  export * from './link.js';
2
2
  export * from './route-view.js';
3
+ export * from './route-group-view.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
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,2 +1,3 @@
1
1
  export * from './link.js';
2
2
  export * from './route-view.js';
3
+ export * from './route-group-view.js';
@@ -0,0 +1,11 @@
1
+ import { AnyRouteGroup } from '../../core/index.js';
2
+ import { RouteViewProps } from './route-view.js';
3
+ export type RouteViewCollectionProps<TRouteGroup extends AnyRouteGroup> = {
4
+ [K in keyof TRouteGroup['routes']]: Omit<RouteViewProps<TRouteGroup['routes'][K]>, 'route'> | Exclude<RouteViewProps<TRouteGroup['routes'][K]>['view'], undefined>;
5
+ };
6
+ export interface RouteGroupViewProps<TRouteGroup extends AnyRouteGroup> {
7
+ group: TRouteGroup;
8
+ views: Partial<RouteViewCollectionProps<TRouteGroup>>;
9
+ }
10
+ export declare const RouteGroupView: import("react").MemoExoticComponent<(<TRouteGroup extends AnyRouteGroup>({ group, views, }: RouteGroupViewProps<TRouteGroup>) => import("react/jsx-runtime").JSX.Element)>;
11
+ //# sourceMappingURL=route-group-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-group-view.d.ts","sourceRoot":"","sources":["../../../src/react/components/route-group-view.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAa,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,MAAM,wBAAwB,CAAC,WAAW,SAAS,aAAa,IAAI;KACvE,CAAC,IAAI,MAAM,WAAW,CAAC,QAAQ,CAAC,GAC7B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GACvD,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CACzE,CAAC;AAEF,MAAM,WAAW,mBAAmB,CAAC,WAAW,SAAS,aAAa;IACpE,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC;CACvD;AAED,eAAO,MAAM,cAAc,wCACxB,WAAW,SAAS,aAAa,qBAG/B,mBAAmB,CAAC,WAAW,CAAC,8CAmBpC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { memo } from 'react';
3
+ import { RouteView } from './route-view.js';
4
+ export const RouteGroupView = memo(({ group, views, }) => {
5
+ const viewEntries = Object.entries(views);
6
+ return (_jsx(_Fragment, { children: viewEntries.map(([routeName, props]) => {
7
+ const route = group.routes[routeName];
8
+ const viewProps = typeof props === 'function'
9
+ ? {
10
+ view: props,
11
+ }
12
+ : props;
13
+ return _jsx(RouteView, { route: route, ...viewProps }, routeName);
14
+ }) }));
15
+ }, () => true);
@@ -1,8 +1,7 @@
1
1
  import { ComponentType, ReactNode } from 'react';
2
- import type { AnyRoute, AnyRouteGroup, VirtualRoute } from '../../core/index.js';
3
- type RouteKind = AnyRouteGroup | AnyRoute | VirtualRoute;
4
- export interface RouteViewProps<TRouteKind extends RouteKind> {
5
- route: TRouteKind;
2
+ import type { AnyRouteEntity } from '../../core/index.js';
3
+ export interface RouteViewProps<TRouteEntity extends AnyRouteEntity> {
4
+ route: TRouteEntity;
6
5
  view?: ComponentType<{
7
6
  children?: ReactNode;
8
7
  }>;
@@ -13,7 +12,7 @@ export interface RouteViewProps<TRouteKind extends RouteKind> {
13
12
  notOpenedContent?: ReactNode;
14
13
  children?: ReactNode;
15
14
  }
16
- declare function RouteViewBase<TRouteKind extends RouteKind>(props: RouteViewProps<TRouteKind>): string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
15
+ declare function RouteViewBase<TRouteEntity extends AnyRouteEntity>(props: RouteViewProps<TRouteEntity>): string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
17
16
  export declare const RouteView: typeof RouteViewBase & {
18
17
  displayName: string;
19
18
  };
@@ -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,aAAa,EACb,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,KAAK,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,cAAc,CAAC,UAAU,SAAS,SAAS;IAC1D,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,iBAAS,aAAa,CAAC,UAAU,SAAS,SAAS,EACjD,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,gHAoBlC;AAED,eAAO,MAAM,SAAS;;CAA0B,CAAC"}
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,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,cAAc,CAAC,YAAY,SAAS,cAAc;IACjE,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,iBAAS,aAAa,CAAC,YAAY,SAAS,cAAc,EACxD,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,gHAoBpC;AAED,eAAO,MAAM,SAAS;;CAA0B,CAAC"}