@tarojs/router 4.0.0-beta.1 → 4.0.0-beta.100

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.
Files changed (43) hide show
  1. package/LICENSE +17 -3
  2. package/dist/api.js +31 -22
  3. package/dist/events/resize.d.ts +1 -1
  4. package/dist/events/resize.js +15 -7
  5. package/dist/events/scroll.d.ts +1 -1
  6. package/dist/events/scroll.js +4 -1
  7. package/dist/history.d.ts +22 -1
  8. package/dist/history.js +20 -8
  9. package/dist/index.cjs.js +793 -339
  10. package/dist/index.d.ts +6 -1
  11. package/dist/index.esm.js +753 -311
  12. package/dist/index.js +52 -4
  13. package/dist/navigationBar.d.ts +2 -0
  14. package/dist/navigationBar.js +44 -0
  15. package/dist/router/index.js +7 -3
  16. package/dist/router/mpa.d.ts +2 -1
  17. package/dist/router/mpa.js +29 -19
  18. package/dist/router/multi-page.d.ts +5 -2
  19. package/dist/router/multi-page.js +27 -43
  20. package/dist/router/navigation-bar.d.ts +36 -0
  21. package/dist/router/navigation-bar.js +252 -0
  22. package/dist/router/page.d.ts +11 -4
  23. package/dist/router/page.js +62 -59
  24. package/dist/router/spa.d.ts +2 -1
  25. package/dist/router/spa.js +81 -43
  26. package/dist/router/stack.d.ts +1 -1
  27. package/dist/router/stack.js +2 -1
  28. package/dist/style.d.ts +6 -1
  29. package/dist/style.js +106 -7
  30. package/dist/tabbar.d.ts +2 -1
  31. package/dist/tabbar.js +4 -3
  32. package/dist/utils/index.d.ts +1 -8
  33. package/dist/utils/index.js +5 -20
  34. package/dist/utils/navigate.d.ts +9 -5
  35. package/dist/utils/navigate.js +24 -37
  36. package/package.json +28 -27
  37. package/types/api.d.ts +5 -0
  38. package/types/component.d.ts +5 -0
  39. package/types/taro.d.ts +8 -0
  40. package/dist/index.cjs.d.ts +0 -22
  41. package/dist/index.cjs.js.map +0 -1
  42. package/dist/index.esm.d.ts +0 -22
  43. package/dist/index.esm.js.map +0 -1
package/dist/tabbar.js CHANGED
@@ -1,8 +1,7 @@
1
- // @ts-nocheck
2
1
  import { defineCustomElementTaroTabbar } from '@tarojs/components/dist/components';
3
2
  import { initTabBarApis } from '@tarojs/taro';
