UNPKG

81.4 kBSource Map (JSON)View Raw
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 { addLeadingSlash } from '../utils'\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 => addLeadingSlash(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.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 { 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 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 !== 'production' && 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 { Current, PageInstance } from '@tarojs/runtime'\n\nconst pageScrollFn = {}\nlet pageDOM: Element | Window = window\n\nexport function bindPageScroll (page: PageInstance, pageEl: HTMLElement, distance = 50) {\n const pagePath = (page ? page?.path : Current.router?.path) as string\n pageScrollFn[pagePath] && pageEl.removeEventListener('scroll', pageScrollFn[pagePath])\n pageDOM = pageEl\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","// @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 queryString from 'query-string'\n\nimport { bindPageResize } from '../events/resize'\nimport { bindPageScroll } from '../events/scroll'\nimport { setHistoryMode } from '../history'\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 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 const appId = this.appId\n let app = document.getElementById(appId)\n if (!app) {\n app = document.createElement('div')\n app.id = appId\n }\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 { setTitle } from '../utils/navigate'\nimport { RouterConfig } from '.'\nimport MultiPageHandler from './multi-page'\n\nimport type { MpaRouterConfig } from '../../types/router'\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: Taro.getLaunchOptionsSync.LaunchOptions = {\n path: config.pageName, // 多页面模式没新开一个页面相当于重启,所以直接使用当前页面路径\n query: handler.getQuery(),\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, location.pathname, framework, config.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","/**\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 queryString from 'query-string'\n\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\nimport type { PageConfig, RouterAnimate } from '@tarojs/taro'\nimport type { Route, SpaRouterConfig } from '../../types/router'\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 public homePage: string\n\n constructor (config: SpaRouterConfig) {\n this.config = config\n this.homePage = this.getHomePage()\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 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 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 => stripTrailing(t.pagePath) === pagePath)\n }\n\n getHomePage () {\n const routePath = addLeadingSlash(stripBasename(this.routes[0].path, this.basename))\n const alias = Object.entries(this.customRoutes).find(\n ([key]) => key === routePath\n )?.[1] || routePath\n return this.config.entryPagePath || (typeof alias === 'string' ? alias : alias[0]) || this.basename\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\n this.animation && loadAnimateStyle(this.animationDuration)\n\n const appId = this.appId\n let app = document.getElementById(appId)\n if (!app) {\n app = document.createElement('div')\n app.id = appId\n }\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 { 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 { SpaRouterConfig } from '../../types/router'\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: Taro.getLaunchOptionsSync.LaunchOptions = {\n path: handler.homePage,\n query: handler.getQuery(stacks.length),\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 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 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 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 = 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","initTabBarApis","queryString","eventCenter","createPageConfig","hooks","stringify","requestAnimationFrame","UniversalRouter","LocationAction"],"mappings":"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"}
\No newline at end of file