@tarojs/router 3.5.0-theta.0 → 3.5.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -5,7 +5,8 @@ export function bindPageScroll(page, pageEl, distance = 50) {
5
5
  pageDOM = pageEl;
6
6
  let isReachBottom = false;
7
7
  pageScrollFn = function () {
8
- page.onPageScroll && page.onPageScroll({
8
+ var _a;
9
+ (_a = page.onPageScroll) === null || _a === void 0 ? void 0 : _a.call(page, {
9
10
  scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
10
11
  });
11
12
  if (isReachBottom && getOffset() > distance) {
package/dist/index.cjs.js CHANGED
@@ -4,12 +4,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var history = require('history');
6
6
  var runtime = require('@tarojs/runtime');
7
+ var MobileDetect = require('mobile-detect');
7
8
  var queryString = require('query-string');
8
9
  var taro = require('@tarojs/taro');
9
10
  var UniversalRouter = require('universal-router');
10
11
 
11
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
13
 
14
+ var MobileDetect__default = /*#__PURE__*/_interopDefaultLegacy(MobileDetect);
13
15
  var queryString__default = /*#__PURE__*/_interopDefaultLegacy(queryString);
14
16
  var UniversalRouter__default = /*#__PURE__*/_interopDefaultLegacy(UniversalRouter);
15
17
 
@@ -38,9 +40,12 @@ function __awaiter(thisArg, _arguments, P, generator) {
38
40
  });
39
41
  }
40
42
 
43
+ // export const removeLeadingSlash = (str = '') => str.replace(/^\.?\//, '')
44
+ // export const removeTrailingSearch = (str = '') => str.replace(/\?[\s\S]*$/, '')
41
45
  const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);
42
46
  const hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\/|\\?|#|$)', 'i').test(path) || path === prefix;
43
- const stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substr(prefix.length) : path;
47
+ const stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;
48
+ const stripTrailing = (str = '') => str.replace(/[?#][\s\S]*$/, '');
44
49
  class RoutesAlias {
45
50
  constructor() {
46
51
  this.conf = [];
@@ -352,6 +357,37 @@ function getCurrentPages() {
352
357
  return pages.map(e => (Object.assign(Object.assign({}, e), { route: e.path || '' })));
353
358
  }
354
359
 
360
+ let md;
361
+ let preTitle = document.title;
362
+ let isLoadDdEntry = false;
363
+ function getMobileDetect() {
364
+ if (!md) {
365
+ md = new MobileDetect__default["default"](navigator.userAgent);
366
+ }
367
+ return md;
368
+ }
369
+ function setTitle(title) {
370
+ return __awaiter(this, void 0, void 0, function* () {
371
+ if (preTitle === title)
372
+ return title;
373
+ document.title = title;
374
+ preTitle = title;
375
+ if (process.env.SUPPORT_DINGTALK_NAVIGATE !== 'disabled' && isDingTalk()) {
376
+ if (!isLoadDdEntry) {
377
+ isLoadDdEntry = true;
378
+ require('dingtalk-jsapi/platform');
379
+ }
380
+ const setDingTitle = require('dingtalk-jsapi/api/biz/navigation/setTitle').default;
381
+ setDingTitle({ title });
382
+ }
383
+ return title;
384
+ });
385
+ }
386
+ function isDingTalk() {
387
+ const md = getMobileDetect();
388
+ return md.match(/DingTalk/ig);
389
+ }
390
+
355
391
  let pageResizeFn;
356
392
  function bindPageResize(page) {
357
393
  pageResizeFn && window.removeEventListener('resize', pageResizeFn);
@@ -373,7 +409,8 @@ function bindPageScroll(page, pageEl, distance = 50) {
373
409
  pageDOM = pageEl;
374
410
  let isReachBottom = false;
375
411
  pageScrollFn = function () {
376
- page.onPageScroll && page.onPageScroll({
412
+ var _a;
413
+ (_a = page.onPageScroll) === null || _a === void 0 ? void 0 : _a.call(page, {
377
414
  scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
378
415
  });
379
416
  if (isReachBottom && getOffset() > distance) {
@@ -432,7 +469,7 @@ class MultiPageHandler {
432
469
  this.mount();
433
470
  }
434
471
  get appId() { return 'app'; }
435
- get router() { return this.config.router; }
472
+ get router() { return this.config.router || {}; }
436
473
  get routerMode() { return this.router.mode || 'hash'; }
437
474
  get customRoutes() { return this.router.customRoutes || {}; }
438
475
  get tabBarList() { var _a; return ((_a = this.config.tabBar) === null || _a === void 0 ? void 0 : _a.list) || []; }
@@ -546,6 +583,7 @@ function createMultiRouter(app, config, framework) {
546
583
  const handler = new MultiPageHandler(config);
547
584
  const launchParam = handler.getQuery();
548
585
  (_a = app.onLaunch) === null || _a === void 0 ? void 0 : _a.call(app, launchParam);
586
+ app.onError && window.addEventListener('error', e => { var _a; return (_a = app.onError) === null || _a === void 0 ? void 0 : _a.call(app, e.message); });
549
587
  const pathName = config.pageName;
550
588
  const pageConfig = handler.pageConfig;
551
589
  let element;
@@ -564,7 +602,7 @@ function createMultiRouter(app, config, framework) {
564
602
  }
565
603
  });
566
604
  if (pageConfig) {
567
- document.title = (_d = pageConfig.navigationBarTitleText) !== null && _d !== void 0 ? _d : document.title;
605
+ setTitle((_d = pageConfig.navigationBarTitleText) !== null && _d !== void 0 ? _d : document.title);
568
606
  if (typeof pageConfig.enablePullDownRefresh === 'boolean') {
569
607
  enablePullDownRefresh = pageConfig.enablePullDownRefresh;
570
608
  }
@@ -622,10 +660,10 @@ class PageHandler {
622
660
  this.mount();
623
661
  }
624
662
  get appId() { return 'app'; }
625
- get router() { return this.config.router; }
663
+ get router() { return this.config.router || {}; }
626
664
  get routerMode() { return this.router.mode || 'hash'; }
627
665
  get customRoutes() { return this.router.customRoutes || {}; }
628
- get routes() { return this.config.routes; }
666
+ get routes() { return this.config.routes || []; }
629
667
  get tabBarList() { var _a; return ((_a = this.config.tabBar) === null || _a === void 0 ? void 0 : _a.list) || []; }
630
668
  get PullDownRefresh() { return this.config.PullDownRefresh; }
631
669
  get animation() { var _a, _b; return (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.animation) !== null && _b !== void 0 ? _b : this.defaultAnimation; }
@@ -672,7 +710,7 @@ class PageHandler {
672
710
  }
673
711
  return false;
674
712
  })) === null || _a === void 0 ? void 0 : _a[0]) || routePath;
675
- return !!pagePath && this.tabBarList.some(t => t.pagePath === pagePath);
713
+ return !!pagePath && this.tabBarList.some(t => stripTrailing(t.pagePath) === pagePath);
676
714
  }
677
715
  isSamePage(page) {
678
716
  const routePath = stripBasename(this.pathname, this.basename);
@@ -899,8 +937,9 @@ function createRouter(app, config, framework) {
899
937
  const router = new UniversalRouter__default["default"](routes, { baseUrl: basename || '' });
900
938
  const launchParam = handler.getQuery(stacks.length);
901
939
  (_a = app.onLaunch) === null || _a === void 0 ? void 0 : _a.call(app, launchParam);
940
+ app.onError && window.addEventListener('error', e => { var _a; return (_a = app.onError) === null || _a === void 0 ? void 0 : _a.call(app, e.message); });
902
941
  const render = ({ location, action }) => __awaiter(this, void 0, void 0, function* () {
903
- var _c, _d, _e, _f;
942
+ var _c, _d, _e, _f, _g;
904
943
  handler.pathname = decodeURI(location.pathname);
905
944
  let element, params;
906
945
  try {
@@ -913,6 +952,10 @@ function createRouter(app, config, framework) {
913
952
  path: handler.pathname
914
953
  });
915
954
  }
955
+ else if (/Loading hot update .* failed./.test(error.message)) {
956
+ // NOTE: webpack5 与 prebundle 搭配使用时,开发环境下初次启动时偶发错误,由于 HMR 加载 chunk hash 错误,导致热更新失败
957
+ window.location.reload();
958
+ }
916
959
  else {
917
960
  throw new Error(error);
918
961
  }
@@ -928,6 +971,7 @@ function createRouter(app, config, framework) {
928
971
  });
929
972
  if (pageConfig) {
930
973
  document.title = (_e = pageConfig.navigationBarTitleText) !== null && _e !== void 0 ? _e : document.title;
974
+ setTitle((_f = pageConfig.navigationBarTitleText) !== null && _f !== void 0 ? _f : document.title);
931
975
  if (typeof pageConfig.enablePullDownRefresh === 'boolean') {
932
976
  enablePullDownRefresh = pageConfig.enablePullDownRefresh;
933
977
  }
@@ -939,12 +983,15 @@ function createRouter(app, config, framework) {
939
983
  // NOTE: 浏览器事件退后多次时,该事件只会被触发一次
940
984
  const prevIndex = stacks.getPrevIndex(pathname);
941
985
  const delta = stacks.getDelta(pathname);
942
- handler.unload(currentPage, delta, prevIndex > -1);
943
- if (prevIndex > -1) {
944
- handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex);
945
- }
946
- else {
947
- shouldLoad = true;
986
+ // NOTE: Safari 内核浏览器在非应用页面返回上一页时,会触发额外的 POP 事件,此处需避免当前页面被错误卸载
987
+ if (currentPage !== stacks.getItem(prevIndex)) {
988
+ handler.unload(currentPage, delta, prevIndex > -1);
989
+ if (prevIndex > -1) {
990
+ handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex);
991
+ }
992
+ else {
993
+ shouldLoad = true;
994
+ }
948
995
  }
949
996
  }
950
997
  else {
@@ -969,7 +1016,7 @@ function createRouter(app, config, framework) {
969
1016
  shouldLoad = true;
970
1017
  }
971
1018
  if (shouldLoad || stacks.length < 1) {
972
- const el = (_f = element.default) !== null && _f !== void 0 ? _f : element;
1019
+ const el = (_g = element.default) !== null && _g !== void 0 ? _g : element;
973
1020
  const loadConfig = Object.assign({}, pageConfig);
974
1021
  const stacksIndex = stacks.length;
975
1022
  delete loadConfig['path'];
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/utils.ts","../src/router/index.ts","../src/history.ts","../src/router/stack.ts","../src/api.ts","../src/events/resize.ts","../src/events/scroll.ts","../src/tabbar.ts","../src/router/multi-page.ts","../src/router/mpa.ts","../src/animation.ts","../src/router/page.ts","../src/router/spa.ts"],"sourcesContent":["export 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.substr(prefix.length) : path\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 type { MpaRouterConfig, SpaRouterConfig } from '../../types/router'\nimport { addLeadingSlash } from '../utils'\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 => addLeadingSlash(e) === url) !== -1\n }\n}\n","import { IH5RouterConfig } from '@tarojs/taro/types/compile'\nimport { Action, Blocker, BrowserHistoryOptions, createBrowserHistory, createHashHistory, History, Listener, Location, Path, To } from 'history'\n\nimport type { StateEvent } from '../types/history'\nimport { RouterConfig } from './router'\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.pathname = 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\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 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\nconst stacks = new Stacks()\n\nexport default stacks\n","import Taro from '@tarojs/taro'\nimport { parsePath } from 'history'\n\nimport type { NavigateBackOption, Option } from '../types/api'\nimport { history, prependBasename } from './history'\nimport { RouterConfig } from './router'\nimport stacks from './router/stack'\nimport { addLeadingSlash, routesAlias } from './utils'\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 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 history.go(-option.delta)\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 === 'development' && RouterConfig.mode === 'multi') {\n console.warn('多页面路由模式不支持使用 getCurrentPages 方法!')\n }\n const pages = stacks.get()\n return pages.map(e => ({ ...e, route: e.path || '' }))\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 { PageInstance } from '@tarojs/runtime'\n\nlet pageScrollFn\nlet pageDOM: Element | Window = window\n\nexport function bindPageScroll (page: PageInstance, pageEl: HTMLElement, distance = 50) {\n pageScrollFn && pageEl.removeEventListener('scroll', pageScrollFn)\n pageDOM = pageEl\n\n let isReachBottom = false\n\n pageScrollFn = function () {\n page.onPageScroll && 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, 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","// @ts-nocheck\nimport { AppConfig, initTabBarApis } from '@tarojs/taro'\n\nimport { history } from './history'\n\nexport function initTabbar (config: AppConfig) {\n if (config.tabBar == null) {\n return\n }\n\n // TODO: custom-tab-bar\n const tabbar = 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, PageInstance } from '@tarojs/runtime'\nimport { PageConfig } from '@tarojs/taro'\nimport queryString from 'query-string'\n\nimport type { MpaRouterConfig, Route } from '../../types/router'\nimport { bindPageResize } from '../events/resize'\nimport { bindPageScroll } from '../events/scroll'\nimport { setHistoryMode } from '../history'\nimport { initTabbar } from '../tabbar'\nimport { stripBasename } from '../utils'\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 '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 = 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 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 document.getElementById('app')?.remove()\n\n const app = document.createElement('div')\n app.id = this.appId\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)\n container.appendChild(panel)\n\n document.body.appendChild(container)\n\n initTabbar(this.config)\n } else {\n document.body.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 el?.['componentOnReady']?.()\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 const pageEl = this.getPageContainer(page)\n this.isTabBar && pageEl?.classList.add('taro_tabbar_page')\n this.onReady(page, true)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\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 || window\n }\n\n bindPageEvents (page: PageInstance, pageEl?: HTMLElement | null, config: Partial<PageConfig> = {}) {\n if (!pageEl) {\n pageEl = this.getPageContainer() as HTMLElement\n }\n const distance = config.onReachBottomDistance || this.config.window?.onReachBottomDistance || 50\n bindPageScroll(page, pageEl, distance)\n bindPageResize(page)\n }\n}\n","/* eslint-disable dot-notation */\nimport {\n AppInstance,\n createPageConfig,\n eventCenter, hooks,\n stringify\n} from '@tarojs/runtime'\n\nimport type { MpaRouterConfig } from '../../types/router'\nimport { RouterConfig } from '.'\nimport MultiPageHandler from './multi-page'\n\n// TODO 支持多路由 (APP 生命周期仅触发一次)\n/** Note: 关于多页面应用\n * - 需要配置路由映射(根目录跳转、404 页面……)\n * - app.onPageNotFound 事件不支持\n * - 应用生命周期可能多次触发\n * - TabBar 会多次加载\n * - 不支持路由动画\n */\n\nexport async function createMultiRouter (\n app: AppInstance,\n config: MpaRouterConfig,\n framework?: string\n) {\n RouterConfig.config = config\n const handler = new MultiPageHandler(config)\n const launchParam = handler.getQuery()\n app.onLaunch?.(launchParam)\n\n const pathName = config.pageName\n const pageConfig = handler.pageConfig\n let element\n try {\n element = await pageConfig.load?.()\n } catch (error) {\n throw new Error(error)\n }\n if (!element) return\n let enablePullDownRefresh = config?.window?.enablePullDownRefresh || false\n\n eventCenter.trigger('__taroRouterChange', {\n toLocation: {\n path: pathName\n }\n })\n\n if (pageConfig) {\n document.title = 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, location.pathname, framework, config.PullDownRefresh) : el,\n pathName + stringify(launchParam),\n {},\n loadConfig\n )\n handler.load(page, pageConfig)\n\n app.onShow?.(launchParam)\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 const style = document.createElement('style')\n style.innerHTML = css\n document.getElementsByTagName('head')[0].appendChild(style)\n}\n","/* eslint-disable dot-notation */\nimport { Current, PageInstance, requestAnimationFrame } from '@tarojs/runtime'\nimport { PageConfig, RouterAnimate } from '@tarojs/taro'\nimport queryString from 'query-string'\n\nimport type { Route, SpaRouterConfig } from '../../types/router'\nimport { loadAnimateStyle } from '../animation'\nimport { bindPageResize } from '../events/resize'\nimport { bindPageScroll } from '../events/scroll'\nimport { setHistoryMode } from '../history'\nimport { initTabbar } from '../tabbar'\nimport { addLeadingSlash, routesAlias, stripBasename } from '../utils'\nimport stacks from './stack'\n\nfunction setDisplay (el?: HTMLElement | null, type = '') {\n if (el) {\n el.style.display = type\n }\n}\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 constructor (config: SpaRouterConfig) {\n this.config = config\n this.mount()\n }\n\n get appId () { return '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 homePage () {\n return this.config.entryPagePath || this.routes[0].path || this.basename\n }\n\n get pageConfig () {\n const routePath = stripBasename(this.pathname, this.basename)\n const homePage = 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 get isTabBar () {\n const routePath = 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 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.substr(1)\n }\n\n getQuery (stamp = 0, 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.toString()\n return { ...query, ...options }\n }\n\n mount () {\n setHistoryMode(this.routerMode, this.router.basename)\n document.getElementById('app')?.remove()\n\n this.animation && loadAnimateStyle(this.animationDuration)\n\n const app = document.createElement('div')\n app.id = this.appId\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)\n container.appendChild(panel)\n\n document.body.appendChild(container)\n\n initTabbar(this.config)\n } else {\n document.body.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 el?.['componentOnReady']?.()?.then(() => {\n requestAnimationFrame(() => {\n page.onReady?.()\n pageEl!['__isReady'] = true\n })\n })\n onLoad && (pageEl['__page'] = page)\n }\n }\n\n load (page: PageInstance, pageConfig: Route = {}, stacksIndex = 0) {\n if (!page) return\n\n // NOTE: 页面栈推入太晚可能导致 getCurrentPages 无法获取到当前页面实例\n stacks.push(page)\n const param = this.getQuery(stacks.length, '', page.options)\n let pageEl = this.getPageContainer(page)\n if (pageEl) {\n setDisplay(pageEl)\n this.isTabBar && pageEl.classList.add('taro_tabbar_page')\n this.addAnimation(pageEl, stacksIndex === 0)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\n } else {\n page.onLoad?.(param, () => {\n pageEl = this.getPageContainer(page)\n this.isTabBar && pageEl?.classList.add('taro_tabbar_page')\n this.addAnimation(pageEl, stacksIndex === 0)\n this.onReady(page, true)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\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\n this.unloadTimer = setTimeout(() => {\n this.unloadTimer = null\n this.lastUnloadPage?.onUnload?.()\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 }\n if (delta >= 1) this.unload(stacks.last, delta)\n }\n\n show (page?: PageInstance | null, pageConfig: Route = {}, stacksIndex = 0) {\n if (!page) return\n\n const param = this.getQuery(stacks.length, '', page.options)\n let pageEl = this.getPageContainer(page)\n if (pageEl) {\n setDisplay(pageEl)\n this.addAnimation(pageEl, stacksIndex === 0)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\n } else {\n page.onLoad?.(param, () => {\n pageEl = this.getPageContainer(page)\n this.addAnimation(pageEl, stacksIndex === 0)\n this.onReady(page, false)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\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 setDisplay(this.lastHidePage, 'none')\n }\n this.lastHidePage = pageEl\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null\n setDisplay(this.lastHidePage, 'none')\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 || window\n }\n\n bindPageEvents (page: PageInstance, pageEl?: HTMLElement | null, config: Partial<PageConfig> = {}) {\n if (!pageEl) {\n pageEl = this.getPageContainer() as HTMLElement\n }\n const distance = config.onReachBottomDistance || this.config.window?.onReachBottomDistance || 50\n bindPageScroll(page, pageEl, distance)\n bindPageResize(page)\n }\n}\n","/* eslint-disable dot-notation */\nimport {\n AppInstance,\n createPageConfig, Current,\n eventCenter, hooks,\n stringify\n} from '@tarojs/runtime'\nimport { Action as LocationAction, Listener as LocationListener } from 'history'\nimport UniversalRouter, { Routes } from 'universal-router'\n\nimport type { SpaRouterConfig } from '../../types/router'\nimport { history, prependBasename } from '../history'\nimport { addLeadingSlash, routesAlias, stripBasename } from '../utils'\nimport { RouterConfig } from '.'\nimport PageHandler from './page'\nimport stacks from './stack'\n\nexport function createRouter (\n app: AppInstance,\n config: SpaRouterConfig,\n framework?: string\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 = handler.getQuery(stacks.length)\n app.onLaunch?.(launchParam)\n\n const render: LocationListener = async ({ location, action }) => {\n handler.pathname = decodeURI(location.pathname)\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 app.onPageNotFound?.({\n path: handler.pathname\n })\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 eventCenter.trigger('__taroRouterChange', {\n toLocation: {\n path: handler.pathname\n }\n })\n\n if (pageConfig) {\n document.title = 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 let shouldLoad = false\n\n if (action === 'POP') {\n // NOTE: 浏览器事件退后多次时,该事件只会被触发一次\n const prevIndex = stacks.getPrevIndex(pathname)\n const delta = stacks.getDelta(pathname)\n handler.unload(currentPage, delta, prevIndex > -1)\n if (prevIndex > -1) {\n handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex)\n } else {\n shouldLoad = true\n }\n } else {\n if (handler.isTabBar) {\n if (handler.isSamePage(currentPage)) return\n const prevIndex = stacks.getPrevIndex(pathname, 0)\n handler.hide(currentPage)\n if (prevIndex > -1) {\n // NOTE: tabbar 页且之前出现过,直接复用\n return handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex)\n }\n } else if (action === 'REPLACE') {\n const delta = stacks.getDelta(pathname)\n // NOTE: 页面路由记录并不会清空,只是移除掉缓存的 stack 以及页面\n handler.unload(currentPage, delta)\n } else if (action === 'PUSH') {\n handler.hide(currentPage)\n }\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 const page = createPageConfig(\n enablePullDownRefresh ? hooks.call('createPullDownComponent', el, location.pathname, framework, handler.PullDownRefresh) : el,\n pathname + stringify(handler.getQuery(stacksIndex)),\n {},\n loadConfig\n )\n if (params) page.options = params\n return handler.load(page, pageConfig, stacksIndex)\n }\n }\n\n const routePath = stripBasename(history.location.pathname, handler.basename)\n if (routePath === '/' || 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)\n\n return history.listen(render)\n}\n"],"names":["history","Action","createBrowserHistory","createHashHistory","parsePath","initTabBarApis","queryString","Current","eventCenter","createPageConfig","hooks","stringify","requestAnimationFrame","UniversalRouter","LocationAction"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/utils/index.ts","../src/router/index.ts","../src/history.ts","../src/router/stack.ts","../src/api.ts","../src/utils/navigate.ts","../src/events/resize.ts","../src/events/scroll.ts","../src/tabbar.ts","../src/router/multi-page.ts","../src/router/mpa.ts","../src/animation.ts","../src/router/page.ts","../src/router/spa.ts"],"sourcesContent":["// 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\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 type { MpaRouterConfig, SpaRouterConfig } from '../../types/router'\nimport { addLeadingSlash } from '../utils'\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 => addLeadingSlash(e) === url) !== -1\n }\n}\n","import { IH5RouterConfig } from '@tarojs/taro/types/compile'\nimport { Action, Blocker, BrowserHistoryOptions, createBrowserHistory, createHashHistory, History, Listener, Location, Path, To } from 'history'\n\nimport type { StateEvent } from '../types/history'\nimport { RouterConfig } from './router'\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.pathname = 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\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 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\nconst stacks = new Stacks()\n\nexport default stacks\n","import Taro from '@tarojs/taro'\nimport { parsePath } from 'history'\n\nimport type { NavigateBackOption, Option } from '../types/api'\nimport { history, prependBasename } from './history'\nimport { RouterConfig } from './router'\nimport stacks from './router/stack'\nimport { addLeadingSlash, routesAlias } from './utils'\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 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 history.go(-option.delta)\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 === 'development' && RouterConfig.mode === 'multi') {\n console.warn('多页面路由模式不支持使用 getCurrentPages 方法!')\n }\n const pages = stacks.get()\n return pages.map(e => ({ ...e, route: e.path || '' }))\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 { PageInstance } from '@tarojs/runtime'\n\nlet pageScrollFn\nlet pageDOM: Element | Window = window\n\nexport function bindPageScroll (page: PageInstance, pageEl: HTMLElement, distance = 50) {\n pageScrollFn && pageEl.removeEventListener('scroll', pageScrollFn)\n pageDOM = pageEl\n\n let isReachBottom = false\n\n pageScrollFn = 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, 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","// @ts-nocheck\nimport { AppConfig, initTabBarApis } from '@tarojs/taro'\n\nimport { history } from './history'\n\nexport function initTabbar (config: AppConfig) {\n if (config.tabBar == null) {\n return\n }\n\n // TODO: custom-tab-bar\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, PageInstance } from '@tarojs/runtime'\nimport type { PageConfig } from '@tarojs/taro'\nimport queryString from 'query-string'\n\nimport type { MpaRouterConfig, Route } from '../../types/router'\nimport { bindPageResize } from '../events/resize'\nimport { bindPageScroll } from '../events/scroll'\nimport { setHistoryMode } from '../history'\nimport { initTabbar } from '../tabbar'\nimport { stripBasename } from '../utils'\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 '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 = 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 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 document.getElementById('app')?.remove()\n\n const app = document.createElement('div')\n app.id = this.appId\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)\n container.appendChild(panel)\n\n document.body.appendChild(container)\n\n initTabbar(this.config)\n } else {\n document.body.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 el?.['componentOnReady']?.()\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 const pageEl = this.getPageContainer(page)\n this.isTabBar && pageEl?.classList.add('taro_tabbar_page')\n this.onReady(page, true)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\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 || window\n }\n\n bindPageEvents (page: PageInstance, pageEl?: HTMLElement | null, config: Partial<PageConfig> = {}) {\n if (!pageEl) {\n pageEl = this.getPageContainer() as HTMLElement\n }\n const distance = config.onReachBottomDistance || this.config.window?.onReachBottomDistance || 50\n bindPageScroll(page, pageEl, distance)\n bindPageResize(page)\n }\n}\n","/* eslint-disable dot-notation */\nimport {\n AppInstance,\n createPageConfig,\n eventCenter, hooks,\n stringify\n} from '@tarojs/runtime'\n\nimport type { MpaRouterConfig } from '../../types/router'\nimport { setTitle } from '../utils/navigate'\nimport { RouterConfig } from '.'\nimport MultiPageHandler from './multi-page'\n\n// TODO 支持多路由 (APP 生命周期仅触发一次)\n/** Note: 关于多页面应用\n * - 需要配置路由映射(根目录跳转、404 页面……)\n * - app.onPageNotFound 事件不支持\n * - 应用生命周期可能多次触发\n * - TabBar 会多次加载\n * - 不支持路由动画\n */\n\nexport async function createMultiRouter (\n app: AppInstance,\n config: MpaRouterConfig,\n framework?: string\n) {\n RouterConfig.config = config\n const handler = new MultiPageHandler(config)\n const launchParam = handler.getQuery()\n app.onLaunch?.(launchParam)\n app.onError && window.addEventListener('error', e => app.onError?.(e.message))\n\n const pathName = config.pageName\n const pageConfig = handler.pageConfig\n let element\n try {\n element = await pageConfig.load?.()\n } catch (error) {\n throw new Error(error)\n }\n if (!element) return\n let enablePullDownRefresh = config?.window?.enablePullDownRefresh || false\n\n eventCenter.trigger('__taroRouterChange', {\n toLocation: {\n path: pathName\n }\n })\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, location.pathname, framework, config.PullDownRefresh) : el,\n pathName + stringify(launchParam),\n {},\n loadConfig\n )\n handler.load(page, pageConfig)\n\n app.onShow?.(launchParam)\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 const style = document.createElement('style')\n style.innerHTML = css\n document.getElementsByTagName('head')[0].appendChild(style)\n}\n","/* eslint-disable dot-notation */\nimport { Current, PageInstance, requestAnimationFrame } from '@tarojs/runtime'\nimport type { PageConfig, RouterAnimate } from '@tarojs/taro'\nimport queryString from 'query-string'\n\nimport type { Route, SpaRouterConfig } from '../../types/router'\nimport { loadAnimateStyle } from '../animation'\nimport { bindPageResize } from '../events/resize'\nimport { bindPageScroll } from '../events/scroll'\nimport { setHistoryMode } from '../history'\nimport { initTabbar } from '../tabbar'\nimport { addLeadingSlash, routesAlias, stripBasename, stripTrailing } from '../utils'\nimport stacks from './stack'\n\nfunction setDisplay (el?: HTMLElement | null, type = '') {\n if (el) {\n el.style.display = type\n }\n}\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 constructor (config: SpaRouterConfig) {\n this.config = config\n this.mount()\n }\n\n get appId () { return '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 homePage () {\n return this.config.entryPagePath || this.routes[0].path || this.basename\n }\n\n get pageConfig () {\n const routePath = stripBasename(this.pathname, this.basename)\n const homePage = 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 get isTabBar () {\n const routePath = 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 => 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.substr(1)\n }\n\n getQuery (stamp = 0, 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.toString()\n return { ...query, ...options }\n }\n\n mount () {\n setHistoryMode(this.routerMode, this.router.basename)\n document.getElementById('app')?.remove()\n\n this.animation && loadAnimateStyle(this.animationDuration)\n\n const app = document.createElement('div')\n app.id = this.appId\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)\n container.appendChild(panel)\n\n document.body.appendChild(container)\n\n initTabbar(this.config)\n } else {\n document.body.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 el?.['componentOnReady']?.()?.then(() => {\n requestAnimationFrame(() => {\n page.onReady?.()\n pageEl!['__isReady'] = true\n })\n })\n onLoad && (pageEl['__page'] = page)\n }\n }\n\n load (page: PageInstance, pageConfig: Route = {}, stacksIndex = 0) {\n if (!page) return\n\n // NOTE: 页面栈推入太晚可能导致 getCurrentPages 无法获取到当前页面实例\n stacks.push(page)\n const param = this.getQuery(stacks.length, '', page.options)\n let pageEl = this.getPageContainer(page)\n if (pageEl) {\n setDisplay(pageEl)\n this.isTabBar && pageEl.classList.add('taro_tabbar_page')\n this.addAnimation(pageEl, stacksIndex === 0)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\n } else {\n page.onLoad?.(param, () => {\n pageEl = this.getPageContainer(page)\n this.isTabBar && pageEl?.classList.add('taro_tabbar_page')\n this.addAnimation(pageEl, stacksIndex === 0)\n this.onReady(page, true)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\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\n this.unloadTimer = setTimeout(() => {\n this.unloadTimer = null\n this.lastUnloadPage?.onUnload?.()\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 }\n if (delta >= 1) this.unload(stacks.last, delta)\n }\n\n show (page?: PageInstance | null, pageConfig: Route = {}, stacksIndex = 0) {\n if (!page) return\n\n const param = this.getQuery(stacks.length, '', page.options)\n let pageEl = this.getPageContainer(page)\n if (pageEl) {\n setDisplay(pageEl)\n this.addAnimation(pageEl, stacksIndex === 0)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\n } else {\n page.onLoad?.(param, () => {\n pageEl = this.getPageContainer(page)\n this.addAnimation(pageEl, stacksIndex === 0)\n this.onReady(page, false)\n page.onShow?.()\n this.bindPageEvents(page, pageEl, pageConfig)\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 setDisplay(this.lastHidePage, 'none')\n }\n this.lastHidePage = pageEl\n this.hideTimer = setTimeout(() => {\n this.hideTimer = null\n setDisplay(this.lastHidePage, 'none')\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 || window\n }\n\n bindPageEvents (page: PageInstance, pageEl?: HTMLElement | null, config: Partial<PageConfig> = {}) {\n if (!pageEl) {\n pageEl = this.getPageContainer() as HTMLElement\n }\n const distance = config.onReachBottomDistance || this.config.window?.onReachBottomDistance || 50\n bindPageScroll(page, pageEl, distance)\n bindPageResize(page)\n }\n}\n","/* eslint-disable dot-notation */\nimport {\n AppInstance,\n createPageConfig, Current,\n eventCenter, hooks,\n stringify\n} from '@tarojs/runtime'\nimport { Action as LocationAction, Listener as LocationListener } from 'history'\nimport UniversalRouter, { Routes } from 'universal-router'\n\nimport type { SpaRouterConfig } from '../../types/router'\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\nexport function createRouter (\n app: AppInstance,\n config: SpaRouterConfig,\n framework?: string\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 = handler.getQuery(stacks.length)\n app.onLaunch?.(launchParam)\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 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 app.onPageNotFound?.({\n path: handler.pathname\n })\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 eventCenter.trigger('__taroRouterChange', {\n toLocation: {\n path: handler.pathname\n }\n })\n\n if (pageConfig) {\n document.title = pageConfig.navigationBarTitleText ?? document.title\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 let shouldLoad = false\n\n 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 handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex)\n } else {\n shouldLoad = true\n }\n }\n } else {\n if (handler.isTabBar) {\n if (handler.isSamePage(currentPage)) return\n const prevIndex = stacks.getPrevIndex(pathname, 0)\n handler.hide(currentPage)\n if (prevIndex > -1) {\n // NOTE: tabbar 页且之前出现过,直接复用\n return handler.show(stacks.getItem(prevIndex), pageConfig, prevIndex)\n }\n } else if (action === 'REPLACE') {\n const delta = stacks.getDelta(pathname)\n // NOTE: 页面路由记录并不会清空,只是移除掉缓存的 stack 以及页面\n handler.unload(currentPage, delta)\n } else if (action === 'PUSH') {\n handler.hide(currentPage)\n }\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 const page = createPageConfig(\n enablePullDownRefresh ? hooks.call('createPullDownComponent', el, location.pathname, framework, handler.PullDownRefresh) : el,\n pathname + stringify(handler.getQuery(stacksIndex)),\n {},\n loadConfig\n )\n if (params) page.options = params\n return handler.load(page, pageConfig, stacksIndex)\n }\n }\n\n const routePath = stripBasename(history.location.pathname, handler.basename)\n if (routePath === '/' || 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)\n\n return history.listen(render)\n}\n"],"names":["history","Action","createBrowserHistory","createHashHistory","parsePath","MobileDetect","initTabBarApis","queryString","Current","eventCenter","createPageConfig","hooks","stringify","requestAnimationFrame","UniversalRouter","LocationAction"],"mappings":"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"}