From 7fefb813a0f4b3f63cff7361eeed2bf8a82f8f51 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Tue, 26 Jan 2021 10:20:35 +0100 Subject: [PATCH 001/197] chore(changelog): 3.5.1 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 910195326..88598c736 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## [3.5.1](https://github.com/vuejs/vue-router/compare/v3.5.0...v3.5.1) (2021-01-26) + +### Bug Fixes + +- **warn:** only warn if "tag" or "event" is used ([#3458](https://github.com/vuejs/vue-router/issues/3458)) ([b7a31b9](https://github.com/vuejs/vue-router/commit/b7a31b9)), closes [#3457](https://github.com/vuejs/vue-router/issues/3457) + # [3.5.0](https://github.com/vuejs/vue-router/compare/v3.4.9...v3.5.0) (2021-01-25) ### Features From 2e4508a7551766654c5fa39d462ce48e6e80cd7f Mon Sep 17 00:00:00 2001 From: lisheng Date: Thu, 28 Jan 2021 17:48:34 +0800 Subject: [PATCH 002/197] docs: add type to the code of some md files (#3460) --- docs/api/README.md | 4 ++-- docs/fr/api/README.md | 4 ++-- docs/ja/api/README.md | 4 ++-- docs/ru/api/README.md | 4 ++-- docs/zh/api/README.md | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/api/README.md b/docs/api/README.md index 52a3b7fd6..7de432ca1 100644 --- a/docs/api/README.md +++ b/docs/api/README.md @@ -289,11 +289,11 @@ Since it's just a component, it works with `` and ``. Wh Signature: - ``` + ```ts type PositionDescriptor = { x: number, y: number } | { selector: string } | - ?{} + void type scrollBehaviorHandler = ( to: Route, diff --git a/docs/fr/api/README.md b/docs/fr/api/README.md index a259f9aec..316a62af9 100644 --- a/docs/fr/api/README.md +++ b/docs/fr/api/README.md @@ -221,11 +221,11 @@ Le composant `` est un composant fonctionnel qui fait le rendu du c Signature : - ``` + ```ts type PositionDescriptor = { x: number, y: number } | { selector: string } | - ?{} + void type scrollBehaviorHandler = ( to: Route, diff --git a/docs/ja/api/README.md b/docs/ja/api/README.md index 9aca6a995..cbe66b6a3 100644 --- a/docs/ja/api/README.md +++ b/docs/ja/api/README.md @@ -268,11 +268,11 @@ name ではないプロパティも描画されるコンポーネントに渡さ シグネチャ: - ``` + ```ts type PositionDescriptor = { x: number, y: number } | { selector: string } | - ?{} + void type scrollBehaviorHandler = ( to: Route, diff --git a/docs/ru/api/README.md b/docs/ru/api/README.md index 151f155a2..e0995ac51 100644 --- a/docs/ru/api/README.md +++ b/docs/ru/api/README.md @@ -268,11 +268,11 @@ sidebar: auto Сигнатура: - ``` + ```ts type PositionDescriptor = { x: number, y: number } | { selector: string } | - ?{} + void type scrollBehaviorHandler = ( to: Route, diff --git a/docs/zh/api/README.md b/docs/zh/api/README.md index 561796df5..1f032ee23 100644 --- a/docs/zh/api/README.md +++ b/docs/zh/api/README.md @@ -270,11 +270,11 @@ sidebar: auto 签名: - ``` + ```ts type PositionDescriptor = { x: number, y: number } | { selector: string } | - ?{} + void type scrollBehaviorHandler = ( to: Route, From 6b43d87a37fe17634d42bfd0953366dab98e681d Mon Sep 17 00:00:00 2001 From: Ashley L Hill Date: Sun, 7 Feb 2021 09:16:22 -0500 Subject: [PATCH 003/197] docs(link): add `custom` prop to samples (#3470) To use a cusom tag for `router-link`, v4.0.0+ requires the use of the `custom` prop. The `custom` prop is functional, however it is not in the code examples. --- docs/api/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/api/README.md b/docs/api/README.md index 7de432ca1..e40710a6f 100644 --- a/docs/api/README.md +++ b/docs/api/README.md @@ -23,6 +23,7 @@ sidebar: auto ```html
  • Date: Thu, 18 Feb 2021 23:12:24 +0100 Subject: [PATCH 004/197] docs: add sponsors --- docs/.vuepress/components/sponsors.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/.vuepress/components/sponsors.json b/docs/.vuepress/components/sponsors.json index 206e892e1..b1dbdaa33 100644 --- a/docs/.vuepress/components/sponsors.json +++ b/docs/.vuepress/components/sponsors.json @@ -1,4 +1,11 @@ { + "gold": [ + { + "href": "https://passionatepeople.io/", + "alt": "Passionate People", + "imgSrc": "https://img2.storyblok.com/0x200/filters::format(webp)/f/86387/x/4cf6a70a8c/logo-white-text.svg" + } + ], "silver": [ { "href": "https://www.vuemastery.com/", @@ -6,9 +13,21 @@ "imgSrc": "https://www.vuemastery.com/images/vuemastery.svg" }, { - "imgSrc": "https://cdn.vuetifyjs.com/docs/images/logos/vuetify-logo-light-text.svg", "href": "https://www.vuetifyjs.com/", + "imgSrc": "https://cdn.vuetifyjs.com/docs/images/logos/vuetify-logo-light-text.svg", "alt": "Vuetify" } + ], + "bronze": [ + { + "href": "https://storyblok.com", + "imgSrc": "https://a.storyblok.com/f/51376/3856x824/fea44d52a9/colored-full.png", + "alt": "Storyblok" + }, + { + "href": "https://nuxtjs.org", + "imgSrc": "https://nuxtjs.org/logos/nuxtjs-typo-white.svg", + "alt": "NuxtJS" + } ] } From cdf0d5d4497a8e246dbf1512102516b692a409aa Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Sat, 27 Feb 2021 22:03:58 +0100 Subject: [PATCH 005/197] docs: sponsors update --- docs/.vuepress/components/HomeSponsors.vue | 43 +++---------------- .../components/HomeSponsorsGroup.vue | 43 +++++++++++++++++++ docs/.vuepress/components/sponsors.json | 21 ++++++--- 3 files changed, 65 insertions(+), 42 deletions(-) create mode 100644 docs/.vuepress/components/HomeSponsorsGroup.vue diff --git a/docs/.vuepress/components/HomeSponsors.vue b/docs/.vuepress/components/HomeSponsors.vue index 7b6ee941f..8790be802 100644 --- a/docs/.vuepress/components/HomeSponsors.vue +++ b/docs/.vuepress/components/HomeSponsors.vue @@ -1,39 +1,9 @@ + @@ -23,6 +43,7 @@ import ParentLayout from '@parent-theme/layouts/Layout.vue' import CarbonAds from './components/CarbonAds.vue' import BuySellAds from './components/BuySellAds.vue' +import sponsors from '../components/sponsors.json' export default { name: 'Layout', @@ -31,6 +52,10 @@ export default { ParentLayout, CarbonAds, BuySellAds + }, + + created() { + this.sponsors = sponsors } } @@ -53,3 +78,22 @@ export default { } } + + From 394a3b6cce5e395ae4ccf3e2efb0c115d492978c Mon Sep 17 00:00:00 2001 From: Max Novikov Date: Thu, 27 May 2021 15:35:03 +0300 Subject: [PATCH 040/197] fix(types): added missing router.match (#3554) --- types/router.d.ts | 1 + types/test/index.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/types/router.d.ts b/types/router.d.ts index e6d52425f..80de5e224 100644 --- a/types/router.d.ts +++ b/types/router.d.ts @@ -43,6 +43,7 @@ export declare class VueRouter { go(n: number): void back(): void forward(): void + match (raw: RawLocation, current?: Route, redirectedFrom?: Location): Route getMatchedComponents(to?: RawLocation | Route): Component[] onReady(cb: Function, errorCb?: ErrorHandler): void onError(cb: ErrorHandler): void diff --git a/types/test/index.ts b/types/test/index.ts index 3405e0765..44de15098 100644 --- a/types/test/index.ts +++ b/types/test/index.ts @@ -229,6 +229,8 @@ const Components: ( | AsyncComponent )[] = router.getMatchedComponents() +const match: Route = router.match('/more'); + const vm = new Vue({ router, template: ` From 56f750b3bdbf3fec2e0b6bfcee1d3fac35620d4a Mon Sep 17 00:00:00 2001 From: Okuto Oyama <0910yama@gmail.com> Date: Sat, 29 May 2021 22:12:29 +0900 Subject: [PATCH 041/197] docs: aria-current-value type `"true"` and `"false"` (#3558) --- docs/api/README.md | 2 +- docs/ja/api/README.md | 2 +- docs/ru/api/README.md | 2 +- docs/zh/api/README.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/api/README.md b/docs/api/README.md index edb0b27e3..59432d493 100644 --- a/docs/api/README.md +++ b/docs/api/README.md @@ -188,7 +188,7 @@ If you add a `target="_blank"` to your `a` element, you must omit the `@click="n ### aria-current-value -- type: `'page' | 'step' | 'location' | 'date' | 'time'` +- type: `'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'` - default: `"page"` Configure the value of `aria-current` when the link is active with exact match. It must be one of the [allowed values for aria-current](https://www.w3.org/TR/wai-aria-1.2/#aria-current) in the ARIA spec. In most cases, the default of `page` should be the best fit. diff --git a/docs/ja/api/README.md b/docs/ja/api/README.md index cbe66b6a3..d56b8c890 100644 --- a/docs/ja/api/README.md +++ b/docs/ja/api/README.md @@ -165,7 +165,7 @@ sidebar: auto ### aria-current-value -- 型: `'page' | 'step' | 'location' | 'date' | 'time'` +- 型: `'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'` - デフォルト: `"page"` 完全一致によってリンクがアクティブになっているときに `aria-current` の値を設定します。ARIA spec において[aria-current で許可されている値](https://www.w3.org/TR/wai-aria-1.2/#aria-current)の1つでなければなりません。ほとんどの場合、デフォルト`page` が最適です。 diff --git a/docs/ru/api/README.md b/docs/ru/api/README.md index 4a08cda7f..6a00d2531 100644 --- a/docs/ru/api/README.md +++ b/docs/ru/api/README.md @@ -188,7 +188,7 @@ sidebar: auto ### aria-current-value -- тип: `'page' | 'step' | 'location' | 'date' | 'time'` +- тип: `'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'` - по умолчанию: `"page"` Настройка значения `aria-current` когда ссылка активна по точному (exact) совпадению. Это должно быть одно из [разрешённых значений для aria-current](https://www.w3.org/TR/wai-aria-1.2/#aria-current) спецификации ARIA. В большинстве случаев наиболее подходящим значением будет `page`. diff --git a/docs/zh/api/README.md b/docs/zh/api/README.md index a3da5bde4..61540b45c 100644 --- a/docs/zh/api/README.md +++ b/docs/zh/api/README.md @@ -170,7 +170,7 @@ sidebar: auto ### aria-current-value -- 类型: `'page' | 'step' | 'location' | 'date' | 'time'` +- 类型: `'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'` - 默认值: `"page"` 当链接根据精确匹配规则激活时配置的 `aria-current` 的值。这个值应该是 ARIA 规范中[允许的 aria-current 的值](https://www.w3.org/TR/wai-aria-1.2/#aria-current)。在绝大多数场景下,默认值 `page` 应该是最合适的。 From 11dd184dc6a872c6399977fa4b7c259225ce4834 Mon Sep 17 00:00:00 2001 From: Aideen Nasirishargh Date: Mon, 31 May 2021 02:53:45 -0700 Subject: [PATCH 042/197] fix(history): stricter check of base in HTML5 (#3556) Co-authored-by: Eduardo San Martin Morote --- src/history/html5.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/history/html5.js b/src/history/html5.js index 9af347fe8..faaa02fcd 100644 --- a/src/history/html5.js +++ b/src/history/html5.js @@ -87,7 +87,13 @@ export class HTML5History extends History { export function getLocation (base: string): string { let path = window.location.pathname - if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 0) { + const pathLowerCase = path.toLowerCase() + const baseLowerCase = base.toLowerCase() + // base="/a" shouldn't turn path="/app" into "/a/pp" + // https://github.com/vuejs/vue-router/issues/3555 + // so we ensure the trailing slash in the base + if (base && ((pathLowerCase === baseLowerCase) || + (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { path = path.slice(base.length) } return (path || '/') + window.location.search + window.location.hash From 046a0937e3749e0284678929a57c9d2839910dab Mon Sep 17 00:00:00 2001 From: Nico Devs <3766839+nicodevs@users.noreply.github.com> Date: Mon, 14 Jun 2021 10:57:42 -0300 Subject: [PATCH 043/197] docs: add VueSchool Summer Sale banner (#3564) --- docs/.vuepress/components/HomeSponsors.vue | 10 +- .../public/images/vueschool/close.svg | 7 + .../public/images/vueschool/vs-backpack.png | Bin 0 -> 6234 bytes .../public/images/vueschool/vs-iso.svg | 13 ++ .../public/images/vueschool/vs-logo.svg | 16 ++ docs/.vuepress/theme/Layout.vue | 104 ++++++----- docs/.vuepress/theme/components/BannerTop.vue | 170 ++++++++++++++++++ 7 files changed, 276 insertions(+), 44 deletions(-) create mode 100644 docs/.vuepress/public/images/vueschool/close.svg create mode 100644 docs/.vuepress/public/images/vueschool/vs-backpack.png create mode 100644 docs/.vuepress/public/images/vueschool/vs-iso.svg create mode 100644 docs/.vuepress/public/images/vueschool/vs-logo.svg create mode 100644 docs/.vuepress/theme/components/BannerTop.vue diff --git a/docs/.vuepress/components/HomeSponsors.vue b/docs/.vuepress/components/HomeSponsors.vue index 8790be802..8e3ce0721 100644 --- a/docs/.vuepress/components/HomeSponsors.vue +++ b/docs/.vuepress/components/HomeSponsors.vue @@ -27,11 +27,17 @@ export default { From c51bf2f2837736beb320db8463e1149d60db35fa Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Tue, 15 Jun 2021 16:09:31 +0200 Subject: [PATCH 044/197] docs: add logos --- docs/.vuepress/components/sponsors.json | 12 ++++++------ .../public/sponsors/vuetify-logo-dark-text.svg | 7 +++++++ .../public/sponsors/vuetify-logo-light-text.svg | 7 +++++++ 3 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 docs/.vuepress/public/sponsors/vuetify-logo-dark-text.svg create mode 100644 docs/.vuepress/public/sponsors/vuetify-logo-light-text.svg diff --git a/docs/.vuepress/components/sponsors.json b/docs/.vuepress/components/sponsors.json index c4c834082..388065500 100644 --- a/docs/.vuepress/components/sponsors.json +++ b/docs/.vuepress/components/sponsors.json @@ -11,6 +11,12 @@ "alt": "VueJobs", "imgSrcLight": "/sponsors/vuejobs.png", "imgSrcDark": "/sponsors/vuejobs.png" + }, + { + "href": "https://www.vuetifyjs.com/", + "imgSrcLight": "/sponsors/vuetify-logo-light-text.svg", + "imgSrcDark": "/sponsors/vuetify-logo-dark-text.svg", + "alt": "Vuetify" } ], "silver": [ @@ -20,12 +26,6 @@ "imgSrcLight": "https://www.vuemastery.com/images/vuemastery.svg", "imgSrcDark": "https://www.vuemastery.com/images/vuemastery.svg" }, - { - "href": "https://www.vuetifyjs.com/", - "imgSrcLight": "https://cdn.vuetifyjs.com/docs/images/logos/vuetify-logo-light-text.svg", - "imgSrcDark": "https://cdn.vuetifyjs.com/docs/images/logos/vuetify-logo-light-text.svg", - "alt": "Vuetify" - }, { "href": "https://www.codestream.com/?utm_source=github&utm_campaign=vuerouter&utm_medium=banner", "alt": "CodeStream", diff --git a/docs/.vuepress/public/sponsors/vuetify-logo-dark-text.svg b/docs/.vuepress/public/sponsors/vuetify-logo-dark-text.svg new file mode 100644 index 000000000..6f4ff0708 --- /dev/null +++ b/docs/.vuepress/public/sponsors/vuetify-logo-dark-text.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/.vuepress/public/sponsors/vuetify-logo-light-text.svg b/docs/.vuepress/public/sponsors/vuetify-logo-light-text.svg new file mode 100644 index 000000000..33f442df8 --- /dev/null +++ b/docs/.vuepress/public/sponsors/vuetify-logo-light-text.svg @@ -0,0 +1,7 @@ + + + + + + + From a9e44400d3aea9ba1403b91d76c358c746ac08a3 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Tue, 15 Jun 2021 16:12:49 +0200 Subject: [PATCH 045/197] docs: update sponsors --- docs/.vuepress/components/sponsors.json | 4 ++-- .../public/sponsors/passionate-people-dark.png | Bin 0 -> 36691 bytes .../public/sponsors/passionate-people-light.png | Bin 0 -> 51897 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 docs/.vuepress/public/sponsors/passionate-people-dark.png create mode 100644 docs/.vuepress/public/sponsors/passionate-people-light.png diff --git a/docs/.vuepress/components/sponsors.json b/docs/.vuepress/components/sponsors.json index 388065500..a06ca759f 100644 --- a/docs/.vuepress/components/sponsors.json +++ b/docs/.vuepress/components/sponsors.json @@ -3,8 +3,8 @@ { "href": "https://passionatepeople.io/", "alt": "Passionate People", - "imgSrcLight": "https://img2.storyblok.com/672x0/filters::format(webp)/f/86387/x/21aa32ed18/logo-normal.svg", - "imgSrcDark": "https://img2.storyblok.com/0x200/filters::format(webp)/f/86387/x/4cf6a70a8c/logo-white-text.svg" + "imgSrcLight": "/sponsors/passionate-people-light.png", + "imgSrcDark": "/sponsors/passionate-people-dark.png" }, { "href": "https://vuejobs.com/?utm_source=vuerouter&utm_campaign=sponsor", diff --git a/docs/.vuepress/public/sponsors/passionate-people-dark.png b/docs/.vuepress/public/sponsors/passionate-people-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..028baf65b8d4e4531d1fc4247dfe54d0ce8625d9 GIT binary patch literal 36691 zcmd2?^;eW_w3SAX?iNr|=}v(mloDZR7?p16Zs`t1YEYUX29U0yLs}#U7#hi;2N>ew zch|aq!#!)g@0#D{tbO*g&vW99d8?&LL_kmQ=+Psh*J^-wj~-#NKl~oV$9;H9iLK5* zdXz-}8la%(le3@e{hbjwe=k2ivVVB+vVHRPUnV_DieB>x0|WyVgV+n`=J~lzmsdQiZ-MntUUF|>nhDk2?E(jZFETKA6&&+3HQ&~R{V0E+e>&u9F z{Tma!z6c??AFLB>qoaG4dow+2r%kEz<<<_oQQQ@@NH6mL?1C$Xmisy6H)gHdrX=$V ziwo^wNM&W^WD^YO`!p=_hxb-yp}(^U-Tp3o3l#xxkJUn)`8aU^g{2$qdopjIu9MQg zT>f3;Q=Mv6{xy>-=GE(eu6>Jq_R-S&?U$_?eV4roqgu!LH$N5izpa*+<`8KHR^-8F z8!fc%)8N}Eq+|9M_`D!5d}f~1>--PkpdF}VRv!xB#^~5au3T zC5uf_Q=He%G0m;H{BJ{KVk*{_neIq4|gV(NDo41Yu9fL;QRS zNq_rTk_tszcVd4plVd#r?(IPsh9T|ep%Um73l2je1TzXVnP%n@E=ff zSPwukN?_FP{?TPW!QCfuywtX+`o&m2zfb6Xkjr@?-+o%!kzhh&owxiNxvo8h?xn7U z!v{Uj-q%X%O+PL50mmXkw~bO**#s_AXU|q(c*gZ^IC>V7`SihDPot5(g?$-s0?N8F zq+}{pG(&86A1AlIJ!Sa|nyxBGnm0O|%{WPtar_67{{uwvpCKYsyY;^vlNIjc8yAE7 zQZ<~;?TTT@FY`=HoYvw_c}u4gDpIp@Z&23>XD$xxzqZ(pWzOG)s{Nul4y2=`k0ow` zeErzQFB75loffA6Qo0hy`6cM-d12w>JgGm}-)qeQP+{`BzO%DRIsU>KVA@ z`Y(kA0(QAs|Jjf9XCDhg9zr$a+En-J1Y=-I91%3cnwgmZ!ge|Z|N?;)K|_mD3v+;yT(W1Yg?i3=-)CF zwiy*#aoFNojBp491BcAM+WC2GLV)Fp)p8tgQp6SjmW<{SsUndyedKWZ+yIs(b) z3>oQz2WZ1%JQeR!@0rNDPGw}qd0TRC4ie(giTQvKdJzFRPjllfA3GOn+YrH3WA@b| z@^g^aa0{Zs8}yGV9F$Dy{|S)*G5Gvr;Xij~wz|r`ZQfsPPJa1m-KH7$oA;b* zcf1|2Z#fK>5t)B`6I;ibnT{`%zgh6s2cQGs%V5tKCX4(*LC^8!4H>qAo{`aOE2|c9?bdAC0)=Y(`}=FsMk`G(iwBAw%0b(hR>FU9rQlr}nB+~sRSgBTPBL(q`DE}1HvvI~3q zh_<@p$$%Ly2Q^2>as6_kRZ#M=waIWo5(gSw7`>{ zgM;T8!*)`+iCg1&EH8~}0ZB3^YO=ef1(vYei_@*K+&wEHIuid8^}t1<_Ycn7i8(LQ z${uxM`JtA)hZpJ{Hjf8bQ1FF?0J38q9-cu=Z?G6S3S;>8rE1!GZ3E&ZOK z|B>>85FmZU!7SZ6w6I;0Ib`xK7~%)&*z5pRVA2Hsv{(D<{vVUNeSGwzQ>@z;z1cQ2 zdB^3&rVU|iK+tK{-Kg~Z4lB2#H19eS7PJIL_sv>pNy2l^cE`B`=yR&*o5IgcW zM?DI(kwHKp)sBZBHVXyZ=6N0bk4l;~tDVc&k}Rd6TMmbA_nC_JOR`U2Q!RHn{)xti z8<~PWHFfp40ZFen#aCG@Bfmy6Pv^fk>|y~p+RM(Rer}G7+cuT=pvrm45K0AWY|kF> zot{>>zNPy>o{-pH)!7vZ~ls5D@n@4ts2JM~9rB zpP$Ean{Ts0`z~;G4|MN`JnA7K33-HzcTHCOx|r$eL(f&W?T(m*?3j0|CqNN^J&yXjcTm*W zs7)gE_xnDbP0j~%^up}5u=R)<84Hvv7B@ikLSKcHWA)b;UUwQZ4>Iw^PfEXNDgMmN zV8*}au9+0a(99A;D|5qG1+qkAgMPBxyBIZAiMD#!saM;7p^Eq~CqC|*^H-f>69EM^ zBU%=(BilB=f?&hYs%w>&AJ$u2Fa*8R^|a{k`!la`Xj$yQx_ev+VTxp`iDcj-UviSHFwiGR_4cm004tR!+Y7_F@9r*clh zYc1MQ6l{a1ZF-bpJAg1ilVAE|{;B4sJ4tbhVW&OhrXyZe{iSgQ4wT+MJfh-(D{;k`~`&b=n3)1+R}y zX75gHk~QG}xk71!Wcfg4x8()}epPkpxJsqD%v{O%;+{o~Y&*F7)T4dBfs(l?#P$Sw ziCGWowv%Er%gQbRevAjVU%;*q_vqv?kia&bFx5}#4e52v)h`C-ndmN(pp{AxOwJ4h z;_pDxoO9~9`RJuiViknYbs!0U4BfV7#F)K4MjzLCaz-y z$`g%?H+v+0(^T?m)B1SY_g9G3e!{B98X#&Ik8ZERv{LUxLwVYBJeJY5bjlk-1_-n&uy+E9m02x{Np%q(vC>1Nh`y@6w}H&gC%a-%{2_~wJ8QUIbv z9mpv?Z z0@1aSu$JQDQvR6Ko)U1p5hITI7bqYl>nO0X;&z%pE#TRI$D*1hmTbH9x<43HCs8_N zsw4Pwbt17oDJm%t_51twWC^}~d93!Z51Es6?F;`dhpUrW`O)scEOLjzXM+7JF(LTg z2yd6mvY+E$@eZ5ET^#M730Z%`_mF(e;}LUQMlnwF*u9y5vE?uW^oGspf9n*8&fMb^ zVdv%zAASncOy`Phgx5g$Y60TLDH%SQ2r|w^WT8lRGzH1&DoOA+CR9~P%a26c zZx*~EtOe?7I~6%Bmt_-{7*z{#?80{5Zq9GoKc(hRu@9@ty(@ zGh6yW8CSepXolQga};b3UantBkiqBlT1)@o;?Vsw+RlN_b+vWarTOx&N6T8v_u~Ar z+p6=e6sY+|rlUlda_>Zac^E}f5RUxSCZ}DF&d*s1$igE^&wHEF53g{Gzg|QR<_!Wa z!Q&Kx2RY|4_nRrOiu~dq9ZxMBI!K0oTrQB}hO%sQ?{7Psp@*T*eAWID6)dYUoKmSg zZNmC-*=-m~^F}IA7t&y_Gti?ANUFQ}MIzmLEVQ#aG=f=FQknJNzjv&xi->4}ScMD) zXYUStg;-NQ#1m6iP^3tVG%(8M%8b=`TFi~2*$K$=-pHED+Or{0VUB#> zTTXjHzB;K=au0H_I^QM2(ESRynd3f|;yD^+P=wA8F4=QPJP7nNIXjYsouI{>d!Qqf zuKJ>94YO`%KT2E=q4LT~7DOCEK2vJZbDuxN;w$ssM}7bp*pQf+wVz#_QACp2QzB4m zMOY9Ap0cW{@5K#}zZV4(skZsu#W?``qrUZ_(ri@F*1gaEN$|Vrw+4V@06rbhIsSR6 z06x9)d`6|Y_p0Zp2)eS4n!4-1y4MF+P*$ZTi z(14Fv>d+kY>__Ix6}Y6J|IcEzI@GQjN>iz=l6bwl)TD#`*oN z62tt_rL~u%Ly40CXJDXF?K~rg&^HNeN&EnzOiHRRbXnGaguIuZTu6VCQzxE}dLD%w zmP3!x)xvZvBkP+>K80BZR^_4sukU?!lgbB0{ty$QfrltP&~0KIVnx91}e*+jx1 z6y1gN`{lZCS*~o)U@Y1$3u6iQ9Z@DO#={H#%vO6_W@i@{>};2zsw?QrQ2F=sv~|vN zJB${NJQrN?_&w2FLO$TPCI)@^f!l8TkK=s1eiuky^ge$`ga2Y2BQ};Ok9pwPH+9!#SjF%o4Ju#cHDL=c^ zH*K)oo7*VcnRvhy&8eqX__`klxl2>)V7or?#%Bcm|4_=IkV^azaPIL^WmOnD8 z8)y6q_Id#gI5?HO8N6LTK>F&eVGnt>GH>4pUb1gE2a!Un+`e_{xmiktq#Kb+*Ij@- z_7(`oG#HI3{++F64Z?qA*D`_8hvk;7weaK-dKe_X`1bI;0^}OX*|8nl*>A`a-dWB% z+aQm)SylDv+Zi8*^0cZBqI7m_kz3l8<(KYzJTvljWTX&?5H>d)7J&EX-AV;FWCD>_ z1Z~Xw1t9>tpRBeWSMqPA>n6p(MRD{q%K9Yh?=FUy9LrY>|GA3BDml$bBf-0HG-Kve>+qXJG+l=0aZb&I7l*gG zJF+`|7Wv{===X5Tm>1ZWKW;$tn-jidj=5L+kH)dGd@5hf5#$w8p2|M`m9Q&oWs6%* zw|U3QOB5fWmuWDbg4vHe{L79BL<31lt{1)hO`ocu%KEQXT?8t?VGt6$)RhE7`_C+) zX&=fZOP;B3gXw=Tg>+;PSP@lK%rfKaR8U`LmTTC(^CLFvwE4YvlTFk7~lVs@)+FW-(ol zp(OQYI3Fp#l3dsljr8$FyN?O`9rFn)ZAm85*XipfJ=5m5d2#hmW?FsqpnU)Crfgmr z8Vja@B`1Qha$JLmtJ;?7zWHPw#*s-K1@B)5!_XD=2BrFaQS$7B3s{B7%*;9vl7>1nen z9~bb88v&bm=_W}&Bny*1dS7s?CW6hGlb+Gs}BxWvsCSmfMF*~|8t;F`bF z@jb`eh*6F?3`eSzi!dZQ{gp;3L_Q1ujoLSSe~tL2znP5{9UJhS$c3b+2X_7y4`$eJ zIbIG6U<)HpA-4a!)WDBKPwZX&Em>|F_>4bSmJl}%i$n&W3IV=DAYlTF(m`o#VcY-W z?KZI%5pdATvQf>BLa+}^m9E7coktnC4MmwG4>T$$(`(!{lRUO9>}I6C>e!Cr@P^Ap zdC8Hy*VdkG%C3O~(Mu3ThdgzmO8Nn-3FVw`gW>$eYIw943J*0=wk&rDCzp%p$I8S+ zW6})VdcwtC(Knd`&;pR9ussOJhr&q@%9-M1>^<+&?NAMN=3=x_`bd7lti~@LMZdw{$7aTLepE%461?r?viPx^NgNo+{OQFfaP()2r7?+y zd(ZcD7dJG^$=E)v(G__k^+p?uf7X6Q!)GZ!L8IHeg+9u-uxw$#;u;MO(P?|A5`g6w zNU`#>atLoo28Pl8x&9k$Tf8jg!g4(lK7T-b)6PS9?v`TAf3?n+Yy7-z5nZ-Gv};6W z?{%HNY9(2#R!Umyo*7SmgQLq#^)XNv+u{l6sypIA-{fs=D-?ROXJ(R9@GsIjSxnrCX?K61{}(vOD@?;pP*RE-V26iQas$gK7T+AI2)nMk;t9D z^gtrOGrei~k9hU(YM7enFKeO~nHzzrECJ?uFzf*5&(n%4kM={1esgEbU}Rw2u^h3! zKa_xV&^3`ulU5BOma*Yl7%W(Fm@jB;;3lEvYYhfTf4r7M#PQ~O2eG=S-{<+P(4H<* zN0(w%4;(zH2%&HAyD{F!ZN|Nn{G{{ZbHC@!N#as4MlkjvW(SceJxOP)XW*98J<>2# zlzbp&FgJ~o{cu5^P{O-TtQx(YfLe%cMD`A1bh1y znUo!B`oA~^JoJ-F=x+z1BbW0B2Qr>J@_p(!I33g%LlQ-V_=PFjP#?lfjfEhg2t|Me zEZs3UF)8>c>OWkwj7T()cA1k87YN8MK|a^oI?E+%hWWL20OIEzpY9(#g}2{hC|P`t z_iSy0Sc^+o=+>|b@#T!buZj>!8n&d!99?2bhh+$mmz}}v=fFh6C+5_9wfT);8@vStFIUMg}Ude`0M>`C+ccIv{A^yT2_Zv^L44SWDJ`U>7|~5)#a~w znxnY5s(zHL2LVnDXPC|=4%Mm8IUMmhc%#GCTV7~`(VzBu@Ry1XJN@O(bxt0dCt6G# z3STGtFo#HiWvi3&k4*~n5_7R&+?7Fu*D&n7`GVv-hQNuUJK>_o)E8JQxe(*f_E6-7 zU}7FUJ5ZKd`oNX#0vGb+urYhaEl#>BVxSLenRu}n0*z~wUUMCCKp!<7q@6B!p=FmF zFqRn`Z&k#7Bn_c?iz;Lu-qQC^WosokurvuIy`Y?-ZNH ztNoUP=Fl7L6*pk}T+HlJn|c3ru7*9_H~$!CE|4Y?gf6?h-GoTF$Gf+-qIGtQs`HAP zI1}pA)62YCl6%IC%10YP=KSCQWrbFj`DgGuFWw-}4`Nz-&+PrSYwkk{eGpL~aRH!^ z=TiOr+XAjNU6!lIyihZxsrZ)metAn7+JdKwfo7rzm*&sN+iL=bK#Hl)aHa zt(6sTaH4)8LGdmn>r+cY6{#D6ShnM^M)~bQ6eD6`fnIc~%_emup5>)szalN8j9cev zD6fTUr}N^|C578guG^#P@DYqo-gOM?#zg3;uFf>h+)l~-9LD6*%|M(qUoRq$=;k#L z!Q>J=cl!c*Fz*T{^!n)(14CfnXaVK12M>)aV^hQ{kH{;=2i$2XS*!Rd`r=>?Yn!^A zR1jlXg_=EF>F{fdoK{wb^-1YUj|?59KL`o~@OflQ+Hz|vjjV~VSj z?chEHv?GE}crQ;!vG<3)m8z1N=ysmFB2zTP;Up{qf7wtPcV9i(#3t6evf z@?rKfD=&irm39D$CgN8A5)LUM$DgVkN655CHQ~?x?yk`-TRuk5+z!+ ziu6K)zhW;|7c|6o?v^OFVhg-LSW>n4C`UU)R3|+59yEv__RJYgV_33Ov*2}*G~FN^ zcaJ|8T-d;=9?+o(419h>Q*r4^{JUTYdw|!^Y|f3?fxGn$kaxX-(=F|s*5f)51__e& za?IU-YJS2H0Jd@@^8%?-%vIg~{OIt@()n^MRt#)aajFM7pnT_(pl!{~t;?ZeY;4>H z93G2Vc13Ku_pMu`&`QN07fr+qLEr#$UtQ^1f=L8D*Wt8K}$6 zap+nt;wCNgCp|dj0XPWl_nO+QnXmGvS9?|8hlhzY3ep+K6m-mijq;pr$J3YS5dhjf z+&T?oZ;+2|ep9s{&_UC-@2lFeS2r^=Q`+onY@+H{Eso@HD_PiAi=S%&r`f%1{J4Tz#39#+PIX$NCx9n%^)y;$%@`7}aaOSt8!WNZ z9d3dgr&H`X-kR_Upa0BaeB9)GPtt_Wf?pa_|(VUBZ?acXfuG0j!mc;~1X&%Q4x*NR}(m09mgf)(zo&4NbS1qKO^a(L<&$(mpOpMiH`cmIWg`v11iZY0L#>MKluF`Sm#p6iiY^RiKF!Q6TM>8MV& +byaUt;NEz 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 NJKDKIYHhD4{TDdF!#)52 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/sponsors/passionate-people-light.png b/docs/.vuepress/public/sponsors/passionate-people-light.png new file mode 100644 index 0000000000000000000000000000000000000000..61ac71af281c7e8af9cdf9601505704edd8c1fa7 GIT binary patch literal 51897 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 Zrix*?UgLDI`vri1GVc|kl@f-5{}0tI))@c* literal 0 HcmV?d00001 From 68ad6509b5da6a722661da6ed2353d704e41bb1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Jun 2021 09:53:03 +0200 Subject: [PATCH 046/197] build(deps): bump postcss from 7.0.35 to 7.0.36 (#3568) Bumps [postcss](https://github.com/postcss/postcss) from 7.0.35 to 7.0.36. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/7.0.35...7.0.36) --- updated-dependencies: - dependency-name: postcss dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ac9cbda3a..6e0dab6c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9209,9 +9209,9 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + version "7.0.36" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" + integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== dependencies: chalk "^2.4.2" source-map "^0.6.1" From 9a0b9fb4ed6d6adf193c042cc74c0667c962b161 Mon Sep 17 00:00:00 2001 From: Aphasia Date: Wed, 16 Jun 2021 23:31:12 +0800 Subject: [PATCH 047/197] refactor(addRoute): create route only when parent.alias exists (#3569) * fix(addRoute): create routing only when parent.alias exists * refactor(addRoute): create route only when parent.alias is not an empty array if parent.alias is an empty array, there is no need to execute createRouteMap Co-authored-by: Eduardo San Martin Morote Co-authored-by: wangqiang025 Co-authored-by: Eduardo San Martin Morote --- src/create-matcher.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/create-matcher.js b/src/create-matcher.js index 9e2f2e649..f7d72b93e 100644 --- a/src/create-matcher.js +++ b/src/create-matcher.js @@ -32,7 +32,7 @@ export function createMatcher ( createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent) // add aliases of parent - if (parent) { + if (parent && parent.alias.length) { createRouteMap( // $flow-disable-line route is defined if parent is parent.alias.map(alias => ({ path: alias, children: [route] })), From 3f3c3c90025670ad036b01091a458876ea2edf04 Mon Sep 17 00:00:00 2001 From: Nico Devs <3766839+nicodevs@users.noreply.github.com> Date: Mon, 21 Jun 2021 04:47:32 -0300 Subject: [PATCH 048/197] Docs: Update Vue School banner (#3571) --- docs/.vuepress/theme/components/BannerTop.vue | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/.vuepress/theme/components/BannerTop.vue b/docs/.vuepress/theme/components/BannerTop.vue index b9ec330fa..7e242f187 100644 --- a/docs/.vuepress/theme/components/BannerTop.vue +++ b/docs/.vuepress/theme/components/BannerTop.vue @@ -11,10 +11,7 @@ Backpack

    - 3-months Vue School for only $49 $75! - - Limited Time Offer - + Less than 48 hours left for the Vue School offer
    GET ACCESS @@ -103,18 +100,23 @@ $contentClass = '.theme-default-content' color: #FFF font-weight: bold font-size: 14px + text-align: center + padding: 0 60px @media (min-width: 680px) + padding: 0 + text-align: left + margin-right: 26px + margin-right: 0 font-size: 18px > .vs-slogan-light color: #ff5338 - display: block text-align: left @media (min-width: 900px) text-align: center display: inline .vs-button - margin-left: 43px + margin-left: 13px color: #FFF padding: 13px 24px border-radius: 40px From 306602d8a4519d83195d02482bc6e0f40bb9d747 Mon Sep 17 00:00:00 2001 From: kFukuda <32889842+fu9da@users.noreply.github.com> Date: Mon, 21 Jun 2021 18:37:33 +0900 Subject: [PATCH 049/197] docs(ja): translate navigation-failures.md to japanese. (#3572) --- docs/.vuepress/config.js | 3 +- docs/ja/guide/advanced/navigation-failures.md | 61 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 docs/ja/guide/advanced/navigation-failures.md diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 100c6a1dc..5f356c6bb 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -241,7 +241,8 @@ module.exports = ctx => ({ '/ja/guide/advanced/transitions.md', '/ja/guide/advanced/data-fetching.md', '/ja/guide/advanced/scroll-behavior.md', - '/ja/guide/advanced/lazy-loading.md' + '/ja/guide/advanced/lazy-loading.md', + '/ja/guide/advanced/navigation-failures.md' ] } ] diff --git a/docs/ja/guide/advanced/navigation-failures.md b/docs/ja/guide/advanced/navigation-failures.md new file mode 100644 index 000000000..b43f3ee75 --- /dev/null +++ b/docs/ja/guide/advanced/navigation-failures.md @@ -0,0 +1,61 @@ +# ナビゲーションの失敗 + +> 3.4.0の新機能 + +`router-link` を使用すると、ナビゲーションを開始するためにVue Routerは `router.push` を呼び出します。ほとんどのリンクはユーザーを新しいページに移動させますが、ユーザーが同じページに留まる状況もいくつかあります。 + +- すでにユーザーが移動したいページにいる +- [ナビゲーションガード](./navigation-guards.md)が `next(false)` の呼び出しによって移動を中止した +- [ナビゲーションガード](./navigation-guards.md)がエラーを投げた、または `next(new Error())` を呼び出した + +`router-link` コンポーネントを使用している場合、**これらの失敗はエラーとして記録されません**。しかし、 `router.push` または `router.replace` を使用している場合は、 _"Uncaught (in promise) Error"_ に続いて具体的なメッセージがコンソールに表示されることがあります。_ナビゲーションの失敗_ を区別する方法を理解しましょう。 + +::: tip 背景 +v3.2.0では、router.pushの2つのオプションのコールバック( `onComplete` と `onAbort` )を通して _ナビゲーションの失敗_ が明らかになっていました。バージョン3.1.0以降、 `onComplete` / `onAbort` コールバックが提供されていない場合、 `router.push` と `router.replace` は _Promise_ を返します。この _Promise_ は `onComplete` の代わりにResolvedとなり、 `onAbort` の代わりにRejectedとなります。 +::: + +## ナビゲーションの失敗を検出する + +_Navigation Failures_ はいくつかの追加プロパティをもつ `Error` インスタンスです。ルーターからエラーが発生したかを確認するには、 `isNavigationFailure` 関数を使用します。 + +```js +import VueRouter from 'vue-router' +const { isNavigationFailure, NavigationFailureType } = VueRouter + +// 管理画面にアクセス +router.push('/admin').catch(failure => { + if (isNavigationFailure(failure, NavigationFailureType.redirected)) { + // ユーザーに小さな通知を表示 + showToast('Login in order to access the admin panel') + } +}) +``` + +::: tip +`isNavigationFailure(failure)` のように2番目のパラメータを省略すると、エラーが _Navigation Failure_ かどうかのチェックのみが行われます。 +::: + +## `NavigationFailureType` + +`NavigationFailureType` は開発者がさまざまな種類の _Navigation Failures_ を区別するのに役立ちます。次の4つの種類があります。 + +- `redirected`: 別の場所にリダイレクトするために、ナビゲーションガードの中で `next(newLocation)` が呼び出された +- `aborted`: ナビゲーションガードの中で `next(false)` が呼び出された +- `cancelled`: 現在のナビゲーションが終了する前に、新しいナビゲーションが実行された。例:ナビゲーションガード内で待機中に `router.push` が呼び出された +- `duplicated`: すでに目的の場所にいるため、ナビゲーションが妨げられた + +## _Navigation Failures_ のプロパティ + +全てのナビゲーションの失敗は、そのナビゲーションのターゲットと現在地を反映した `to` と `from` のプロパティを公開します。 + +```js +// 管理画面にアクセス +router.push('/admin').catch(failure => { + if (isNavigationFailure(failure, NavigationFailureType.redirected)) { + failure.to.path // '/admin' + failure.from.path // '/' + } +}) +``` + +全ての場合において、 `to` と `from` は正規化されたルートの場所です。 From 260f737053d6ea9910836b1760c32ff2a7cdf7ab Mon Sep 17 00:00:00 2001 From: Ravi van Rooijen Date: Mon, 21 Jun 2021 16:07:15 +0200 Subject: [PATCH 050/197] types: add RouteMeta interface to enable module augmentation (#3385) Co-authored-by: Eduardo San Martin Morote --- types/index.d.ts | 1 + types/router.d.ts | 8 +++++--- types/test/index.ts | 8 +++++--- types/test/meta.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 types/test/meta.ts diff --git a/types/index.d.ts b/types/index.d.ts index 41bcea125..2671ca8cb 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -5,6 +5,7 @@ export default VueRouter export { RouterMode, + RouteMeta, RawLocation, RedirectOption, RouterOptions, diff --git a/types/router.d.ts b/types/router.d.ts index 80de5e224..f8588f42f 100644 --- a/types/router.d.ts +++ b/types/router.d.ts @@ -126,7 +126,7 @@ interface _RouteConfigBase { children?: RouteConfig[] redirect?: RedirectOption alias?: string | string[] - meta?: any + meta?: RouteMeta beforeEnter?: NavigationGuard caseSensitive?: boolean pathToRegexpOptions?: PathToRegexpOptions @@ -153,7 +153,7 @@ export interface RouteRecord { parent?: RouteRecord redirect?: RedirectOption matchAs?: string - meta: any + meta: RouteMeta beforeEnter?: ( route: Route, redirect: (location: RawLocation) => void, @@ -205,5 +205,7 @@ export interface Route { fullPath: string matched: RouteRecord[] redirectedFrom?: string - meta?: any + meta?: RouteMeta } + +export interface RouteMeta extends Record {} diff --git a/types/test/index.ts b/types/test/index.ts index 44de15098..bc7755c04 100644 --- a/types/test/index.ts +++ b/types/test/index.ts @@ -18,7 +18,9 @@ const Abc = { template: '
    abc
    ' } const Async = () => Promise.resolve({ template: '
    async
    ' }) let err: any -if (VueRouter.isNavigationFailure(err, VueRouter.NavigationFailureType.aborted)) { +if ( + VueRouter.isNavigationFailure(err, VueRouter.NavigationFailureType.aborted) +) { err.from.fullPath.split('/') } @@ -104,7 +106,7 @@ const router = new VueRouter({ abc: Abc, asyncComponent: Async }, - meta: { auth: true }, + meta: { auth: true, nested: { foo: '' } }, beforeEnter(to, from, next) { to.params from.params @@ -229,7 +231,7 @@ const Components: ( | AsyncComponent )[] = router.getMatchedComponents() -const match: Route = router.match('/more'); +const match: Route = router.match('/more') const vm = new Vue({ router, diff --git a/types/test/meta.ts b/types/test/meta.ts new file mode 100644 index 000000000..e320ba3dd --- /dev/null +++ b/types/test/meta.ts @@ -0,0 +1,45 @@ +import VueRouter from '../index' + +const component = { template: '
    home
    ' } + +declare module '../index' { + export interface RouteMeta { + requiresAuth?: boolean + nested: { foo: string } + } +} + +const router = new VueRouter({ + routes: [ + { + path: '/', + component, + meta: { + requiresAuth: true, + // still allowed + other: true, + nested: { + foo: 'bar' + } + } + }, + { + path: '/foo', + component, + // @ts-expect-error + meta: {} + } + ] +}) + +router.beforeEach(to => { + // should pass + if (to.meta!.requiresAuth === true) { + } + // still pass because any + if (to.meta!.lol === true) { + } + // @ts-expect-error: nested will never be true + if (to.meta!.nested === true) { + } +}) From d4a493d52a0880c4c78a1fc0f8f11f2dd1bb83cc Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Mon, 21 Jun 2021 16:41:04 +0200 Subject: [PATCH 051/197] build: bundle 3.5.2 --- dist/vue-router.common.js | 14 ++++++++++---- dist/vue-router.esm.browser.js | 29 +++++++++++++++++------------ dist/vue-router.esm.browser.min.js | 9 +++++++-- dist/vue-router.esm.js | 14 ++++++++++---- dist/vue-router.js | 29 +++++++++++++++++------------ dist/vue-router.min.js | 9 +++++++-- 6 files changed, 68 insertions(+), 36 deletions(-) diff --git a/dist/vue-router.common.js b/dist/vue-router.common.js index 6fcac164c..1922bd2b9 100644 --- a/dist/vue-router.common.js +++ b/dist/vue-router.common.js @@ -1,5 +1,5 @@ /*! - * vue-router v3.5.1 + * vue-router v3.5.2 * (c) 2021 Evan You * @license MIT */ @@ -1564,7 +1564,7 @@ function createMatcher ( createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); // add aliases of parent - if (parent) { + if (parent && parent.alias.length) { createRouteMap( // $flow-disable-line route is defined if parent is parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }), @@ -2635,7 +2635,13 @@ var HTML5History = /*@__PURE__*/(function (History) { function getLocation (base) { var path = window.location.pathname; - if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 0) { + var pathLowerCase = path.toLowerCase(); + var baseLowerCase = base.toLowerCase(); + // base="/a" shouldn't turn path="/app" into "/a/pp" + // https://github.com/vuejs/vue-router/issues/3555 + // so we ensure the trailing slash in the base + if (base && ((pathLowerCase === baseLowerCase) || + (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { path = path.slice(base.length); } return (path || '/') + window.location.search + window.location.hash @@ -3128,7 +3134,7 @@ function createHref (base, fullPath, mode) { } VueRouter.install = install; -VueRouter.version = '3.5.1'; +VueRouter.version = '3.5.2'; VueRouter.isNavigationFailure = isNavigationFailure; VueRouter.NavigationFailureType = NavigationFailureType; VueRouter.START_LOCATION = START; diff --git a/dist/vue-router.esm.browser.js b/dist/vue-router.esm.browser.js index 07b0a9054..15caf38c4 100644 --- a/dist/vue-router.esm.browser.js +++ b/dist/vue-router.esm.browser.js @@ -1,5 +1,5 @@ /*! - * vue-router v3.5.1 + * vue-router v3.5.2 * (c) 2021 Evan You * @license MIT */ @@ -12,7 +12,7 @@ function assert (condition, message) { } function warn (condition, message) { - if ( !condition) { + if (!condition) { typeof console !== 'undefined' && console.warn(`[vue-router] ${message}`); } } @@ -59,7 +59,7 @@ function resolveQuery ( try { parsedQuery = parse(query || ''); } catch (e) { - warn(false, e.message); + warn(false, e.message); parsedQuery = {}; } for (const key in extraQuery) { @@ -1146,7 +1146,7 @@ var Link = { }); if (scopedSlot) { - if ( !this.custom) { + if (!this.custom) { !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\n\n'); warnedCustomSlot = true; } @@ -1458,7 +1458,7 @@ function addRouteRecord ( const aliases = Array.isArray(route.alias) ? route.alias : [route.alias]; for (let i = 0; i < aliases.length; ++i) { const alias = aliases[i]; - if ( alias === path) { + if (alias === path) { warn( false, `Found an alias with the same value as the path: "${path}". You have to remove that alias. It will be ignored in development.` @@ -1485,7 +1485,7 @@ function addRouteRecord ( if (name) { if (!nameMap[name]) { nameMap[name] = record; - } else if ( !matchAs) { + } else if (!matchAs) { warn( false, `Duplicate named routes definition: ` + @@ -1544,7 +1544,7 @@ function createMatcher ( createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); // add aliases of parent - if (parent) { + if (parent && parent.alias.length) { createRouteMap( // $flow-disable-line route is defined if parent is parent.alias.map(alias => ({ path: alias, children: [route] })), @@ -2113,7 +2113,7 @@ function resolveAsyncComponents (matched) { const reject = once(reason => { const msg = `Failed to resolve async component ${key}: ${reason}`; - warn(false, msg); + warn(false, msg); if (!error) { error = isError(reason) ? reason @@ -2616,7 +2616,13 @@ class HTML5History extends History { function getLocation (base) { let path = window.location.pathname; - if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 0) { + const pathLowerCase = path.toLowerCase(); + const baseLowerCase = base.toLowerCase(); + // base="/a" shouldn't turn path="/app" into "/a/pp" + // https://github.com/vuejs/vue-router/issues/3555 + // so we ensure the trailing slash in the base + if (base && ((pathLowerCase === baseLowerCase) || + (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { path = path.slice(base.length); } return (path || '/') + window.location.search + window.location.hash @@ -2905,8 +2911,7 @@ class VueRouter { } init (app /* Vue component instance */) { - - assert( + assert( install.installed, `not installed. Make sure to call \`Vue.use(VueRouter)\` ` + `before creating root instance.` @@ -3095,7 +3100,7 @@ function createHref (base, fullPath, mode) { } VueRouter.install = install; -VueRouter.version = '3.5.1'; +VueRouter.version = '3.5.2'; VueRouter.isNavigationFailure = isNavigationFailure; VueRouter.NavigationFailureType = NavigationFailureType; VueRouter.START_LOCATION = START; diff --git a/dist/vue-router.esm.browser.min.js b/dist/vue-router.esm.browser.min.js index cdf538dca..54b1c38f6 100644 --- a/dist/vue-router.esm.browser.min.js +++ b/dist/vue-router.esm.browser.min.js @@ -1,6 +1,11 @@ /*! - * vue-router v3.5.1 + * vue-router v3.5.2 * (c) 2021 Evan You * @license MIT */ -function t(t,e){for(const n in e)t[n]=e[n];return t}const e=/[!'()*]/g,n=t=>"%"+t.charCodeAt(0).toString(16),r=/%2C/g,o=t=>encodeURIComponent(t).replace(e,n).replace(r,",");function i(t){try{return decodeURIComponent(t)}catch(t){}return t}const s=t=>null==t||"object"==typeof t?t:String(t);function a(t){const e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(t=>{const n=t.replace(/\+/g," ").split("="),r=i(n.shift()),o=n.length>0?i(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]}),e):e}function c(t){const e=t?Object.keys(t).map(e=>{const n=t[e];if(void 0===n)return"";if(null===n)return o(e);if(Array.isArray(n)){const t=[];return n.forEach(n=>{void 0!==n&&(null===n?t.push(o(e)):t.push(o(e)+"="+o(n)))}),t.join("&")}return o(e)+"="+o(n)}).filter(t=>t.length>0).join("&"):null;return e?`?${e}`:""}const u=/\/?$/;function h(t,e,n,r){const o=r&&r.options.stringifyQuery;let i=e.query||{};try{i=l(i)}catch(t){}const s={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:d(e,o),matched:t?f(t):[]};return n&&(s.redirectedFrom=d(n,o)),Object.freeze(s)}function l(t){if(Array.isArray(t))return t.map(l);if(t&&"object"==typeof t){const e={};for(const n in t)e[n]=l(t[n]);return e}return t}const p=h(null,{path:"/"});function f(t){const e=[];for(;t;)e.unshift(t),t=t.parent;return e}function d({path:t,query:e={},hash:n=""},r){return(t||"/")+(r||c)(e)+n}function y(t,e,n){return e===p?t===e:!!e&&(t.path&&e.path?t.path.replace(u,"")===e.path.replace(u,"")&&(n||t.hash===e.hash&&m(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&m(t.query,e.query)&&m(t.params,e.params))))}function m(t={},e={}){if(!t||!e)return t===e;const n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((n,o)=>{const i=t[n];if(r[o]!==n)return!1;const s=e[n];return null==i||null==s?i===s:"object"==typeof i&&"object"==typeof s?m(i,s):String(i)===String(s)})}function g(t){for(let e=0;e{const n=p.instances[a];(e&&n!==t||!e&&n===t)&&(p.instances[a]=e)},(i.hook||(i.hook={})).prepatch=(t,e)=>{p.instances[a]=e.componentInstance},i.hook.init=t=>{t.data.keepAlive&&t.componentInstance&&t.componentInstance!==p.instances[a]&&(p.instances[a]=t.componentInstance),g(c)};const d=p.props&&p.props[a];return d&&(t(u[a],{route:c,configProps:d}),b(f,i,c,d)),s(f,i,r)}};function b(e,n,r,o){let i=n.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0}}(r,o);if(i){i=n.props=t({},i);const r=n.attrs=n.attrs||{};for(const t in i)e.props&&t in e.props||(r[t]=i[t],delete i[t])}}function v(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const o=e.split("/");n&&o[o.length-1]||o.pop();const i=t.replace(/^\//,"").split("/");for(let t=0;t=0&&(e=t.slice(r),t=t.slice(0,r));const o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(i.path||""),u=n&&n.path||"/",h=c.path?v(c.path,u,r||i.append):u,l=function(t,e={},n){const r=n||a;let o;try{o=r(t||"")}catch(t){o={}}for(const t in e){const n=e[t];o[t]=Array.isArray(n)?n.map(s):s(n)}return o}(c.query,i.query,o&&o.options.parseQuery);let p=i.hash||c.hash;return p&&"#"!==p.charAt(0)&&(p=`#${p}`),{_normalized:!0,path:h,query:l,hash:p}}const H=[String,Object],N=[String,Array],F=()=>{};var z={name:"RouterLink",props:{to:{type:H,required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:N,default:"click"}},render(e){const n=this.$router,r=this.$route,{location:o,route:i,href:s}=n.resolve(this.to,r,this.append),a={},c=n.options.linkActiveClass,l=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,f=null==l?"router-link-exact-active":l,d=null==this.activeClass?p:this.activeClass,m=null==this.exactActiveClass?f:this.exactActiveClass,g=i.redirectedFrom?h(null,V(i.redirectedFrom),null,n):i;a[m]=y(r,g,this.exactPath),a[d]=this.exact||this.exactPath?a[m]:function(t,e){return 0===t.path.replace(u,"/").indexOf(e.path.replace(u,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(const n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,g);const w=a[m]?this.ariaCurrentValue:null,b=t=>{D(t)&&(this.replace?n.replace(o,F):n.push(o,F))},v={click:D};Array.isArray(this.event)?this.event.forEach(t=>{v[t]=b}):v[this.event]=b;const x={class:a},R=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:i,navigate:b,isActive:a[d],isExactActive:a[m]});if(R){if(1===R.length)return R[0];if(R.length>1||!R.length)return 0===R.length?e():e("span",{},R)}if("a"===this.tag)x.on=v,x.attrs={href:s,"aria-current":w};else{const e=function t(e){if(e){let n;for(let r=0;r{!function t(e,n,r,o,i,s){const{path:a,name:c}=o;const u=o.pathToRegexpOptions||{};const h=function(t,e,n){n||(t=t.replace(/\/$/,""));return"/"===t[0]?t:null==e?t:x(`${e.path}/${t}`)}(a,i,u.strict);"boolean"==typeof o.caseSensitive&&(u.sensitive=o.caseSensitive);const l={path:h,regex:X(h,u),components:o.components||{default:o.component},alias:o.alias?"string"==typeof o.alias?[o.alias]:o.alias:[],instances:{},enteredCbs:{},name:c,parent:i,matchAs:s,redirect:o.redirect,beforeEnter:o.beforeEnter,meta:o.meta||{},props:null==o.props?{}:o.components?o.props:{default:o.props}};o.children&&o.children.forEach(o=>{const i=s?x(`${s}/${o.path}`):void 0;t(e,n,r,o,l,i)});n[l.path]||(e.push(l.path),n[l.path]=l);if(void 0!==o.alias){const s=Array.isArray(o.alias)?o.alias:[o.alias];for(let a=0;a!t.optional).map(t=>t.name);if("object"!=typeof c.params&&(c.params={}),i&&"object"==typeof i.params)for(const t in i.params)!(t in c.params)&&e.indexOf(t)>-1&&(c.params[t]=i.params[t]);return c.path=M(t.path,c.params),a(t,c,s)}if(c.path){c.params={};for(let t=0;t({path:t,children:[e]})),n,r,o,i)},getRoutes:function(){return n.map(t=>r[t])},addRoutes:function(t){Q(t,n,r,o)}}}function W(t,e,n){const r=e.match(t);if(!r)return!1;if(!n)return!0;for(let e=1,o=r.length;e{window.removeEventListener("popstate",at)}}function it(t,e,n,r){if(!t.app)return;const o=t.options.scrollBehavior;o&&t.app.$nextTick(()=>{const i=function(){const t=et();if(t)return rt[t]}(),s=o.call(t,e,n,r?i:null);s&&("function"==typeof s.then?s.then(t=>{pt(t,i)}).catch(t=>{}):pt(s,i))})}function st(){const t=et();t&&(rt[t]={x:window.pageXOffset,y:window.pageYOffset})}function at(t){st(),t.state&&t.state.key&&nt(t.state.key)}function ct(t){return ht(t.x)||ht(t.y)}function ut(t){return{x:ht(t.x)?t.x:window.pageXOffset,y:ht(t.y)?t.y:window.pageYOffset}}function ht(t){return"number"==typeof t}const lt=/^#\d/;function pt(t,e){const n="object"==typeof t;if(n&&"string"==typeof t.selector){const n=lt.test(t.selector)?document.getElementById(t.selector.slice(1)):document.querySelector(t.selector);if(n){let o=t.offset&&"object"==typeof t.offset?t.offset:{};e=function(t,e){const n=document.documentElement.getBoundingClientRect(),r=t.getBoundingClientRect();return{x:r.left-n.left-e.x,y:r.top-n.top-e.y}}(n,o={x:ht((r=o).x)?r.x:0,y:ht(r.y)?r.y:0})}else ct(t)&&(e=ut(t))}else n&&ct(t)&&(e=ut(t));var r;e&&("scrollBehavior"in document.documentElement.style?window.scrollTo({left:e.x,top:e.y,behavior:t.behavior}):window.scrollTo(e.x,e.y))}const ft=J&&function(){const t=window.navigator.userAgent;return(-1===t.indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&(window.history&&"function"==typeof window.history.pushState)}();function dt(e,n){st();const r=window.history;try{if(n){const n=t({},r.state);n.key=et(),r.replaceState(n,"",e)}else r.pushState({key:nt(Z())},"",e)}catch(t){window.location[n?"replace":"assign"](e)}}function yt(t){dt(t,!0)}function mt(t,e,n){const r=o=>{o>=t.length?n():t[o]?e(t[o],()=>{r(o+1)}):r(o+1)};r(0)}const gt={redirected:2,aborted:4,cancelled:8,duplicated:16};function wt(t,e){return vt(t,e,gt.redirected,`Redirected when going from "${t.fullPath}" to "${function(t){if("string"==typeof t)return t;if("path"in t)return t.path;const e={};return xt.forEach(n=>{n in t&&(e[n]=t[n])}),JSON.stringify(e,null,2)}(e)}" via a navigation guard.`)}function bt(t,e){return vt(t,e,gt.cancelled,`Navigation cancelled from "${t.fullPath}" to "${e.fullPath}" with a new navigation.`)}function vt(t,e,n,r){const o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}const xt=["params","query","hash"];function Rt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function kt(t,e){return Rt(t)&&t._isRouter&&(null==e||t.type===e)}function Et(t){return(e,n,r)=>{let o=!1,i=0,s=null;Ct(t,(t,e,n,a)=>{if("function"==typeof t&&void 0===t.cid){o=!0,i++;const e=Ot(e=>{(function(t){return t.__esModule||At&&"Module"===t[Symbol.toStringTag]})(e)&&(e=e.default),t.resolved="function"==typeof e?e:K.extend(e),n.components[a]=e,--i<=0&&r()}),c=Ot(t=>{const e=`Failed to resolve async component ${a}: ${t}`;s||(s=Rt(t)?t:new Error(e),r(s))});let u;try{u=t(e,c)}catch(t){c(t)}if(u)if("function"==typeof u.then)u.then(e,c);else{const t=u.component;t&&"function"==typeof t.then&&t.then(e,c)}}}),o||r()}}function Ct(t,e){return $t(t.map(t=>Object.keys(t.components).map(n=>e(t.components[n],t.instances[n],t,n))))}function $t(t){return Array.prototype.concat.apply([],t)}const At="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ot(t){let e=!1;return function(...n){if(!e)return e=!0,t.apply(this,n)}}class St{constructor(t,e){this.router=t,this.base=function(t){if(!t)if(J){const e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=p,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]}listen(t){this.cb=t}onReady(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))}onError(t){this.errorCbs.push(t)}transitionTo(t,e,n){let r;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach(e=>{e(t)}),t}const o=this.current;this.confirmTransition(r,()=>{this.updateRoute(r),e&&e(r),this.ensureURL(),this.router.afterHooks.forEach(t=>{t&&t(r,o)}),this.ready||(this.ready=!0,this.readyCbs.forEach(t=>{t(r)}))},t=>{n&&n(t),t&&!this.ready&&(kt(t,gt.redirected)&&o===p||(this.ready=!0,this.readyErrorCbs.forEach(e=>{e(t)})))})}confirmTransition(t,e,n){const r=this.current;this.pending=t;const o=t=>{!kt(t)&&Rt(t)&&(this.errorCbs.length?this.errorCbs.forEach(e=>{e(t)}):console.error(t)),n&&n(t)},i=t.matched.length-1,s=r.matched.length-1;if(y(t,r)&&i===s&&t.matched[i]===r.matched[s])return this.ensureURL(),o(function(t,e){const n=vt(t,e,gt.duplicated,`Avoided redundant navigation to current location: "${t.fullPath}".`);return n.name="NavigationDuplicated",n}(r,t));const{updated:a,deactivated:c,activated:u}=function(t,e){let n;const r=Math.max(t.length,e.length);for(n=0;nt.beforeEnter),Et(u)),l=(e,n)=>{if(this.pending!==t)return o(bt(r,t));try{e(t,r,e=>{!1===e?(this.ensureURL(!0),o(function(t,e){return vt(t,e,gt.aborted,`Navigation aborted from "${t.fullPath}" to "${e.fullPath}" via a navigation guard.`)}(r,t))):Rt(e)?(this.ensureURL(!0),o(e)):"string"==typeof e||"object"==typeof e&&("string"==typeof e.path||"string"==typeof e.name)?(o(wt(r,t)),"object"==typeof e&&e.replace?this.replace(e):this.push(e)):n(e)})}catch(t){o(t)}};mt(h,l,()=>{mt(function(t){return jt(t,"beforeRouteEnter",(t,e,n,r)=>(function(t,e,n){return function(r,o,i){return t(r,o,t=>{"function"==typeof t&&(e.enteredCbs[n]||(e.enteredCbs[n]=[]),e.enteredCbs[n].push(t)),i(t)})}})(t,n,r))}(u).concat(this.router.resolveHooks),l,()=>{if(this.pending!==t)return o(bt(r,t));this.pending=null,e(t),this.router.app&&this.router.app.$nextTick(()=>{g(t)})})})}updateRoute(t){this.current=t,this.cb&&this.cb(t)}setupListeners(){}teardown(){this.listeners.forEach(t=>{t()}),this.listeners=[],this.current=p,this.pending=null}}function jt(t,e,n,r){const o=Ct(t,(t,r,o,i)=>{const s=function(t,e){"function"!=typeof t&&(t=K.extend(t));return t.options[e]}(t,e);if(s)return Array.isArray(s)?s.map(t=>n(t,r,o,i)):n(s,r,o,i)});return $t(r?o.reverse():o)}function Tt(t,e){if(e)return function(){return t.apply(e,arguments)}}class Pt extends St{constructor(t,e){super(t,e),this._startLocation=Lt(this.base)}setupListeners(){if(this.listeners.length>0)return;const t=this.router,e=t.options.scrollBehavior,n=ft&&e;n&&this.listeners.push(ot());const r=()=>{const e=this.current,r=Lt(this.base);this.current===p&&r===this._startLocation||this.transitionTo(r,r=>{n&&it(t,r,e,!0)})};window.addEventListener("popstate",r),this.listeners.push(()=>{window.removeEventListener("popstate",r)})}go(t){window.history.go(t)}push(t,e,n){const{current:r}=this;this.transitionTo(t,t=>{dt(x(this.base+t.fullPath)),it(this.router,t,r,!1),e&&e(t)},n)}replace(t,e,n){const{current:r}=this;this.transitionTo(t,t=>{yt(x(this.base+t.fullPath)),it(this.router,t,r,!1),e&&e(t)},n)}ensureURL(t){if(Lt(this.base)!==this.current.fullPath){const e=x(this.base+this.current.fullPath);t?dt(e):yt(e)}}getCurrentLocation(){return Lt(this.base)}}function Lt(t){let e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}class _t extends St{constructor(t,e,n){super(t,e),n&&function(t){const e=Lt(t);if(!/^\/#/.test(e))return window.location.replace(x(t+"/#"+e)),!0}(this.base)||qt()}setupListeners(){if(this.listeners.length>0)return;const t=this.router.options.scrollBehavior,e=ft&&t;e&&this.listeners.push(ot());const n=()=>{const t=this.current;qt()&&this.transitionTo(Ut(),n=>{e&&it(this.router,n,t,!0),ft||Mt(n.fullPath)})},r=ft?"popstate":"hashchange";window.addEventListener(r,n),this.listeners.push(()=>{window.removeEventListener(r,n)})}push(t,e,n){const{current:r}=this;this.transitionTo(t,t=>{It(t.fullPath),it(this.router,t,r,!1),e&&e(t)},n)}replace(t,e,n){const{current:r}=this;this.transitionTo(t,t=>{Mt(t.fullPath),it(this.router,t,r,!1),e&&e(t)},n)}go(t){window.history.go(t)}ensureURL(t){const e=this.current.fullPath;Ut()!==e&&(t?It(e):Mt(e))}getCurrentLocation(){return Ut()}}function qt(){const t=Ut();return"/"===t.charAt(0)||(Mt("/"+t),!1)}function Ut(){let t=window.location.href;const e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Bt(t){const e=window.location.href,n=e.indexOf("#");return`${n>=0?e.slice(0,n):e}#${t}`}function It(t){ft?dt(Bt(t)):window.location.hash=t}function Mt(t){ft?yt(Bt(t)):window.location.replace(Bt(t))}class Vt extends St{constructor(t,e){super(t,e),this.stack=[],this.index=-1}push(t,e,n){this.transitionTo(t,t=>{this.stack=this.stack.slice(0,this.index+1).concat(t),this.index++,e&&e(t)},n)}replace(t,e,n){this.transitionTo(t,t=>{this.stack=this.stack.slice(0,this.index).concat(t),e&&e(t)},n)}go(t){const e=this.index+t;if(e<0||e>=this.stack.length)return;const n=this.stack[e];this.confirmTransition(n,()=>{const t=this.current;this.index=e,this.updateRoute(n),this.router.afterHooks.forEach(e=>{e&&e(n,t)})},t=>{kt(t,gt.duplicated)&&(this.index=e)})}getCurrentLocation(){const t=this.stack[this.stack.length-1];return t?t.fullPath:"/"}ensureURL(){}}class Ht{constructor(t={}){this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Y(t.routes||[],this);let e=t.mode||"hash";switch(this.fallback="history"===e&&!ft&&!1!==t.fallback,this.fallback&&(e="hash"),J||(e="abstract"),this.mode=e,e){case"history":this.history=new Pt(this,t.base);break;case"hash":this.history=new _t(this,t.base,this.fallback);break;case"abstract":this.history=new Vt(this,t.base)}}match(t,e,n){return this.matcher.match(t,e,n)}get currentRoute(){return this.history&&this.history.current}init(t){if(this.apps.push(t),t.$once("hook:destroyed",()=>{const e=this.apps.indexOf(t);e>-1&&this.apps.splice(e,1),this.app===t&&(this.app=this.apps[0]||null),this.app||this.history.teardown()}),this.app)return;this.app=t;const e=this.history;if(e instanceof Pt||e instanceof _t){const t=t=>{const n=e.current,r=this.options.scrollBehavior;ft&&r&&"fullPath"in t&&it(this,t,n,!1)},n=n=>{e.setupListeners(),t(n)};e.transitionTo(e.getCurrentLocation(),n,n)}e.listen(t=>{this.apps.forEach(e=>{e._route=t})})}beforeEach(t){return Nt(this.beforeHooks,t)}beforeResolve(t){return Nt(this.resolveHooks,t)}afterEach(t){return Nt(this.afterHooks,t)}onReady(t,e){this.history.onReady(t,e)}onError(t){this.history.onError(t)}push(t,e,n){if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((e,n)=>{this.history.push(t,e,n)});this.history.push(t,e,n)}replace(t,e,n){if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((e,n)=>{this.history.replace(t,e,n)});this.history.replace(t,e,n)}go(t){this.history.go(t)}back(){this.go(-1)}forward(){this.go(1)}getMatchedComponents(t){const e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(t=>Object.keys(t.components).map(e=>t.components[e]))):[]}resolve(t,e,n){const r=V(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?x(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}}getRoutes(){return this.matcher.getRoutes()}addRoute(t,e){this.matcher.addRoute(t,e),this.history.current!==p&&this.history.transitionTo(this.history.getCurrentLocation())}addRoutes(t){this.matcher.addRoutes(t),this.history.current!==p&&this.history.transitionTo(this.history.getCurrentLocation())}}function Nt(t,e){return t.push(e),()=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)}}Ht.install=function t(e){if(t.installed&&K===e)return;t.installed=!0,K=e;const n=t=>void 0!==t,r=(t,e)=>{let r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get(){return this._routerRoot._route}}),e.component("RouterView",w),e.component("RouterLink",z);const o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created},Ht.version="3.5.1",Ht.isNavigationFailure=kt,Ht.NavigationFailureType=gt,Ht.START_LOCATION=p,J&&window.Vue&&window.Vue.use(Ht);export default Ht; \ No newline at end of file +/*! + * vue-router v3.5.2 + * (c) 2021 Evan You + * @license MIT + */ +function t(t,e){for(const n in e)t[n]=e[n];return t}const e=/[!'()*]/g,n=t=>"%"+t.charCodeAt(0).toString(16),r=/%2C/g,o=t=>encodeURIComponent(t).replace(e,n).replace(r,",");function i(t){try{return decodeURIComponent(t)}catch(t){}return t}const s=t=>null==t||"object"==typeof t?t:String(t);function a(t){const e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(t=>{const n=t.replace(/\+/g," ").split("="),r=i(n.shift()),o=n.length>0?i(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]}),e):e}function c(t){const e=t?Object.keys(t).map(e=>{const n=t[e];if(void 0===n)return"";if(null===n)return o(e);if(Array.isArray(n)){const t=[];return n.forEach(n=>{void 0!==n&&(null===n?t.push(o(e)):t.push(o(e)+"="+o(n)))}),t.join("&")}return o(e)+"="+o(n)}).filter(t=>t.length>0).join("&"):null;return e?"?"+e:""}const u=/\/?$/;function h(t,e,n,r){const o=r&&r.options.stringifyQuery;let i=e.query||{};try{i=l(i)}catch(t){}const s={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:d(e,o),matched:t?f(t):[]};return n&&(s.redirectedFrom=d(n,o)),Object.freeze(s)}function l(t){if(Array.isArray(t))return t.map(l);if(t&&"object"==typeof t){const e={};for(const n in t)e[n]=l(t[n]);return e}return t}const p=h(null,{path:"/"});function f(t){const e=[];for(;t;)e.unshift(t),t=t.parent;return e}function d({path:t,query:e={},hash:n=""},r){return(t||"/")+(r||c)(e)+n}function y(t,e,n){return e===p?t===e:!!e&&(t.path&&e.path?t.path.replace(u,"")===e.path.replace(u,"")&&(n||t.hash===e.hash&&m(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&m(t.query,e.query)&&m(t.params,e.params))))}function m(t={},e={}){if(!t||!e)return t===e;const n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((n,o)=>{const i=t[n];if(r[o]!==n)return!1;const s=e[n];return null==i||null==s?i===s:"object"==typeof i&&"object"==typeof s?m(i,s):String(i)===String(s)})}function g(t){for(let e=0;e{const n=p.instances[a];(e&&n!==t||!e&&n===t)&&(p.instances[a]=e)},(i.hook||(i.hook={})).prepatch=(t,e)=>{p.instances[a]=e.componentInstance},i.hook.init=t=>{t.data.keepAlive&&t.componentInstance&&t.componentInstance!==p.instances[a]&&(p.instances[a]=t.componentInstance),g(c)};const d=p.props&&p.props[a];return d&&(t(u[a],{route:c,configProps:d}),b(f,i,c,d)),s(f,i,r)}};function b(e,n,r,o){let i=n.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0}}(r,o);if(i){i=n.props=t({},i);const r=n.attrs=n.attrs||{};for(const t in i)e.props&&t in e.props||(r[t]=i[t],delete i[t])}}function v(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const o=e.split("/");n&&o[o.length-1]||o.pop();const i=t.replace(/^\//,"").split("/");for(let t=0;t=0&&(e=t.slice(r),t=t.slice(0,r));const o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(i.path||""),u=n&&n.path||"/",h=c.path?v(c.path,u,r||i.append):u,l=function(t,e={},n){const r=n||a;let o;try{o=r(t||"")}catch(t){o={}}for(const t in e){const n=e[t];o[t]=Array.isArray(n)?n.map(s):s(n)}return o}(c.query,i.query,o&&o.options.parseQuery);let p=i.hash||c.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:h,query:l,hash:p}}const H=()=>{};var N={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render(e){const n=this.$router,r=this.$route,{location:o,route:i,href:s}=n.resolve(this.to,r,this.append),a={},c=n.options.linkActiveClass,l=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,f=null==l?"router-link-exact-active":l,d=null==this.activeClass?p:this.activeClass,m=null==this.exactActiveClass?f:this.exactActiveClass,g=i.redirectedFrom?h(null,V(i.redirectedFrom),null,n):i;a[m]=y(r,g,this.exactPath),a[d]=this.exact||this.exactPath?a[m]:function(t,e){return 0===t.path.replace(u,"/").indexOf(e.path.replace(u,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(const n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,g);const w=a[m]?this.ariaCurrentValue:null,b=t=>{F(t)&&(this.replace?n.replace(o,H):n.push(o,H))},v={click:F};Array.isArray(this.event)?this.event.forEach(t=>{v[t]=b}):v[this.event]=b;const x={class:a},R=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:i,navigate:b,isActive:a[d],isExactActive:a[m]});if(R){if(1===R.length)return R[0];if(R.length>1||!R.length)return 0===R.length?e():e("span",{},R)}if("a"===this.tag)x.on=v,x.attrs={href:s,"aria-current":w};else{const e=function t(e){if(e){let n;for(let r=0;r{!function t(e,n,r,o,i,s){const{path:a,name:c}=o,u=o.pathToRegexpOptions||{},h=function(t,e,n){n||(t=t.replace(/\/$/,""));return"/"===t[0]||null==e?t:x(`${e.path}/${t}`)}(a,i,u.strict);"boolean"==typeof o.caseSensitive&&(u.sensitive=o.caseSensitive);const l={path:h,regex:J(h,u),components:o.components||{default:o.component},alias:o.alias?"string"==typeof o.alias?[o.alias]:o.alias:[],instances:{},enteredCbs:{},name:c,parent:i,matchAs:s,redirect:o.redirect,beforeEnter:o.beforeEnter,meta:o.meta||{},props:null==o.props?{}:o.components?o.props:{default:o.props}};o.children&&o.children.forEach(o=>{const i=s?x(`${s}/${o.path}`):void 0;t(e,n,r,o,l,i)});n[l.path]||(e.push(l.path),n[l.path]=l);if(void 0!==o.alias){const s=Array.isArray(o.alias)?o.alias:[o.alias];for(let a=0;a!t.optional).map(t=>t.name);if("object"!=typeof c.params&&(c.params={}),i&&"object"==typeof i.params)for(const t in i.params)!(t in c.params)&&e.indexOf(t)>-1&&(c.params[t]=i.params[t]);return c.path=M(t.path,c.params),a(t,c,s)}if(c.path){c.params={};for(let t=0;t({path:t,children:[e]})),n,r,o,i)},getRoutes:function(){return n.map(t=>r[t])},addRoutes:function(t){K(t,n,r,o)}}}function X(t,e,n){const r=e.match(t);if(!r)return!1;if(!n)return!0;for(let e=1,o=r.length;e{window.removeEventListener("popstate",it)}}function rt(t,e,n,r){if(!t.app)return;const o=t.options.scrollBehavior;o&&t.app.$nextTick(()=>{const i=function(){const t=Z();if(t)return et[t]}(),s=o.call(t,e,n,r?i:null);s&&("function"==typeof s.then?s.then(t=>{ht(t,i)}).catch(t=>{}):ht(s,i))})}function ot(){const t=Z();t&&(et[t]={x:window.pageXOffset,y:window.pageYOffset})}function it(t){ot(),t.state&&t.state.key&&tt(t.state.key)}function st(t){return ct(t.x)||ct(t.y)}function at(t){return{x:ct(t.x)?t.x:window.pageXOffset,y:ct(t.y)?t.y:window.pageYOffset}}function ct(t){return"number"==typeof t}const ut=/^#\d/;function ht(t,e){const n="object"==typeof t;if(n&&"string"==typeof t.selector){const n=ut.test(t.selector)?document.getElementById(t.selector.slice(1)):document.querySelector(t.selector);if(n){let o=t.offset&&"object"==typeof t.offset?t.offset:{};o={x:ct((r=o).x)?r.x:0,y:ct(r.y)?r.y:0},e=function(t,e){const n=document.documentElement.getBoundingClientRect(),r=t.getBoundingClientRect();return{x:r.left-n.left-e.x,y:r.top-n.top-e.y}}(n,o)}else st(t)&&(e=at(t))}else n&&st(t)&&(e=at(t));var r;e&&("scrollBehavior"in document.documentElement.style?window.scrollTo({left:e.x,top:e.y,behavior:t.behavior}):window.scrollTo(e.x,e.y))}const lt=D&&function(){const t=window.navigator.userAgent;return(-1===t.indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&(window.history&&"function"==typeof window.history.pushState)}();function pt(e,n){ot();const r=window.history;try{if(n){const n=t({},r.state);n.key=Z(),r.replaceState(n,"",e)}else r.pushState({key:tt(W())},"",e)}catch(t){window.location[n?"replace":"assign"](e)}}function ft(t){pt(t,!0)}function dt(t,e,n){const r=o=>{o>=t.length?n():t[o]?e(t[o],()=>{r(o+1)}):r(o+1)};r(0)}const yt={redirected:2,aborted:4,cancelled:8,duplicated:16};function mt(t,e){return wt(t,e,yt.redirected,`Redirected when going from "${t.fullPath}" to "${function(t){if("string"==typeof t)return t;if("path"in t)return t.path;const e={};return bt.forEach(n=>{n in t&&(e[n]=t[n])}),JSON.stringify(e,null,2)}(e)}" via a navigation guard.`)}function gt(t,e){return wt(t,e,yt.cancelled,`Navigation cancelled from "${t.fullPath}" to "${e.fullPath}" with a new navigation.`)}function wt(t,e,n,r){const o=new Error(r);return o._isRouter=!0,o.from=t,o.to=e,o.type=n,o}const bt=["params","query","hash"];function vt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function xt(t,e){return vt(t)&&t._isRouter&&(null==e||t.type===e)}function Rt(t){return(e,n,r)=>{let o=!1,i=0,s=null;kt(t,(t,e,n,a)=>{if("function"==typeof t&&void 0===t.cid){o=!0,i++;const e=At(e=>{var o;((o=e).__esModule||Ct&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:z.extend(e),n.components[a]=e,i--,i<=0&&r()}),c=At(t=>{const e=`Failed to resolve async component ${a}: ${t}`;s||(s=vt(t)?t:new Error(e),r(s))});let u;try{u=t(e,c)}catch(t){c(t)}if(u)if("function"==typeof u.then)u.then(e,c);else{const t=u.component;t&&"function"==typeof t.then&&t.then(e,c)}}}),o||r()}}function kt(t,e){return Et(t.map(t=>Object.keys(t.components).map(n=>e(t.components[n],t.instances[n],t,n))))}function Et(t){return Array.prototype.concat.apply([],t)}const Ct="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function At(t){let e=!1;return function(...n){if(!e)return e=!0,t.apply(this,n)}}class $t{constructor(t,e){this.router=t,this.base=function(t){if(!t)if(D){const e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=p,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]}listen(t){this.cb=t}onReady(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))}onError(t){this.errorCbs.push(t)}transitionTo(t,e,n){let r;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach(e=>{e(t)}),t}const o=this.current;this.confirmTransition(r,()=>{this.updateRoute(r),e&&e(r),this.ensureURL(),this.router.afterHooks.forEach(t=>{t&&t(r,o)}),this.ready||(this.ready=!0,this.readyCbs.forEach(t=>{t(r)}))},t=>{n&&n(t),t&&!this.ready&&(xt(t,yt.redirected)&&o===p||(this.ready=!0,this.readyErrorCbs.forEach(e=>{e(t)})))})}confirmTransition(t,e,n){const r=this.current;this.pending=t;const o=t=>{!xt(t)&&vt(t)&&(this.errorCbs.length?this.errorCbs.forEach(e=>{e(t)}):console.error(t)),n&&n(t)},i=t.matched.length-1,s=r.matched.length-1;if(y(t,r)&&i===s&&t.matched[i]===r.matched[s])return this.ensureURL(),o(function(t,e){const n=wt(t,e,yt.duplicated,`Avoided redundant navigation to current location: "${t.fullPath}".`);return n.name="NavigationDuplicated",n}(r,t));const{updated:a,deactivated:c,activated:u}=function(t,e){let n;const r=Math.max(t.length,e.length);for(n=0;nt.beforeEnter),Rt(u)),l=(e,n)=>{if(this.pending!==t)return o(gt(r,t));try{e(t,r,e=>{!1===e?(this.ensureURL(!0),o(function(t,e){return wt(t,e,yt.aborted,`Navigation aborted from "${t.fullPath}" to "${e.fullPath}" via a navigation guard.`)}(r,t))):vt(e)?(this.ensureURL(!0),o(e)):"string"==typeof e||"object"==typeof e&&("string"==typeof e.path||"string"==typeof e.name)?(o(mt(r,t)),"object"==typeof e&&e.replace?this.replace(e):this.push(e)):n(e)})}catch(t){o(t)}};dt(h,l,()=>{dt(function(t){return Ot(t,"beforeRouteEnter",(t,e,n,r)=>function(t,e,n){return function(r,o,i){return t(r,o,t=>{"function"==typeof t&&(e.enteredCbs[n]||(e.enteredCbs[n]=[]),e.enteredCbs[n].push(t)),i(t)})}}(t,n,r))}(u).concat(this.router.resolveHooks),l,()=>{if(this.pending!==t)return o(gt(r,t));this.pending=null,e(t),this.router.app&&this.router.app.$nextTick(()=>{g(t)})})})}updateRoute(t){this.current=t,this.cb&&this.cb(t)}setupListeners(){}teardown(){this.listeners.forEach(t=>{t()}),this.listeners=[],this.current=p,this.pending=null}}function Ot(t,e,n,r){const o=kt(t,(t,r,o,i)=>{const s=function(t,e){"function"!=typeof t&&(t=z.extend(t));return t.options[e]}(t,e);if(s)return Array.isArray(s)?s.map(t=>n(t,r,o,i)):n(s,r,o,i)});return Et(r?o.reverse():o)}function St(t,e){if(e)return function(){return t.apply(e,arguments)}}class jt extends $t{constructor(t,e){super(t,e),this._startLocation=Tt(this.base)}setupListeners(){if(this.listeners.length>0)return;const t=this.router,e=t.options.scrollBehavior,n=lt&&e;n&&this.listeners.push(nt());const r=()=>{const e=this.current,r=Tt(this.base);this.current===p&&r===this._startLocation||this.transitionTo(r,r=>{n&&rt(t,r,e,!0)})};window.addEventListener("popstate",r),this.listeners.push(()=>{window.removeEventListener("popstate",r)})}go(t){window.history.go(t)}push(t,e,n){const{current:r}=this;this.transitionTo(t,t=>{pt(x(this.base+t.fullPath)),rt(this.router,t,r,!1),e&&e(t)},n)}replace(t,e,n){const{current:r}=this;this.transitionTo(t,t=>{ft(x(this.base+t.fullPath)),rt(this.router,t,r,!1),e&&e(t)},n)}ensureURL(t){if(Tt(this.base)!==this.current.fullPath){const e=x(this.base+this.current.fullPath);t?pt(e):ft(e)}}getCurrentLocation(){return Tt(this.base)}}function Tt(t){let e=window.location.pathname;const n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(x(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}class Pt extends $t{constructor(t,e,n){super(t,e),n&&function(t){const e=Tt(t);if(!/^\/#/.test(e))return window.location.replace(x(t+"/#"+e)),!0}(this.base)||Lt()}setupListeners(){if(this.listeners.length>0)return;const t=this.router.options.scrollBehavior,e=lt&&t;e&&this.listeners.push(nt());const n=()=>{const t=this.current;Lt()&&this.transitionTo(_t(),n=>{e&&rt(this.router,n,t,!0),lt||Bt(n.fullPath)})},r=lt?"popstate":"hashchange";window.addEventListener(r,n),this.listeners.push(()=>{window.removeEventListener(r,n)})}push(t,e,n){const{current:r}=this;this.transitionTo(t,t=>{Ut(t.fullPath),rt(this.router,t,r,!1),e&&e(t)},n)}replace(t,e,n){const{current:r}=this;this.transitionTo(t,t=>{Bt(t.fullPath),rt(this.router,t,r,!1),e&&e(t)},n)}go(t){window.history.go(t)}ensureURL(t){const e=this.current.fullPath;_t()!==e&&(t?Ut(e):Bt(e))}getCurrentLocation(){return _t()}}function Lt(){const t=_t();return"/"===t.charAt(0)||(Bt("/"+t),!1)}function _t(){let t=window.location.href;const e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function qt(t){const e=window.location.href,n=e.indexOf("#");return`${n>=0?e.slice(0,n):e}#${t}`}function Ut(t){lt?pt(qt(t)):window.location.hash=t}function Bt(t){lt?ft(qt(t)):window.location.replace(qt(t))}class It extends $t{constructor(t,e){super(t,e),this.stack=[],this.index=-1}push(t,e,n){this.transitionTo(t,t=>{this.stack=this.stack.slice(0,this.index+1).concat(t),this.index++,e&&e(t)},n)}replace(t,e,n){this.transitionTo(t,t=>{this.stack=this.stack.slice(0,this.index).concat(t),e&&e(t)},n)}go(t){const e=this.index+t;if(e<0||e>=this.stack.length)return;const n=this.stack[e];this.confirmTransition(n,()=>{const t=this.current;this.index=e,this.updateRoute(n),this.router.afterHooks.forEach(e=>{e&&e(n,t)})},t=>{xt(t,yt.duplicated)&&(this.index=e)})}getCurrentLocation(){const t=this.stack[this.stack.length-1];return t?t.fullPath:"/"}ensureURL(){}}class Mt{constructor(t={}){this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Q(t.routes||[],this);let e=t.mode||"hash";switch(this.fallback="history"===e&&!lt&&!1!==t.fallback,this.fallback&&(e="hash"),D||(e="abstract"),this.mode=e,e){case"history":this.history=new jt(this,t.base);break;case"hash":this.history=new Pt(this,t.base,this.fallback);break;case"abstract":this.history=new It(this,t.base)}}match(t,e,n){return this.matcher.match(t,e,n)}get currentRoute(){return this.history&&this.history.current}init(t){if(this.apps.push(t),t.$once("hook:destroyed",()=>{const e=this.apps.indexOf(t);e>-1&&this.apps.splice(e,1),this.app===t&&(this.app=this.apps[0]||null),this.app||this.history.teardown()}),this.app)return;this.app=t;const e=this.history;if(e instanceof jt||e instanceof Pt){const t=t=>{const n=e.current,r=this.options.scrollBehavior;lt&&r&&"fullPath"in t&&rt(this,t,n,!1)},n=n=>{e.setupListeners(),t(n)};e.transitionTo(e.getCurrentLocation(),n,n)}e.listen(t=>{this.apps.forEach(e=>{e._route=t})})}beforeEach(t){return Vt(this.beforeHooks,t)}beforeResolve(t){return Vt(this.resolveHooks,t)}afterEach(t){return Vt(this.afterHooks,t)}onReady(t,e){this.history.onReady(t,e)}onError(t){this.history.onError(t)}push(t,e,n){if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((e,n)=>{this.history.push(t,e,n)});this.history.push(t,e,n)}replace(t,e,n){if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((e,n)=>{this.history.replace(t,e,n)});this.history.replace(t,e,n)}go(t){this.history.go(t)}back(){this.go(-1)}forward(){this.go(1)}getMatchedComponents(t){const e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(t=>Object.keys(t.components).map(e=>t.components[e]))):[]}resolve(t,e,n){const r=V(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?x(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}}getRoutes(){return this.matcher.getRoutes()}addRoute(t,e){this.matcher.addRoute(t,e),this.history.current!==p&&this.history.transitionTo(this.history.getCurrentLocation())}addRoutes(t){this.matcher.addRoutes(t),this.history.current!==p&&this.history.transitionTo(this.history.getCurrentLocation())}}function Vt(t,e){return t.push(e),()=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)}}Mt.install=function t(e){if(t.installed&&z===e)return;t.installed=!0,z=e;const n=t=>void 0!==t,r=(t,e)=>{let r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get(){return this._routerRoot._route}}),e.component("RouterView",w),e.component("RouterLink",N);const o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created},Mt.version="3.5.2",Mt.isNavigationFailure=xt,Mt.NavigationFailureType=yt,Mt.START_LOCATION=p,D&&window.Vue&&window.Vue.use(Mt);export default Mt; \ No newline at end of file diff --git a/dist/vue-router.esm.js b/dist/vue-router.esm.js index 093290fe4..9f7ec463d 100644 --- a/dist/vue-router.esm.js +++ b/dist/vue-router.esm.js @@ -1,5 +1,5 @@ /*! - * vue-router v3.5.1 + * vue-router v3.5.2 * (c) 2021 Evan You * @license MIT */ @@ -1562,7 +1562,7 @@ function createMatcher ( createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); // add aliases of parent - if (parent) { + if (parent && parent.alias.length) { createRouteMap( // $flow-disable-line route is defined if parent is parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }), @@ -2633,7 +2633,13 @@ var HTML5History = /*@__PURE__*/(function (History) { function getLocation (base) { var path = window.location.pathname; - if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 0) { + var pathLowerCase = path.toLowerCase(); + var baseLowerCase = base.toLowerCase(); + // base="/a" shouldn't turn path="/app" into "/a/pp" + // https://github.com/vuejs/vue-router/issues/3555 + // so we ensure the trailing slash in the base + if (base && ((pathLowerCase === baseLowerCase) || + (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { path = path.slice(base.length); } return (path || '/') + window.location.search + window.location.hash @@ -3126,7 +3132,7 @@ function createHref (base, fullPath, mode) { } VueRouter.install = install; -VueRouter.version = '3.5.1'; +VueRouter.version = '3.5.2'; VueRouter.isNavigationFailure = isNavigationFailure; VueRouter.NavigationFailureType = NavigationFailureType; VueRouter.START_LOCATION = START; diff --git a/dist/vue-router.js b/dist/vue-router.js index bc4fb90b9..5676ab4dc 100644 --- a/dist/vue-router.js +++ b/dist/vue-router.js @@ -1,5 +1,5 @@ /*! - * vue-router v3.5.1 + * vue-router v3.5.2 * (c) 2021 Evan You * @license MIT */ @@ -18,7 +18,7 @@ } function warn (condition, message) { - if ( !condition) { + if (!condition) { typeof console !== 'undefined' && console.warn(("[vue-router] " + message)); } } @@ -66,7 +66,7 @@ try { parsedQuery = parse(query || ''); } catch (e) { - warn(false, e.message); + warn(false, e.message); parsedQuery = {}; } for (var key in extraQuery) { @@ -1170,7 +1170,7 @@ }); if (scopedSlot) { - if ( !this.custom) { + if (!this.custom) { !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\n\n'); warnedCustomSlot = true; } @@ -1479,7 +1479,7 @@ var aliases = Array.isArray(route.alias) ? route.alias : [route.alias]; for (var i = 0; i < aliases.length; ++i) { var alias = aliases[i]; - if ( alias === path) { + if (alias === path) { warn( false, ("Found an alias with the same value as the path: \"" + path + "\". You have to remove that alias. It will be ignored in development.") @@ -1506,7 +1506,7 @@ if (name) { if (!nameMap[name]) { nameMap[name] = record; - } else if ( !matchAs) { + } else if (!matchAs) { warn( false, "Duplicate named routes definition: " + @@ -1568,7 +1568,7 @@ createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent); // add aliases of parent - if (parent) { + if (parent && parent.alias.length) { createRouteMap( // $flow-disable-line route is defined if parent is parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }), @@ -2136,7 +2136,7 @@ var reject = once(function (reason) { var msg = "Failed to resolve async component " + key + ": " + reason; - warn(false, msg); + warn(false, msg); if (!error) { error = isError(reason) ? reason @@ -2639,7 +2639,13 @@ function getLocation (base) { var path = window.location.pathname; - if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 0) { + var pathLowerCase = path.toLowerCase(); + var baseLowerCase = base.toLowerCase(); + // base="/a" shouldn't turn path="/app" into "/a/pp" + // https://github.com/vuejs/vue-router/issues/3555 + // so we ensure the trailing slash in the base + if (base && ((pathLowerCase === baseLowerCase) || + (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) { path = path.slice(base.length); } return (path || '/') + window.location.search + window.location.hash @@ -2937,8 +2943,7 @@ VueRouter.prototype.init = function init (app /* Vue component instance */) { var this$1 = this; - - assert( + assert( install.installed, "not installed. Make sure to call `Vue.use(VueRouter)` " + "before creating root instance." @@ -3132,7 +3137,7 @@ } VueRouter.install = install; - VueRouter.version = '3.5.1'; + VueRouter.version = '3.5.2'; VueRouter.isNavigationFailure = isNavigationFailure; VueRouter.NavigationFailureType = NavigationFailureType; VueRouter.START_LOCATION = START; diff --git a/dist/vue-router.min.js b/dist/vue-router.min.js index 68b4df8d3..d5d422aa7 100644 --- a/dist/vue-router.min.js +++ b/dist/vue-router.min.js @@ -1,6 +1,11 @@ /*! - * vue-router v3.5.1 + * vue-router v3.5.2 * (c) 2021 Evan You * @license MIT */ -var t,e;t=this,e=function(){"use strict";function t(t,e){for(var r in e)t[r]=e[r];return t}var e=/[!'()*]/g,r=function(t){return"%"+t.charCodeAt(0).toString(16)},n=/%2C/g,o=function(t){return encodeURIComponent(t).replace(e,r).replace(n,",")};function i(t){try{return decodeURIComponent(t)}catch(t){}return t}var a=function(t){return null==t||"object"==typeof t?t:String(t)};function s(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(function(t){var r=t.replace(/\+/g," ").split("="),n=i(r.shift()),o=r.length>0?i(r.join("=")):null;void 0===e[n]?e[n]=o:Array.isArray(e[n])?e[n].push(o):e[n]=[e[n],o]}),e):e}function u(t){var e=t?Object.keys(t).map(function(e){var r=t[e];if(void 0===r)return"";if(null===r)return o(e);if(Array.isArray(r)){var n=[];return r.forEach(function(t){void 0!==t&&(null===t?n.push(o(e)):n.push(o(e)+"="+o(t)))}),n.join("&")}return o(e)+"="+o(r)}).filter(function(t){return t.length>0}).join("&"):null;return e?"?"+e:""}var c=/\/?$/;function p(t,e,r,n){var o=n&&n.options.stringifyQuery,i=e.query||{};try{i=f(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:d(e,o),matched:t?l(t):[]};return r&&(a.redirectedFrom=d(r,o)),Object.freeze(a)}function f(t){if(Array.isArray(t))return t.map(f);if(t&&"object"==typeof t){var e={};for(var r in t)e[r]=f(t[r]);return e}return t}var h=p(null,{path:"/"});function l(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function d(t,e){var r=t.path,n=t.query;void 0===n&&(n={});var o=t.hash;return void 0===o&&(o=""),(r||"/")+(e||u)(n)+o}function v(t,e,r){return e===h?t===e:!!e&&(t.path&&e.path?t.path.replace(c,"")===e.path.replace(c,"")&&(r||t.hash===e.hash&&y(t.query,e.query)):!(!t.name||!e.name)&&t.name===e.name&&(r||t.hash===e.hash&&y(t.query,e.query)&&y(t.params,e.params)))}function y(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var r=Object.keys(t).sort(),n=Object.keys(e).sort();return r.length===n.length&&r.every(function(r,o){var i=t[r];if(n[o]!==r)return!1;var a=e[r];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?y(i,a):String(i)===String(a)})}function m(t){for(var e=0;e=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}(i.path||""),h=r&&r.path||"/",l=f.path?b(f.path,h,n||i.append):h,d=function(t,e,r){void 0===e&&(e={});var n,o=r||s;try{n=o(t||"")}catch(t){n={}}for(var i in e){var u=e[i];n[i]=Array.isArray(u)?u.map(a):a(u)}return n}(f.query,i.query,o&&o.options.parseQuery),v=i.hash||f.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:l,query:d,hash:v}}var H,N=[String,Object],F=[String,Array],z=function(){},D={name:"RouterLink",props:{to:{type:N,required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:F,default:"click"}},render:function(e){var r=this,n=this.$router,o=this.$route,i=n.resolve(this.to,o,this.append),a=i.location,s=i.route,u=i.href,f={},h=n.options.linkActiveClass,l=n.options.linkExactActiveClass,d=null==h?"router-link-active":h,y=null==l?"router-link-exact-active":l,m=null==this.activeClass?d:this.activeClass,g=null==this.exactActiveClass?y:this.exactActiveClass,w=s.redirectedFrom?p(null,V(s.redirectedFrom),null,n):s;f[g]=v(o,w,this.exactPath),f[m]=this.exact||this.exactPath?f[g]:function(t,e){return 0===t.path.replace(c,"/").indexOf(e.path.replace(c,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var r in e)if(!(r in t))return!1;return!0}(t.query,e.query)}(o,w);var b=f[g]?this.ariaCurrentValue:null,x=function(t){K(t)&&(r.replace?n.replace(a,z):n.push(a,z))},R={click:K};Array.isArray(this.event)?this.event.forEach(function(t){R[t]=x}):R[this.event]=x;var k={class:f},E=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:s,navigate:x,isActive:f[m],isExactActive:f[g]});if(E){if(1===E.length)return E[0];if(E.length>1||!E.length)return 0===E.length?e():e("span",{},E)}if("a"===this.tag)k.on=R,k.attrs={href:u,"aria-current":b};else{var C=function t(e){if(e)for(var r,n=0;n-1&&(s.params[h]=r.params[h]);return s.path=M(p.path,s.params),u(p,s,a)}if(s.path){s.params={};for(var l=0;l=t.length?r():t[o]?e(t[o],function(){n(o+1)}):n(o+1)};n(0)}var gt={redirected:2,aborted:4,cancelled:8,duplicated:16};function wt(t,e){return xt(t,e,gt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return Rt.forEach(function(r){r in t&&(e[r]=t[r])}),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function bt(t,e){return xt(t,e,gt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function xt(t,e,r,n){var o=new Error(n);return o._isRouter=!0,o.from=t,o.to=e,o.type=r,o}var Rt=["params","query","hash"];function kt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Et(t,e){return kt(t)&&t._isRouter&&(null==e||t.type===e)}function Ct(t){return function(e,r,n){var o=!1,i=0,a=null;At(t,function(t,e,r,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var u,c=jt(function(e){var o;((o=e).__esModule||_t&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:H.extend(e),r.components[s]=e,--i<=0&&n()}),p=jt(function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=kt(t)?t:new Error(e),n(a))});try{u=t(c,p)}catch(t){p(t)}if(u)if("function"==typeof u.then)u.then(c,p);else{var f=u.component;f&&"function"==typeof f.then&&f.then(c,p)}}}),o||n()}}function At(t,e){return Ot(t.map(function(t){return Object.keys(t.components).map(function(r){return e(t.components[r],t.instances[r],t,r)})}))}function Ot(t){return Array.prototype.concat.apply([],t)}var _t="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function jt(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var Tt=function(t,e){this.router=t,this.base=function(t){if(!t)if(J){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}(e),this.current=h,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function St(t,e,r,n){var o=At(t,function(t,n,o,i){var a=function(t,e){return"function"!=typeof t&&(t=H.extend(t)),t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map(function(t){return r(t,n,o,i)}):r(a,n,o,i)});return Ot(n?o.reverse():o)}function Pt(t,e){if(e)return function(){return t.apply(e,arguments)}}Tt.prototype.listen=function(t){this.cb=t},Tt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Tt.prototype.onError=function(t){this.errorCbs.push(t)},Tt.prototype.transitionTo=function(t,e,r){var n,o=this;try{n=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach(function(e){e(t)}),t}var i=this.current;this.confirmTransition(n,function(){o.updateRoute(n),e&&e(n),o.ensureURL(),o.router.afterHooks.forEach(function(t){t&&t(n,i)}),o.ready||(o.ready=!0,o.readyCbs.forEach(function(t){t(n)}))},function(t){r&&r(t),t&&!o.ready&&(Et(t,gt.redirected)&&i===h||(o.ready=!0,o.readyErrorCbs.forEach(function(e){e(t)})))})},Tt.prototype.confirmTransition=function(t,e,r){var n=this,o=this.current;this.pending=t;var i,a,s=function(t){!Et(t)&&kt(t)&&(n.errorCbs.length?n.errorCbs.forEach(function(e){e(t)}):console.error(t)),r&&r(t)},u=t.matched.length-1,c=o.matched.length-1;if(v(t,o)&&u===c&&t.matched[u]===o.matched[c])return this.ensureURL(),s(((a=xt(i=o,t,gt.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var p=function(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r0)){var e=this.router,r=e.options.scrollBehavior,n=dt&&r;n&&this.listeners.push(ot());var o=function(){var r=t.current,o=$t(t.base);t.current===h&&o===t._startLocation||t.transitionTo(o,function(t){n&&it(e,t,r,!0)})};window.addEventListener("popstate",o),this.listeners.push(function(){window.removeEventListener("popstate",o)})}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,function(t){vt(x(n.base+t.fullPath)),it(n.router,t,o,!1),e&&e(t)},r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,function(t){yt(x(n.base+t.fullPath)),it(n.router,t,o,!1),e&&e(t)},r)},e.prototype.ensureURL=function(t){if($t(this.base)!==this.current.fullPath){var e=x(this.base+this.current.fullPath);t?vt(e):yt(e)}},e.prototype.getCurrentLocation=function(){return $t(this.base)},e}(Tt);function $t(t){var e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var qt=function(t){function e(e,r,n){t.call(this,e,r),n&&function(t){var e=$t(t);if(!/^\/#/.test(e))return window.location.replace(x(t+"/#"+e)),!0}(this.base)||Ut()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,r=dt&&e;r&&this.listeners.push(ot());var n=function(){var e=t.current;Ut()&&t.transitionTo(Bt(),function(n){r&&it(t.router,n,e,!0),dt||Vt(n.fullPath)})},o=dt?"popstate":"hashchange";window.addEventListener(o,n),this.listeners.push(function(){window.removeEventListener(o,n)})}},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,function(t){Mt(t.fullPath),it(n.router,t,o,!1),e&&e(t)},r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,function(t){Vt(t.fullPath),it(n.router,t,o,!1),e&&e(t)},r)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Bt()!==e&&(t?Mt(e):Vt(e))},e.prototype.getCurrentLocation=function(){return Bt()},e}(Tt);function Ut(){var t=Bt();return"/"===t.charAt(0)||(Vt("/"+t),!1)}function Bt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function It(t){var e=window.location.href,r=e.indexOf("#");return(r>=0?e.slice(0,r):e)+"#"+t}function Mt(t){dt?vt(It(t)):window.location.hash=t}function Vt(t){dt?yt(It(t)):window.location.replace(It(t))}var Ht=function(t){function e(e,r){t.call(this,e,r),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,r){var n=this;this.transitionTo(t,function(t){n.stack=n.stack.slice(0,n.index+1).concat(t),n.index++,e&&e(t)},r)},e.prototype.replace=function(t,e,r){var n=this;this.transitionTo(t,function(t){n.stack=n.stack.slice(0,n.index).concat(t),e&&e(t)},r)},e.prototype.go=function(t){var e=this,r=this.index+t;if(!(r<0||r>=this.stack.length)){var n=this.stack[r];this.confirmTransition(n,function(){var t=e.current;e.index=r,e.updateRoute(n),e.router.afterHooks.forEach(function(e){e&&e(n,t)})},function(t){Et(t,gt.duplicated)&&(e.index=r)})}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Tt),Nt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Y(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!dt&&!1!==t.fallback,this.fallback&&(e="hash"),J||(e="abstract"),this.mode=e,e){case"history":this.history=new Lt(this,t.base);break;case"hash":this.history=new qt(this,t.base,this.fallback);break;case"abstract":this.history=new Ht(this,t.base)}},Ft={currentRoute:{configurable:!0}};function zt(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}return Nt.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},Ft.currentRoute.get=function(){return this.history&&this.history.current},Nt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()}),!this.app){this.app=t;var r=this.history;if(r instanceof Lt||r instanceof qt){var n=function(t){r.setupListeners(),function(t){var n=r.current,o=e.options.scrollBehavior;dt&&o&&"fullPath"in t&&it(e,t,n,!1)}(t)};r.transitionTo(r.getCurrentLocation(),n,n)}r.listen(function(t){e.apps.forEach(function(e){e._route=t})})}},Nt.prototype.beforeEach=function(t){return zt(this.beforeHooks,t)},Nt.prototype.beforeResolve=function(t){return zt(this.resolveHooks,t)},Nt.prototype.afterEach=function(t){return zt(this.afterHooks,t)},Nt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Nt.prototype.onError=function(t){this.history.onError(t)},Nt.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise(function(e,r){n.history.push(t,e,r)});this.history.push(t,e,r)},Nt.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise(function(e,r){n.history.replace(t,e,r)});this.history.replace(t,e,r)},Nt.prototype.go=function(t){this.history.go(t)},Nt.prototype.back=function(){this.go(-1)},Nt.prototype.forward=function(){this.go(1)},Nt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(t){return Object.keys(t.components).map(function(e){return t.components[e]})})):[]},Nt.prototype.resolve=function(t,e,r){var n=V(t,e=e||this.history.current,r,this),o=this.match(n,e),i=o.redirectedFrom||o.fullPath;return{location:n,route:o,href:function(t,e,r){var n="hash"===r?"#"+e:e;return t?x(t+"/"+n):n}(this.history.base,i,this.mode),normalizedTo:n,resolved:o}},Nt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Nt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==h&&this.history.transitionTo(this.history.getCurrentLocation())},Nt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==h&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Nt.prototype,Ft),Nt.install=function t(e){if(!t.installed||H!==e){t.installed=!0,H=e;var r=function(t){return void 0!==t},n=function(t,e){var n=t.$options._parentVnode;r(n)&&r(n=n.data)&&r(n=n.registerRouteInstance)&&n(t,e)};e.mixin({beforeCreate:function(){r(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",g),e.component("RouterLink",D);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Nt.version="3.5.1",Nt.isNavigationFailure=Et,Nt.NavigationFailureType=gt,Nt.START_LOCATION=h,J&&window.Vue&&window.Vue.use(Nt),Nt},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).VueRouter=e(); \ No newline at end of file +/*! + * vue-router v3.5.2 + * (c) 2021 Evan You + * @license MIT + */ +var t,e;t=this,e=function(){"use strict";function t(t,e){for(var r in e)t[r]=e[r];return t}var e=/[!'()*]/g,r=function(t){return"%"+t.charCodeAt(0).toString(16)},n=/%2C/g,o=function(t){return encodeURIComponent(t).replace(e,r).replace(n,",")};function i(t){try{return decodeURIComponent(t)}catch(t){}return t}var a=function(t){return null==t||"object"==typeof t?t:String(t)};function s(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var r=t.replace(/\+/g," ").split("="),n=i(r.shift()),o=r.length>0?i(r.join("=")):null;void 0===e[n]?e[n]=o:Array.isArray(e[n])?e[n].push(o):e[n]=[e[n],o]})),e):e}function u(t){var e=t?Object.keys(t).map((function(e){var r=t[e];if(void 0===r)return"";if(null===r)return o(e);if(Array.isArray(r)){var n=[];return r.forEach((function(t){void 0!==t&&(null===t?n.push(o(e)):n.push(o(e)+"="+o(t)))})),n.join("&")}return o(e)+"="+o(r)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var c=/\/?$/;function p(t,e,r,n){var o=n&&n.options.stringifyQuery,i=e.query||{};try{i=f(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:d(e,o),matched:t?l(t):[]};return r&&(a.redirectedFrom=d(r,o)),Object.freeze(a)}function f(t){if(Array.isArray(t))return t.map(f);if(t&&"object"==typeof t){var e={};for(var r in t)e[r]=f(t[r]);return e}return t}var h=p(null,{path:"/"});function l(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function d(t,e){var r=t.path,n=t.query;void 0===n&&(n={});var o=t.hash;return void 0===o&&(o=""),(r||"/")+(e||u)(n)+o}function v(t,e,r){return e===h?t===e:!!e&&(t.path&&e.path?t.path.replace(c,"")===e.path.replace(c,"")&&(r||t.hash===e.hash&&y(t.query,e.query)):!(!t.name||!e.name)&&t.name===e.name&&(r||t.hash===e.hash&&y(t.query,e.query)&&y(t.params,e.params)))}function y(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var r=Object.keys(t).sort(),n=Object.keys(e).sort();return r.length===n.length&&r.every((function(r,o){var i=t[r];if(n[o]!==r)return!1;var a=e[r];return null==i||null==a?i===a:"object"==typeof i&&"object"==typeof a?y(i,a):String(i)===String(a)}))}function m(t){for(var e=0;e=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}(i.path||""),h=r&&r.path||"/",l=f.path?b(f.path,h,n||i.append):h,d=function(t,e,r){void 0===e&&(e={});var n,o=r||s;try{n=o(t||"")}catch(t){n={}}for(var i in e){var u=e[i];n[i]=Array.isArray(u)?u.map(a):a(u)}return n}(f.query,i.query,o&&o.options.parseQuery),v=i.hash||f.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:l,query:d,hash:v}}var H,N=function(){},F={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var r=this,n=this.$router,o=this.$route,i=n.resolve(this.to,o,this.append),a=i.location,s=i.route,u=i.href,f={},h=n.options.linkActiveClass,l=n.options.linkExactActiveClass,d=null==h?"router-link-active":h,y=null==l?"router-link-exact-active":l,m=null==this.activeClass?d:this.activeClass,g=null==this.exactActiveClass?y:this.exactActiveClass,w=s.redirectedFrom?p(null,V(s.redirectedFrom),null,n):s;f[g]=v(o,w,this.exactPath),f[m]=this.exact||this.exactPath?f[g]:function(t,e){return 0===t.path.replace(c,"/").indexOf(e.path.replace(c,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var r in e)if(!(r in t))return!1;return!0}(t.query,e.query)}(o,w);var b=f[g]?this.ariaCurrentValue:null,x=function(t){z(t)&&(r.replace?n.replace(a,N):n.push(a,N))},R={click:z};Array.isArray(this.event)?this.event.forEach((function(t){R[t]=x})):R[this.event]=x;var k={class:f},E=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:s,navigate:x,isActive:f[m],isExactActive:f[g]});if(E){if(1===E.length)return E[0];if(E.length>1||!E.length)return 0===E.length?e():e("span",{},E)}if("a"===this.tag)k.on=R,k.attrs={href:u,"aria-current":b};else{var C=function t(e){var r;if(e)for(var n=0;n-1&&(s.params[h]=r.params[h]);return s.path=M(p.path,s.params),u(p,s,a)}if(s.path){s.params={};for(var l=0;l=t.length?r():t[o]?e(t[o],(function(){n(o+1)})):n(o+1)};n(0)}var yt={redirected:2,aborted:4,cancelled:8,duplicated:16};function mt(t,e){return wt(t,e,yt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return bt.forEach((function(r){r in t&&(e[r]=t[r])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function gt(t,e){return wt(t,e,yt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function wt(t,e,r,n){var o=new Error(n);return o._isRouter=!0,o.from=t,o.to=e,o.type=r,o}var bt=["params","query","hash"];function xt(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Rt(t,e){return xt(t)&&t._isRouter&&(null==e||t.type===e)}function kt(t){return function(e,r,n){var o=!1,i=0,a=null;Et(t,(function(t,e,r,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var u,c=Ot((function(e){var o;((o=e).__esModule||At&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:H.extend(e),r.components[s]=e,--i<=0&&n()})),p=Ot((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=xt(t)?t:new Error(e),n(a))}));try{u=t(c,p)}catch(t){p(t)}if(u)if("function"==typeof u.then)u.then(c,p);else{var f=u.component;f&&"function"==typeof f.then&&f.then(c,p)}}})),o||n()}}function Et(t,e){return Ct(t.map((function(t){return Object.keys(t.components).map((function(r){return e(t.components[r],t.instances[r],t,r)}))})))}function Ct(t){return Array.prototype.concat.apply([],t)}var At="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ot(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var _t=function(t,e){this.router=t,this.base=function(t){if(!t)if(D){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}(e),this.current=h,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function jt(t,e,r,n){var o=Et(t,(function(t,n,o,i){var a=function(t,e){return"function"!=typeof t&&(t=H.extend(t)),t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return r(t,n,o,i)})):r(a,n,o,i)}));return Ct(n?o.reverse():o)}function Tt(t,e){if(e)return function(){return t.apply(e,arguments)}}_t.prototype.listen=function(t){this.cb=t},_t.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},_t.prototype.onError=function(t){this.errorCbs.push(t)},_t.prototype.transitionTo=function(t,e,r){var n,o=this;try{n=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(n,(function(){o.updateRoute(n),e&&e(n),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(n,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(n)})))}),(function(t){r&&r(t),t&&!o.ready&&(Rt(t,yt.redirected)&&i===h||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},_t.prototype.confirmTransition=function(t,e,r){var n=this,o=this.current;this.pending=t;var i,a,s=function(t){!Rt(t)&&xt(t)&&(n.errorCbs.length?n.errorCbs.forEach((function(e){e(t)})):console.error(t)),r&&r(t)},u=t.matched.length-1,c=o.matched.length-1;if(v(t,o)&&u===c&&t.matched[u]===o.matched[c])return this.ensureURL(),s(((a=wt(i=o,t,yt.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var p=function(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r0)){var e=this.router,r=e.options.scrollBehavior,n=ht&&r;n&&this.listeners.push(rt());var o=function(){var r=t.current,o=Pt(t.base);t.current===h&&o===t._startLocation||t.transitionTo(o,(function(t){n&&nt(e,t,r,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){lt(x(n.base+t.fullPath)),nt(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){dt(x(n.base+t.fullPath)),nt(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.ensureURL=function(t){if(Pt(this.base)!==this.current.fullPath){var e=x(this.base+this.current.fullPath);t?lt(e):dt(e)}},e.prototype.getCurrentLocation=function(){return Pt(this.base)},e}(_t);function Pt(t){var e=window.location.pathname,r=e.toLowerCase(),n=t.toLowerCase();return!t||r!==n&&0!==r.indexOf(x(n+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Lt=function(t){function e(e,r,n){t.call(this,e,r),n&&function(t){var e=Pt(t);if(!/^\/#/.test(e))return window.location.replace(x(t+"/#"+e)),!0}(this.base)||$t()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,r=ht&&e;r&&this.listeners.push(rt());var n=function(){var e=t.current;$t()&&t.transitionTo(qt(),(function(n){r&&nt(t.router,n,e,!0),ht||It(n.fullPath)}))},o=ht?"popstate":"hashchange";window.addEventListener(o,n),this.listeners.push((function(){window.removeEventListener(o,n)}))}},e.prototype.push=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){Bt(t.fullPath),nt(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this,o=this.current;this.transitionTo(t,(function(t){It(t.fullPath),nt(n.router,t,o,!1),e&&e(t)}),r)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;qt()!==e&&(t?Bt(e):It(e))},e.prototype.getCurrentLocation=function(){return qt()},e}(_t);function $t(){var t=qt();return"/"===t.charAt(0)||(It("/"+t),!1)}function qt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Ut(t){var e=window.location.href,r=e.indexOf("#");return(r>=0?e.slice(0,r):e)+"#"+t}function Bt(t){ht?lt(Ut(t)):window.location.hash=t}function It(t){ht?dt(Ut(t)):window.location.replace(Ut(t))}var Mt=function(t){function e(e,r){t.call(this,e,r),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index+1).concat(t),n.index++,e&&e(t)}),r)},e.prototype.replace=function(t,e,r){var n=this;this.transitionTo(t,(function(t){n.stack=n.stack.slice(0,n.index).concat(t),e&&e(t)}),r)},e.prototype.go=function(t){var e=this,r=this.index+t;if(!(r<0||r>=this.stack.length)){var n=this.stack[r];this.confirmTransition(n,(function(){var t=e.current;e.index=r,e.updateRoute(n),e.router.afterHooks.forEach((function(e){e&&e(n,t)}))}),(function(t){Rt(t,yt.duplicated)&&(e.index=r)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(_t),Vt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Q(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!ht&&!1!==t.fallback,this.fallback&&(e="hash"),D||(e="abstract"),this.mode=e,e){case"history":this.history=new St(this,t.base);break;case"hash":this.history=new Lt(this,t.base,this.fallback);break;case"abstract":this.history=new Mt(this,t.base)}},Ht={currentRoute:{configurable:!0}};function Nt(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}return Vt.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},Ht.currentRoute.get=function(){return this.history&&this.history.current},Vt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var r=this.history;if(r instanceof St||r instanceof Lt){var n=function(t){r.setupListeners(),function(t){var n=r.current,o=e.options.scrollBehavior;ht&&o&&"fullPath"in t&&nt(e,t,n,!1)}(t)};r.transitionTo(r.getCurrentLocation(),n,n)}r.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Vt.prototype.beforeEach=function(t){return Nt(this.beforeHooks,t)},Vt.prototype.beforeResolve=function(t){return Nt(this.resolveHooks,t)},Vt.prototype.afterEach=function(t){return Nt(this.afterHooks,t)},Vt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Vt.prototype.onError=function(t){this.history.onError(t)},Vt.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.push(t,e,r)}));this.history.push(t,e,r)},Vt.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&"undefined"!=typeof Promise)return new Promise((function(e,r){n.history.replace(t,e,r)}));this.history.replace(t,e,r)},Vt.prototype.go=function(t){this.history.go(t)},Vt.prototype.back=function(){this.go(-1)},Vt.prototype.forward=function(){this.go(1)},Vt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Vt.prototype.resolve=function(t,e,r){var n=V(t,e=e||this.history.current,r,this),o=this.match(n,e),i=o.redirectedFrom||o.fullPath;return{location:n,route:o,href:function(t,e,r){var n="hash"===r?"#"+e:e;return t?x(t+"/"+n):n}(this.history.base,i,this.mode),normalizedTo:n,resolved:o}},Vt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Vt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==h&&this.history.transitionTo(this.history.getCurrentLocation())},Vt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==h&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Vt.prototype,Ht),Vt.install=function t(e){if(!t.installed||H!==e){t.installed=!0,H=e;var r=function(t){return void 0!==t},n=function(t,e){var n=t.$options._parentVnode;r(n)&&r(n=n.data)&&r(n=n.registerRouteInstance)&&n(t,e)};e.mixin({beforeCreate:function(){r(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",g),e.component("RouterLink",F);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Vt.version="3.5.2",Vt.isNavigationFailure=Rt,Vt.NavigationFailureType=yt,Vt.START_LOCATION=h,D&&window.Vue&&window.Vue.use(Vt),Vt},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).VueRouter=e(); \ No newline at end of file From f28b22dc806e7d798125b9ea35ef2a7fc4ab3256 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Mon, 21 Jun 2021 16:41:06 +0200 Subject: [PATCH 052/197] chore(release): 3.5.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c51170bcd..213b2e93a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-router", - "version": "3.5.1", + "version": "3.5.2", "description": "Official router for Vue.js 2", "author": "Evan You", "license": "MIT", From 080a9c54957d93b0cc8a55226259c26718139a35 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Mon, 21 Jun 2021 16:42:34 +0200 Subject: [PATCH 053/197] chore(changelog): 3.5.2 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88598c736..690f5d860 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.5.2](https://github.com/vuejs/vue-router/compare/v3.5.1...v3.5.2) (2021-06-21) + +### Bug Fixes + +- **history:** stricter check of base in HTML5 ([#3556](https://github.com/vuejs/vue-router/issues/3556)) ([11dd184](https://github.com/vuejs/vue-router/commit/11dd184dc6a872c6399977fa4b7c259225ce4834)) +- **types:** added missing router.match ([#3554](https://github.com/vuejs/vue-router/issues/3554)) ([394a3b6](https://github.com/vuejs/vue-router/commit/394a3b6cce5e395ae4ccf3e2efb0c115d492978c)) + ## [3.5.1](https://github.com/vuejs/vue-router/compare/v3.5.0...v3.5.1) (2021-01-26) ### Bug Fixes From 8aaf0e62332c71b0c595248be72c00bf43fe13c5 Mon Sep 17 00:00:00 2001 From: Nico Devs <3766839+nicodevs@users.noreply.github.com> Date: Thu, 24 Jun 2021 15:48:10 -0300 Subject: [PATCH 054/197] docs(docs): Update Vue School Summer Sale banner (#3577) --- docs/.vuepress/theme/components/BannerTop.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/.vuepress/theme/components/BannerTop.vue b/docs/.vuepress/theme/components/BannerTop.vue index 7e242f187..167f5376f 100644 --- a/docs/.vuepress/theme/components/BannerTop.vue +++ b/docs/.vuepress/theme/components/BannerTop.vue @@ -11,7 +11,7 @@ Backpack
    - Less than 48 hours left for the Vue School offer + Extended! Last few hours for the Vue School offer
    GET ACCESS @@ -66,7 +66,7 @@ $contentClass = '.theme-default-content' height: 26px @media (min-width: 680px) display: block - left: 40px + left: 20px height: 40px img height: 40px @@ -90,7 +90,7 @@ $contentClass = '.theme-default-content' .vs-backpack margin-right: 6px @media (min-width: 680px) - margin-right: 14px + margin-right: 2px img height: 50px @media (min-width: 680px) From aa1324353bc8eb178a6e9da52900f53fcd7ab86c Mon Sep 17 00:00:00 2001 From: Nico Devs <3766839+nicodevs@users.noreply.github.com> Date: Sat, 26 Jun 2021 06:52:08 -0300 Subject: [PATCH 055/197] Docs: Remove Vue School Summer Sale banner (#3582) --- .../.vuepress/public/images/vueschool/close.svg | 7 ------- .../public/images/vueschool/vs-backpack.png | Bin 6234 -> 0 bytes .../public/images/vueschool/vs-iso.svg | 13 ------------- .../public/images/vueschool/vs-logo.svg | 16 ---------------- docs/.vuepress/theme/Layout.vue | 16 +--------------- 5 files changed, 1 insertion(+), 51 deletions(-) delete mode 100644 docs/.vuepress/public/images/vueschool/close.svg delete mode 100644 docs/.vuepress/public/images/vueschool/vs-backpack.png delete mode 100644 docs/.vuepress/public/images/vueschool/vs-iso.svg delete mode 100644 docs/.vuepress/public/images/vueschool/vs-logo.svg diff --git a/docs/.vuepress/public/images/vueschool/close.svg b/docs/.vuepress/public/images/vueschool/close.svg deleted file mode 100644 index a9d51d1d8..000000000 --- a/docs/.vuepress/public/images/vueschool/close.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/.vuepress/public/images/vueschool/vs-backpack.png b/docs/.vuepress/public/images/vueschool/vs-backpack.png deleted file mode 100644 index 43807ff60d253f86445b638697960cf25a11c2e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6234 zcmcgw_ct4k*EWjUYJH4oi`bjc*kY$8s7)0`W7Xc&-XpaYp;n`I)oAS!qg7(B+G53C zwa3@{PrUb>JD&TTbAPz^`RT^#!Zaw!Sjh13@F=00sxR*|;@;CA65dA-m*u|u^Z*Xg zhT!4VejvZLCc4M?o-Z|&@v1QZ93CD)madk8nueQ}10&w;?d|3M_5)&)@$Y%Jmlyc> z_zp1TdpH}%b5Gsg-L2Zn@1%>ZIkDric~XTLW}>-=!-OXyxo2W{lY%DYK>8o(L8r|clXoQB`fa>$oB{-ZL9M# zo{Mtsb;*i!{zv!ydsd|-N(yGB1bbEC^zJ>omSKMPD^=k=>j`n zEDHbr+yH;NzP;-f4L@4?eYU%Fb91)_VS)UJn2F*3hvME!7nFp)zOLmwui(0@1YT7G zZ|gWtzi^+Garr|Zwfb@FW()j{<2tKTz3$MtYSX?unp=~sIB(QAF6Pieo!oVP$+Tu`Pna7!lN%TCl&JB1;9HrY$=&{E}rk-SLLo?_QNvvO(fSs z63=c4$6Ed~97=vIm478mbT}G#F&Mv+&b^k+wE=y4RIl?V95^MBdup^z~E~HK2E~&O3$@mlHWSyC(<5z{5n|L>KUZwL(p>#DX#_lPGN9 z1yiM!^7Z1^ABkE*a$0%5ptCNwCE1+CL>F9D)~Gco>LtTv;H%jx-7k)8xe>5`F0fxI zf_k~$*=9@zAx6_K&zoaJ*7CzNERDk72pvxi?GCj6i51#uuRzJ`|J0XA@YEmt2z_1| zoU9}n+Ti>{-eEvGI@eWaIe=p}^i{JIpvod0_t`2U?89+vU|XZjrg7v!w#u4}Q=e8z zf}diR#q*=Yq&dvr;(NVzd%c9|<89B}(9zto5L28V@jn6S*xYy)*O>>u9xE(YS}Cojg|Xxwg(yh}OPY~DLgunGv+ zM(2dzEAao#ZhPF!ck%G(Q=qC41HZpJAGh`COj&yMaoXG}O17=FQ3$7|0-KERmuA~r zK~`Sn>hO*qk}bo09_(Ri)0!DchH3Mn5~1$T)rIw6j1J4oFp2R&$x@s{uJ6X}% z+;lWEKRF#HqUrLw&>_^KF&Lzb=fhAJn-EpNTI5*dY93we=^v?N)Fv3k9B=~7RxZ-j zjK_P(>ZQCX__+`G>w+=%l*Y9;NgdlMPS5x|yO4cHCq=h1mXG`C(bJ-M%5qaNVFna_ zUhfo!B4g>a%hg99ON-PafM<2|sEZP`fg>ms+vEI?no>ThqR+0x1cJ{=wwhuLl^RCQ zsw5C#AcZY2qKE(KPqXp;Mo8>1d<{>pcSGj@ay>;KYj6uJhVSxm_2i)6uN87X#31Ds zJ5%z6=};NihAB((rbh`}vm%DiRU}0j@)8-Ggn^}^nGT{wb9t6I;BEF=lJK<5jcnAOKj4Ms?pWbsIq6CXH&fA=H^al+#GgJs z7KLuo?SWr_H1I**)I=Y@aeVyniHedGlsZPcB>jT@Kdl!A+E8dxYR<#x)qZ}>7uJTq za3{Zxb@YvSeE#vZMu!l@LHK3b%D(I@nM$uQdj&Wz-%-fN>xy#9%J+Lr-~Qt7dOqs85sw+)04@%yNZm>wik3kT!A0{plcB0YIZ?4vOX4*dnof)M1aW?a6O3fj{nYu~?Js+*;_snd9(kqHaj)S^_HA zSWqrWz#+(3lw6`m_7%YC`|P~S_jyM<|15N8hd-XCmhR)`W@$^%zkg$T0LI>sH?Lxg zv!!*A%NC~#!oVchd}zs}DS;1W`76xFYwpY8Snjc!z9MT+wl?a};wgw~GTh`LRLk)X z?}inRZ2QUJu=!-1r&2*#2P?UbIOSoqyJ@W$C0_}t8={Q3ZD_F-mhbqeRDm&{2%C0J zpEl=Z;{SroNi_y^ENmpd;#8C{Wn9S%6O`)!4xd9kbz}%|4m7$VL%#3Vipk?Ad+MC* z8uI(bK=~xd%uFf)63|~S!OfW-cgK!T3z>HZ-MGgE1?oNnoSx&9j^c81%WaQTEq ztHpjXuF9Wk2>rk_`I(TAjc~z8Sscq7>J$>Tar~I3x-?;vA+tmO_=B%vIj~oJUlpIyv|3e>wx=VESQItbF9N7ffnMR>3p7;oL03%yU_wf&>=GU)FajIbEF3jFe1-a6lpM6u_AsbOO zU4hnDqU4B@TJ;3!`qjb-H)A3sg{i{z;i;DDm@g5skAgFujBeQh4%9CD`QN*f&m-UP z@p+E9RZiXCrajbl8esLC(|}Go5&cK&@CK6{xYNq$Ym`}G&&b_IW3P$|&YE?WV$~GW zRWc%jlPuOD9EmsA6RQ|38pX3u+)|;TkoAv3>yNa3JX$2>y*xc(=Av;NRnQMt*+6-> zfe7hKL3j1tocy;Eu-|eAGo1%V2FxV~v&3`|mOKgtxcp~z z)L84+m7&%sfRarklNB(c7jLM01Y5Iwj91YV?UsWB-1#1u|H^$LWm-4pkZ0ZN7d)Q$ z!cH^kX}gB9M_IdgA6CEY`&*PovQ_|uGn5o2`7bvCEYi_E5> zHy@?m2Y2IUV`V%3kizMDv#lQ=fPv+5Bb%lSoemgM4T#&G*iMkI@0n)1)d_!v=|qCN zhZz^J=V9p~8M>IF;$(^HS`)m|(ca&{3+aMa-mBt|)6a{ysXgmJ>J&Kx{>1Sgr`GS! za@;W=X7EdeE=$w6s4{}`ud}E3TL{Y=mYj)m-Y!OoJzM(n?WGJ-H3?HO;M84sbE99J z%x3slQnAL-Qi4h%6OL^B`K6rFRn!AL6YrKIiqV8&?S3c-sAaj!$fVdhsoxka}g z$16Rjr>BjLz=B4pbAuC`ccfsH=%Xq<32>QrUQz{80oXW?LLXxjS zx#W=k`GuPD&3kvfyP)mlI*&iGDuM~W-@e;FS>@VVU0qFop!qJNg`R|mXJ>1y%}k=< z7t!R1qJ)o2uzAIDxi040t$Ec;z8W}n!RA;*Tf#PVG=Vw61Y}pT&mUdoc{}9V(LUo% z`mx2P;qNR$)-My!eORV!N|N_@RYLE9N}JrYunZXNGqpc=w--}YwZE^v^YA1nr1`9| zxELD(h(Ttk=0wbh81I(&WCD?j%!mMztxdclbd8FSn@f;kVAIqr`%J2v8e7lTH(u$R)Ez20k6%YTi#2Dk;+R703;N{vhK--G{HGldUPAU`iQ4Y{>r z`!0pSP%;eIY>t5K=(|fan{ySLZXf}8V|$Xd z8yY;_B0jit+UHlTx@@Ba01@TTAQjGzL(>{=E4lR(dZ_EB!j8GKUKIIL7{2UNMJ8l* z5vwBC%l~OG1ca@OcrP0i=tFTTY>V8D3NjlrTde?KN02=u z0hb4CE{*4$DU09yPO~g<lt+hK*^N6-UgjrM9QoPzTB?)4uITR(=p$`*fLey=U#juiu(f4$Q$<;VJgTZIYEhidx>*j*7X=ZB349gTA`Des9 z0~4!n{)i1om7sq@sCeV|AdH7wDiu`)T%3L*zs{Bl{G49|Ox`EkQ=bq~TNeSg>ooP* z1j`K=$CH$jffWyh(&KcI&_=(z^O53)hInLG=Y_<2<&O1!g3x>R-EOL3!J!uLfI0K5 zsQ~+A*=T#Gjadn`V#l*(!By8vL#-3ZC7L12JO9I?Gu96^v_hisJ!4Yb z^ZE<-wVcj}w(|4iiiYwORk7`o|DLAzNzsM-Pfnesye*wmMqcC@xuMas5EnLPH#gGl zN9KA#G_{&>+x{iS7v=r#AN?80?r%px^x+*FLjUdCztj%I%v9+{QR>-@ec33^x3tvL zMyRy&H7LVQoB)0aZx=k`|CD9hm5p78 zWO@bGNmvSJ{nom&t7!e?tzv3VoTUoj)bV^*4(A|%k7nx;B5-CrNuWk|KlE6%ezZ}* zOf5!VY~)ej!BTP&1_u*m)K#c)EUIHl;;AEWD@eh_T4XL&f*DI8Sv_v{-t1dHJF7lT z)8a1~P^wU@Nq5RThVKTt_v6{XFEao`k|h{t8TFW4i2f%dS4kT4fx3xMC6LU+moce3N0>=wYgBy00^WB z0`k=peYf1%`bWW3HJq1`YeJ7=URI=>K9eK06s&2n86)qN{YIQ5o^E%)CPbl$;3VnR zRVd|ZY1d>CYrS{NI?_8l?LU$-RP7(|!r^H@z{#a)oRR1!eKfwR^!Fs2zXhDKEs zF{hh7N0V)F#=@WQ(6$!_21-2i?L7jJSh7ebIDSOyn$tT7TK_=qOYX zTJjH;m~yx!k}mB<8=8Y^v=5!^(0Im9ny8P`{1V0?L-j2!<|S&}S*YR0>5|>d>As~1 zVwP7bmbhqZH)ISx=p~ zcU=q}vu2fX`1{Yx6(pt=>94wCNj2h=PN^66CL_KOfScj!mw(l1jO|DrziW_O_G-8c zdHIel|A!Azi=E|+z~1QB`gBGvU*4igq&#+=x7}=1^!3qbw0?0djm5LL(q;8>%(NZ7 pOjL8Q=u=Mb_#)$_Hj%<}#T%39@3<&+wfko)9#jpcTCHpq{y+WWP~`vs diff --git a/docs/.vuepress/public/images/vueschool/vs-iso.svg b/docs/.vuepress/public/images/vueschool/vs-iso.svg deleted file mode 100644 index 873f0bcdc..000000000 --- a/docs/.vuepress/public/images/vueschool/vs-iso.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/.vuepress/public/images/vueschool/vs-logo.svg b/docs/.vuepress/public/images/vueschool/vs-logo.svg deleted file mode 100644 index 01f7ae050..000000000 --- a/docs/.vuepress/public/images/vueschool/vs-logo.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/.vuepress/theme/Layout.vue b/docs/.vuepress/theme/Layout.vue index a3aeecce2..705dde874 100644 --- a/docs/.vuepress/theme/Layout.vue +++ b/docs/.vuepress/theme/Layout.vue @@ -3,10 +3,6 @@ class="main-container" :class="{ 'has-top-banner': showTopBanner }" > -