@vlian/router 1.0.11 → 1.0.15

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.
@@ -1,4 +1,4 @@
1
- import { DOMRouterOpts } from 'react-router-dom';
1
+ import { DOMRouterOpts, type DataRouter, type MemoryRouterOpts } from 'react-router-dom';
2
2
  import { navigator } from "../provider";
3
3
  import React from 'react';
4
4
  import type { RouteItem } from '../types';
@@ -7,17 +7,28 @@ declare global {
7
7
  $router: ReturnType<typeof navigator>;
8
8
  }
9
9
  }
10
+ export type RouterMode = 'browser' | 'hash' | 'memory';
11
+ /**
12
+ * RouterProvider 通过 ref 暴露的接口
13
+ */
14
+ export interface RouterProviderRef {
15
+ /**
16
+ * 获取路由实例
17
+ */
18
+ getRouter: () => DataRouter | undefined;
19
+ }
10
20
  export type RouterProviderProps = {
11
21
  fetchRoutes: () => Promise<RouteItem[]>;
12
22
  imports: Record<string, any>;
13
23
  rootRoutes?: string | undefined;
14
24
  staticRoutes?: RouteItem[];
15
- options?: DOMRouterOpts;
25
+ options?: DOMRouterOpts | MemoryRouterOpts;
26
+ routerMode?: RouterMode;
16
27
  isSubApp?: boolean;
17
28
  loadingRender?: React.ReactNode;
18
29
  loadingSize?: string;
19
30
  loadingColor?: string;
20
31
  loadingOpacity?: number;
21
32
  };
22
- export declare const RouterProvider: React.FC<RouterProviderProps>;
33
+ export declare const RouterProvider: React.ForwardRefExoticComponent<RouterProviderProps & React.RefAttributes<RouterProviderRef>>;
23
34
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAmE,MAAM,kBAAkB,CAAC;AACjH,OAAO,EAAqB,SAAS,EAAC,MAAM,aAAa,CAAC;AAC1D,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;KACvC;CACF;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,EAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoDvD,CAAA"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,KAAK,UAAU,EAAyF,KAAK,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAC9K,OAAO,EAAqB,SAAS,EAAC,MAAM,aAAa,CAAC;AAC1D,OAAO,KAA6D,MAAM,OAAO,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;KACvC;CACF;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,GAAG,gBAAgB,CAAC;IAC3C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,+FAwEzB,CAAC"}
@@ -44,13 +44,13 @@ function _unsupported_iterable_to_array(o, minLen) {
44
44
  if (n === "Map" || n === "Set") return Array.from(n);
45
45
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
46
46
  }
47
- import { RouterProvider as Provider, createBrowserRouter } from 'react-router-dom';
47
+ import { RouterProvider as Provider, createBrowserRouter, createHashRouter, createMemoryRouter } from 'react-router-dom';
48
48
  import { useRouterTransform, navigator } from "../provider";
49
- import React, { useState, useEffect } from 'react';
49
+ import React, { useState, useEffect, forwardRef, useImperativeHandle } from 'react';
50
50
  import { staticRoutes as defaultStaticRoutes } from './routes';
51
51
  import { useSquareRotate2Styles } from '../styles/square-rotate';
52
- export var RouterProvider = function(param) {
53
- var fetchRoutes = param.fetchRoutes, imports = param.imports, _param_rootRoutes = param.rootRoutes, rootRoutes = _param_rootRoutes === void 0 ? '/' : _param_rootRoutes, _param_staticRoutes = param.staticRoutes, staticRoutes = _param_staticRoutes === void 0 ? defaultStaticRoutes : _param_staticRoutes, options = param.options, _param_isSubApp = param.isSubApp, isSubApp = _param_isSubApp === void 0 ? false : _param_isSubApp, loadingRender = param.loadingRender, _param_loadingSize = param.loadingSize, loadingSize = _param_loadingSize === void 0 ? '24px' : _param_loadingSize, _param_loadingColor = param.loadingColor, loadingColor = _param_loadingColor === void 0 ? 'currentColor' : _param_loadingColor, _param_loadingOpacity = param.loadingOpacity, loadingOpacity = _param_loadingOpacity === void 0 ? 0.25 : _param_loadingOpacity;
52
+ export var RouterProvider = /*#__PURE__*/ forwardRef(function(param, ref) {
53
+ var fetchRoutes = param.fetchRoutes, imports = param.imports, _param_rootRoutes = param.rootRoutes, rootRoutes = _param_rootRoutes === void 0 ? '/' : _param_rootRoutes, _param_staticRoutes = param.staticRoutes, staticRoutes = _param_staticRoutes === void 0 ? defaultStaticRoutes : _param_staticRoutes, options = param.options, _param_routerMode = param.routerMode, routerMode = _param_routerMode === void 0 ? 'browser' : _param_routerMode, _param_isSubApp = param.isSubApp, isSubApp = _param_isSubApp === void 0 ? false : _param_isSubApp, loadingRender = param.loadingRender, _param_loadingSize = param.loadingSize, loadingSize = _param_loadingSize === void 0 ? '24px' : _param_loadingSize, _param_loadingColor = param.loadingColor, loadingColor = _param_loadingColor === void 0 ? 'currentColor' : _param_loadingColor, _param_loadingOpacity = param.loadingOpacity, loadingOpacity = _param_loadingOpacity === void 0 ? 0.25 : _param_loadingOpacity;
54
54
  var _useState = _sliced_to_array(useState(), 2), dataRouter = _useState[0], setDataRouter = _useState[1];
55
55
  var styles = useSquareRotate2Styles().styles;
56
56
  var routeObject = useRouterTransform({
@@ -64,7 +64,19 @@ export var RouterProvider = function(param) {
64
64
  }).routeObject;
65
65
  useEffect(function() {
66
66
  if (routeObject) {
67
- var router = createBrowserRouter(routeObject, options);
67
+ var router;
68
+ switch(routerMode){
69
+ case 'hash':
70
+ router = createHashRouter(routeObject, options);
71
+ break;
72
+ case 'memory':
73
+ router = createMemoryRouter(routeObject, options);
74
+ break;
75
+ case 'browser':
76
+ default:
77
+ router = createBrowserRouter(routeObject, options);
78
+ break;
79
+ }
68
80
  setDataRouter(router);
69
81
  if (isSubApp) {
70
82
  window.$router = navigator(router);
@@ -72,9 +84,19 @@ export var RouterProvider = function(param) {
72
84
  }
73
85
  }, [
74
86
  routeObject,
75
- imports,
76
- rootRoutes,
77
- staticRoutes
87
+ routerMode,
88
+ options,
89
+ isSubApp
90
+ ]);
91
+ // 通过 ref 暴露路由实例
92
+ useImperativeHandle(ref, function() {
93
+ return {
94
+ getRouter: function() {
95
+ return dataRouter;
96
+ }
97
+ };
98
+ }, [
99
+ dataRouter
78
100
  ]);
79
101
  if (!routeObject || !dataRouter) {
80
102
  return /*#__PURE__*/ React.createElement("div", {
@@ -98,4 +120,5 @@ export var RouterProvider = function(param) {
98
120
  return /*#__PURE__*/ React.createElement(Provider, {
99
121
  router: dataRouter
100
122
  });
101
- };
123
+ });
124
+ RouterProvider.displayName = 'RouterProvider';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vlian/router",
3
- "version": "1.0.11",
3
+ "version": "1.0.15",
4
4
  "description": "基于 React Router 的路由管理包,支持动态路由、权限控制、路由转换等功能",
5
5
  "keywords": [
6
6
  "router",