4
- import { history } from './history';
5
- export function initTabbar(config) {
3
+
4
+ function initTabbar(config, history) {
6
5
  if (config.tabBar == null || config.tabBar.custom) {
7
6
  return;
8
7
  }
@@ -29,3 +28,5 @@ export function initTabbar(config) {
29
28
  container === null || container === void 0 ? void 0 : container.appendChild(tabbar);
30
29
  initTabBarApis(config);
31
30
  }
31
+
32
+ export { initTabbar };
@@ -1,10 +1,3 @@
1
- export declare const addLeadingSlash: (url?: string) => string;
2
- export declare const hasBasename: (path?: string, prefix?: string) => boolean;
3
- export declare const stripBasename: (path?: string, prefix?: string) => string;
4
- export declare const stripTrailing: (str?: string) => string;
5
- export declare const stripSuffix: (path?: string, suffix?: string) => string;
6
- export declare const getHomePage: (path?: string, basename?: string, customRoutes?: Record<string, string | string[]>, entryPagePath?: string) => string;
7
- export declare const getCurrentPage: (routerMode?: string, basename?: string) => string;
8
1
  declare class RoutesAlias {
9
2
  conf: Array<string[]>;
10
3
  set(customRoutes?: Record<string, string | string[]>): void;
@@ -14,4 +7,4 @@ declare class RoutesAlias {
14
7
  getAll: (url?: string) => string[];
15
8
  }
16
9
  export declare const routesAlias: RoutesAlias;
17
- export {};
10
+ export * from './navigate';
@@ -1,22 +1,5 @@
1
- // export const removeLeadingSlash = (str = '') => str.replace(/^\.?\//, '')
2
- // export const removeTrailingSearch = (str = '') => str.replace(/\?[\s\S]*$/, '')
3
- export const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);
4
- export const hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\/|\\?|#|$)', 'i').test(path) || path === prefix;
5
- export const stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;
6
- export const stripTrailing = (str = '') => str.replace(/[?#][\s\S]*$/, '');
7
- export const stripSuffix = (path = '', suffix = '') => path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path;
8
- export const getHomePage = (path = '', basename = '', customRoutes = {}, entryPagePath = '') => {
9
- var _a;
10
- const routePath = addLeadingSlash(stripBasename(path, basename));
11
- const alias = ((_a = Object.entries(customRoutes).find(([key]) => key === routePath)) === null || _a === void 0 ? void 0 : _a[1]) || routePath;
12
- return entryPagePath || (typeof alias === 'string' ? alias : alias[0]) || basename;
13
- };
14
- export const getCurrentPage = (routerMode = 'hash', basename = '/') => {
15
- const pagePath = routerMode === 'hash'
16
- ? location.hash.slice(1).split('?')[0]
17
- : location.pathname;
18
- return addLeadingSlash(stripBasename(pagePath, basename));
19
- };
1
+ import { addLeadingSlash } from '@tarojs/runtime';
2
+
20
3
  class RoutesAlias {
21
4
  constructor() {
22
5
  this.conf = [];
@@ -56,4 +39,6 @@ class RoutesAlias {
56
39
  }
57
40
  }
58
41
  }
59
- export const routesAlias = new RoutesAlias();
42
+ const routesAlias = new RoutesAlias();
43
+
44
+ export { routesAlias };
@@ -1,5 +1,9 @@
1
- import MobileDetect from 'mobile-detect';
2
- export declare function getMobileDetect(): MobileDetect;
3
- export declare function setTitle(title: string): Promise<string>;
4
- export declare function isWeixin(): boolean;
5
- export declare function isDingTalk(): boolean;
1
+ export declare const isWeixin: () => boolean;
2
+ export declare const isDingTalk: () => boolean;
3
+ export declare function setMpaTitle(title: string): void;
4
+ export declare function setTitle(title: string): void;
5
+ export declare function setNavigationBarStyle(option: {
6
+ backgroundColor: string;
7
+ frontColor: string;
8
+ }): void;
9
+ export declare function setNavigationBarLoading(loading: boolean): void;
@@ -1,44 +1,31 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import MobileDetect from 'mobile-detect';
11
- let md;
1
+ import { eventCenter } from '@tarojs/runtime';
2
+
3
+ const isWeixin = () => !!navigator.userAgent.match(/\bMicroMessenger\b/ig);
4
+ const isDingTalk = () => !!navigator.userAgent.match(/\bDingTalk\b/ig);
12
5
  let preTitle = document.title;
13
6
  let isLoadDdEntry = false;
14
- export function getMobileDetect() {
15
- if (!md) {
16
- md = new MobileDetect(navigator.userAgent);
7
+ function setMpaTitle(title) {
8
+ if (preTitle === title)
9
+ return;
10
+ document.title = title;
11
+ preTitle = title;
12
+ if (process.env.SUPPORT_DINGTALK_NAVIGATE !== 'disabled' && isDingTalk()) {
13
+ if (!isLoadDdEntry) {
14
+ isLoadDdEntry = true;
15
+ require('dingtalk-jsapi/platform');
16
+ }
17
+ const setDingTitle = require('dingtalk-jsapi/api/biz/navigation/setTitle').default;
18
+ setDingTitle({ title });
17
19
  }
18
- return md;
19
20
  }
20
- export function setTitle(title) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- if (preTitle === title)
23
- return title;
24
- document.title = title;
25
- preTitle = title;
26
- if (process.env.SUPPORT_DINGTALK_NAVIGATE !== 'disabled' && isDingTalk()) {
27
- if (!isLoadDdEntry) {
28
- isLoadDdEntry = true;
29
- require('dingtalk-jsapi/platform');
30
- }
31
- const setDingTitle = require('dingtalk-jsapi/api/biz/navigation/setTitle').default;
32
- setDingTitle({ title });
33
- }
34
- return title;
35
- });
21
+ function setTitle(title) {
22
+ eventCenter.trigger('__taroH5SetNavigationBarTitle', title);
36
23
  }
37
- export function isWeixin() {
38
- const md = getMobileDetect();
39
- return md.match(/MicroMessenger/ig);
24
+ function setNavigationBarStyle(option) {
25
+ eventCenter.trigger('__taroH5setNavigationBarColor', option);
40
26
  }
41
- export function isDingTalk() {
42
- const md = getMobileDetect();
43
- return md.match(/DingTalk/ig);
27
+ function setNavigationBarLoading(loading) {
28
+ eventCenter.trigger('__taroH5setNavigationBarLoading', loading);
44
29
  }
30
+
31
+ export { isDingTalk, isWeixin, setMpaTitle, setNavigationBarLoading, setNavigationBarStyle, setTitle };
package/package.json CHANGED
@@ -1,17 +1,20 @@
1
1
  {
2
2
  "name": "@tarojs/router",
3
- "version": "4.0.0-beta.1",
3
+ "version": "4.0.0-beta.100",
4
4
  "description": "Taro-router",
5
+ "author": "O2Team",
6
+ "license": "MIT",
5
7
  "browser": "dist/index.js",
6
8
  "main:h5": "dist/index.esm.js",
7
9
  "main": "dist/index.js",
8
- "module": "dist/index.esm.js",
9
- "typings": "dist/index.d.ts",
10
+ "module": "dist/index.cjs.js",
11
+ "typings": "dist/index.esm.d.ts",
10
12
  "files": [
11
13
  "dist",
12
14
  "types",
13
15
  "index.js"
14
16
  ],
17
+ "sideEffects": [],
15
18
  "repository": {
16
19
  "type": "git",
17
20
  "url": "git+https://github.com/NervJS/taro.git"
@@ -19,36 +22,34 @@
19
22
  "keywords": [
20
23
  "router"
21
24
  ],
22
- "author": "O2Team",
23
- "license": "MIT",
25
+ "engines": {
26
+ "node": ">= 18"
27
+ },
24
28
  "dependencies": {
25
29
  "dingtalk-jsapi": "~2.15.2",
26
- "history": "^5.1.0",
30
+ "history": "^5.3.0",
27
31
  "mobile-detect": "^1.4.2",
28
- "query-string": "^7.1.1",
29
- "universal-router": "^8.3.0",
30
- "@tarojs/taro": "4.0.0-beta.1",
31
- "@tarojs/runtime": "4.0.0-beta.1"
32
+ "query-string": "^9.0.0",
33
+ "tslib": "^2.6.2",
34
+ "universal-router": "^9.2.0"
32
35
  },
33
36
  "devDependencies": {
34
- "@rollup/plugin-commonjs": "^25.0.7",
35
- "@rollup/plugin-node-resolve": "^15.2.3",
36
- "@types/jest": "^29.4.0",
37
- "jest": "^29.3.1",
38
- "jest-cli": "^29.3.1",
39
- "jest-environment-jsdom": "^29.6.4",
40
- "jsdom": "^21.1.0",
41
- "rollup": "^2.79.0",
42
- "rollup-plugin-node-externals": "^5.0.0",
43
- "rollup-plugin-ts": "^3.0.2",
44
- "ts-jest": "^29.0.5",
45
- "typescript": "^4.7.4"
37
+ "@tarojs/components": "4.0.0-beta.100",
38
+ "@tarojs/runtime": "4.0.0-beta.100",
39
+ "@tarojs/taro": "4.0.0-beta.100",
40
+ "@tarojs/shared": "4.0.0-beta.100"
41
+ },
42
+ "peerDependencies": {
43
+ "@tarojs/runtime": "4.0.0-beta.100",
44
+ "@tarojs/taro": "4.0.0-beta.100",
45
+ "@tarojs/shared": "4.0.0-beta.100"
46
46
  },
47
47
  "scripts": {
48
- "build": "rimraf --impl=move-remove ./dist && tsc && rollup -c",
49
- "dev": "tsc -w",
50
- "test": "cross-env NODE_ENV=jest jest",
51
- "test:ci": "cross-env NODE_ENV=jest jest --ci",
52
- "test:dev": "cross-env NODE_ENV=jest jest --watch"
48
+ "prod": "pnpm run build",
49
+ "prebuild": "pnpm run clean",
50
+ "build": "pnpm run rollup --environment NODE_ENV:production",
51
+ "clean": "rimraf --impl=move-remove ./dist",
52
+ "dev": "pnpm run rollup --environment NODE_ENV:development -w",
53
+ "rollup": "rollup --config rollup.config.mts --configPlugin typescript"
53
54
  }
54
55
  }
package/types/api.d.ts CHANGED
@@ -11,3 +11,8 @@ export interface Option extends Base {
11
11
  export interface NavigateBackOption extends Base {
12
12
  delta: number
13
13
  }
14
+
15
+ export interface NavigateOption extends BaseOption {
16
+ url: string
17
+ events?: Record<string, any>
18
+ }
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Note: @tarojs/router 不能依赖 @tarojs/components,
3
+ * 因为 @tarojs/components 依赖 @tarojs/router,
4
+ * 且仅通过 peerDependencies 引用依赖会在 pnpm publish 时抛出错误
5
+ */
1
6
  declare module '@tarojs/components/dist/components' {
2
7
  export function defineCustomElementTaroTabbar() {}
3
8
 
@@ -0,0 +1,8 @@
1
+ import Taro from '@tarojs/taro'
2
+
3
+ declare module '@tarojs/taro' {
4
+ interface TaroStatic {
5
+ initTabBarApis(config: AppConfig): void
6
+ }
7
+ }
8
+
@@ -1,22 +0,0 @@
1
- import Taro from "@tarojs/taro";
2
- import { History } from "history";
3
- import { AppInstance } from "@tarojs/runtime";
4
- import { MpaRouterConfig, SpaRouterConfig } from "../../types/router";
5
- declare function navigateTo(option: Taro.navigateTo.Option): ReturnType<typeof Taro.navigateTo>;
6
- declare function redirectTo(option: Taro.redirectTo.Option): ReturnType<typeof Taro.redirectTo>;
7
- declare function navigateBack(option?: Taro.navigateBack.Option): ReturnType<typeof Taro.navigateBack>;
8
- declare function switchTab(option: Taro.switchTab.Option): ReturnType<typeof Taro.switchTab>;
9
- declare function reLaunch(option: Taro.reLaunch.Option): ReturnType<typeof Taro.reLaunch>;
10
- declare function getCurrentPages(): Taro.Page[];
11
- declare let history: History;
12
- // TODO 支持多路由 (APP 生命周期仅触发一次)
13
- /** Note: 关于多页面应用
14
- * - 需要配置路由映射(根目录跳转、404 页面……)
15
- * - app.onPageNotFound 事件不支持
16
- * - 应用生命周期可能多次触发
17
- * - TabBar 会多次加载
18
- * - 不支持路由动画
19
- */
20
- declare function createMultiRouter(app: AppInstance, config: MpaRouterConfig, framework?: string): Promise<void>;
21
- declare function createRouter(app: AppInstance, config: SpaRouterConfig, framework?: string): () => void;
22
- export { navigateTo, redirectTo, navigateBack, switchTab, reLaunch, getCurrentPages, history, createMultiRouter, createRouter };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/router/index.ts","../src/history.ts","../src/router/stack.ts","../src/utils/index.ts","../src/api.ts","../src/utils/navigate.ts","../src/events/resize.ts","../src/events/scroll.ts","../src/style.ts","../src/tabbar.ts","../src/router/multi-page.ts","../src/router/mpa.ts","../src/router/page.ts","../src/router/spa.ts"],"sourcesContent":["import { prependBasename } from '../history'\n\nimport type { MpaRouterConfig, SpaRouterConfig } from '../../types/router'\n\nexport class RouterConfig {\n private static __config: SpaRouterConfig | MpaRouterConfig\n\n static set config (e: SpaRouterConfig | MpaRouterConfig) {\n this.__config = e\n }\n\n static get config () {\n return this.__config\n }\n\n static get pages () {\n return this.config.pages || []\n }\n\n static get router () {\n return this.config.router || {}\n }\n\n static get mode () {\n return this.router.mode || 'hash'\n }\n\n static get customRoutes () { return this.router.customRoutes || {} }\n\n static isPage (url = '') {\n return this.pages.findIndex(e => prependBasename(e) === url) !== -1\n }\n}\n","import { Action, createBrowserHistory, createHashHistory } from 'history'\n\nimport { RouterConfig } from './router'\n\nimport type { IH5RouterConfig } from '@tarojs/taro/types/compile'\nimport type { Blocker, BrowserHistoryOptions, History, Listener, Location, Path, To } from 'history'\nimport type { StateEvent } from '../types/history'\n\nexport let history: History\n\nlet basename = '/'\n\nclass MpaHistory implements History {\n action: Action\n get location (): Location {\n return {\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash,\n key: `${window.history.length}`,\n state: window.history.state\n }\n }\n\n createHref (_to: To): string {\n throw new Error('Method not implemented.')\n }\n\n parseUrl (to: Partial<Path>) {\n let url = to.pathname || ''\n if (RouterConfig.isPage(url)) {\n url += '.html'\n }\n if (to.search) {\n url += `?${to.search}`\n }\n if (to.hash) {\n url += `#${to.hash}`\n }\n return url\n }\n\n push (to: Partial<Path>, _state: Record<string, unknown> = {}): void {\n window.location.assign(this.parseUrl(to))\n // this.pushState(_state, '', this.parseUrl(to))\n }\n\n replace (to: Partial<Path>, _state: Record<string, unknown> = {}): void {\n window.location.replace(this.parseUrl(to))\n // this.replaceState(_state, '', this.parseUrl(to))\n }\n\n go (delta: number): void {\n window.history.go(delta)\n }\n\n back = window.history.back\n\n forward = window.history.forward\n\n listen (listener: Listener): () => void {\n function callback (e: StateEvent) {\n if (e.action === 'pushState') {\n listener({ action: Action.Push, location: this.location })\n } else if (e.action === 'replaceState') {\n listener({ action: Action.Replace, location: this.location })\n } else {\n // NOTE: 这里包括 back、forward、go 三种可能,并非是 POP 事件\n listener({ action: Action.Pop, location: this.location })\n }\n }\n window.addEventListener('popstate', callback)\n return () => {\n window.removeEventListener('popstate', callback)\n }\n }\n\n block (_blocker: Blocker): () => void {\n throw new Error('Method not implemented.')\n }\n\n pushState: globalThis.History['pushState'] = this.eventState('pushState')\n replaceState: globalThis.History['replaceState'] = this.eventState('replaceState')\n\n eventState (action: Required<StateEvent>['action']) {\n return (data: any, unused: string, url?: string | URL | null) => {\n const wrapper = window.history[action](data, unused, url)\n const evt: StateEvent = new Event(action)\n\n evt.action = action\n evt.state = data\n evt.unused = unused\n evt.url = url\n window.dispatchEvent(evt)\n return wrapper\n }\n }\n}\n\nexport function setHistoryMode (mode?: IH5RouterConfig['mode'], base = '/') {\n const options: BrowserHistoryOptions = {\n window\n }\n basename = base\n\n if (mode === 'browser') {\n history = createBrowserHistory(options)\n } else if (mode === 'multi') {\n history = new MpaHistory()\n } else {\n // default is hash\n history = createHashHistory(options)\n }\n}\n\nexport function prependBasename (url = '') {\n return basename.replace(/\\/$/, '') + '/' + url.replace(/^\\//, '')\n}\n","import { PageInstance } from '@tarojs/runtime'\n\nclass Stacks {\n stacks: PageInstance[] = []\n\n backDelta = 0\n tabs = {}\n methodName = ''\n\n set delta (delta: number) {\n if (delta > 0) {\n this.backDelta = delta\n } else if (this.backDelta > 0) {\n --this.backDelta\n } else {\n this.backDelta = 0\n }\n }\n\n get delta () {\n return this.backDelta\n }\n\n set method (methodName: string) {\n this.methodName = methodName\n }\n\n get method () {\n return this.methodName\n }\n\n get length () {\n return this.stacks.length\n }\n\n get last () {\n return this.stacks[this.length - 1]\n }\n\n get () {\n return this.stacks\n }\n\n getItem (index: number) {\n return this.stacks[index]\n }\n\n getLastIndex (pathname: string, stateWith = 1) {\n const list = [...this.stacks].reverse()\n return list.findIndex((page, i) => i >= stateWith && page.path?.replace(/\\?.*/g, '') === pathname)\n }\n\n getDelta (pathname: string) {\n if (this.backDelta >= 1) {\n return this.backDelta\n }\n const index = this.getLastIndex(pathname)\n // NOTE: 此处为了修复浏览器后退多级页面,在大量重复路由状况下可能出现判断错误的情况 (增强判断能力只能考虑在 query 中新增参数来判断,暂时搁置)\n return index > 0 ? index : 1\n }\n\n getPrevIndex (pathname: string, stateWith = 1) {\n const lastIndex = this.getLastIndex(pathname, stateWith)\n if (lastIndex < 0) {\n return -1\n }\n return this.length - 1 - lastIndex\n }\n\n pop () {\n return this.stacks.pop()\n }\n\n push (page: PageInstance) {\n return this.stacks.push(page)\n }\n\n getTabs () {\n return this.tabs\n }\n\n pushTab (path: string) {\n this.tabs[path] = this.last\n this.pop()\n }\n\n popTab (path: string) {\n this.push(this.tabs[path])\n delete this.tabs[path]\n }\n\n removeTab (path: string) {\n delete this.tabs[path]\n }\n}\n\nconst stacks = new Stacks()\n\nexport default stacks\n","// export const removeLeadingSlash = (str = '') => str.replace(/^\\.?\\//, '')\n// export const removeTrailingSearch = (str = '') => str.replace(/\\?[\\s\\S]*$/, '')\n\nexport const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url)\n\nexport const hasBasename = (path = '', prefix = '') =>\n new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path) || path === prefix\n\nexport const stripBasename = (path = '', prefix = '') =>\n hasBasename(path, prefix) ? path.substring(prefix.length) : path\n\nexport const stripTrailing = (str = '') => str.replace(/[?#][\\s\\S]*$/, '')\n\nexport const stripSuffix = (path = '', suffix = '') =>\n path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path\n\nexport const getHomePage = (path = '', basename = '', customRoutes: Record<string, string | string[]> = {}, entryPagePath = '') => {\n const routePath = addLeadingSlash(stripBasename(path, basename))\n const alias = Object.entries(customRoutes).find(\n ([key]) => key === routePath\n )?.[1] || routePath\n return entryPagePath || (typeof alias === 'string' ? alias : alias[0]) || basename\n}\n\nexport const getCurrentPage = (routerMode = 'hash', basename = '/') => {\n const pagePath = routerMode === 'hash'\n ? location.hash.slice(1).split('?')[0]\n : location.pathname\n return addLeadingSlash(stripBasename(pagePath, basename))\n}\n\nclass RoutesAlias {\n conf: Array<string[]> = []\n\n set (customRoutes: Record<string, string | string[]> = {}) {\n for (let key in customRoutes) {\n const path = customRoutes[key]\n key = addLeadingSlash(key)\n if (typeof path === 'string') {\n this.conf.push([key, addLeadingSlash(path)])\n } else if (path?.length > 0) {\n this.conf.push(...path.map(p => [key, addLeadingSlash(p)]))\n }\n }\n }\n\n getConfig = (url = '') => {\n const customRoute = this.conf.filter((arr) => {\n return arr.includes(url)\n })\n return customRoute[0]\n }\n\n getOrigin = (url = '') => {\n return this.getConfig(url)?.[0] || url\n }\n\n getAlias = (url = '') => {\n return this.getConfig(url)?.[1] || url\n }\n\n getAll = (url = '') => {\n return this.conf\n .filter((arr) => arr.includes(url))\n .reduceRight((p, a) => {\n p.unshift(a[1])\n return p\n }, [])\n }\n}\n\nexport const routesAlias = new RoutesAlias()\n","import Taro from '@tarojs/taro'\nimport { parsePath } from 'history'\n\nimport { history, prependBasename } from './history'\nimport { RouterConfig } from './router'\nimport stacks from './router/stack'\nimport { addLeadingSlash, routesAlias } from './utils'\n\nimport type { NavigateBackOption, Option } from '../types/api'\n\ntype MethodName = 'navigateTo' | 'navigateBack' | 'switchTab' | 'redirectTo' | 'reLaunch'\n\nfunction processNavigateUrl (option: Option) {\n const pathPieces = parsePath(option.url)\n\n // 处理相对路径\n if (pathPieces.pathname?.includes('./')) {\n const parts = routesAlias.getOrigin(history.location.pathname).split('/')\n parts.pop()\n pathPieces.pathname.split('/').forEach((item) => {\n if (item === '.') {\n return\n }\n item === '..' ? parts.pop() : parts.push(item)\n })\n pathPieces.pathname = parts.join('/')\n }\n\n // 处理自定义路由\n pathPieces.pathname = routesAlias.getAlias(addLeadingSlash(pathPieces.pathname))\n\n // 处理 basename\n pathPieces.pathname = prependBasename(pathPieces.pathname)\n\n // hack fix history v5 bug: https://github.com/remix-run/history/issues/814\n if (!pathPieces.search) pathPieces.search = ''\n\n return pathPieces\n}\n\nasync function navigate (option: Option | NavigateBackOption, method: MethodName) {\n return new Promise<TaroGeneral.CallbackResult>((resolve, reject) => {\n stacks.method = method\n const { success, complete, fail } = option\n const unListen = history.listen(() => {\n const res = { errMsg: `${method}:ok` }\n success?.(res)\n complete?.(res)\n resolve(res)\n unListen()\n })\n\n try {\n if ('url' in option) {\n const pathPieces = processNavigateUrl(option)\n const state = { timestamp: Date.now() }\n if (method === 'navigateTo') {\n history.push(pathPieces, state)\n } else if (method === 'redirectTo' || method === 'switchTab') {\n history.replace(pathPieces, state)\n } else if (method === 'reLaunch') {\n stacks.delta = stacks.length\n history.replace(pathPieces, state)\n }\n } else if (method === 'navigateBack') {\n stacks.delta = option.delta\n if (stacks.length > option.delta) {\n history.go(-option.delta)\n } else {\n history.go(1 - stacks.length)\n }\n }\n } catch (error) {\n const res = { errMsg: `${method}:fail ${error.message || error}` }\n fail?.(res)\n complete?.(res)\n reject(res)\n }\n })\n}\n\nexport function navigateTo (option: Taro.navigateTo.Option): ReturnType<typeof Taro.navigateTo> {\n return navigate(option, 'navigateTo')\n}\n\nexport function redirectTo (option: Taro.redirectTo.Option): ReturnType<typeof Taro.redirectTo> {\n return navigate(option, 'redirectTo')\n}\n\nexport function navigateBack (option: Taro.navigateBack.Option = { delta: 1 }): ReturnType<typeof Taro.navigateBack> {\n if (!option.delta || option.delta < 1) {\n option.delta = 1\n }\n return navigate(option as NavigateBackOption, 'navigateBack')\n}\n\nexport function switchTab (option: Taro.switchTab.Option): ReturnType<typeof Taro.switchTab> {\n return navigate(option, 'switchTab')\n}\n\nexport function reLaunch (option: Taro.reLaunch.Option): ReturnType<typeof Taro.reLaunch> {\n return navigate(option, 'reLaunch')\n}\n\nexport function getCurrentPages (): Taro.Page[] {\n if (process.env.NODE_ENV !== 'production' && RouterConfig.mode === 'multi') {\n console.warn('多页面路由模式不支持使用 getCurrentPages 方法!')\n }\n const pages = stacks.get()\n return pages.map(e => ({ ...e, route: e.path?.replace(/\\?.*/g, '') || '' }))\n}\n","import MobileDetect from 'mobile-detect'\n\nlet md: MobileDetect\nlet preTitle = document.title\nlet isLoadDdEntry = false\n\nexport function getMobileDetect (): MobileDetect {\n if (!md) {\n md = new MobileDetect(navigator.userAgent)\n }\n return md\n}\n\nexport async function setTitle (title: string): Promise<string> {\n if (preTitle === title) return title\n document.title = title\n preTitle = title\n if (process.env.SUPPORT_DINGTALK_NAVIGATE !== 'disabled' && isDingTalk()) {\n if (!isLoadDdEntry) {\n isLoadDdEntry = true\n require('dingtalk-jsapi/platform')\n }\n const setDingTitle = require('dingtalk-jsapi/api/biz/navigation/setTitle').default\n setDingTitle({ title })\n }\n return title\n}\n\nexport function isWeixin (): boolean {\n const md = getMobileDetect()\n return md.match(/MicroMessenger/ig)\n}\n\nexport function isDingTalk (): boolean {\n const md = getMobileDetect()\n return md.match(/DingTalk/ig)\n}\n","import { PageInstance } from '@tarojs/runtime'\n\nlet pageResizeFn\n\nexport function bindPageResize (page: PageInstance) {\n pageResizeFn && window.removeEventListener('resize', pageResizeFn)\n\n pageResizeFn = function () {\n page.onResize && page.onResize({\n size: {\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth\n }\n })\n }\n\n window.addEventListener('resize', pageResizeFn, false)\n}\n","import { Current, PageInstance } from '@tarojs/runtime'\n\nconst pageScrollFn = {}\nlet pageDOM: Element | Window = window\n\nexport function bindPageScroll (page: PageInstance, scrollEl: HTMLElement | Window, distance = 50) {\n const pagePath = (page ? page?.path : Current.router?.path) as string\n pageScrollFn[pagePath] && scrollEl.removeEventListener('scroll', pageScrollFn[pagePath])\n pageDOM = scrollEl\n\n let isReachBottom = false\n\n pageScrollFn[pagePath] = function () {\n page.onPageScroll?.({\n scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop\n })\n\n if (isReachBottom && getOffset() > distance) {\n isReachBottom = false\n }\n\n if (\n page.onReachBottom &&\n !isReachBottom &&\n getOffset() < distance\n ) {\n isReachBottom = true\n page.onReachBottom()\n }\n }\n\n pageDOM.addEventListener('scroll', pageScrollFn[pagePath], false)\n}\n\nfunction getOffset () {\n if (pageDOM instanceof Window) {\n return document.documentElement.scrollHeight - window.scrollY - window.innerHeight\n } else {\n return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight\n }\n}\n","/**\n * 插入页面动画需要的样式\n */\nexport function loadAnimateStyle (ms = 300) {\n const css = `\n.taro_router > .taro_page {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background-color: #fff;\n transform: translate(100%, 0);\n transition: transform ${ms}ms;\n z-index: 0;\n}\n\n.taro_router > .taro_page.taro_tabbar_page,\n.taro_router > .taro_page.taro_page_show.taro_page_stationed {\n transform: none;\n}\n\n.taro_router > .taro_page.taro_page_show {\n transform: translate(0, 0);\n}\n`\n addStyle(css)\n}\n\n/**\n * 插入路由相关样式\n */\nexport function loadRouterStyle (usingWindowScroll: boolean) {\n const css = `\n .taro_router {\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n .taro_page {\n width: 100%;\n height: 100%;\n ${\n usingWindowScroll ? '' : `\n overflow-x: hidden;\n overflow-y: scroll;\n max-height: 100vh;\n `}\n }\n\n .taro-tabbar__container > .taro-tabbar__panel {\n overflow: hidden;\n }\n\n .taro-tabbar__container > .taro-tabbar__panel > .taro_page.taro_tabbar_page {\n max-height: calc(100vh - var(--taro-tabbar-height) - constant(safe-area-inset-bottom));\n max-height: calc(100vh - var(--taro-tabbar-height) - env(safe-area-inset-bottom));\n }\n\n .taro_page_shade,\n .taro_router > .taro_page.taro_page_show.taro_page_stationed:not(.taro_page_shade):not(.taro_tabbar_page):not(:last-child) {\n display: none;\n }\n`\n addStyle(css)\n}\n\nfunction addStyle (css) {\n if (!css) return\n const style = document.createElement('style')\n style.innerHTML = css\n document.getElementsByTagName('head')[0].appendChild(style)\n}\n","// @ts-nocheck\nimport { defineCustomElementTaroTabbar } from '@tarojs/components/dist/components'\nimport { AppConfig, initTabBarApis } from '@tarojs/taro'\n\nimport { history } from './history'\n\nexport function initTabbar (config: AppConfig) {\n if (config.tabBar == null || config.tabBar.custom) {\n return\n }\n\n // TODO: custom-tab-bar\n defineCustomElementTaroTabbar()\n const tabbar: any = document.createElement('taro-tabbar') as HTMLDivElement\n const homePage = config.entryPagePath || (config.pages ? config.pages[0] : '')\n tabbar.conf = config.tabBar\n tabbar.conf.homePage = history.location.pathname === '/' ? homePage : history.location.pathname\n const routerConfig = (config as any).router\n tabbar.conf.mode = routerConfig && routerConfig.mode ? routerConfig.mode : 'hash'\n if (routerConfig.customRoutes) {\n tabbar.conf.custom = true\n tabbar.conf.customRoutes = routerConfig.customRoutes\n } else {\n tabbar.conf.custom = false\n tabbar.conf.customRoutes = {}\n }\n if (typeof routerConfig.basename !== 'undefined') {\n tabbar.conf.basename = routerConfig.basename\n }\n const container = document.getElementById('container')\n container?.appendChild(tabbar)\n initTabBarApis(config)\n}\n","/* eslint-disable dot-notation */\nimport { Current, eventCenter, PageInstance } from '@tarojs/runtime'\nimport queryString from 'query-string'\n\nimport { bindPageResize } from '../events/resize'\nimport { bindPageScroll } from '../events/scroll'\nimport { setHistoryMode } from '../history'\nimport { loadRouterStyle } from '../style'\nimport { initTabbar } from '../tabbar'\nimport { addLeadingSlash, stripBasename } from '../utils'\n\nimport type { PageConfig } from '@tarojs/taro'\nimport type { MpaRouterConfig, Route } from '../../types/router'\n\nexport default class MultiPageHandler {\n protected config: MpaRouterConfig\n\n constructor (config: MpaRouterConfig) {\n this.config = config\n this.mount()\n }\n\n get appId () { return this.config.appId || 'app' }\n get router () { return this.config.router || {} }\n get routerMode () { return this.router.mode || 'hash' }\n get customRoutes () { return this.router.customRoutes || {} }\n get tabBarList () { return this.config.tabBar?.list || [] }\n get PullDownRefresh () { return this.config.PullDownRefresh }\n\n set pathname (p) { this.router.pathname = p }\n get pathname () { return this.router.pathname }\n get basename () { return this.router.basename || '' }\n get pageConfig () { return this.config.route }\n\n get isTabBar () {\n const routePath = addLeadingSlash(stripBasename(this.pathname, this.basename))\n const pagePath = Object.entries(this.customRoutes).find(\n ([, target]) => {\n if (typeof target === 'string') {\n return target === routePath\n } else if (target?.length > 0) {\n return target.includes(routePath)\n }\n return false\n }\n )?.[0] || routePath\n\n return !!pagePath && this.tabBarList.some(t => t.pagePath === pagePath)\n }\n\n get search () { return location.search.substr(1) }\n\n get usingWindowScroll () {\n let usingWindowScroll = true\n if (typeof this.pageConfig?.usingWindowScroll === 'boolean') {\n usingWindowScroll = this.pageConfig.usingWindowScroll\n }\n const win = window as any\n win.__taroAppConfig ||= {}\n win.__taroAppConfig.usingWindowScroll = usingWindowScroll\n return usingWindowScroll\n }\n\n getQuery (search = '', options: Record<string, unknown> = {}) {\n search = search ? `${search}&${this.search}` : this.search\n const query = search\n ? queryString.parse(search)\n : {}\n return { ...query, ...options }\n }\n\n mount () {\n setHistoryMode(this.routerMode, this.router.basename)\n\n loadRouterStyle(this.usingWindowScroll)\n\n const appId = this.appId\n let app = document.getElementById(appId)\n let isPosition = true\n if (!app) {\n app = document.createElement('div')\n app.id = appId\n isPosition = false\n }\n const appWrapper = app?.parentNode || app?.parentElement || document.body\n app.classList.add('taro_router')\n\n if (this.tabBarList.length > 1) {\n const container = document.createElement('div')\n container.classList.add('taro-tabbar__container')\n container.id = 'container'\n\n const panel = document.createElement('div')\n panel.classList.add('taro-tabbar__panel')\n\n panel.appendChild(app.cloneNode(true))\n container.appendChild(panel)\n\n if (!isPosition) {\n appWrapper.appendChild(container)\n } else {\n appWrapper.replaceChild(container, app)\n }\n\n initTabbar(this.config)\n } else {\n if (!isPosition) appWrapper.appendChild(app)\n }\n }\n\n onReady (page: PageInstance, onLoad = true) {\n const pageEl = this.getPageContainer(page)\n if (pageEl && !pageEl?.['__isReady']) {\n const el = pageEl.firstElementChild\n const componentOnReady = el?.['componentOnReady']\n if (componentOnReady) {\n componentOnReady?.().then(() => {\n requestAnimationFrame(() => {\n page.onReady?.()\n pageEl!['__isReady'] = true\n })\n })\n } else {\n page.onReady?.()\n pageEl!['__isReady'] = true\n }\n onLoad && (pageEl['__page'] = page)\n }\n }\n\n load (page: PageInstance, pageConfig: Route = {}) {\n if (!page) return\n\n page.onLoad?.(this.getQuery('', page.options), () => {\n if (this.isTabBar) {\n const pageEl = this.getPageContainer(page)\n pageEl?.classList.add('taro_tabbar_page')\n }\n this.onReady(page, true)\n page.onShow?.()\n this.bindPageEvents(page, pageConfig)\n this.triggerRouterChange()\n })\n }\n\n getPageContainer (page?: PageInstance | null): HTMLElement | null {\n const path = page ? page?.path : Current.page?.path\n const id = path?.replace(/([^a-z0-9\\u00a0-\\uffff_-])/ig, '\\\\$1')\n if (page) {\n return document.querySelector(`.taro_page#${id}`)\n }\n const el: HTMLDivElement | null = (id\n ? document.querySelector(`.taro_page#${id}`)\n : document.querySelector('.taro_page') ||\n document.querySelector('.taro_router')) as HTMLDivElement\n return el\n }\n\n getScrollingElement (page?: PageInstance | null) {\n if (this.usingWindowScroll) return window\n return this.getPageContainer(page) || window\n }\n\n bindPageEvents (page: PageInstance, config: Partial<PageConfig> = {}) {\n const scrollEl = this.getScrollingElement(page)\n const distance = config.onReachBottomDistance || this.config.window?.onReachBottomDistance || 50\n bindPageScroll(page, scrollEl, distance)\n bindPageResize(page)\n }\n\n triggerRouterChange () {\n /**\n * @tarojs/runtime 中生命周期跑在 promise 中,所以这里需要 setTimeout 延迟事件调用\n * TODO 考虑将生命周期返回 Promise,用于处理相关事件调用顺序\n */\n setTimeout(() => {\n eventCenter.trigger('__afterTaroRouterChange', {\n toLocation: {\n path: this.pathname\n }\n })\n }, 0)\n }\n}\n","/* eslint-disable dot-notation */\nimport {\n createPageConfig,\n eventCenter, hooks,\n incrementId,\n stringify,\n} from '@tarojs/runtime'\n\nimport { setTitle } from '../utils/navigate'\nimport { RouterConfig } from '.'\nimport MultiPageHandler from './multi-page'\n\nimport type { AppInstance } from '@tarojs/runtime'\nimport type { MpaRouterConfig } from '../../types/router'\n\nconst createStampId = incrementId()\nconst launchStampId = createStampId()\n\n// TODO 支持多路由 (APP 生命周期仅触发一次)\n/** Note: 关于多页面应用\n * - 需要配置路由映射(根目录跳转、404 页面……)\n * - app.onPageNotFound 事件不支持\n * - 应用生命周期可能多次触发\n * - TabBar 会多次加载\n * - 不支持路由动画\n */\nexport async function createMultiRouter (\n app: AppInstance,\n config: MpaRouterConfig,\n framework?: string\n) {\n if (typeof app.onUnhandledRejection === 'function') {\n window.addEventListener('unhandledrejection', app.onUnhandledRejection)\n }\n RouterConfig.config = config\n const handler = new MultiPageHandler(config)\n const launchParam: Taro.getLaunchOptionsSync.LaunchOptions = {\n path: config.pageName, // 多页面模式没新开一个页面相当于重启,所以直接使用当前页面路径\n query: handler.getQuery(launchStampId),\n scene: 0,\n shareTicket: '',\n referrerInfo: {}\n }\n\n eventCenter.trigger('__taroRouterLaunch', launchParam)\n app.onLaunch?.(launchParam as Record<string, any>)\n app.onError && window.addEventListener('error', e => app.onError?.(e.message))\n\n const pathName = config.pageName\n const pageConfig = handler.pageConfig\n eventCenter.trigger('__taroRouterChange', {\n toLocation: {\n path: pathName\n }\n })\n\n let element\n try {\n element = await pageConfig.load?.()\n if (element instanceof Array) {\n element = element[0]\n }\n } catch (error) {\n throw new Error(error)\n }\n if (!element) return\n let enablePullDownRefresh = config?.window?.enablePullDownRefresh || false\n\n if (pageConfig) {\n setTitle(pageConfig.navigationBarTitleText ?? document.title)\n if (typeof pageConfig.enablePullDownRefresh === 'boolean') {\n enablePullDownRefresh = pageConfig.enablePullDownRefresh\n }\n }\n\n const el = element.default ?? element\n const loadConfig = { ...pageConfig }\n delete loadConfig['path']\n delete loadConfig['load']\n const page = createPageConfig(\n enablePullDownRefresh ? hooks.call('createPullDownComponent', el, pathName, framework, handler.PullDownRefresh) : el,\n pathName + stringify(launchParam as Record<string, any>),\n {},\n loadConfig\n )\n handler.load(page, pageConfig)\n\n app.onShow?.(launchParam as Record<string, any>)\n}\n","/* eslint-disable dot-notation */\nimport { Current, eventCenter, PageInstance, requestAnimationFrame } from '@tarojs/runtime'\nimport queryString from 'query-string'\n\nimport { bindPageResize } from '../events/resize'\nimport { bindPageScroll } from '../events/scroll'\nimport { history, setHistoryMode } from '../history'\nimport { loadAnimateStyle, loadRouterStyle } from '../style'\nimport { initTabbar } from '../tabbar'\nimport { addLeadingSlash, getCurrentPage, getHomePage, routesAlias, stripBasename, stripTrailing } from '../utils'\nimport stacks from './stack'\n\nimport type { PageConfig, RouterAnimate } from '@tarojs/taro'\nimport type { Route, SpaRouterConfig } from '../../types/router'\n\nexport default class PageHandler {\n protected config: SpaRouterConfig\n protected readonly defaultAnimation: RouterAnimate = { duration: 300, delay: 50 }\n protected unloadTimer: ReturnType<typeof setTimeout> | null\n protected hideTimer: ReturnType<typeof setTimeout> | null\n protected lastHidePage: HTMLElement | null\n protected lastUnloadPage: PageInstance | null\n\n public homePage: string\n\n constructor (config: SpaRouterConfig) {\n this.config = config\n this.homePage = getHomePage(this.routes[0].path, this.basename, this.customRoutes, this.config.entryPagePath)\n this.mount()\n }\n\n get currentPage () {\n const routePath = getCurrentPage(this.routerMode, this.basename)\n return routePath === '/' ? this.homePage : routePath\n }\n\n get appId () { return this.config.appId ||'app' }\n get router () { return this.config.router || {} }\n get routerMode () { return this.router.mode || 'hash' }\n get customRoutes () { return this.router.customRoutes || {} }\n get routes () { return this.config.routes || [] }\n get tabBarList () { return this.config.tabBar?.list || [] }\n get PullDownRefresh () { return this.config.PullDownRefresh }\n get animation () { return this.config?.animation ?? this.defaultAnimation }\n get animationDelay () {\n return (typeof this.animation === 'object'\n ? this.animation.delay\n : this.animation\n ? this.defaultAnimation?.delay\n : 0) || 0\n }\n\n get animationDuration () {\n return (typeof this.animation === 'object'\n ? this.animation.duration\n : this.animation\n ? this.defaultAnimation?.duration\n : 0) || 0\n }\n\n set pathname (p) { this.router.pathname = p }\n get pathname () { return this.router.pathname }\n get basename () { return this.router.basename || '' }\n\n get pageConfig () {\n const routePath = addLeadingSlash(stripBasename(this.pathname, this.basename))\n const homePage = addLeadingSlash(this.homePage)\n return this.routes.find(r => {\n const pagePath = addLeadingSlash(r.path)\n return [pagePath, homePage].includes(routePath) || routesAlias.getConfig(pagePath)?.includes(routePath)\n })\n }\n\n isTabBar (pathname: string) {\n const routePath = addLeadingSlash(stripBasename(pathname, this.basename)).split('?')[0]\n const pagePath = Object.entries(this.customRoutes).find(\n ([, target]) => {\n if (typeof target === 'string') {\n return target === routePath\n } else if (target?.length > 0) {\n return target.includes(routePath)\n }\n return false\n }\n )?.[0] || routePath\n\n return !!pagePath && this.tabBarList.some(t => stripTrailing(t.pagePath) === pagePath)\n }\n\n isSamePage (page?: PageInstance | null) {\n const routePath = stripBasename(this.pathname, this.basename)\n const pagePath = stripBasename(page?.path, this.basename)\n return pagePath.startsWith(routePath + '?')\n }\n\n get search () {\n let search = '?'\n if (this.routerMode === 'hash') {\n const idx = location.hash.indexOf('?')\n if (idx > -1) {\n search = location.hash.slice(idx)\n }\n } else {\n search = location.search\n }\n return search.substring(1)\n }\n\n get usingWindowScroll () {\n let usingWindowScroll = false\n if (typeof this.pageConfig?.usingWindowScroll === 'boolean') {\n usingWindowScroll = this.pageConfig.usingWindowScroll\n }\n const win = window as any\n win.__taroAppConfig ||= {}\n win.__taroAppConfig.usingWindowScroll = usingWindowScroll\n return usingWindowScroll\n }\n\n getQuery (stamp = '', search = '', options: Record<string, unknown> = {}) {\n search = search ? `${search}&${this.search}` : this.search\n const query = search\n ? queryString.parse(search, { decode: false })\n : {}\n\n query.stamp = stamp\n return { ...query, ...options }\n }\n\n mount () {\n setHistoryMode(this.routerMode, this.router.basename)\n this.pathname = history.location.pathname\n\n this.animation && loadAnimateStyle(this.animationDuration)\n loadRouterStyle(this.usingWindowScroll)\n\n const appId = this.appId\n let app = document.getElementById(appId)\n let isPosition = true\n if (!app) {\n app = document.createElement('div')\n app.id = appId\n isPosition = false\n }\n const appWrapper = app?.parentNode || app?.parentElement || document.body\n app.classList.add('taro_router')\n\n if (this.tabBarList.length > 1) {\n const container = document.createElement('div')\n container.classList.add('taro-tabbar__container')\n container.id = 'container'\n\n const panel = document.createElement('div')\n panel.classList.add('taro-tabbar__panel')\n\n panel.appendChild(app.cloneNode(true))\n container.appendChild(panel)\n\n if (!isPosition) {\n appWrapper.appendChild(container)\n } else {\n appWrapper.replaceChild(container, app)\n }\n\n initTabbar(this.config)\n } else {\n if (!isPosition) appWrapper.appendChild(app)\n }\n }\n\n onReady (page: PageInstance, onLoad = true) {\n const pageEl = this.getPageContainer(page)\n if (pageEl && !pageEl?.['__isReady']) {\n const el = pageEl.firstElementChild\n const componentOnReady = el?.['componentOnReady']\n if (componentOnReady) {\n componentOnReady?.().then(() => {\n requestAnimationFrame(() => {\n page.onReady?.()\n pageEl!['__isReady'] = true\n })\n })\n } else {\n page.onReady?.()\n pageEl!['__isReady'] = true\n }\n onLoad && (pageEl['__page'] = page)\n }\n }\n\n load (page: PageInstance, pageConfig: Route = {}, stampId: string, pageNo = 0) {\n if (!page) return\n\n // NOTE: 页面栈推入太晚可能导致 getCurrentPages 无法获取到当前页面实例\n stacks.push(page)\n const param = this.getQuery(stampId, '', page.options)\n let pageEl = this.getPageContainer(page)\n if (pageEl) {\n pageEl.classList.remove('taro_page_shade')\n this.isTabBar(this.pathname) && pageEl.classList.add('taro_tabbar_page')\n this.addAnimation(pageEl, pageNo === 0)\n page.onShow?.()\n this.bindPageEvents(page, pageConfig)\n this.triggerRouterChange()\n } else {\n page.onLoad?.(param, () => {\n pageEl = this.getPageContainer(page)\n this.isTabBar(this.pathname) && pageEl?.classList.add('taro_tabbar_page')\n this.addAnimation(pageEl, pageNo === 0)\n this.onReady(page, true)\n page.onShow?.()\n this.bindPageEvents(page, pageConfig)\n this.triggerRouterChange()\n })\n }\n }\n\n unload (page?: PageInstance | null, delta = 1, top = false) {\n if (!page) return\n\n stacks.delta = --delta\n stacks.pop()\n if (this.animation && top) {\n if (this.unloadTimer) {\n clearTimeout(this.unloadTimer)\n this.lastUnloadPage?.onUnload?.()\n this.unloadTimer = null\n }\n this.lastUnloadPage = page\n const pageEl = this.getPageContainer(page)\n pageEl?.classList.remove('taro_page_stationed')\n pageEl?.classList.remove('taro_page_show')\n if (pageEl) {\n pageEl.style.zIndex = '1'\n }\n\n this.unloadTimer = setTimeout(() => {\n this.unloadTimer = null\n this.lastUnloadPage?.onUnload?.()\n eventCenter.trigger('__taroPageOnShowAfterDestroyed')\n }, this.animationDuration)\n } else {\n const pageEl = this.getPageContainer(page)\n pageEl?.classList.remove('taro_page_stationed')\n pageEl?.classList.remove('taro_page_show')\n page?.onUnload?.()\n setTimeout(() => {\n eventCenter.trigger('__taroPageOnShowAfterDestroyed')\n }, 0)\n }\n if (delta >= 1) this.unload(stacks.last, delta)\n }\n\n show (page?: PageInstance | null, pageConfig: Route = {}, pageNo = 0) {\n if (!page) return\n\n const param = this.getQuery(page['$taroParams']['stamp'], '', page.options)\n let pageEl = this.getPageContainer(page)\n if (pageEl) {\n pageEl.classList.remove('taro_page_shade')\n this.addAnimation(pageEl, pageNo === 0)\n page.onShow?.()\n this.bindPageEvents(page, pageConfig)\n this.triggerRouterChange()\n } else {\n page.onLoad?.(param, () => {\n pageEl = this.getPageContainer(page)\n this.addAnimation(pageEl, pageNo === 0)\n this.onReady(page, false)\n page.onShow?.()\n this.bindPageEvents(page, pageConfig)\n this.triggerRouterChange()\n })\n }\n }\n\n hide (page?: PageInstance | null) {\n if (!page) return\n\n // NOTE: 修复多页并发问题,此处可能因为路由跳转过快,执行时页面可能还没有创建成功\n const pageEl = this.getPageContainer(page)\n if (pageEl) {\n if (this.hideTimer) {\n clearTimeout(this.hideTimer)\n this.hideTimer = null\n pageEl.classList.add('taro_page_shade')\n }\n this.lastHidePage = pageEl\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null\n pageEl.classList.add('taro_page_shade')\n }, this.animationDuration + this.animationDelay)\n page.onHide?.()\n } else {\n setTimeout(() => this.hide(page), 0)\n }\n }\n\n addAnimation (pageEl?: HTMLElement | null, first = false) {\n if (!pageEl) return\n\n if (this.animation && !first) {\n setTimeout(() => {\n pageEl.classList.add('taro_page_show')\n setTimeout(() => {\n pageEl.classList.add('taro_page_stationed')\n }, this.animationDuration)\n }, this.animationDelay)\n } else {\n pageEl.classList.add('taro_page_show')\n pageEl.classList.add('taro_page_stationed')\n }\n }\n\n getPageContainer (page?: PageInstance | null): HTMLElement | null {\n const path = page ? page?.path : Current.page?.path\n const id = path?.replace(/([^a-z0-9\\u00a0-\\uffff_-])/ig, '\\\\$1')\n if (page) {\n return document.querySelector(`.taro_page#${id}`)\n }\n const el: HTMLDivElement | null = (id\n ? document.querySelector(`.taro_page#${id}`)\n : document.querySelector('.taro_page') ||\n document.querySelector('.taro_router')) as HTMLDivElement\n return el\n }\n\n getScrollingElement (page?: PageInstance | null) {\n if (this.usingWindowScroll) return window\n return this.getPageContainer(page) || window\n }\n\n bindPageEvents (page: PageInstance, config: Partial<PageConfig> = {}) {\n const scrollEl = this.getScrollingElement(page)\n const distance = config.onReachBottomDistance || this.config.window?.onReachBottomDistance || 50\n bindPageScroll(page, scrollEl, distance)\n bindPageResize(page)\n }\n\n triggerRouterChange () {\n /**\n * @tarojs/runtime 中生命周期跑在 promise 中,所以这里需要 setTimeout 延迟事件调用\n * TODO 考虑将生命周期返回 Promise,用于处理相关事件调用顺序\n */\n setTimeout(() => {\n eventCenter.trigger('__afterTaroRouterChange', {\n toLocation: {\n path: this.pathname\n }\n })\n }, 0)\n }\n}\n","/* eslint-disable dot-notation */\nimport {\n createPageConfig, Current,\n eventCenter, hooks,\n incrementId,\n stringify,\n} from '@tarojs/runtime'\nimport { Action as LocationAction } from 'history'\nimport UniversalRouter from 'universal-router'\n\nimport { history, prependBasename } from '../history'\nimport { addLeadingSlash, routesAlias, stripBasename } from '../utils'\nimport { setTitle } from '../utils/navigate'\nimport { RouterConfig } from '.'\nimport PageHandler from './page'\nimport stacks from './stack'\n\nimport type { AppInstance } from '@tarojs/runtime'\nimport type { Listener as LocationListener } from 'history'\nimport type { Routes } from 'universal-router'\nimport type { SpaRouterConfig } from '../../types/router'\n\nconst createStampId = incrementId()\nlet launchStampId = createStampId()\n\nexport function createRouter (\n app: AppInstance,\n config: SpaRouterConfig,\n framework?: string\n) {\n if (typeof app.onUnhandledRejection === 'function') {\n window.addEventListener('unhandledrejection', app.onUnhandledRejection)\n }\n RouterConfig.config = config\n const handler = new PageHandler(config)\n\n routesAlias.set(handler.router.customRoutes)\n const basename = handler.router.basename\n const routes: Routes = handler.routes.map(route => {\n const routePath = addLeadingSlash(route.path)\n const paths = routesAlias.getAll(routePath)\n return {\n path: paths.length < 1 ? routePath : paths,\n action: route.load\n }\n })\n const router = new UniversalRouter(routes, { baseUrl: basename || '' })\n const launchParam: Taro.getLaunchOptionsSync.LaunchOptions = {\n path: handler.currentPage,\n query: handler.getQuery(launchStampId),\n scene: 0,\n shareTicket: '',\n referrerInfo: {}\n }\n\n eventCenter.trigger('__taroRouterLaunch', launchParam)\n app.onLaunch?.(launchParam as Record<string, any>)\n app.onError && window.addEventListener('error', e => app.onError?.(e.message))\n\n const render: LocationListener = async ({ location, action }) => {\n handler.pathname = decodeURI(location.pathname)\n\n if ((window as any).__taroAppConfig?.usingWindowScroll) window.scrollTo(0, 0)\n eventCenter.trigger('__taroRouterChange', {\n toLocation: {\n path: handler.pathname\n }\n })\n\n let element, params\n try {\n const result = await router.resolve(handler.router.forcePath || handler.pathname)\n ;[element, , params] = await Promise.all(result)\n } catch (error) {\n if (error.status === 404) {\n const notFoundEvent = {\n isEntryPage: stacks.length === 0,\n path: handler.pathname,\n query: handler.getQuery(createStampId()),\n }\n app.onPageNotFound?.(notFoundEvent)\n eventCenter.trigger('__taroRouterNotFound', notFoundEvent)\n } else if (/Loading hot update .* failed./.test(error.message)) {\n // NOTE: webpack5 与 prebundle 搭配使用时,开发环境下初次启动时偶发错误,由于 HMR 加载 chunk hash 错误,导致热更新失败\n window.location.reload()\n } else {\n throw new Error(error)\n }\n }\n if (!element) return\n const pageConfig = handler.pageConfig\n let enablePullDownRefresh = config?.window?.enablePullDownRefresh || false\n\n if (pageConfig) {\n setTitle(pageConfig.navigationBarTitleText ?? document.title)\n if (typeof pageConfig.enablePullDownRefresh === 'boolean') {\n enablePullDownRefresh = pageConfig.enablePullDownRefresh\n }\n }\n\n const currentPage = Current.page\n const pathname = handler.pathname\n const methodName = stacks.method ?? ''\n const cacheTabs = stacks.getTabs()\n let shouldLoad = false\n stacks.method = ''\n\n if (methodName === 'reLaunch') {\n handler.unload(currentPage, stacks.length)\n // NOTE: 同时卸载缓存在tabs里面的页面实例\n for (const key in cacheTabs) {\n if (cacheTabs[key]) {\n handler.unload(cacheTabs[key])\n stacks.removeTab(key)\n }\n }\n shouldLoad = true\n } else if (currentPage && handler.isTabBar(handler.pathname)) {\n if (handler.isSamePage(currentPage)) return\n if (handler.isTabBar(currentPage!.path!)) {\n handler.hide(currentPage)\n stacks.pushTab(currentPage!.path!.split('?')[0])\n } else if (stacks.length > 0) {\n const firstIns = stacks.getItem(0)\n if (handler.isTabBar(firstIns.path!)) {\n handler.unload(currentPage, stacks.length - 1, true)\n stacks.pushTab(firstIns.path!.split('?')[0])\n } else {\n handler.unload(currentPage, stacks.length, true)\n }\n }\n\n if (cacheTabs[handler.pathname]) {\n stacks.popTab(handler.pathname)\n return handler.show(stacks.getItem(0), pageConfig, 0)\n }\n shouldLoad = true\n } else if (action === 'POP') {\n // NOTE: 浏览器事件退后多次时,该事件只会被触发一次\n const prevIndex = stacks.getPrevIndex(pathname)\n const delta = stacks.getDelta(pathname)\n // NOTE: Safari 内核浏览器在非应用页面返回上一页时,会触发额外的 POP 事件,此处需避免当前页面被错误卸载\n if (currentPage !== stacks.getItem(prevIndex)) {\n handler.unload(currentPage, delta, prevIndex > -1)\n if (prevIndex > -1) {\n eventCenter.once('__taroPageOnShowAfterDestroyed', () => {\n handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex)\n })\n } else {\n shouldLoad = true\n }\n }\n } else if (action === 'REPLACE') {\n const delta = stacks.getDelta(pathname)\n // NOTE: 页面路由记录并不会清空,只是移除掉缓存的 stack 以及页面\n handler.unload(currentPage, delta)\n shouldLoad = true\n } else if (action === 'PUSH') {\n handler.hide(currentPage)\n shouldLoad = true\n }\n\n if (shouldLoad || stacks.length < 1) {\n const el = element.default ?? element\n const loadConfig = { ...pageConfig }\n const stacksIndex = stacks.length\n delete loadConfig['path']\n delete loadConfig['load']\n\n let pageStampId = ''\n if (launchStampId) {\n pageStampId = launchStampId\n launchStampId = ''\n } else {\n pageStampId = createStampId()\n }\n\n const page = createPageConfig(\n enablePullDownRefresh ? hooks.call('createPullDownComponent', el, pathname, framework, handler.PullDownRefresh, pageStampId) : el,\n pathname + stringify(handler.getQuery(pageStampId)),\n {},\n loadConfig\n )\n if (params) page.options = params\n handler.load(page, pageConfig, pageStampId, stacksIndex)\n }\n }\n\n const routePath = addLeadingSlash(stripBasename(history.location.pathname, handler.basename))\n if (routePath === '/') {\n history.replace(prependBasename(handler.homePage + history.location.search))\n }\n\n render({ location: history.location, action: LocationAction.Push })\n\n app.onShow?.(launchParam as Record<string, any>)\n\n return history.listen(render)\n}\n"],"names":["history","Action","createBrowserHistory","createHashHistory","parsePath","MobileDetect","Current","defineCustomElementTaroTabbar","initTabBarApis","queryString","eventCenter","createStampId","incrementId","launchStampId","createPageConfig","hooks","stringify","requestAnimationFrame","UniversalRouter","LocationAction"],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import Taro from "@tarojs/taro";
2
- import { History } from "history";
3
- import { AppInstance } from "@tarojs/runtime";
4
- import { MpaRouterConfig, SpaRouterConfig } from "../../types/router";
5
- declare function navigateTo(option: Taro.navigateTo.Option): ReturnType<typeof Taro.navigateTo>;
6
- declare function redirectTo(option: Taro.redirectTo.Option): ReturnType<typeof Taro.redirectTo>;
7
- declare function navigateBack(option?: Taro.navigateBack.Option): ReturnType<typeof Taro.navigateBack>;
8
- declare function switchTab(option: Taro.switchTab.Option): ReturnType<typeof Taro.switchTab>;
9
- declare function reLaunch(option: Taro.reLaunch.Option): ReturnType<typeof Taro.reLaunch>;
10
- declare function getCurrentPages(): Taro.Page[];
11
- declare let history: History;
12
- // TODO 支持多路由 (APP 生命周期仅触发一次)
13
- /** Note: 关于多页面应用
14
- * - 需要配置路由映射(根目录跳转、404 页面……)
15
- * - app.onPageNotFound 事件不支持
16
- * - 应用生命周期可能多次触发
17
- * - TabBar 会多次加载
18
- * - 不支持路由动画
19
- */
20
- declare function createMultiRouter(app: AppInstance, config: MpaRouterConfig, framework?: string): Promise<void>;
21
- declare function createRouter(app: AppInstance, config: SpaRouterConfig, framework?: string): () => void;
22
- export { navigateTo, redirectTo, navigateBack, switchTab, reLaunch, getCurrentPages, history, createMultiRouter, createRouter };