From db3ec30ce6d59cc4150fe8df4439b9d2d1d0fda9 Mon Sep 17 00:00:00 2001 From: wanchun <445436867@qq.com> Date: Mon, 17 Apr 2023 06:38:35 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20WeBankFi?= =?UTF-8?q?nTech/fes.js@6769721d415acecb48bf617ad73e0e30508bb170=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 6 +++--- assets/{404.html.500851b0.js => 404.html.ef11e76b.js} | 2 +- .../{access.html.a62ebf7c.js => access.html.2783c102.js} | 2 +- .../{access.html.7030a42b.js => access.html.701eacb0.js} | 2 +- assets/{api.html.e97bc97c.js => api.html.1aa2bbfa.js} | 2 +- assets/api.html.20695f57.js | 1 + assets/{api.html.a50ff32f.js => api.html.3fadc9c0.js} | 2 +- assets/api.html.8cb21890.js | 1 - assets/{api.html.a5f3fb15.js => api.html.b17fa30f.js} | 2 +- assets/{app.1fff394b.js => app.005e0daf.js} | 4 ++-- ...{builder.html.55a7cc1f.js => builder.html.999bf635.js} | 2 +- ...{builder.html.41d262aa.js => builder.html.e970d1bc.js} | 2 +- assets/{cli.html.1bdad203.js => cli.html.768b01bb.js} | 2 +- assets/{cli.html.0b7f0983.js => cli.html.b37682a1.js} | 2 +- .../{config.html.8e53c331.js => config.html.3c4760e9.js} | 2 +- .../{config.html.1c29538e.js => config.html.5d92a440.js} | 2 +- ...ing.html.18b532cd.js => contributing.html.24d74808.js} | 2 +- ...ing.html.a6331978.js => contributing.html.8cad4b5e.js} | 2 +- assets/{css.html.afae2aea.js => css.html.3990f0c1.js} | 2 +- assets/{css.html.60666f3a.js => css.html.a45df14e.js} | 2 +- ...l.405ab82b.js => directory-structure.html.15096386.js} | 2 +- ...l.f4065d91.js => directory-structure.html.4960a3b9.js} | 2 +- .../{editor.html.a0484bbe.js => editor.html.2fb88cf1.js} | 2 +- .../{editor.html.bb339413.js => editor.html.604dae94.js} | 2 +- assets/{enums.html.28629e2b.js => enums.html.7c55aefa.js} | 2 +- assets/{enums.html.e93ea61f.js => enums.html.e894dfd6.js} | 2 +- assets/{env.html.08b9b704.js => env.html.35aa0f1a.js} | 2 +- assets/{env.html.90215696.js => env.html.805df8a5.js} | 2 +- assets/faq.html.1e599082.js | 1 + assets/faq.html.34e02ab8.js | 1 - assets/{faq.html.ea3f8c6e.js => faq.html.f70ba546.js} | 2 +- ....html.d3b9cf9e.js => getting-started.html.3b600666.js} | 2 +- ....html.4674ba1a.js => getting-started.html.8eca842e.js} | 2 +- assets/{icon.html.6deb220e.js => icon.html.c524fb7f.js} | 2 +- assets/{icon.html.0299fcd3.js => icon.html.d2dc60da.js} | 2 +- assets/{image.html.d54c6051.js => image.html.20b52f7d.js} | 2 +- assets/{image.html.f92ca3e1.js => image.html.58aa17c7.js} | 2 +- assets/{index.html.5aeb969b.js => index.html.174811be.js} | 2 +- assets/{index.html.dcb7e541.js => index.html.1f2b7059.js} | 2 +- assets/{index.html.f9721522.js => index.html.35cddc8c.js} | 2 +- assets/{index.html.fcf804cf.js => index.html.5f811d7d.js} | 2 +- assets/{index.html.af34d57a.js => index.html.7417ac5c.js} | 2 +- assets/{index.html.52d8d12d.js => index.html.74321f46.js} | 2 +- assets/{index.html.c3f5c27f.js => index.html.7e2b22df.js} | 2 +- assets/{index.html.d0d11947.js => index.html.82e50780.js} | 2 +- assets/{index.html.f01282d4.js => index.html.85db73e3.js} | 2 +- assets/{index.html.2916e212.js => index.html.8a34550e.js} | 2 +- assets/{index.html.2ac21041.js => index.html.b3f98887.js} | 2 +- assets/{index.html.c1c0d5f4.js => index.html.bc74ee4c.js} | 2 +- assets/{index.html.bbacd821.js => index.html.c22810d3.js} | 2 +- assets/{index.html.0609b1b7.js => index.html.d460e0cc.js} | 2 +- assets/{jest.html.fbca39c1.js => jest.html.9bcb2ce1.js} | 2 +- assets/{jest.html.e33cf0c4.js => jest.html.de551700.js} | 2 +- .../{layout.html.198d11d8.js => layout.html.b7ee50eb.js} | 2 +- .../{layout.html.1fadc1b9.js => layout.html.bccb8e74.js} | 2 +- .../{locale.html.b34d3672.js => locale.html.4d3b3790.js} | 2 +- .../{locale.html.8706b2b3.js => locale.html.c1dcd857.js} | 2 +- assets/{login.html.d631dbb6.js => login.html.0ea4b7ad.js} | 2 +- assets/{login.html.69f1e79f.js => login.html.2f0338ab.js} | 2 +- assets/{mock.html.1d7540bc.js => mock.html.6d653289.js} | 2 +- assets/{mock.html.80f47335.js => mock.html.9cef5d45.js} | 2 +- assets/{model.html.9b462f64.js => model.html.3cd49de2.js} | 2 +- assets/{model.html.72d355a9.js => model.html.fab33d63.js} | 2 +- assets/{pinia.html.36d2f07b.js => pinia.html.1e6ca3bb.js} | 2 +- assets/{pinia.html.7f9b2e48.js => pinia.html.1eb91490.js} | 2 +- .../{plugin.html.65e2e2cd.js => plugin.html.0095f814.js} | 2 +- .../{plugin.html.4294c881.js => plugin.html.ccfb9074.js} | 2 +- .../{public.html.b43d4cac.js => public.html.848eef99.js} | 2 +- .../{public.html.ce835cb0.js => public.html.9d99cf84.js} | 2 +- ...{qiankun.html.87eae9e6.js => qiankun.html.b3592391.js} | 2 +- ...{qiankun.html.fef1ea5f.js => qiankun.html.deb33c50.js} | 2 +- ...{request.html.b3bfcb9e.js => request.html.f4de04c7.js} | 2 +- ...{request.html.e186dff0.js => request.html.fe4ceade.js} | 2 +- assets/{route.html.83ea4e67.js => route.html.3d217616.js} | 2 +- assets/{route.html.65547e37.js => route.html.aa1f3f0b.js} | 2 +- ...g.html.4bc14dd5.js => runtime-config.html.c81fa63e.js} | 2 +- ...g.html.692db2b2.js => runtime-config.html.d036f810.js} | 2 +- assets/{sass.html.d347aba7.js => sass.html.177ef37c.js} | 2 +- assets/{sass.html.3cf05a81.js => sass.html.9338147b.js} | 2 +- assets/{swc.html.ee318276.js => swc.html.0bd38fed.js} | 2 +- assets/{swc.html.95bfd8be.js => swc.html.a56bb9f7.js} | 2 +- ...emplate.html.4157d97a.js => template.html.91640404.js} | 2 +- ...emplate.html.de04006d.js => template.html.decb42ff.js} | 2 +- ...pgrade3.html.f8453010.js => upgrade3.html.0ae06c8e.js} | 2 +- ...pgrade3.html.0c4ef841.js => upgrade3.html.3629ebda.js} | 2 +- assets/{vuex.html.41eb0107.js => vuex.html.36df398e.js} | 2 +- assets/{vuex.html.0b3540af.js => vuex.html.6d094802.js} | 2 +- ...ermark.html.6e85bd26.js => watermark.html.1d51b560.js} | 2 +- ...ermark.html.d6de8921.js => watermark.html.855d80c4.js} | 2 +- ...indicss.html.6138fa98.js => windicss.html.17e40609.js} | 2 +- ...indicss.html.cc3815a6.js => windicss.html.cc303ad2.js} | 2 +- guide/builder.html | 6 +++--- guide/config.html | 8 ++++---- guide/contributing.html | 8 ++++---- guide/css.html | 8 ++++---- guide/directory-structure.html | 8 ++++---- guide/env.html | 8 ++++---- guide/faq.html | 8 ++++---- guide/getting-started.html | 8 ++++---- guide/image.html | 8 ++++---- guide/index.html | 8 ++++---- guide/mock.html | 8 ++++---- guide/plugin.html | 8 ++++---- guide/public.html | 8 ++++---- guide/route.html | 8 ++++---- guide/runtime-config.html | 8 ++++---- guide/template.html | 8 ++++---- guide/upgrade3.html | 6 +++--- index.html | 6 +++--- reference/api.html | 6 +++--- reference/api/index.html | 8 ++++---- reference/cli.html | 8 ++++---- reference/cli/index.html | 8 ++++---- reference/config/index.html | 8 ++++---- reference/plugin/dev/api.html | 8 ++++---- reference/plugin/dev/index.html | 8 ++++---- reference/plugin/index.html | 6 +++--- reference/plugin/plugins/access.html | 8 ++++---- reference/plugin/plugins/editor.html | 8 ++++---- reference/plugin/plugins/enums.html | 8 ++++---- reference/plugin/plugins/icon.html | 8 ++++---- reference/plugin/plugins/jest.html | 8 ++++---- reference/plugin/plugins/layout.html | 8 ++++---- reference/plugin/plugins/locale.html | 8 ++++---- reference/plugin/plugins/login.html | 8 ++++---- reference/plugin/plugins/model.html | 8 ++++---- reference/plugin/plugins/pinia.html | 8 ++++---- reference/plugin/plugins/qiankun.html | 8 ++++---- reference/plugin/plugins/request.html | 8 ++++---- reference/plugin/plugins/sass.html | 8 ++++---- reference/plugin/plugins/swc.html | 8 ++++---- reference/plugin/plugins/vuex.html | 8 ++++---- reference/plugin/plugins/watermark.html | 8 ++++---- reference/plugin/plugins/windicss.html | 8 ++++---- service-worker.js | 2 +- 135 files changed, 260 insertions(+), 260 deletions(-) rename assets/{404.html.500851b0.js => 404.html.ef11e76b.js} (63%) rename assets/{access.html.a62ebf7c.js => access.html.2783c102.js} (99%) rename assets/{access.html.7030a42b.js => access.html.701eacb0.js} (87%) rename assets/{api.html.e97bc97c.js => api.html.1aa2bbfa.js} (99%) create mode 100644 assets/api.html.20695f57.js rename assets/{api.html.a50ff32f.js => api.html.3fadc9c0.js} (79%) delete mode 100644 assets/api.html.8cb21890.js rename assets/{api.html.a5f3fb15.js => api.html.b17fa30f.js} (96%) rename assets/{app.1fff394b.js => app.005e0daf.js} (97%) rename assets/{builder.html.55a7cc1f.js => builder.html.999bf635.js} (97%) rename assets/{builder.html.41d262aa.js => builder.html.e970d1bc.js} (71%) rename assets/{cli.html.1bdad203.js => cli.html.768b01bb.js} (99%) rename assets/{cli.html.0b7f0983.js => cli.html.b37682a1.js} (72%) rename assets/{config.html.8e53c331.js => config.html.3c4760e9.js} (99%) rename assets/{config.html.1c29538e.js => config.html.5d92a440.js} (77%) rename assets/{contributing.html.18b532cd.js => contributing.html.24d74808.js} (73%) rename assets/{contributing.html.a6331978.js => contributing.html.8cad4b5e.js} (99%) rename assets/{css.html.afae2aea.js => css.html.3990f0c1.js} (77%) rename assets/{css.html.60666f3a.js => css.html.a45df14e.js} (98%) rename assets/{directory-structure.html.405ab82b.js => directory-structure.html.15096386.js} (99%) rename assets/{directory-structure.html.f4065d91.js => directory-structure.html.4960a3b9.js} (87%) rename assets/{editor.html.a0484bbe.js => editor.html.2fb88cf1.js} (83%) rename assets/{editor.html.bb339413.js => editor.html.604dae94.js} (99%) rename assets/{enums.html.28629e2b.js => enums.html.7c55aefa.js} (89%) rename assets/{enums.html.e93ea61f.js => enums.html.e894dfd6.js} (99%) rename assets/{env.html.08b9b704.js => env.html.35aa0f1a.js} (89%) rename assets/{env.html.90215696.js => env.html.805df8a5.js} (99%) create mode 100644 assets/faq.html.1e599082.js delete mode 100644 assets/faq.html.34e02ab8.js rename assets/{faq.html.ea3f8c6e.js => faq.html.f70ba546.js} (93%) rename assets/{getting-started.html.d3b9cf9e.js => getting-started.html.3b600666.js} (99%) rename assets/{getting-started.html.4674ba1a.js => getting-started.html.8eca842e.js} (80%) rename assets/{icon.html.6deb220e.js => icon.html.c524fb7f.js} (98%) rename assets/{icon.html.0299fcd3.js => icon.html.d2dc60da.js} (75%) rename assets/{image.html.d54c6051.js => image.html.20b52f7d.js} (85%) rename assets/{image.html.f92ca3e1.js => image.html.58aa17c7.js} (99%) rename assets/{index.html.5aeb969b.js => index.html.174811be.js} (98%) rename assets/{index.html.dcb7e541.js => index.html.1f2b7059.js} (97%) rename assets/{index.html.f9721522.js => index.html.35cddc8c.js} (91%) rename assets/{index.html.fcf804cf.js => index.html.5f811d7d.js} (99%) rename assets/{index.html.af34d57a.js => index.html.7417ac5c.js} (98%) rename assets/{index.html.52d8d12d.js => index.html.74321f46.js} (96%) rename assets/{index.html.c3f5c27f.js => index.html.7e2b22df.js} (99%) rename assets/{index.html.d0d11947.js => index.html.82e50780.js} (82%) rename assets/{index.html.f01282d4.js => index.html.85db73e3.js} (83%) rename assets/{index.html.2916e212.js => index.html.8a34550e.js} (99%) rename assets/{index.html.2ac21041.js => index.html.b3f98887.js} (63%) rename assets/{index.html.c1c0d5f4.js => index.html.bc74ee4c.js} (91%) rename assets/{index.html.bbacd821.js => index.html.c22810d3.js} (99%) rename assets/{index.html.0609b1b7.js => index.html.d460e0cc.js} (64%) rename assets/{jest.html.fbca39c1.js => jest.html.9bcb2ce1.js} (99%) rename assets/{jest.html.e33cf0c4.js => jest.html.de551700.js} (80%) rename assets/{layout.html.198d11d8.js => layout.html.b7ee50eb.js} (99%) rename assets/{layout.html.1fadc1b9.js => layout.html.bccb8e74.js} (89%) rename assets/{locale.html.b34d3672.js => locale.html.4d3b3790.js} (83%) rename assets/{locale.html.8706b2b3.js => locale.html.c1dcd857.js} (99%) rename assets/{login.html.d631dbb6.js => login.html.0ea4b7ad.js} (98%) rename assets/{login.html.69f1e79f.js => login.html.2f0338ab.js} (70%) rename assets/{mock.html.1d7540bc.js => mock.html.6d653289.js} (81%) rename assets/{mock.html.80f47335.js => mock.html.9cef5d45.js} (99%) rename assets/{model.html.9b462f64.js => model.html.3cd49de2.js} (99%) rename assets/{model.html.72d355a9.js => model.html.fab33d63.js} (83%) rename assets/{pinia.html.36d2f07b.js => pinia.html.1e6ca3bb.js} (83%) rename assets/{pinia.html.7f9b2e48.js => pinia.html.1eb91490.js} (99%) rename assets/{plugin.html.65e2e2cd.js => plugin.html.0095f814.js} (99%) rename assets/{plugin.html.4294c881.js => plugin.html.ccfb9074.js} (83%) rename assets/{public.html.b43d4cac.js => public.html.848eef99.js} (98%) rename assets/{public.html.ce835cb0.js => public.html.9d99cf84.js} (75%) rename assets/{qiankun.html.87eae9e6.js => qiankun.html.b3592391.js} (99%) rename assets/{qiankun.html.fef1ea5f.js => qiankun.html.deb33c50.js} (90%) rename assets/{request.html.b3bfcb9e.js => request.html.f4de04c7.js} (99%) rename assets/{request.html.e186dff0.js => request.html.fe4ceade.js} (88%) rename assets/{route.html.83ea4e67.js => route.html.3d217616.js} (99%) rename assets/{route.html.65547e37.js => route.html.aa1f3f0b.js} (87%) rename assets/{runtime-config.html.4bc14dd5.js => runtime-config.html.c81fa63e.js} (99%) rename assets/{runtime-config.html.692db2b2.js => runtime-config.html.d036f810.js} (86%) rename assets/{sass.html.d347aba7.js => sass.html.177ef37c.js} (70%) rename assets/{sass.html.3cf05a81.js => sass.html.9338147b.js} (97%) rename assets/{swc.html.ee318276.js => swc.html.0bd38fed.js} (98%) rename assets/{swc.html.95bfd8be.js => swc.html.a56bb9f7.js} (71%) rename assets/{template.html.4157d97a.js => template.html.91640404.js} (99%) rename assets/{template.html.de04006d.js => template.html.decb42ff.js} (60%) rename assets/{upgrade3.html.f8453010.js => upgrade3.html.0ae06c8e.js} (77%) rename assets/{upgrade3.html.0c4ef841.js => upgrade3.html.3629ebda.js} (98%) rename assets/{vuex.html.41eb0107.js => vuex.html.36df398e.js} (84%) rename assets/{vuex.html.0b3540af.js => vuex.html.6d094802.js} (99%) rename assets/{watermark.html.6e85bd26.js => watermark.html.1d51b560.js} (99%) rename assets/{watermark.html.d6de8921.js => watermark.html.855d80c4.js} (78%) rename assets/{windicss.html.6138fa98.js => windicss.html.17e40609.js} (97%) rename assets/{windicss.html.cc3815a6.js => windicss.html.cc303ad2.js} (72%) diff --git a/404.html b/404.html index 5071cf23..effad636 100644 --- a/404.html +++ b/404.html @@ -24,10 +24,10 @@ | Fes.js - + -

404

看起来我们进入了错误的链接
返回首页
- +

404

这里什么都没有
返回首页
+ diff --git a/assets/404.html.500851b0.js b/assets/404.html.ef11e76b.js similarity index 63% rename from assets/404.html.500851b0.js rename to assets/404.html.ef11e76b.js index 2270fe67..2a0832fe 100644 --- a/assets/404.html.500851b0.js +++ b/assets/404.html.ef11e76b.js @@ -1 +1 @@ -import{_ as e,o as c,c as t}from"./app.1fff394b.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default}; +import{_ as e,o as c,c as t}from"./app.005e0daf.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default}; diff --git a/assets/access.html.a62ebf7c.js b/assets/access.html.2783c102.js similarity index 99% rename from assets/access.html.a62ebf7c.js rename to assets/access.html.2783c102.js index f8a79104..7a16d999 100644 --- a/assets/access.html.a62ebf7c.js +++ b/assets/access.html.2783c102.js @@ -1,4 +1,4 @@ -import{_ as p,r as c,o,c as l,b as s,d as a,a as e,f as n}from"./app.1fff394b.js";const i={},u=n(`

@fesjs/plugin-access

介绍

对于前端应用来说,权限就是页面、页面元素是否可见。

资源

Fes.js 把页面、页面元素统一叫做资源,用资源 ID 来识别区分他们:

<template>
+import{_ as p,r as c,o,c as l,b as s,d as a,a as e,f as n}from"./app.005e0daf.js";const i={},u=n(`

@fesjs/plugin-access

介绍

对于前端应用来说,权限就是页面、页面元素是否可见。

资源

Fes.js 把页面、页面元素统一叫做资源,用资源 ID 来识别区分他们:

  • 页面的资源 ID 默认是页面的路由 path 。比如页面 pages/a.vue 的路由 path/a。当页面访问 /a 时会渲染当前页面,/a 也就是页面的 accessId
  • 页面元素的资源 ID 没有默认值,需要自定义。
<template>
     <access :id="accessId"> accessOnepicess1 </access>
     <div v-access="accessId">accessOnepicess2</div>
 </template>
diff --git a/assets/access.html.7030a42b.js b/assets/access.html.701eacb0.js
similarity index 87%
rename from assets/access.html.7030a42b.js
rename to assets/access.html.701eacb0.js
index 92067de7..60863b45 100644
--- a/assets/access.html.7030a42b.js
+++ b/assets/access.html.701eacb0.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-2fe128e7","path":"/reference/plugin/plugins/access.html","title":"@fesjs/plugin-access","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[{"level":3,"title":"资源","slug":"资源","link":"#资源","children":[]},{"level":3,"title":"匹配规则","slug":"匹配规则","link":"#匹配规则","children":[]},{"level":3,"title":"角色","slug":"角色","link":"#角色","children":[]}]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[{"level":3,"title":"roles","slug":"roles","link":"#roles","children":[]}]},{"level":2,"title":"运行时配置","slug":"运行时配置","link":"#运行时配置","children":[{"level":3,"title":"unAccessHandler","slug":"unaccesshandler","link":"#unaccesshandler","children":[]},{"level":3,"title":"noFoundHandler","slug":"nofoundhandler","link":"#nofoundhandler","children":[]},{"level":3,"title":"ignoreAccess","slug":"ignoreaccess","link":"#ignoreaccess","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"access","slug":"access","link":"#access","children":[]},{"level":3,"title":"useAccess","slug":"useaccess","link":"#useaccess","children":[]},{"level":3,"title":"v-access","slug":"v-access","link":"#v-access","children":[]},{"level":3,"title":"组件 Access","slug":"组件-access","link":"#组件-access","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/access.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-2fe128e7","path":"/reference/plugin/plugins/access.html","title":"@fesjs/plugin-access","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[{"level":3,"title":"资源","slug":"资源","link":"#资源","children":[]},{"level":3,"title":"匹配规则","slug":"匹配规则","link":"#匹配规则","children":[]},{"level":3,"title":"角色","slug":"角色","link":"#角色","children":[]}]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[{"level":3,"title":"roles","slug":"roles","link":"#roles","children":[]}]},{"level":2,"title":"运行时配置","slug":"运行时配置","link":"#运行时配置","children":[{"level":3,"title":"unAccessHandler","slug":"unaccesshandler","link":"#unaccesshandler","children":[]},{"level":3,"title":"noFoundHandler","slug":"nofoundhandler","link":"#nofoundhandler","children":[]},{"level":3,"title":"ignoreAccess","slug":"ignoreaccess","link":"#ignoreaccess","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"access","slug":"access","link":"#access","children":[]},{"level":3,"title":"useAccess","slug":"useaccess","link":"#useaccess","children":[]},{"level":3,"title":"v-access","slug":"v-access","link":"#v-access","children":[]},{"level":3,"title":"组件 Access","slug":"组件-access","link":"#组件-access","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/access.md"}');export{e as data};
diff --git a/assets/api.html.e97bc97c.js b/assets/api.html.1aa2bbfa.js
similarity index 99%
rename from assets/api.html.e97bc97c.js
rename to assets/api.html.1aa2bbfa.js
index b471b7b0..f2ce9d3a 100644
--- a/assets/api.html.e97bc97c.js
+++ b/assets/api.html.1aa2bbfa.js
@@ -1,4 +1,4 @@
-import{_ as e,r as i,o,c,b as n,d as a,a as p,f as t}from"./app.1fff394b.js";const l={},u=t(`

插件 API

属性

api.paths

一些关键的路径:

  • cwd,执行命令的绝对路径
  • absNodeModulesPath,nodeModule 的绝对路径
  • absOutputPath,输出 build 产物的绝对路径
  • absSrcPath,src 目录的绝对路径
  • absPagesPath,pages目录的绝对路径
  • absTmpPath,.fes临时文件目录的绝对路径

api.cwd

执行命令的绝对路径

api.pkg

package.json的内容

api.configInstance

config实例

userConfig

用户配置

config

插件配置可被修改,此为最终的配置

env

process.env

args

环境变量

核心方法

describe

注册阶段执行,用于描述插件或插件集的 id、key、配置信息、启用方式等。

用法:describe({ id?: string, key?: string, config?: { default, schema, onChange } }, enableBy?)

例如:

api.describe({
+import{_ as e,r as i,o,c,b as n,d as a,a as p,f as t}from"./app.005e0daf.js";const l={},u=t(`

插件 API

属性

api.paths

一些关键的路径:

  • cwd,执行命令的绝对路径
  • absNodeModulesPath,nodeModule 的绝对路径
  • absOutputPath,输出 build 产物的绝对路径
  • absSrcPath,src 目录的绝对路径
  • absPagesPath,pages目录的绝对路径
  • absTmpPath,.fes临时文件目录的绝对路径

api.cwd

执行命令的绝对路径

api.pkg

package.json的内容

api.configInstance

config实例

userConfig

用户配置

config

插件配置可被修改,此为最终的配置

env

process.env

args

环境变量

核心方法

describe

注册阶段执行,用于描述插件或插件集的 id、key、配置信息、启用方式等。

用法:describe({ id?: string, key?: string, config?: { default, schema, onChange } }, enableBy?)

例如:

api.describe({
     key: 'esbuild',
     config: {
         schema(joi) {
diff --git a/assets/api.html.20695f57.js b/assets/api.html.20695f57.js
new file mode 100644
index 00000000..ab6cf11c
--- /dev/null
+++ b/assets/api.html.20695f57.js
@@ -0,0 +1 @@
+const e=JSON.parse('{"key":"v-a1a49808","path":"/reference/api.html","title":"API","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/api.md"}');export{e as data};
diff --git a/assets/api.html.a50ff32f.js b/assets/api.html.3fadc9c0.js
similarity index 79%
rename from assets/api.html.a50ff32f.js
rename to assets/api.html.3fadc9c0.js
index 0c7bf6c2..dd7c4553 100644
--- a/assets/api.html.a50ff32f.js
+++ b/assets/api.html.3fadc9c0.js
@@ -1 +1 @@
-import{_ as a,o as t,c,b as e,d as o}from"./app.1fff394b.js";const r={},s=e("h1",{id:"api",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#api","aria-hidden":"true"},"#"),o(" API")],-1),n=[s];function _(i,d){return t(),c("div",null,n)}const l=a(r,[["render",_],["__file","api.html.vue"]]);export{l as default};
+import{_ as a,o as t,c,b as e,d as o}from"./app.005e0daf.js";const r={},s=e("h1",{id:"api",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#api","aria-hidden":"true"},"#"),o(" API")],-1),n=[s];function _(i,d){return t(),c("div",null,n)}const l=a(r,[["render",_],["__file","api.html.vue"]]);export{l as default};
diff --git a/assets/api.html.8cb21890.js b/assets/api.html.8cb21890.js
deleted file mode 100644
index ef42039f..00000000
--- a/assets/api.html.8cb21890.js
+++ /dev/null
@@ -1 +0,0 @@
-const e=JSON.parse('{"key":"v-a1a49808","path":"/reference/api.html","title":"API","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/api.md"}');export{e as data};
diff --git a/assets/api.html.a5f3fb15.js b/assets/api.html.b17fa30f.js
similarity index 96%
rename from assets/api.html.a5f3fb15.js
rename to assets/api.html.b17fa30f.js
index 8ca98fe1..5781817a 100644
--- a/assets/api.html.a5f3fb15.js
+++ b/assets/api.html.b17fa30f.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-c5618810","path":"/reference/plugin/dev/api.html","title":"插件 API","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"属性","slug":"属性","link":"#属性","children":[{"level":3,"title":"api.paths","slug":"api-paths","link":"#api-paths","children":[]},{"level":3,"title":"api.cwd","slug":"api-cwd","link":"#api-cwd","children":[]},{"level":3,"title":"api.pkg","slug":"api-pkg","link":"#api-pkg","children":[]},{"level":3,"title":"api.configInstance","slug":"api-configinstance","link":"#api-configinstance","children":[]},{"level":3,"title":"userConfig","slug":"userconfig","link":"#userconfig","children":[]},{"level":3,"title":"config","slug":"config","link":"#config","children":[]},{"level":3,"title":"env","slug":"env","link":"#env","children":[]},{"level":3,"title":"args","slug":"args","link":"#args","children":[]}]},{"level":2,"title":"核心方法","slug":"核心方法","link":"#核心方法","children":[{"level":3,"title":"describe","slug":"describe","link":"#describe","children":[]},{"level":3,"title":"register","slug":"register","link":"#register","children":[]},{"level":3,"title":"applyPlugins","slug":"applyplugins","link":"#applyplugins","children":[]},{"level":3,"title":"registerMethod","slug":"registermethod","link":"#registermethod","children":[]},{"level":3,"title":"registerCommand","slug":"registercommand","link":"#registercommand","children":[]},{"level":3,"title":"registerPresets","slug":"registerpresets","link":"#registerpresets","children":[]},{"level":3,"title":"registerPlugins","slug":"registerplugins","link":"#registerplugins","children":[]},{"level":3,"title":"hasPlugins","slug":"hasplugins","link":"#hasplugins","children":[]},{"level":3,"title":"hasPresets","slug":"haspresets","link":"#haspresets","children":[]},{"level":3,"title":"skipPlugins","slug":"skipplugins","link":"#skipplugins","children":[]}]},{"level":2,"title":"扩展方法","slug":"扩展方法","link":"#扩展方法","children":[{"level":3,"title":"addPluginExports","slug":"addpluginexports","link":"#addpluginexports","children":[]},{"level":3,"title":"addCoreExports","slug":"addcoreexports","link":"#addcoreexports","children":[]},{"level":3,"title":"addRuntimePlugin","slug":"addruntimeplugin","link":"#addruntimeplugin","children":[]},{"level":3,"title":"addRuntimePluginKey","slug":"addruntimepluginkey","link":"#addruntimepluginkey","children":[]},{"level":3,"title":"addEntryImportsAhead","slug":"addentryimportsahead","link":"#addentryimportsahead","children":[]},{"level":3,"title":"addEntryImports","slug":"addentryimports","link":"#addentryimports","children":[]},{"level":3,"title":"addEntryCodeAhead","slug":"addentrycodeahead","link":"#addentrycodeahead","children":[]},{"level":3,"title":"addEntryCode","slug":"addentrycode","link":"#addentrycode","children":[]},{"level":3,"title":"addHTMLHeadScripts","slug":"addhtmlheadscripts","link":"#addhtmlheadscripts","children":[]},{"level":3,"title":"addBeforeMiddlewares","slug":"addbeforemiddlewares","link":"#addbeforemiddlewares","children":[]},{"level":3,"title":"addMiddlewares","slug":"addmiddlewares","link":"#addmiddlewares","children":[]},{"level":3,"title":"addTmpGenerateWatcherPaths","slug":"addtmpgeneratewatcherpaths","link":"#addtmpgeneratewatcherpaths","children":[]},{"level":3,"title":"chainWebpack","slug":"chainwebpack","link":"#chainwebpack","children":[]},{"level":3,"title":"copyTmpFiles","slug":"copytmpfiles","link":"#copytmpfiles","children":[]},{"level":3,"title":"getPort","slug":"getport","link":"#getport","children":[]},{"level":3,"title":"getHostname","slug":"gethostname","link":"#gethostname","children":[]},{"level":3,"title":"getServer","slug":"getserver","link":"#getserver","children":[]},{"level":3,"title":"getRoutes","slug":"getroutes","link":"#getroutes","children":[]},{"level":3,"title":"getRoutesJSON","slug":"getroutesjson","link":"#getroutesjson","children":[]},{"level":3,"title":"modifyRoutes","slug":"modifyroutes","link":"#modifyroutes","children":[]},{"level":3,"title":"modifyBundleConfigOpts","slug":"modifybundleconfigopts","link":"#modifybundleconfigopts","children":[]},{"level":3,"title":"modifyBundleConfig","slug":"modifybundleconfig","link":"#modifybundleconfig","children":[]},{"level":3,"title":"modifyBabelOpts","slug":"modifybabelopts","link":"#modifybabelopts","children":[]},{"level":3,"title":"modifyBabelPresetOpts","slug":"modifybabelpresetopts","link":"#modifybabelpresetopts","children":[]},{"level":3,"title":"modifyPaths","slug":"modifypaths","link":"#modifypaths","children":[]},{"level":3,"title":"modifyDefaultConfig","slug":"modifydefaultconfig","link":"#modifydefaultconfig","children":[]},{"level":3,"title":"modifyConfig","slug":"modifyconfig","link":"#modifyconfig","children":[]},{"level":3,"title":"modifyPublicPathStr","slug":"modifypublicpathstr","link":"#modifypublicpathstr","children":[]},{"level":3,"title":"onPluginReady","slug":"onpluginready","link":"#onpluginready","children":[]},{"level":3,"title":"onStart","slug":"onstart","link":"#onstart","children":[]},{"level":3,"title":"onExit","slug":"onexit","link":"#onexit","children":[]},{"level":3,"title":"onGenerateFiles","slug":"ongeneratefiles","link":"#ongeneratefiles","children":[]},{"level":3,"title":"restartServer","slug":"restartserver","link":"#restartserver","children":[]},{"level":3,"title":"writeTmpFile","slug":"writetmpfile","link":"#writetmpfile","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/dev/api.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-c5618810","path":"/reference/plugin/dev/api.html","title":"插件 API","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"属性","slug":"属性","link":"#属性","children":[{"level":3,"title":"api.paths","slug":"api-paths","link":"#api-paths","children":[]},{"level":3,"title":"api.cwd","slug":"api-cwd","link":"#api-cwd","children":[]},{"level":3,"title":"api.pkg","slug":"api-pkg","link":"#api-pkg","children":[]},{"level":3,"title":"api.configInstance","slug":"api-configinstance","link":"#api-configinstance","children":[]},{"level":3,"title":"userConfig","slug":"userconfig","link":"#userconfig","children":[]},{"level":3,"title":"config","slug":"config","link":"#config","children":[]},{"level":3,"title":"env","slug":"env","link":"#env","children":[]},{"level":3,"title":"args","slug":"args","link":"#args","children":[]}]},{"level":2,"title":"核心方法","slug":"核心方法","link":"#核心方法","children":[{"level":3,"title":"describe","slug":"describe","link":"#describe","children":[]},{"level":3,"title":"register","slug":"register","link":"#register","children":[]},{"level":3,"title":"applyPlugins","slug":"applyplugins","link":"#applyplugins","children":[]},{"level":3,"title":"registerMethod","slug":"registermethod","link":"#registermethod","children":[]},{"level":3,"title":"registerCommand","slug":"registercommand","link":"#registercommand","children":[]},{"level":3,"title":"registerPresets","slug":"registerpresets","link":"#registerpresets","children":[]},{"level":3,"title":"registerPlugins","slug":"registerplugins","link":"#registerplugins","children":[]},{"level":3,"title":"hasPlugins","slug":"hasplugins","link":"#hasplugins","children":[]},{"level":3,"title":"hasPresets","slug":"haspresets","link":"#haspresets","children":[]},{"level":3,"title":"skipPlugins","slug":"skipplugins","link":"#skipplugins","children":[]}]},{"level":2,"title":"扩展方法","slug":"扩展方法","link":"#扩展方法","children":[{"level":3,"title":"addPluginExports","slug":"addpluginexports","link":"#addpluginexports","children":[]},{"level":3,"title":"addCoreExports","slug":"addcoreexports","link":"#addcoreexports","children":[]},{"level":3,"title":"addRuntimePlugin","slug":"addruntimeplugin","link":"#addruntimeplugin","children":[]},{"level":3,"title":"addRuntimePluginKey","slug":"addruntimepluginkey","link":"#addruntimepluginkey","children":[]},{"level":3,"title":"addEntryImportsAhead","slug":"addentryimportsahead","link":"#addentryimportsahead","children":[]},{"level":3,"title":"addEntryImports","slug":"addentryimports","link":"#addentryimports","children":[]},{"level":3,"title":"addEntryCodeAhead","slug":"addentrycodeahead","link":"#addentrycodeahead","children":[]},{"level":3,"title":"addEntryCode","slug":"addentrycode","link":"#addentrycode","children":[]},{"level":3,"title":"addHTMLHeadScripts","slug":"addhtmlheadscripts","link":"#addhtmlheadscripts","children":[]},{"level":3,"title":"addBeforeMiddlewares","slug":"addbeforemiddlewares","link":"#addbeforemiddlewares","children":[]},{"level":3,"title":"addMiddlewares","slug":"addmiddlewares","link":"#addmiddlewares","children":[]},{"level":3,"title":"addTmpGenerateWatcherPaths","slug":"addtmpgeneratewatcherpaths","link":"#addtmpgeneratewatcherpaths","children":[]},{"level":3,"title":"chainWebpack","slug":"chainwebpack","link":"#chainwebpack","children":[]},{"level":3,"title":"copyTmpFiles","slug":"copytmpfiles","link":"#copytmpfiles","children":[]},{"level":3,"title":"getPort","slug":"getport","link":"#getport","children":[]},{"level":3,"title":"getHostname","slug":"gethostname","link":"#gethostname","children":[]},{"level":3,"title":"getServer","slug":"getserver","link":"#getserver","children":[]},{"level":3,"title":"getRoutes","slug":"getroutes","link":"#getroutes","children":[]},{"level":3,"title":"getRoutesJSON","slug":"getroutesjson","link":"#getroutesjson","children":[]},{"level":3,"title":"modifyRoutes","slug":"modifyroutes","link":"#modifyroutes","children":[]},{"level":3,"title":"modifyBundleConfigOpts","slug":"modifybundleconfigopts","link":"#modifybundleconfigopts","children":[]},{"level":3,"title":"modifyBundleConfig","slug":"modifybundleconfig","link":"#modifybundleconfig","children":[]},{"level":3,"title":"modifyBabelOpts","slug":"modifybabelopts","link":"#modifybabelopts","children":[]},{"level":3,"title":"modifyBabelPresetOpts","slug":"modifybabelpresetopts","link":"#modifybabelpresetopts","children":[]},{"level":3,"title":"modifyPaths","slug":"modifypaths","link":"#modifypaths","children":[]},{"level":3,"title":"modifyDefaultConfig","slug":"modifydefaultconfig","link":"#modifydefaultconfig","children":[]},{"level":3,"title":"modifyConfig","slug":"modifyconfig","link":"#modifyconfig","children":[]},{"level":3,"title":"modifyPublicPathStr","slug":"modifypublicpathstr","link":"#modifypublicpathstr","children":[]},{"level":3,"title":"onPluginReady","slug":"onpluginready","link":"#onpluginready","children":[]},{"level":3,"title":"onStart","slug":"onstart","link":"#onstart","children":[]},{"level":3,"title":"onExit","slug":"onexit","link":"#onexit","children":[]},{"level":3,"title":"onGenerateFiles","slug":"ongeneratefiles","link":"#ongeneratefiles","children":[]},{"level":3,"title":"restartServer","slug":"restartserver","link":"#restartserver","children":[]},{"level":3,"title":"writeTmpFile","slug":"writetmpfile","link":"#writetmpfile","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/dev/api.md"}');export{e as data};
diff --git a/assets/app.1fff394b.js b/assets/app.005e0daf.js
similarity index 97%
rename from assets/app.1fff394b.js
rename to assets/app.005e0daf.js
index 0dba65c0..2d263331 100644
--- a/assets/app.1fff394b.js
+++ b/assets/app.005e0daf.js
@@ -1,4 +1,4 @@
-const sf="modulepreload",af=function(e){return"/fes.js/"+e},vs={},B=function(t,n,r){return!n||n.length===0?t():Promise.all(n.map(o=>{if(o=af(o),o in vs)return;vs[o]=!0;const i=o.endsWith(".css"),s=i?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${s}`))return;const a=document.createElement("link");if(a.rel=i?"stylesheet":sf,i||(a.as="script",a.crossOrigin=""),a.href=o,document.head.appendChild(a),i)return new Promise((l,u)=>{a.addEventListener("load",l),a.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())},lf={"v-8daa1a0e":()=>B(()=>import("./index.html.c1c0d5f4.js"),[]).then(({data:e})=>e),"v-fffb8e28":()=>B(()=>import("./index.html.f01282d4.js"),[]).then(({data:e})=>e),"v-0cca110a":()=>B(()=>import("./builder.html.41d262aa.js"),[]).then(({data:e})=>e),"v-85fa9b2a":()=>B(()=>import("./config.html.1c29538e.js"),[]).then(({data:e})=>e),"v-d7fa887a":()=>B(()=>import("./contributing.html.18b532cd.js"),[]).then(({data:e})=>e),"v-884fd4bc":()=>B(()=>import("./css.html.afae2aea.js"),[]).then(({data:e})=>e),"v-040800dc":()=>B(()=>import("./directory-structure.html.f4065d91.js"),[]).then(({data:e})=>e),"v-ef8c5e10":()=>B(()=>import("./env.html.08b9b704.js"),[]).then(({data:e})=>e),"v-37e1c06f":()=>B(()=>import("./faq.html.34e02ab8.js"),[]).then(({data:e})=>e),"v-fb0f0066":()=>B(()=>import("./getting-started.html.4674ba1a.js"),[]).then(({data:e})=>e),"v-528b8b6c":()=>B(()=>import("./image.html.d54c6051.js"),[]).then(({data:e})=>e),"v-00cf7e23":()=>B(()=>import("./mock.html.1d7540bc.js"),[]).then(({data:e})=>e),"v-1d14d5cc":()=>B(()=>import("./plugin.html.4294c881.js"),[]).then(({data:e})=>e),"v-7b96e3a4":()=>B(()=>import("./public.html.ce835cb0.js"),[]).then(({data:e})=>e),"v-6320961c":()=>B(()=>import("./route.html.65547e37.js"),[]).then(({data:e})=>e),"v-3dba8814":()=>B(()=>import("./runtime-config.html.692db2b2.js"),[]).then(({data:e})=>e),"v-7b48519a":()=>B(()=>import("./template.html.de04006d.js"),[]).then(({data:e})=>e),"v-4acab794":()=>B(()=>import("./upgrade3.html.f8453010.js"),[]).then(({data:e})=>e),"v-a1a49808":()=>B(()=>import("./api.html.8cb21890.js"),[]).then(({data:e})=>e),"v-a951be94":()=>B(()=>import("./cli.html.0b7f0983.js"),[]).then(({data:e})=>e),"v-76cd065c":()=>B(()=>import("./index.html.f9721522.js"),[]).then(({data:e})=>e),"v-76cb52e8":()=>B(()=>import("./index.html.d0d11947.js"),[]).then(({data:e})=>e),"v-2c05b6e0":()=>B(()=>import("./index.html.52d8d12d.js"),[]).then(({data:e})=>e),"v-d61a9282":()=>B(()=>import("./index.html.0609b1b7.js"),[]).then(({data:e})=>e),"v-494b840e":()=>B(()=>import("./index.html.2ac21041.js"),[]).then(({data:e})=>e),"v-c5618810":()=>B(()=>import("./api.html.a5f3fb15.js"),[]).then(({data:e})=>e),"v-2fe128e7":()=>B(()=>import("./access.html.7030a42b.js"),[]).then(({data:e})=>e),"v-323bda7e":()=>B(()=>import("./editor.html.a0484bbe.js"),[]).then(({data:e})=>e),"v-c253c956":()=>B(()=>import("./enums.html.28629e2b.js"),[]).then(({data:e})=>e),"v-0a0e491c":()=>B(()=>import("./icon.html.0299fcd3.js"),[]).then(({data:e})=>e),"v-3cd5a4ef":()=>B(()=>import("./jest.html.e33cf0c4.js"),[]).then(({data:e})=>e),"v-355ee23e":()=>B(()=>import("./layout.html.1fadc1b9.js"),[]).then(({data:e})=>e),"v-411c0c9e":()=>B(()=>import("./locale.html.b34d3672.js"),[]).then(({data:e})=>e),"v-56ab05de":()=>B(()=>import("./login.html.69f1e79f.js"),[]).then(({data:e})=>e),"v-3c4e521e":()=>B(()=>import("./model.html.72d355a9.js"),[]).then(({data:e})=>e),"v-6f2f6a5a":()=>B(()=>import("./pinia.html.36d2f07b.js"),[]).then(({data:e})=>e),"v-b15becb0":()=>B(()=>import("./qiankun.html.fef1ea5f.js"),[]).then(({data:e})=>e),"v-41dee210":()=>B(()=>import("./request.html.e186dff0.js"),[]).then(({data:e})=>e),"v-5bf80046":()=>B(()=>import("./sass.html.d347aba7.js"),[]).then(({data:e})=>e),"v-317f9008":()=>B(()=>import("./swc.html.95bfd8be.js"),[]).then(({data:e})=>e),"v-5f4c684e":()=>B(()=>import("./vuex.html.41eb0107.js"),[]).then(({data:e})=>e),"v-1c0edac3":()=>B(()=>import("./watermark.html.d6de8921.js"),[]).then(({data:e})=>e),"v-392e58ee":()=>B(()=>import("./windicss.html.cc3815a6.js"),[]).then(({data:e})=>e),"v-3706649a":()=>B(()=>import("./404.html.c3e557d0.js"),[]).then(({data:e})=>e)};function Ri(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}function _r(e){if(oe(e)){const t={};for(let n=0;n{if(n){const r=n.split(uf);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function et(e){let t="";if(Oe(e))t=e;else if(oe(e))for(let n=0;nOe(e)?e:e==null?"":oe(e)||Te(e)&&(e.toString===ql||!fe(e.toString))?JSON.stringify(e,Fl,2):String(e),Fl=(e,t)=>t&&t.__v_isRef?Fl(e,t.value):Sn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:Bl(t)?{[`Set(${t.size})`]:[...t.values()]}:Te(t)&&!oe(t)&&!Ul(t)?String(t):t,xe={},wn=[],mt=()=>{},hf=()=>!1,vf=/^on[^a-z]/,yr=e=>vf.test(e),ji=e=>e.startsWith("onUpdate:"),ze=Object.assign,Di=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},gf=Object.prototype.hasOwnProperty,_e=(e,t)=>gf.call(e,t),oe=Array.isArray,Sn=e=>_o(e)==="[object Map]",Bl=e=>_o(e)==="[object Set]",fe=e=>typeof e=="function",Oe=e=>typeof e=="string",Ni=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",Vl=e=>Te(e)&&fe(e.then)&&fe(e.catch),ql=Object.prototype.toString,_o=e=>ql.call(e),_f=e=>_o(e).slice(8,-1),Ul=e=>_o(e)==="[object Object]",Mi=e=>Oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Gn=Ri(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),yo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},yf=/-(\w)/g,Et=yo(e=>e.replace(yf,(t,n)=>n?n.toUpperCase():"")),bf=/\B([A-Z])/g,dn=yo(e=>e.replace(bf,"-$1").toLowerCase()),bo=yo(e=>e.charAt(0).toUpperCase()+e.slice(1)),Do=yo(e=>e?`on${bo(e)}`:""),ar=(e,t)=>!Object.is(e,t),No=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ef=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Of=e=>{const t=Oe(e)?Number(e):NaN;return isNaN(t)?e:t};let gs;const wf=()=>gs||(gs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let rt;class Sf{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=rt,!t&&rt&&(this.index=(rt.scopes||(rt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=rt;try{return rt=this,t()}finally{rt=n}}}on(){rt=this}off(){rt=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Kl=e=>(e.w&qt)>0,Wl=e=>(e.n&qt)>0,If=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(c==="length"||c>=l)&&a.push(u)})}else switch(n!==void 0&&a.push(s.get(n)),t){case"add":oe(e)?Mi(n)&&a.push(s.get("length")):(a.push(s.get(un)),Sn(e)&&a.push(s.get(oi)));break;case"delete":oe(e)||(a.push(s.get(un)),Sn(e)&&a.push(s.get(oi)));break;case"set":Sn(e)&&a.push(s.get(un));break}if(a.length===1)a[0]&&ii(a[0]);else{const l=[];for(const u of a)u&&l.push(...u);ii($i(l))}}function ii(e,t){const n=oe(e)?e:[...e];for(const r of n)r.computed&&ys(r);for(const r of n)r.computed||ys(r)}function ys(e,t){(e!==dt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Af(e,t){var n;return(n=Yr.get(e))===null||n===void 0?void 0:n.get(t)}const xf=Ri("__proto__,__v_isRef,__isVue"),Zl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ni)),Tf=Fi(),Lf=Fi(!1,!0),Rf=Fi(!0),bs=jf();function jf(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=be(this);for(let i=0,s=this.length;i{e[t]=function(...n){Dn();const r=be(this)[t].apply(this,n);return Nn(),r}}),e}function Df(e){const t=be(this);return tt(t,"has",e),t.hasOwnProperty(e)}function Fi(e=!1,t=!1){return function(r,o,i){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&i===(e?t?Yf:tc:t?ec:Xl).get(r))return r;const s=oe(r);if(!e){if(s&&_e(bs,o))return Reflect.get(bs,o,i);if(o==="hasOwnProperty")return Df}const a=Reflect.get(r,o,i);return(Ni(o)?Zl.has(o):xf(o))||(e||tt(r,"get",o),t)?a:Ve(a)?s&&Mi(o)?a:a.value:Te(a)?e?Oo(a):Mn(a):a}}const Nf=Yl(),Mf=Yl(!0);function Yl(e=!1){return function(n,r,o,i){let s=n[r];if(An(s)&&Ve(s)&&!Ve(o))return!1;if(!e&&(!Gr(o)&&!An(o)&&(s=be(s),o=be(o)),!oe(n)&&Ve(s)&&!Ve(o)))return s.value=o,!0;const a=oe(n)&&Mi(r)?Number(r)e,Eo=e=>Reflect.getPrototypeOf(e);function Pr(e,t,n=!1,r=!1){e=e.__v_raw;const o=be(e),i=be(t);n||(t!==i&&tt(o,"get",t),tt(o,"get",i));const{has:s}=Eo(o),a=r?Bi:n?Ui:lr;if(s.call(o,t))return a(e.get(t));if(s.call(o,i))return a(e.get(i));e!==o&&e.get(t)}function Cr(e,t=!1){const n=this.__v_raw,r=be(n),o=be(e);return t||(e!==o&&tt(r,"has",e),tt(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Ir(e,t=!1){return e=e.__v_raw,!t&&tt(be(e),"iterate",un),Reflect.get(e,"size",e)}function Es(e){e=be(e);const t=be(this);return Eo(t).has.call(t,e)||(t.add(e),xt(t,"add",e,e)),this}function Os(e,t){t=be(t);const n=be(this),{has:r,get:o}=Eo(n);let i=r.call(n,e);i||(e=be(e),i=r.call(n,e));const s=o.call(n,e);return n.set(e,t),i?ar(t,s)&&xt(n,"set",e,t):xt(n,"add",e,t),this}function ws(e){const t=be(this),{has:n,get:r}=Eo(t);let o=n.call(t,e);o||(e=be(e),o=n.call(t,e)),r&&r.call(t,e);const i=t.delete(e);return o&&xt(t,"delete",e,void 0),i}function Ss(){const e=be(this),t=e.size!==0,n=e.clear();return t&&xt(e,"clear",void 0,void 0),n}function kr(e,t){return function(r,o){const i=this,s=i.__v_raw,a=be(s),l=t?Bi:e?Ui:lr;return!e&&tt(a,"iterate",un),s.forEach((u,c)=>r.call(o,l(u),l(c),i))}}function Ar(e,t,n){return function(...r){const o=this.__v_raw,i=be(o),s=Sn(i),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,u=o[e](...r),c=n?Bi:t?Ui:lr;return!t&&tt(i,"iterate",l?oi:un),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:a?[c(f[0]),c(f[1])]:c(f),done:d}},[Symbol.iterator](){return this}}}}function Rt(e){return function(...t){return e==="delete"?!1:this}}function qf(){const e={get(i){return Pr(this,i)},get size(){return Ir(this)},has:Cr,add:Es,set:Os,delete:ws,clear:Ss,forEach:kr(!1,!1)},t={get(i){return Pr(this,i,!1,!0)},get size(){return Ir(this)},has:Cr,add:Es,set:Os,delete:ws,clear:Ss,forEach:kr(!1,!0)},n={get(i){return Pr(this,i,!0)},get size(){return Ir(this,!0)},has(i){return Cr.call(this,i,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:kr(!0,!1)},r={get(i){return Pr(this,i,!0,!0)},get size(){return Ir(this,!0)},has(i){return Cr.call(this,i,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:kr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Ar(i,!1,!1),n[i]=Ar(i,!0,!1),t[i]=Ar(i,!1,!0),r[i]=Ar(i,!0,!0)}),[e,n,t,r]}const[Uf,zf,Kf,Wf]=qf();function Vi(e,t){const n=t?e?Wf:Kf:e?zf:Uf;return(r,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(_e(n,o)&&o in r?n:r,o,i)}const Jf={get:Vi(!1,!1)},Qf={get:Vi(!1,!0)},Zf={get:Vi(!0,!1)},Xl=new WeakMap,ec=new WeakMap,tc=new WeakMap,Yf=new WeakMap;function Gf(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Xf(e){return e.__v_skip||!Object.isExtensible(e)?0:Gf(_f(e))}function Mn(e){return An(e)?e:qi(e,!1,Gl,Jf,Xl)}function ed(e){return qi(e,!1,Vf,Qf,ec)}function Oo(e){return qi(e,!0,Bf,Zf,tc)}function qi(e,t,n,r,o){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=Xf(e);if(s===0)return e;const a=new Proxy(e,s===2?r:n);return o.set(e,a),a}function Pn(e){return An(e)?Pn(e.__v_raw):!!(e&&e.__v_isReactive)}function An(e){return!!(e&&e.__v_isReadonly)}function Gr(e){return!!(e&&e.__v_isShallow)}function nc(e){return Pn(e)||An(e)}function be(e){const t=e&&e.__v_raw;return t?be(t):e}function rc(e){return Zr(e,"__v_skip",!0),e}const lr=e=>Te(e)?Mn(e):e,Ui=e=>Te(e)?Oo(e):e;function oc(e){Ht&&dt&&(e=be(e),Ql(e.dep||(e.dep=$i())))}function ic(e,t){e=be(e);const n=e.dep;n&&ii(n)}function Ve(e){return!!(e&&e.__v_isRef===!0)}function Ce(e){return ac(e,!1)}function sc(e){return ac(e,!0)}function ac(e,t){return Ve(e)?e:new td(e,t)}class td{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:be(t),this._value=n?t:lr(t)}get value(){return oc(this),this._value}set value(t){const n=this.__v_isShallow||Gr(t)||An(t);t=n?t:be(t),ar(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:lr(t),ic(this))}}function V(e){return Ve(e)?e.value:e}const nd={get:(e,t,n)=>V(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ve(o)&&!Ve(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function lc(e){return Pn(e)?e:new Proxy(e,nd)}function zi(e){const t=oe(e)?new Array(e.length):{};for(const n in e)t[n]=od(e,n);return t}class rd{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Af(be(this._object),this._key)}}function od(e,t,n){const r=e[t];return Ve(r)?r:new rd(e,t,n)}var cc;class id{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[cc]=!1,this._dirty=!0,this.effect=new Hi(t,()=>{this._dirty||(this._dirty=!0,ic(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=be(this);return oc(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}cc="__v_isReadonly";function sd(e,t,n=!1){let r,o;const i=fe(e);return i?(r=e,o=mt):(r=e.get,o=e.set),new id(r,o,i||!o,n)}function Ft(e,t,n,r){let o;try{o=r?e(...r):e()}catch(i){br(i,t,n)}return o}function at(e,t,n,r){if(fe(e)){const i=Ft(e,t,n,r);return i&&Vl(i)&&i.catch(s=>{br(s,t,n)}),i}const o=[];for(let i=0;i>>1;ur(We[r])_t&&We.splice(t,1)}function ud(e){oe(e)?Cn.push(...e):(!Pt||!Pt.includes(e,e.allowRecurse?rn+1:rn))&&Cn.push(e),fc()}function Ps(e,t=cr?_t+1:0){for(;tur(n)-ur(r)),rn=0;rne.id==null?1/0:e.id,fd=(e,t)=>{const n=ur(e)-ur(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function dc(e){si=!1,cr=!0,We.sort(fd);const t=mt;try{for(_t=0;_tOe(p)?p.trim():p)),f&&(o=n.map(Ef))}let a,l=r[a=Do(t)]||r[a=Do(Et(t))];!l&&i&&(l=r[a=Do(dn(t))]),l&&at(l,e,6,o);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,at(u,e,6,o)}}function pc(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const i=e.emits;let s={},a=!1;if(!fe(e)){const l=u=>{const c=pc(u,t,!0);c&&(a=!0,ze(s,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!a?(Te(e)&&r.set(e,null),null):(oe(i)?i.forEach(l=>s[l]=null):ze(s,i),Te(e)&&r.set(e,s),s)}function So(e,t){return!e||!yr(t)?!1:(t=t.slice(2).replace(/Once$/,""),_e(e,t[0].toLowerCase()+t.slice(1))||_e(e,dn(t))||_e(e,t))}let Ue=null,mc=null;function eo(e){const t=Ue;return Ue=e,mc=e&&e.type.__scopeId||null,t}function qe(e,t=Ue,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Ds(-1);const i=eo(t);let s;try{s=e(...o)}finally{eo(i),r._d&&Ds(1)}return s};return r._n=!0,r._c=!0,r._d=!0,r}function Mo(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[s],slots:a,attrs:l,emit:u,render:c,renderCache:f,data:d,setupState:p,ctx:_,inheritAttrs:g}=e;let O,h;const E=eo(e);try{if(n.shapeFlag&4){const S=o||r;O=ft(c.call(S,S,f,i,p,d,_)),h=l}else{const S=t;O=ft(S.length>1?S(i,{attrs:l,slots:a,emit:u}):S(i,null)),h=t.props?l:pd(l)}}catch(S){tr.length=0,br(S,e,1),O=ae(ot)}let w=O;if(h&&g!==!1){const S=Object.keys(h),{shapeFlag:I}=w;S.length&&I&7&&(s&&S.some(ji)&&(h=md(h,s)),w=zt(w,h))}return n.dirs&&(w=zt(w),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),O=w,eo(E),O}const pd=e=>{let t;for(const n in e)(n==="class"||n==="style"||yr(n))&&((t||(t={}))[n]=e[n]);return t},md=(e,t)=>{const n={};for(const r in e)(!ji(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function hd(e,t,n){const{props:r,children:o,component:i}=e,{props:s,children:a,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Cs(r,s,u):!!s;if(l&8){const c=t.dynamicProps;for(let f=0;fe.__isSuspense;function hc(e,t){t&&t.pendingBranch?oe(e)?t.effects.push(...e):t.effects.push(e):ud(e)}function Bt(e,t){if(je){let n=je.provides;const r=je.parent&&je.parent.provides;r===n&&(n=je.provides=Object.create(r)),n[e]=t}}function Fe(e,t,n=!1){const r=je||Ue;if(r){const o=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&fe(t)?t.call(r.proxy):t}}function _d(e,t){return Wi(e,null,t)}const xr={};function lt(e,t,n){return Wi(e,t,n)}function Wi(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:s}=xe){const a=zl()===(je==null?void 0:je.scope)?je:null;let l,u=!1,c=!1;if(Ve(e)?(l=()=>e.value,u=Gr(e)):Pn(e)?(l=()=>e,r=!0):oe(e)?(c=!0,u=e.some(w=>Pn(w)||Gr(w)),l=()=>e.map(w=>{if(Ve(w))return w.value;if(Pn(w))return ln(w);if(fe(w))return Ft(w,a,2)})):fe(e)?t?l=()=>Ft(e,a,2):l=()=>{if(!(a&&a.isUnmounted))return f&&f(),at(e,a,3,[d])}:l=mt,t&&r){const w=l;l=()=>ln(w())}let f,d=w=>{f=h.onStop=()=>{Ft(w,a,4)}},p;if(Ln)if(d=mt,t?n&&at(t,a,3,[l(),c?[]:void 0,d]):l(),o==="sync"){const w=dp();p=w.__watcherHandles||(w.__watcherHandles=[])}else return mt;let _=c?new Array(e.length).fill(xr):xr;const g=()=>{if(!!h.active)if(t){const w=h.run();(r||u||(c?w.some((S,I)=>ar(S,_[I])):ar(w,_)))&&(f&&f(),at(t,a,3,[w,_===xr?void 0:c&&_[0]===xr?[]:_,d]),_=w)}else h.run()};g.allowRecurse=!!t;let O;o==="sync"?O=g:o==="post"?O=()=>Xe(g,a&&a.suspense):(g.pre=!0,a&&(g.id=a.uid),O=()=>wo(g));const h=new Hi(l,O);t?n?g():_=h.run():o==="post"?Xe(h.run.bind(h),a&&a.suspense):h.run();const E=()=>{h.stop(),a&&a.scope&&Di(a.scope.effects,h)};return p&&p.push(E),E}function yd(e,t,n){const r=this.proxy,o=Oe(e)?e.includes(".")?vc(r,e):()=>r[e]:e.bind(r,r);let i;fe(t)?i=t:(i=t.handler,n=t);const s=je;Tn(this);const a=Wi(o,i.bind(r),n);return s?Tn(s):fn(),a}function vc(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{ln(n,t)});else if(Ul(e))for(const n in e)ln(e[n],t);return e}function bd(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ye(()=>{e.isMounted=!0}),Co(()=>{e.isUnmounting=!0}),e}const it=[Function,Array],Ed={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:it,onEnter:it,onAfterEnter:it,onEnterCancelled:it,onBeforeLeave:it,onLeave:it,onAfterLeave:it,onLeaveCancelled:it,onBeforeAppear:it,onAppear:it,onAfterAppear:it,onAppearCancelled:it},setup(e,{slots:t}){const n=Rc(),r=bd();let o;return()=>{const i=t.default&&yc(t.default(),!0);if(!i||!i.length)return;let s=i[0];if(i.length>1){for(const g of i)if(g.type!==ot){s=g;break}}const a=be(e),{mode:l}=a;if(r.isLeaving)return $o(s);const u=Is(s);if(!u)return $o(s);const c=ai(u,a,r,n);li(u,c);const f=n.subTree,d=f&&Is(f);let p=!1;const{getTransitionKey:_}=u.type;if(_){const g=_();o===void 0?o=g:g!==o&&(o=g,p=!0)}if(d&&d.type!==ot&&(!on(u,d)||p)){const g=ai(d,a,r,n);if(li(d,g),l==="out-in")return r.isLeaving=!0,g.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},$o(s);l==="in-out"&&u.type!==ot&&(g.delayLeave=(O,h,E)=>{const w=_c(r,d);w[String(d.key)]=d,O._leaveCb=()=>{h(),O._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=E})}return s}}},gc=Ed;function _c(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function ai(e,t,n,r){const{appear:o,mode:i,persisted:s=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:f,onLeave:d,onAfterLeave:p,onLeaveCancelled:_,onBeforeAppear:g,onAppear:O,onAfterAppear:h,onAppearCancelled:E}=t,w=String(e.key),S=_c(n,e),I=(b,M)=>{b&&at(b,r,9,M)},z=(b,M)=>{const N=M[1];I(b,M),oe(b)?b.every(K=>K.length<=1)&&N():b.length<=1&&N()},H={mode:i,persisted:s,beforeEnter(b){let M=a;if(!n.isMounted)if(o)M=g||a;else return;b._leaveCb&&b._leaveCb(!0);const N=S[w];N&&on(e,N)&&N.el._leaveCb&&N.el._leaveCb(),I(M,[b])},enter(b){let M=l,N=u,K=c;if(!n.isMounted)if(o)M=O||l,N=h||u,K=E||c;else return;let k=!1;const R=b._enterCb=$=>{k||(k=!0,$?I(K,[b]):I(N,[b]),H.delayedLeave&&H.delayedLeave(),b._enterCb=void 0)};M?z(M,[b,R]):R()},leave(b,M){const N=String(e.key);if(b._enterCb&&b._enterCb(!0),n.isUnmounting)return M();I(f,[b]);let K=!1;const k=b._leaveCb=R=>{K||(K=!0,M(),R?I(_,[b]):I(p,[b]),b._leaveCb=void 0,S[N]===e&&delete S[N])};S[N]=e,d?z(d,[b,k]):k()},clone(b){return ai(b,t,n,r)}};return H}function $o(e){if(Or(e))return e=zt(e),e.children=null,e}function Is(e){return Or(e)?e.children?e.children[0]:void 0:e}function li(e,t){e.shapeFlag&6&&e.component?li(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function yc(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;function ce(e){fe(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:s=!0,onError:a}=e;let l=null,u,c=0;const f=()=>(c++,l=null,d()),d=()=>{let p;return l||(p=l=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),a)return new Promise((g,O)=>{a(_,()=>g(f()),()=>O(_),c+1)});throw _}).then(_=>p!==l&&l?l:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),u=_,_)))};return me({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return u},setup(){const p=je;if(u)return()=>Ho(u,p);const _=E=>{l=null,br(E,p,13,!r)};if(s&&p.suspense||Ln)return d().then(E=>()=>Ho(E,p)).catch(E=>(_(E),()=>r?ae(r,{error:E}):null));const g=Ce(!1),O=Ce(),h=Ce(!!o);return o&&setTimeout(()=>{h.value=!1},o),i!=null&&setTimeout(()=>{if(!g.value&&!O.value){const E=new Error(`Async component timed out after ${i}ms.`);_(E),O.value=E}},i),d().then(()=>{g.value=!0,p.parent&&Or(p.parent.vnode)&&wo(p.parent.update)}).catch(E=>{_(E),O.value=E}),()=>{if(g.value&&u)return Ho(u,p);if(O.value&&r)return ae(r,{error:O.value});if(n&&!h.value)return ae(n)}}})}function Ho(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,s=ae(e,r,o);return s.ref=n,s.ce=i,delete t.vnode.ce,s}const Or=e=>e.type.__isKeepAlive;function Od(e,t){bc(e,"a",t)}function wd(e,t){bc(e,"da",t)}function bc(e,t,n=je){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Po(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Or(o.parent.vnode)&&Sd(r,t,n,o),o=o.parent}}function Sd(e,t,n,r){const o=Po(t,e,r,!0);Io(()=>{Di(r[t],o)},n)}function Po(e,t,n=je,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...s)=>{if(n.isUnmounted)return;Dn(),Tn(n);const a=at(t,n,e,s);return fn(),Nn(),a});return r?o.unshift(i):o.push(i),i}}const Lt=e=>(t,n=je)=>(!Ln||e==="sp")&&Po(e,(...r)=>t(...r),n),Pd=Lt("bm"),Ye=Lt("m"),Cd=Lt("bu"),Id=Lt("u"),Co=Lt("bum"),Io=Lt("um"),kd=Lt("sp"),Ad=Lt("rtg"),xd=Lt("rtc");function Td(e,t=je){Po("ec",e,t)}function to(e,t){const n=Ue;if(n===null)return e;const r=Ao(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let i=0;it(s,a,void 0,i&&i[a]));else{const s=Object.keys(e);o=new Array(s.length);for(let a=0,l=s.length;aoo(t)?!(t.type===ot||t.type===ke&&!Oc(t.children)):!0)?e:null}const ci=e=>e?jc(e)?Ao(e)||e.proxy:ci(e.parent):null,Xn=ze(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ci(e.parent),$root:e=>ci(e.root),$emit:e=>e.emit,$options:e=>Ji(e),$forceUpdate:e=>e.f||(e.f=()=>wo(e.update)),$nextTick:e=>e.n||(e.n=Er.bind(e.proxy)),$watch:e=>yd.bind(e)}),Fo=(e,t)=>e!==xe&&!e.__isScriptSetup&&_e(e,t),jd={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:s,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const p=s[t];if(p!==void 0)switch(p){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(Fo(r,t))return s[t]=1,r[t];if(o!==xe&&_e(o,t))return s[t]=2,o[t];if((u=e.propsOptions[0])&&_e(u,t))return s[t]=3,i[t];if(n!==xe&&_e(n,t))return s[t]=4,n[t];ui&&(s[t]=0)}}const c=Xn[t];let f,d;if(c)return t==="$attrs"&&tt(e,"get",t),c(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==xe&&_e(n,t))return s[t]=4,n[t];if(d=l.config.globalProperties,_e(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return Fo(o,t)?(o[t]=n,!0):r!==xe&&_e(r,t)?(r[t]=n,!0):_e(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},s){let a;return!!n[s]||e!==xe&&_e(e,s)||Fo(t,s)||(a=i[0])&&_e(a,s)||_e(r,s)||_e(Xn,s)||_e(o.config.globalProperties,s)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:_e(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let ui=!0;function Dd(e){const t=Ji(e),n=e.proxy,r=e.ctx;ui=!1,t.beforeCreate&&As(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:a,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:p,updated:_,activated:g,deactivated:O,beforeDestroy:h,beforeUnmount:E,destroyed:w,unmounted:S,render:I,renderTracked:z,renderTriggered:H,errorCaptured:b,serverPrefetch:M,expose:N,inheritAttrs:K,components:k,directives:R,filters:$}=t;if(u&&Nd(u,r,null,e.appContext.config.unwrapInjectedRef),s)for(const re in s){const se=s[re];fe(se)&&(r[re]=se.bind(n))}if(o){const re=o.call(n,n);Te(re)&&(e.data=Mn(re))}if(ui=!0,i)for(const re in i){const se=i[re],Le=fe(se)?se.bind(n,n):fe(se.get)?se.get.bind(n,n):mt,De=!fe(se)&&fe(se.set)?se.set.bind(n):mt,Ne=Q({get:Le,set:De});Object.defineProperty(r,re,{enumerable:!0,configurable:!0,get:()=>Ne.value,set:Ae=>Ne.value=Ae})}if(a)for(const re in a)wc(a[re],r,n,re);if(l){const re=fe(l)?l.call(n):l;Reflect.ownKeys(re).forEach(se=>{Bt(se,re[se])})}c&&As(c,e,"c");function W(re,se){oe(se)?se.forEach(Le=>re(Le.bind(n))):se&&re(se.bind(n))}if(W(Pd,f),W(Ye,d),W(Cd,p),W(Id,_),W(Od,g),W(wd,O),W(Td,b),W(xd,z),W(Ad,H),W(Co,E),W(Io,S),W(kd,M),oe(N))if(N.length){const re=e.exposed||(e.exposed={});N.forEach(se=>{Object.defineProperty(re,se,{get:()=>n[se],set:Le=>n[se]=Le})})}else e.exposed||(e.exposed={});I&&e.render===mt&&(e.render=I),K!=null&&(e.inheritAttrs=K),k&&(e.components=k),R&&(e.directives=R)}function Nd(e,t,n=mt,r=!1){oe(e)&&(e=fi(e));for(const o in e){const i=e[o];let s;Te(i)?"default"in i?s=Fe(i.from||o,i.default,!0):s=Fe(i.from||o):s=Fe(i),Ve(s)&&r?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>s.value,set:a=>s.value=a}):t[o]=s}}function As(e,t,n){at(oe(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function wc(e,t,n,r){const o=r.includes(".")?vc(n,r):()=>n[r];if(Oe(e)){const i=t[e];fe(i)&<(o,i)}else if(fe(e))lt(o,e.bind(n));else if(Te(e))if(oe(e))e.forEach(i=>wc(i,t,n,r));else{const i=fe(e.handler)?e.handler.bind(n):t[e.handler];fe(i)&<(o,i,e)}}function Ji(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,a=i.get(t);let l;return a?l=a:!o.length&&!n&&!r?l=t:(l={},o.length&&o.forEach(u=>no(l,u,s,!0)),no(l,t,s)),Te(t)&&i.set(t,l),l}function no(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&no(e,i,n,!0),o&&o.forEach(s=>no(e,s,n,!0));for(const s in t)if(!(r&&s==="expose")){const a=Md[s]||n&&n[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const Md={data:xs,props:en,emits:en,methods:en,computed:en,beforeCreate:Je,created:Je,beforeMount:Je,mounted:Je,beforeUpdate:Je,updated:Je,beforeDestroy:Je,beforeUnmount:Je,destroyed:Je,unmounted:Je,activated:Je,deactivated:Je,errorCaptured:Je,serverPrefetch:Je,components:en,directives:en,watch:Hd,provide:xs,inject:$d};function xs(e,t){return t?e?function(){return ze(fe(e)?e.call(this,this):e,fe(t)?t.call(this,this):t)}:t:e}function $d(e,t){return en(fi(e),fi(t))}function fi(e){if(oe(e)){const t={};for(let n=0;n0)&&!(s&16)){if(s&8){const c=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,p]=Pc(f,t,!0);ze(s,d),p&&a.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!i&&!l)return Te(e)&&r.set(e,wn),wn;if(oe(i))for(let c=0;c-1,p[1]=g<0||_-1||_e(p,"default"))&&a.push(f)}}}const u=[s,a];return Te(e)&&r.set(e,u),u}function Ts(e){return e[0]!=="$"}function Ls(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Rs(e,t){return Ls(e)===Ls(t)}function js(e,t){return oe(t)?t.findIndex(n=>Rs(n,e)):fe(t)&&Rs(t,e)?0:-1}const Cc=e=>e[0]==="_"||e==="$stable",Qi=e=>oe(e)?e.map(ft):[ft(e)],Vd=(e,t,n)=>{if(t._n)return t;const r=qe((...o)=>Qi(t(...o)),n);return r._c=!1,r},Ic=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Cc(o))continue;const i=e[o];if(fe(i))t[o]=Vd(o,i,r);else if(i!=null){const s=Qi(i);t[o]=()=>s}}},kc=(e,t)=>{const n=Qi(t);e.slots.default=()=>n},qd=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=be(t),Zr(t,"_",n)):Ic(t,e.slots={})}else e.slots={},t&&kc(e,t);Zr(e.slots,ko,1)},Ud=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,s=xe;if(r.shapeFlag&32){const a=t._;a?n&&a===1?i=!1:(ze(o,t),!n&&a===1&&delete o._):(i=!t.$stable,Ic(t,o)),s=t}else t&&(kc(e,t),s={default:1});if(i)for(const a in o)!Cc(a)&&!(a in s)&&delete o[a]};function Ac(){return{app:null,config:{isNativeTag:hf,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let zd=0;function Kd(e,t){return function(r,o=null){fe(r)||(r=Object.assign({},r)),o!=null&&!Te(o)&&(o=null);const i=Ac(),s=new Set;let a=!1;const l=i.app={_uid:zd++,_component:r,_props:o,_container:null,_context:i,_instance:null,version:pp,get config(){return i.config},set config(u){},use(u,...c){return s.has(u)||(u&&fe(u.install)?(s.add(u),u.install(l,...c)):fe(u)&&(s.add(u),u(l,...c))),l},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),l},component(u,c){return c?(i.components[u]=c,l):i.components[u]},directive(u,c){return c?(i.directives[u]=c,l):i.directives[u]},mount(u,c,f){if(!a){const d=ae(r,o);return d.appContext=i,c&&t?t(d,u):e(d,u,f),a=!0,l._container=u,u.__vue_app__=l,Ao(d.component)||d.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide(u,c){return i.provides[u]=c,l}};return l}}function ro(e,t,n,r,o=!1){if(oe(e)){e.forEach((d,p)=>ro(d,t&&(oe(t)?t[p]:t),n,r,o));return}if(In(r)&&!o)return;const i=r.shapeFlag&4?Ao(r.component)||r.component.proxy:r.el,s=o?null:i,{i:a,r:l}=e,u=t&&t.r,c=a.refs===xe?a.refs={}:a.refs,f=a.setupState;if(u!=null&&u!==l&&(Oe(u)?(c[u]=null,_e(f,u)&&(f[u]=null)):Ve(u)&&(u.value=null)),fe(l))Ft(l,a,12,[s,c]);else{const d=Oe(l),p=Ve(l);if(d||p){const _=()=>{if(e.f){const g=d?_e(f,l)?f[l]:c[l]:l.value;o?oe(g)&&Di(g,i):oe(g)?g.includes(i)||g.push(i):d?(c[l]=[i],_e(f,l)&&(f[l]=c[l])):(l.value=[i],e.k&&(c[e.k]=l.value))}else d?(c[l]=s,_e(f,l)&&(f[l]=s)):p&&(l.value=s,e.k&&(c[e.k]=s))};s?(_.id=-1,Xe(_,n)):_()}}}let jt=!1;const Tr=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Lr=e=>e.nodeType===8;function Wd(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:s,remove:a,insert:l,createComment:u}}=e,c=(h,E)=>{if(!E.hasChildNodes()){n(null,h,E),Xr(),E._vnode=h;return}jt=!1,f(E.firstChild,h,null,null,null),Xr(),E._vnode=h,jt&&console.error("Hydration completed but contains mismatches.")},f=(h,E,w,S,I,z=!1)=>{const H=Lr(h)&&h.data==="[",b=()=>g(h,E,w,S,I,H),{type:M,ref:N,shapeFlag:K,patchFlag:k}=E;let R=h.nodeType;E.el=h,k===-2&&(z=!1,E.dynamicChildren=null);let $=null;switch(M){case xn:R!==3?E.children===""?(l(E.el=o(""),s(h),h),$=h):$=b():(h.data!==E.children&&(jt=!0,h.data=E.children),$=i(h));break;case ot:R!==8||H?$=b():$=i(h);break;case er:if(H&&(h=i(h),R=h.nodeType),R===1||R===3){$=h;const ie=!E.children.length;for(let W=0;W{z=z||!!E.dynamicChildren;const{type:H,props:b,patchFlag:M,shapeFlag:N,dirs:K}=E,k=H==="input"&&K||H==="option";if(k||M!==-1){if(K&>(E,null,w,"created"),b)if(k||!z||M&48)for(const $ in b)(k&&$.endsWith("value")||yr($)&&!Gn($))&&r(h,$,null,b[$],!1,void 0,w);else b.onClick&&r(h,"onClick",null,b.onClick,!1,void 0,w);let R;if((R=b&&b.onVnodeBeforeMount)&&st(R,w,E),K&>(E,null,w,"beforeMount"),((R=b&&b.onVnodeMounted)||K)&&hc(()=>{R&&st(R,w,E),K&>(E,null,w,"mounted")},S),N&16&&!(b&&(b.innerHTML||b.textContent))){let $=p(h.firstChild,E,h,w,S,I,z);for(;$;){jt=!0;const ie=$;$=$.nextSibling,a(ie)}}else N&8&&h.textContent!==E.children&&(jt=!0,h.textContent=E.children)}return h.nextSibling},p=(h,E,w,S,I,z,H)=>{H=H||!!E.dynamicChildren;const b=E.children,M=b.length;for(let N=0;N{const{slotScopeIds:H}=E;H&&(I=I?I.concat(H):H);const b=s(h),M=p(i(h),E,b,w,S,I,z);return M&&Lr(M)&&M.data==="]"?i(E.anchor=M):(jt=!0,l(E.anchor=u("]"),b,M),M)},g=(h,E,w,S,I,z)=>{if(jt=!0,E.el=null,z){const M=O(h);for(;;){const N=i(h);if(N&&N!==M)a(N);else break}}const H=i(h),b=s(h);return a(h),n(null,E,b,H,w,S,Tr(b),I),H},O=h=>{let E=0;for(;h;)if(h=i(h),h&&Lr(h)&&(h.data==="["&&E++,h.data==="]")){if(E===0)return i(h);E--}return h};return[c,f]}const Xe=hc;function Jd(e){return Qd(e,Wd)}function Qd(e,t){const n=wf();n.__VUE__=!0;const{insert:r,remove:o,patchProp:i,createElement:s,createText:a,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:p=mt,insertStaticContent:_}=e,g=(m,v,P,C=null,A=null,D=null,j=!1,T=null,F=!!v.dynamicChildren)=>{if(m===v)return;m&&!on(m,v)&&(C=q(m),Ae(m,A,D,!0),m=null),v.patchFlag===-2&&(F=!1,v.dynamicChildren=null);const{type:L,ref:G,shapeFlag:Y}=v;switch(L){case xn:O(m,v,P,C);break;case ot:h(m,v,P,C);break;case er:m==null&&E(v,P,C,j);break;case ke:k(m,v,P,C,A,D,j,T,F);break;default:Y&1?I(m,v,P,C,A,D,j,T,F):Y&6?R(m,v,P,C,A,D,j,T,F):(Y&64||Y&128)&&L.process(m,v,P,C,A,D,j,T,F,de)}G!=null&&A&&ro(G,m&&m.ref,D,v||m,!v)},O=(m,v,P,C)=>{if(m==null)r(v.el=a(v.children),P,C);else{const A=v.el=m.el;v.children!==m.children&&u(A,v.children)}},h=(m,v,P,C)=>{m==null?r(v.el=l(v.children||""),P,C):v.el=m.el},E=(m,v,P,C)=>{[m.el,m.anchor]=_(m.children,v,P,C,m.el,m.anchor)},w=({el:m,anchor:v},P,C)=>{let A;for(;m&&m!==v;)A=d(m),r(m,P,C),m=A;r(v,P,C)},S=({el:m,anchor:v})=>{let P;for(;m&&m!==v;)P=d(m),o(m),m=P;o(v)},I=(m,v,P,C,A,D,j,T,F)=>{j=j||v.type==="svg",m==null?z(v,P,C,A,D,j,T,F):M(m,v,A,D,j,T,F)},z=(m,v,P,C,A,D,j,T)=>{let F,L;const{type:G,props:Y,shapeFlag:X,transition:ee,dirs:ue}=m;if(F=m.el=s(m.type,D,Y&&Y.is,Y),X&8?c(F,m.children):X&16&&b(m.children,F,null,C,A,D&&G!=="foreignObject",j,T),ue&>(m,null,C,"created"),H(F,m,m.scopeId,j,C),Y){for(const Se in Y)Se!=="value"&&!Gn(Se)&&i(F,Se,null,Y[Se],D,m.children,C,A,U);"value"in Y&&i(F,"value",null,Y.value),(L=Y.onVnodeBeforeMount)&&st(L,C,m)}ue&>(m,null,C,"beforeMount");const ve=(!A||A&&!A.pendingBranch)&&ee&&!ee.persisted;ve&&ee.beforeEnter(F),r(F,v,P),((L=Y&&Y.onVnodeMounted)||ve||ue)&&Xe(()=>{L&&st(L,C,m),ve&&ee.enter(F),ue&>(m,null,C,"mounted")},A)},H=(m,v,P,C,A)=>{if(P&&p(m,P),C)for(let D=0;D{for(let L=F;L{const T=v.el=m.el;let{patchFlag:F,dynamicChildren:L,dirs:G}=v;F|=m.patchFlag&16;const Y=m.props||xe,X=v.props||xe;let ee;P&&Qt(P,!1),(ee=X.onVnodeBeforeUpdate)&&st(ee,P,v,m),G&>(v,m,P,"beforeUpdate"),P&&Qt(P,!0);const ue=A&&v.type!=="foreignObject";if(L?N(m.dynamicChildren,L,T,P,C,ue,D):j||se(m,v,T,null,P,C,ue,D,!1),F>0){if(F&16)K(T,v,Y,X,P,C,A);else if(F&2&&Y.class!==X.class&&i(T,"class",null,X.class,A),F&4&&i(T,"style",Y.style,X.style,A),F&8){const ve=v.dynamicProps;for(let Se=0;Se{ee&&st(ee,P,v,m),G&>(v,m,P,"updated")},C)},N=(m,v,P,C,A,D,j)=>{for(let T=0;T{if(P!==C){if(P!==xe)for(const T in P)!Gn(T)&&!(T in C)&&i(m,T,P[T],null,j,v.children,A,D,U);for(const T in C){if(Gn(T))continue;const F=C[T],L=P[T];F!==L&&T!=="value"&&i(m,T,L,F,j,v.children,A,D,U)}"value"in C&&i(m,"value",P.value,C.value)}},k=(m,v,P,C,A,D,j,T,F)=>{const L=v.el=m?m.el:a(""),G=v.anchor=m?m.anchor:a("");let{patchFlag:Y,dynamicChildren:X,slotScopeIds:ee}=v;ee&&(T=T?T.concat(ee):ee),m==null?(r(L,P,C),r(G,P,C),b(v.children,P,G,A,D,j,T,F)):Y>0&&Y&64&&X&&m.dynamicChildren?(N(m.dynamicChildren,X,P,A,D,j,T),(v.key!=null||A&&v===A.subTree)&&xc(m,v,!0)):se(m,v,P,G,A,D,j,T,F)},R=(m,v,P,C,A,D,j,T,F)=>{v.slotScopeIds=T,m==null?v.shapeFlag&512?A.ctx.activate(v,P,C,j,F):$(v,P,C,A,D,j,F):ie(m,v,F)},$=(m,v,P,C,A,D,j)=>{const T=m.component=op(m,C,A);if(Or(m)&&(T.ctx.renderer=de),ip(T),T.asyncDep){if(A&&A.registerDep(T,W),!m.el){const F=T.subTree=ae(ot);h(null,F,v,P)}return}W(T,m,v,P,A,D,j)},ie=(m,v,P)=>{const C=v.component=m.component;if(hd(m,v,P))if(C.asyncDep&&!C.asyncResolved){re(C,v,P);return}else C.next=v,cd(C.update),C.update();else v.el=m.el,C.vnode=v},W=(m,v,P,C,A,D,j)=>{const T=()=>{if(m.isMounted){let{next:G,bu:Y,u:X,parent:ee,vnode:ue}=m,ve=G,Se;Qt(m,!1),G?(G.el=ue.el,re(m,G,j)):G=ue,Y&&No(Y),(Se=G.props&&G.props.onVnodeBeforeUpdate)&&st(Se,ee,G,ue),Qt(m,!0);const $e=Mo(m),ut=m.subTree;m.subTree=$e,g(ut,$e,f(ut.el),q(ut),m,A,D),G.el=$e.el,ve===null&&vd(m,$e.el),X&&Xe(X,A),(Se=G.props&&G.props.onVnodeUpdated)&&Xe(()=>st(Se,ee,G,ue),A)}else{let G;const{el:Y,props:X}=v,{bm:ee,m:ue,parent:ve}=m,Se=In(v);if(Qt(m,!1),ee&&No(ee),!Se&&(G=X&&X.onVnodeBeforeMount)&&st(G,ve,v),Qt(m,!0),Y&&le){const $e=()=>{m.subTree=Mo(m),le(Y,m.subTree,m,A,null)};Se?v.type.__asyncLoader().then(()=>!m.isUnmounted&&$e()):$e()}else{const $e=m.subTree=Mo(m);g(null,$e,P,C,m,A,D),v.el=$e.el}if(ue&&Xe(ue,A),!Se&&(G=X&&X.onVnodeMounted)){const $e=v;Xe(()=>st(G,ve,$e),A)}(v.shapeFlag&256||ve&&In(ve.vnode)&&ve.vnode.shapeFlag&256)&&m.a&&Xe(m.a,A),m.isMounted=!0,v=P=C=null}},F=m.effect=new Hi(T,()=>wo(L),m.scope),L=m.update=()=>F.run();L.id=m.uid,Qt(m,!0),L()},re=(m,v,P)=>{v.component=m;const C=m.vnode.props;m.vnode=v,m.next=null,Bd(m,v.props,C,P),Ud(m,v.children,P),Dn(),Ps(),Nn()},se=(m,v,P,C,A,D,j,T,F=!1)=>{const L=m&&m.children,G=m?m.shapeFlag:0,Y=v.children,{patchFlag:X,shapeFlag:ee}=v;if(X>0){if(X&128){De(L,Y,P,C,A,D,j,T,F);return}else if(X&256){Le(L,Y,P,C,A,D,j,T,F);return}}ee&8?(G&16&&U(L,A,D),Y!==L&&c(P,Y)):G&16?ee&16?De(L,Y,P,C,A,D,j,T,F):U(L,A,D,!0):(G&8&&c(P,""),ee&16&&b(Y,P,C,A,D,j,T,F))},Le=(m,v,P,C,A,D,j,T,F)=>{m=m||wn,v=v||wn;const L=m.length,G=v.length,Y=Math.min(L,G);let X;for(X=0;XG?U(m,A,D,!0,!1,Y):b(v,P,C,A,D,j,T,F,Y)},De=(m,v,P,C,A,D,j,T,F)=>{let L=0;const G=v.length;let Y=m.length-1,X=G-1;for(;L<=Y&&L<=X;){const ee=m[L],ue=v[L]=F?Mt(v[L]):ft(v[L]);if(on(ee,ue))g(ee,ue,P,null,A,D,j,T,F);else break;L++}for(;L<=Y&&L<=X;){const ee=m[Y],ue=v[X]=F?Mt(v[X]):ft(v[X]);if(on(ee,ue))g(ee,ue,P,null,A,D,j,T,F);else break;Y--,X--}if(L>Y){if(L<=X){const ee=X+1,ue=eeX)for(;L<=Y;)Ae(m[L],A,D,!0),L++;else{const ee=L,ue=L,ve=new Map;for(L=ue;L<=X;L++){const nt=v[L]=F?Mt(v[L]):ft(v[L]);nt.key!=null&&ve.set(nt.key,L)}let Se,$e=0;const ut=X-ue+1;let mn=!1,ps=0;const Bn=new Array(ut);for(L=0;L=ut){Ae(nt,A,D,!0);continue}let vt;if(nt.key!=null)vt=ve.get(nt.key);else for(Se=ue;Se<=X;Se++)if(Bn[Se-ue]===0&&on(nt,v[Se])){vt=Se;break}vt===void 0?Ae(nt,A,D,!0):(Bn[vt-ue]=L+1,vt>=ps?ps=vt:mn=!0,g(nt,v[vt],P,null,A,D,j,T,F),$e++)}const ms=mn?Zd(Bn):wn;for(Se=ms.length-1,L=ut-1;L>=0;L--){const nt=ue+L,vt=v[nt],hs=nt+1{const{el:D,type:j,transition:T,children:F,shapeFlag:L}=m;if(L&6){Ne(m.component.subTree,v,P,C);return}if(L&128){m.suspense.move(v,P,C);return}if(L&64){j.move(m,v,P,de);return}if(j===ke){r(D,v,P);for(let Y=0;YT.enter(D),A);else{const{leave:Y,delayLeave:X,afterLeave:ee}=T,ue=()=>r(D,v,P),ve=()=>{Y(D,()=>{ue(),ee&&ee()})};X?X(D,ue,ve):ve()}else r(D,v,P)},Ae=(m,v,P,C=!1,A=!1)=>{const{type:D,props:j,ref:T,children:F,dynamicChildren:L,shapeFlag:G,patchFlag:Y,dirs:X}=m;if(T!=null&&ro(T,null,P,m,!0),G&256){v.ctx.deactivate(m);return}const ee=G&1&&X,ue=!In(m);let ve;if(ue&&(ve=j&&j.onVnodeBeforeUnmount)&&st(ve,v,m),G&6)x(m.component,P,C);else{if(G&128){m.suspense.unmount(P,C);return}ee&>(m,null,v,"beforeUnmount"),G&64?m.type.remove(m,v,P,A,de,C):L&&(D!==ke||Y>0&&Y&64)?U(L,v,P,!1,!0):(D===ke&&Y&384||!A&&G&16)&&U(F,v,P),C&&ct(m)}(ue&&(ve=j&&j.onVnodeUnmounted)||ee)&&Xe(()=>{ve&&st(ve,v,m),ee&>(m,null,v,"unmounted")},P)},ct=m=>{const{type:v,el:P,anchor:C,transition:A}=m;if(v===ke){Ge(P,C);return}if(v===er){S(m);return}const D=()=>{o(P),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(m.shapeFlag&1&&A&&!A.persisted){const{leave:j,delayLeave:T}=A,F=()=>j(P,D);T?T(m.el,D,F):F()}else D()},Ge=(m,v)=>{let P;for(;m!==v;)P=d(m),o(m),m=P;o(v)},x=(m,v,P)=>{const{bum:C,scope:A,update:D,subTree:j,um:T}=m;C&&No(C),A.stop(),D&&(D.active=!1,Ae(j,m,v,P)),T&&Xe(T,v),Xe(()=>{m.isUnmounted=!0},v),v&&v.pendingBranch&&!v.isUnmounted&&m.asyncDep&&!m.asyncResolved&&m.suspenseId===v.pendingId&&(v.deps--,v.deps===0&&v.resolve())},U=(m,v,P,C=!1,A=!1,D=0)=>{for(let j=D;jm.shapeFlag&6?q(m.component.subTree):m.shapeFlag&128?m.suspense.next():d(m.anchor||m.el),Z=(m,v,P)=>{m==null?v._vnode&&Ae(v._vnode,null,null,!0):g(v._vnode||null,m,v,null,null,null,P),Ps(),Xr(),v._vnode=m},de={p:g,um:Ae,m:Ne,r:ct,mt:$,mc:b,pc:se,pbc:N,n:q,o:e};let Pe,le;return t&&([Pe,le]=t(de)),{render:Z,hydrate:Pe,createApp:Kd(Z,Pe)}}function Qt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function xc(e,t,n=!1){const r=e.children,o=t.children;if(oe(r)&&oe(o))for(let i=0;i>1,e[n[a]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,s=n[i-1];i-- >0;)n[i]=s,s=t[s];return n}const Yd=e=>e.__isTeleport,ke=Symbol(void 0),xn=Symbol(void 0),ot=Symbol(void 0),er=Symbol(void 0),tr=[];let pt=null;function J(e=!1){tr.push(pt=e?null:[])}function Gd(){tr.pop(),pt=tr[tr.length-1]||null}let fr=1;function Ds(e){fr+=e}function Tc(e){return e.dynamicChildren=fr>0?pt||wn:null,Gd(),fr>0&&pt&&pt.push(e),e}function ne(e,t,n,r,o,i){return Tc(ye(e,t,n,r,o,i,!0))}function He(e,t,n,r,o){return Tc(ae(e,t,n,r,o,!0))}function oo(e){return e?e.__v_isVNode===!0:!1}function on(e,t){return e.type===t.type&&e.key===t.key}const ko="__vInternal",Lc=({key:e})=>e!=null?e:null,qr=({ref:e,ref_key:t,ref_for:n})=>e!=null?Oe(e)||Ve(e)||fe(e)?{i:Ue,r:e,k:t,f:!!n}:e:null;function ye(e,t=null,n=null,r=0,o=null,i=e===ke?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Lc(t),ref:t&&qr(t),scopeId:mc,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Ue};return a?(Zi(l,n),i&128&&e.normalize(l)):n&&(l.shapeFlag|=Oe(n)?8:16),fr>0&&!s&&pt&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&pt.push(l),l}const ae=Xd;function Xd(e,t=null,n=null,r=0,o=null,i=!1){if((!e||e===Ld)&&(e=ot),oo(e)){const a=zt(e,t,!0);return n&&Zi(a,n),fr>0&&!i&&pt&&(a.shapeFlag&6?pt[pt.indexOf(e)]=a:pt.push(a)),a.patchFlag|=-2,a}if(up(e)&&(e=e.__vccOpts),t){t=ep(t);let{class:a,style:l}=t;a&&!Oe(a)&&(t.class=et(a)),Te(l)&&(nc(l)&&!oe(l)&&(l=ze({},l)),t.style=_r(l))}const s=Oe(e)?1:gd(e)?128:Yd(e)?64:Te(e)?4:fe(e)?2:0;return ye(e,t,n,r,o,s,i,!0)}function ep(e){return e?nc(e)||ko in e?ze({},e):e:null}function zt(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:s}=e,a=t?pi(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Lc(a),ref:t&&t.ref?n&&o?oe(o)?o.concat(qr(t)):[o,qr(t)]:qr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ke?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&zt(e.ssContent),ssFallback:e.ssFallback&&zt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Kt(e=" ",t=0){return ae(xn,null,e,t)}function tp(e,t){const n=ae(er,null,e);return n.staticCount=t,n}function Me(e="",t=!1){return t?(J(),He(ot,null,e)):ae(ot,null,e)}function ft(e){return e==null||typeof e=="boolean"?ae(ot):oe(e)?ae(ke,null,e.slice()):typeof e=="object"?Mt(e):ae(xn,null,String(e))}function Mt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:zt(e)}function Zi(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(oe(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Zi(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(ko in t)?t._ctx=Ue:o===3&&Ue&&(Ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else fe(t)?(t={default:t,_ctx:Ue},n=32):(t=String(t),r&64?(n=16,t=[Kt(t)]):n=8);e.children=t,e.shapeFlag|=n}function pi(...e){const t={};for(let n=0;nje||Ue,Tn=e=>{je=e,e.scope.on()},fn=()=>{je&&je.scope.off(),je=null};function jc(e){return e.vnode.shapeFlag&4}let Ln=!1;function ip(e,t=!1){Ln=t;const{props:n,children:r}=e.vnode,o=jc(e);Fd(e,n,o,t),qd(e,r);const i=o?sp(e,t):void 0;return Ln=!1,i}function sp(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=rc(new Proxy(e.ctx,jd));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?lp(e):null;Tn(e),Dn();const i=Ft(r,e,0,[e.props,o]);if(Nn(),fn(),Vl(i)){if(i.then(fn,fn),t)return i.then(s=>{Ns(e,s,t)}).catch(s=>{br(s,e,0)});e.asyncDep=i}else Ns(e,i,t)}else Dc(e,t)}function Ns(e,t,n){fe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.setupState=lc(t)),Dc(e,n)}let Ms;function Dc(e,t,n){const r=e.type;if(!e.render){if(!t&&Ms&&!r.render){const o=r.template||Ji(e).template;if(o){const{isCustomElement:i,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,u=ze(ze({isCustomElement:i,delimiters:a},s),l);r.render=Ms(o,u)}}e.render=r.render||mt}Tn(e),Dn(),Dd(e),Nn(),fn()}function ap(e){return new Proxy(e.attrs,{get(t,n){return tt(e,"get","$attrs"),t[n]}})}function lp(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=ap(e))},slots:e.slots,emit:e.emit,expose:t}}function Ao(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(lc(rc(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Xn)return Xn[n](e)},has(t,n){return n in t||n in Xn}}))}function cp(e,t=!0){return fe(e)?e.displayName||e.name:e.name||t&&e.__name}function up(e){return fe(e)&&"__vccOpts"in e}const Q=(e,t)=>sd(e,t,Ln);function he(e,t,n){const r=arguments.length;return r===2?Te(t)&&!oe(t)?oo(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&oo(n)&&(n=[n]),ae(e,t,n))}const fp=Symbol(""),dp=()=>Fe(fp),pp="3.2.47",mp="http://www.w3.org/2000/svg",sn=typeof document<"u"?document:null,$s=sn&&sn.createElement("template"),hp={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?sn.createElementNS(mp,e):sn.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>sn.createTextNode(e),createComment:e=>sn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>sn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const s=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{$s.innerHTML=r?`${e}`:e;const a=$s.content;if(r){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function vp(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function gp(e,t,n){const r=e.style,o=Oe(n);if(n&&!o){if(t&&!Oe(t))for(const i in t)n[i]==null&&mi(r,i,"");for(const i in n)mi(r,i,n[i])}else{const i=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=i)}}const Hs=/\s*!important$/;function mi(e,t,n){if(oe(n))n.forEach(r=>mi(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=_p(e,t);Hs.test(n)?e.setProperty(dn(r),n.replace(Hs,""),"important"):e[r]=n}}const Fs=["Webkit","Moz","ms"],Bo={};function _p(e,t){const n=Bo[t];if(n)return n;let r=Et(t);if(r!=="filter"&&r in e)return Bo[t]=r;r=bo(r);for(let o=0;oVo||(Pp.then(()=>Vo=0),Vo=Date.now());function Ip(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;at(kp(r,n.value),t,5,[r])};return n.value=e,n.attached=Cp(),n}function kp(e,t){if(oe(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const qs=/^on[a-z]/,Ap=(e,t,n,r,o=!1,i,s,a,l)=>{t==="class"?vp(e,r,o):t==="style"?gp(e,n,r):yr(t)?ji(t)||wp(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):xp(e,t,r,o))?bp(e,t,r,i,s,a,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),yp(e,t,r,o))};function xp(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&qs.test(t)&&fe(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||qs.test(t)&&Oe(n)?!1:t in e}const Dt="transition",Vn="animation",$n=(e,{slots:t})=>he(gc,Tp(e),t);$n.displayName="Transition";const Nc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};$n.props=ze({},gc.props,Nc);const Zt=(e,t=[])=>{oe(e)?e.forEach(n=>n(...t)):e&&e(...t)},Us=e=>e?oe(e)?e.some(t=>t.length>1):e.length>1:!1;function Tp(e){const t={};for(const k in e)k in Nc||(t[k]=e[k]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:u=s,appearToClass:c=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,_=Lp(o),g=_&&_[0],O=_&&_[1],{onBeforeEnter:h,onEnter:E,onEnterCancelled:w,onLeave:S,onLeaveCancelled:I,onBeforeAppear:z=h,onAppear:H=E,onAppearCancelled:b=w}=t,M=(k,R,$)=>{Yt(k,R?c:a),Yt(k,R?u:s),$&&$()},N=(k,R)=>{k._isLeaving=!1,Yt(k,f),Yt(k,p),Yt(k,d),R&&R()},K=k=>(R,$)=>{const ie=k?H:E,W=()=>M(R,k,$);Zt(ie,[R,W]),zs(()=>{Yt(R,k?l:i),Nt(R,k?c:a),Us(ie)||Ks(R,r,g,W)})};return ze(t,{onBeforeEnter(k){Zt(h,[k]),Nt(k,i),Nt(k,s)},onBeforeAppear(k){Zt(z,[k]),Nt(k,l),Nt(k,u)},onEnter:K(!1),onAppear:K(!0),onLeave(k,R){k._isLeaving=!0;const $=()=>N(k,R);Nt(k,f),Dp(),Nt(k,d),zs(()=>{!k._isLeaving||(Yt(k,f),Nt(k,p),Us(S)||Ks(k,r,O,$))}),Zt(S,[k,$])},onEnterCancelled(k){M(k,!1),Zt(w,[k])},onAppearCancelled(k){M(k,!0),Zt(b,[k])},onLeaveCancelled(k){N(k),Zt(I,[k])}})}function Lp(e){if(e==null)return null;if(Te(e))return[qo(e.enter),qo(e.leave)];{const t=qo(e);return[t,t]}}function qo(e){return Of(e)}function Nt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Yt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function zs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Rp=0;function Ks(e,t,n,r){const o=e._endId=++Rp,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:s,timeout:a,propCount:l}=jp(e,t);if(!s)return r();const u=s+"end";let c=0;const f=()=>{e.removeEventListener(u,d),i()},d=p=>{p.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[_]||"").split(", "),o=r(`${Dt}Delay`),i=r(`${Dt}Duration`),s=Ws(o,i),a=r(`${Vn}Delay`),l=r(`${Vn}Duration`),u=Ws(a,l);let c=null,f=0,d=0;t===Dt?s>0&&(c=Dt,f=s,d=i.length):t===Vn?u>0&&(c=Vn,f=u,d=l.length):(f=Math.max(s,u),c=f>0?s>u?Dt:Vn:null,d=c?c===Dt?i.length:l.length:0);const p=c===Dt&&/\b(transform|all)(,|$)/.test(r(`${Dt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:p}}function Ws(e,t){for(;e.lengthJs(n)+Js(e[r])))}function Js(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Dp(){return document.body.offsetHeight}const Np={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Mp=(e,t)=>n=>{if(!("key"in n))return;const r=dn(n.key);if(t.some(o=>o===r||Np[o]===r))return e(n)},io={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):qn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),qn(e,!0),r.enter(e)):r.leave(e,()=>{qn(e,!1)}):qn(e,t))},beforeUnmount(e,{value:t}){qn(e,t)}};function qn(e,t){e.style.display=t?e._vod:"none"}const $p=ze({patchProp:Ap},hp);let Uo,Qs=!1;function Hp(){return Uo=Qs?Uo:Jd($p),Qs=!0,Uo}const Fp=(...e)=>{const t=Hp().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Bp(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Bp(e){return Oe(e)?document.querySelector(e):e}const Vp=JSON.parse('{"base":"/fes.js/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"manifest","href":"/manifest.webmanifest"}],["link",{"rel":"icon","href":"/logo.png"}]],"locales":{"/":{"lang":"zh-CN","title":"Fes.js","description":"一个好用的前端应用解决方案"}}}');var qp=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),Up=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=qp(r);t.has(o)||(t.add(o),n.push(r))}),n},wr=e=>/^(https?:)?\/\//.test(e),zp=e=>/^mailto:/.test(e),Kp=e=>/^tel:/.test(e),Yi=e=>Object.prototype.toString.call(e)==="[object Object]",Mc=e=>e.replace(/\/$/,""),$c=e=>e.replace(/^\//,""),Hc=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const i=o.split("/").length-r.split("/").length;return i!==0?i:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"},Zs=(e,t="/")=>e.replace(/^(https?:)?\/\/[^/]*/,"").replace(new RegExp(`^${t}`),"/");const Fc={"v-8daa1a0e":ce(()=>B(()=>import("./index.html.dcb7e541.js"),[])),"v-fffb8e28":ce(()=>B(()=>import("./index.html.5aeb969b.js"),[])),"v-0cca110a":ce(()=>B(()=>import("./builder.html.55a7cc1f.js"),[])),"v-85fa9b2a":ce(()=>B(()=>import("./config.html.8e53c331.js"),[])),"v-d7fa887a":ce(()=>B(()=>import("./contributing.html.a6331978.js"),[])),"v-884fd4bc":ce(()=>B(()=>import("./css.html.60666f3a.js"),[])),"v-040800dc":ce(()=>B(()=>import("./directory-structure.html.405ab82b.js"),[])),"v-ef8c5e10":ce(()=>B(()=>import("./env.html.90215696.js"),[])),"v-37e1c06f":ce(()=>B(()=>import("./faq.html.ea3f8c6e.js"),[])),"v-fb0f0066":ce(()=>B(()=>import("./getting-started.html.d3b9cf9e.js"),[])),"v-528b8b6c":ce(()=>B(()=>import("./image.html.f92ca3e1.js"),[])),"v-00cf7e23":ce(()=>B(()=>import("./mock.html.80f47335.js"),[])),"v-1d14d5cc":ce(()=>B(()=>import("./plugin.html.65e2e2cd.js"),[])),"v-7b96e3a4":ce(()=>B(()=>import("./public.html.b43d4cac.js"),[])),"v-6320961c":ce(()=>B(()=>import("./route.html.83ea4e67.js"),[])),"v-3dba8814":ce(()=>B(()=>import("./runtime-config.html.4bc14dd5.js"),[])),"v-7b48519a":ce(()=>B(()=>import("./template.html.4157d97a.js"),[])),"v-4acab794":ce(()=>B(()=>import("./upgrade3.html.0c4ef841.js"),[])),"v-a1a49808":ce(()=>B(()=>import("./api.html.a50ff32f.js"),[])),"v-a951be94":ce(()=>B(()=>import("./cli.html.1bdad203.js"),[])),"v-76cd065c":ce(()=>B(()=>import("./index.html.2916e212.js"),[])),"v-76cb52e8":ce(()=>B(()=>import("./index.html.fcf804cf.js"),[])),"v-2c05b6e0":ce(()=>B(()=>import("./index.html.bbacd821.js"),[])),"v-d61a9282":ce(()=>B(()=>import("./index.html.af34d57a.js"),[])),"v-494b840e":ce(()=>B(()=>import("./index.html.c3f5c27f.js"),[])),"v-c5618810":ce(()=>B(()=>import("./api.html.e97bc97c.js"),[])),"v-2fe128e7":ce(()=>B(()=>import("./access.html.a62ebf7c.js"),[])),"v-323bda7e":ce(()=>B(()=>import("./editor.html.bb339413.js"),[])),"v-c253c956":ce(()=>B(()=>import("./enums.html.e93ea61f.js"),[])),"v-0a0e491c":ce(()=>B(()=>import("./icon.html.6deb220e.js"),[])),"v-3cd5a4ef":ce(()=>B(()=>import("./jest.html.fbca39c1.js"),[])),"v-355ee23e":ce(()=>B(()=>import("./layout.html.198d11d8.js"),[])),"v-411c0c9e":ce(()=>B(()=>import("./locale.html.8706b2b3.js"),[])),"v-56ab05de":ce(()=>B(()=>import("./login.html.d631dbb6.js"),[])),"v-3c4e521e":ce(()=>B(()=>import("./model.html.9b462f64.js"),[])),"v-6f2f6a5a":ce(()=>B(()=>import("./pinia.html.7f9b2e48.js"),[])),"v-b15becb0":ce(()=>B(()=>import("./qiankun.html.87eae9e6.js"),[])),"v-41dee210":ce(()=>B(()=>import("./request.html.b3bfcb9e.js"),[])),"v-5bf80046":ce(()=>B(()=>import("./sass.html.3cf05a81.js"),[])),"v-317f9008":ce(()=>B(()=>import("./swc.html.ee318276.js"),[])),"v-5f4c684e":ce(()=>B(()=>import("./vuex.html.0b3540af.js"),[])),"v-1c0edac3":ce(()=>B(()=>import("./watermark.html.6e85bd26.js"),[])),"v-392e58ee":ce(()=>B(()=>import("./windicss.html.6138fa98.js"),[])),"v-3706649a":ce(()=>B(()=>import("./404.html.500851b0.js"),[]))};var Ot=(e={})=>e;function Gi(e,t,n){var r,o,i;t===void 0&&(t=50),n===void 0&&(n={});var s=(r=n.isImmediate)!=null&&r,a=(o=n.callback)!=null&&o,l=n.maxWait,u=Date.now(),c=[];function f(){if(l!==void 0){var p=Date.now()-u;if(p+t>=l)return l-p}return t}var d=function(){var p=[].slice.call(arguments),_=this;return new Promise(function(g,O){var h=s&&i===void 0;if(i!==void 0&&clearTimeout(i),i=setTimeout(function(){if(i=void 0,u=Date.now(),!s){var w=e.apply(_,p);a&&a(w),c.forEach(function(S){return(0,S.resolve)(w)}),c=[]}},f()),h){var E=e.apply(_,p);return a&&a(E),g(E)}c.push({resolve:g,reject:O})})};return d.cancel=function(p){i!==void 0&&clearTimeout(i),c.forEach(function(_){return(0,_.reject)(p)}),c=[]},d}/*!
+const sf="modulepreload",af=function(e){return"/fes.js/"+e},vs={},B=function(t,n,r){return!n||n.length===0?t():Promise.all(n.map(o=>{if(o=af(o),o in vs)return;vs[o]=!0;const i=o.endsWith(".css"),s=i?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${s}`))return;const a=document.createElement("link");if(a.rel=i?"stylesheet":sf,i||(a.as="script",a.crossOrigin=""),a.href=o,document.head.appendChild(a),i)return new Promise((l,u)=>{a.addEventListener("load",l),a.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())},lf={"v-8daa1a0e":()=>B(()=>import("./index.html.bc74ee4c.js"),[]).then(({data:e})=>e),"v-fffb8e28":()=>B(()=>import("./index.html.85db73e3.js"),[]).then(({data:e})=>e),"v-0cca110a":()=>B(()=>import("./builder.html.e970d1bc.js"),[]).then(({data:e})=>e),"v-85fa9b2a":()=>B(()=>import("./config.html.5d92a440.js"),[]).then(({data:e})=>e),"v-d7fa887a":()=>B(()=>import("./contributing.html.24d74808.js"),[]).then(({data:e})=>e),"v-884fd4bc":()=>B(()=>import("./css.html.3990f0c1.js"),[]).then(({data:e})=>e),"v-040800dc":()=>B(()=>import("./directory-structure.html.4960a3b9.js"),[]).then(({data:e})=>e),"v-ef8c5e10":()=>B(()=>import("./env.html.35aa0f1a.js"),[]).then(({data:e})=>e),"v-37e1c06f":()=>B(()=>import("./faq.html.1e599082.js"),[]).then(({data:e})=>e),"v-fb0f0066":()=>B(()=>import("./getting-started.html.8eca842e.js"),[]).then(({data:e})=>e),"v-528b8b6c":()=>B(()=>import("./image.html.20b52f7d.js"),[]).then(({data:e})=>e),"v-00cf7e23":()=>B(()=>import("./mock.html.6d653289.js"),[]).then(({data:e})=>e),"v-1d14d5cc":()=>B(()=>import("./plugin.html.ccfb9074.js"),[]).then(({data:e})=>e),"v-7b96e3a4":()=>B(()=>import("./public.html.9d99cf84.js"),[]).then(({data:e})=>e),"v-6320961c":()=>B(()=>import("./route.html.aa1f3f0b.js"),[]).then(({data:e})=>e),"v-3dba8814":()=>B(()=>import("./runtime-config.html.d036f810.js"),[]).then(({data:e})=>e),"v-7b48519a":()=>B(()=>import("./template.html.decb42ff.js"),[]).then(({data:e})=>e),"v-4acab794":()=>B(()=>import("./upgrade3.html.0ae06c8e.js"),[]).then(({data:e})=>e),"v-a1a49808":()=>B(()=>import("./api.html.20695f57.js"),[]).then(({data:e})=>e),"v-a951be94":()=>B(()=>import("./cli.html.b37682a1.js"),[]).then(({data:e})=>e),"v-76cd065c":()=>B(()=>import("./index.html.35cddc8c.js"),[]).then(({data:e})=>e),"v-76cb52e8":()=>B(()=>import("./index.html.82e50780.js"),[]).then(({data:e})=>e),"v-2c05b6e0":()=>B(()=>import("./index.html.74321f46.js"),[]).then(({data:e})=>e),"v-d61a9282":()=>B(()=>import("./index.html.d460e0cc.js"),[]).then(({data:e})=>e),"v-494b840e":()=>B(()=>import("./index.html.b3f98887.js"),[]).then(({data:e})=>e),"v-c5618810":()=>B(()=>import("./api.html.b17fa30f.js"),[]).then(({data:e})=>e),"v-2fe128e7":()=>B(()=>import("./access.html.701eacb0.js"),[]).then(({data:e})=>e),"v-323bda7e":()=>B(()=>import("./editor.html.2fb88cf1.js"),[]).then(({data:e})=>e),"v-c253c956":()=>B(()=>import("./enums.html.7c55aefa.js"),[]).then(({data:e})=>e),"v-0a0e491c":()=>B(()=>import("./icon.html.d2dc60da.js"),[]).then(({data:e})=>e),"v-3cd5a4ef":()=>B(()=>import("./jest.html.de551700.js"),[]).then(({data:e})=>e),"v-355ee23e":()=>B(()=>import("./layout.html.bccb8e74.js"),[]).then(({data:e})=>e),"v-411c0c9e":()=>B(()=>import("./locale.html.4d3b3790.js"),[]).then(({data:e})=>e),"v-56ab05de":()=>B(()=>import("./login.html.2f0338ab.js"),[]).then(({data:e})=>e),"v-3c4e521e":()=>B(()=>import("./model.html.fab33d63.js"),[]).then(({data:e})=>e),"v-6f2f6a5a":()=>B(()=>import("./pinia.html.1e6ca3bb.js"),[]).then(({data:e})=>e),"v-b15becb0":()=>B(()=>import("./qiankun.html.deb33c50.js"),[]).then(({data:e})=>e),"v-41dee210":()=>B(()=>import("./request.html.fe4ceade.js"),[]).then(({data:e})=>e),"v-5bf80046":()=>B(()=>import("./sass.html.177ef37c.js"),[]).then(({data:e})=>e),"v-317f9008":()=>B(()=>import("./swc.html.a56bb9f7.js"),[]).then(({data:e})=>e),"v-5f4c684e":()=>B(()=>import("./vuex.html.36df398e.js"),[]).then(({data:e})=>e),"v-1c0edac3":()=>B(()=>import("./watermark.html.855d80c4.js"),[]).then(({data:e})=>e),"v-392e58ee":()=>B(()=>import("./windicss.html.cc303ad2.js"),[]).then(({data:e})=>e),"v-3706649a":()=>B(()=>import("./404.html.c3e557d0.js"),[]).then(({data:e})=>e)};function Ri(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}function _r(e){if(oe(e)){const t={};for(let n=0;n{if(n){const r=n.split(uf);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function et(e){let t="";if(Oe(e))t=e;else if(oe(e))for(let n=0;nOe(e)?e:e==null?"":oe(e)||Te(e)&&(e.toString===ql||!fe(e.toString))?JSON.stringify(e,Fl,2):String(e),Fl=(e,t)=>t&&t.__v_isRef?Fl(e,t.value):Sn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:Bl(t)?{[`Set(${t.size})`]:[...t.values()]}:Te(t)&&!oe(t)&&!Ul(t)?String(t):t,xe={},wn=[],mt=()=>{},hf=()=>!1,vf=/^on[^a-z]/,yr=e=>vf.test(e),ji=e=>e.startsWith("onUpdate:"),ze=Object.assign,Di=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},gf=Object.prototype.hasOwnProperty,_e=(e,t)=>gf.call(e,t),oe=Array.isArray,Sn=e=>_o(e)==="[object Map]",Bl=e=>_o(e)==="[object Set]",fe=e=>typeof e=="function",Oe=e=>typeof e=="string",Ni=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",Vl=e=>Te(e)&&fe(e.then)&&fe(e.catch),ql=Object.prototype.toString,_o=e=>ql.call(e),_f=e=>_o(e).slice(8,-1),Ul=e=>_o(e)==="[object Object]",Mi=e=>Oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Gn=Ri(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),yo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},yf=/-(\w)/g,Et=yo(e=>e.replace(yf,(t,n)=>n?n.toUpperCase():"")),bf=/\B([A-Z])/g,dn=yo(e=>e.replace(bf,"-$1").toLowerCase()),bo=yo(e=>e.charAt(0).toUpperCase()+e.slice(1)),Do=yo(e=>e?`on${bo(e)}`:""),ar=(e,t)=>!Object.is(e,t),No=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ef=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Of=e=>{const t=Oe(e)?Number(e):NaN;return isNaN(t)?e:t};let gs;const wf=()=>gs||(gs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let rt;class Sf{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=rt,!t&&rt&&(this.index=(rt.scopes||(rt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=rt;try{return rt=this,t()}finally{rt=n}}}on(){rt=this}off(){rt=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Kl=e=>(e.w&qt)>0,Wl=e=>(e.n&qt)>0,If=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(c==="length"||c>=l)&&a.push(u)})}else switch(n!==void 0&&a.push(s.get(n)),t){case"add":oe(e)?Mi(n)&&a.push(s.get("length")):(a.push(s.get(un)),Sn(e)&&a.push(s.get(oi)));break;case"delete":oe(e)||(a.push(s.get(un)),Sn(e)&&a.push(s.get(oi)));break;case"set":Sn(e)&&a.push(s.get(un));break}if(a.length===1)a[0]&&ii(a[0]);else{const l=[];for(const u of a)u&&l.push(...u);ii($i(l))}}function ii(e,t){const n=oe(e)?e:[...e];for(const r of n)r.computed&&ys(r);for(const r of n)r.computed||ys(r)}function ys(e,t){(e!==dt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Af(e,t){var n;return(n=Yr.get(e))===null||n===void 0?void 0:n.get(t)}const xf=Ri("__proto__,__v_isRef,__isVue"),Zl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ni)),Tf=Fi(),Lf=Fi(!1,!0),Rf=Fi(!0),bs=jf();function jf(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=be(this);for(let i=0,s=this.length;i{e[t]=function(...n){Dn();const r=be(this)[t].apply(this,n);return Nn(),r}}),e}function Df(e){const t=be(this);return tt(t,"has",e),t.hasOwnProperty(e)}function Fi(e=!1,t=!1){return function(r,o,i){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&i===(e?t?Yf:tc:t?ec:Xl).get(r))return r;const s=oe(r);if(!e){if(s&&_e(bs,o))return Reflect.get(bs,o,i);if(o==="hasOwnProperty")return Df}const a=Reflect.get(r,o,i);return(Ni(o)?Zl.has(o):xf(o))||(e||tt(r,"get",o),t)?a:Ve(a)?s&&Mi(o)?a:a.value:Te(a)?e?Oo(a):Mn(a):a}}const Nf=Yl(),Mf=Yl(!0);function Yl(e=!1){return function(n,r,o,i){let s=n[r];if(An(s)&&Ve(s)&&!Ve(o))return!1;if(!e&&(!Gr(o)&&!An(o)&&(s=be(s),o=be(o)),!oe(n)&&Ve(s)&&!Ve(o)))return s.value=o,!0;const a=oe(n)&&Mi(r)?Number(r)e,Eo=e=>Reflect.getPrototypeOf(e);function Pr(e,t,n=!1,r=!1){e=e.__v_raw;const o=be(e),i=be(t);n||(t!==i&&tt(o,"get",t),tt(o,"get",i));const{has:s}=Eo(o),a=r?Bi:n?Ui:lr;if(s.call(o,t))return a(e.get(t));if(s.call(o,i))return a(e.get(i));e!==o&&e.get(t)}function Cr(e,t=!1){const n=this.__v_raw,r=be(n),o=be(e);return t||(e!==o&&tt(r,"has",e),tt(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Ir(e,t=!1){return e=e.__v_raw,!t&&tt(be(e),"iterate",un),Reflect.get(e,"size",e)}function Es(e){e=be(e);const t=be(this);return Eo(t).has.call(t,e)||(t.add(e),xt(t,"add",e,e)),this}function Os(e,t){t=be(t);const n=be(this),{has:r,get:o}=Eo(n);let i=r.call(n,e);i||(e=be(e),i=r.call(n,e));const s=o.call(n,e);return n.set(e,t),i?ar(t,s)&&xt(n,"set",e,t):xt(n,"add",e,t),this}function ws(e){const t=be(this),{has:n,get:r}=Eo(t);let o=n.call(t,e);o||(e=be(e),o=n.call(t,e)),r&&r.call(t,e);const i=t.delete(e);return o&&xt(t,"delete",e,void 0),i}function Ss(){const e=be(this),t=e.size!==0,n=e.clear();return t&&xt(e,"clear",void 0,void 0),n}function kr(e,t){return function(r,o){const i=this,s=i.__v_raw,a=be(s),l=t?Bi:e?Ui:lr;return!e&&tt(a,"iterate",un),s.forEach((u,c)=>r.call(o,l(u),l(c),i))}}function Ar(e,t,n){return function(...r){const o=this.__v_raw,i=be(o),s=Sn(i),a=e==="entries"||e===Symbol.iterator&&s,l=e==="keys"&&s,u=o[e](...r),c=n?Bi:t?Ui:lr;return!t&&tt(i,"iterate",l?oi:un),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:a?[c(f[0]),c(f[1])]:c(f),done:d}},[Symbol.iterator](){return this}}}}function Rt(e){return function(...t){return e==="delete"?!1:this}}function qf(){const e={get(i){return Pr(this,i)},get size(){return Ir(this)},has:Cr,add:Es,set:Os,delete:ws,clear:Ss,forEach:kr(!1,!1)},t={get(i){return Pr(this,i,!1,!0)},get size(){return Ir(this)},has:Cr,add:Es,set:Os,delete:ws,clear:Ss,forEach:kr(!1,!0)},n={get(i){return Pr(this,i,!0)},get size(){return Ir(this,!0)},has(i){return Cr.call(this,i,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:kr(!0,!1)},r={get(i){return Pr(this,i,!0,!0)},get size(){return Ir(this,!0)},has(i){return Cr.call(this,i,!0)},add:Rt("add"),set:Rt("set"),delete:Rt("delete"),clear:Rt("clear"),forEach:kr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Ar(i,!1,!1),n[i]=Ar(i,!0,!1),t[i]=Ar(i,!1,!0),r[i]=Ar(i,!0,!0)}),[e,n,t,r]}const[Uf,zf,Kf,Wf]=qf();function Vi(e,t){const n=t?e?Wf:Kf:e?zf:Uf;return(r,o,i)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(_e(n,o)&&o in r?n:r,o,i)}const Jf={get:Vi(!1,!1)},Qf={get:Vi(!1,!0)},Zf={get:Vi(!0,!1)},Xl=new WeakMap,ec=new WeakMap,tc=new WeakMap,Yf=new WeakMap;function Gf(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Xf(e){return e.__v_skip||!Object.isExtensible(e)?0:Gf(_f(e))}function Mn(e){return An(e)?e:qi(e,!1,Gl,Jf,Xl)}function ed(e){return qi(e,!1,Vf,Qf,ec)}function Oo(e){return qi(e,!0,Bf,Zf,tc)}function qi(e,t,n,r,o){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=o.get(e);if(i)return i;const s=Xf(e);if(s===0)return e;const a=new Proxy(e,s===2?r:n);return o.set(e,a),a}function Pn(e){return An(e)?Pn(e.__v_raw):!!(e&&e.__v_isReactive)}function An(e){return!!(e&&e.__v_isReadonly)}function Gr(e){return!!(e&&e.__v_isShallow)}function nc(e){return Pn(e)||An(e)}function be(e){const t=e&&e.__v_raw;return t?be(t):e}function rc(e){return Zr(e,"__v_skip",!0),e}const lr=e=>Te(e)?Mn(e):e,Ui=e=>Te(e)?Oo(e):e;function oc(e){Ht&&dt&&(e=be(e),Ql(e.dep||(e.dep=$i())))}function ic(e,t){e=be(e);const n=e.dep;n&&ii(n)}function Ve(e){return!!(e&&e.__v_isRef===!0)}function Ce(e){return ac(e,!1)}function sc(e){return ac(e,!0)}function ac(e,t){return Ve(e)?e:new td(e,t)}class td{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:be(t),this._value=n?t:lr(t)}get value(){return oc(this),this._value}set value(t){const n=this.__v_isShallow||Gr(t)||An(t);t=n?t:be(t),ar(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:lr(t),ic(this))}}function V(e){return Ve(e)?e.value:e}const nd={get:(e,t,n)=>V(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ve(o)&&!Ve(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function lc(e){return Pn(e)?e:new Proxy(e,nd)}function zi(e){const t=oe(e)?new Array(e.length):{};for(const n in e)t[n]=od(e,n);return t}class rd{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Af(be(this._object),this._key)}}function od(e,t,n){const r=e[t];return Ve(r)?r:new rd(e,t,n)}var cc;class id{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[cc]=!1,this._dirty=!0,this.effect=new Hi(t,()=>{this._dirty||(this._dirty=!0,ic(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=be(this);return oc(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}cc="__v_isReadonly";function sd(e,t,n=!1){let r,o;const i=fe(e);return i?(r=e,o=mt):(r=e.get,o=e.set),new id(r,o,i||!o,n)}function Ft(e,t,n,r){let o;try{o=r?e(...r):e()}catch(i){br(i,t,n)}return o}function at(e,t,n,r){if(fe(e)){const i=Ft(e,t,n,r);return i&&Vl(i)&&i.catch(s=>{br(s,t,n)}),i}const o=[];for(let i=0;i>>1;ur(We[r])_t&&We.splice(t,1)}function ud(e){oe(e)?Cn.push(...e):(!Pt||!Pt.includes(e,e.allowRecurse?rn+1:rn))&&Cn.push(e),fc()}function Ps(e,t=cr?_t+1:0){for(;tur(n)-ur(r)),rn=0;rne.id==null?1/0:e.id,fd=(e,t)=>{const n=ur(e)-ur(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function dc(e){si=!1,cr=!0,We.sort(fd);const t=mt;try{for(_t=0;_tOe(p)?p.trim():p)),f&&(o=n.map(Ef))}let a,l=r[a=Do(t)]||r[a=Do(Et(t))];!l&&i&&(l=r[a=Do(dn(t))]),l&&at(l,e,6,o);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,at(u,e,6,o)}}function pc(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const i=e.emits;let s={},a=!1;if(!fe(e)){const l=u=>{const c=pc(u,t,!0);c&&(a=!0,ze(s,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!i&&!a?(Te(e)&&r.set(e,null),null):(oe(i)?i.forEach(l=>s[l]=null):ze(s,i),Te(e)&&r.set(e,s),s)}function So(e,t){return!e||!yr(t)?!1:(t=t.slice(2).replace(/Once$/,""),_e(e,t[0].toLowerCase()+t.slice(1))||_e(e,dn(t))||_e(e,t))}let Ue=null,mc=null;function eo(e){const t=Ue;return Ue=e,mc=e&&e.type.__scopeId||null,t}function qe(e,t=Ue,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Ds(-1);const i=eo(t);let s;try{s=e(...o)}finally{eo(i),r._d&&Ds(1)}return s};return r._n=!0,r._c=!0,r._d=!0,r}function Mo(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:i,propsOptions:[s],slots:a,attrs:l,emit:u,render:c,renderCache:f,data:d,setupState:p,ctx:_,inheritAttrs:g}=e;let O,h;const E=eo(e);try{if(n.shapeFlag&4){const S=o||r;O=ft(c.call(S,S,f,i,p,d,_)),h=l}else{const S=t;O=ft(S.length>1?S(i,{attrs:l,slots:a,emit:u}):S(i,null)),h=t.props?l:pd(l)}}catch(S){tr.length=0,br(S,e,1),O=ae(ot)}let w=O;if(h&&g!==!1){const S=Object.keys(h),{shapeFlag:I}=w;S.length&&I&7&&(s&&S.some(ji)&&(h=md(h,s)),w=zt(w,h))}return n.dirs&&(w=zt(w),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),O=w,eo(E),O}const pd=e=>{let t;for(const n in e)(n==="class"||n==="style"||yr(n))&&((t||(t={}))[n]=e[n]);return t},md=(e,t)=>{const n={};for(const r in e)(!ji(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function hd(e,t,n){const{props:r,children:o,component:i}=e,{props:s,children:a,patchFlag:l}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Cs(r,s,u):!!s;if(l&8){const c=t.dynamicProps;for(let f=0;fe.__isSuspense;function hc(e,t){t&&t.pendingBranch?oe(e)?t.effects.push(...e):t.effects.push(e):ud(e)}function Bt(e,t){if(je){let n=je.provides;const r=je.parent&&je.parent.provides;r===n&&(n=je.provides=Object.create(r)),n[e]=t}}function Fe(e,t,n=!1){const r=je||Ue;if(r){const o=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&fe(t)?t.call(r.proxy):t}}function _d(e,t){return Wi(e,null,t)}const xr={};function lt(e,t,n){return Wi(e,t,n)}function Wi(e,t,{immediate:n,deep:r,flush:o,onTrack:i,onTrigger:s}=xe){const a=zl()===(je==null?void 0:je.scope)?je:null;let l,u=!1,c=!1;if(Ve(e)?(l=()=>e.value,u=Gr(e)):Pn(e)?(l=()=>e,r=!0):oe(e)?(c=!0,u=e.some(w=>Pn(w)||Gr(w)),l=()=>e.map(w=>{if(Ve(w))return w.value;if(Pn(w))return ln(w);if(fe(w))return Ft(w,a,2)})):fe(e)?t?l=()=>Ft(e,a,2):l=()=>{if(!(a&&a.isUnmounted))return f&&f(),at(e,a,3,[d])}:l=mt,t&&r){const w=l;l=()=>ln(w())}let f,d=w=>{f=h.onStop=()=>{Ft(w,a,4)}},p;if(Ln)if(d=mt,t?n&&at(t,a,3,[l(),c?[]:void 0,d]):l(),o==="sync"){const w=dp();p=w.__watcherHandles||(w.__watcherHandles=[])}else return mt;let _=c?new Array(e.length).fill(xr):xr;const g=()=>{if(!!h.active)if(t){const w=h.run();(r||u||(c?w.some((S,I)=>ar(S,_[I])):ar(w,_)))&&(f&&f(),at(t,a,3,[w,_===xr?void 0:c&&_[0]===xr?[]:_,d]),_=w)}else h.run()};g.allowRecurse=!!t;let O;o==="sync"?O=g:o==="post"?O=()=>Xe(g,a&&a.suspense):(g.pre=!0,a&&(g.id=a.uid),O=()=>wo(g));const h=new Hi(l,O);t?n?g():_=h.run():o==="post"?Xe(h.run.bind(h),a&&a.suspense):h.run();const E=()=>{h.stop(),a&&a.scope&&Di(a.scope.effects,h)};return p&&p.push(E),E}function yd(e,t,n){const r=this.proxy,o=Oe(e)?e.includes(".")?vc(r,e):()=>r[e]:e.bind(r,r);let i;fe(t)?i=t:(i=t.handler,n=t);const s=je;Tn(this);const a=Wi(o,i.bind(r),n);return s?Tn(s):fn(),a}function vc(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{ln(n,t)});else if(Ul(e))for(const n in e)ln(e[n],t);return e}function bd(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ye(()=>{e.isMounted=!0}),Co(()=>{e.isUnmounting=!0}),e}const it=[Function,Array],Ed={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:it,onEnter:it,onAfterEnter:it,onEnterCancelled:it,onBeforeLeave:it,onLeave:it,onAfterLeave:it,onLeaveCancelled:it,onBeforeAppear:it,onAppear:it,onAfterAppear:it,onAppearCancelled:it},setup(e,{slots:t}){const n=Rc(),r=bd();let o;return()=>{const i=t.default&&yc(t.default(),!0);if(!i||!i.length)return;let s=i[0];if(i.length>1){for(const g of i)if(g.type!==ot){s=g;break}}const a=be(e),{mode:l}=a;if(r.isLeaving)return $o(s);const u=Is(s);if(!u)return $o(s);const c=ai(u,a,r,n);li(u,c);const f=n.subTree,d=f&&Is(f);let p=!1;const{getTransitionKey:_}=u.type;if(_){const g=_();o===void 0?o=g:g!==o&&(o=g,p=!0)}if(d&&d.type!==ot&&(!on(u,d)||p)){const g=ai(d,a,r,n);if(li(d,g),l==="out-in")return r.isLeaving=!0,g.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},$o(s);l==="in-out"&&u.type!==ot&&(g.delayLeave=(O,h,E)=>{const w=_c(r,d);w[String(d.key)]=d,O._leaveCb=()=>{h(),O._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=E})}return s}}},gc=Ed;function _c(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function ai(e,t,n,r){const{appear:o,mode:i,persisted:s=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:f,onLeave:d,onAfterLeave:p,onLeaveCancelled:_,onBeforeAppear:g,onAppear:O,onAfterAppear:h,onAppearCancelled:E}=t,w=String(e.key),S=_c(n,e),I=(b,M)=>{b&&at(b,r,9,M)},z=(b,M)=>{const N=M[1];I(b,M),oe(b)?b.every(K=>K.length<=1)&&N():b.length<=1&&N()},H={mode:i,persisted:s,beforeEnter(b){let M=a;if(!n.isMounted)if(o)M=g||a;else return;b._leaveCb&&b._leaveCb(!0);const N=S[w];N&&on(e,N)&&N.el._leaveCb&&N.el._leaveCb(),I(M,[b])},enter(b){let M=l,N=u,K=c;if(!n.isMounted)if(o)M=O||l,N=h||u,K=E||c;else return;let k=!1;const R=b._enterCb=$=>{k||(k=!0,$?I(K,[b]):I(N,[b]),H.delayedLeave&&H.delayedLeave(),b._enterCb=void 0)};M?z(M,[b,R]):R()},leave(b,M){const N=String(e.key);if(b._enterCb&&b._enterCb(!0),n.isUnmounting)return M();I(f,[b]);let K=!1;const k=b._leaveCb=R=>{K||(K=!0,M(),R?I(_,[b]):I(p,[b]),b._leaveCb=void 0,S[N]===e&&delete S[N])};S[N]=e,d?z(d,[b,k]):k()},clone(b){return ai(b,t,n,r)}};return H}function $o(e){if(Or(e))return e=zt(e),e.children=null,e}function Is(e){return Or(e)?e.children?e.children[0]:void 0:e}function li(e,t){e.shapeFlag&6&&e.component?li(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function yc(e,t=!1,n){let r=[],o=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;function ce(e){fe(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:i,suspensible:s=!0,onError:a}=e;let l=null,u,c=0;const f=()=>(c++,l=null,d()),d=()=>{let p;return l||(p=l=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),a)return new Promise((g,O)=>{a(_,()=>g(f()),()=>O(_),c+1)});throw _}).then(_=>p!==l&&l?l:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),u=_,_)))};return me({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return u},setup(){const p=je;if(u)return()=>Ho(u,p);const _=E=>{l=null,br(E,p,13,!r)};if(s&&p.suspense||Ln)return d().then(E=>()=>Ho(E,p)).catch(E=>(_(E),()=>r?ae(r,{error:E}):null));const g=Ce(!1),O=Ce(),h=Ce(!!o);return o&&setTimeout(()=>{h.value=!1},o),i!=null&&setTimeout(()=>{if(!g.value&&!O.value){const E=new Error(`Async component timed out after ${i}ms.`);_(E),O.value=E}},i),d().then(()=>{g.value=!0,p.parent&&Or(p.parent.vnode)&&wo(p.parent.update)}).catch(E=>{_(E),O.value=E}),()=>{if(g.value&&u)return Ho(u,p);if(O.value&&r)return ae(r,{error:O.value});if(n&&!h.value)return ae(n)}}})}function Ho(e,t){const{ref:n,props:r,children:o,ce:i}=t.vnode,s=ae(e,r,o);return s.ref=n,s.ce=i,delete t.vnode.ce,s}const Or=e=>e.type.__isKeepAlive;function Od(e,t){bc(e,"a",t)}function wd(e,t){bc(e,"da",t)}function bc(e,t,n=je){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Po(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Or(o.parent.vnode)&&Sd(r,t,n,o),o=o.parent}}function Sd(e,t,n,r){const o=Po(t,e,r,!0);Io(()=>{Di(r[t],o)},n)}function Po(e,t,n=je,r=!1){if(n){const o=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...s)=>{if(n.isUnmounted)return;Dn(),Tn(n);const a=at(t,n,e,s);return fn(),Nn(),a});return r?o.unshift(i):o.push(i),i}}const Lt=e=>(t,n=je)=>(!Ln||e==="sp")&&Po(e,(...r)=>t(...r),n),Pd=Lt("bm"),Ye=Lt("m"),Cd=Lt("bu"),Id=Lt("u"),Co=Lt("bum"),Io=Lt("um"),kd=Lt("sp"),Ad=Lt("rtg"),xd=Lt("rtc");function Td(e,t=je){Po("ec",e,t)}function to(e,t){const n=Ue;if(n===null)return e;const r=Ao(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let i=0;it(s,a,void 0,i&&i[a]));else{const s=Object.keys(e);o=new Array(s.length);for(let a=0,l=s.length;aoo(t)?!(t.type===ot||t.type===ke&&!Oc(t.children)):!0)?e:null}const ci=e=>e?jc(e)?Ao(e)||e.proxy:ci(e.parent):null,Xn=ze(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ci(e.parent),$root:e=>ci(e.root),$emit:e=>e.emit,$options:e=>Ji(e),$forceUpdate:e=>e.f||(e.f=()=>wo(e.update)),$nextTick:e=>e.n||(e.n=Er.bind(e.proxy)),$watch:e=>yd.bind(e)}),Fo=(e,t)=>e!==xe&&!e.__isScriptSetup&&_e(e,t),jd={get({_:e},t){const{ctx:n,setupState:r,data:o,props:i,accessCache:s,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const p=s[t];if(p!==void 0)switch(p){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return i[t]}else{if(Fo(r,t))return s[t]=1,r[t];if(o!==xe&&_e(o,t))return s[t]=2,o[t];if((u=e.propsOptions[0])&&_e(u,t))return s[t]=3,i[t];if(n!==xe&&_e(n,t))return s[t]=4,n[t];ui&&(s[t]=0)}}const c=Xn[t];let f,d;if(c)return t==="$attrs"&&tt(e,"get",t),c(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==xe&&_e(n,t))return s[t]=4,n[t];if(d=l.config.globalProperties,_e(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:i}=e;return Fo(o,t)?(o[t]=n,!0):r!==xe&&_e(r,t)?(r[t]=n,!0):_e(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:i}},s){let a;return!!n[s]||e!==xe&&_e(e,s)||Fo(t,s)||(a=i[0])&&_e(a,s)||_e(r,s)||_e(Xn,s)||_e(o.config.globalProperties,s)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:_e(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let ui=!0;function Dd(e){const t=Ji(e),n=e.proxy,r=e.ctx;ui=!1,t.beforeCreate&&As(t.beforeCreate,e,"bc");const{data:o,computed:i,methods:s,watch:a,provide:l,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:p,updated:_,activated:g,deactivated:O,beforeDestroy:h,beforeUnmount:E,destroyed:w,unmounted:S,render:I,renderTracked:z,renderTriggered:H,errorCaptured:b,serverPrefetch:M,expose:N,inheritAttrs:K,components:k,directives:R,filters:$}=t;if(u&&Nd(u,r,null,e.appContext.config.unwrapInjectedRef),s)for(const re in s){const se=s[re];fe(se)&&(r[re]=se.bind(n))}if(o){const re=o.call(n,n);Te(re)&&(e.data=Mn(re))}if(ui=!0,i)for(const re in i){const se=i[re],Le=fe(se)?se.bind(n,n):fe(se.get)?se.get.bind(n,n):mt,De=!fe(se)&&fe(se.set)?se.set.bind(n):mt,Ne=Q({get:Le,set:De});Object.defineProperty(r,re,{enumerable:!0,configurable:!0,get:()=>Ne.value,set:Ae=>Ne.value=Ae})}if(a)for(const re in a)wc(a[re],r,n,re);if(l){const re=fe(l)?l.call(n):l;Reflect.ownKeys(re).forEach(se=>{Bt(se,re[se])})}c&&As(c,e,"c");function W(re,se){oe(se)?se.forEach(Le=>re(Le.bind(n))):se&&re(se.bind(n))}if(W(Pd,f),W(Ye,d),W(Cd,p),W(Id,_),W(Od,g),W(wd,O),W(Td,b),W(xd,z),W(Ad,H),W(Co,E),W(Io,S),W(kd,M),oe(N))if(N.length){const re=e.exposed||(e.exposed={});N.forEach(se=>{Object.defineProperty(re,se,{get:()=>n[se],set:Le=>n[se]=Le})})}else e.exposed||(e.exposed={});I&&e.render===mt&&(e.render=I),K!=null&&(e.inheritAttrs=K),k&&(e.components=k),R&&(e.directives=R)}function Nd(e,t,n=mt,r=!1){oe(e)&&(e=fi(e));for(const o in e){const i=e[o];let s;Te(i)?"default"in i?s=Fe(i.from||o,i.default,!0):s=Fe(i.from||o):s=Fe(i),Ve(s)&&r?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>s.value,set:a=>s.value=a}):t[o]=s}}function As(e,t,n){at(oe(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function wc(e,t,n,r){const o=r.includes(".")?vc(n,r):()=>n[r];if(Oe(e)){const i=t[e];fe(i)&<(o,i)}else if(fe(e))lt(o,e.bind(n));else if(Te(e))if(oe(e))e.forEach(i=>wc(i,t,n,r));else{const i=fe(e.handler)?e.handler.bind(n):t[e.handler];fe(i)&<(o,i,e)}}function Ji(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,a=i.get(t);let l;return a?l=a:!o.length&&!n&&!r?l=t:(l={},o.length&&o.forEach(u=>no(l,u,s,!0)),no(l,t,s)),Te(t)&&i.set(t,l),l}function no(e,t,n,r=!1){const{mixins:o,extends:i}=t;i&&no(e,i,n,!0),o&&o.forEach(s=>no(e,s,n,!0));for(const s in t)if(!(r&&s==="expose")){const a=Md[s]||n&&n[s];e[s]=a?a(e[s],t[s]):t[s]}return e}const Md={data:xs,props:en,emits:en,methods:en,computed:en,beforeCreate:Je,created:Je,beforeMount:Je,mounted:Je,beforeUpdate:Je,updated:Je,beforeDestroy:Je,beforeUnmount:Je,destroyed:Je,unmounted:Je,activated:Je,deactivated:Je,errorCaptured:Je,serverPrefetch:Je,components:en,directives:en,watch:Hd,provide:xs,inject:$d};function xs(e,t){return t?e?function(){return ze(fe(e)?e.call(this,this):e,fe(t)?t.call(this,this):t)}:t:e}function $d(e,t){return en(fi(e),fi(t))}function fi(e){if(oe(e)){const t={};for(let n=0;n0)&&!(s&16)){if(s&8){const c=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,p]=Pc(f,t,!0);ze(s,d),p&&a.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!i&&!l)return Te(e)&&r.set(e,wn),wn;if(oe(i))for(let c=0;c-1,p[1]=g<0||_-1||_e(p,"default"))&&a.push(f)}}}const u=[s,a];return Te(e)&&r.set(e,u),u}function Ts(e){return e[0]!=="$"}function Ls(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function Rs(e,t){return Ls(e)===Ls(t)}function js(e,t){return oe(t)?t.findIndex(n=>Rs(n,e)):fe(t)&&Rs(t,e)?0:-1}const Cc=e=>e[0]==="_"||e==="$stable",Qi=e=>oe(e)?e.map(ft):[ft(e)],Vd=(e,t,n)=>{if(t._n)return t;const r=qe((...o)=>Qi(t(...o)),n);return r._c=!1,r},Ic=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Cc(o))continue;const i=e[o];if(fe(i))t[o]=Vd(o,i,r);else if(i!=null){const s=Qi(i);t[o]=()=>s}}},kc=(e,t)=>{const n=Qi(t);e.slots.default=()=>n},qd=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=be(t),Zr(t,"_",n)):Ic(t,e.slots={})}else e.slots={},t&&kc(e,t);Zr(e.slots,ko,1)},Ud=(e,t,n)=>{const{vnode:r,slots:o}=e;let i=!0,s=xe;if(r.shapeFlag&32){const a=t._;a?n&&a===1?i=!1:(ze(o,t),!n&&a===1&&delete o._):(i=!t.$stable,Ic(t,o)),s=t}else t&&(kc(e,t),s={default:1});if(i)for(const a in o)!Cc(a)&&!(a in s)&&delete o[a]};function Ac(){return{app:null,config:{isNativeTag:hf,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let zd=0;function Kd(e,t){return function(r,o=null){fe(r)||(r=Object.assign({},r)),o!=null&&!Te(o)&&(o=null);const i=Ac(),s=new Set;let a=!1;const l=i.app={_uid:zd++,_component:r,_props:o,_container:null,_context:i,_instance:null,version:pp,get config(){return i.config},set config(u){},use(u,...c){return s.has(u)||(u&&fe(u.install)?(s.add(u),u.install(l,...c)):fe(u)&&(s.add(u),u(l,...c))),l},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),l},component(u,c){return c?(i.components[u]=c,l):i.components[u]},directive(u,c){return c?(i.directives[u]=c,l):i.directives[u]},mount(u,c,f){if(!a){const d=ae(r,o);return d.appContext=i,c&&t?t(d,u):e(d,u,f),a=!0,l._container=u,u.__vue_app__=l,Ao(d.component)||d.component.proxy}},unmount(){a&&(e(null,l._container),delete l._container.__vue_app__)},provide(u,c){return i.provides[u]=c,l}};return l}}function ro(e,t,n,r,o=!1){if(oe(e)){e.forEach((d,p)=>ro(d,t&&(oe(t)?t[p]:t),n,r,o));return}if(In(r)&&!o)return;const i=r.shapeFlag&4?Ao(r.component)||r.component.proxy:r.el,s=o?null:i,{i:a,r:l}=e,u=t&&t.r,c=a.refs===xe?a.refs={}:a.refs,f=a.setupState;if(u!=null&&u!==l&&(Oe(u)?(c[u]=null,_e(f,u)&&(f[u]=null)):Ve(u)&&(u.value=null)),fe(l))Ft(l,a,12,[s,c]);else{const d=Oe(l),p=Ve(l);if(d||p){const _=()=>{if(e.f){const g=d?_e(f,l)?f[l]:c[l]:l.value;o?oe(g)&&Di(g,i):oe(g)?g.includes(i)||g.push(i):d?(c[l]=[i],_e(f,l)&&(f[l]=c[l])):(l.value=[i],e.k&&(c[e.k]=l.value))}else d?(c[l]=s,_e(f,l)&&(f[l]=s)):p&&(l.value=s,e.k&&(c[e.k]=s))};s?(_.id=-1,Xe(_,n)):_()}}}let jt=!1;const Tr=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Lr=e=>e.nodeType===8;function Wd(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:i,parentNode:s,remove:a,insert:l,createComment:u}}=e,c=(h,E)=>{if(!E.hasChildNodes()){n(null,h,E),Xr(),E._vnode=h;return}jt=!1,f(E.firstChild,h,null,null,null),Xr(),E._vnode=h,jt&&console.error("Hydration completed but contains mismatches.")},f=(h,E,w,S,I,z=!1)=>{const H=Lr(h)&&h.data==="[",b=()=>g(h,E,w,S,I,H),{type:M,ref:N,shapeFlag:K,patchFlag:k}=E;let R=h.nodeType;E.el=h,k===-2&&(z=!1,E.dynamicChildren=null);let $=null;switch(M){case xn:R!==3?E.children===""?(l(E.el=o(""),s(h),h),$=h):$=b():(h.data!==E.children&&(jt=!0,h.data=E.children),$=i(h));break;case ot:R!==8||H?$=b():$=i(h);break;case er:if(H&&(h=i(h),R=h.nodeType),R===1||R===3){$=h;const ie=!E.children.length;for(let W=0;W{z=z||!!E.dynamicChildren;const{type:H,props:b,patchFlag:M,shapeFlag:N,dirs:K}=E,k=H==="input"&&K||H==="option";if(k||M!==-1){if(K&>(E,null,w,"created"),b)if(k||!z||M&48)for(const $ in b)(k&&$.endsWith("value")||yr($)&&!Gn($))&&r(h,$,null,b[$],!1,void 0,w);else b.onClick&&r(h,"onClick",null,b.onClick,!1,void 0,w);let R;if((R=b&&b.onVnodeBeforeMount)&&st(R,w,E),K&>(E,null,w,"beforeMount"),((R=b&&b.onVnodeMounted)||K)&&hc(()=>{R&&st(R,w,E),K&>(E,null,w,"mounted")},S),N&16&&!(b&&(b.innerHTML||b.textContent))){let $=p(h.firstChild,E,h,w,S,I,z);for(;$;){jt=!0;const ie=$;$=$.nextSibling,a(ie)}}else N&8&&h.textContent!==E.children&&(jt=!0,h.textContent=E.children)}return h.nextSibling},p=(h,E,w,S,I,z,H)=>{H=H||!!E.dynamicChildren;const b=E.children,M=b.length;for(let N=0;N{const{slotScopeIds:H}=E;H&&(I=I?I.concat(H):H);const b=s(h),M=p(i(h),E,b,w,S,I,z);return M&&Lr(M)&&M.data==="]"?i(E.anchor=M):(jt=!0,l(E.anchor=u("]"),b,M),M)},g=(h,E,w,S,I,z)=>{if(jt=!0,E.el=null,z){const M=O(h);for(;;){const N=i(h);if(N&&N!==M)a(N);else break}}const H=i(h),b=s(h);return a(h),n(null,E,b,H,w,S,Tr(b),I),H},O=h=>{let E=0;for(;h;)if(h=i(h),h&&Lr(h)&&(h.data==="["&&E++,h.data==="]")){if(E===0)return i(h);E--}return h};return[c,f]}const Xe=hc;function Jd(e){return Qd(e,Wd)}function Qd(e,t){const n=wf();n.__VUE__=!0;const{insert:r,remove:o,patchProp:i,createElement:s,createText:a,createComment:l,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:p=mt,insertStaticContent:_}=e,g=(m,v,P,C=null,A=null,D=null,j=!1,T=null,F=!!v.dynamicChildren)=>{if(m===v)return;m&&!on(m,v)&&(C=q(m),Ae(m,A,D,!0),m=null),v.patchFlag===-2&&(F=!1,v.dynamicChildren=null);const{type:L,ref:G,shapeFlag:Y}=v;switch(L){case xn:O(m,v,P,C);break;case ot:h(m,v,P,C);break;case er:m==null&&E(v,P,C,j);break;case ke:k(m,v,P,C,A,D,j,T,F);break;default:Y&1?I(m,v,P,C,A,D,j,T,F):Y&6?R(m,v,P,C,A,D,j,T,F):(Y&64||Y&128)&&L.process(m,v,P,C,A,D,j,T,F,de)}G!=null&&A&&ro(G,m&&m.ref,D,v||m,!v)},O=(m,v,P,C)=>{if(m==null)r(v.el=a(v.children),P,C);else{const A=v.el=m.el;v.children!==m.children&&u(A,v.children)}},h=(m,v,P,C)=>{m==null?r(v.el=l(v.children||""),P,C):v.el=m.el},E=(m,v,P,C)=>{[m.el,m.anchor]=_(m.children,v,P,C,m.el,m.anchor)},w=({el:m,anchor:v},P,C)=>{let A;for(;m&&m!==v;)A=d(m),r(m,P,C),m=A;r(v,P,C)},S=({el:m,anchor:v})=>{let P;for(;m&&m!==v;)P=d(m),o(m),m=P;o(v)},I=(m,v,P,C,A,D,j,T,F)=>{j=j||v.type==="svg",m==null?z(v,P,C,A,D,j,T,F):M(m,v,A,D,j,T,F)},z=(m,v,P,C,A,D,j,T)=>{let F,L;const{type:G,props:Y,shapeFlag:X,transition:ee,dirs:ue}=m;if(F=m.el=s(m.type,D,Y&&Y.is,Y),X&8?c(F,m.children):X&16&&b(m.children,F,null,C,A,D&&G!=="foreignObject",j,T),ue&>(m,null,C,"created"),H(F,m,m.scopeId,j,C),Y){for(const Se in Y)Se!=="value"&&!Gn(Se)&&i(F,Se,null,Y[Se],D,m.children,C,A,U);"value"in Y&&i(F,"value",null,Y.value),(L=Y.onVnodeBeforeMount)&&st(L,C,m)}ue&>(m,null,C,"beforeMount");const ve=(!A||A&&!A.pendingBranch)&&ee&&!ee.persisted;ve&&ee.beforeEnter(F),r(F,v,P),((L=Y&&Y.onVnodeMounted)||ve||ue)&&Xe(()=>{L&&st(L,C,m),ve&&ee.enter(F),ue&>(m,null,C,"mounted")},A)},H=(m,v,P,C,A)=>{if(P&&p(m,P),C)for(let D=0;D{for(let L=F;L{const T=v.el=m.el;let{patchFlag:F,dynamicChildren:L,dirs:G}=v;F|=m.patchFlag&16;const Y=m.props||xe,X=v.props||xe;let ee;P&&Qt(P,!1),(ee=X.onVnodeBeforeUpdate)&&st(ee,P,v,m),G&>(v,m,P,"beforeUpdate"),P&&Qt(P,!0);const ue=A&&v.type!=="foreignObject";if(L?N(m.dynamicChildren,L,T,P,C,ue,D):j||se(m,v,T,null,P,C,ue,D,!1),F>0){if(F&16)K(T,v,Y,X,P,C,A);else if(F&2&&Y.class!==X.class&&i(T,"class",null,X.class,A),F&4&&i(T,"style",Y.style,X.style,A),F&8){const ve=v.dynamicProps;for(let Se=0;Se{ee&&st(ee,P,v,m),G&>(v,m,P,"updated")},C)},N=(m,v,P,C,A,D,j)=>{for(let T=0;T{if(P!==C){if(P!==xe)for(const T in P)!Gn(T)&&!(T in C)&&i(m,T,P[T],null,j,v.children,A,D,U);for(const T in C){if(Gn(T))continue;const F=C[T],L=P[T];F!==L&&T!=="value"&&i(m,T,L,F,j,v.children,A,D,U)}"value"in C&&i(m,"value",P.value,C.value)}},k=(m,v,P,C,A,D,j,T,F)=>{const L=v.el=m?m.el:a(""),G=v.anchor=m?m.anchor:a("");let{patchFlag:Y,dynamicChildren:X,slotScopeIds:ee}=v;ee&&(T=T?T.concat(ee):ee),m==null?(r(L,P,C),r(G,P,C),b(v.children,P,G,A,D,j,T,F)):Y>0&&Y&64&&X&&m.dynamicChildren?(N(m.dynamicChildren,X,P,A,D,j,T),(v.key!=null||A&&v===A.subTree)&&xc(m,v,!0)):se(m,v,P,G,A,D,j,T,F)},R=(m,v,P,C,A,D,j,T,F)=>{v.slotScopeIds=T,m==null?v.shapeFlag&512?A.ctx.activate(v,P,C,j,F):$(v,P,C,A,D,j,F):ie(m,v,F)},$=(m,v,P,C,A,D,j)=>{const T=m.component=op(m,C,A);if(Or(m)&&(T.ctx.renderer=de),ip(T),T.asyncDep){if(A&&A.registerDep(T,W),!m.el){const F=T.subTree=ae(ot);h(null,F,v,P)}return}W(T,m,v,P,A,D,j)},ie=(m,v,P)=>{const C=v.component=m.component;if(hd(m,v,P))if(C.asyncDep&&!C.asyncResolved){re(C,v,P);return}else C.next=v,cd(C.update),C.update();else v.el=m.el,C.vnode=v},W=(m,v,P,C,A,D,j)=>{const T=()=>{if(m.isMounted){let{next:G,bu:Y,u:X,parent:ee,vnode:ue}=m,ve=G,Se;Qt(m,!1),G?(G.el=ue.el,re(m,G,j)):G=ue,Y&&No(Y),(Se=G.props&&G.props.onVnodeBeforeUpdate)&&st(Se,ee,G,ue),Qt(m,!0);const $e=Mo(m),ut=m.subTree;m.subTree=$e,g(ut,$e,f(ut.el),q(ut),m,A,D),G.el=$e.el,ve===null&&vd(m,$e.el),X&&Xe(X,A),(Se=G.props&&G.props.onVnodeUpdated)&&Xe(()=>st(Se,ee,G,ue),A)}else{let G;const{el:Y,props:X}=v,{bm:ee,m:ue,parent:ve}=m,Se=In(v);if(Qt(m,!1),ee&&No(ee),!Se&&(G=X&&X.onVnodeBeforeMount)&&st(G,ve,v),Qt(m,!0),Y&&le){const $e=()=>{m.subTree=Mo(m),le(Y,m.subTree,m,A,null)};Se?v.type.__asyncLoader().then(()=>!m.isUnmounted&&$e()):$e()}else{const $e=m.subTree=Mo(m);g(null,$e,P,C,m,A,D),v.el=$e.el}if(ue&&Xe(ue,A),!Se&&(G=X&&X.onVnodeMounted)){const $e=v;Xe(()=>st(G,ve,$e),A)}(v.shapeFlag&256||ve&&In(ve.vnode)&&ve.vnode.shapeFlag&256)&&m.a&&Xe(m.a,A),m.isMounted=!0,v=P=C=null}},F=m.effect=new Hi(T,()=>wo(L),m.scope),L=m.update=()=>F.run();L.id=m.uid,Qt(m,!0),L()},re=(m,v,P)=>{v.component=m;const C=m.vnode.props;m.vnode=v,m.next=null,Bd(m,v.props,C,P),Ud(m,v.children,P),Dn(),Ps(),Nn()},se=(m,v,P,C,A,D,j,T,F=!1)=>{const L=m&&m.children,G=m?m.shapeFlag:0,Y=v.children,{patchFlag:X,shapeFlag:ee}=v;if(X>0){if(X&128){De(L,Y,P,C,A,D,j,T,F);return}else if(X&256){Le(L,Y,P,C,A,D,j,T,F);return}}ee&8?(G&16&&U(L,A,D),Y!==L&&c(P,Y)):G&16?ee&16?De(L,Y,P,C,A,D,j,T,F):U(L,A,D,!0):(G&8&&c(P,""),ee&16&&b(Y,P,C,A,D,j,T,F))},Le=(m,v,P,C,A,D,j,T,F)=>{m=m||wn,v=v||wn;const L=m.length,G=v.length,Y=Math.min(L,G);let X;for(X=0;XG?U(m,A,D,!0,!1,Y):b(v,P,C,A,D,j,T,F,Y)},De=(m,v,P,C,A,D,j,T,F)=>{let L=0;const G=v.length;let Y=m.length-1,X=G-1;for(;L<=Y&&L<=X;){const ee=m[L],ue=v[L]=F?Mt(v[L]):ft(v[L]);if(on(ee,ue))g(ee,ue,P,null,A,D,j,T,F);else break;L++}for(;L<=Y&&L<=X;){const ee=m[Y],ue=v[X]=F?Mt(v[X]):ft(v[X]);if(on(ee,ue))g(ee,ue,P,null,A,D,j,T,F);else break;Y--,X--}if(L>Y){if(L<=X){const ee=X+1,ue=eeX)for(;L<=Y;)Ae(m[L],A,D,!0),L++;else{const ee=L,ue=L,ve=new Map;for(L=ue;L<=X;L++){const nt=v[L]=F?Mt(v[L]):ft(v[L]);nt.key!=null&&ve.set(nt.key,L)}let Se,$e=0;const ut=X-ue+1;let mn=!1,ps=0;const Bn=new Array(ut);for(L=0;L=ut){Ae(nt,A,D,!0);continue}let vt;if(nt.key!=null)vt=ve.get(nt.key);else for(Se=ue;Se<=X;Se++)if(Bn[Se-ue]===0&&on(nt,v[Se])){vt=Se;break}vt===void 0?Ae(nt,A,D,!0):(Bn[vt-ue]=L+1,vt>=ps?ps=vt:mn=!0,g(nt,v[vt],P,null,A,D,j,T,F),$e++)}const ms=mn?Zd(Bn):wn;for(Se=ms.length-1,L=ut-1;L>=0;L--){const nt=ue+L,vt=v[nt],hs=nt+1{const{el:D,type:j,transition:T,children:F,shapeFlag:L}=m;if(L&6){Ne(m.component.subTree,v,P,C);return}if(L&128){m.suspense.move(v,P,C);return}if(L&64){j.move(m,v,P,de);return}if(j===ke){r(D,v,P);for(let Y=0;YT.enter(D),A);else{const{leave:Y,delayLeave:X,afterLeave:ee}=T,ue=()=>r(D,v,P),ve=()=>{Y(D,()=>{ue(),ee&&ee()})};X?X(D,ue,ve):ve()}else r(D,v,P)},Ae=(m,v,P,C=!1,A=!1)=>{const{type:D,props:j,ref:T,children:F,dynamicChildren:L,shapeFlag:G,patchFlag:Y,dirs:X}=m;if(T!=null&&ro(T,null,P,m,!0),G&256){v.ctx.deactivate(m);return}const ee=G&1&&X,ue=!In(m);let ve;if(ue&&(ve=j&&j.onVnodeBeforeUnmount)&&st(ve,v,m),G&6)x(m.component,P,C);else{if(G&128){m.suspense.unmount(P,C);return}ee&>(m,null,v,"beforeUnmount"),G&64?m.type.remove(m,v,P,A,de,C):L&&(D!==ke||Y>0&&Y&64)?U(L,v,P,!1,!0):(D===ke&&Y&384||!A&&G&16)&&U(F,v,P),C&&ct(m)}(ue&&(ve=j&&j.onVnodeUnmounted)||ee)&&Xe(()=>{ve&&st(ve,v,m),ee&>(m,null,v,"unmounted")},P)},ct=m=>{const{type:v,el:P,anchor:C,transition:A}=m;if(v===ke){Ge(P,C);return}if(v===er){S(m);return}const D=()=>{o(P),A&&!A.persisted&&A.afterLeave&&A.afterLeave()};if(m.shapeFlag&1&&A&&!A.persisted){const{leave:j,delayLeave:T}=A,F=()=>j(P,D);T?T(m.el,D,F):F()}else D()},Ge=(m,v)=>{let P;for(;m!==v;)P=d(m),o(m),m=P;o(v)},x=(m,v,P)=>{const{bum:C,scope:A,update:D,subTree:j,um:T}=m;C&&No(C),A.stop(),D&&(D.active=!1,Ae(j,m,v,P)),T&&Xe(T,v),Xe(()=>{m.isUnmounted=!0},v),v&&v.pendingBranch&&!v.isUnmounted&&m.asyncDep&&!m.asyncResolved&&m.suspenseId===v.pendingId&&(v.deps--,v.deps===0&&v.resolve())},U=(m,v,P,C=!1,A=!1,D=0)=>{for(let j=D;jm.shapeFlag&6?q(m.component.subTree):m.shapeFlag&128?m.suspense.next():d(m.anchor||m.el),Z=(m,v,P)=>{m==null?v._vnode&&Ae(v._vnode,null,null,!0):g(v._vnode||null,m,v,null,null,null,P),Ps(),Xr(),v._vnode=m},de={p:g,um:Ae,m:Ne,r:ct,mt:$,mc:b,pc:se,pbc:N,n:q,o:e};let Pe,le;return t&&([Pe,le]=t(de)),{render:Z,hydrate:Pe,createApp:Kd(Z,Pe)}}function Qt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function xc(e,t,n=!1){const r=e.children,o=t.children;if(oe(r)&&oe(o))for(let i=0;i>1,e[n[a]]0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,s=n[i-1];i-- >0;)n[i]=s,s=t[s];return n}const Yd=e=>e.__isTeleport,ke=Symbol(void 0),xn=Symbol(void 0),ot=Symbol(void 0),er=Symbol(void 0),tr=[];let pt=null;function J(e=!1){tr.push(pt=e?null:[])}function Gd(){tr.pop(),pt=tr[tr.length-1]||null}let fr=1;function Ds(e){fr+=e}function Tc(e){return e.dynamicChildren=fr>0?pt||wn:null,Gd(),fr>0&&pt&&pt.push(e),e}function ne(e,t,n,r,o,i){return Tc(ye(e,t,n,r,o,i,!0))}function He(e,t,n,r,o){return Tc(ae(e,t,n,r,o,!0))}function oo(e){return e?e.__v_isVNode===!0:!1}function on(e,t){return e.type===t.type&&e.key===t.key}const ko="__vInternal",Lc=({key:e})=>e!=null?e:null,qr=({ref:e,ref_key:t,ref_for:n})=>e!=null?Oe(e)||Ve(e)||fe(e)?{i:Ue,r:e,k:t,f:!!n}:e:null;function ye(e,t=null,n=null,r=0,o=null,i=e===ke?0:1,s=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Lc(t),ref:t&&qr(t),scopeId:mc,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Ue};return a?(Zi(l,n),i&128&&e.normalize(l)):n&&(l.shapeFlag|=Oe(n)?8:16),fr>0&&!s&&pt&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&pt.push(l),l}const ae=Xd;function Xd(e,t=null,n=null,r=0,o=null,i=!1){if((!e||e===Ld)&&(e=ot),oo(e)){const a=zt(e,t,!0);return n&&Zi(a,n),fr>0&&!i&&pt&&(a.shapeFlag&6?pt[pt.indexOf(e)]=a:pt.push(a)),a.patchFlag|=-2,a}if(up(e)&&(e=e.__vccOpts),t){t=ep(t);let{class:a,style:l}=t;a&&!Oe(a)&&(t.class=et(a)),Te(l)&&(nc(l)&&!oe(l)&&(l=ze({},l)),t.style=_r(l))}const s=Oe(e)?1:gd(e)?128:Yd(e)?64:Te(e)?4:fe(e)?2:0;return ye(e,t,n,r,o,s,i,!0)}function ep(e){return e?nc(e)||ko in e?ze({},e):e:null}function zt(e,t,n=!1){const{props:r,ref:o,patchFlag:i,children:s}=e,a=t?pi(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Lc(a),ref:t&&t.ref?n&&o?oe(o)?o.concat(qr(t)):[o,qr(t)]:qr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ke?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&zt(e.ssContent),ssFallback:e.ssFallback&&zt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Kt(e=" ",t=0){return ae(xn,null,e,t)}function tp(e,t){const n=ae(er,null,e);return n.staticCount=t,n}function Me(e="",t=!1){return t?(J(),He(ot,null,e)):ae(ot,null,e)}function ft(e){return e==null||typeof e=="boolean"?ae(ot):oe(e)?ae(ke,null,e.slice()):typeof e=="object"?Mt(e):ae(xn,null,String(e))}function Mt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:zt(e)}function Zi(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(oe(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Zi(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(ko in t)?t._ctx=Ue:o===3&&Ue&&(Ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else fe(t)?(t={default:t,_ctx:Ue},n=32):(t=String(t),r&64?(n=16,t=[Kt(t)]):n=8);e.children=t,e.shapeFlag|=n}function pi(...e){const t={};for(let n=0;nje||Ue,Tn=e=>{je=e,e.scope.on()},fn=()=>{je&&je.scope.off(),je=null};function jc(e){return e.vnode.shapeFlag&4}let Ln=!1;function ip(e,t=!1){Ln=t;const{props:n,children:r}=e.vnode,o=jc(e);Fd(e,n,o,t),qd(e,r);const i=o?sp(e,t):void 0;return Ln=!1,i}function sp(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=rc(new Proxy(e.ctx,jd));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?lp(e):null;Tn(e),Dn();const i=Ft(r,e,0,[e.props,o]);if(Nn(),fn(),Vl(i)){if(i.then(fn,fn),t)return i.then(s=>{Ns(e,s,t)}).catch(s=>{br(s,e,0)});e.asyncDep=i}else Ns(e,i,t)}else Dc(e,t)}function Ns(e,t,n){fe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.setupState=lc(t)),Dc(e,n)}let Ms;function Dc(e,t,n){const r=e.type;if(!e.render){if(!t&&Ms&&!r.render){const o=r.template||Ji(e).template;if(o){const{isCustomElement:i,compilerOptions:s}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,u=ze(ze({isCustomElement:i,delimiters:a},s),l);r.render=Ms(o,u)}}e.render=r.render||mt}Tn(e),Dn(),Dd(e),Nn(),fn()}function ap(e){return new Proxy(e.attrs,{get(t,n){return tt(e,"get","$attrs"),t[n]}})}function lp(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=ap(e))},slots:e.slots,emit:e.emit,expose:t}}function Ao(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(lc(rc(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Xn)return Xn[n](e)},has(t,n){return n in t||n in Xn}}))}function cp(e,t=!0){return fe(e)?e.displayName||e.name:e.name||t&&e.__name}function up(e){return fe(e)&&"__vccOpts"in e}const Q=(e,t)=>sd(e,t,Ln);function he(e,t,n){const r=arguments.length;return r===2?Te(t)&&!oe(t)?oo(t)?ae(e,null,[t]):ae(e,t):ae(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&oo(n)&&(n=[n]),ae(e,t,n))}const fp=Symbol(""),dp=()=>Fe(fp),pp="3.2.47",mp="http://www.w3.org/2000/svg",sn=typeof document<"u"?document:null,$s=sn&&sn.createElement("template"),hp={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?sn.createElementNS(mp,e):sn.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>sn.createTextNode(e),createComment:e=>sn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>sn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,i){const s=n?n.previousSibling:t.lastChild;if(o&&(o===i||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===i||!(o=o.nextSibling)););else{$s.innerHTML=r?`${e}`:e;const a=$s.content;if(r){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function vp(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function gp(e,t,n){const r=e.style,o=Oe(n);if(n&&!o){if(t&&!Oe(t))for(const i in t)n[i]==null&&mi(r,i,"");for(const i in n)mi(r,i,n[i])}else{const i=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=i)}}const Hs=/\s*!important$/;function mi(e,t,n){if(oe(n))n.forEach(r=>mi(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=_p(e,t);Hs.test(n)?e.setProperty(dn(r),n.replace(Hs,""),"important"):e[r]=n}}const Fs=["Webkit","Moz","ms"],Bo={};function _p(e,t){const n=Bo[t];if(n)return n;let r=Et(t);if(r!=="filter"&&r in e)return Bo[t]=r;r=bo(r);for(let o=0;oVo||(Pp.then(()=>Vo=0),Vo=Date.now());function Ip(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;at(kp(r,n.value),t,5,[r])};return n.value=e,n.attached=Cp(),n}function kp(e,t){if(oe(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const qs=/^on[a-z]/,Ap=(e,t,n,r,o=!1,i,s,a,l)=>{t==="class"?vp(e,r,o):t==="style"?gp(e,n,r):yr(t)?ji(t)||wp(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):xp(e,t,r,o))?bp(e,t,r,i,s,a,l):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),yp(e,t,r,o))};function xp(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&qs.test(t)&&fe(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||qs.test(t)&&Oe(n)?!1:t in e}const Dt="transition",Vn="animation",$n=(e,{slots:t})=>he(gc,Tp(e),t);$n.displayName="Transition";const Nc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};$n.props=ze({},gc.props,Nc);const Zt=(e,t=[])=>{oe(e)?e.forEach(n=>n(...t)):e&&e(...t)},Us=e=>e?oe(e)?e.some(t=>t.length>1):e.length>1:!1;function Tp(e){const t={};for(const k in e)k in Nc||(t[k]=e[k]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:u=s,appearToClass:c=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,_=Lp(o),g=_&&_[0],O=_&&_[1],{onBeforeEnter:h,onEnter:E,onEnterCancelled:w,onLeave:S,onLeaveCancelled:I,onBeforeAppear:z=h,onAppear:H=E,onAppearCancelled:b=w}=t,M=(k,R,$)=>{Yt(k,R?c:a),Yt(k,R?u:s),$&&$()},N=(k,R)=>{k._isLeaving=!1,Yt(k,f),Yt(k,p),Yt(k,d),R&&R()},K=k=>(R,$)=>{const ie=k?H:E,W=()=>M(R,k,$);Zt(ie,[R,W]),zs(()=>{Yt(R,k?l:i),Nt(R,k?c:a),Us(ie)||Ks(R,r,g,W)})};return ze(t,{onBeforeEnter(k){Zt(h,[k]),Nt(k,i),Nt(k,s)},onBeforeAppear(k){Zt(z,[k]),Nt(k,l),Nt(k,u)},onEnter:K(!1),onAppear:K(!0),onLeave(k,R){k._isLeaving=!0;const $=()=>N(k,R);Nt(k,f),Dp(),Nt(k,d),zs(()=>{!k._isLeaving||(Yt(k,f),Nt(k,p),Us(S)||Ks(k,r,O,$))}),Zt(S,[k,$])},onEnterCancelled(k){M(k,!1),Zt(w,[k])},onAppearCancelled(k){M(k,!0),Zt(b,[k])},onLeaveCancelled(k){N(k),Zt(I,[k])}})}function Lp(e){if(e==null)return null;if(Te(e))return[qo(e.enter),qo(e.leave)];{const t=qo(e);return[t,t]}}function qo(e){return Of(e)}function Nt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Yt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function zs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Rp=0;function Ks(e,t,n,r){const o=e._endId=++Rp,i=()=>{o===e._endId&&r()};if(n)return setTimeout(i,n);const{type:s,timeout:a,propCount:l}=jp(e,t);if(!s)return r();const u=s+"end";let c=0;const f=()=>{e.removeEventListener(u,d),i()},d=p=>{p.target===e&&++c>=l&&f()};setTimeout(()=>{c(n[_]||"").split(", "),o=r(`${Dt}Delay`),i=r(`${Dt}Duration`),s=Ws(o,i),a=r(`${Vn}Delay`),l=r(`${Vn}Duration`),u=Ws(a,l);let c=null,f=0,d=0;t===Dt?s>0&&(c=Dt,f=s,d=i.length):t===Vn?u>0&&(c=Vn,f=u,d=l.length):(f=Math.max(s,u),c=f>0?s>u?Dt:Vn:null,d=c?c===Dt?i.length:l.length:0);const p=c===Dt&&/\b(transform|all)(,|$)/.test(r(`${Dt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:p}}function Ws(e,t){for(;e.lengthJs(n)+Js(e[r])))}function Js(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Dp(){return document.body.offsetHeight}const Np={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Mp=(e,t)=>n=>{if(!("key"in n))return;const r=dn(n.key);if(t.some(o=>o===r||Np[o]===r))return e(n)},io={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):qn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),qn(e,!0),r.enter(e)):r.leave(e,()=>{qn(e,!1)}):qn(e,t))},beforeUnmount(e,{value:t}){qn(e,t)}};function qn(e,t){e.style.display=t?e._vod:"none"}const $p=ze({patchProp:Ap},hp);let Uo,Qs=!1;function Hp(){return Uo=Qs?Uo:Jd($p),Qs=!0,Uo}const Fp=(...e)=>{const t=Hp().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Bp(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Bp(e){return Oe(e)?document.querySelector(e):e}const Vp=JSON.parse('{"base":"/fes.js/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"manifest","href":"/manifest.webmanifest"}],["link",{"rel":"icon","href":"/logo.png"}]],"locales":{"/":{"lang":"zh-CN","title":"Fes.js","description":"一个好用的前端应用解决方案"}}}');var qp=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),Up=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=qp(r);t.has(o)||(t.add(o),n.push(r))}),n},wr=e=>/^(https?:)?\/\//.test(e),zp=e=>/^mailto:/.test(e),Kp=e=>/^tel:/.test(e),Yi=e=>Object.prototype.toString.call(e)==="[object Object]",Mc=e=>e.replace(/\/$/,""),$c=e=>e.replace(/^\//,""),Hc=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const i=o.split("/").length-r.split("/").length;return i!==0?i:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"},Zs=(e,t="/")=>e.replace(/^(https?:)?\/\/[^/]*/,"").replace(new RegExp(`^${t}`),"/");const Fc={"v-8daa1a0e":ce(()=>B(()=>import("./index.html.1f2b7059.js"),[])),"v-fffb8e28":ce(()=>B(()=>import("./index.html.174811be.js"),[])),"v-0cca110a":ce(()=>B(()=>import("./builder.html.999bf635.js"),[])),"v-85fa9b2a":ce(()=>B(()=>import("./config.html.3c4760e9.js"),[])),"v-d7fa887a":ce(()=>B(()=>import("./contributing.html.8cad4b5e.js"),[])),"v-884fd4bc":ce(()=>B(()=>import("./css.html.a45df14e.js"),[])),"v-040800dc":ce(()=>B(()=>import("./directory-structure.html.15096386.js"),[])),"v-ef8c5e10":ce(()=>B(()=>import("./env.html.805df8a5.js"),[])),"v-37e1c06f":ce(()=>B(()=>import("./faq.html.f70ba546.js"),[])),"v-fb0f0066":ce(()=>B(()=>import("./getting-started.html.3b600666.js"),[])),"v-528b8b6c":ce(()=>B(()=>import("./image.html.58aa17c7.js"),[])),"v-00cf7e23":ce(()=>B(()=>import("./mock.html.9cef5d45.js"),[])),"v-1d14d5cc":ce(()=>B(()=>import("./plugin.html.0095f814.js"),[])),"v-7b96e3a4":ce(()=>B(()=>import("./public.html.848eef99.js"),[])),"v-6320961c":ce(()=>B(()=>import("./route.html.3d217616.js"),[])),"v-3dba8814":ce(()=>B(()=>import("./runtime-config.html.c81fa63e.js"),[])),"v-7b48519a":ce(()=>B(()=>import("./template.html.91640404.js"),[])),"v-4acab794":ce(()=>B(()=>import("./upgrade3.html.3629ebda.js"),[])),"v-a1a49808":ce(()=>B(()=>import("./api.html.3fadc9c0.js"),[])),"v-a951be94":ce(()=>B(()=>import("./cli.html.768b01bb.js"),[])),"v-76cd065c":ce(()=>B(()=>import("./index.html.8a34550e.js"),[])),"v-76cb52e8":ce(()=>B(()=>import("./index.html.5f811d7d.js"),[])),"v-2c05b6e0":ce(()=>B(()=>import("./index.html.c22810d3.js"),[])),"v-d61a9282":ce(()=>B(()=>import("./index.html.7417ac5c.js"),[])),"v-494b840e":ce(()=>B(()=>import("./index.html.7e2b22df.js"),[])),"v-c5618810":ce(()=>B(()=>import("./api.html.1aa2bbfa.js"),[])),"v-2fe128e7":ce(()=>B(()=>import("./access.html.2783c102.js"),[])),"v-323bda7e":ce(()=>B(()=>import("./editor.html.604dae94.js"),[])),"v-c253c956":ce(()=>B(()=>import("./enums.html.e894dfd6.js"),[])),"v-0a0e491c":ce(()=>B(()=>import("./icon.html.c524fb7f.js"),[])),"v-3cd5a4ef":ce(()=>B(()=>import("./jest.html.9bcb2ce1.js"),[])),"v-355ee23e":ce(()=>B(()=>import("./layout.html.b7ee50eb.js"),[])),"v-411c0c9e":ce(()=>B(()=>import("./locale.html.c1dcd857.js"),[])),"v-56ab05de":ce(()=>B(()=>import("./login.html.0ea4b7ad.js"),[])),"v-3c4e521e":ce(()=>B(()=>import("./model.html.3cd49de2.js"),[])),"v-6f2f6a5a":ce(()=>B(()=>import("./pinia.html.1eb91490.js"),[])),"v-b15becb0":ce(()=>B(()=>import("./qiankun.html.b3592391.js"),[])),"v-41dee210":ce(()=>B(()=>import("./request.html.f4de04c7.js"),[])),"v-5bf80046":ce(()=>B(()=>import("./sass.html.9338147b.js"),[])),"v-317f9008":ce(()=>B(()=>import("./swc.html.0bd38fed.js"),[])),"v-5f4c684e":ce(()=>B(()=>import("./vuex.html.6d094802.js"),[])),"v-1c0edac3":ce(()=>B(()=>import("./watermark.html.1d51b560.js"),[])),"v-392e58ee":ce(()=>B(()=>import("./windicss.html.17e40609.js"),[])),"v-3706649a":ce(()=>B(()=>import("./404.html.ef11e76b.js"),[]))};var Ot=(e={})=>e;function Gi(e,t,n){var r,o,i;t===void 0&&(t=50),n===void 0&&(n={});var s=(r=n.isImmediate)!=null&&r,a=(o=n.callback)!=null&&o,l=n.maxWait,u=Date.now(),c=[];function f(){if(l!==void 0){var p=Date.now()-u;if(p+t>=l)return l-p}return t}var d=function(){var p=[].slice.call(arguments),_=this;return new Promise(function(g,O){var h=s&&i===void 0;if(i!==void 0&&clearTimeout(i),i=setTimeout(function(){if(i=void 0,u=Date.now(),!s){var w=e.apply(_,p);a&&a(w),c.forEach(function(S){return(0,S.resolve)(w)}),c=[]}},f()),h){var E=e.apply(_,p);return a&&a(E),g(E)}c.push({resolve:g,reject:O})})};return d.cancel=function(p){i!==void 0&&clearTimeout(i),c.forEach(function(_){return(0,_.reject)(p)}),c=[]},d}/*!
   * vue-router v4.1.6
   * (c) 2022 Eduardo San Martin Morote
   * @license MIT
@@ -7,7 +7,7 @@ Expects a CSS selector, a Node element, a NodeList or an array.
 See: https://github.com/francoischalifour/medium-zoom`)}},sh=function(t){var n=document.createElement("div");return n.classList.add("medium-zoom-overlay"),n.style.background=t,n},ah=function(t){var n=t.getBoundingClientRect(),r=n.top,o=n.left,i=n.width,s=n.height,a=t.cloneNode(),l=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,u=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return a.removeAttribute("id"),a.style.position="absolute",a.style.top=r+l+"px",a.style.left=o+u+"px",a.style.width=i+"px",a.style.height=s+"px",a.style.transform="",a},vn=function(t,n){var r=tn({bubbles:!1,cancelable:!1,detail:void 0},n);if(typeof window.CustomEvent=="function")return new CustomEvent(t,r);var o=document.createEvent("CustomEvent");return o.initCustomEvent(t,r.bubbles,r.cancelable,r.detail),o},lh=function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=window.Promise||function(k){function R(){}k(R,R)},o=function(k){var R=k.target;if(R===M){_();return}w.indexOf(R)!==-1&&g({target:R})},i=function(){if(!(I||!b.original)){var k=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(z-k)>H.scrollOffset&&setTimeout(_,150)}},s=function(k){var R=k.key||k.keyCode;(R==="Escape"||R==="Esc"||R===27)&&_()},a=function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},R=k;if(k.background&&(M.style.background=k.background),k.container&&k.container instanceof Object&&(R.container=tn({},H.container,k.container)),k.template){var $=Ur(k.template)?k.template:document.querySelector(k.template);R.template=$}return H=tn({},H,R),w.forEach(function(ie){ie.dispatchEvent(vn("medium-zoom:update",{detail:{zoom:N}}))}),N},l=function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e(tn({},H,k))},u=function(){for(var k=arguments.length,R=Array(k),$=0;$0?R.reduce(function(W,re){return[].concat(W,ha(re))},[]):w;return ie.forEach(function(W){W.classList.remove("medium-zoom-image"),W.dispatchEvent(vn("medium-zoom:detach",{detail:{zoom:N}}))}),w=w.filter(function(W){return ie.indexOf(W)===-1}),N},f=function(k,R){var $=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return w.forEach(function(ie){ie.addEventListener("medium-zoom:"+k,R,$)}),S.push({type:"medium-zoom:"+k,listener:R,options:$}),N},d=function(k,R){var $=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return w.forEach(function(ie){ie.removeEventListener("medium-zoom:"+k,R,$)}),S=S.filter(function(ie){return!(ie.type==="medium-zoom:"+k&&ie.listener.toString()===R.toString())}),N},p=function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},R=k.target,$=function(){var W={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},re=void 0,se=void 0;if(H.container)if(H.container instanceof Object)W=tn({},W,H.container),re=W.width-W.left-W.right-H.margin*2,se=W.height-W.top-W.bottom-H.margin*2;else{var Le=Ur(H.container)?H.container:document.querySelector(H.container),De=Le.getBoundingClientRect(),Ne=De.width,Ae=De.height,ct=De.left,Ge=De.top;W=tn({},W,{width:Ne,height:Ae,left:ct,top:Ge})}re=re||W.width-H.margin*2,se=se||W.height-H.margin*2;var x=b.zoomedHd||b.original,U=ma(x)?re:x.naturalWidth||re,q=ma(x)?se:x.naturalHeight||se,Z=x.getBoundingClientRect(),de=Z.top,Pe=Z.left,le=Z.width,m=Z.height,v=Math.min(Math.max(le,U),re)/le,P=Math.min(Math.max(m,q),se)/m,C=Math.min(v,P),A=(-Pe+(re-le)/2+H.margin+W.left)/C,D=(-de+(se-m)/2+H.margin+W.top)/C,j="scale("+C+") translate3d("+A+"px, "+D+"px, 0)";b.zoomed.style.transform=j,b.zoomedHd&&(b.zoomedHd.style.transform=j)};return new r(function(ie){if(R&&w.indexOf(R)===-1){ie(N);return}var W=function Ne(){I=!1,b.zoomed.removeEventListener("transitionend",Ne),b.original.dispatchEvent(vn("medium-zoom:opened",{detail:{zoom:N}})),ie(N)};if(b.zoomed){ie(N);return}if(R)b.original=R;else if(w.length>0){var re=w;b.original=re[0]}else{ie(N);return}if(b.original.dispatchEvent(vn("medium-zoom:open",{detail:{zoom:N}})),z=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,I=!0,b.zoomed=ah(b.original),document.body.appendChild(M),H.template){var se=Ur(H.template)?H.template:document.querySelector(H.template);b.template=document.createElement("div"),b.template.appendChild(se.content.cloneNode(!0)),document.body.appendChild(b.template)}if(b.original.parentElement&&b.original.parentElement.tagName==="PICTURE"&&b.original.currentSrc&&(b.zoomed.src=b.original.currentSrc),document.body.appendChild(b.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),b.original.classList.add("medium-zoom-image--hidden"),b.zoomed.classList.add("medium-zoom-image--opened"),b.zoomed.addEventListener("click",_),b.zoomed.addEventListener("transitionend",W),b.original.getAttribute("data-zoom-src")){b.zoomedHd=b.zoomed.cloneNode(),b.zoomedHd.removeAttribute("srcset"),b.zoomedHd.removeAttribute("sizes"),b.zoomedHd.removeAttribute("loading"),b.zoomedHd.src=b.zoomed.getAttribute("data-zoom-src"),b.zoomedHd.onerror=function(){clearInterval(Le),console.warn("Unable to reach the zoom image target "+b.zoomedHd.src),b.zoomedHd=null,$()};var Le=setInterval(function(){b.zoomedHd.complete&&(clearInterval(Le),b.zoomedHd.classList.add("medium-zoom-image--opened"),b.zoomedHd.addEventListener("click",_),document.body.appendChild(b.zoomedHd),$())},10)}else if(b.original.hasAttribute("srcset")){b.zoomedHd=b.zoomed.cloneNode(),b.zoomedHd.removeAttribute("sizes"),b.zoomedHd.removeAttribute("loading");var De=b.zoomedHd.addEventListener("load",function(){b.zoomedHd.removeEventListener("load",De),b.zoomedHd.classList.add("medium-zoom-image--opened"),b.zoomedHd.addEventListener("click",_),document.body.appendChild(b.zoomedHd),$()})}else $()})},_=function(){return new r(function(k){if(I||!b.original){k(N);return}var R=function $(){b.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(b.zoomed),b.zoomedHd&&document.body.removeChild(b.zoomedHd),document.body.removeChild(M),b.zoomed.classList.remove("medium-zoom-image--opened"),b.template&&document.body.removeChild(b.template),I=!1,b.zoomed.removeEventListener("transitionend",$),b.original.dispatchEvent(vn("medium-zoom:closed",{detail:{zoom:N}})),b.original=null,b.zoomed=null,b.zoomedHd=null,b.template=null,k(N)};I=!0,document.body.classList.remove("medium-zoom--opened"),b.zoomed.style.transform="",b.zoomedHd&&(b.zoomedHd.style.transform=""),b.template&&(b.template.style.transition="opacity 150ms",b.template.style.opacity=0),b.original.dispatchEvent(vn("medium-zoom:close",{detail:{zoom:N}})),b.zoomed.addEventListener("transitionend",R)})},g=function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},R=k.target;return b.original?_():p({target:R})},O=function(){return H},h=function(){return w},E=function(){return b.original},w=[],S=[],I=!1,z=0,H=n,b={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(t)==="[object Object]"?H=t:(t||typeof t=="string")&&u(t),H=tn({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},H);var M=sh(H.background);document.addEventListener("click",o),document.addEventListener("keyup",s),document.addEventListener("scroll",i),window.addEventListener("resize",_);var N={open:p,close:_,toggle:g,update:a,clone:l,attach:u,detach:c,on:f,off:d,getOptions:O,getImages:h,getZoomedImage:E};return N};function ch(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document>"u")){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",n==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var uh=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";ch(uh);const fh=lh,dh=Symbol("mediumZoom");const ph=".theme-default-content > img, .theme-default-content :not(a) > img",mh={},hh=300,vh=Ot({enhance({app:e,router:t}){const n=fh(mh);n.refresh=(r=ph)=>{n.detach(),n.attach(r)},e.provide(dh,n),t.afterEach(()=>{setTimeout(()=>n.refresh(),hh)})}});/**
  * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
  * @license MIT
- */const ge={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=ge.isStarted();e=Jo(e,ge.settings.minimum,1),ge.status=e===1?null:e;const n=ge.render(!t),r=n.querySelector(ge.settings.barSelector),o=ge.settings.speed,i=ge.settings.easing;return n.offsetWidth,gh(s=>{jr(r,{transform:"translate3d("+va(e)+"%,0,0)",transition:"all "+o+"ms "+i}),e===1?(jr(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){jr(n,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){ge.remove(),s()},o)},o)):setTimeout(()=>s(),o)}),ge},isStarted:()=>typeof ge.status=="number",start:()=>{ge.status||ge.set(0);const e=()=>{setTimeout(()=>{!ge.status||(ge.trickle(),e())},ge.settings.trickleSpeed)};return ge.settings.trickle&&e(),ge},done:e=>!e&&!ge.status?ge:ge.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=ge.status;return t?(typeof e!="number"&&(e=(1-t)*Jo(Math.random()*t,.1,.95)),t=Jo(t+e,0,.994),ge.set(t)):ge.start()},trickle:()=>ge.inc(Math.random()*ge.settings.trickleRate),render:e=>{if(ge.isRendered())return document.getElementById("nprogress");ga(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=ge.settings.template;const n=t.querySelector(ge.settings.barSelector),r=e?"-100":va(ge.status||0),o=document.querySelector(ge.settings.parent);return jr(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),o!==document.body&&ga(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{_a(document.documentElement,"nprogress-busy"),_a(document.querySelector(ge.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&_h(e)},isRendered:()=>!!document.getElementById("nprogress")},Jo=(e,t,n)=>en?n:e,va=e=>(-1+e)*100,gh=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),jr=function(){const e=["Webkit","O","Moz","ms"],t={};function n(s){return s.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(a,l){return l.toUpperCase()})}function r(s){const a=document.body.style;if(s in a)return s;let l=e.length;const u=s.charAt(0).toUpperCase()+s.slice(1);let c;for(;l--;)if(c=e[l]+u,c in a)return c;return s}function o(s){return s=n(s),t[s]||(t[s]=r(s))}function i(s,a,l){a=o(a),s.style[a]=l}return function(s,a){for(const l in a){const u=a[l];u!==void 0&&Object.prototype.hasOwnProperty.call(a,l)&&i(s,l,u)}}}(),Gc=(e,t)=>(typeof e=="string"?e:ts(e)).indexOf(" "+t+" ")>=0,ga=(e,t)=>{const n=ts(e),r=n+t;Gc(n,t)||(e.className=r.substring(1))},_a=(e,t)=>{const n=ts(e);if(!Gc(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},ts=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),_h=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const yh=()=>{Ye(()=>{const e=pn(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||ge.start()}),e.afterEach(n=>{t.add(n.path),ge.done()})})},bh=Ot({setup(){yh()}}),Eh=JSON.parse(`{"logo":"/logo.png","repo":"WeBankFinTech/fes.js","docsDir":"docs","docsBranch":"next","locales":{"/":{"navbar":[{"text":"指南","link":"/guide/"},{"text":"编译时配置","link":"/reference/config/"},{"text":"API","link":"/reference/api/"},{"text":"插件","link":"/reference/plugin/"},{"text":"CLI","link":"/reference/cli/"},{"text":"v3.0.4","children":[{"text":"v2.0","link":"https://fesjs.mumblefe.cn/2.0"},{"text":"v1.0","link":"https://fesjs.mumblefe.cn/1.0"}]},{"text":"了解更多","children":[{"text":"更新日志","link":"https://github.com/WeBankFinTech/fes.js/blob/next/CHANGELOG.md"},{"text":"fes-design","link":"http://fes-design.mumblefe.cn/"}]}],"selectLanguageName":"简体中文","selectLanguageText":"选择语言","selectLanguageAriaLabel":"选择语言","sidebar":{"/guide/":[{"text":"介绍","children":["/guide/README.md","/guide/getting-started.md"]},{"text":"基础","children":["/guide/directory-structure.md","/guide/builder.md","/guide/config.md","/guide/runtime-config.md","/guide/env.md","/guide/route.md","/guide/plugin.md","/guide/template.md","/guide/mock.md","/guide/upgrade3.md"]},{"text":"样式和资源文件","children":["/guide/image.md","/guide/css.md","/guide/public.md"]},"/guide/contributing.md","/guide/faq.md"],"/reference/config/":["/reference/config/README.md"],"/reference/api/":["/reference/api/README.md"],"/reference/plugin/":["/reference/plugin/README.md",{"text":"Plugins","children":["/reference/plugin/plugins/access.md","/reference/plugin/plugins/enums.md","/reference/plugin/plugins/icon.md","/reference/plugin/plugins/jest.md","/reference/plugin/plugins/layout.md","/reference/plugin/plugins/locale.md","/reference/plugin/plugins/model.md","/reference/plugin/plugins/request.md","/reference/plugin/plugins/vuex.md","/reference/plugin/plugins/qiankun.md","/reference/plugin/plugins/windicss.md","/reference/plugin/plugins/sass.md","/reference/plugin/plugins/editor.md","/reference/plugin/plugins/pinia.md","/reference/plugin/plugins/watermark.md","/reference/plugin/plugins/login.md","/reference/plugin/plugins/swc.md"]},{"text":"插件开发","children":["/reference/plugin/dev/README.md","/reference/plugin/dev/api.md"]}],"/reference/cli/":["/reference/cli/README.md"]},"editLinkText":"在 GitHub 上编辑此页","lastUpdatedText":"上次更新","contributorsText":"贡献者","tip":"提示","warning":"注意","danger":"警告","notFound":["这里什么都没有","我们怎么到这来了?","这是一个 404 页面","看起来我们进入了错误的链接"],"backToHome":"返回首页","openInNewWindow":"在新窗口打开"}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebar":"auto","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),Oh=Ce(Eh),wh=()=>Oh,Xc=Symbol(""),Sh=()=>{const e=Fe(Xc);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},Ph=(e,t)=>{var n;return{...e,...(n=e.locales)==null?void 0:n[t]}},Ch=Ot({enhance({app:e}){const t=wh(),n=e._context.provides[cs],r=Q(()=>Ph(t.value,n.value));e.provide(Xc,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}}),Ih=me({__name:"Badge",props:{type:{type:String,required:!1,default:"tip"},text:{type:String,required:!1,default:""},vertical:{type:String,required:!1,default:void 0}},setup(e){return(t,n)=>(J(),ne("span",{class:et(["badge",e.type]),style:_r({verticalAlign:e.vertical})},[Ie(t.$slots,"default",{},()=>[Kt(Be(e.text),1)])],6))}}),Re=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},kh=Re(Ih,[["__file","Badge.vue"]]),Ah=me({name:"CodeGroup",setup(e,{slots:t}){const n=Ce(-1),r=Ce([]),o=(a=n.value)=>{a{a>0?n.value=a-1:n.value=r.value.length-1,r.value[n.value].focus()},s=(a,l)=>{a.key===" "||a.key==="Enter"?(a.preventDefault(),n.value=l):a.key==="ArrowRight"?(a.preventDefault(),o(l)):a.key==="ArrowLeft"&&(a.preventDefault(),i(l))};return()=>{var l;const a=(((l=t.default)==null?void 0:l.call(t))||[]).filter(u=>u.type.name==="CodeGroupItem").map(u=>(u.props===null&&(u.props={}),u));return a.length===0?null:(n.value<0||n.value>a.length-1?(n.value=a.findIndex(u=>u.props.active===""||u.props.active===!0),n.value===-1&&(n.value=0)):a.forEach((u,c)=>{u.props.active=c===n.value}),he("div",{class:"code-group"},[he("div",{class:"code-group__nav"},he("ul",{class:"code-group__ul"},a.map((u,c)=>{const f=c===n.value;return he("li",{class:"code-group__li"},he("button",{ref:d=>{d&&(r.value[c]=d)},class:{"code-group__nav-tab":!0,"code-group__nav-tab-active":f},ariaPressed:f,ariaExpanded:f,onClick:()=>n.value=c,onKeydown:d=>s(d,c)},u.props.title))}))),a]))}}}),xh=["aria-selected"],Th=me({name:"CodeGroupItem"}),Lh=me({...Th,props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},setup(e){return(t,n)=>(J(),ne("div",{class:et(["code-group-item",{"code-group-item__active":e.active}]),"aria-selected":e.active},[Ie(t.$slots,"default")],10,xh))}}),Rh=Re(Lh,[["__file","CodeGroupItem.vue"]]);var ya;const eu=typeof window<"u",jh=e=>typeof e=="function",Dh=e=>typeof e=="string",Nh=()=>{};eu&&((ya=window==null?void 0:window.navigator)==null?void 0:ya.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function pr(e){return typeof e=="function"?e():V(e)}function Mh(e,t){function n(...r){return new Promise((o,i)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(i)})}return n}const tu=e=>e();function $h(e=tu){const t=Ce(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...i)=>{t.value&&e(...i)};return{isActive:Oo(t),pause:n,resume:r,eventFilter:o}}function Hh(e){return e}function nu(e){return zl()?(Cf(e),!0):!1}function Fh(e){return typeof e=="function"?Q(e):Ce(e)}function Bh(e,t=!0){Rc()?Ye(e):t?e():Er(e)}function Vh(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=Ve(e),i=Ce(e);function s(a){if(arguments.length)return i.value=a,i.value;{const l=pr(n);return i.value=i.value===l?pr(r):l,i.value}}return o?s:[i,s]}var ba=Object.getOwnPropertySymbols,qh=Object.prototype.hasOwnProperty,Uh=Object.prototype.propertyIsEnumerable,zh=(e,t)=>{var n={};for(var r in e)qh.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ba)for(var r of ba(e))t.indexOf(r)<0&&Uh.call(e,r)&&(n[r]=e[r]);return n};function Kh(e,t,n={}){const r=n,{eventFilter:o=tu}=r,i=zh(r,["eventFilter"]);return lt(e,Mh(o,t),i)}var Wh=Object.defineProperty,Jh=Object.defineProperties,Qh=Object.getOwnPropertyDescriptors,ao=Object.getOwnPropertySymbols,ru=Object.prototype.hasOwnProperty,ou=Object.prototype.propertyIsEnumerable,Ea=(e,t,n)=>t in e?Wh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Zh=(e,t)=>{for(var n in t||(t={}))ru.call(t,n)&&Ea(e,n,t[n]);if(ao)for(var n of ao(t))ou.call(t,n)&&Ea(e,n,t[n]);return e},Yh=(e,t)=>Jh(e,Qh(t)),Gh=(e,t)=>{var n={};for(var r in e)ru.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ao)for(var r of ao(e))t.indexOf(r)<0&&ou.call(e,r)&&(n[r]=e[r]);return n};function Xh(e,t,n={}){const r=n,{eventFilter:o}=r,i=Gh(r,["eventFilter"]),{eventFilter:s,pause:a,resume:l,isActive:u}=$h(o);return{stop:Kh(e,t,Yh(Zh({},i),{eventFilter:s})),pause:a,resume:l,isActive:u}}function ev(e){var t;const n=pr(e);return(t=n==null?void 0:n.$el)!=null?t:n}const lo=eu?window:void 0;function Oa(...e){let t,n,r,o;if(Dh(e[0])||Array.isArray(e[0])?([n,r,o]=e,t=lo):[t,n,r,o]=e,!t)return Nh;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const i=[],s=()=>{i.forEach(c=>c()),i.length=0},a=(c,f,d,p)=>(c.addEventListener(f,d,p),()=>c.removeEventListener(f,d,p)),l=lt(()=>[ev(t),pr(o)],([c,f])=>{s(),c&&i.push(...n.flatMap(d=>r.map(p=>a(c,d,p,f))))},{immediate:!0,flush:"post"}),u=()=>{l(),s()};return nu(u),u}function tv(e,t=!1){const n=Ce(),r=()=>n.value=Boolean(e());return r(),Bh(r,t),n}function nv(e,t={}){const{window:n=lo}=t,r=tv(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const i=Ce(!1),s=()=>{!o||("removeEventListener"in o?o.removeEventListener("change",a):o.removeListener(a))},a=()=>{!r.value||(s(),o=n.matchMedia(Fh(e).value),i.value=o.matches,"addEventListener"in o?o.addEventListener("change",a):o.addListener(a))};return _d(a),nu(()=>s()),i}const _i=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},yi="__vueuse_ssr_handlers__";_i[yi]=_i[yi]||{};const rv=_i[yi];function ov(e,t){return rv[e]||t}function iv(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}var sv=Object.defineProperty,wa=Object.getOwnPropertySymbols,av=Object.prototype.hasOwnProperty,lv=Object.prototype.propertyIsEnumerable,Sa=(e,t,n)=>t in e?sv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pa=(e,t)=>{for(var n in t||(t={}))av.call(t,n)&&Sa(e,n,t[n]);if(wa)for(var n of wa(t))lv.call(t,n)&&Sa(e,n,t[n]);return e};const cv={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ca="vueuse-storage";function uv(e,t,n,r={}){var o;const{flush:i="pre",deep:s=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:c,window:f=lo,eventFilter:d,onError:p=b=>{console.error(b)}}=r,_=(c?sc:Ce)(t);if(!n)try{n=ov("getDefaultStorage",()=>{var b;return(b=lo)==null?void 0:b.localStorage})()}catch(b){p(b)}if(!n)return _;const g=pr(t),O=iv(g),h=(o=r.serializer)!=null?o:cv[O],{pause:E,resume:w}=Xh(_,()=>S(_.value),{flush:i,deep:s,eventFilter:d});return f&&a&&(Oa(f,"storage",H),Oa(f,Ca,z)),H(),_;function S(b){try{if(b==null)n.removeItem(e);else{const M=h.write(b),N=n.getItem(e);N!==M&&(n.setItem(e,M),f&&f.dispatchEvent(new CustomEvent(Ca,{detail:{key:e,oldValue:N,newValue:M,storageArea:n}})))}}catch(M){p(M)}}function I(b){const M=b?b.newValue:n.getItem(e);if(M==null)return l&&g!==null&&n.setItem(e,h.write(g)),g;if(!b&&u){const N=h.read(M);return jh(u)?u(N,g):O==="object"&&!Array.isArray(N)?Pa(Pa({},g),N):N}else return typeof M!="string"?M:h.read(M)}function z(b){H(b.detail)}function H(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){_.value=g;return}if(!(b&&b.key!==e)){E();try{_.value=I(b)}catch(M){p(M)}finally{b?Er(w):w()}}}}}function fv(e){return nv("(prefers-color-scheme: dark)",e)}var Ia;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Ia||(Ia={}));var dv=Object.defineProperty,ka=Object.getOwnPropertySymbols,pv=Object.prototype.hasOwnProperty,mv=Object.prototype.propertyIsEnumerable,Aa=(e,t,n)=>t in e?dv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hv=(e,t)=>{for(var n in t||(t={}))pv.call(t,n)&&Aa(e,n,t[n]);if(ka)for(var n of ka(t))mv.call(t,n)&&Aa(e,n,t[n]);return e};const vv={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};hv({linear:Hh},vv);const Qe=()=>Sh(),iu=Symbol(""),ns=()=>{const e=Fe(iu);if(!e)throw new Error("useDarkMode() is called without provider.");return e},gv=()=>{const e=Qe(),t=fv(),n=uv("vuepress-color-scheme",e.value.colorMode),r=Q({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?n.value="auto":n.value=o?"dark":"light"}});Bt(iu,r),_v(r)},_v=e=>{const t=(n=e.value)=>{const r=window==null?void 0:window.document.querySelector("html");r==null||r.classList.toggle("dark",n)};Ye(()=>{lt(e,t,{immediate:!0})}),Io(()=>t())},su=(...e)=>{const n=pn().resolve(...e),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:o}=r,i=fe(o)?o(n):o,s=Oe(i)?{path:i}:i;return su({hash:n.hash,query:n.query,params:n.params,...s})},rs=e=>{const t=su(encodeURI(e));return{text:t.meta.title||e,link:t.name==="404"?e:t.fullPath}};let Qo=null,zn=null;const yv={wait:()=>Qo,pending:()=>{Qo=new Promise(e=>zn=e)},resolve:()=>{zn==null||zn(),Qo=null,zn=null}},au=()=>yv,lu=Symbol("sidebarItems"),os=()=>{const e=Fe(lu);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},bv=()=>{const e=Qe(),t=At(),n=Q(()=>Ev(t.value,e.value));Bt(lu,n)},Ev=(e,t)=>{var o,i,s,a;const n=(i=(o=e.sidebar)!=null?o:t.sidebar)!=null?i:"auto",r=(a=(s=e.sidebarDepth)!=null?s:t.sidebarDepth)!=null?a:2;return e.home||n===!1?[]:n==="auto"?wv(r):oe(n)?cu(n,r):Yi(n)?Sv(n,r):[]},Ov=(e,t)=>({text:e.title,link:e.link,children:is(e.children,t)}),is=(e,t)=>t>0?e.map(n=>Ov(n,t-1)):[],wv=e=>{const t=Vt();return[{text:t.value.title,children:is(t.value.headers,e)}]},cu=(e,t)=>{const n=Jt(),r=Vt(),o=i=>{var a;let s;if(Oe(i)?s=rs(i):s=i,s.children)return{...s,children:s.children.map(l=>o(l))};if(s.link===n.path){const l=((a=r.value.headers[0])==null?void 0:a.level)===1?r.value.headers[0].children:r.value.headers;return{...s,children:is(l,t)}}return s};return e.map(i=>o(i))},Sv=(e,t)=>{var i;const n=Jt(),r=Hc(e,n.path),o=(i=e[r])!=null?i:[];return cu(o,t)},Pv={},Cv={class:"theme-default-content"};function Iv(e,t){const n=Tt("Content");return J(),ne("div",Cv,[ae(n)])}const kv=Re(Pv,[["render",Iv],["__file","HomeContent.vue"]]),Av={key:0,class:"features"},xv=me({__name:"HomeFeatures",setup(e){const t=At(),n=Q(()=>oe(t.value.features)?t.value.features:[]);return(r,o)=>V(n).length?(J(),ne("div",Av,[(J(!0),ne(ke,null,Ut(V(n),i=>(J(),ne("div",{key:i.title,class:"feature"},[ye("h2",null,Be(i.title),1),ye("p",null,Be(i.details),1)]))),128))])):Me("v-if",!0)}}),Tv=Re(xv,[["__file","HomeFeatures.vue"]]),Lv=["innerHTML"],Rv=["textContent"],jv=me({__name:"HomeFooter",setup(e){const t=At(),n=Q(()=>t.value.footer),r=Q(()=>t.value.footerHtml);return(o,i)=>V(n)?(J(),ne(ke,{key:0},[Me(" eslint-disable-next-line vue/no-v-html "),V(r)?(J(),ne("div",{key:0,class:"footer",innerHTML:V(n)},null,8,Lv)):(J(),ne("div",{key:1,class:"footer",textContent:Be(V(n))},null,8,Rv))],64)):Me("v-if",!0)}}),Dv=Re(jv,[["__file","HomeFooter.vue"]]),Nv=["href","rel","target","aria-label"],Mv=me({inheritAttrs:!1}),$v=me({...Mv,__name:"AutoLink",props:{item:{type:Object,required:!0}},setup(e){const t=e,n=Jt(),r=us(),{item:o}=zi(t),i=Q(()=>wr(o.value.link)),s=Q(()=>zp(o.value.link)||Kp(o.value.link)),a=Q(()=>{if(!s.value){if(o.value.target)return o.value.target;if(i.value)return"_blank"}}),l=Q(()=>a.value==="_blank"),u=Q(()=>!i.value&&!s.value&&!l.value),c=Q(()=>{if(!s.value){if(o.value.rel)return o.value.rel;if(l.value)return"noopener noreferrer"}}),f=Q(()=>o.value.ariaLabel||o.value.text),d=Q(()=>{const g=Object.keys(r.value.locales);return g.length?!g.some(O=>O===o.value.link):o.value.link!=="/"}),p=Q(()=>d.value?n.path.startsWith(o.value.link):!1),_=Q(()=>u.value?o.value.activeMatch?new RegExp(o.value.activeMatch).test(n.path):p.value:!1);return(g,O)=>{const h=Tt("RouterLink"),E=Tt("AutoLinkExternalIcon");return V(u)?(J(),He(h,pi({key:0,class:{"router-link-active":V(_)},to:V(o).link,"aria-label":V(f)},g.$attrs),{default:qe(()=>[Ie(g.$slots,"before"),Kt(" "+Be(V(o).text)+" ",1),Ie(g.$slots,"after")]),_:3},16,["class","to","aria-label"])):(J(),ne("a",pi({key:1,class:"external-link",href:V(o).link,rel:V(c),target:V(a),"aria-label":V(f)},g.$attrs),[Ie(g.$slots,"before"),Kt(" "+Be(V(o).text)+" ",1),V(l)?(J(),He(E,{key:0})):Me("v-if",!0),Ie(g.$slots,"after")],16,Nv))}}}),It=Re($v,[["__file","AutoLink.vue"]]),Hv={class:"hero"},Fv={key:0,id:"main-title"},Bv={key:1,class:"description"},Vv={key:2,class:"actions"},qv=me({__name:"HomeHero",setup(e){const t=At(),n=fs(),r=ns(),o=Q(()=>r.value&&t.value.heroImageDark!==void 0?t.value.heroImageDark:t.value.heroImage),i=Q(()=>t.value.heroAlt||a.value||"hero"),s=Q(()=>t.value.heroHeight||280),a=Q(()=>t.value.heroText===null?null:t.value.heroText||n.value.title||"Hello"),l=Q(()=>t.value.tagline===null?null:t.value.tagline||n.value.description||"Welcome to your VuePress site"),u=Q(()=>oe(t.value.actions)?t.value.actions.map(({text:f,link:d,type:p="primary"})=>({text:f,link:d,type:p})):[]),c=()=>{if(!o.value)return null;const f=he("img",{src:jo(o.value),alt:i.value,height:s.value});return t.value.heroImageDark===void 0?f:he(ds,()=>f)};return(f,d)=>(J(),ne("header",Hv,[ae(c),V(a)?(J(),ne("h1",Fv,Be(V(a)),1)):Me("v-if",!0),V(l)?(J(),ne("p",Bv,Be(V(l)),1)):Me("v-if",!0),V(u).length?(J(),ne("p",Vv,[(J(!0),ne(ke,null,Ut(V(u),p=>(J(),He(It,{key:p.text,class:et(["action-button",[p.type]]),item:p},null,8,["class","item"]))),128))])):Me("v-if",!0)]))}}),Uv=Re(qv,[["__file","HomeHero.vue"]]),zv={class:"home"},Kv=me({__name:"Home",setup(e){return(t,n)=>(J(),ne("main",zv,[ae(Uv),ae(Tv),ae(kv),ae(Dv)]))}}),Wv=Re(Kv,[["__file","Home.vue"]]),Jv=me({__name:"NavbarBrand",setup(e){const t=Fn(),n=fs(),r=Qe(),o=ns(),i=Q(()=>r.value.home||t.value),s=Q(()=>n.value.title),a=Q(()=>o.value&&r.value.logoDark!==void 0?r.value.logoDark:r.value.logo),l=()=>{if(!a.value)return null;const u=he("img",{class:"logo",src:jo(a.value),alt:s.value});return r.value.logoDark===void 0?u:he(ds,()=>u)};return(u,c)=>{const f=Tt("RouterLink");return J(),He(f,{to:V(i)},{default:qe(()=>[ae(l),V(s)?(J(),ne("span",{key:0,class:et(["site-name",{"can-hide":V(a)}])},Be(V(s)),3)):Me("v-if",!0)]),_:1},8,["to"])}}}),Qv=Re(Jv,[["__file","NavbarBrand.vue"]]),Zv=me({__name:"DropdownTransition",setup(e){const t=r=>{r.style.height=r.scrollHeight+"px"},n=r=>{r.style.height=""};return(r,o)=>(J(),He($n,{name:"dropdown",onEnter:t,onAfterEnter:n,onBeforeLeave:t},{default:qe(()=>[Ie(r.$slots,"default")]),_:3}))}}),uu=Re(Zv,[["__file","DropdownTransition.vue"]]),Yv=["aria-label"],Gv={class:"title"},Xv=ye("span",{class:"arrow down"},null,-1),eg=["aria-label"],tg={class:"title"},ng={class:"navbar-dropdown"},rg={class:"navbar-dropdown-subtitle"},og={key:1},ig={class:"navbar-dropdown-subitem-wrapper"},sg=me({__name:"NavbarDropdown",props:{item:{type:Object,required:!0}},setup(e){const t=e,{item:n}=zi(t),r=Q(()=>n.value.ariaLabel||n.value.text),o=Ce(!1),i=Jt();lt(()=>i.path,()=>{o.value=!1});const s=l=>{l.detail===0?o.value=!o.value:o.value=!1},a=(l,u)=>u[u.length-1]===l;return(l,u)=>(J(),ne("div",{class:et(["navbar-dropdown-wrapper",{open:o.value}])},[ye("button",{class:"navbar-dropdown-title",type:"button","aria-label":V(r),onClick:s},[ye("span",Gv,Be(V(n).text),1),Xv],8,Yv),ye("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":V(r),onClick:u[0]||(u[0]=c=>o.value=!o.value)},[ye("span",tg,Be(V(n).text),1),ye("span",{class:et(["arrow",o.value?"down":"right"])},null,2)],8,eg),ae(uu,null,{default:qe(()=>[to(ye("ul",ng,[(J(!0),ne(ke,null,Ut(V(n).children,c=>(J(),ne("li",{key:c.text,class:"navbar-dropdown-item"},[c.children?(J(),ne(ke,{key:0},[ye("h4",rg,[c.link?(J(),He(It,{key:0,item:c,onFocusout:f=>a(c,V(n).children)&&c.children.length===0&&(o.value=!1)},null,8,["item","onFocusout"])):(J(),ne("span",og,Be(c.text),1))]),ye("ul",ig,[(J(!0),ne(ke,null,Ut(c.children,f=>(J(),ne("li",{key:f.link,class:"navbar-dropdown-subitem"},[ae(It,{item:f,onFocusout:d=>a(f,c.children)&&a(c,V(n).children)&&(o.value=!1)},null,8,["item","onFocusout"])]))),128))])],64)):(J(),He(It,{key:1,item:c,onFocusout:f=>a(c,V(n).children)&&(o.value=!1)},null,8,["item","onFocusout"]))]))),128))],512),[[io,o.value]])]),_:1})],2))}}),ag=Re(sg,[["__file","NavbarDropdown.vue"]]),xa=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),lg=(e,t)=>{if(t.hash===e)return!0;const n=xa(t.path),r=xa(e);return n===r},fu=(e,t)=>e.link&&lg(e.link,t)?!0:e.children?e.children.some(n=>fu(n,t)):!1,du=e=>!wr(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,cg={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},ug=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=du(e);return n!==null?cg[n]:null},fg=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const i=ug({docsRepo:e,editLinkPattern:o});return i?i.replace(/:repo/,wr(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,$c(`${Mc(n)}/${r}`)):null},dg={key:0,class:"navbar-items"},pg=me({__name:"NavbarItems",setup(e){const t=()=>{const c=pn(),f=Fn(),d=fs(),p=Qe();return Q(()=>{var w,S,I;const _=Object.keys(d.value.locales);if(_.length<2)return[];const g=c.currentRoute.value.path,O=c.currentRoute.value.fullPath,h=c.currentRoute.value.hash;return[{text:(w=p.value.selectLanguageText)!=null?w:"unknown language",ariaLabel:(I=(S=p.value.selectLanguageAriaLabel)!=null?S:p.value.selectLanguageText)!=null?I:"unknown language",children:_.map(z=>{var k,R,$,ie,W,re;const H=(R=(k=d.value.locales)==null?void 0:k[z])!=null?R:{},b=(ie=($=p.value.locales)==null?void 0:$[z])!=null?ie:{},M=`${H.lang}`,N=(W=b.selectLanguageName)!=null?W:M;let K;if(M===d.value.lang)K=O;else{const se=g.replace(f.value,z);c.getRoutes().some(Le=>Le.path===se)?K=`${se}${h}`:K=(re=b.home)!=null?re:z}return{text:N,link:K}})}]})},n=()=>{const c=Qe(),f=Q(()=>c.value.repo),d=Q(()=>f.value?du(f.value):null),p=Q(()=>f.value&&!wr(f.value)?`https://github.com/${f.value}`:f.value),_=Q(()=>p.value?c.value.repoLabel?c.value.repoLabel:d.value===null?"Source":d.value:null);return Q(()=>!p.value||!_.value?[]:[{text:_.value,link:p.value}])},r=c=>Oe(c)?rs(c):c.children?{...c,children:c.children.map(r)}:c,o=()=>{const c=Qe();return Q(()=>(c.value.navbar||[]).map(r))},i=Ce(!1),s=o(),a=t(),l=n(),u=Q(()=>[...s.value,...a.value,...l.value]);return Ye(()=>{const f=()=>{window.innerWidth<719?i.value=!0:i.value=!1};f(),window.addEventListener("resize",f,!1),window.addEventListener("orientationchange",f,!1)}),(c,f)=>V(u).length?(J(),ne("nav",dg,[(J(!0),ne(ke,null,Ut(V(u),d=>(J(),ne("div",{key:d.text,class:"navbar-item"},[d.children?(J(),He(ag,{key:0,item:d,class:et(i.value?"mobile":"")},null,8,["item","class"])):(J(),He(It,{key:1,item:d},null,8,["item"]))]))),128))])):Me("v-if",!0)}}),pu=Re(pg,[["__file","NavbarItems.vue"]]),mg=["title"],hg={class:"icon",focusable:"false",viewBox:"0 0 32 32"},vg=tp('',9),gg=[vg],_g={class:"icon",focusable:"false",viewBox:"0 0 32 32"},yg=ye("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1),bg=[yg],Eg=me({__name:"ToggleColorModeButton",setup(e){const t=Qe(),n=ns(),r=()=>{n.value=!n.value};return(o,i)=>(J(),ne("button",{class:"toggle-color-mode-button",title:V(t).toggleColorMode,onClick:r},[to((J(),ne("svg",hg,gg,512)),[[io,!V(n)]]),to((J(),ne("svg",_g,bg,512)),[[io,V(n)]])],8,mg))}}),Og=Re(Eg,[["__file","ToggleColorModeButton.vue"]]),wg=["title"],Sg=ye("div",{class:"icon","aria-hidden":"true"},[ye("span"),ye("span"),ye("span")],-1),Pg=[Sg],Cg=me({__name:"ToggleSidebarButton",emits:["toggle"],setup(e){const t=Qe();return(n,r)=>(J(),ne("div",{class:"toggle-sidebar-button",title:V(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:r[0]||(r[0]=o=>n.$emit("toggle"))},Pg,8,wg))}}),Ig=Re(Cg,[["__file","ToggleSidebarButton.vue"]]),kg=me({__name:"Navbar",emits:["toggle-sidebar"],setup(e){const t=Qe(),n=Ce(null),r=Ce(null),o=Ce(0),i=Q(()=>o.value?{maxWidth:o.value+"px"}:{});Ye(()=>{const l=s(n.value,"paddingLeft")+s(n.value,"paddingRight"),u=()=>{var c;window.innerWidth<719?o.value=0:o.value=n.value.offsetWidth-l-(((c=r.value)==null?void 0:c.offsetWidth)||0)};u(),window.addEventListener("resize",u,!1),window.addEventListener("orientationchange",u,!1)});function s(a,l){var f,d,p;const u=(p=(d=(f=a==null?void 0:a.ownerDocument)==null?void 0:f.defaultView)==null?void 0:d.getComputedStyle(a,null))==null?void 0:p[l],c=Number.parseInt(u,10);return Number.isNaN(c)?0:c}return(a,l)=>{const u=Tt("NavbarSearch");return J(),ne("header",{ref_key:"navbar",ref:n,class:"navbar"},[ae(Ig,{onToggle:l[0]||(l[0]=c=>a.$emit("toggle-sidebar"))}),ye("span",{ref_key:"navbarBrand",ref:r},[ae(Qv)],512),ye("div",{class:"navbar-items-wrapper",style:_r(V(i))},[Ie(a.$slots,"before"),ae(pu,{class:"can-hide"}),Ie(a.$slots,"after"),V(t).colorModeSwitch?(J(),He(Og,{key:0})):Me("v-if",!0),ae(u)],4)],512)}}}),Ag=Re(kg,[["__file","Navbar.vue"]]),xg={class:"page-meta"},Tg={key:0,class:"meta-item edit-link"},Lg={key:1,class:"meta-item last-updated"},Rg={class:"meta-item-label"},jg={class:"meta-item-info"},Dg={key:2,class:"meta-item contributors"},Ng={class:"meta-item-label"},Mg={class:"meta-item-info"},$g=["title"],Hg=me({__name:"PageMeta",setup(e){const t=()=>{const l=Qe(),u=Vt(),c=At();return Q(()=>{var E,w,S;if(!((w=(E=c.value.editLink)!=null?E:l.value.editLink)!=null?w:!0))return null;const{repo:d,docsRepo:p=d,docsBranch:_="main",docsDir:g="",editLinkText:O}=l.value;if(!p)return null;const h=fg({docsRepo:p,docsBranch:_,docsDir:g,filePathRelative:u.value.filePathRelative,editLinkPattern:(S=c.value.editLinkPattern)!=null?S:l.value.editLinkPattern});return h?{text:O!=null?O:"Edit this page",link:h}:null})},n=()=>{const l=Qe(),u=Vt(),c=At();return Q(()=>{var p,_,g,O;return!((_=(p=c.value.lastUpdated)!=null?p:l.value.lastUpdated)!=null?_:!0)||!((g=u.value.git)!=null&&g.updatedTime)?null:new Date((O=u.value.git)==null?void 0:O.updatedTime).toLocaleString()})},r=()=>{const l=Qe(),u=Vt(),c=At();return Q(()=>{var d,p,_,g;return((p=(d=c.value.contributors)!=null?d:l.value.contributors)!=null?p:!0)&&(g=(_=u.value.git)==null?void 0:_.contributors)!=null?g:null})},o=Qe(),i=t(),s=n(),a=r();return(l,u)=>{const c=Tt("ClientOnly");return J(),ne("footer",xg,[V(i)?(J(),ne("div",Tg,[ae(It,{class:"meta-item-label",item:V(i)},null,8,["item"])])):Me("v-if",!0),V(s)?(J(),ne("div",Lg,[ye("span",Rg,Be(V(o).lastUpdatedText)+": ",1),ae(c,null,{default:qe(()=>[ye("span",jg,Be(V(s)),1)]),_:1})])):Me("v-if",!0),V(a)&&V(a).length?(J(),ne("div",Dg,[ye("span",Ng,Be(V(o).contributorsText)+": ",1),ye("span",Mg,[(J(!0),ne(ke,null,Ut(V(a),(f,d)=>(J(),ne(ke,{key:d},[ye("span",{class:"contributor",title:`email: ${f.email}`},Be(f.name),9,$g),d!==V(a).length-1?(J(),ne(ke,{key:0},[Kt(", ")],64)):Me("v-if",!0)],64))),128))])])):Me("v-if",!0)])}}}),Fg=Re(Hg,[["__file","PageMeta.vue"]]),Bg={key:0,class:"page-nav"},Vg={class:"inner"},qg={key:0,class:"prev"},Ug={key:1,class:"next"},zg=me({__name:"PageNav",setup(e){const t=l=>l===!1?null:Oe(l)?rs(l):Yi(l)?l:!1,n=(l,u,c)=>{const f=l.findIndex(d=>d.link===u);if(f!==-1){const d=l[f+c];return d!=null&&d.link?d:null}for(const d of l)if(d.children){const p=n(d.children,u,c);if(p)return p}return null},r=At(),o=os(),i=Jt(),s=Q(()=>{const l=t(r.value.prev);return l!==!1?l:n(o.value,i.path,-1)}),a=Q(()=>{const l=t(r.value.next);return l!==!1?l:n(o.value,i.path,1)});return(l,u)=>V(s)||V(a)?(J(),ne("nav",Bg,[ye("p",Vg,[V(s)?(J(),ne("span",qg,[ae(It,{item:V(s)},null,8,["item"])])):Me("v-if",!0),V(a)?(J(),ne("span",Ug,[ae(It,{item:V(a)},null,8,["item"])])):Me("v-if",!0)])])):Me("v-if",!0)}}),Kg=Re(zg,[["__file","PageNav.vue"]]),Wg={class:"page"},Jg={class:"theme-default-content"},Qg=me({__name:"Page",setup(e){return(t,n)=>{const r=Tt("Content");return J(),ne("main",Wg,[Ie(t.$slots,"top"),ye("div",Jg,[Ie(t.$slots,"content-top"),ae(r),Ie(t.$slots,"content-bottom")]),ae(Fg),ae(Kg),Ie(t.$slots,"bottom")])}}}),Zg=Re(Qg,[["__file","Page.vue"]]),Yg=["onKeydown"],Gg={class:"sidebar-item-children"},Xg=me({__name:"SidebarItem",props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(e){const t=e,{item:n,depth:r}=zi(t),o=Jt(),i=pn(),s=Q(()=>fu(n.value,o)),a=Q(()=>({"sidebar-item":!0,"sidebar-heading":r.value===0,active:s.value,collapsible:n.value.collapsible})),l=Q(()=>n.value.collapsible?s.value:!0),[u,c]=Vh(l.value),f=p=>{n.value.collapsible&&(p.preventDefault(),c())},d=i.afterEach(p=>{Er(()=>{u.value=l.value})});return Co(()=>{d()}),(p,_)=>{var O;const g=Tt("SidebarItem",!0);return J(),ne("li",null,[V(n).link?(J(),He(It,{key:0,class:et(V(a)),item:V(n)},null,8,["class","item"])):(J(),ne("p",{key:1,tabindex:"0",class:et(V(a)),onClick:f,onKeydown:Mp(f,["enter"])},[Kt(Be(V(n).text)+" ",1),V(n).collapsible?(J(),ne("span",{key:0,class:et(["arrow",V(u)?"down":"right"])},null,2)):Me("v-if",!0)],42,Yg)),(O=V(n).children)!=null&&O.length?(J(),He(uu,{key:2},{default:qe(()=>[to(ye("ul",Gg,[(J(!0),ne(ke,null,Ut(V(n).children,h=>(J(),He(g,{key:`${V(r)}${h.text}${h.link}`,item:h,depth:V(r)+1},null,8,["item","depth"]))),128))],512),[[io,V(u)]])]),_:1})):Me("v-if",!0)])}}}),e_=Re(Xg,[["__file","SidebarItem.vue"]]),t_={key:0,class:"sidebar-items"},n_=me({__name:"SidebarItems",setup(e){const t=Jt(),n=os();return Ye(()=>{lt(()=>t.hash,r=>{const o=document.querySelector(".sidebar");if(!o)return;const i=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${r}"]`);if(!i)return;const{top:s,height:a}=o.getBoundingClientRect(),{top:l,height:u}=i.getBoundingClientRect();ls+a&&i.scrollIntoView(!1)})}),(r,o)=>V(n).length?(J(),ne("ul",t_,[(J(!0),ne(ke,null,Ut(V(n),i=>(J(),He(e_,{key:`${i.text}${i.link}`,item:i},null,8,["item"]))),128))])):Me("v-if",!0)}}),r_=Re(n_,[["__file","SidebarItems.vue"]]),o_={class:"sidebar"},i_=me({__name:"Sidebar",setup(e){return(t,n)=>(J(),ne("aside",o_,[ae(pu),Ie(t.$slots,"top"),ae(r_),Ie(t.$slots,"bottom")]))}}),s_=Re(i_,[["__file","Sidebar.vue"]]),a_=me({__name:"Layout",setup(e){const t=Vt(),n=At(),r=Qe(),o=Q(()=>n.value.navbar!==!1&&r.value.navbar!==!1),i=os(),s=Ce(!1),a=O=>{s.value=typeof O=="boolean"?O:!s.value},l={x:0,y:0},u=O=>{l.x=O.changedTouches[0].clientX,l.y=O.changedTouches[0].clientY},c=O=>{const h=O.changedTouches[0].clientX-l.x,E=O.changedTouches[0].clientY-l.y;Math.abs(h)>Math.abs(E)&&Math.abs(h)>40&&(h>0&&l.x<=80?a(!0):a(!1))},f=Q(()=>[{"no-navbar":!o.value,"no-sidebar":!i.value.length,"sidebar-open":s.value},n.value.pageClass]);let d;Ye(()=>{d=pn().afterEach(()=>{a(!1)})}),Io(()=>{d()});const p=au(),_=p.resolve,g=p.pending;return(O,h)=>(J(),ne("div",{class:et(["theme-container",V(f)]),onTouchstart:u,onTouchend:c},[Ie(O.$slots,"navbar",{},()=>[V(o)?(J(),He(Ag,{key:0,onToggleSidebar:a},{before:qe(()=>[Ie(O.$slots,"navbar-before")]),after:qe(()=>[Ie(O.$slots,"navbar-after")]),_:3})):Me("v-if",!0)]),ye("div",{class:"sidebar-mask",onClick:h[0]||(h[0]=E=>a(!1))}),Ie(O.$slots,"sidebar",{},()=>[ae(s_,null,{top:qe(()=>[Ie(O.$slots,"sidebar-top")]),bottom:qe(()=>[Ie(O.$slots,"sidebar-bottom")]),_:3})]),Ie(O.$slots,"page",{},()=>[V(n).home?(J(),He(Wv,{key:0})):(J(),He($n,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:V(_),onBeforeLeave:V(g)},{default:qe(()=>[(J(),He(Zg,{key:V(t).path},{top:qe(()=>[Ie(O.$slots,"page-top")]),"content-top":qe(()=>[Ie(O.$slots,"page-content-top")]),"content-bottom":qe(()=>[Ie(O.$slots,"page-content-bottom")]),bottom:qe(()=>[Ie(O.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34))}}),l_=Re(a_,[["__file","Layout.vue"]]),c_={class:"theme-container"},u_={class:"page"},f_={class:"theme-default-content"},d_=ye("h1",null,"404",-1),p_=me({__name:"NotFound",setup(e){var a,l,u;const t=Fn(),n=Qe(),r=(a=n.value.notFound)!=null?a:["Not Found"],o=()=>r[Math.floor(Math.random()*r.length)],i=(l=n.value.home)!=null?l:t.value,s=(u=n.value.backToHome)!=null?u:"Back to home";return(c,f)=>{const d=Tt("RouterLink");return J(),ne("div",c_,[ye("main",u_,[ye("div",f_,[d_,ye("blockquote",null,Be(o()),1),ae(d,{to:V(i)},{default:qe(()=>[Kt(Be(V(s)),1)]),_:1},8,["to"])])])])}}}),m_=Re(p_,[["__file","NotFound.vue"]]);const h_=Ot({enhance({app:e,router:t}){e.component("Badge",kh),e.component("CodeGroup",Ah),e.component("CodeGroupItem",Rh),e.component("AutoLinkExternalIcon",()=>{const r=e.component("ExternalLinkIcon");return r?he(r):null}),e.component("NavbarSearch",()=>{const r=e.component("Docsearch")||e.component("SearchBox");return r?he(r):null});const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...r)=>(await au().wait(),n(...r))},setup(){gv(),bv()},layouts:{Layout:l_,NotFound:m_}});/*! @docsearch/js 3.3.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function Ta(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Ee(e){for(var t=1;t=0||(c[l]=s[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function co(e,t){return function(n){if(Array.isArray(n))return n}(e)||function(n,r){var o=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var i,s,a=[],l=!0,u=!1;try{for(o=o.call(n);!(l=(i=o.next()).done)&&(a.push(i.value),!r||a.length!==r);l=!0);}catch(c){u=!0,s=c}finally{try{l||o.return==null||o.return()}finally{if(u)throw s}}return a}}(e,t)||mu(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. + */const ge={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=ge.isStarted();e=Jo(e,ge.settings.minimum,1),ge.status=e===1?null:e;const n=ge.render(!t),r=n.querySelector(ge.settings.barSelector),o=ge.settings.speed,i=ge.settings.easing;return n.offsetWidth,gh(s=>{jr(r,{transform:"translate3d("+va(e)+"%,0,0)",transition:"all "+o+"ms "+i}),e===1?(jr(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){jr(n,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){ge.remove(),s()},o)},o)):setTimeout(()=>s(),o)}),ge},isStarted:()=>typeof ge.status=="number",start:()=>{ge.status||ge.set(0);const e=()=>{setTimeout(()=>{!ge.status||(ge.trickle(),e())},ge.settings.trickleSpeed)};return ge.settings.trickle&&e(),ge},done:e=>!e&&!ge.status?ge:ge.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=ge.status;return t?(typeof e!="number"&&(e=(1-t)*Jo(Math.random()*t,.1,.95)),t=Jo(t+e,0,.994),ge.set(t)):ge.start()},trickle:()=>ge.inc(Math.random()*ge.settings.trickleRate),render:e=>{if(ge.isRendered())return document.getElementById("nprogress");ga(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=ge.settings.template;const n=t.querySelector(ge.settings.barSelector),r=e?"-100":va(ge.status||0),o=document.querySelector(ge.settings.parent);return jr(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),o!==document.body&&ga(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{_a(document.documentElement,"nprogress-busy"),_a(document.querySelector(ge.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&_h(e)},isRendered:()=>!!document.getElementById("nprogress")},Jo=(e,t,n)=>en?n:e,va=e=>(-1+e)*100,gh=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),jr=function(){const e=["Webkit","O","Moz","ms"],t={};function n(s){return s.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(a,l){return l.toUpperCase()})}function r(s){const a=document.body.style;if(s in a)return s;let l=e.length;const u=s.charAt(0).toUpperCase()+s.slice(1);let c;for(;l--;)if(c=e[l]+u,c in a)return c;return s}function o(s){return s=n(s),t[s]||(t[s]=r(s))}function i(s,a,l){a=o(a),s.style[a]=l}return function(s,a){for(const l in a){const u=a[l];u!==void 0&&Object.prototype.hasOwnProperty.call(a,l)&&i(s,l,u)}}}(),Gc=(e,t)=>(typeof e=="string"?e:ts(e)).indexOf(" "+t+" ")>=0,ga=(e,t)=>{const n=ts(e),r=n+t;Gc(n,t)||(e.className=r.substring(1))},_a=(e,t)=>{const n=ts(e);if(!Gc(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},ts=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),_h=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const yh=()=>{Ye(()=>{const e=pn(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||ge.start()}),e.afterEach(n=>{t.add(n.path),ge.done()})})},bh=Ot({setup(){yh()}}),Eh=JSON.parse(`{"logo":"/logo.png","repo":"WeBankFinTech/fes.js","docsDir":"docs","docsBranch":"next","locales":{"/":{"navbar":[{"text":"指南","link":"/guide/"},{"text":"编译时配置","link":"/reference/config/"},{"text":"API","link":"/reference/api/"},{"text":"插件","link":"/reference/plugin/"},{"text":"CLI","link":"/reference/cli/"},{"text":"v3.0.5","children":[{"text":"v2.0","link":"https://fesjs.mumblefe.cn/2.0"},{"text":"v1.0","link":"https://fesjs.mumblefe.cn/1.0"}]},{"text":"了解更多","children":[{"text":"更新日志","link":"https://github.com/WeBankFinTech/fes.js/blob/next/CHANGELOG.md"},{"text":"fes-design","link":"http://fes-design.mumblefe.cn/"}]}],"selectLanguageName":"简体中文","selectLanguageText":"选择语言","selectLanguageAriaLabel":"选择语言","sidebar":{"/guide/":[{"text":"介绍","children":["/guide/README.md","/guide/getting-started.md"]},{"text":"基础","children":["/guide/directory-structure.md","/guide/builder.md","/guide/config.md","/guide/runtime-config.md","/guide/env.md","/guide/route.md","/guide/plugin.md","/guide/template.md","/guide/mock.md","/guide/upgrade3.md"]},{"text":"样式和资源文件","children":["/guide/image.md","/guide/css.md","/guide/public.md"]},"/guide/contributing.md","/guide/faq.md"],"/reference/config/":["/reference/config/README.md"],"/reference/api/":["/reference/api/README.md"],"/reference/plugin/":["/reference/plugin/README.md",{"text":"Plugins","children":["/reference/plugin/plugins/access.md","/reference/plugin/plugins/enums.md","/reference/plugin/plugins/icon.md","/reference/plugin/plugins/jest.md","/reference/plugin/plugins/layout.md","/reference/plugin/plugins/locale.md","/reference/plugin/plugins/model.md","/reference/plugin/plugins/request.md","/reference/plugin/plugins/vuex.md","/reference/plugin/plugins/qiankun.md","/reference/plugin/plugins/windicss.md","/reference/plugin/plugins/sass.md","/reference/plugin/plugins/editor.md","/reference/plugin/plugins/pinia.md","/reference/plugin/plugins/watermark.md","/reference/plugin/plugins/login.md","/reference/plugin/plugins/swc.md"]},{"text":"插件开发","children":["/reference/plugin/dev/README.md","/reference/plugin/dev/api.md"]}],"/reference/cli/":["/reference/cli/README.md"]},"editLinkText":"在 GitHub 上编辑此页","lastUpdatedText":"上次更新","contributorsText":"贡献者","tip":"提示","warning":"注意","danger":"警告","notFound":["这里什么都没有","我们怎么到这来了?","这是一个 404 页面","看起来我们进入了错误的链接"],"backToHome":"返回首页","openInNewWindow":"在新窗口打开"}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebar":"auto","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),Oh=Ce(Eh),wh=()=>Oh,Xc=Symbol(""),Sh=()=>{const e=Fe(Xc);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},Ph=(e,t)=>{var n;return{...e,...(n=e.locales)==null?void 0:n[t]}},Ch=Ot({enhance({app:e}){const t=wh(),n=e._context.provides[cs],r=Q(()=>Ph(t.value,n.value));e.provide(Xc,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}}),Ih=me({__name:"Badge",props:{type:{type:String,required:!1,default:"tip"},text:{type:String,required:!1,default:""},vertical:{type:String,required:!1,default:void 0}},setup(e){return(t,n)=>(J(),ne("span",{class:et(["badge",e.type]),style:_r({verticalAlign:e.vertical})},[Ie(t.$slots,"default",{},()=>[Kt(Be(e.text),1)])],6))}}),Re=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},kh=Re(Ih,[["__file","Badge.vue"]]),Ah=me({name:"CodeGroup",setup(e,{slots:t}){const n=Ce(-1),r=Ce([]),o=(a=n.value)=>{a{a>0?n.value=a-1:n.value=r.value.length-1,r.value[n.value].focus()},s=(a,l)=>{a.key===" "||a.key==="Enter"?(a.preventDefault(),n.value=l):a.key==="ArrowRight"?(a.preventDefault(),o(l)):a.key==="ArrowLeft"&&(a.preventDefault(),i(l))};return()=>{var l;const a=(((l=t.default)==null?void 0:l.call(t))||[]).filter(u=>u.type.name==="CodeGroupItem").map(u=>(u.props===null&&(u.props={}),u));return a.length===0?null:(n.value<0||n.value>a.length-1?(n.value=a.findIndex(u=>u.props.active===""||u.props.active===!0),n.value===-1&&(n.value=0)):a.forEach((u,c)=>{u.props.active=c===n.value}),he("div",{class:"code-group"},[he("div",{class:"code-group__nav"},he("ul",{class:"code-group__ul"},a.map((u,c)=>{const f=c===n.value;return he("li",{class:"code-group__li"},he("button",{ref:d=>{d&&(r.value[c]=d)},class:{"code-group__nav-tab":!0,"code-group__nav-tab-active":f},ariaPressed:f,ariaExpanded:f,onClick:()=>n.value=c,onKeydown:d=>s(d,c)},u.props.title))}))),a]))}}}),xh=["aria-selected"],Th=me({name:"CodeGroupItem"}),Lh=me({...Th,props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},setup(e){return(t,n)=>(J(),ne("div",{class:et(["code-group-item",{"code-group-item__active":e.active}]),"aria-selected":e.active},[Ie(t.$slots,"default")],10,xh))}}),Rh=Re(Lh,[["__file","CodeGroupItem.vue"]]);var ya;const eu=typeof window<"u",jh=e=>typeof e=="function",Dh=e=>typeof e=="string",Nh=()=>{};eu&&((ya=window==null?void 0:window.navigator)==null?void 0:ya.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function pr(e){return typeof e=="function"?e():V(e)}function Mh(e,t){function n(...r){return new Promise((o,i)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(i)})}return n}const tu=e=>e();function $h(e=tu){const t=Ce(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...i)=>{t.value&&e(...i)};return{isActive:Oo(t),pause:n,resume:r,eventFilter:o}}function Hh(e){return e}function nu(e){return zl()?(Cf(e),!0):!1}function Fh(e){return typeof e=="function"?Q(e):Ce(e)}function Bh(e,t=!0){Rc()?Ye(e):t?e():Er(e)}function Vh(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=Ve(e),i=Ce(e);function s(a){if(arguments.length)return i.value=a,i.value;{const l=pr(n);return i.value=i.value===l?pr(r):l,i.value}}return o?s:[i,s]}var ba=Object.getOwnPropertySymbols,qh=Object.prototype.hasOwnProperty,Uh=Object.prototype.propertyIsEnumerable,zh=(e,t)=>{var n={};for(var r in e)qh.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ba)for(var r of ba(e))t.indexOf(r)<0&&Uh.call(e,r)&&(n[r]=e[r]);return n};function Kh(e,t,n={}){const r=n,{eventFilter:o=tu}=r,i=zh(r,["eventFilter"]);return lt(e,Mh(o,t),i)}var Wh=Object.defineProperty,Jh=Object.defineProperties,Qh=Object.getOwnPropertyDescriptors,ao=Object.getOwnPropertySymbols,ru=Object.prototype.hasOwnProperty,ou=Object.prototype.propertyIsEnumerable,Ea=(e,t,n)=>t in e?Wh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Zh=(e,t)=>{for(var n in t||(t={}))ru.call(t,n)&&Ea(e,n,t[n]);if(ao)for(var n of ao(t))ou.call(t,n)&&Ea(e,n,t[n]);return e},Yh=(e,t)=>Jh(e,Qh(t)),Gh=(e,t)=>{var n={};for(var r in e)ru.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ao)for(var r of ao(e))t.indexOf(r)<0&&ou.call(e,r)&&(n[r]=e[r]);return n};function Xh(e,t,n={}){const r=n,{eventFilter:o}=r,i=Gh(r,["eventFilter"]),{eventFilter:s,pause:a,resume:l,isActive:u}=$h(o);return{stop:Kh(e,t,Yh(Zh({},i),{eventFilter:s})),pause:a,resume:l,isActive:u}}function ev(e){var t;const n=pr(e);return(t=n==null?void 0:n.$el)!=null?t:n}const lo=eu?window:void 0;function Oa(...e){let t,n,r,o;if(Dh(e[0])||Array.isArray(e[0])?([n,r,o]=e,t=lo):[t,n,r,o]=e,!t)return Nh;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const i=[],s=()=>{i.forEach(c=>c()),i.length=0},a=(c,f,d,p)=>(c.addEventListener(f,d,p),()=>c.removeEventListener(f,d,p)),l=lt(()=>[ev(t),pr(o)],([c,f])=>{s(),c&&i.push(...n.flatMap(d=>r.map(p=>a(c,d,p,f))))},{immediate:!0,flush:"post"}),u=()=>{l(),s()};return nu(u),u}function tv(e,t=!1){const n=Ce(),r=()=>n.value=Boolean(e());return r(),Bh(r,t),n}function nv(e,t={}){const{window:n=lo}=t,r=tv(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const i=Ce(!1),s=()=>{!o||("removeEventListener"in o?o.removeEventListener("change",a):o.removeListener(a))},a=()=>{!r.value||(s(),o=n.matchMedia(Fh(e).value),i.value=o.matches,"addEventListener"in o?o.addEventListener("change",a):o.addListener(a))};return _d(a),nu(()=>s()),i}const _i=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},yi="__vueuse_ssr_handlers__";_i[yi]=_i[yi]||{};const rv=_i[yi];function ov(e,t){return rv[e]||t}function iv(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}var sv=Object.defineProperty,wa=Object.getOwnPropertySymbols,av=Object.prototype.hasOwnProperty,lv=Object.prototype.propertyIsEnumerable,Sa=(e,t,n)=>t in e?sv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pa=(e,t)=>{for(var n in t||(t={}))av.call(t,n)&&Sa(e,n,t[n]);if(wa)for(var n of wa(t))lv.call(t,n)&&Sa(e,n,t[n]);return e};const cv={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ca="vueuse-storage";function uv(e,t,n,r={}){var o;const{flush:i="pre",deep:s=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:c,window:f=lo,eventFilter:d,onError:p=b=>{console.error(b)}}=r,_=(c?sc:Ce)(t);if(!n)try{n=ov("getDefaultStorage",()=>{var b;return(b=lo)==null?void 0:b.localStorage})()}catch(b){p(b)}if(!n)return _;const g=pr(t),O=iv(g),h=(o=r.serializer)!=null?o:cv[O],{pause:E,resume:w}=Xh(_,()=>S(_.value),{flush:i,deep:s,eventFilter:d});return f&&a&&(Oa(f,"storage",H),Oa(f,Ca,z)),H(),_;function S(b){try{if(b==null)n.removeItem(e);else{const M=h.write(b),N=n.getItem(e);N!==M&&(n.setItem(e,M),f&&f.dispatchEvent(new CustomEvent(Ca,{detail:{key:e,oldValue:N,newValue:M,storageArea:n}})))}}catch(M){p(M)}}function I(b){const M=b?b.newValue:n.getItem(e);if(M==null)return l&&g!==null&&n.setItem(e,h.write(g)),g;if(!b&&u){const N=h.read(M);return jh(u)?u(N,g):O==="object"&&!Array.isArray(N)?Pa(Pa({},g),N):N}else return typeof M!="string"?M:h.read(M)}function z(b){H(b.detail)}function H(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){_.value=g;return}if(!(b&&b.key!==e)){E();try{_.value=I(b)}catch(M){p(M)}finally{b?Er(w):w()}}}}}function fv(e){return nv("(prefers-color-scheme: dark)",e)}var Ia;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Ia||(Ia={}));var dv=Object.defineProperty,ka=Object.getOwnPropertySymbols,pv=Object.prototype.hasOwnProperty,mv=Object.prototype.propertyIsEnumerable,Aa=(e,t,n)=>t in e?dv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hv=(e,t)=>{for(var n in t||(t={}))pv.call(t,n)&&Aa(e,n,t[n]);if(ka)for(var n of ka(t))mv.call(t,n)&&Aa(e,n,t[n]);return e};const vv={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};hv({linear:Hh},vv);const Qe=()=>Sh(),iu=Symbol(""),ns=()=>{const e=Fe(iu);if(!e)throw new Error("useDarkMode() is called without provider.");return e},gv=()=>{const e=Qe(),t=fv(),n=uv("vuepress-color-scheme",e.value.colorMode),r=Q({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?n.value="auto":n.value=o?"dark":"light"}});Bt(iu,r),_v(r)},_v=e=>{const t=(n=e.value)=>{const r=window==null?void 0:window.document.querySelector("html");r==null||r.classList.toggle("dark",n)};Ye(()=>{lt(e,t,{immediate:!0})}),Io(()=>t())},su=(...e)=>{const n=pn().resolve(...e),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:o}=r,i=fe(o)?o(n):o,s=Oe(i)?{path:i}:i;return su({hash:n.hash,query:n.query,params:n.params,...s})},rs=e=>{const t=su(encodeURI(e));return{text:t.meta.title||e,link:t.name==="404"?e:t.fullPath}};let Qo=null,zn=null;const yv={wait:()=>Qo,pending:()=>{Qo=new Promise(e=>zn=e)},resolve:()=>{zn==null||zn(),Qo=null,zn=null}},au=()=>yv,lu=Symbol("sidebarItems"),os=()=>{const e=Fe(lu);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},bv=()=>{const e=Qe(),t=At(),n=Q(()=>Ev(t.value,e.value));Bt(lu,n)},Ev=(e,t)=>{var o,i,s,a;const n=(i=(o=e.sidebar)!=null?o:t.sidebar)!=null?i:"auto",r=(a=(s=e.sidebarDepth)!=null?s:t.sidebarDepth)!=null?a:2;return e.home||n===!1?[]:n==="auto"?wv(r):oe(n)?cu(n,r):Yi(n)?Sv(n,r):[]},Ov=(e,t)=>({text:e.title,link:e.link,children:is(e.children,t)}),is=(e,t)=>t>0?e.map(n=>Ov(n,t-1)):[],wv=e=>{const t=Vt();return[{text:t.value.title,children:is(t.value.headers,e)}]},cu=(e,t)=>{const n=Jt(),r=Vt(),o=i=>{var a;let s;if(Oe(i)?s=rs(i):s=i,s.children)return{...s,children:s.children.map(l=>o(l))};if(s.link===n.path){const l=((a=r.value.headers[0])==null?void 0:a.level)===1?r.value.headers[0].children:r.value.headers;return{...s,children:is(l,t)}}return s};return e.map(i=>o(i))},Sv=(e,t)=>{var i;const n=Jt(),r=Hc(e,n.path),o=(i=e[r])!=null?i:[];return cu(o,t)},Pv={},Cv={class:"theme-default-content"};function Iv(e,t){const n=Tt("Content");return J(),ne("div",Cv,[ae(n)])}const kv=Re(Pv,[["render",Iv],["__file","HomeContent.vue"]]),Av={key:0,class:"features"},xv=me({__name:"HomeFeatures",setup(e){const t=At(),n=Q(()=>oe(t.value.features)?t.value.features:[]);return(r,o)=>V(n).length?(J(),ne("div",Av,[(J(!0),ne(ke,null,Ut(V(n),i=>(J(),ne("div",{key:i.title,class:"feature"},[ye("h2",null,Be(i.title),1),ye("p",null,Be(i.details),1)]))),128))])):Me("v-if",!0)}}),Tv=Re(xv,[["__file","HomeFeatures.vue"]]),Lv=["innerHTML"],Rv=["textContent"],jv=me({__name:"HomeFooter",setup(e){const t=At(),n=Q(()=>t.value.footer),r=Q(()=>t.value.footerHtml);return(o,i)=>V(n)?(J(),ne(ke,{key:0},[Me(" eslint-disable-next-line vue/no-v-html "),V(r)?(J(),ne("div",{key:0,class:"footer",innerHTML:V(n)},null,8,Lv)):(J(),ne("div",{key:1,class:"footer",textContent:Be(V(n))},null,8,Rv))],64)):Me("v-if",!0)}}),Dv=Re(jv,[["__file","HomeFooter.vue"]]),Nv=["href","rel","target","aria-label"],Mv=me({inheritAttrs:!1}),$v=me({...Mv,__name:"AutoLink",props:{item:{type:Object,required:!0}},setup(e){const t=e,n=Jt(),r=us(),{item:o}=zi(t),i=Q(()=>wr(o.value.link)),s=Q(()=>zp(o.value.link)||Kp(o.value.link)),a=Q(()=>{if(!s.value){if(o.value.target)return o.value.target;if(i.value)return"_blank"}}),l=Q(()=>a.value==="_blank"),u=Q(()=>!i.value&&!s.value&&!l.value),c=Q(()=>{if(!s.value){if(o.value.rel)return o.value.rel;if(l.value)return"noopener noreferrer"}}),f=Q(()=>o.value.ariaLabel||o.value.text),d=Q(()=>{const g=Object.keys(r.value.locales);return g.length?!g.some(O=>O===o.value.link):o.value.link!=="/"}),p=Q(()=>d.value?n.path.startsWith(o.value.link):!1),_=Q(()=>u.value?o.value.activeMatch?new RegExp(o.value.activeMatch).test(n.path):p.value:!1);return(g,O)=>{const h=Tt("RouterLink"),E=Tt("AutoLinkExternalIcon");return V(u)?(J(),He(h,pi({key:0,class:{"router-link-active":V(_)},to:V(o).link,"aria-label":V(f)},g.$attrs),{default:qe(()=>[Ie(g.$slots,"before"),Kt(" "+Be(V(o).text)+" ",1),Ie(g.$slots,"after")]),_:3},16,["class","to","aria-label"])):(J(),ne("a",pi({key:1,class:"external-link",href:V(o).link,rel:V(c),target:V(a),"aria-label":V(f)},g.$attrs),[Ie(g.$slots,"before"),Kt(" "+Be(V(o).text)+" ",1),V(l)?(J(),He(E,{key:0})):Me("v-if",!0),Ie(g.$slots,"after")],16,Nv))}}}),It=Re($v,[["__file","AutoLink.vue"]]),Hv={class:"hero"},Fv={key:0,id:"main-title"},Bv={key:1,class:"description"},Vv={key:2,class:"actions"},qv=me({__name:"HomeHero",setup(e){const t=At(),n=fs(),r=ns(),o=Q(()=>r.value&&t.value.heroImageDark!==void 0?t.value.heroImageDark:t.value.heroImage),i=Q(()=>t.value.heroAlt||a.value||"hero"),s=Q(()=>t.value.heroHeight||280),a=Q(()=>t.value.heroText===null?null:t.value.heroText||n.value.title||"Hello"),l=Q(()=>t.value.tagline===null?null:t.value.tagline||n.value.description||"Welcome to your VuePress site"),u=Q(()=>oe(t.value.actions)?t.value.actions.map(({text:f,link:d,type:p="primary"})=>({text:f,link:d,type:p})):[]),c=()=>{if(!o.value)return null;const f=he("img",{src:jo(o.value),alt:i.value,height:s.value});return t.value.heroImageDark===void 0?f:he(ds,()=>f)};return(f,d)=>(J(),ne("header",Hv,[ae(c),V(a)?(J(),ne("h1",Fv,Be(V(a)),1)):Me("v-if",!0),V(l)?(J(),ne("p",Bv,Be(V(l)),1)):Me("v-if",!0),V(u).length?(J(),ne("p",Vv,[(J(!0),ne(ke,null,Ut(V(u),p=>(J(),He(It,{key:p.text,class:et(["action-button",[p.type]]),item:p},null,8,["class","item"]))),128))])):Me("v-if",!0)]))}}),Uv=Re(qv,[["__file","HomeHero.vue"]]),zv={class:"home"},Kv=me({__name:"Home",setup(e){return(t,n)=>(J(),ne("main",zv,[ae(Uv),ae(Tv),ae(kv),ae(Dv)]))}}),Wv=Re(Kv,[["__file","Home.vue"]]),Jv=me({__name:"NavbarBrand",setup(e){const t=Fn(),n=fs(),r=Qe(),o=ns(),i=Q(()=>r.value.home||t.value),s=Q(()=>n.value.title),a=Q(()=>o.value&&r.value.logoDark!==void 0?r.value.logoDark:r.value.logo),l=()=>{if(!a.value)return null;const u=he("img",{class:"logo",src:jo(a.value),alt:s.value});return r.value.logoDark===void 0?u:he(ds,()=>u)};return(u,c)=>{const f=Tt("RouterLink");return J(),He(f,{to:V(i)},{default:qe(()=>[ae(l),V(s)?(J(),ne("span",{key:0,class:et(["site-name",{"can-hide":V(a)}])},Be(V(s)),3)):Me("v-if",!0)]),_:1},8,["to"])}}}),Qv=Re(Jv,[["__file","NavbarBrand.vue"]]),Zv=me({__name:"DropdownTransition",setup(e){const t=r=>{r.style.height=r.scrollHeight+"px"},n=r=>{r.style.height=""};return(r,o)=>(J(),He($n,{name:"dropdown",onEnter:t,onAfterEnter:n,onBeforeLeave:t},{default:qe(()=>[Ie(r.$slots,"default")]),_:3}))}}),uu=Re(Zv,[["__file","DropdownTransition.vue"]]),Yv=["aria-label"],Gv={class:"title"},Xv=ye("span",{class:"arrow down"},null,-1),eg=["aria-label"],tg={class:"title"},ng={class:"navbar-dropdown"},rg={class:"navbar-dropdown-subtitle"},og={key:1},ig={class:"navbar-dropdown-subitem-wrapper"},sg=me({__name:"NavbarDropdown",props:{item:{type:Object,required:!0}},setup(e){const t=e,{item:n}=zi(t),r=Q(()=>n.value.ariaLabel||n.value.text),o=Ce(!1),i=Jt();lt(()=>i.path,()=>{o.value=!1});const s=l=>{l.detail===0?o.value=!o.value:o.value=!1},a=(l,u)=>u[u.length-1]===l;return(l,u)=>(J(),ne("div",{class:et(["navbar-dropdown-wrapper",{open:o.value}])},[ye("button",{class:"navbar-dropdown-title",type:"button","aria-label":V(r),onClick:s},[ye("span",Gv,Be(V(n).text),1),Xv],8,Yv),ye("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":V(r),onClick:u[0]||(u[0]=c=>o.value=!o.value)},[ye("span",tg,Be(V(n).text),1),ye("span",{class:et(["arrow",o.value?"down":"right"])},null,2)],8,eg),ae(uu,null,{default:qe(()=>[to(ye("ul",ng,[(J(!0),ne(ke,null,Ut(V(n).children,c=>(J(),ne("li",{key:c.text,class:"navbar-dropdown-item"},[c.children?(J(),ne(ke,{key:0},[ye("h4",rg,[c.link?(J(),He(It,{key:0,item:c,onFocusout:f=>a(c,V(n).children)&&c.children.length===0&&(o.value=!1)},null,8,["item","onFocusout"])):(J(),ne("span",og,Be(c.text),1))]),ye("ul",ig,[(J(!0),ne(ke,null,Ut(c.children,f=>(J(),ne("li",{key:f.link,class:"navbar-dropdown-subitem"},[ae(It,{item:f,onFocusout:d=>a(f,c.children)&&a(c,V(n).children)&&(o.value=!1)},null,8,["item","onFocusout"])]))),128))])],64)):(J(),He(It,{key:1,item:c,onFocusout:f=>a(c,V(n).children)&&(o.value=!1)},null,8,["item","onFocusout"]))]))),128))],512),[[io,o.value]])]),_:1})],2))}}),ag=Re(sg,[["__file","NavbarDropdown.vue"]]),xa=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),lg=(e,t)=>{if(t.hash===e)return!0;const n=xa(t.path),r=xa(e);return n===r},fu=(e,t)=>e.link&&lg(e.link,t)?!0:e.children?e.children.some(n=>fu(n,t)):!1,du=e=>!wr(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,cg={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},ug=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=du(e);return n!==null?cg[n]:null},fg=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const i=ug({docsRepo:e,editLinkPattern:o});return i?i.replace(/:repo/,wr(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,$c(`${Mc(n)}/${r}`)):null},dg={key:0,class:"navbar-items"},pg=me({__name:"NavbarItems",setup(e){const t=()=>{const c=pn(),f=Fn(),d=fs(),p=Qe();return Q(()=>{var w,S,I;const _=Object.keys(d.value.locales);if(_.length<2)return[];const g=c.currentRoute.value.path,O=c.currentRoute.value.fullPath,h=c.currentRoute.value.hash;return[{text:(w=p.value.selectLanguageText)!=null?w:"unknown language",ariaLabel:(I=(S=p.value.selectLanguageAriaLabel)!=null?S:p.value.selectLanguageText)!=null?I:"unknown language",children:_.map(z=>{var k,R,$,ie,W,re;const H=(R=(k=d.value.locales)==null?void 0:k[z])!=null?R:{},b=(ie=($=p.value.locales)==null?void 0:$[z])!=null?ie:{},M=`${H.lang}`,N=(W=b.selectLanguageName)!=null?W:M;let K;if(M===d.value.lang)K=O;else{const se=g.replace(f.value,z);c.getRoutes().some(Le=>Le.path===se)?K=`${se}${h}`:K=(re=b.home)!=null?re:z}return{text:N,link:K}})}]})},n=()=>{const c=Qe(),f=Q(()=>c.value.repo),d=Q(()=>f.value?du(f.value):null),p=Q(()=>f.value&&!wr(f.value)?`https://github.com/${f.value}`:f.value),_=Q(()=>p.value?c.value.repoLabel?c.value.repoLabel:d.value===null?"Source":d.value:null);return Q(()=>!p.value||!_.value?[]:[{text:_.value,link:p.value}])},r=c=>Oe(c)?rs(c):c.children?{...c,children:c.children.map(r)}:c,o=()=>{const c=Qe();return Q(()=>(c.value.navbar||[]).map(r))},i=Ce(!1),s=o(),a=t(),l=n(),u=Q(()=>[...s.value,...a.value,...l.value]);return Ye(()=>{const f=()=>{window.innerWidth<719?i.value=!0:i.value=!1};f(),window.addEventListener("resize",f,!1),window.addEventListener("orientationchange",f,!1)}),(c,f)=>V(u).length?(J(),ne("nav",dg,[(J(!0),ne(ke,null,Ut(V(u),d=>(J(),ne("div",{key:d.text,class:"navbar-item"},[d.children?(J(),He(ag,{key:0,item:d,class:et(i.value?"mobile":"")},null,8,["item","class"])):(J(),He(It,{key:1,item:d},null,8,["item"]))]))),128))])):Me("v-if",!0)}}),pu=Re(pg,[["__file","NavbarItems.vue"]]),mg=["title"],hg={class:"icon",focusable:"false",viewBox:"0 0 32 32"},vg=tp('',9),gg=[vg],_g={class:"icon",focusable:"false",viewBox:"0 0 32 32"},yg=ye("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1),bg=[yg],Eg=me({__name:"ToggleColorModeButton",setup(e){const t=Qe(),n=ns(),r=()=>{n.value=!n.value};return(o,i)=>(J(),ne("button",{class:"toggle-color-mode-button",title:V(t).toggleColorMode,onClick:r},[to((J(),ne("svg",hg,gg,512)),[[io,!V(n)]]),to((J(),ne("svg",_g,bg,512)),[[io,V(n)]])],8,mg))}}),Og=Re(Eg,[["__file","ToggleColorModeButton.vue"]]),wg=["title"],Sg=ye("div",{class:"icon","aria-hidden":"true"},[ye("span"),ye("span"),ye("span")],-1),Pg=[Sg],Cg=me({__name:"ToggleSidebarButton",emits:["toggle"],setup(e){const t=Qe();return(n,r)=>(J(),ne("div",{class:"toggle-sidebar-button",title:V(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:r[0]||(r[0]=o=>n.$emit("toggle"))},Pg,8,wg))}}),Ig=Re(Cg,[["__file","ToggleSidebarButton.vue"]]),kg=me({__name:"Navbar",emits:["toggle-sidebar"],setup(e){const t=Qe(),n=Ce(null),r=Ce(null),o=Ce(0),i=Q(()=>o.value?{maxWidth:o.value+"px"}:{});Ye(()=>{const l=s(n.value,"paddingLeft")+s(n.value,"paddingRight"),u=()=>{var c;window.innerWidth<719?o.value=0:o.value=n.value.offsetWidth-l-(((c=r.value)==null?void 0:c.offsetWidth)||0)};u(),window.addEventListener("resize",u,!1),window.addEventListener("orientationchange",u,!1)});function s(a,l){var f,d,p;const u=(p=(d=(f=a==null?void 0:a.ownerDocument)==null?void 0:f.defaultView)==null?void 0:d.getComputedStyle(a,null))==null?void 0:p[l],c=Number.parseInt(u,10);return Number.isNaN(c)?0:c}return(a,l)=>{const u=Tt("NavbarSearch");return J(),ne("header",{ref_key:"navbar",ref:n,class:"navbar"},[ae(Ig,{onToggle:l[0]||(l[0]=c=>a.$emit("toggle-sidebar"))}),ye("span",{ref_key:"navbarBrand",ref:r},[ae(Qv)],512),ye("div",{class:"navbar-items-wrapper",style:_r(V(i))},[Ie(a.$slots,"before"),ae(pu,{class:"can-hide"}),Ie(a.$slots,"after"),V(t).colorModeSwitch?(J(),He(Og,{key:0})):Me("v-if",!0),ae(u)],4)],512)}}}),Ag=Re(kg,[["__file","Navbar.vue"]]),xg={class:"page-meta"},Tg={key:0,class:"meta-item edit-link"},Lg={key:1,class:"meta-item last-updated"},Rg={class:"meta-item-label"},jg={class:"meta-item-info"},Dg={key:2,class:"meta-item contributors"},Ng={class:"meta-item-label"},Mg={class:"meta-item-info"},$g=["title"],Hg=me({__name:"PageMeta",setup(e){const t=()=>{const l=Qe(),u=Vt(),c=At();return Q(()=>{var E,w,S;if(!((w=(E=c.value.editLink)!=null?E:l.value.editLink)!=null?w:!0))return null;const{repo:d,docsRepo:p=d,docsBranch:_="main",docsDir:g="",editLinkText:O}=l.value;if(!p)return null;const h=fg({docsRepo:p,docsBranch:_,docsDir:g,filePathRelative:u.value.filePathRelative,editLinkPattern:(S=c.value.editLinkPattern)!=null?S:l.value.editLinkPattern});return h?{text:O!=null?O:"Edit this page",link:h}:null})},n=()=>{const l=Qe(),u=Vt(),c=At();return Q(()=>{var p,_,g,O;return!((_=(p=c.value.lastUpdated)!=null?p:l.value.lastUpdated)!=null?_:!0)||!((g=u.value.git)!=null&&g.updatedTime)?null:new Date((O=u.value.git)==null?void 0:O.updatedTime).toLocaleString()})},r=()=>{const l=Qe(),u=Vt(),c=At();return Q(()=>{var d,p,_,g;return((p=(d=c.value.contributors)!=null?d:l.value.contributors)!=null?p:!0)&&(g=(_=u.value.git)==null?void 0:_.contributors)!=null?g:null})},o=Qe(),i=t(),s=n(),a=r();return(l,u)=>{const c=Tt("ClientOnly");return J(),ne("footer",xg,[V(i)?(J(),ne("div",Tg,[ae(It,{class:"meta-item-label",item:V(i)},null,8,["item"])])):Me("v-if",!0),V(s)?(J(),ne("div",Lg,[ye("span",Rg,Be(V(o).lastUpdatedText)+": ",1),ae(c,null,{default:qe(()=>[ye("span",jg,Be(V(s)),1)]),_:1})])):Me("v-if",!0),V(a)&&V(a).length?(J(),ne("div",Dg,[ye("span",Ng,Be(V(o).contributorsText)+": ",1),ye("span",Mg,[(J(!0),ne(ke,null,Ut(V(a),(f,d)=>(J(),ne(ke,{key:d},[ye("span",{class:"contributor",title:`email: ${f.email}`},Be(f.name),9,$g),d!==V(a).length-1?(J(),ne(ke,{key:0},[Kt(", ")],64)):Me("v-if",!0)],64))),128))])])):Me("v-if",!0)])}}}),Fg=Re(Hg,[["__file","PageMeta.vue"]]),Bg={key:0,class:"page-nav"},Vg={class:"inner"},qg={key:0,class:"prev"},Ug={key:1,class:"next"},zg=me({__name:"PageNav",setup(e){const t=l=>l===!1?null:Oe(l)?rs(l):Yi(l)?l:!1,n=(l,u,c)=>{const f=l.findIndex(d=>d.link===u);if(f!==-1){const d=l[f+c];return d!=null&&d.link?d:null}for(const d of l)if(d.children){const p=n(d.children,u,c);if(p)return p}return null},r=At(),o=os(),i=Jt(),s=Q(()=>{const l=t(r.value.prev);return l!==!1?l:n(o.value,i.path,-1)}),a=Q(()=>{const l=t(r.value.next);return l!==!1?l:n(o.value,i.path,1)});return(l,u)=>V(s)||V(a)?(J(),ne("nav",Bg,[ye("p",Vg,[V(s)?(J(),ne("span",qg,[ae(It,{item:V(s)},null,8,["item"])])):Me("v-if",!0),V(a)?(J(),ne("span",Ug,[ae(It,{item:V(a)},null,8,["item"])])):Me("v-if",!0)])])):Me("v-if",!0)}}),Kg=Re(zg,[["__file","PageNav.vue"]]),Wg={class:"page"},Jg={class:"theme-default-content"},Qg=me({__name:"Page",setup(e){return(t,n)=>{const r=Tt("Content");return J(),ne("main",Wg,[Ie(t.$slots,"top"),ye("div",Jg,[Ie(t.$slots,"content-top"),ae(r),Ie(t.$slots,"content-bottom")]),ae(Fg),ae(Kg),Ie(t.$slots,"bottom")])}}}),Zg=Re(Qg,[["__file","Page.vue"]]),Yg=["onKeydown"],Gg={class:"sidebar-item-children"},Xg=me({__name:"SidebarItem",props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(e){const t=e,{item:n,depth:r}=zi(t),o=Jt(),i=pn(),s=Q(()=>fu(n.value,o)),a=Q(()=>({"sidebar-item":!0,"sidebar-heading":r.value===0,active:s.value,collapsible:n.value.collapsible})),l=Q(()=>n.value.collapsible?s.value:!0),[u,c]=Vh(l.value),f=p=>{n.value.collapsible&&(p.preventDefault(),c())},d=i.afterEach(p=>{Er(()=>{u.value=l.value})});return Co(()=>{d()}),(p,_)=>{var O;const g=Tt("SidebarItem",!0);return J(),ne("li",null,[V(n).link?(J(),He(It,{key:0,class:et(V(a)),item:V(n)},null,8,["class","item"])):(J(),ne("p",{key:1,tabindex:"0",class:et(V(a)),onClick:f,onKeydown:Mp(f,["enter"])},[Kt(Be(V(n).text)+" ",1),V(n).collapsible?(J(),ne("span",{key:0,class:et(["arrow",V(u)?"down":"right"])},null,2)):Me("v-if",!0)],42,Yg)),(O=V(n).children)!=null&&O.length?(J(),He(uu,{key:2},{default:qe(()=>[to(ye("ul",Gg,[(J(!0),ne(ke,null,Ut(V(n).children,h=>(J(),He(g,{key:`${V(r)}${h.text}${h.link}`,item:h,depth:V(r)+1},null,8,["item","depth"]))),128))],512),[[io,V(u)]])]),_:1})):Me("v-if",!0)])}}}),e_=Re(Xg,[["__file","SidebarItem.vue"]]),t_={key:0,class:"sidebar-items"},n_=me({__name:"SidebarItems",setup(e){const t=Jt(),n=os();return Ye(()=>{lt(()=>t.hash,r=>{const o=document.querySelector(".sidebar");if(!o)return;const i=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${r}"]`);if(!i)return;const{top:s,height:a}=o.getBoundingClientRect(),{top:l,height:u}=i.getBoundingClientRect();ls+a&&i.scrollIntoView(!1)})}),(r,o)=>V(n).length?(J(),ne("ul",t_,[(J(!0),ne(ke,null,Ut(V(n),i=>(J(),He(e_,{key:`${i.text}${i.link}`,item:i},null,8,["item"]))),128))])):Me("v-if",!0)}}),r_=Re(n_,[["__file","SidebarItems.vue"]]),o_={class:"sidebar"},i_=me({__name:"Sidebar",setup(e){return(t,n)=>(J(),ne("aside",o_,[ae(pu),Ie(t.$slots,"top"),ae(r_),Ie(t.$slots,"bottom")]))}}),s_=Re(i_,[["__file","Sidebar.vue"]]),a_=me({__name:"Layout",setup(e){const t=Vt(),n=At(),r=Qe(),o=Q(()=>n.value.navbar!==!1&&r.value.navbar!==!1),i=os(),s=Ce(!1),a=O=>{s.value=typeof O=="boolean"?O:!s.value},l={x:0,y:0},u=O=>{l.x=O.changedTouches[0].clientX,l.y=O.changedTouches[0].clientY},c=O=>{const h=O.changedTouches[0].clientX-l.x,E=O.changedTouches[0].clientY-l.y;Math.abs(h)>Math.abs(E)&&Math.abs(h)>40&&(h>0&&l.x<=80?a(!0):a(!1))},f=Q(()=>[{"no-navbar":!o.value,"no-sidebar":!i.value.length,"sidebar-open":s.value},n.value.pageClass]);let d;Ye(()=>{d=pn().afterEach(()=>{a(!1)})}),Io(()=>{d()});const p=au(),_=p.resolve,g=p.pending;return(O,h)=>(J(),ne("div",{class:et(["theme-container",V(f)]),onTouchstart:u,onTouchend:c},[Ie(O.$slots,"navbar",{},()=>[V(o)?(J(),He(Ag,{key:0,onToggleSidebar:a},{before:qe(()=>[Ie(O.$slots,"navbar-before")]),after:qe(()=>[Ie(O.$slots,"navbar-after")]),_:3})):Me("v-if",!0)]),ye("div",{class:"sidebar-mask",onClick:h[0]||(h[0]=E=>a(!1))}),Ie(O.$slots,"sidebar",{},()=>[ae(s_,null,{top:qe(()=>[Ie(O.$slots,"sidebar-top")]),bottom:qe(()=>[Ie(O.$slots,"sidebar-bottom")]),_:3})]),Ie(O.$slots,"page",{},()=>[V(n).home?(J(),He(Wv,{key:0})):(J(),He($n,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:V(_),onBeforeLeave:V(g)},{default:qe(()=>[(J(),He(Zg,{key:V(t).path},{top:qe(()=>[Ie(O.$slots,"page-top")]),"content-top":qe(()=>[Ie(O.$slots,"page-content-top")]),"content-bottom":qe(()=>[Ie(O.$slots,"page-content-bottom")]),bottom:qe(()=>[Ie(O.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34))}}),l_=Re(a_,[["__file","Layout.vue"]]),c_={class:"theme-container"},u_={class:"page"},f_={class:"theme-default-content"},d_=ye("h1",null,"404",-1),p_=me({__name:"NotFound",setup(e){var a,l,u;const t=Fn(),n=Qe(),r=(a=n.value.notFound)!=null?a:["Not Found"],o=()=>r[Math.floor(Math.random()*r.length)],i=(l=n.value.home)!=null?l:t.value,s=(u=n.value.backToHome)!=null?u:"Back to home";return(c,f)=>{const d=Tt("RouterLink");return J(),ne("div",c_,[ye("main",u_,[ye("div",f_,[d_,ye("blockquote",null,Be(o()),1),ae(d,{to:V(i)},{default:qe(()=>[Kt(Be(V(s)),1)]),_:1},8,["to"])])])])}}}),m_=Re(p_,[["__file","NotFound.vue"]]);const h_=Ot({enhance({app:e,router:t}){e.component("Badge",kh),e.component("CodeGroup",Ah),e.component("CodeGroupItem",Rh),e.component("AutoLinkExternalIcon",()=>{const r=e.component("ExternalLinkIcon");return r?he(r):null}),e.component("NavbarSearch",()=>{const r=e.component("Docsearch")||e.component("SearchBox");return r?he(r):null});const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...r)=>(await au().wait(),n(...r))},setup(){gv(),bv()},layouts:{Layout:l_,NotFound:m_}});/*! @docsearch/js 3.3.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function Ta(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Ee(e){for(var t=1;t=0||(c[l]=s[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function co(e,t){return function(n){if(Array.isArray(n))return n}(e)||function(n,r){var o=n==null?null:typeof Symbol<"u"&&n[Symbol.iterator]||n["@@iterator"];if(o!=null){var i,s,a=[],l=!0,u=!1;try{for(o=o.call(n);!(l=(i=o.next()).done)&&(a.push(i.value),!r||a.length!==r);l=!0);}catch(c){u=!0,s=c}finally{try{l||o.return==null||o.return()}finally{if(u)throw s}}return a}}(e,t)||mu(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function uo(e){return function(t){if(Array.isArray(t))return Ei(t)}(e)||function(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||mu(e)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function mu(e,t){if(e){if(typeof e=="string")return Ei(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ei(e,t):void 0}}function Ei(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n3)for(n=[n],i=3;i0?ir(p.type,p.props,p.key,null,p.__v):p)!=null){if(p.__=n,p.__b=n.__b+1,(d=h[c])===null||d&&p.key==d.key&&p.type===d.type)h[c]=void 0;else for(f=0;f3)for(n=[n],i=3;i=n.__.length&&n.__.push({}),n.__[e]}function Cu(e){return kn=1,Iu(Au,e)}function Iu(e,t,n){var r=Sr(Hn++,2);return r.t=e,r.__c||(r.__=[n?n(t):Au(void 0,t),function(o){var i=r.t(r.__[0],o);r.__[0]!==i&&(r.__=[i,r.__[1]],r.__c.setState({}))}],r.__c=Ze),r.__}function ku(e,t){var n=Sr(Hn++,3);!te.__s&&ls(n.__H,t)&&(n.__=e,n.__H=t,Ze.__H.__h.push(n))}function Va(e,t){var n=Sr(Hn++,4);!te.__s&&ls(n.__H,t)&&(n.__=e,n.__H=t,Ze.__h.push(n))}function Zo(e,t){var n=Sr(Hn++,7);return ls(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function O_(){wi.forEach(function(e){if(e.__P)try{e.__H.__h.forEach(zr),e.__H.__h.forEach(Si),e.__H.__h=[]}catch(t){e.__H.__h=[],te.__e(t,e.__v)}}),wi=[]}te.__b=function(e){Ze=null,Ma&&Ma(e)},te.__r=function(e){$a&&$a(e),Hn=0;var t=(Ze=e.__c).__H;t&&(t.__h.forEach(zr),t.__h.forEach(Si),t.__h=[])},te.diffed=function(e){Ha&&Ha(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(wi.push(t)!==1&&Na===te.requestAnimationFrame||((Na=te.requestAnimationFrame)||function(n){var r,o=function(){clearTimeout(i),qa&&cancelAnimationFrame(r),setTimeout(n)},i=setTimeout(o,100);qa&&(r=requestAnimationFrame(o))})(O_)),Ze=void 0},te.__c=function(e,t){t.some(function(n){try{n.__h.forEach(zr),n.__h=n.__h.filter(function(r){return!r.__||Si(r)})}catch(r){t.some(function(o){o.__h&&(o.__h=[])}),t=[],te.__e(r,n.__v)}}),Fa&&Fa(e,t)},te.unmount=function(e){Ba&&Ba(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(zr)}catch(n){te.__e(n,t.__v)}};var qa=typeof requestAnimationFrame=="function";function zr(e){var t=Ze;typeof e.__c=="function"&&e.__c(),Ze=t}function Si(e){var t=Ze;e.__c=e.__(),Ze=t}function ls(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Au(e,t){return typeof t=="function"?t(e):t}function xu(e,t){for(var n in t)e[n]=t[n];return e}function Pi(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var r in t)if(r!=="__source"&&e[r]!==t[r])return!0;return!1}function Ci(e){this.props=e}(Ci.prototype=new bt).isPureReactComponent=!0,Ci.prototype.shouldComponentUpdate=function(e,t){return Pi(this.props,e)||Pi(this.state,t)};var Ua=te.__b;te.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Ua&&Ua(e)};var w_=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,za=function(e,t){return e==null?null:kt(kt(e).map(t))},S_={map:za,forEach:za,count:function(e){return e?kt(e).length:0},only:function(e){var t=kt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:kt},P_=te.__e;function Kr(){this.__u=0,this.t=null,this.__b=null}function Tu(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function Zn(){this.u=null,this.o=null}te.__e=function(e,t,n){if(e.then){for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k),r.__c(e,t)}P_(e,t,n)},(Kr.prototype=new bt).__c=function(e,t){var n=t.__c,r=this;r.t==null&&(r.t=[]),r.t.push(n);var o=Tu(r.__v),i=!1,s=function(){i||(i=!0,n.componentWillUnmount=n.__c,o?o(a):a())};n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){s(),n.__c&&n.__c()};var a=function(){if(!--r.__u){if(r.state.__e){var u=r.state.__e;r.__v.__k[0]=function f(d,p,_){return d&&(d.__v=null,d.__k=d.__k&&d.__k.map(function(g){return f(g,p,_)}),d.__c&&d.__c.__P===p&&(d.__e&&_.insertBefore(d.__e,d.__d),d.__c.__e=!0,d.__c.__P=_)),d}(u,u.__c.__P,u.__c.__O)}var c;for(r.setState({__e:r.__b=null});c=r.t.pop();)c.forceUpdate()}},l=t.__h===!0;r.__u++||l||r.setState({__e:r.__b=r.__v.__k[0]}),e.then(s,s)},Kr.prototype.componentWillUnmount=function(){this.t=[]},Kr.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=function i(s,a,l){return s&&(s.__c&&s.__c.__H&&(s.__c.__H.__.forEach(function(u){typeof u.__c=="function"&&u.__c()}),s.__c.__H=null),(s=xu({},s)).__c!=null&&(s.__c.__P===l&&(s.__c.__P=a),s.__c=null),s.__k=s.__k&&s.__k.map(function(u){return i(u,a,l)})),s}(this.__b,n,r.__O=r.__P)}this.__b=null}var o=t.__e&&yt(Wt,null,e.fallback);return o&&(o.__h=null),[yt(Wt,null,t.__e?null:e.children),o]};var Ka=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]>>1,1),t.i.removeChild(r)}}),vr(yt(C_,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function Lu(e,t){return yt(I_,{__v:e,i:t})}(Zn.prototype=new bt).__e=function(e){var t=this,n=Tu(t.__v),r=t.o.get(e);return r[0]++,function(o){var i=function(){t.props.revealOrder?(r.push(o),Ka(t,e,r)):o()};n?n(i):i()}},Zn.prototype.render=function(e){this.u=null,this.o=new Map;var t=kt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Zn.prototype.componentDidUpdate=Zn.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){Ka(e,n,t)})};var Ru=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,k_=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,A_=function(e){return(typeof Symbol<"u"&&mr(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function ju(e,t,n){return t.__k==null&&(t.textContent=""),vr(e,t),typeof n=="function"&&n(),e?e.__c:null}bt.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(bt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Wa=te.event;function x_(){}function T_(){return this.cancelBubble}function L_(){return this.defaultPrevented}te.event=function(e){return Wa&&(e=Wa(e)),e.persist=x_,e.isPropagationStopped=T_,e.isDefaultPrevented=L_,e.nativeEvent=e};var Du,Ja={configurable:!0,get:function(){return this.class}},Qa=te.vnode;te.vnode=function(e){var t=e.type,n=e.props,r=n;if(typeof t=="string"){for(var o in r={},n){var i=n[o];o==="value"&&"defaultValue"in n&&i==null||(o==="defaultValue"&&"value"in n&&n.value==null?o="value":o==="download"&&i===!0?i="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!A_(n.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():k_.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():i===null&&(i=void 0),r[o]=i)}t=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=kt(n.children).forEach(function(s){s.props.selected=r.value.indexOf(s.props.value)!=-1})),t=="select"&&r.defaultValue!=null&&(r.value=kt(n.children).forEach(function(s){s.props.selected=r.multiple?r.defaultValue.indexOf(s.props.value)!=-1:r.defaultValue==s.props.value})),e.props=r}t&&n.class!=n.className&&(Ja.enumerable="className"in n,n.className!=null&&(r.class=n.className),Object.defineProperty(r,"className",Ja)),e.$$typeof=Ru,Qa&&Qa(e)};var Za=te.__r;te.__r=function(e){Za&&Za(e),Du=e.__c};var R_={ReactCurrentDispatcher:{current:{readContext:function(e){return Du.__n[e.__c].props.value}}}};(typeof performance>"u"?"undefined":mr(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);function Ya(e){return!!e&&e.$$typeof===Ru}var y={useState:Cu,useReducer:Iu,useEffect:ku,useLayoutEffect:Va,useRef:function(e){return kn=5,Zo(function(){return{current:e}},[])},useImperativeHandle:function(e,t,n){kn=6,Va(function(){typeof e=="function"?e(t()):e&&(e.current=t())},n==null?n:n.concat(e))},useMemo:Zo,useCallback:function(e,t){return kn=8,Zo(function(){return e},t)},useContext:function(e){var t=Ze.context[e.__c],n=Sr(Hn++,9);return n.__c=e,t?(n.__==null&&(n.__=!0,t.sub(Ze)),t.props.value):e.__},useDebugValue:function(e,t){te.useDebugValue&&te.useDebugValue(t?t(e):e)},version:"16.8.0",Children:S_,render:ju,hydrate:function(e,t,n){return Pu(e,t),typeof n=="function"&&n(),e?e.__c:null},unmountComponentAtNode:function(e){return!!e.__k&&(vr(null,e),!0)},createPortal:Lu,createElement:yt,createContext:function(e,t){var n={__c:t="__cC"+vu++,__:e,Consumer:function(r,o){return r.children(o)},Provider:function(r){var o,i;return this.getChildContext||(o=[],(i={})[t]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(s){this.props.value!==s.value&&o.some(Oi)},this.sub=function(s){o.push(s);var a=s.componentWillUnmount;s.componentWillUnmount=function(){o.splice(o.indexOf(s),1),a&&a.call(s)}}),r.children}};return n.Provider.__=n.Consumer.contextType=n},createFactory:function(e){return yt.bind(null,e)},cloneElement:function(e){return Ya(e)?E_.apply(null,arguments):e},createRef:function(){return{current:null}},Fragment:Wt,isValidElement:Ya,findDOMNode:function(e){return e&&(e.base||e.nodeType===1&&e)||null},Component:bt,PureComponent:Ci,memo:function(e,t){function n(o){var i=this.props.ref,s=i==o.ref;return!s&&i&&(i.call?i(null):i.current=null),t?!t(this.props,o)||!s:Pi(this.props,o)}function r(o){return this.shouldComponentUpdate=n,yt(e,o)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r},forwardRef:function(e){function t(n,r){var o=xu({},n);return delete o.ref,e(o,(r=n.ref||r)&&(mr(r)!="object"||"current"in r)?r:null)}return t.$$typeof=w_,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t},unstable_batchedUpdates:function(e,t){return e(t)},StrictMode:Wt,Suspense:Kr,SuspenseList:Zn,lazy:function(e){var t,n,r;function o(i){if(t||(t=e()).then(function(s){n=s.default||s},function(s){r=s}),r)throw r;if(!n)throw t;return yt(n,i)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:R_};function j_(){return y.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},y.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function Nu(){return y.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},y.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var D_=["translations"];function Ii(){return Ii=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(c[l]=s[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var $_=y.forwardRef(function(e,t){var n=e.translations,r=n===void 0?{}:n,o=M_(e,D_),i=r.buttonText,s=i===void 0?"Search":i,a=r.buttonAriaLabel,l=a===void 0?"Search":a,u=N_(Cu(null),2),c=u[0],f=u[1];return ku(function(){typeof navigator<"u"&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("⌘"):f("Ctrl"))},[]),y.createElement("button",Ii({type:"button",className:"DocSearch DocSearch-Button","aria-label":l},o,{ref:t}),y.createElement("span",{className:"DocSearch-Button-Container"},y.createElement(Nu,null),y.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),y.createElement("span",{className:"DocSearch-Button-Keys"},c!==null&&y.createElement(y.Fragment,null,y.createElement("kbd",{className:"DocSearch-Button-Key"},c==="Ctrl"?y.createElement(j_,null):c),y.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))});function gr(e){return e.reduce(function(t,n){return t.concat(n)},[])}var H_=0;function ki(e){return e.collections.length===0?0:e.collections.reduce(function(t,n){return t+n.items.length},0)}var Mu=function(){},F_=[{segment:"autocomplete-core",version:"1.7.4"}];function Wr(e,t){var n=t;return{then:function(r,o){return Wr(e.then(Nr(r,n,e),Nr(o,n,e)),n)},catch:function(r){return Wr(e.catch(Nr(r,n,e)),n)},finally:function(r){return r&&n.onCancelList.push(r),Wr(e.finally(Nr(r&&function(){return n.onCancelList=[],r()},n,e)),n)},cancel:function(){n.isCanceled=!0;var r=n.onCancelList;n.onCancelList=[],r.forEach(function(o){o()})},isCanceled:function(){return n.isCanceled===!0}}}function Xa(e){return Wr(e,{isCanceled:!1,onCancelList:[]})}function Nr(e,t,n){return e?function(r){return t.isCanceled?r:e(r)}:n}function el(e,t,n,r){if(!n)return null;if(e<0&&(t===null||r!==null&&t===0))return n+e;var o=(t===null?-1:t)+e;return o<=-1||o>=n?r===null?null:0:o}function tl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function B_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function V_(e,t){var n=[];return Promise.resolve(e(t)).then(function(r){return Promise.all(r.filter(function(o){return Boolean(o)}).map(function(o){if(o.sourceId,n.includes(o.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(o.sourceId)," is not unique."));n.push(o.sourceId);var i=function(s){for(var a=1;a 支持 Vite 和 Webpack 双构建

Fes.js@3.0.x 版本支持 Vite 和 Webpack 两种构建方式,不再内置构建方式,需要开发者自行选择:

  • 选用 Vite 构建,安装 npm i @fesjs/builder-vite 依赖即可。
  • 选用 Webpack 构建,安装 npm i @fesjs/builder-webpack 依赖即可。

使用差异

由于 Fes.js 在 Vite 和 Webpack 上做了一层封装,开发者关心的构建配置不会太多。从使用上来说,主要存在以下几个差异点:

配置

Webpack 和 Vite 构建在配置方面有一些差异,具体可以查看配置

静态文件处理

',8),d=e("code",null,"require",-1),p={href:"https://cn.vitejs.dev/guide/assets.html",target:"_blank",rel:"noopener noreferrer"},u=e("h3",{id:"html-模版",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#html-模版","aria-hidden":"true"},"#"),t(" html 模版")],-1),_={href:"https://github.com/jantimon/html-webpack-plugin",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/vbenjs/vite-plugin-html",target:"_blank",rel:"noopener noreferrer"},m=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"提示"),e("p",null,[t("fes3.0+ html 模版文件从 "),e("code",null,"public/index.html"),t(" 挪到项目根目录。")])],-1);function f(k,x){const a=i("ExternalLinkIcon");return c(),o("div",null,[h,e("p",null,[t("由于 Vite 的限制,不支持 "),d,t(" 语法,具体 Vite 的用法可以查看"),e("a",p,[t("官网"),r(a)])]),u,e("p",null,[t("html 模版比较常规的需求,例如模版变量,Webpack 和 Vite 之间没什么差异。如果有其他特殊的需求, Webpack 可以使用 "),e("a",_,[t("html-webpack-plugin"),r(a)]),t(",Vite 使用"),e("a",b,[t("vite-plugin-html"),r(a)]),t(" 进行个性化配置。")]),m])}const v=n(l,[["render",f],["__file","builder.html.vue"]]);export{v as default}; +import{_ as n,r as i,o as c,c as o,b as e,d as t,a as r,f as s}from"./app.005e0daf.js";const l={},h=s('

支持 Vite 和 Webpack 双构建

Fes.js@3.0.x 版本支持 Vite 和 Webpack 两种构建方式,不再内置构建方式,需要开发者自行选择:

  • 选用 Vite 构建,安装 npm i @fesjs/builder-vite 依赖即可。
  • 选用 Webpack 构建,安装 npm i @fesjs/builder-webpack 依赖即可。

使用差异

由于 Fes.js 在 Vite 和 Webpack 上做了一层封装,开发者关心的构建配置不会太多。从使用上来说,主要存在以下几个差异点:

配置

Webpack 和 Vite 构建在配置方面有一些差异,具体可以查看配置

静态文件处理

',8),d=e("code",null,"require",-1),p={href:"https://cn.vitejs.dev/guide/assets.html",target:"_blank",rel:"noopener noreferrer"},u=e("h3",{id:"html-模版",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#html-模版","aria-hidden":"true"},"#"),t(" html 模版")],-1),_={href:"https://github.com/jantimon/html-webpack-plugin",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/vbenjs/vite-plugin-html",target:"_blank",rel:"noopener noreferrer"},m=e("div",{class:"custom-container tip"},[e("p",{class:"custom-container-title"},"提示"),e("p",null,[t("fes3.0+ html 模版文件从 "),e("code",null,"public/index.html"),t(" 挪到项目根目录。")])],-1);function f(k,x){const a=i("ExternalLinkIcon");return c(),o("div",null,[h,e("p",null,[t("由于 Vite 的限制,不支持 "),d,t(" 语法,具体 Vite 的用法可以查看"),e("a",p,[t("官网"),r(a)])]),u,e("p",null,[t("html 模版比较常规的需求,例如模版变量,Webpack 和 Vite 之间没什么差异。如果有其他特殊的需求, Webpack 可以使用 "),e("a",_,[t("html-webpack-plugin"),r(a)]),t(",Vite 使用"),e("a",b,[t("vite-plugin-html"),r(a)]),t(" 进行个性化配置。")]),m])}const v=n(l,[["render",f],["__file","builder.html.vue"]]);export{v as default}; diff --git a/assets/builder.html.41d262aa.js b/assets/builder.html.e970d1bc.js similarity index 71% rename from assets/builder.html.41d262aa.js rename to assets/builder.html.e970d1bc.js index 8df9d7b0..43c34f3a 100644 --- a/assets/builder.html.41d262aa.js +++ b/assets/builder.html.e970d1bc.js @@ -1 +1 @@ -const e=JSON.parse('{"key":"v-0cca110a","path":"/guide/builder.html","title":"支持 Vite 和 Webpack 双构建","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"使用差异","slug":"使用差异","link":"#使用差异","children":[{"level":3,"title":"配置","slug":"配置","link":"#配置","children":[]},{"level":3,"title":"静态文件处理","slug":"静态文件处理","link":"#静态文件处理","children":[]},{"level":3,"title":"html 模版","slug":"html-模版","link":"#html-模版","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/builder.md"}');export{e as data}; +const e=JSON.parse('{"key":"v-0cca110a","path":"/guide/builder.html","title":"支持 Vite 和 Webpack 双构建","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"使用差异","slug":"使用差异","link":"#使用差异","children":[{"level":3,"title":"配置","slug":"配置","link":"#配置","children":[]},{"level":3,"title":"静态文件处理","slug":"静态文件处理","link":"#静态文件处理","children":[]},{"level":3,"title":"html 模版","slug":"html-模版","link":"#html-模版","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/builder.md"}');export{e as data}; diff --git a/assets/cli.html.1bdad203.js b/assets/cli.html.768b01bb.js similarity index 99% rename from assets/cli.html.1bdad203.js rename to assets/cli.html.768b01bb.js index f8b0f139..1f6bea50 100644 --- a/assets/cli.html.1bdad203.js +++ b/assets/cli.html.768b01bb.js @@ -1,4 +1,4 @@ -import{_ as r,r as t,o as p,c as o,b as a,d as e,a as s,w as c,f as i}from"./app.1fff394b.js";const d={},u=a("h1",{id:"命令行接口",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#命令行接口","aria-hidden":"true"},"#"),e(" 命令行接口")],-1),v={href:"https://www.npmjs.com/package/@vuepress/cli",target:"_blank",rel:"noopener noreferrer"},m={href:"https://www.npmjs.com/package/vuepress",target:"_blank",rel:"noopener noreferrer"},b=i(`

执行 vuepress --help 来获取下列帮助信息:

Usage:
+import{_ as r,r as t,o as p,c as o,b as a,d as e,a as s,w as c,f as i}from"./app.005e0daf.js";const d={},u=a("h1",{id:"命令行接口",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#命令行接口","aria-hidden":"true"},"#"),e(" 命令行接口")],-1),v={href:"https://www.npmjs.com/package/@vuepress/cli",target:"_blank",rel:"noopener noreferrer"},m={href:"https://www.npmjs.com/package/vuepress",target:"_blank",rel:"noopener noreferrer"},b=i(`

执行 vuepress --help 来获取下列帮助信息:

Usage:
   $ vuepress <command> [options]
 
 Commands:
diff --git a/assets/cli.html.0b7f0983.js b/assets/cli.html.b37682a1.js
similarity index 72%
rename from assets/cli.html.0b7f0983.js
rename to assets/cli.html.b37682a1.js
index 804d88bc..fa0231e3 100644
--- a/assets/cli.html.0b7f0983.js
+++ b/assets/cli.html.b37682a1.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-a951be94","path":"/reference/cli.html","title":"命令行接口","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"dev","slug":"dev","link":"#dev","children":[]},{"level":2,"title":"build","slug":"build","link":"#build","children":[]},{"level":2,"title":"info","slug":"info","link":"#info","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/cli.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-a951be94","path":"/reference/cli.html","title":"命令行接口","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"dev","slug":"dev","link":"#dev","children":[]},{"level":2,"title":"build","slug":"build","link":"#build","children":[]},{"level":2,"title":"info","slug":"info","link":"#info","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/cli.md"}');export{e as data};
diff --git a/assets/config.html.8e53c331.js b/assets/config.html.3c4760e9.js
similarity index 99%
rename from assets/config.html.8e53c331.js
rename to assets/config.html.3c4760e9.js
index 3800b5de..3db3cfec 100644
--- a/assets/config.html.8e53c331.js
+++ b/assets/config.html.3c4760e9.js
@@ -1,4 +1,4 @@
-import{_ as n,o as s,c as a,f as e}from"./app.1fff394b.js";const p={},t=e(`

编译时配置

Fes.js 约定 .fes.js 文件为项目编译需要编译时配置文件,可以引入 node 端依赖项,不要引入浏览器端依赖项。

一份常见的配置示例如下(更多配置项请查阅配置):

import { defineBuildConfig } from '@fesjs/fes';
+import{_ as n,o as s,c as a,f as e}from"./app.005e0daf.js";const p={},t=e(`

编译时配置

Fes.js 约定 .fes.js 文件为项目编译需要编译时配置文件,可以引入 node 端依赖项,不要引入浏览器端依赖项。

一份常见的配置示例如下(更多配置项请查阅配置):

import { defineBuildConfig } from '@fesjs/fes';
 
 export default defineBuildConfig({
     publicPath: '/',
diff --git a/assets/config.html.1c29538e.js b/assets/config.html.5d92a440.js
similarity index 77%
rename from assets/config.html.1c29538e.js
rename to assets/config.html.5d92a440.js
index 4a73272f..7859de55 100644
--- a/assets/config.html.1c29538e.js
+++ b/assets/config.html.5d92a440.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-85fa9b2a","path":"/guide/config.html","title":"编译时配置","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"本地临时配置文件","slug":"本地临时配置文件","link":"#本地临时配置文件","children":[]},{"level":2,"title":"多环境多份配置","slug":"多环境多份配置","link":"#多环境多份配置","children":[]},{"level":2,"title":"优先级","slug":"优先级","link":"#优先级","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/config.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-85fa9b2a","path":"/guide/config.html","title":"编译时配置","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"本地临时配置文件","slug":"本地临时配置文件","link":"#本地临时配置文件","children":[]},{"level":2,"title":"多环境多份配置","slug":"多环境多份配置","link":"#多环境多份配置","children":[]},{"level":2,"title":"优先级","slug":"优先级","link":"#优先级","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/config.md"}');export{e as data};
diff --git a/assets/contributing.html.18b532cd.js b/assets/contributing.html.24d74808.js
similarity index 73%
rename from assets/contributing.html.18b532cd.js
rename to assets/contributing.html.24d74808.js
index af56f6dc..9fd28f36 100644
--- a/assets/contributing.html.18b532cd.js
+++ b/assets/contributing.html.24d74808.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-d7fa887a","path":"/guide/contributing.html","title":"贡献指南","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"包概览","slug":"包概览","link":"#包概览","children":[]},{"level":2,"title":"开发准备","slug":"开发准备","link":"#开发准备","children":[]},{"level":2,"title":"贡献文档","slug":"贡献文档","link":"#贡献文档","children":[]},{"level":2,"title":"贡献源码","slug":"贡献源码","link":"#贡献源码","children":[]},{"level":2,"title":"提交 PR","slug":"提交-pr","link":"#提交-pr","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/contributing.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-d7fa887a","path":"/guide/contributing.html","title":"贡献指南","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"包概览","slug":"包概览","link":"#包概览","children":[]},{"level":2,"title":"开发准备","slug":"开发准备","link":"#开发准备","children":[]},{"level":2,"title":"贡献文档","slug":"贡献文档","link":"#贡献文档","children":[]},{"level":2,"title":"贡献源码","slug":"贡献源码","link":"#贡献源码","children":[]},{"level":2,"title":"提交 PR","slug":"提交-pr","link":"#提交-pr","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/contributing.md"}');export{e as data};
diff --git a/assets/contributing.html.a6331978.js b/assets/contributing.html.8cad4b5e.js
similarity index 99%
rename from assets/contributing.html.a6331978.js
rename to assets/contributing.html.8cad4b5e.js
index 9177b7b5..85a7a95f 100644
--- a/assets/contributing.html.a6331978.js
+++ b/assets/contributing.html.8cad4b5e.js
@@ -1,4 +1,4 @@
-import{_ as d,r as t,o as i,c as r,b as e,d as a,a as n,f as o}from"./app.1fff394b.js";const c={},l=e("h1",{id:"贡献指南",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#贡献指南","aria-hidden":"true"},"#"),a(" 贡献指南")],-1),p=e("h2",{id:"包概览",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#包概览","aria-hidden":"true"},"#"),a(" 包概览")],-1),h={href:"https://pnpm.io/pnpm-workspace_yaml",target:"_blank",rel:"noopener noreferrer"},u={href:"https://en.wikipedia.org/wiki/Monorepo",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"packages",-1),f=o('
  • @fesjs/create-fes-app: 创建项目模板模块。提供create-fes-app命令,提供创建多种类型项目模板的能力。

  • @fesjs/compiler: 编译时插件管理模块。定义插件的生命周期、插件配置、插件通讯机制等。

  • @fesjs/runtime: 运行时插件模块。集成了 vue-router,定义运行时插件生命周期、插件通讯机制。

  • @fesjs/preset-build-in: 内置插件集。包含devbuild等命令,集成 webpack5+babel,提供方便编写插件的 API,入口文件处理,路由处理等能力。

  • @fesjs/fes-template: 适用于 PC 类型的模板项目。

  • @fesjs/fes-template-h5: 适用于 H5 类型的模板项目。

  • @fesjs/plugin-${name}: 官方插件。

  • @fesjs/fes: 入口模块。提供fes命令和 API 入口,封装@fesjs/compiler + @fesjs/runtime + @fesjs/preset-build-in,用户只需要安装此依赖和其他插件。

开发准备

开发要求:

',3),b={href:"http://nodejs.org",target:"_blank",rel:"noopener noreferrer"},v={href:"https://pnpm.io/",target:"_blank",rel:"noopener noreferrer"},g=e("p",null,"本项目开发使用的一些主要工具:",-1),_={href:"https://jestjs.io/",target:"_blank",rel:"noopener noreferrer"},k={href:"https://eslint.org/",target:"_blank",rel:"noopener noreferrer"},x={href:"https://prettier.io/",target:"_blank",rel:"noopener noreferrer"},j=o(`

克隆仓库:

git clone https://github.com/WeBankFinTech/fes.js.git
+import{_ as d,r as t,o as i,c as r,b as e,d as a,a as n,f as o}from"./app.005e0daf.js";const c={},l=e("h1",{id:"贡献指南",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#贡献指南","aria-hidden":"true"},"#"),a(" 贡献指南")],-1),p=e("h2",{id:"包概览",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#包概览","aria-hidden":"true"},"#"),a(" 包概览")],-1),h={href:"https://pnpm.io/pnpm-workspace_yaml",target:"_blank",rel:"noopener noreferrer"},u={href:"https://en.wikipedia.org/wiki/Monorepo",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"packages",-1),f=o('
  • @fesjs/create-fes-app: 创建项目模板模块。提供create-fes-app命令,提供创建多种类型项目模板的能力。

  • @fesjs/compiler: 编译时插件管理模块。定义插件的生命周期、插件配置、插件通讯机制等。

  • @fesjs/runtime: 运行时插件模块。集成了 vue-router,定义运行时插件生命周期、插件通讯机制。

  • @fesjs/preset-build-in: 内置插件集。包含devbuild等命令,集成 webpack5+babel,提供方便编写插件的 API,入口文件处理,路由处理等能力。

  • @fesjs/fes-template: 适用于 PC 类型的模板项目。

  • @fesjs/fes-template-h5: 适用于 H5 类型的模板项目。

  • @fesjs/plugin-${name}: 官方插件。

  • @fesjs/fes: 入口模块。提供fes命令和 API 入口,封装@fesjs/compiler + @fesjs/runtime + @fesjs/preset-build-in,用户只需要安装此依赖和其他插件。

开发准备

开发要求:

',3),b={href:"http://nodejs.org",target:"_blank",rel:"noopener noreferrer"},v={href:"https://pnpm.io/",target:"_blank",rel:"noopener noreferrer"},g=e("p",null,"本项目开发使用的一些主要工具:",-1),_={href:"https://jestjs.io/",target:"_blank",rel:"noopener noreferrer"},k={href:"https://eslint.org/",target:"_blank",rel:"noopener noreferrer"},x={href:"https://prettier.io/",target:"_blank",rel:"noopener noreferrer"},j=o(`

克隆仓库:

git clone https://github.com/WeBankFinTech/fes.js.git
 

进入fes.js目录,安装依赖:

pnpm i
 

贡献文档

`,5),w=e("code",null,"docs",-1),q={href:"https://v2.vuepress.vuejs.org/zh/",target:"_blank",rel:"noopener noreferrer"},P=o(`

第一步:启动服务

pnpm docs:dev
 

第二步:修改 md 文件

菜单配置在/docs/.vuepress/configs/sidebar/zh.ts中,可以通过此配置找到对应想修改的文档。

如果想添加图片,则可以先把图片添加至/docs/.vuepress/public,在代码中使用:

<img :src="$withBase('framework.png')" alt="架构" />
diff --git a/assets/css.html.afae2aea.js b/assets/css.html.3990f0c1.js
similarity index 77%
rename from assets/css.html.afae2aea.js
rename to assets/css.html.3990f0c1.js
index 9bba2c7a..20291781 100644
--- a/assets/css.html.afae2aea.js
+++ b/assets/css.html.3990f0c1.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-884fd4bc","path":"/guide/css.html","title":"使用 css","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"全局样式","slug":"全局样式","link":"#全局样式","children":[]},{"level":2,"title":"组件内样式","slug":"组件内样式","link":"#组件内样式","children":[]},{"level":2,"title":"引入第三方样式","slug":"引入第三方样式","link":"#引入第三方样式","children":[]},{"level":2,"title":"CSS Modules","slug":"css-modules","link":"#css-modules","children":[]},{"level":2,"title":"CSS 预处理器","slug":"css-预处理器","link":"#css-预处理器","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/css.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-884fd4bc","path":"/guide/css.html","title":"使用 css","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"全局样式","slug":"全局样式","link":"#全局样式","children":[]},{"level":2,"title":"组件内样式","slug":"组件内样式","link":"#组件内样式","children":[]},{"level":2,"title":"引入第三方样式","slug":"引入第三方样式","link":"#引入第三方样式","children":[]},{"level":2,"title":"CSS Modules","slug":"css-modules","link":"#css-modules","children":[]},{"level":2,"title":"CSS 预处理器","slug":"css-预处理器","link":"#css-预处理器","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/css.md"}');export{e as data};
diff --git a/assets/css.html.60666f3a.js b/assets/css.html.a45df14e.js
similarity index 98%
rename from assets/css.html.60666f3a.js
rename to assets/css.html.a45df14e.js
index c0f78e10..c4b901ed 100644
--- a/assets/css.html.60666f3a.js
+++ b/assets/css.html.a45df14e.js
@@ -1,4 +1,4 @@
-import{_ as t,r as c,o,c as d,b as a,d as s,a as i,f as n}from"./app.1fff394b.js";const l={},p=n(`

使用 css

提示

本文档以 css 为示例,把后缀换成 .less 同样适用。

全局样式

Fes.js 中约定 src/global.css 为全局样式,如果存在此文件,会被自动引入到入口文件最前面。

比如用于覆盖样式,

.layout-content {
+import{_ as t,r as c,o,c as d,b as a,d as s,a as i,f as n}from"./app.005e0daf.js";const l={},p=n(`

使用 css

提示

本文档以 css 为示例,把后缀换成 .less 同样适用。

全局样式

Fes.js 中约定 src/global.css 为全局样式,如果存在此文件,会被自动引入到入口文件最前面。

比如用于覆盖样式,

.layout-content {
   max-width: 1000px;
 }
 

组件内样式

<style>
diff --git a/assets/directory-structure.html.405ab82b.js b/assets/directory-structure.html.15096386.js
similarity index 99%
rename from assets/directory-structure.html.405ab82b.js
rename to assets/directory-structure.html.15096386.js
index a5da2dfe..d3c197bc 100644
--- a/assets/directory-structure.html.405ab82b.js
+++ b/assets/directory-structure.html.15096386.js
@@ -1,4 +1,4 @@
-import{_ as e,r as t,o,c as p,b as n,d as s,a as c,w as i,f as u}from"./app.1fff394b.js";const l={},r=n("h1",{id:"目录结构",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#目录结构","aria-hidden":"true"},"#"),s(" 目录结构")],-1),d=n("code",null,"约定优于配置",-1),k=u(`
fes-template
+import{_ as e,r as t,o,c as p,b as n,d as s,a as c,w as i,f as u}from"./app.005e0daf.js";const l={},r=n("h1",{id:"目录结构",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#目录结构","aria-hidden":"true"},"#"),s(" 目录结构")],-1),d=n("code",null,"约定优于配置",-1),k=u(`
fes-template
 ├── package.json
 ├── tsconfig.json
 ├── mock.js
diff --git a/assets/directory-structure.html.f4065d91.js b/assets/directory-structure.html.4960a3b9.js
similarity index 87%
rename from assets/directory-structure.html.f4065d91.js
rename to assets/directory-structure.html.4960a3b9.js
index 130c8d46..f13037ab 100644
--- a/assets/directory-structure.html.f4065d91.js
+++ b/assets/directory-structure.html.4960a3b9.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-040800dc","path":"/guide/directory-structure.html","title":"目录结构","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"package.json","slug":"package-json","link":"#package-json","children":[]},{"level":3,"title":"tsconfig.json","slug":"tsconfig-json","link":"#tsconfig-json","children":[]},{"level":3,"title":".fes.js","slug":"fes-js","link":"#fes-js","children":[]},{"level":3,"title":"mock.js","slug":"mock-js","link":"#mock-js","children":[]},{"level":3,"title":".env","slug":"env","link":"#env","children":[]},{"level":3,"title":"dist 目录","slug":"dist-目录","link":"#dist-目录","children":[]},{"level":3,"title":"public 目录","slug":"public-目录","link":"#public-目录","children":[]},{"level":3,"title":"index.html","slug":"index-html","link":"#index-html","children":[]},{"level":3,"title":"src 目录","slug":"src-目录","link":"#src-目录","children":[]},{"level":3,"title":".fes 目录","slug":"fes-目录","link":"#fes-目录","children":[]},{"level":3,"title":"pages 目录","slug":"pages-目录","link":"#pages-目录","children":[]},{"level":3,"title":"app.js","slug":"app-js","link":"#app-js","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/directory-structure.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-040800dc","path":"/guide/directory-structure.html","title":"目录结构","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"package.json","slug":"package-json","link":"#package-json","children":[]},{"level":3,"title":"tsconfig.json","slug":"tsconfig-json","link":"#tsconfig-json","children":[]},{"level":3,"title":".fes.js","slug":"fes-js","link":"#fes-js","children":[]},{"level":3,"title":"mock.js","slug":"mock-js","link":"#mock-js","children":[]},{"level":3,"title":".env","slug":"env","link":"#env","children":[]},{"level":3,"title":"dist 目录","slug":"dist-目录","link":"#dist-目录","children":[]},{"level":3,"title":"public 目录","slug":"public-目录","link":"#public-目录","children":[]},{"level":3,"title":"index.html","slug":"index-html","link":"#index-html","children":[]},{"level":3,"title":"src 目录","slug":"src-目录","link":"#src-目录","children":[]},{"level":3,"title":".fes 目录","slug":"fes-目录","link":"#fes-目录","children":[]},{"level":3,"title":"pages 目录","slug":"pages-目录","link":"#pages-目录","children":[]},{"level":3,"title":"app.js","slug":"app-js","link":"#app-js","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/directory-structure.md"}');export{e as data};
diff --git a/assets/editor.html.a0484bbe.js b/assets/editor.html.2fb88cf1.js
similarity index 83%
rename from assets/editor.html.a0484bbe.js
rename to assets/editor.html.2fb88cf1.js
index 50406205..b7a6902f 100644
--- a/assets/editor.html.a0484bbe.js
+++ b/assets/editor.html.2fb88cf1.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-323bda7e","path":"/reference/plugin/plugins/editor.html","title":"@fesjs/plugin-monaco-editor","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[{"level":3,"title":"filename","slug":"filename","link":"#filename","children":[]},{"level":3,"title":"publicPath","slug":"publicpath","link":"#publicpath","children":[]},{"level":3,"title":"languages","slug":"languages","link":"#languages","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"monaco","slug":"monaco","link":"#monaco","children":[]},{"level":3,"title":"组件 MonacoEditor","slug":"组件-monacoeditor","link":"#组件-monacoeditor","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/editor.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-323bda7e","path":"/reference/plugin/plugins/editor.html","title":"@fesjs/plugin-monaco-editor","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[{"level":3,"title":"filename","slug":"filename","link":"#filename","children":[]},{"level":3,"title":"publicPath","slug":"publicpath","link":"#publicpath","children":[]},{"level":3,"title":"languages","slug":"languages","link":"#languages","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"monaco","slug":"monaco","link":"#monaco","children":[]},{"level":3,"title":"组件 MonacoEditor","slug":"组件-monacoeditor","link":"#组件-monacoeditor","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/editor.md"}');export{e as data};
diff --git a/assets/editor.html.bb339413.js b/assets/editor.html.604dae94.js
similarity index 99%
rename from assets/editor.html.bb339413.js
rename to assets/editor.html.604dae94.js
index 882c18c6..83e8068c 100644
--- a/assets/editor.html.bb339413.js
+++ b/assets/editor.html.604dae94.js
@@ -1,4 +1,4 @@
-import{_ as o,r as p,o as c,c as l,b as s,d as n,a as t,f as e}from"./app.1fff394b.js";const i={},r=s("h1",{id:"fesjs-plugin-monaco-editor",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-monaco-editor","aria-hidden":"true"},"#"),n(" @fesjs/plugin-monaco-editor")],-1),d=s("h2",{id:"介绍",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),n(" 介绍")],-1),u=s("code",null,"json",-1),k=s("code",null,"javascript",-1),h=s("code",null,"python",-1),v={href:"https://github.com/Microsoft/monaco-editor",target:"_blank",rel:"noopener noreferrer"},m=s("code",null,"Monaco Editor",-1),g=s("code",null,"Monaco Editor",-1),b=s("code",null,"1.9.1",-1),f=e(`

启用方式

package.json 中引入依赖:

{
+import{_ as o,r as p,o as c,c as l,b as s,d as n,a as t,f as e}from"./app.005e0daf.js";const i={},r=s("h1",{id:"fesjs-plugin-monaco-editor",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-monaco-editor","aria-hidden":"true"},"#"),n(" @fesjs/plugin-monaco-editor")],-1),d=s("h2",{id:"介绍",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),n(" 介绍")],-1),u=s("code",null,"json",-1),k=s("code",null,"javascript",-1),h=s("code",null,"python",-1),v={href:"https://github.com/Microsoft/monaco-editor",target:"_blank",rel:"noopener noreferrer"},m=s("code",null,"Monaco Editor",-1),g=s("code",null,"Monaco Editor",-1),b=s("code",null,"1.9.1",-1),f=e(`

启用方式

package.json 中引入依赖:

{
     "dependencies": {
         "@fesjs/fes": "^3.0.0",
         "@fesjs/plugin-monaco-editor": "^3.0.0"
diff --git a/assets/enums.html.28629e2b.js b/assets/enums.html.7c55aefa.js
similarity index 89%
rename from assets/enums.html.28629e2b.js
rename to assets/enums.html.7c55aefa.js
index 7c7cc6f0..9dad7ba5 100644
--- a/assets/enums.html.28629e2b.js
+++ b/assets/enums.html.7c55aefa.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-c253c956","path":"/reference/plugin/plugins/enums.html","title":"@fesjs/plugin-enums","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"静态配置","slug":"静态配置","link":"#静态配置","children":[]},{"level":3,"title":"动态配置","slug":"动态配置","link":"#动态配置","children":[]}]},{"level":2,"title":"场景使用","slug":"场景使用","link":"#场景使用","children":[]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"get","slug":"get","link":"#get","children":[]},{"level":3,"title":"push","slug":"push","link":"#push","children":[]},{"level":3,"title":"remove","slug":"remove","link":"#remove","children":[]},{"level":3,"title":"concat","slug":"concat","link":"#concat","children":[]},{"level":3,"title":"convert","slug":"convert","link":"#convert","children":[]},{"level":3,"title":"extend 配置","slug":"extend-配置","link":"#extend-配置","children":[]},{"level":3,"title":"dir 规则","slug":"dir-规则","link":"#dir-规则","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/enums.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-c253c956","path":"/reference/plugin/plugins/enums.html","title":"@fesjs/plugin-enums","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"静态配置","slug":"静态配置","link":"#静态配置","children":[]},{"level":3,"title":"动态配置","slug":"动态配置","link":"#动态配置","children":[]}]},{"level":2,"title":"场景使用","slug":"场景使用","link":"#场景使用","children":[]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"get","slug":"get","link":"#get","children":[]},{"level":3,"title":"push","slug":"push","link":"#push","children":[]},{"level":3,"title":"remove","slug":"remove","link":"#remove","children":[]},{"level":3,"title":"concat","slug":"concat","link":"#concat","children":[]},{"level":3,"title":"convert","slug":"convert","link":"#convert","children":[]},{"level":3,"title":"extend 配置","slug":"extend-配置","link":"#extend-配置","children":[]},{"level":3,"title":"dir 规则","slug":"dir-规则","link":"#dir-规则","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/enums.md"}');export{e as data};
diff --git a/assets/enums.html.e93ea61f.js b/assets/enums.html.e894dfd6.js
similarity index 99%
rename from assets/enums.html.e93ea61f.js
rename to assets/enums.html.e894dfd6.js
index 8b8b8881..d3f550a7 100644
--- a/assets/enums.html.e93ea61f.js
+++ b/assets/enums.html.e894dfd6.js
@@ -1,4 +1,4 @@
-import{_ as n,o as s,c as a,f as t}from"./app.1fff394b.js";const p={},e=t(`

@fesjs/plugin-enums

介绍

日常业务开发中,有很多场景会使用到枚举值,比如 select-options、table-column。

该插件提供统一的枚举存取及丰富的函数来处理枚举。

启用方式

package.json 中引入依赖:

{
+import{_ as n,o as s,c as a,f as t}from"./app.005e0daf.js";const p={},e=t(`

@fesjs/plugin-enums

介绍

日常业务开发中,有很多场景会使用到枚举值,比如 select-options、table-column。

该插件提供统一的枚举存取及丰富的函数来处理枚举。

启用方式

package.json 中引入依赖:

{
     "dependencies": {
         "@fesjs/fes": "^3.0.0",
         "@fesjs/plugin-enums": "^3.0.0"
diff --git a/assets/env.html.08b9b704.js b/assets/env.html.35aa0f1a.js
similarity index 89%
rename from assets/env.html.08b9b704.js
rename to assets/env.html.35aa0f1a.js
index 6bcf5b94..1a67118a 100644
--- a/assets/env.html.08b9b704.js
+++ b/assets/env.html.35aa0f1a.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-ef8c5e10","path":"/guide/env.html","title":"环境变量","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"配置环境变量","slug":"配置环境变量","link":"#配置环境变量","children":[{"level":3,"title":"命令行添加","slug":"命令行添加","link":"#命令行添加","children":[]},{"level":3,"title":".env 文件配置","slug":"env-文件配置","link":"#env-文件配置","children":[]}]},{"level":2,"title":"编译时配置列表","slug":"编译时配置列表","link":"#编译时配置列表","children":[{"level":3,"title":"FES_ENV","slug":"fes-env","link":"#fes-env","children":[]},{"level":3,"title":"FES_PRESETS","slug":"fes-presets","link":"#fes-presets","children":[]},{"level":3,"title":"FES_PLUGINS","slug":"fes-plugins","link":"#fes-plugins","children":[]},{"level":3,"title":"PORT","slug":"port","link":"#port","children":[]},{"level":3,"title":"HOST","slug":"host","link":"#host","children":[]},{"level":3,"title":"HTTPS","slug":"https","link":"#https","children":[]},{"level":3,"title":"WATCH","slug":"watch","link":"#watch","children":[]},{"level":3,"title":"BABEL_CACHE","slug":"babel-cache","link":"#babel-cache","children":[]},{"level":3,"title":"ANALYZE","slug":"analyze","link":"#analyze","children":[]},{"level":3,"title":"ANALYZE_MODE","slug":"analyze-mode","link":"#analyze-mode","children":[]},{"level":3,"title":"ANALYZE_PORT","slug":"analyze-port","link":"#analyze-port","children":[]},{"level":3,"title":"CLEAR_OUTPUT","slug":"clear-output","link":"#clear-output","children":[]},{"level":3,"title":"RM_TMPDIR","slug":"rm-tmpdir","link":"#rm-tmpdir","children":[]}]},{"level":2,"title":"p​rocess.env","slug":"process-env","link":"#process-env","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/env.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-ef8c5e10","path":"/guide/env.html","title":"环境变量","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"配置环境变量","slug":"配置环境变量","link":"#配置环境变量","children":[{"level":3,"title":"命令行添加","slug":"命令行添加","link":"#命令行添加","children":[]},{"level":3,"title":".env 文件配置","slug":"env-文件配置","link":"#env-文件配置","children":[]}]},{"level":2,"title":"编译时配置列表","slug":"编译时配置列表","link":"#编译时配置列表","children":[{"level":3,"title":"FES_ENV","slug":"fes-env","link":"#fes-env","children":[]},{"level":3,"title":"FES_PRESETS","slug":"fes-presets","link":"#fes-presets","children":[]},{"level":3,"title":"FES_PLUGINS","slug":"fes-plugins","link":"#fes-plugins","children":[]},{"level":3,"title":"PORT","slug":"port","link":"#port","children":[]},{"level":3,"title":"HOST","slug":"host","link":"#host","children":[]},{"level":3,"title":"HTTPS","slug":"https","link":"#https","children":[]},{"level":3,"title":"WATCH","slug":"watch","link":"#watch","children":[]},{"level":3,"title":"BABEL_CACHE","slug":"babel-cache","link":"#babel-cache","children":[]},{"level":3,"title":"ANALYZE","slug":"analyze","link":"#analyze","children":[]},{"level":3,"title":"ANALYZE_MODE","slug":"analyze-mode","link":"#analyze-mode","children":[]},{"level":3,"title":"ANALYZE_PORT","slug":"analyze-port","link":"#analyze-port","children":[]},{"level":3,"title":"CLEAR_OUTPUT","slug":"clear-output","link":"#clear-output","children":[]},{"level":3,"title":"RM_TMPDIR","slug":"rm-tmpdir","link":"#rm-tmpdir","children":[]}]},{"level":2,"title":"p​rocess.env","slug":"process-env","link":"#process-env","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/env.md"}');export{e as data};
diff --git a/assets/env.html.90215696.js b/assets/env.html.805df8a5.js
similarity index 99%
rename from assets/env.html.90215696.js
rename to assets/env.html.805df8a5.js
index 3a126d9d..07dac1ab 100644
--- a/assets/env.html.90215696.js
+++ b/assets/env.html.805df8a5.js
@@ -1,4 +1,4 @@
-import{_ as o,r as n,o as l,c as p,b as e,d as a,a as s,w as d,f as r}from"./app.1fff394b.js";const h={},u=r(`

环境变量

在构建或者代码在端上运行中需要一些跟区分于环境的变量,用于配置构建流程或者运行时过程,这时候我们可以配置环境变量。

配置环境变量

命令行添加

比如:

# OS X, Linux
+import{_ as o,r as n,o as l,c as p,b as e,d as a,a as s,w as d,f as r}from"./app.005e0daf.js";const h={},u=r(`

环境变量

在构建或者代码在端上运行中需要一些跟区分于环境的变量,用于配置构建流程或者运行时过程,这时候我们可以配置环境变量。

配置环境变量

命令行添加

比如:

# OS X, Linux
 PORT=3000 fes dev
 
 # Windows (cmd.exe)
diff --git a/assets/faq.html.1e599082.js b/assets/faq.html.1e599082.js
new file mode 100644
index 00000000..1e0d43b9
--- /dev/null
+++ b/assets/faq.html.1e599082.js
@@ -0,0 +1 @@
+const e=JSON.parse('{"key":"v-37e1c06f","path":"/guide/faq.html","title":"常见问题","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/faq.md"}');export{e as data};
diff --git a/assets/faq.html.34e02ab8.js b/assets/faq.html.34e02ab8.js
deleted file mode 100644
index 3612d4ee..00000000
--- a/assets/faq.html.34e02ab8.js
+++ /dev/null
@@ -1 +0,0 @@
-const e=JSON.parse('{"key":"v-37e1c06f","path":"/guide/faq.html","title":"常见问题","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/faq.md"}');export{e as data};
diff --git a/assets/faq.html.ea3f8c6e.js b/assets/faq.html.f70ba546.js
similarity index 93%
rename from assets/faq.html.ea3f8c6e.js
rename to assets/faq.html.f70ba546.js
index 049a70a2..2c893579 100644
--- a/assets/faq.html.ea3f8c6e.js
+++ b/assets/faq.html.f70ba546.js
@@ -1,3 +1,3 @@
-import{_ as e,o as t,c as a,f as o}from"./app.1fff394b.js";const c={},d=o(`

常见问题

为什么代码提示不生效?

  1. 需要先运行一次fes dev
  2. 检查tsconfig.json,include包含当前编辑文件,compilerOptions.path包含
"@/*": ["./src/*"],
+import{_ as e,o as t,c as a,f as o}from"./app.005e0daf.js";const c={},d=o(`

常见问题

为什么代码提示不生效?

  1. 需要先运行一次fes dev
  2. 检查tsconfig.json,include包含当前编辑文件,compilerOptions.path包含
"@/*": ["./src/*"],
 "@@/*": ["./src/.fes/*"]
 
`,4),i=[d];function s(n,r){return t(),a("div",null,i)}const u=e(c,[["render",s],["__file","faq.html.vue"]]);export{u as default}; diff --git a/assets/getting-started.html.d3b9cf9e.js b/assets/getting-started.html.3b600666.js similarity index 99% rename from assets/getting-started.html.d3b9cf9e.js rename to assets/getting-started.html.3b600666.js index 69b2d25d..2ee606b7 100644 --- a/assets/getting-started.html.d3b9cf9e.js +++ b/assets/getting-started.html.3b600666.js @@ -1,4 +1,4 @@ -import{_ as o,r as t,o as u,c as m,b as e,d as n,a as s,w as a,f as r}from"./app.1fff394b.js";const p={},h=e("h1",{id:"快速上手",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#快速上手","aria-hidden":"true"},"#"),n(" 快速上手")],-1),b=e("h2",{id:"依赖环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#依赖环境","aria-hidden":"true"},"#"),n(" 依赖环境")],-1),v={href:"https://nodejs.org/",target:"_blank",rel:"noopener noreferrer"},_=r(`
# 打印 node 版本
+import{_ as o,r as t,o as u,c as m,b as e,d as n,a as s,w as a,f as r}from"./app.005e0daf.js";const p={},h=e("h1",{id:"快速上手",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#快速上手","aria-hidden":"true"},"#"),n(" 快速上手")],-1),b=e("h2",{id:"依赖环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#依赖环境","aria-hidden":"true"},"#"),n(" 依赖环境")],-1),v={href:"https://nodejs.org/",target:"_blank",rel:"noopener noreferrer"},_=r(`
# 打印 node 版本
 node -v
 v12.13.0
 
`,1),k={href:"https://pnpm.io/installation",target:"_blank",rel:"noopener noreferrer"},g=r(`
# 全局安装 pnpm
diff --git a/assets/getting-started.html.4674ba1a.js b/assets/getting-started.html.8eca842e.js
similarity index 80%
rename from assets/getting-started.html.4674ba1a.js
rename to assets/getting-started.html.8eca842e.js
index 41b4fd60..1b44ef15 100644
--- a/assets/getting-started.html.4674ba1a.js
+++ b/assets/getting-started.html.8eca842e.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-fb0f0066","path":"/guide/getting-started.html","title":"快速上手","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"依赖环境","slug":"依赖环境","link":"#依赖环境","children":[]},{"level":2,"title":"创建项目","slug":"创建项目","link":"#创建项目","children":[]},{"level":2,"title":"启动项目","slug":"启动项目","link":"#启动项目","children":[]},{"level":2,"title":"部署发布","slug":"部署发布","link":"#部署发布","children":[{"level":3,"title":"构建","slug":"构建","link":"#构建","children":[]},{"level":3,"title":"本地验证","slug":"本地验证","link":"#本地验证","children":[]},{"level":3,"title":"部署","slug":"部署","link":"#部署","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/getting-started.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-fb0f0066","path":"/guide/getting-started.html","title":"快速上手","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"依赖环境","slug":"依赖环境","link":"#依赖环境","children":[]},{"level":2,"title":"创建项目","slug":"创建项目","link":"#创建项目","children":[]},{"level":2,"title":"启动项目","slug":"启动项目","link":"#启动项目","children":[]},{"level":2,"title":"部署发布","slug":"部署发布","link":"#部署发布","children":[{"level":3,"title":"构建","slug":"构建","link":"#构建","children":[]},{"level":3,"title":"本地验证","slug":"本地验证","link":"#本地验证","children":[]},{"level":3,"title":"部署","slug":"部署","link":"#部署","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/getting-started.md"}');export{e as data};
diff --git a/assets/icon.html.6deb220e.js b/assets/icon.html.c524fb7f.js
similarity index 98%
rename from assets/icon.html.6deb220e.js
rename to assets/icon.html.c524fb7f.js
index 17edf235..fd4acbfc 100644
--- a/assets/icon.html.6deb220e.js
+++ b/assets/icon.html.c524fb7f.js
@@ -1,4 +1,4 @@
-import{_ as t,o as e,c as n,f as a}from"./app.1fff394b.js";const s={},o=a(`

@fesjs/plugin-icon

介绍

提供以 component 的方式,直接使用 svg icon 的能力。

启用方式

package.json 中引入依赖:

{
+import{_ as t,o as e,c as n,f as a}from"./app.005e0daf.js";const s={},o=a(`

@fesjs/plugin-icon

介绍

提供以 component 的方式,直接使用 svg icon 的能力。

启用方式

package.json 中引入依赖:

{
     "dependencies": {
         "@fesjs/fes": "^3.0.0",
         "@fesjs/plugin-icon": "^3.0.0"
diff --git a/assets/icon.html.0299fcd3.js b/assets/icon.html.d2dc60da.js
similarity index 75%
rename from assets/icon.html.0299fcd3.js
rename to assets/icon.html.d2dc60da.js
index 1dfa96c0..4731aab9 100644
--- a/assets/icon.html.0299fcd3.js
+++ b/assets/icon.html.d2dc60da.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-0a0e491c","path":"/reference/plugin/plugins/icon.html","title":"@fesjs/plugin-icon","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"使用","slug":"使用","link":"#使用","children":[{"level":3,"title":"属性","slug":"属性","link":"#属性","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/icon.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-0a0e491c","path":"/reference/plugin/plugins/icon.html","title":"@fesjs/plugin-icon","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"使用","slug":"使用","link":"#使用","children":[{"level":3,"title":"属性","slug":"属性","link":"#属性","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/icon.md"}');export{e as data};
diff --git a/assets/image.html.d54c6051.js b/assets/image.html.20b52f7d.js
similarity index 85%
rename from assets/image.html.d54c6051.js
rename to assets/image.html.20b52f7d.js
index 59a23176..72b2e4f2 100644
--- a/assets/image.html.d54c6051.js
+++ b/assets/image.html.20b52f7d.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-528b8b6c","path":"/guide/image.html","title":"使用图片","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"使用图片","slug":"使用图片-1","link":"#使用图片-1","children":[{"level":3,"title":"Vue 里使用图片","slug":"vue-里使用图片","link":"#vue-里使用图片","children":[]},{"level":3,"title":"JS 里使用图片","slug":"js-里使用图片","link":"#js-里使用图片","children":[]},{"level":3,"title":"CSS 里使用图片","slug":"css-里使用图片","link":"#css-里使用图片","children":[]}]},{"level":2,"title":"public 文件夹","slug":"public-文件夹","link":"#public-文件夹","children":[{"level":3,"title":"在 HTML 模板中使用","slug":"在-html-模板中使用","link":"#在-html-模板中使用","children":[]},{"level":3,"title":"在.vue 文件中使用","slug":"在-vue-文件中使用","link":"#在-vue-文件中使用","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/image.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-528b8b6c","path":"/guide/image.html","title":"使用图片","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"使用图片","slug":"使用图片-1","link":"#使用图片-1","children":[{"level":3,"title":"Vue 里使用图片","slug":"vue-里使用图片","link":"#vue-里使用图片","children":[]},{"level":3,"title":"JS 里使用图片","slug":"js-里使用图片","link":"#js-里使用图片","children":[]},{"level":3,"title":"CSS 里使用图片","slug":"css-里使用图片","link":"#css-里使用图片","children":[]}]},{"level":2,"title":"public 文件夹","slug":"public-文件夹","link":"#public-文件夹","children":[{"level":3,"title":"在 HTML 模板中使用","slug":"在-html-模板中使用","link":"#在-html-模板中使用","children":[]},{"level":3,"title":"在.vue 文件中使用","slug":"在-vue-文件中使用","link":"#在-vue-文件中使用","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/image.md"}');export{e as data};
diff --git a/assets/image.html.f92ca3e1.js b/assets/image.html.58aa17c7.js
similarity index 99%
rename from assets/image.html.f92ca3e1.js
rename to assets/image.html.58aa17c7.js
index 8f41b663..c5c344ec 100644
--- a/assets/image.html.f92ca3e1.js
+++ b/assets/image.html.58aa17c7.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as s,f as e}from"./app.1fff394b.js";const t={},p=e(`

使用图片

使用图片

假设在 src/images 目录下有 logo.png

Vue 里使用图片

<template>
+import{_ as a,o as n,c as s,f as e}from"./app.005e0daf.js";const t={},p=e(`

使用图片

使用图片

假设在 src/images 目录下有 logo.png

Vue 里使用图片

<template>
     <img src="@/images/logo.png\`" />
 </template>
 

JS 里使用图片

import imageUrl from '@/images/logo.png\`';
diff --git a/assets/index.html.5aeb969b.js b/assets/index.html.174811be.js
similarity index 98%
rename from assets/index.html.5aeb969b.js
rename to assets/index.html.174811be.js
index 2b8b22cb..475ade34 100644
--- a/assets/index.html.5aeb969b.js
+++ b/assets/index.html.174811be.js
@@ -1,4 +1,4 @@
-import{_ as r,o as d,c as n,e as t,b as e,d as a,f as i}from"./app.1fff394b.js";const l={},h=i('

介绍

痛点

在开发一个前端项目之前,我们可能需要做如下准备工作:

  • 搭建开发环境
  • 约定代码规范
  • 封装API请求
  • 配置路由
  • 实现布局、菜单、导航
  • 实现登录
  • 权限管理
  • ...

除了准备工作之外,还会遇到很多相似的业务类型,比如中后台应用大多都是工作台、增删改查、权限、图表等。如果每次项目都完全手动处理一遍,不仅耗费时间,久而久之可能会存在多种技术栈、开发规范,导致开发流程不统一,历史项目越来越难维护。所以我们需要一套完整的解决方案,管理开发到部署整个流程。

Fes.js 是什么?

Fes.js 是一个好用的前端应用解决方案。Fes.js 以 Vue 3.0 和路由为基础,同时支持配置式路由和约定式路由,并以此进行功能扩展。配以覆盖编译时和运行时生命周期完善的插件体系,支持各种功能扩展和业务需求。

它主要具备以下特点:

  • 🚀 快速 ,内置了路由、开发、构建等,并且提供测试、布局、权限、国际化、状态管理、API请求、数据字典、SvgIcon等插件,可以满足大部分日常开发需求。

  • 🧨 简单 ,基于Vue.js 3.0,上手简单。贯彻“约定优于配置”思想,设计插件上尽可能用约定替代配置,同时提供统一的插件配置入口,简单简洁又不失灵活。提供一致性的API入口,一致化的体验,学习起来更轻松。

  • 💪 健壮 ,只需要关心页面内容,减少写BUG的机会!提供单元测试、覆盖测试能力保障项目质量。

  • 📦 可扩展 ,借鉴Umi实现了完整的生命周期和插件化机制,插件可以管理项目的编译时和运行时,能力均可以通过插件封装进来,在 Fes.js 中协调有序的运行。

  • 📡 面向未来 ,在满足需求的同时,我们也不会停止对新技术的探索。已使用Vue3.0来提升应用性能,已使用webpack5提升构建性能和实现微服务,未来会探索vite等新技术。

Fes.js 如何工作?

架构

',11),c=["src"],o=e("p",null,"Fes.js 把大家常用的技术栈封装成一个个插件进行整理,收敛到一起,让大家只用 Fes.js 就可以完成 80% 的日常工作。",-1),u=e("h3",{id:"插件和插件集",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#插件和插件集","aria-hidden":"true"},"#"),a(" 插件和插件集")],-1),p=["src"],f=i(`

.fes 临时文件

.fes 临时目录是整个 Fes.js 项目的发动机,你的入口文件、路由等等都在这里,这些是由 fes 内部插件及三方插件生成的。

你通常会在 .fes 下看到以下目录

+ .fes
+import{_ as r,o as d,c as n,e as t,b as e,d as a,f as i}from"./app.005e0daf.js";const l={},h=i('

介绍

痛点

在开发一个前端项目之前,我们可能需要做如下准备工作:

  • 搭建开发环境
  • 约定代码规范
  • 封装API请求
  • 配置路由
  • 实现布局、菜单、导航
  • 实现登录
  • 权限管理
  • ...

除了准备工作之外,还会遇到很多相似的业务类型,比如中后台应用大多都是工作台、增删改查、权限、图表等。如果每次项目都完全手动处理一遍,不仅耗费时间,久而久之可能会存在多种技术栈、开发规范,导致开发流程不统一,历史项目越来越难维护。所以我们需要一套完整的解决方案,管理开发到部署整个流程。

Fes.js 是什么?

Fes.js 是一个好用的前端应用解决方案。Fes.js 以 Vue 3.0 和路由为基础,同时支持配置式路由和约定式路由,并以此进行功能扩展。配以覆盖编译时和运行时生命周期完善的插件体系,支持各种功能扩展和业务需求。

它主要具备以下特点:

  • 🚀 快速 ,内置了路由、开发、构建等,并且提供测试、布局、权限、国际化、状态管理、API请求、数据字典、SvgIcon等插件,可以满足大部分日常开发需求。

  • 🧨 简单 ,基于Vue.js 3.0,上手简单。贯彻“约定优于配置”思想,设计插件上尽可能用约定替代配置,同时提供统一的插件配置入口,简单简洁又不失灵活。提供一致性的API入口,一致化的体验,学习起来更轻松。

  • 💪 健壮 ,只需要关心页面内容,减少写BUG的机会!提供单元测试、覆盖测试能力保障项目质量。

  • 📦 可扩展 ,借鉴Umi实现了完整的生命周期和插件化机制,插件可以管理项目的编译时和运行时,能力均可以通过插件封装进来,在 Fes.js 中协调有序的运行。

  • 📡 面向未来 ,在满足需求的同时,我们也不会停止对新技术的探索。已使用Vue3.0来提升应用性能,已使用webpack5提升构建性能和实现微服务,未来会探索vite等新技术。

Fes.js 如何工作?

架构

',11),c=["src"],o=e("p",null,"Fes.js 把大家常用的技术栈封装成一个个插件进行整理,收敛到一起,让大家只用 Fes.js 就可以完成 80% 的日常工作。",-1),u=e("h3",{id:"插件和插件集",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#插件和插件集","aria-hidden":"true"},"#"),a(" 插件和插件集")],-1),p=["src"],f=i(`

.fes 临时文件

.fes 临时目录是整个 Fes.js 项目的发动机,你的入口文件、路由等等都在这里,这些是由 fes 内部插件及三方插件生成的。

你通常会在 .fes 下看到以下目录

+ .fes
   + core     # 内部插件生成
   + pluginA  # 外部插件生成
   + presetB  # 外部插件生成
diff --git a/assets/index.html.dcb7e541.js b/assets/index.html.1f2b7059.js
similarity index 97%
rename from assets/index.html.dcb7e541.js
rename to assets/index.html.1f2b7059.js
index 254b0949..2d0ec1a4 100644
--- a/assets/index.html.dcb7e541.js
+++ b/assets/index.html.1f2b7059.js
@@ -1,4 +1,4 @@
-import{_ as i,r as a,o as r,c as d,a as s,w as t,b as e,d as n}from"./app.1fff394b.js";const u={},m=e("h2",{id:"像数-1-2-3-一样容易",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#像数-1-2-3-一样容易","aria-hidden":"true"},"#"),n(" 像数 1, 2, 3 一样容易")],-1),p=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token comment"},"# 创建模板"),n(`
+import{_ as i,r as a,o as r,c as d,a as s,w as t,b as e,d as n}from"./app.005e0daf.js";const u={},m=e("h2",{id:"像数-1-2-3-一样容易",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#像数-1-2-3-一样容易","aria-hidden":"true"},"#"),n(" 像数 1, 2, 3 一样容易")],-1),p=e("div",{class:"language-bash line-numbers-mode","data-ext":"sh"},[e("pre",{class:"language-bash"},[e("code",null,[e("span",{class:"token comment"},"# 创建模板"),n(`
 `),e("span",{class:"token function"},"pnpm"),n(` create @fesjs/fes-app myapp
 
 `),e("span",{class:"token comment"},"# 安装依赖"),n(`
diff --git a/assets/index.html.f9721522.js b/assets/index.html.35cddc8c.js
similarity index 91%
rename from assets/index.html.f9721522.js
rename to assets/index.html.35cddc8c.js
index e056773e..cc97f069 100644
--- a/assets/index.html.f9721522.js
+++ b/assets/index.html.35cddc8c.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-76cd065c","path":"/reference/api/","title":"API","lang":"zh-CN","frontmatter":{"sidebar":"auto"},"excerpt":"","headers":[{"level":2,"title":"基础API","slug":"基础api","link":"#基础api","children":[{"level":3,"title":"plugin","slug":"plugin","link":"#plugin","children":[]},{"level":3,"title":"ApplyPluginsType","slug":"applypluginstype","link":"#applypluginstype","children":[]},{"level":3,"title":"defineRouteMeta","slug":"defineroutemeta","link":"#defineroutemeta","children":[]},{"level":3,"title":"defineBuildConfig","slug":"definebuildconfig","link":"#definebuildconfig","children":[]},{"level":3,"title":"defineRuntimeConfig","slug":"defineruntimeconfig","link":"#defineruntimeconfig","children":[]}]},{"level":2,"title":"路由API","slug":"路由api","link":"#路由api","children":[{"level":3,"title":"getRouter","slug":"getrouter","link":"#getrouter","children":[]},{"level":3,"title":"getHistory","slug":"gethistory","link":"#gethistory","children":[]},{"level":3,"title":"useRoute","slug":"useroute","link":"#useroute","children":[]},{"level":3,"title":"useRouter","slug":"userouter","link":"#userouter","children":[]},{"level":3,"title":"onBeforeRouteUpdate","slug":"onbeforerouteupdate","link":"#onbeforerouteupdate","children":[]},{"level":3,"title":"onBeforeRouteLeave","slug":"onbeforerouteleave","link":"#onbeforerouteleave","children":[]},{"level":3,"title":"createWebHashHistory","slug":"createwebhashhistory","link":"#createwebhashhistory","children":[]},{"level":3,"title":"createWebHistory","slug":"createwebhistory","link":"#createwebhistory","children":[]},{"level":3,"title":"createMemoryHistory","slug":"creatememoryhistory","link":"#creatememoryhistory","children":[]},{"level":3,"title":"createRouter","slug":"createrouter","link":"#createrouter","children":[]},{"level":3,"title":"RouterLink","slug":"routerlink","link":"#routerlink","children":[]},{"level":3,"title":"useLink","slug":"uselink","link":"#uselink","children":[]},{"level":3,"title":"RouterView","slug":"routerview","link":"#routerview","children":[]},{"level":3,"title":"其他 Router Methods","slug":"其他-router-methods","link":"#其他-router-methods","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/api/README.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-76cd065c","path":"/reference/api/","title":"API","lang":"zh-CN","frontmatter":{"sidebar":"auto"},"excerpt":"","headers":[{"level":2,"title":"基础API","slug":"基础api","link":"#基础api","children":[{"level":3,"title":"plugin","slug":"plugin","link":"#plugin","children":[]},{"level":3,"title":"ApplyPluginsType","slug":"applypluginstype","link":"#applypluginstype","children":[]},{"level":3,"title":"defineRouteMeta","slug":"defineroutemeta","link":"#defineroutemeta","children":[]},{"level":3,"title":"defineBuildConfig","slug":"definebuildconfig","link":"#definebuildconfig","children":[]},{"level":3,"title":"defineRuntimeConfig","slug":"defineruntimeconfig","link":"#defineruntimeconfig","children":[]}]},{"level":2,"title":"路由API","slug":"路由api","link":"#路由api","children":[{"level":3,"title":"getRouter","slug":"getrouter","link":"#getrouter","children":[]},{"level":3,"title":"getHistory","slug":"gethistory","link":"#gethistory","children":[]},{"level":3,"title":"useRoute","slug":"useroute","link":"#useroute","children":[]},{"level":3,"title":"useRouter","slug":"userouter","link":"#userouter","children":[]},{"level":3,"title":"onBeforeRouteUpdate","slug":"onbeforerouteupdate","link":"#onbeforerouteupdate","children":[]},{"level":3,"title":"onBeforeRouteLeave","slug":"onbeforerouteleave","link":"#onbeforerouteleave","children":[]},{"level":3,"title":"createWebHashHistory","slug":"createwebhashhistory","link":"#createwebhashhistory","children":[]},{"level":3,"title":"createWebHistory","slug":"createwebhistory","link":"#createwebhistory","children":[]},{"level":3,"title":"createMemoryHistory","slug":"creatememoryhistory","link":"#creatememoryhistory","children":[]},{"level":3,"title":"createRouter","slug":"createrouter","link":"#createrouter","children":[]},{"level":3,"title":"RouterLink","slug":"routerlink","link":"#routerlink","children":[]},{"level":3,"title":"useLink","slug":"uselink","link":"#uselink","children":[]},{"level":3,"title":"RouterView","slug":"routerview","link":"#routerview","children":[]},{"level":3,"title":"其他 Router Methods","slug":"其他-router-methods","link":"#其他-router-methods","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/api/README.md"}');export{e as data};
diff --git a/assets/index.html.fcf804cf.js b/assets/index.html.5f811d7d.js
similarity index 99%
rename from assets/index.html.fcf804cf.js
rename to assets/index.html.5f811d7d.js
index 53844764..d7472f08 100644
--- a/assets/index.html.fcf804cf.js
+++ b/assets/index.html.5f811d7d.js
@@ -1,4 +1,4 @@
-import{_ as r,r as d,o as t,c as u,a as s,w as a,f as c,b as e,d as n}from"./app.1fff394b.js";const o={},v=c(`

命令行工具

create-fes-app

通过 create-fes-app 命令创建项目模板,输入create-fes-app -h则可以看到如下信息:

Usage: create-fes-app <name>
+import{_ as r,r as d,o as t,c as u,a as s,w as a,f as c,b as e,d as n}from"./app.005e0daf.js";const o={},v=c(`

命令行工具

create-fes-app

通过 create-fes-app 命令创建项目模板,输入create-fes-app -h则可以看到如下信息:

Usage: create-fes-app <name>
 
 Options:
     -v, --version            Output the current version
diff --git a/assets/index.html.af34d57a.js b/assets/index.html.7417ac5c.js
similarity index 98%
rename from assets/index.html.af34d57a.js
rename to assets/index.html.7417ac5c.js
index 35d7910c..cd6713d2 100644
--- a/assets/index.html.af34d57a.js
+++ b/assets/index.html.7417ac5c.js
@@ -1 +1 @@
-import{_ as d,r as i,o,c as r,b as l,a as t,w as s,d as e,e as c}from"./app.1fff394b.js";const a={},_=l("h1",{id:"介绍",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),e(" 介绍")],-1),h=l("h2",{id:"插件列表",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#插件列表","aria-hidden":"true"},"#"),e(" 插件列表")],-1),f=l("thead",null,[l("tr",null,[l("th",null,"插件"),l("th",null,"介绍")])],-1),p=l("td",null,"提供对页面资源的权限控制能力",-1),g=l("td",null,"提供统一的枚举存取及丰富的函数来处理枚举",-1),m=l("td",null,"svg 文件自动注册为组件",-1),j=l("td",null,[e("基于 "),l("code",null,"Jest"),e(",提供单元测试、覆盖测试能力")],-1),w=l("td",null,"简单的配置即可拥有布局,包括导航以及侧边栏",-1),x=l("td",null,[e("基于 "),l("code",null,"Vue I18n"),e(",提供国际化能力")],-1),k=l("td",null,"简易的数据管理方案",-1),V=l("td",null,[e("基于 "),l("code",null,"Axios"),e(" 封装的 request,内置防止重复请求、请求节流、错误处理等功能")],-1),b=l("td",null,[e("基于 "),l("code",null,"Vuex"),e(", 提供状态管理能力")],-1),q=l("td",null,[e("基于 "),l("code",null,"qiankun"),e(",提供微服务能力")],-1),v=l("td",null,"样式支持sass",-1),C=l("td",null,[e("提供代码编辑器能力, 基于"),l("code",null,"monaco-editor"),e("(VS Code使用的代码编辑器)")],-1),B=l("td",null,[e("基于 "),l("code",null,"windicss"),e(",提供原子化 CSS 能力")],-1),N=l("td",null,[e("基于 "),l("code",null,"pinia"),e(",提供状态管理")],-1),y=l("td",null,"水印",-1),S=l("td",null,"swc",-1),F=l("h2",{id:"架构",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#架构","aria-hidden":"true"},"#"),e(" 架构")],-1),L=["src"],R=l("p",null,"Fes.js 把大家常用的技术栈封装成一个个插件进行整理,收敛到一起,让大家只用 Fes.js 就可以完成 80% 的日常工作。",-1);function A(u,E){const n=i("RouterLink");return o(),r("div",null,[_,h,l("table",null,[f,l("tbody",null,[l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/access.html"},{default:s(()=>[e("@fesjs/plugin-access")]),_:1})]),p]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/enums.html"},{default:s(()=>[e("@fesjs/plugin-enums")]),_:1})]),g]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/icon.html"},{default:s(()=>[e("@fesjs/plugin-icon")]),_:1})]),m]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/jest.html"},{default:s(()=>[e("@fesjs/plugin-jest")]),_:1})]),j]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/layout.html"},{default:s(()=>[e("@fesjs/plugin-layout")]),_:1})]),w]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/locale.html"},{default:s(()=>[e("@fesjs/plugin-locale")]),_:1})]),x]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/model.html"},{default:s(()=>[e("@fesjs/plugin-model")]),_:1})]),k]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/request.html"},{default:s(()=>[e("@fesjs/plugin-request")]),_:1})]),V]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/vuex.html"},{default:s(()=>[e("@fesjs/plugin-vuex")]),_:1})]),b]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/qiankun.html"},{default:s(()=>[e("@fesjs/plugin-qiankun")]),_:1})]),q]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/sass.html"},{default:s(()=>[e("@fesjs/plugin-sass")]),_:1})]),v]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/editor.html"},{default:s(()=>[e("@fesjs/plugin-monaco-editor")]),_:1})]),C]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/windicss.html"},{default:s(()=>[e("@fesjs/plugin-windicss")]),_:1})]),B]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/pinia.html"},{default:s(()=>[e("@fesjs/plugin-pinia")]),_:1})]),N]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/watermark.html"},{default:s(()=>[e("@fesjs/plugin-watermark")]),_:1})]),y]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/swc.html"},{default:s(()=>[e("@fesjs/plugin-swc")]),_:1})]),S])])]),F,c(' ![架构](/framework.png "架构") '),l("img",{src:u.$withBase("framework.png"),alt:"架构"},null,8,L),R])}const J=d(a,[["render",A],["__file","index.html.vue"]]);export{J as default};
+import{_ as d,r as i,o,c as r,b as l,a as t,w as s,d as e,e as c}from"./app.005e0daf.js";const a={},_=l("h1",{id:"介绍",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),e(" 介绍")],-1),h=l("h2",{id:"插件列表",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#插件列表","aria-hidden":"true"},"#"),e(" 插件列表")],-1),f=l("thead",null,[l("tr",null,[l("th",null,"插件"),l("th",null,"介绍")])],-1),p=l("td",null,"提供对页面资源的权限控制能力",-1),g=l("td",null,"提供统一的枚举存取及丰富的函数来处理枚举",-1),m=l("td",null,"svg 文件自动注册为组件",-1),j=l("td",null,[e("基于 "),l("code",null,"Jest"),e(",提供单元测试、覆盖测试能力")],-1),w=l("td",null,"简单的配置即可拥有布局,包括导航以及侧边栏",-1),x=l("td",null,[e("基于 "),l("code",null,"Vue I18n"),e(",提供国际化能力")],-1),k=l("td",null,"简易的数据管理方案",-1),V=l("td",null,[e("基于 "),l("code",null,"Axios"),e(" 封装的 request,内置防止重复请求、请求节流、错误处理等功能")],-1),b=l("td",null,[e("基于 "),l("code",null,"Vuex"),e(", 提供状态管理能力")],-1),q=l("td",null,[e("基于 "),l("code",null,"qiankun"),e(",提供微服务能力")],-1),v=l("td",null,"样式支持sass",-1),C=l("td",null,[e("提供代码编辑器能力, 基于"),l("code",null,"monaco-editor"),e("(VS Code使用的代码编辑器)")],-1),B=l("td",null,[e("基于 "),l("code",null,"windicss"),e(",提供原子化 CSS 能力")],-1),N=l("td",null,[e("基于 "),l("code",null,"pinia"),e(",提供状态管理")],-1),y=l("td",null,"水印",-1),S=l("td",null,"swc",-1),F=l("h2",{id:"架构",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#架构","aria-hidden":"true"},"#"),e(" 架构")],-1),L=["src"],R=l("p",null,"Fes.js 把大家常用的技术栈封装成一个个插件进行整理,收敛到一起,让大家只用 Fes.js 就可以完成 80% 的日常工作。",-1);function A(u,E){const n=i("RouterLink");return o(),r("div",null,[_,h,l("table",null,[f,l("tbody",null,[l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/access.html"},{default:s(()=>[e("@fesjs/plugin-access")]),_:1})]),p]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/enums.html"},{default:s(()=>[e("@fesjs/plugin-enums")]),_:1})]),g]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/icon.html"},{default:s(()=>[e("@fesjs/plugin-icon")]),_:1})]),m]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/jest.html"},{default:s(()=>[e("@fesjs/plugin-jest")]),_:1})]),j]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/layout.html"},{default:s(()=>[e("@fesjs/plugin-layout")]),_:1})]),w]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/locale.html"},{default:s(()=>[e("@fesjs/plugin-locale")]),_:1})]),x]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/model.html"},{default:s(()=>[e("@fesjs/plugin-model")]),_:1})]),k]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/request.html"},{default:s(()=>[e("@fesjs/plugin-request")]),_:1})]),V]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/vuex.html"},{default:s(()=>[e("@fesjs/plugin-vuex")]),_:1})]),b]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/qiankun.html"},{default:s(()=>[e("@fesjs/plugin-qiankun")]),_:1})]),q]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/sass.html"},{default:s(()=>[e("@fesjs/plugin-sass")]),_:1})]),v]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/editor.html"},{default:s(()=>[e("@fesjs/plugin-monaco-editor")]),_:1})]),C]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/windicss.html"},{default:s(()=>[e("@fesjs/plugin-windicss")]),_:1})]),B]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/pinia.html"},{default:s(()=>[e("@fesjs/plugin-pinia")]),_:1})]),N]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/watermark.html"},{default:s(()=>[e("@fesjs/plugin-watermark")]),_:1})]),y]),l("tr",null,[l("td",null,[t(n,{to:"/reference/plugin/plugins/swc.html"},{default:s(()=>[e("@fesjs/plugin-swc")]),_:1})]),S])])]),F,c(' ![架构](/framework.png "架构") '),l("img",{src:u.$withBase("framework.png"),alt:"架构"},null,8,L),R])}const J=d(a,[["render",A],["__file","index.html.vue"]]);export{J as default};
diff --git a/assets/index.html.52d8d12d.js b/assets/index.html.74321f46.js
similarity index 96%
rename from assets/index.html.52d8d12d.js
rename to assets/index.html.74321f46.js
index 04487d22..842d2c27 100644
--- a/assets/index.html.52d8d12d.js
+++ b/assets/index.html.74321f46.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-2c05b6e0","path":"/reference/config/","title":"","lang":"zh-CN","frontmatter":{"sidebar":"auto"},"excerpt":"","headers":[{"level":2,"title":"配置文件","slug":"配置文件","link":"#配置文件","children":[{"level":3,"title":"配置文件解析","slug":"配置文件解析","link":"#配置文件解析","children":[]},{"level":3,"title":"配置智能提示","slug":"配置智能提示","link":"#配置智能提示","children":[]}]},{"level":2,"title":"共享配置","slug":"共享配置","link":"#共享配置","children":[{"level":3,"title":"alias","slug":"alias","link":"#alias","children":[]},{"level":3,"title":"autoprefixer","slug":"autoprefixer","link":"#autoprefixer","children":[]},{"level":3,"title":"base","slug":"base","link":"#base","children":[]},{"level":3,"title":"builder","slug":"builder","link":"#builder","children":[]},{"level":3,"title":"define","slug":"define","link":"#define","children":[]},{"level":3,"title":"dynamicImport","slug":"dynamicimport","link":"#dynamicimport","children":[]},{"level":3,"title":"inlineLimit","slug":"inlinelimit","link":"#inlinelimit","children":[]},{"level":3,"title":"mock","slug":"mock","link":"#mock","children":[]},{"level":3,"title":"mountElementId","slug":"mountelementid","link":"#mountelementid","children":[]},{"level":3,"title":"outputPath","slug":"outputpath","link":"#outputpath","children":[]},{"level":3,"title":"plugins","slug":"plugins","link":"#plugins","children":[]},{"level":3,"title":"proxy","slug":"proxy","link":"#proxy","children":[]},{"level":3,"title":"publicPath","slug":"publicpath","link":"#publicpath","children":[]},{"level":3,"title":"router","slug":"router","link":"#router","children":[]},{"level":3,"title":"singular","slug":"singular","link":"#singular","children":[]},{"level":3,"title":"targets","slug":"targets","link":"#targets","children":[]},{"level":3,"title":"terserOptions","slug":"terseroptions","link":"#terseroptions","children":[]},{"level":3,"title":"title","slug":"title","link":"#title","children":[]}]},{"level":2,"title":"webpack 专属配置","slug":"webpack-专属配置","link":"#webpack-专属配置","children":[{"level":3,"title":"analyze","slug":"analyze","link":"#analyze","children":[]},{"level":3,"title":"chainWebpack","slug":"chainwebpack","link":"#chainwebpack","children":[]},{"level":3,"title":"cssLoader","slug":"cssloader","link":"#cssloader","children":[]},{"level":3,"title":"copy","slug":"copy","link":"#copy","children":[]},{"level":3,"title":"devServer","slug":"devserver","link":"#devserver","children":[]},{"level":3,"title":"devtool","slug":"devtool","link":"#devtool","children":[]},{"level":3,"title":"exportStatic","slug":"exportstatic","link":"#exportstatic","children":[]},{"level":3,"title":"externals","slug":"externals","link":"#externals","children":[]},{"level":3,"title":"extraBabelPlugins","slug":"extrababelplugins","link":"#extrababelplugins","children":[]},{"level":3,"title":"extraBabelPresets","slug":"extrababelpresets","link":"#extrababelpresets","children":[]},{"level":3,"title":"extraPostCSSPlugins","slug":"extrapostcssplugins","link":"#extrapostcssplugins","children":[]},{"level":3,"title":"html","slug":"html","link":"#html","children":[]},{"level":3,"title":"lessLoader","slug":"lessloader","link":"#lessloader","children":[]},{"level":3,"title":"nodeModulesTransform","slug":"nodemodulestransform","link":"#nodemodulestransform","children":[]},{"level":3,"title":"postcssLoader","slug":"postcssloader","link":"#postcssloader","children":[]},{"level":3,"title":"vueLoader","slug":"vueloader","link":"#vueloader","children":[]}]},{"level":2,"title":"Vite 专属配置","slug":"vite-专属配置","link":"#vite-专属配置","children":[{"level":3,"title":"viteOption","slug":"viteoption","link":"#viteoption","children":[]},{"level":3,"title":"viteVuePlugin","slug":"vitevueplugin","link":"#vitevueplugin","children":[]},{"level":3,"title":"viteVueJsx","slug":"vitevuejsx","link":"#vitevuejsx","children":[]},{"level":3,"title":"viteLegacy","slug":"vitelegacy","link":"#vitelegacy","children":[]},{"level":3,"title":"viteHtml","slug":"vitehtml","link":"#vitehtml","children":[]}]},{"level":2,"title":"更多配置项","slug":"更多配置项","link":"#更多配置项","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/config/README.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-2c05b6e0","path":"/reference/config/","title":"","lang":"zh-CN","frontmatter":{"sidebar":"auto"},"excerpt":"","headers":[{"level":2,"title":"配置文件","slug":"配置文件","link":"#配置文件","children":[{"level":3,"title":"配置文件解析","slug":"配置文件解析","link":"#配置文件解析","children":[]},{"level":3,"title":"配置智能提示","slug":"配置智能提示","link":"#配置智能提示","children":[]}]},{"level":2,"title":"共享配置","slug":"共享配置","link":"#共享配置","children":[{"level":3,"title":"alias","slug":"alias","link":"#alias","children":[]},{"level":3,"title":"autoprefixer","slug":"autoprefixer","link":"#autoprefixer","children":[]},{"level":3,"title":"base","slug":"base","link":"#base","children":[]},{"level":3,"title":"builder","slug":"builder","link":"#builder","children":[]},{"level":3,"title":"define","slug":"define","link":"#define","children":[]},{"level":3,"title":"dynamicImport","slug":"dynamicimport","link":"#dynamicimport","children":[]},{"level":3,"title":"inlineLimit","slug":"inlinelimit","link":"#inlinelimit","children":[]},{"level":3,"title":"mock","slug":"mock","link":"#mock","children":[]},{"level":3,"title":"mountElementId","slug":"mountelementid","link":"#mountelementid","children":[]},{"level":3,"title":"outputPath","slug":"outputpath","link":"#outputpath","children":[]},{"level":3,"title":"plugins","slug":"plugins","link":"#plugins","children":[]},{"level":3,"title":"proxy","slug":"proxy","link":"#proxy","children":[]},{"level":3,"title":"publicPath","slug":"publicpath","link":"#publicpath","children":[]},{"level":3,"title":"router","slug":"router","link":"#router","children":[]},{"level":3,"title":"singular","slug":"singular","link":"#singular","children":[]},{"level":3,"title":"targets","slug":"targets","link":"#targets","children":[]},{"level":3,"title":"terserOptions","slug":"terseroptions","link":"#terseroptions","children":[]},{"level":3,"title":"title","slug":"title","link":"#title","children":[]}]},{"level":2,"title":"webpack 专属配置","slug":"webpack-专属配置","link":"#webpack-专属配置","children":[{"level":3,"title":"analyze","slug":"analyze","link":"#analyze","children":[]},{"level":3,"title":"chainWebpack","slug":"chainwebpack","link":"#chainwebpack","children":[]},{"level":3,"title":"cssLoader","slug":"cssloader","link":"#cssloader","children":[]},{"level":3,"title":"copy","slug":"copy","link":"#copy","children":[]},{"level":3,"title":"devServer","slug":"devserver","link":"#devserver","children":[]},{"level":3,"title":"devtool","slug":"devtool","link":"#devtool","children":[]},{"level":3,"title":"exportStatic","slug":"exportstatic","link":"#exportstatic","children":[]},{"level":3,"title":"externals","slug":"externals","link":"#externals","children":[]},{"level":3,"title":"extraBabelPlugins","slug":"extrababelplugins","link":"#extrababelplugins","children":[]},{"level":3,"title":"extraBabelPresets","slug":"extrababelpresets","link":"#extrababelpresets","children":[]},{"level":3,"title":"extraPostCSSPlugins","slug":"extrapostcssplugins","link":"#extrapostcssplugins","children":[]},{"level":3,"title":"html","slug":"html","link":"#html","children":[]},{"level":3,"title":"lessLoader","slug":"lessloader","link":"#lessloader","children":[]},{"level":3,"title":"nodeModulesTransform","slug":"nodemodulestransform","link":"#nodemodulestransform","children":[]},{"level":3,"title":"postcssLoader","slug":"postcssloader","link":"#postcssloader","children":[]},{"level":3,"title":"vueLoader","slug":"vueloader","link":"#vueloader","children":[]}]},{"level":2,"title":"Vite 专属配置","slug":"vite-专属配置","link":"#vite-专属配置","children":[{"level":3,"title":"viteOption","slug":"viteoption","link":"#viteoption","children":[]},{"level":3,"title":"viteVuePlugin","slug":"vitevueplugin","link":"#vitevueplugin","children":[]},{"level":3,"title":"viteVueJsx","slug":"vitevuejsx","link":"#vitevuejsx","children":[]},{"level":3,"title":"viteLegacy","slug":"vitelegacy","link":"#vitelegacy","children":[]},{"level":3,"title":"viteHtml","slug":"vitehtml","link":"#vitehtml","children":[]}]},{"level":2,"title":"更多配置项","slug":"更多配置项","link":"#更多配置项","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/config/README.md"}');export{e as data};
diff --git a/assets/index.html.c3f5c27f.js b/assets/index.html.7e2b22df.js
similarity index 99%
rename from assets/index.html.c3f5c27f.js
rename to assets/index.html.7e2b22df.js
index 0ef11dbe..1143c9b3 100644
--- a/assets/index.html.c3f5c27f.js
+++ b/assets/index.html.7e2b22df.js
@@ -1,4 +1,4 @@
-import{_ as a,o as n,c as s,f as e}from"./app.1fff394b.js";const p={},i=e(`

插件介绍

开始

一个插件是一个 npm 包,它能够为 Fes.js 创建的项目添加额外的功能,这些功能包括:

  • 项目的 webpack 配置。
  • 修改项目的 babel 配置。
  • 添加新的 fes 命令 - 例如 @fes/plugin-jest 添加了 fes test 命令,允许开发者运行单元测试。
  • 集成 Vue 的插件。
  • 修改路由配置
  • 提供运行时 API
  • ...

插件的入口是一个函数,函数会以 API 对象作为第一个参数:

export default (api) => {
+import{_ as a,o as n,c as s,f as e}from"./app.005e0daf.js";const p={},i=e(`

插件介绍

开始

一个插件是一个 npm 包,它能够为 Fes.js 创建的项目添加额外的功能,这些功能包括:

  • 项目的 webpack 配置。
  • 修改项目的 babel 配置。
  • 添加新的 fes 命令 - 例如 @fes/plugin-jest 添加了 fes test 命令,允许开发者运行单元测试。
  • 集成 Vue 的插件。
  • 修改路由配置
  • 提供运行时 API
  • ...

插件的入口是一个函数,函数会以 API 对象作为第一个参数:

export default (api) => {
     api.describe({
         key: 'esbuild',
         config: {
diff --git a/assets/index.html.d0d11947.js b/assets/index.html.82e50780.js
similarity index 82%
rename from assets/index.html.d0d11947.js
rename to assets/index.html.82e50780.js
index 61f3d755..1474f306 100644
--- a/assets/index.html.d0d11947.js
+++ b/assets/index.html.82e50780.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-76cb52e8","path":"/reference/cli/","title":"命令行工具","lang":"zh-CN","frontmatter":{"sidebar":"auto"},"excerpt":"","headers":[{"level":2,"title":"create-fes-app","slug":"create-fes-app","link":"#create-fes-app","children":[]},{"level":2,"title":"fes","slug":"fes","link":"#fes","children":[{"level":3,"title":"fes dev","slug":"fes-dev","link":"#fes-dev","children":[]},{"level":3,"title":"fes build","slug":"fes-build","link":"#fes-build","children":[]},{"level":3,"title":"fes help","slug":"fes-help","link":"#fes-help","children":[]},{"level":3,"title":"fes info","slug":"fes-info","link":"#fes-info","children":[]},{"level":3,"title":"fes webpack","slug":"fes-webpack","link":"#fes-webpack","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/cli/README.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-76cb52e8","path":"/reference/cli/","title":"命令行工具","lang":"zh-CN","frontmatter":{"sidebar":"auto"},"excerpt":"","headers":[{"level":2,"title":"create-fes-app","slug":"create-fes-app","link":"#create-fes-app","children":[]},{"level":2,"title":"fes","slug":"fes","link":"#fes","children":[{"level":3,"title":"fes dev","slug":"fes-dev","link":"#fes-dev","children":[]},{"level":3,"title":"fes build","slug":"fes-build","link":"#fes-build","children":[]},{"level":3,"title":"fes help","slug":"fes-help","link":"#fes-help","children":[]},{"level":3,"title":"fes info","slug":"fes-info","link":"#fes-info","children":[]},{"level":3,"title":"fes webpack","slug":"fes-webpack","link":"#fes-webpack","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/cli/README.md"}');export{e as data};
diff --git a/assets/index.html.f01282d4.js b/assets/index.html.85db73e3.js
similarity index 83%
rename from assets/index.html.f01282d4.js
rename to assets/index.html.85db73e3.js
index 1c94d186..8e54ab55 100644
--- a/assets/index.html.f01282d4.js
+++ b/assets/index.html.85db73e3.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-fffb8e28","path":"/guide/","title":"介绍","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"痛点","slug":"痛点","link":"#痛点","children":[]},{"level":2,"title":"Fes.js 是什么?","slug":"fes-js-是什么","link":"#fes-js-是什么","children":[]},{"level":2,"title":"Fes.js 如何工作?","slug":"fes-js-如何工作","link":"#fes-js-如何工作","children":[{"level":3,"title":"架构","slug":"架构","link":"#架构","children":[]},{"level":3,"title":"插件和插件集","slug":"插件和插件集","link":"#插件和插件集","children":[]},{"level":3,"title":".fes 临时文件","slug":"fes-临时文件","link":"#fes-临时文件","children":[]}]},{"level":2,"title":"为什么不是 ...?","slug":"为什么不是","link":"#为什么不是","children":[{"level":3,"title":"Vue CLI","slug":"vue-cli","link":"#vue-cli","children":[]},{"level":3,"title":"UMI","slug":"umi","link":"#umi","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/README.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-fffb8e28","path":"/guide/","title":"介绍","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"痛点","slug":"痛点","link":"#痛点","children":[]},{"level":2,"title":"Fes.js 是什么?","slug":"fes-js-是什么","link":"#fes-js-是什么","children":[]},{"level":2,"title":"Fes.js 如何工作?","slug":"fes-js-如何工作","link":"#fes-js-如何工作","children":[{"level":3,"title":"架构","slug":"架构","link":"#架构","children":[]},{"level":3,"title":"插件和插件集","slug":"插件和插件集","link":"#插件和插件集","children":[]},{"level":3,"title":".fes 临时文件","slug":"fes-临时文件","link":"#fes-临时文件","children":[]}]},{"level":2,"title":"为什么不是 ...?","slug":"为什么不是","link":"#为什么不是","children":[{"level":3,"title":"Vue CLI","slug":"vue-cli","link":"#vue-cli","children":[]},{"level":3,"title":"UMI","slug":"umi","link":"#umi","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/README.md"}');export{e as data};
diff --git a/assets/index.html.2916e212.js b/assets/index.html.8a34550e.js
similarity index 99%
rename from assets/index.html.2916e212.js
rename to assets/index.html.8a34550e.js
index 0a66aa85..4b49815e 100644
--- a/assets/index.html.2916e212.js
+++ b/assets/index.html.8a34550e.js
@@ -1,4 +1,4 @@
-import{_ as p,r as o,o as i,c as r,b as s,d as n,a as e,f as t}from"./app.1fff394b.js";const c={},l=t(`

API

Fes.js 统一了API的出口,所有运行时API(包含Fes.js内置API和插件提供的API)全部通过@fesjs/fes导出。

import { someApi  } from "@fesjs/fes"
+import{_ as p,r as o,o as i,c as r,b as s,d as n,a as e,f as t}from"./app.005e0daf.js";const c={},l=t(`

API

Fes.js 统一了API的出口,所有运行时API(包含Fes.js内置API和插件提供的API)全部通过@fesjs/fes导出。

import { someApi  } from "@fesjs/fes"
 

基础API

plugin

提示

主要在插件里面使用,项目代码中一般用不到。

运行时插件接口,是 Fes.js 内置的跑在浏览器里的一套插件体系。

import { plugin, ApplyPluginsType } from '@fesjs/fes';
 
 // 注册插件
diff --git a/assets/index.html.2ac21041.js b/assets/index.html.b3f98887.js
similarity index 63%
rename from assets/index.html.2ac21041.js
rename to assets/index.html.b3f98887.js
index eea4a4d8..0cf7b778 100644
--- a/assets/index.html.2ac21041.js
+++ b/assets/index.html.b3f98887.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-494b840e","path":"/reference/plugin/dev/","title":"插件介绍","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"开始","slug":"开始","link":"#开始","children":[]},{"level":2,"title":"创建插件","slug":"创建插件","link":"#创建插件","children":[]},{"level":2,"title":"发布到 npm","slug":"发布到-npm","link":"#发布到-npm","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/dev/README.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-494b840e","path":"/reference/plugin/dev/","title":"插件介绍","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"开始","slug":"开始","link":"#开始","children":[]},{"level":2,"title":"创建插件","slug":"创建插件","link":"#创建插件","children":[]},{"level":2,"title":"发布到 npm","slug":"发布到-npm","link":"#发布到-npm","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/dev/README.md"}');export{e as data};
diff --git a/assets/index.html.c1c0d5f4.js b/assets/index.html.bc74ee4c.js
similarity index 91%
rename from assets/index.html.c1c0d5f4.js
rename to assets/index.html.bc74ee4c.js
index dfec2bec..3212fe62 100644
--- a/assets/index.html.c1c0d5f4.js
+++ b/assets/index.html.bc74ee4c.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"首页","lang":"zh-CN","frontmatter":{"home":true,"title":"首页","heroImage":"/logo.png","actions":[{"text":"快速上手","link":"/guide/getting-started.html","type":"primary"},{"text":"项目简介","link":"/guide/","type":"secondary"}],"features":[{"title":"Fast","details":"Fes.js 内置路由、构建、插件管理,提供测试、布局、权限、国际化、状态管理、请求、数据字典、SVG等插件,可以满足大部分日常开发需求。"},{"title":"Easy","details":"基于Vue.js 3.0,上手非常简单。贯彻 “约定优于配置” 思想,在设计插件上尽可能用约定替代配置,依然提供统一的插件配置入口,简单简洁又不失灵活。提供一致性的API入口,一致化的体验,学习起来更轻松。"},{"title":"Strong","details":"仅仅需要关心页面内容,减少犯错的机会!提供单元测试、覆盖测试的能力保障项目质量。"},{"title":"可扩展","details":"借鉴 UMI 实现完整的生命周期和插件化机制,插件可以管理项目的编译时和运行时,能力均可以通过插件封装进来,在 Fes.js 中协调有序的运行。"},{"title":"面向未来","details":"在满足需求的同时,我们也不会停止对新技术的探索。已使用 Vue3.0 来提升应用性能,已使用 webpack5 和 vite 提升构建性能和实现微服务。"},{"title":"令人愉悦","details":"我们的主要重点是开发人员体验。我们喜欢 Fes.js,并且会不断改进框架,所以您也喜欢它!期待有吸引力的解决方案,描述性的错误消息,强大的默认值和详细的文档。如果有问题或疑问,我们有用的社区将为您提供帮助。"}],"footer":"MIT Licensed | Copyright © 2020-present Webank"},"excerpt":"","headers":[{"level":2,"title":"像数 1, 2, 3 一样容易","slug":"像数-1-2-3-一样容易","link":"#像数-1-2-3-一样容易","children":[]},{"level":2,"title":"反馈","slug":"反馈","link":"#反馈","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"README.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"首页","lang":"zh-CN","frontmatter":{"home":true,"title":"首页","heroImage":"/logo.png","actions":[{"text":"快速上手","link":"/guide/getting-started.html","type":"primary"},{"text":"项目简介","link":"/guide/","type":"secondary"}],"features":[{"title":"Fast","details":"Fes.js 内置路由、构建、插件管理,提供测试、布局、权限、国际化、状态管理、请求、数据字典、SVG等插件,可以满足大部分日常开发需求。"},{"title":"Easy","details":"基于Vue.js 3.0,上手非常简单。贯彻 “约定优于配置” 思想,在设计插件上尽可能用约定替代配置,依然提供统一的插件配置入口,简单简洁又不失灵活。提供一致性的API入口,一致化的体验,学习起来更轻松。"},{"title":"Strong","details":"仅仅需要关心页面内容,减少犯错的机会!提供单元测试、覆盖测试的能力保障项目质量。"},{"title":"可扩展","details":"借鉴 UMI 实现完整的生命周期和插件化机制,插件可以管理项目的编译时和运行时,能力均可以通过插件封装进来,在 Fes.js 中协调有序的运行。"},{"title":"面向未来","details":"在满足需求的同时,我们也不会停止对新技术的探索。已使用 Vue3.0 来提升应用性能,已使用 webpack5 和 vite 提升构建性能和实现微服务。"},{"title":"令人愉悦","details":"我们的主要重点是开发人员体验。我们喜欢 Fes.js,并且会不断改进框架,所以您也喜欢它!期待有吸引力的解决方案,描述性的错误消息,强大的默认值和详细的文档。如果有问题或疑问,我们有用的社区将为您提供帮助。"}],"footer":"MIT Licensed | Copyright © 2020-present Webank"},"excerpt":"","headers":[{"level":2,"title":"像数 1, 2, 3 一样容易","slug":"像数-1-2-3-一样容易","link":"#像数-1-2-3-一样容易","children":[]},{"level":2,"title":"反馈","slug":"反馈","link":"#反馈","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"README.md"}');export{e as data};
diff --git a/assets/index.html.bbacd821.js b/assets/index.html.c22810d3.js
similarity index 99%
rename from assets/index.html.bbacd821.js
rename to assets/index.html.c22810d3.js
index a1ff604f..66be6515 100644
--- a/assets/index.html.bbacd821.js
+++ b/assets/index.html.c22810d3.js
@@ -1,4 +1,4 @@
-import{_ as p,r as l,o,c as i,b as n,d as s,a as e,f as t}from"./app.1fff394b.js";const c={},r=t(`

配置文件

Fes.js 内置了比较通用的构建方式,如果没有个性化需求,不需要修改构建相关的配置。

配置文件解析

Fes.js 会自动解析项目根目录下的 .fes.js 文件。

最基础的配置文件是这样的:

// .fes.js
+import{_ as p,r as l,o,c as i,b as n,d as s,a as e,f as t}from"./app.005e0daf.js";const c={},r=t(`

配置文件

Fes.js 内置了比较通用的构建方式,如果没有个性化需求,不需要修改构建相关的配置。

配置文件解析

Fes.js 会自动解析项目根目录下的 .fes.js 文件。

最基础的配置文件是这样的:

// .fes.js
 export default {};
 

可以通过环境变量 FES_ENV 进行环境差异化配置,当我们运行 FES_ENV=prod fes dev 时,Fes.js 会找到 .fes.js.fes.prod.js(可选) 的配置文件进行 deepmerge

配置智能提示

可以通过 defineBuildConfig 工具函数获取类型提示:

import { defineBuildConfig } from '@fesjs/fes';
 
diff --git a/assets/index.html.0609b1b7.js b/assets/index.html.d460e0cc.js
similarity index 64%
rename from assets/index.html.0609b1b7.js
rename to assets/index.html.d460e0cc.js
index d6f36236..317b4566 100644
--- a/assets/index.html.0609b1b7.js
+++ b/assets/index.html.d460e0cc.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-d61a9282","path":"/reference/plugin/","title":"介绍","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"插件列表","slug":"插件列表","link":"#插件列表","children":[]},{"level":2,"title":"架构","slug":"架构","link":"#架构","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/README.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-d61a9282","path":"/reference/plugin/","title":"介绍","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"插件列表","slug":"插件列表","link":"#插件列表","children":[]},{"level":2,"title":"架构","slug":"架构","link":"#架构","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/README.md"}');export{e as data};
diff --git a/assets/jest.html.fbca39c1.js b/assets/jest.html.9bcb2ce1.js
similarity index 99%
rename from assets/jest.html.fbca39c1.js
rename to assets/jest.html.9bcb2ce1.js
index 0c7ae238..34ae3559 100644
--- a/assets/jest.html.fbca39c1.js
+++ b/assets/jest.html.9bcb2ce1.js
@@ -1,4 +1,4 @@
-import{_ as a,r as l,o as r,c as d,b as n,d as e,a as i,f as t}from"./app.1fff394b.js";const o={},c=n("h1",{id:"fesjs-plugin-jest",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#fesjs-plugin-jest","aria-hidden":"true"},"#"),e(" @fesjs/plugin-jest")],-1),u={href:"https://www.jestjs.cn/",target:"_blank",rel:"noopener noreferrer"},v=t(`

启用方式

package.json 中引入依赖:

{
+import{_ as a,r as l,o as r,c as d,b as n,d as e,a as i,f as t}from"./app.005e0daf.js";const o={},c=n("h1",{id:"fesjs-plugin-jest",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#fesjs-plugin-jest","aria-hidden":"true"},"#"),e(" @fesjs/plugin-jest")],-1),u={href:"https://www.jestjs.cn/",target:"_blank",rel:"noopener noreferrer"},v=t(`

启用方式

package.json 中引入依赖:

{
     "dependencies": {
         "@fesjs/fes": "^3.0.0",
         "@fesjs/plugin-jest": "^3.0.0"
diff --git a/assets/jest.html.e33cf0c4.js b/assets/jest.html.de551700.js
similarity index 80%
rename from assets/jest.html.e33cf0c4.js
rename to assets/jest.html.de551700.js
index 34119958..d88ec526 100644
--- a/assets/jest.html.e33cf0c4.js
+++ b/assets/jest.html.de551700.js
@@ -1 +1 @@
-const e=JSON.parse('{"key":"v-3cd5a4ef","path":"/reference/plugin/plugins/jest.html","title":"@fesjs/plugin-jest","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"约定","slug":"约定","link":"#约定","children":[]},{"level":2,"title":"命令","slug":"命令","link":"#命令","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"args 变量","slug":"args-变量","link":"#args-变量","children":[]},{"level":3,"title":"配置文件","slug":"配置文件","link":"#配置文件","children":[]},{"level":3,"title":"优先级","slug":"优先级","link":"#优先级","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/jest.md"}');export{e as data};
+const e=JSON.parse('{"key":"v-3cd5a4ef","path":"/reference/plugin/plugins/jest.html","title":"@fesjs/plugin-jest","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"约定","slug":"约定","link":"#约定","children":[]},{"level":2,"title":"命令","slug":"命令","link":"#命令","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"args 变量","slug":"args-变量","link":"#args-变量","children":[]},{"level":3,"title":"配置文件","slug":"配置文件","link":"#配置文件","children":[]},{"level":3,"title":"优先级","slug":"优先级","link":"#优先级","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/jest.md"}');export{e as data};
diff --git a/assets/layout.html.198d11d8.js b/assets/layout.html.b7ee50eb.js
similarity index 99%
rename from assets/layout.html.198d11d8.js
rename to assets/layout.html.b7ee50eb.js
index 37b03d69..96752f53 100644
--- a/assets/layout.html.198d11d8.js
+++ b/assets/layout.html.b7ee50eb.js
@@ -1,4 +1,4 @@
-import{_ as u,r as c,o as r,c as d,b as n,d as s,a as e,w as o,e as l,f as a}from"./app.1fff394b.js";const k={},v=n("h1",{id:"fesjs-plugin-layout",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#fesjs-plugin-layout","aria-hidden":"true"},"#"),s(" @fesjs/plugin-layout")],-1),g=n("h2",{id:"介绍",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),s(" 介绍")],-1),h=n("p",null,[s("为了进一步降低研发成本,我们将布局利用 "),n("code",null,"fes.js"),s(" 插件的方式内置,只需通过简单的配置即可拥有布局,包括导航以及侧边栏。从而做到用户无需关心布局。")],-1),m=a("
  • 侧边栏菜单数据根据路由中的配置自动生成。
  • 布局,提供 sidetopmixinleft-right 四种布局。
  • 主题,提供 lightdark 两种主题。
  • 默认实现对路由的 404、403 处理。
  • ",4),b=n("li",null,"支持自定义头部或者侧边栏区域。",-1),f=n("li",null,"菜单支持配置 icon。",-1),_=n("li",null,"菜单标题支持国际化。",-1),x=n("li",null,"可配置页面是否需要 layout。",-1),y=a(`

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as u,r as c,o as r,c as d,b as n,d as s,a as e,w as o,e as l,f as a}from"./app.005e0daf.js";const k={},v=n("h1",{id:"fesjs-plugin-layout",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#fesjs-plugin-layout","aria-hidden":"true"},"#"),s(" @fesjs/plugin-layout")],-1),g=n("h2",{id:"介绍",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),s(" 介绍")],-1),h=n("p",null,[s("为了进一步降低研发成本,我们将布局利用 "),n("code",null,"fes.js"),s(" 插件的方式内置,只需通过简单的配置即可拥有布局,包括导航以及侧边栏。从而做到用户无需关心布局。")],-1),m=a("
  • 侧边栏菜单数据根据路由中的配置自动生成。
  • 布局,提供 sidetopmixinleft-right 四种布局。
  • 主题,提供 lightdark 两种主题。
  • 默认实现对路由的 404、403 处理。
  • ",4),b=n("li",null,"支持自定义头部或者侧边栏区域。",-1),f=n("li",null,"菜单支持配置 icon。",-1),_=n("li",null,"菜单标题支持国际化。",-1),x=n("li",null,"可配置页面是否需要 layout。",-1),y=a(`

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-layout": "^5.0.0"
    diff --git a/assets/layout.html.1fadc1b9.js b/assets/layout.html.bccb8e74.js
    similarity index 89%
    rename from assets/layout.html.1fadc1b9.js
    rename to assets/layout.html.bccb8e74.js
    index 00dc13be..9c6c619b 100644
    --- a/assets/layout.html.1fadc1b9.js
    +++ b/assets/layout.html.bccb8e74.js
    @@ -1 +1 @@
    -const l=JSON.parse('{"key":"v-355ee23e","path":"/reference/plugin/plugins/layout.html","title":"@fesjs/plugin-layout","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"布局类型","slug":"布局类型","link":"#布局类型","children":[{"level":3,"title":"side","slug":"side","link":"#side","children":[]},{"level":3,"title":"top","slug":"top","link":"#top","children":[]},{"level":3,"title":"mixin","slug":"mixin","link":"#mixin","children":[]},{"level":3,"title":"left-right","slug":"left-right","link":"#left-right","children":[]},{"level":3,"title":"页面个性化","slug":"页面个性化","link":"#页面个性化","children":[]}]},{"level":2,"title":"页面缓存","slug":"页面缓存","link":"#页面缓存","children":[{"level":3,"title":"处理嵌套路由","slug":"处理嵌套路由","link":"#处理嵌套路由","children":[]}]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"footer","slug":"footer","link":"#footer","children":[]},{"level":3,"title":"theme","slug":"theme","link":"#theme","children":[]},{"level":3,"title":"navigation","slug":"navigation","link":"#navigation","children":[]},{"level":3,"title":"isFixedHeader","slug":"isfixedheader","link":"#isfixedheader","children":[]},{"level":3,"title":"isFixedSidebar","slug":"isfixedsidebar","link":"#isfixedsidebar","children":[]},{"level":3,"title":"title","slug":"title","link":"#title","children":[]},{"level":3,"title":"logo","slug":"logo","link":"#logo","children":[]},{"level":3,"title":"multiTabs","slug":"multitabs","link":"#multitabs","children":[]},{"level":3,"title":"menus","slug":"menus","link":"#menus","children":[]},{"level":3,"title":"menuProps","slug":"menuprops","link":"#menuprops","children":[]},{"level":3,"title":"sideWidth","slug":"sidewidth","link":"#sidewidth","children":[]},{"level":3,"title":"renderCustom","slug":"rendercustom","link":"#rendercustom","children":[]},{"level":3,"title":"unAccessHandler","slug":"unaccesshandler","link":"#unaccesshandler","children":[]},{"level":3,"title":"noFoundHandler","slug":"nofoundhandler","link":"#nofoundhandler","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"useTabTitle","slug":"usetabtitle","link":"#usetabtitle","children":[]}]},{"level":2,"title":"4.x 升级到 5.x","slug":"_4-x-升级到-5-x","link":"#_4-x-升级到-5-x","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/layout.md"}');export{l as data};
    +const e=JSON.parse('{"key":"v-355ee23e","path":"/reference/plugin/plugins/layout.html","title":"@fesjs/plugin-layout","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"布局类型","slug":"布局类型","link":"#布局类型","children":[{"level":3,"title":"side","slug":"side","link":"#side","children":[]},{"level":3,"title":"top","slug":"top","link":"#top","children":[]},{"level":3,"title":"mixin","slug":"mixin","link":"#mixin","children":[]},{"level":3,"title":"left-right","slug":"left-right","link":"#left-right","children":[]},{"level":3,"title":"页面个性化","slug":"页面个性化","link":"#页面个性化","children":[]}]},{"level":2,"title":"页面缓存","slug":"页面缓存","link":"#页面缓存","children":[{"level":3,"title":"处理嵌套路由","slug":"处理嵌套路由","link":"#处理嵌套路由","children":[]}]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"footer","slug":"footer","link":"#footer","children":[]},{"level":3,"title":"theme","slug":"theme","link":"#theme","children":[]},{"level":3,"title":"navigation","slug":"navigation","link":"#navigation","children":[]},{"level":3,"title":"isFixedHeader","slug":"isfixedheader","link":"#isfixedheader","children":[]},{"level":3,"title":"isFixedSidebar","slug":"isfixedsidebar","link":"#isfixedsidebar","children":[]},{"level":3,"title":"title","slug":"title","link":"#title","children":[]},{"level":3,"title":"logo","slug":"logo","link":"#logo","children":[]},{"level":3,"title":"multiTabs","slug":"multitabs","link":"#multitabs","children":[]},{"level":3,"title":"menus","slug":"menus","link":"#menus","children":[]},{"level":3,"title":"menuProps","slug":"menuprops","link":"#menuprops","children":[]},{"level":3,"title":"sideWidth","slug":"sidewidth","link":"#sidewidth","children":[]},{"level":3,"title":"renderCustom","slug":"rendercustom","link":"#rendercustom","children":[]},{"level":3,"title":"unAccessHandler","slug":"unaccesshandler","link":"#unaccesshandler","children":[]},{"level":3,"title":"noFoundHandler","slug":"nofoundhandler","link":"#nofoundhandler","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"useTabTitle","slug":"usetabtitle","link":"#usetabtitle","children":[]}]},{"level":2,"title":"4.x 升级到 5.x","slug":"_4-x-升级到-5-x","link":"#_4-x-升级到-5-x","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/layout.md"}');export{e as data};
    diff --git a/assets/locale.html.b34d3672.js b/assets/locale.html.4d3b3790.js
    similarity index 83%
    rename from assets/locale.html.b34d3672.js
    rename to assets/locale.html.4d3b3790.js
    index ce06cb68..513f023f 100644
    --- a/assets/locale.html.b34d3672.js
    +++ b/assets/locale.html.4d3b3790.js
    @@ -1 +1 @@
    -const l=JSON.parse('{"key":"v-411c0c9e","path":"/reference/plugin/plugins/locale.html","title":"@fesjs/plugin-locale","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"约定式配置","slug":"约定式配置","link":"#约定式配置","children":[]},{"level":3,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[]},{"level":3,"title":"运行时配置","slug":"运行时配置","link":"#运行时配置","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"locale","slug":"locale-1","link":"#locale-1","children":[]},{"level":3,"title":"useI18n","slug":"usei18n","link":"#usei18n","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/locale.md"}');export{l as data};
    +const l=JSON.parse('{"key":"v-411c0c9e","path":"/reference/plugin/plugins/locale.html","title":"@fesjs/plugin-locale","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[{"level":3,"title":"约定式配置","slug":"约定式配置","link":"#约定式配置","children":[]},{"level":3,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[]},{"level":3,"title":"运行时配置","slug":"运行时配置","link":"#运行时配置","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"locale","slug":"locale-1","link":"#locale-1","children":[]},{"level":3,"title":"useI18n","slug":"usei18n","link":"#usei18n","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/locale.md"}');export{l as data};
    diff --git a/assets/locale.html.8706b2b3.js b/assets/locale.html.c1dcd857.js
    similarity index 99%
    rename from assets/locale.html.8706b2b3.js
    rename to assets/locale.html.c1dcd857.js
    index 01c25a38..eff0d123 100644
    --- a/assets/locale.html.8706b2b3.js
    +++ b/assets/locale.html.c1dcd857.js
    @@ -1,4 +1,4 @@
    -import{_ as o,r as p,o as l,c,b as s,d as n,a as e,f as t}from"./app.1fff394b.js";const i={},r=s("h1",{id:"fesjs-plugin-locale",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-locale","aria-hidden":"true"},"#"),n(" @fesjs/plugin-locale")],-1),u=s("h2",{id:"介绍",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),n(" 介绍")],-1),d={href:"https://github.com/intlify/vue-i18n-next",target:"_blank",rel:"noopener noreferrer"},k=t(`

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as o,r as p,o as l,c,b as s,d as n,a as e,f as t}from"./app.005e0daf.js";const i={},r=s("h1",{id:"fesjs-plugin-locale",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-locale","aria-hidden":"true"},"#"),n(" @fesjs/plugin-locale")],-1),u=s("h2",{id:"介绍",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),n(" 介绍")],-1),d={href:"https://github.com/intlify/vue-i18n-next",target:"_blank",rel:"noopener noreferrer"},k=t(`

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-locale": "^3.0.0"
    diff --git a/assets/login.html.d631dbb6.js b/assets/login.html.0ea4b7ad.js
    similarity index 98%
    rename from assets/login.html.d631dbb6.js
    rename to assets/login.html.0ea4b7ad.js
    index 6d879fe2..069c8ffd 100644
    --- a/assets/login.html.d631dbb6.js
    +++ b/assets/login.html.0ea4b7ad.js
    @@ -1,4 +1,4 @@
    -import{_ as n,o as s,c as a,f as e}from"./app.1fff394b.js";const t={},o=e(`

    @fesjs/plugin-login

    介绍

    管理自定义 login 页面,包括 login 页面权限问题,跳转登陆问题。

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as n,o as s,c as a,f as e}from"./app.005e0daf.js";const t={},o=e(`

    @fesjs/plugin-login

    介绍

    管理自定义 login 页面,包括 login 页面权限问题,跳转登陆问题。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-login": "^3.0.0"
    diff --git a/assets/login.html.69f1e79f.js b/assets/login.html.2f0338ab.js
    similarity index 70%
    rename from assets/login.html.69f1e79f.js
    rename to assets/login.html.2f0338ab.js
    index 7b8a9aa0..53af8ce7 100644
    --- a/assets/login.html.69f1e79f.js
    +++ b/assets/login.html.2f0338ab.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-56ab05de","path":"/reference/plugin/plugins/login.html","title":"@fesjs/plugin-login","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"运行时配置","slug":"运行时配置","link":"#运行时配置","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/login.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-56ab05de","path":"/reference/plugin/plugins/login.html","title":"@fesjs/plugin-login","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"运行时配置","slug":"运行时配置","link":"#运行时配置","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/login.md"}');export{e as data};
    diff --git a/assets/mock.html.1d7540bc.js b/assets/mock.html.6d653289.js
    similarity index 81%
    rename from assets/mock.html.1d7540bc.js
    rename to assets/mock.html.6d653289.js
    index 8d3dd3fd..303e103f 100644
    --- a/assets/mock.html.1d7540bc.js
    +++ b/assets/mock.html.6d653289.js
    @@ -1 +1 @@
    -const l=JSON.parse('{"key":"v-00cf7e23","path":"/guide/mock.html","title":"Mock 数据","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"约定式 Mock 文件","slug":"约定式-mock-文件","link":"#约定式-mock-文件","children":[]},{"level":2,"title":"编写 Mock 文件","slug":"编写-mock-文件","link":"#编写-mock-文件","children":[{"level":3,"title":"cgiMock 参数","slug":"cgimock-参数","link":"#cgimock-参数","children":[]},{"level":3,"title":"mockjs 参数","slug":"mockjs-参数","link":"#mockjs-参数","children":[]},{"level":3,"title":"utils 参数","slug":"utils-参数","link":"#utils-参数","children":[]}]},{"level":2,"title":"配置 Mock","slug":"配置-mock","link":"#配置-mock","children":[]},{"level":2,"title":"关闭 Mock","slug":"关闭-mock","link":"#关闭-mock","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/mock.md"}');export{l as data};
    +const l=JSON.parse('{"key":"v-00cf7e23","path":"/guide/mock.html","title":"Mock 数据","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"约定式 Mock 文件","slug":"约定式-mock-文件","link":"#约定式-mock-文件","children":[]},{"level":2,"title":"编写 Mock 文件","slug":"编写-mock-文件","link":"#编写-mock-文件","children":[{"level":3,"title":"cgiMock 参数","slug":"cgimock-参数","link":"#cgimock-参数","children":[]},{"level":3,"title":"mockjs 参数","slug":"mockjs-参数","link":"#mockjs-参数","children":[]},{"level":3,"title":"utils 参数","slug":"utils-参数","link":"#utils-参数","children":[]}]},{"level":2,"title":"配置 Mock","slug":"配置-mock","link":"#配置-mock","children":[]},{"level":2,"title":"关闭 Mock","slug":"关闭-mock","link":"#关闭-mock","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/mock.md"}');export{l as data};
    diff --git a/assets/mock.html.80f47335.js b/assets/mock.html.9cef5d45.js
    similarity index 99%
    rename from assets/mock.html.80f47335.js
    rename to assets/mock.html.9cef5d45.js
    index d90f1b7e..7a1b1fb7 100644
    --- a/assets/mock.html.80f47335.js
    +++ b/assets/mock.html.9cef5d45.js
    @@ -1,4 +1,4 @@
    -import{_ as c,r as p,o as i,c as l,b as s,d as n,a as t,w as u,f as a}from"./app.1fff394b.js";const r={},k=a(`

    Mock 数据

    Mock 数据是前端开发过程中必不可少的一环,是分离前后端开发的关键链路。通过预先跟服务器端约定好的接口,模拟请求数据甚至逻辑,能够让前端开发独立自主,不会被服务端的开发所阻塞。

    约定式 Mock 文件

    Fes.js 约定 ./mock.js 为 mock 文件。

    比如:

    .
    +import{_ as c,r as p,o as i,c as l,b as s,d as n,a as t,w as u,f as a}from"./app.005e0daf.js";const r={},k=a(`

    Mock 数据

    Mock 数据是前端开发过程中必不可少的一环,是分离前后端开发的关键链路。通过预先跟服务器端约定好的接口,模拟请求数据甚至逻辑,能够让前端开发独立自主,不会被服务端的开发所阻塞。

    约定式 Mock 文件

    Fes.js 约定 ./mock.js 为 mock 文件。

    比如:

    .
     ├── mock.js
     └── src
         └── pages
    diff --git a/assets/model.html.9b462f64.js b/assets/model.html.3cd49de2.js
    similarity index 99%
    rename from assets/model.html.9b462f64.js
    rename to assets/model.html.3cd49de2.js
    index a3f464ba..2ec226c1 100644
    --- a/assets/model.html.9b462f64.js
    +++ b/assets/model.html.3cd49de2.js
    @@ -1,4 +1,4 @@
    -import{_ as n,o as s,c as a,f as t}from"./app.1fff394b.js";const e={},p=t(`

    @fesjs/plugin-model

    启用方式

    在 package.json 中引入依赖:

    {
    +import{_ as n,o as s,c as a,f as t}from"./app.005e0daf.js";const e={},p=t(`

    @fesjs/plugin-model

    启用方式

    在 package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-model": "^3.0.0"
    diff --git a/assets/model.html.72d355a9.js b/assets/model.html.fab33d63.js
    similarity index 83%
    rename from assets/model.html.72d355a9.js
    rename to assets/model.html.fab33d63.js
    index 0c310c1f..fe07d81f 100644
    --- a/assets/model.html.72d355a9.js
    +++ b/assets/model.html.fab33d63.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-3c4e521e","path":"/reference/plugin/plugins/model.html","title":"@fesjs/plugin-model","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[{"level":3,"title":"Model 文件","slug":"model-文件","link":"#model-文件","children":[]},{"level":3,"title":"在组件中使用 Model","slug":"在组件中使用-model","link":"#在组件中使用-model","children":[]},{"level":3,"title":"@@initialState","slug":"initialstate","link":"#initialstate","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"useModel","slug":"usemodel","link":"#usemodel","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/model.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-3c4e521e","path":"/reference/plugin/plugins/model.html","title":"@fesjs/plugin-model","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[{"level":3,"title":"Model 文件","slug":"model-文件","link":"#model-文件","children":[]},{"level":3,"title":"在组件中使用 Model","slug":"在组件中使用-model","link":"#在组件中使用-model","children":[]},{"level":3,"title":"@@initialState","slug":"initialstate","link":"#initialstate","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"useModel","slug":"usemodel","link":"#usemodel","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/model.md"}');export{e as data};
    diff --git a/assets/pinia.html.36d2f07b.js b/assets/pinia.html.1e6ca3bb.js
    similarity index 83%
    rename from assets/pinia.html.36d2f07b.js
    rename to assets/pinia.html.1e6ca3bb.js
    index 4199d9e2..d2c48906 100644
    --- a/assets/pinia.html.36d2f07b.js
    +++ b/assets/pinia.html.1e6ca3bb.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-6f2f6a5a","path":"/reference/plugin/plugins/pinia.html","title":"@fesjs/plugin-pinia","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"pinia","slug":"pinia","link":"#pinia","children":[]}]},{"level":2,"title":"使用","slug":"使用","link":"#使用","children":[{"level":3,"title":"定义 store","slug":"定义-store","link":"#定义-store","children":[]},{"level":3,"title":"setup","slug":"setup","link":"#setup","children":[]},{"level":3,"title":"非 setup","slug":"非-setup","link":"#非-setup","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/pinia.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-6f2f6a5a","path":"/reference/plugin/plugins/pinia.html","title":"@fesjs/plugin-pinia","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"pinia","slug":"pinia","link":"#pinia","children":[]}]},{"level":2,"title":"使用","slug":"使用","link":"#使用","children":[{"level":3,"title":"定义 store","slug":"定义-store","link":"#定义-store","children":[]},{"level":3,"title":"setup","slug":"setup","link":"#setup","children":[]},{"level":3,"title":"非 setup","slug":"非-setup","link":"#非-setup","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/pinia.md"}');export{e as data};
    diff --git a/assets/pinia.html.7f9b2e48.js b/assets/pinia.html.1eb91490.js
    similarity index 99%
    rename from assets/pinia.html.7f9b2e48.js
    rename to assets/pinia.html.1eb91490.js
    index d86fa7ef..562f2974 100644
    --- a/assets/pinia.html.7f9b2e48.js
    +++ b/assets/pinia.html.1eb91490.js
    @@ -1,4 +1,4 @@
    -import{_ as e,r as t,o as p,c as o,b as n,d as s,a as i,f as c}from"./app.1fff394b.js";const l={},r=n("h1",{id:"fesjs-plugin-pinia",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#fesjs-plugin-pinia","aria-hidden":"true"},"#"),s(" @fesjs/plugin-pinia")],-1),u=n("h2",{id:"介绍",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),s(" 介绍")],-1),d={href:"https://pinia.vuejs.org/",target:"_blank",rel:"noopener noreferrer"},k=c(`

    为了防止 Fes.jspinia 提供的 API 冲突,Fes.js不提供任何 pinia 的 API,相关 API 直接从 pinia 导出:

    import { defineStore } from 'pinia';
    +import{_ as e,r as t,o as p,c as o,b as n,d as s,a as i,f as c}from"./app.005e0daf.js";const l={},r=n("h1",{id:"fesjs-plugin-pinia",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#fesjs-plugin-pinia","aria-hidden":"true"},"#"),s(" @fesjs/plugin-pinia")],-1),u=n("h2",{id:"介绍",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),s(" 介绍")],-1),d={href:"https://pinia.vuejs.org/",target:"_blank",rel:"noopener noreferrer"},k=c(`

    为了防止 Fes.jspinia 提供的 API 冲突,Fes.js不提供任何 pinia 的 API,相关 API 直接从 pinia 导出:

    import { defineStore } from 'pinia';
     

    约定 plugin 定义放在 stores 目录下,文件名包含 plugin 被解析为插件,无需额外配置,定义即可用。

    └── src
         ├── pages
         │    └── index.vue
    diff --git a/assets/plugin.html.65e2e2cd.js b/assets/plugin.html.0095f814.js
    similarity index 99%
    rename from assets/plugin.html.65e2e2cd.js
    rename to assets/plugin.html.0095f814.js
    index 3b8bdbe9..a45d4974 100644
    --- a/assets/plugin.html.65e2e2cd.js
    +++ b/assets/plugin.html.0095f814.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as a,c as e,f as n}from"./app.1fff394b.js";const o={},p=n(`

    插件

    插件的 id 和 key

    每个插件都会对应一个 id 和一个 keyid 是路径的简写,key 是进一步简化后用于配置的唯一值

    比如插件 /node_modules/@fesjs/plugin-foo/index.js,通常来说,其 id@fesjs/plugin-fookeyfoo

    提示

    id 一般用不上,对于普通开发者 key 用来配置插件,而插件开发者可以使用 key 判断是否安装某个插件。

    启动插件

    有多种方式引入插件

    package.json 依赖

    Fes.js 会自动检测 dependenciesdevDependencies 里的 fes 插件,比如:

    {
    +import{_ as s,o as a,c as e,f as n}from"./app.005e0daf.js";const o={},p=n(`

    插件

    插件的 id 和 key

    每个插件都会对应一个 id 和一个 keyid 是路径的简写,key 是进一步简化后用于配置的唯一值

    比如插件 /node_modules/@fesjs/plugin-foo/index.js,通常来说,其 id@fesjs/plugin-fookeyfoo

    提示

    id 一般用不上,对于普通开发者 key 用来配置插件,而插件开发者可以使用 key 判断是否安装某个插件。

    启动插件

    有多种方式引入插件

    package.json 依赖

    Fes.js 会自动检测 dependenciesdevDependencies 里的 fes 插件,比如:

    {
         "dependencies": {
             "@fesjs/plugin-request": "^3.0.0"
         }
    diff --git a/assets/plugin.html.4294c881.js b/assets/plugin.html.ccfb9074.js
    similarity index 83%
    rename from assets/plugin.html.4294c881.js
    rename to assets/plugin.html.ccfb9074.js
    index ce7edc02..ffc39993 100644
    --- a/assets/plugin.html.4294c881.js
    +++ b/assets/plugin.html.ccfb9074.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-1d14d5cc","path":"/guide/plugin.html","title":"插件","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"插件的 id 和 key","slug":"插件的-id-和-key","link":"#插件的-id-和-key","children":[]},{"level":2,"title":"启动插件","slug":"启动插件","link":"#启动插件","children":[{"level":3,"title":"package.json 依赖","slug":"package-json-依赖","link":"#package-json-依赖","children":[]},{"level":3,"title":"配置","slug":"配置","link":"#配置","children":[]},{"level":3,"title":"环境变量","slug":"环境变量","link":"#环境变量","children":[]}]},{"level":2,"title":"禁用插件","slug":"禁用插件","link":"#禁用插件","children":[]},{"level":2,"title":"配置插件","slug":"配置插件","link":"#配置插件","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/plugin.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-1d14d5cc","path":"/guide/plugin.html","title":"插件","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"插件的 id 和 key","slug":"插件的-id-和-key","link":"#插件的-id-和-key","children":[]},{"level":2,"title":"启动插件","slug":"启动插件","link":"#启动插件","children":[{"level":3,"title":"package.json 依赖","slug":"package-json-依赖","link":"#package-json-依赖","children":[]},{"level":3,"title":"配置","slug":"配置","link":"#配置","children":[]},{"level":3,"title":"环境变量","slug":"环境变量","link":"#环境变量","children":[]}]},{"level":2,"title":"禁用插件","slug":"禁用插件","link":"#禁用插件","children":[]},{"level":2,"title":"配置插件","slug":"配置插件","link":"#配置插件","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/plugin.md"}');export{e as data};
    diff --git a/assets/public.html.b43d4cac.js b/assets/public.html.848eef99.js
    similarity index 98%
    rename from assets/public.html.b43d4cac.js
    rename to assets/public.html.848eef99.js
    index 1f66a3c2..ffca3fcf 100644
    --- a/assets/public.html.b43d4cac.js
    +++ b/assets/public.html.848eef99.js
    @@ -1,4 +1,4 @@
    -import{_ as n,o as a,c as s,f as t}from"./app.1fff394b.js";const e={},p=t(`

    静态资源

    有些内容不需要经过 webpack 模块化处理,则可以将这些内容放在 public 文件夹,构建后会直接复制到 dist 目录,所以你需要通过BASE_URL来引入它们。

    在 HTML 模板中使用

    index.html 中需要设置:

    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
    +import{_ as n,o as a,c as s,f as t}from"./app.005e0daf.js";const e={},p=t(`

    静态资源

    有些内容不需要经过 webpack 模块化处理,则可以将这些内容放在 public 文件夹,构建后会直接复制到 dist 目录,所以你需要通过BASE_URL来引入它们。

    在 HTML 模板中使用

    index.html 中需要设置:

    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
     

    在.vue 和 js 文件中使用

    <template>
         <img :src="\`\${publicPath}my-image.png\`" />
     </template>
    diff --git a/assets/public.html.ce835cb0.js b/assets/public.html.9d99cf84.js
    similarity index 75%
    rename from assets/public.html.ce835cb0.js
    rename to assets/public.html.9d99cf84.js
    index b09865b6..481e2102 100644
    --- a/assets/public.html.ce835cb0.js
    +++ b/assets/public.html.9d99cf84.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-7b96e3a4","path":"/guide/public.html","title":"静态资源","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"在 HTML 模板中使用","slug":"在-html-模板中使用","link":"#在-html-模板中使用","children":[]},{"level":3,"title":"在.vue 和 js 文件中使用","slug":"在-vue-和-js-文件中使用","link":"#在-vue-和-js-文件中使用","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/public.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-7b96e3a4","path":"/guide/public.html","title":"静态资源","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"在 HTML 模板中使用","slug":"在-html-模板中使用","link":"#在-html-模板中使用","children":[]},{"level":3,"title":"在.vue 和 js 文件中使用","slug":"在-vue-和-js-文件中使用","link":"#在-vue-和-js-文件中使用","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/public.md"}');export{e as data};
    diff --git a/assets/qiankun.html.87eae9e6.js b/assets/qiankun.html.b3592391.js
    similarity index 99%
    rename from assets/qiankun.html.87eae9e6.js
    rename to assets/qiankun.html.b3592391.js
    index 3e96434c..b28a1f18 100644
    --- a/assets/qiankun.html.87eae9e6.js
    +++ b/assets/qiankun.html.b3592391.js
    @@ -1,4 +1,4 @@
    -import{_ as c,r as p,o as i,c as l,b as s,d as n,a,w as u,f as e}from"./app.1fff394b.js";const r={},d=s("h1",{id:"fesjs-plugin-qiankun",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-qiankun","aria-hidden":"true"},"#"),n(" @fesjs/plugin-qiankun")],-1),k={href:"https://qiankun.umijs.org/",target:"_blank",rel:"noopener noreferrer"},v={href:"https://umijs.org/zh-CN/plugins/plugin-qiankun#MicroApp",target:"_blank",rel:"noopener noreferrer"},m=e(`

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as c,r as p,o as i,c as l,b as s,d as n,a,w as u,f as e}from"./app.005e0daf.js";const r={},d=s("h1",{id:"fesjs-plugin-qiankun",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-qiankun","aria-hidden":"true"},"#"),n(" @fesjs/plugin-qiankun")],-1),k={href:"https://qiankun.umijs.org/",target:"_blank",rel:"noopener noreferrer"},v={href:"https://umijs.org/zh-CN/plugins/plugin-qiankun#MicroApp",target:"_blank",rel:"noopener noreferrer"},m=e(`

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-qiankun": "^3.0.0"
    diff --git a/assets/qiankun.html.fef1ea5f.js b/assets/qiankun.html.deb33c50.js
    similarity index 90%
    rename from assets/qiankun.html.fef1ea5f.js
    rename to assets/qiankun.html.deb33c50.js
    index 1d24361c..824435ea 100644
    --- a/assets/qiankun.html.fef1ea5f.js
    +++ b/assets/qiankun.html.deb33c50.js
    @@ -1 +1 @@
    -const l=JSON.parse('{"key":"v-b15becb0","path":"/reference/plugin/plugins/qiankun.html","title":"@fesjs/plugin-qiankun","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"主应用配置","slug":"主应用配置","link":"#主应用配置","children":[{"level":3,"title":"第一步:注册子应用","slug":"第一步-注册子应用","link":"#第一步-注册子应用","children":[]},{"level":3,"title":"第二步:装载子应用","slug":"第二步-装载子应用","link":"#第二步-装载子应用","children":[]}]},{"level":2,"title":"子应用配置","slug":"子应用配置","link":"#子应用配置","children":[{"level":3,"title":"第一步:插件注册","slug":"第一步-插件注册","link":"#第一步-插件注册","children":[]},{"level":3,"title":"第二步:配置运行时生命周期钩子(可选)","slug":"第二步-配置运行时生命周期钩子-可选","link":"#第二步-配置运行时生命周期钩子-可选","children":[]}]},{"level":2,"title":"父子应用通讯","slug":"父子应用通讯","link":"#父子应用通讯","children":[{"level":3,"title":"配合 useModel 使用","slug":"配合-usemodel-使用","link":"#配合-usemodel-使用","children":[]},{"level":3,"title":"基于 props 传递","slug":"基于-props-传递","link":"#基于-props-传递","children":[]},{"level":3,"title":"MicroApp","slug":"microapp","link":"#microapp","children":[]},{"level":3,"title":"MicroAppWithMemoHistory","slug":"microappwithmemohistory","link":"#microappwithmemohistory","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/qiankun.md"}');export{l as data};
    +const l=JSON.parse('{"key":"v-b15becb0","path":"/reference/plugin/plugins/qiankun.html","title":"@fesjs/plugin-qiankun","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"主应用配置","slug":"主应用配置","link":"#主应用配置","children":[{"level":3,"title":"第一步:注册子应用","slug":"第一步-注册子应用","link":"#第一步-注册子应用","children":[]},{"level":3,"title":"第二步:装载子应用","slug":"第二步-装载子应用","link":"#第二步-装载子应用","children":[]}]},{"level":2,"title":"子应用配置","slug":"子应用配置","link":"#子应用配置","children":[{"level":3,"title":"第一步:插件注册","slug":"第一步-插件注册","link":"#第一步-插件注册","children":[]},{"level":3,"title":"第二步:配置运行时生命周期钩子(可选)","slug":"第二步-配置运行时生命周期钩子-可选","link":"#第二步-配置运行时生命周期钩子-可选","children":[]}]},{"level":2,"title":"父子应用通讯","slug":"父子应用通讯","link":"#父子应用通讯","children":[{"level":3,"title":"配合 useModel 使用","slug":"配合-usemodel-使用","link":"#配合-usemodel-使用","children":[]},{"level":3,"title":"基于 props 传递","slug":"基于-props-传递","link":"#基于-props-传递","children":[]},{"level":3,"title":"MicroApp","slug":"microapp","link":"#microapp","children":[]},{"level":3,"title":"MicroAppWithMemoHistory","slug":"microappwithmemohistory","link":"#microappwithmemohistory","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/qiankun.md"}');export{l as data};
    diff --git a/assets/request.html.b3bfcb9e.js b/assets/request.html.f4de04c7.js
    similarity index 99%
    rename from assets/request.html.b3bfcb9e.js
    rename to assets/request.html.f4de04c7.js
    index f601ca5c..3563d6dc 100644
    --- a/assets/request.html.b3bfcb9e.js
    +++ b/assets/request.html.f4de04c7.js
    @@ -1,4 +1,4 @@
    -import{_ as p,r as o,o as c,c as l,b as n,d as s,a as e,f as a}from"./app.1fff394b.js";const i={},u=a(`

    @fesjs/plugin-request

    基于 fetch 封装的 request,内置防止重复请求、请求缓存、错误处理等功能。

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as p,r as o,o as c,c as l,b as n,d as s,a as e,f as a}from"./app.005e0daf.js";const i={},u=a(`

    @fesjs/plugin-request

    基于 fetch 封装的 request,内置防止重复请求、请求缓存、错误处理等功能。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-request": "^4.0.0-beta.0"
    diff --git a/assets/request.html.e186dff0.js b/assets/request.html.fe4ceade.js
    similarity index 88%
    rename from assets/request.html.e186dff0.js
    rename to assets/request.html.fe4ceade.js
    index 4fb67015..2566ac3e 100644
    --- a/assets/request.html.e186dff0.js
    +++ b/assets/request.html.fe4ceade.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-41dee210","path":"/reference/plugin/plugins/request.html","title":"@fesjs/plugin-request","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"运行时配置","slug":"运行时配置","link":"#运行时配置","children":[]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"request","slug":"request","link":"#request","children":[]},{"level":3,"title":"useRequest","slug":"userequest","link":"#userequest","children":[]}]},{"level":2,"title":"使用","slug":"使用","link":"#使用","children":[{"level":3,"title":"发起一个普通 post 请求","slug":"发起一个普通-post-请求","link":"#发起一个普通-post-请求","children":[]},{"level":3,"title":"merge 重复请求","slug":"merge-重复请求","link":"#merge-重复请求","children":[]},{"level":3,"title":"请求缓存","slug":"请求缓存","link":"#请求缓存","children":[]},{"level":3,"title":"请求 abort","slug":"请求-abort","link":"#请求-abort","children":[]},{"level":3,"title":"获取 response headers","slug":"获取-response-headers","link":"#获取-response-headers","children":[]},{"level":3,"title":"结合 use 使用","slug":"结合-use-使用","link":"#结合-use-使用","children":[]}]},{"level":2,"title":"3.x 升级到 4.x","slug":"_3-x-升级到-4-x","link":"#_3-x-升级到-4-x","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/request.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-41dee210","path":"/reference/plugin/plugins/request.html","title":"@fesjs/plugin-request","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"运行时配置","slug":"运行时配置","link":"#运行时配置","children":[]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"request","slug":"request","link":"#request","children":[]},{"level":3,"title":"useRequest","slug":"userequest","link":"#userequest","children":[]}]},{"level":2,"title":"使用","slug":"使用","link":"#使用","children":[{"level":3,"title":"发起一个普通 post 请求","slug":"发起一个普通-post-请求","link":"#发起一个普通-post-请求","children":[]},{"level":3,"title":"merge 重复请求","slug":"merge-重复请求","link":"#merge-重复请求","children":[]},{"level":3,"title":"请求缓存","slug":"请求缓存","link":"#请求缓存","children":[]},{"level":3,"title":"请求 abort","slug":"请求-abort","link":"#请求-abort","children":[]},{"level":3,"title":"获取 response headers","slug":"获取-response-headers","link":"#获取-response-headers","children":[]},{"level":3,"title":"结合 use 使用","slug":"结合-use-使用","link":"#结合-use-使用","children":[]}]},{"level":2,"title":"3.x 升级到 4.x","slug":"_3-x-升级到-4-x","link":"#_3-x-升级到-4-x","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/request.md"}');export{e as data};
    diff --git a/assets/route.html.83ea4e67.js b/assets/route.html.3d217616.js
    similarity index 99%
    rename from assets/route.html.83ea4e67.js
    rename to assets/route.html.3d217616.js
    index 25b67aec..676eaa57 100644
    --- a/assets/route.html.83ea4e67.js
    +++ b/assets/route.html.3d217616.js
    @@ -1,4 +1,4 @@
    -import{_ as t,r as o,o as c,c as l,b as n,d as s,a as e,f as p}from"./app.1fff394b.js";const i={},r=n("h1",{id:"路由",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#路由","aria-hidden":"true"},"#"),s(" 路由")],-1),u=n("code",null,"Vue Router",-1),d={href:"https://next.router.vuejs.org/",target:"_blank",rel:"noopener noreferrer"},k=p(`

    路由配置

    在配置文件 .fes.js中通过 router 进行配置。

    export default {
    +import{_ as t,r as o,o as c,c as l,b as n,d as s,a as e,f as p}from"./app.005e0daf.js";const i={},r=n("h1",{id:"路由",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#路由","aria-hidden":"true"},"#"),s(" 路由")],-1),u=n("code",null,"Vue Router",-1),d={href:"https://next.router.vuejs.org/",target:"_blank",rel:"noopener noreferrer"},k=p(`

    路由配置

    在配置文件 .fes.js中通过 router 进行配置。

    export default {
         router: {
             routes: [],
             mode: 'hash',
    diff --git a/assets/route.html.65547e37.js b/assets/route.html.aa1f3f0b.js
    similarity index 87%
    rename from assets/route.html.65547e37.js
    rename to assets/route.html.aa1f3f0b.js
    index 04552082..b5576e5d 100644
    --- a/assets/route.html.65547e37.js
    +++ b/assets/route.html.aa1f3f0b.js
    @@ -1 +1 @@
    -const l=JSON.parse('{"key":"v-6320961c","path":"/guide/route.html","title":"路由","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"路由配置","slug":"路由配置","link":"#路由配置","children":[{"level":3,"title":"routes","slug":"routes","link":"#routes","children":[]},{"level":3,"title":"mode","slug":"mode","link":"#mode","children":[]}]},{"level":2,"title":"约定式路由","slug":"约定式路由","link":"#约定式路由","children":[{"level":3,"title":"约定规范","slug":"约定规范","link":"#约定规范","children":[]},{"level":3,"title":"动态路由","slug":"动态路由","link":"#动态路由","children":[]},{"level":3,"title":"模糊匹配","slug":"模糊匹配","link":"#模糊匹配","children":[]},{"level":3,"title":"嵌套路由","slug":"嵌套路由","link":"#嵌套路由","children":[]},{"level":3,"title":"模糊匹配","slug":"模糊匹配-1","link":"#模糊匹配-1","children":[]},{"level":3,"title":"智能路由","slug":"智能路由","link":"#智能路由","children":[]}]},{"level":2,"title":"扩展路由元信息","slug":"扩展路由元信息","link":"#扩展路由元信息","children":[]},{"level":2,"title":"路由跳转","slug":"路由跳转","link":"#路由跳转","children":[{"level":3,"title":"声明式","slug":"声明式","link":"#声明式","children":[]},{"level":3,"title":"命令式","slug":"命令式","link":"#命令式","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/route.md"}');export{l as data};
    +const l=JSON.parse('{"key":"v-6320961c","path":"/guide/route.html","title":"路由","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"路由配置","slug":"路由配置","link":"#路由配置","children":[{"level":3,"title":"routes","slug":"routes","link":"#routes","children":[]},{"level":3,"title":"mode","slug":"mode","link":"#mode","children":[]}]},{"level":2,"title":"约定式路由","slug":"约定式路由","link":"#约定式路由","children":[{"level":3,"title":"约定规范","slug":"约定规范","link":"#约定规范","children":[]},{"level":3,"title":"动态路由","slug":"动态路由","link":"#动态路由","children":[]},{"level":3,"title":"模糊匹配","slug":"模糊匹配","link":"#模糊匹配","children":[]},{"level":3,"title":"嵌套路由","slug":"嵌套路由","link":"#嵌套路由","children":[]},{"level":3,"title":"模糊匹配","slug":"模糊匹配-1","link":"#模糊匹配-1","children":[]},{"level":3,"title":"智能路由","slug":"智能路由","link":"#智能路由","children":[]}]},{"level":2,"title":"扩展路由元信息","slug":"扩展路由元信息","link":"#扩展路由元信息","children":[]},{"level":2,"title":"路由跳转","slug":"路由跳转","link":"#路由跳转","children":[{"level":3,"title":"声明式","slug":"声明式","link":"#声明式","children":[]},{"level":3,"title":"命令式","slug":"命令式","link":"#命令式","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/route.md"}');export{l as data};
    diff --git a/assets/runtime-config.html.4bc14dd5.js b/assets/runtime-config.html.c81fa63e.js
    similarity index 99%
    rename from assets/runtime-config.html.4bc14dd5.js
    rename to assets/runtime-config.html.c81fa63e.js
    index caa36a9f..4b551876 100644
    --- a/assets/runtime-config.html.4bc14dd5.js
    +++ b/assets/runtime-config.html.c81fa63e.js
    @@ -1,4 +1,4 @@
    -import{_ as n,o as s,c as a,f as e}from"./app.1fff394b.js";const p={},t=e(`

    运行时配置

    Fes.js 约定 src/app.js 为运行时配置文件。运行时配置和配置的区别是他跑在浏览器端,因此我们可以在这里写函数、引入浏览器端依赖项等等,注意不要引入 node 端依赖项。

    运行时为啥需要配置?

    Fes.js 框架跟传统开发模式不一样。传统开发模式中用户编写 entry 文件,而 Fes.js 中 entry 文件由框架生成,用户就不必要编写胶水代码。内置插件和其他插件提供的一些运行时功能提供用户或者其他插件自定义。

    例如:

    plugin-access 插件定义运行时配置项:

    api.addRuntimePluginKey(() => 'access');
    +import{_ as n,o as s,c as a,f as e}from"./app.005e0daf.js";const p={},t=e(`

    运行时配置

    Fes.js 约定 src/app.js 为运行时配置文件。运行时配置和配置的区别是他跑在浏览器端,因此我们可以在这里写函数、引入浏览器端依赖项等等,注意不要引入 node 端依赖项。

    运行时为啥需要配置?

    Fes.js 框架跟传统开发模式不一样。传统开发模式中用户编写 entry 文件,而 Fes.js 中 entry 文件由框架生成,用户就不必要编写胶水代码。内置插件和其他插件提供的一些运行时功能提供用户或者其他插件自定义。

    例如:

    plugin-access 插件定义运行时配置项:

    api.addRuntimePluginKey(() => 'access');
     

    plugin-access 插件读取配置项:

    const runtimeConfig = plugin.applyPlugins({
         key: 'access',
         type: ApplyPluginsType.modify,
    diff --git a/assets/runtime-config.html.692db2b2.js b/assets/runtime-config.html.d036f810.js
    similarity index 86%
    rename from assets/runtime-config.html.692db2b2.js
    rename to assets/runtime-config.html.d036f810.js
    index 8bb31589..1f11f9ec 100644
    --- a/assets/runtime-config.html.692db2b2.js
    +++ b/assets/runtime-config.html.d036f810.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-3dba8814","path":"/guide/runtime-config.html","title":"运行时配置","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"运行时为啥需要配置?","slug":"运行时为啥需要配置","link":"#运行时为啥需要配置","children":[]},{"level":2,"title":"配置智能提示","slug":"配置智能提示","link":"#配置智能提示","children":[]},{"level":2,"title":"配置项","slug":"配置项","link":"#配置项","children":[{"level":3,"title":"beforeRender","slug":"beforerender","link":"#beforerender","children":[]},{"level":3,"title":"patchRoutes","slug":"patchroutes","link":"#patchroutes","children":[]},{"level":3,"title":"modifyRoute","slug":"modifyroute","link":"#modifyroute","children":[]},{"level":3,"title":"modifyClientRenderOpts","slug":"modifyclientrenderopts","link":"#modifyclientrenderopts","children":[]},{"level":3,"title":"rootContainer","slug":"rootcontainer","link":"#rootcontainer","children":[]},{"level":3,"title":"onAppCreated","slug":"onappcreated","link":"#onappcreated","children":[]},{"level":3,"title":"render","slug":"render","link":"#render","children":[]},{"level":3,"title":"onRouterCreated","slug":"onroutercreated","link":"#onroutercreated","children":[]}]},{"level":2,"title":"更多配置项","slug":"更多配置项","link":"#更多配置项","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/runtime-config.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-3dba8814","path":"/guide/runtime-config.html","title":"运行时配置","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"运行时为啥需要配置?","slug":"运行时为啥需要配置","link":"#运行时为啥需要配置","children":[]},{"level":2,"title":"配置智能提示","slug":"配置智能提示","link":"#配置智能提示","children":[]},{"level":2,"title":"配置项","slug":"配置项","link":"#配置项","children":[{"level":3,"title":"beforeRender","slug":"beforerender","link":"#beforerender","children":[]},{"level":3,"title":"patchRoutes","slug":"patchroutes","link":"#patchroutes","children":[]},{"level":3,"title":"modifyRoute","slug":"modifyroute","link":"#modifyroute","children":[]},{"level":3,"title":"modifyClientRenderOpts","slug":"modifyclientrenderopts","link":"#modifyclientrenderopts","children":[]},{"level":3,"title":"rootContainer","slug":"rootcontainer","link":"#rootcontainer","children":[]},{"level":3,"title":"onAppCreated","slug":"onappcreated","link":"#onappcreated","children":[]},{"level":3,"title":"render","slug":"render","link":"#render","children":[]},{"level":3,"title":"onRouterCreated","slug":"onroutercreated","link":"#onroutercreated","children":[]}]},{"level":2,"title":"更多配置项","slug":"更多配置项","link":"#更多配置项","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/runtime-config.md"}');export{e as data};
    diff --git a/assets/sass.html.d347aba7.js b/assets/sass.html.177ef37c.js
    similarity index 70%
    rename from assets/sass.html.d347aba7.js
    rename to assets/sass.html.177ef37c.js
    index c2489512..f31584da 100644
    --- a/assets/sass.html.d347aba7.js
    +++ b/assets/sass.html.177ef37c.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-5bf80046","path":"/reference/plugin/plugins/sass.html","title":"@fesjs/plugin-sass","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"global css","slug":"global-css","link":"#global-css","children":[]},{"level":2,"title":"Vue 单文件组件","slug":"vue-单文件组件","link":"#vue-单文件组件","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/sass.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-5bf80046","path":"/reference/plugin/plugins/sass.html","title":"@fesjs/plugin-sass","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"global css","slug":"global-css","link":"#global-css","children":[]},{"level":2,"title":"Vue 单文件组件","slug":"vue-单文件组件","link":"#vue-单文件组件","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/sass.md"}');export{e as data};
    diff --git a/assets/sass.html.3cf05a81.js b/assets/sass.html.9338147b.js
    similarity index 97%
    rename from assets/sass.html.3cf05a81.js
    rename to assets/sass.html.9338147b.js
    index 09f82d77..d169ce50 100644
    --- a/assets/sass.html.3cf05a81.js
    +++ b/assets/sass.html.9338147b.js
    @@ -1,4 +1,4 @@
    -import{_ as s,o as a,c as n,f as e}from"./app.1fff394b.js";const t={},c=e(`

    @fesjs/plugin-sass

    介绍

    Fes.js 默认只支持 less,通过此插件扩展支持 sass

    webpack 构建 sass 插件

    如果使用 Vite 构建,直接装 sass 依赖即可,不需要安装此插件。

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as s,o as a,c as n,f as e}from"./app.005e0daf.js";const t={},c=e(`

    @fesjs/plugin-sass

    介绍

    Fes.js 默认只支持 less,通过此插件扩展支持 sass

    webpack 构建 sass 插件

    如果使用 Vite 构建,直接装 sass 依赖即可,不需要安装此插件。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-sass": "^3.0.0"
    diff --git a/assets/swc.html.ee318276.js b/assets/swc.html.0bd38fed.js
    similarity index 98%
    rename from assets/swc.html.ee318276.js
    rename to assets/swc.html.0bd38fed.js
    index 52548707..69683ac7 100644
    --- a/assets/swc.html.ee318276.js
    +++ b/assets/swc.html.0bd38fed.js
    @@ -1,4 +1,4 @@
    -import{_ as t,r as o,o as p,c,b as s,d as n,a as r,f as a}from"./app.1fff394b.js";const i={},l=a(`

    @fesjs/plugin-swc

    介绍

    webpack 启用 swc,构建速度更快!

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as t,r as o,o as p,c,b as s,d as n,a as r,f as a}from"./app.005e0daf.js";const i={},l=a(`

    @fesjs/plugin-swc

    介绍

    webpack 启用 swc,构建速度更快!

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-swc": "^3.0.0"
    diff --git a/assets/swc.html.95bfd8be.js b/assets/swc.html.a56bb9f7.js
    similarity index 71%
    rename from assets/swc.html.95bfd8be.js
    rename to assets/swc.html.a56bb9f7.js
    index 1ac08c78..c621e5b5 100644
    --- a/assets/swc.html.95bfd8be.js
    +++ b/assets/swc.html.a56bb9f7.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-317f9008","path":"/reference/plugin/plugins/swc.html","title":"@fesjs/plugin-swc","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/swc.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-317f9008","path":"/reference/plugin/plugins/swc.html","title":"@fesjs/plugin-swc","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/swc.md"}');export{e as data};
    diff --git a/assets/template.html.4157d97a.js b/assets/template.html.91640404.js
    similarity index 99%
    rename from assets/template.html.4157d97a.js
    rename to assets/template.html.91640404.js
    index 308d90a1..2dc1768e 100644
    --- a/assets/template.html.4157d97a.js
    +++ b/assets/template.html.91640404.js
    @@ -1,4 +1,4 @@
    -import{_ as n,o as a,c as s,f as t}from"./app.1fff394b.js";const p={},e=t(`

    HTML 模板

    Fes.js 默认模板内容是:

    提示

    fes3.0+ html 模版文件从 public/index.html 挪到项目根目录。

    <!DOCTYPE html>
    +import{_ as n,o as a,c as s,f as t}from"./app.005e0daf.js";const p={},e=t(`

    HTML 模板

    Fes.js 默认模板内容是:

    提示

    fes3.0+ html 模版文件从 public/index.html 挪到项目根目录。

    <!DOCTYPE html>
     <html>
         <head>
             <meta charset="utf-8" />
    diff --git a/assets/template.html.de04006d.js b/assets/template.html.decb42ff.js
    similarity index 60%
    rename from assets/template.html.de04006d.js
    rename to assets/template.html.decb42ff.js
    index 60583e8e..b6c3eb57 100644
    --- a/assets/template.html.de04006d.js
    +++ b/assets/template.html.decb42ff.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-7b48519a","path":"/guide/template.html","title":"HTML 模板","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"修改页面标题","slug":"修改页面标题","link":"#修改页面标题","children":[]},{"level":2,"title":"模板变量","slug":"模板变量","link":"#模板变量","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/template.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-7b48519a","path":"/guide/template.html","title":"HTML 模板","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"修改页面标题","slug":"修改页面标题","link":"#修改页面标题","children":[]},{"level":2,"title":"模板变量","slug":"模板变量","link":"#模板变量","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/template.md"}');export{e as data};
    diff --git a/assets/upgrade3.html.f8453010.js b/assets/upgrade3.html.0ae06c8e.js
    similarity index 77%
    rename from assets/upgrade3.html.f8453010.js
    rename to assets/upgrade3.html.0ae06c8e.js
    index cff1501b..6e696431 100644
    --- a/assets/upgrade3.html.f8453010.js
    +++ b/assets/upgrade3.html.0ae06c8e.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-4acab794","path":"/guide/upgrade3.html","title":"从 2.0.x 迁移到 3.0.x","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"版本 3.0.x 的 break","slug":"版本-3-0-x-的-break","link":"#版本-3-0-x-的-break","children":[]},{"level":2,"title":"继续使用 Webpack","slug":"继续使用-webpack","link":"#继续使用-webpack","children":[]},{"level":2,"title":"换成 Vite","slug":"换成-vite","link":"#换成-vite","children":[]},{"level":2,"title":"插件","slug":"插件","link":"#插件","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"guide/upgrade3.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-4acab794","path":"/guide/upgrade3.html","title":"从 2.0.x 迁移到 3.0.x","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"版本 3.0.x 的 break","slug":"版本-3-0-x-的-break","link":"#版本-3-0-x-的-break","children":[]},{"level":2,"title":"继续使用 Webpack","slug":"继续使用-webpack","link":"#继续使用-webpack","children":[]},{"level":2,"title":"换成 Vite","slug":"换成-vite","link":"#换成-vite","children":[]},{"level":2,"title":"插件","slug":"插件","link":"#插件","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"guide/upgrade3.md"}');export{e as data};
    diff --git a/assets/upgrade3.html.0c4ef841.js b/assets/upgrade3.html.3629ebda.js
    similarity index 98%
    rename from assets/upgrade3.html.0c4ef841.js
    rename to assets/upgrade3.html.3629ebda.js
    index 6abdafc6..47024b43 100644
    --- a/assets/upgrade3.html.0c4ef841.js
    +++ b/assets/upgrade3.html.3629ebda.js
    @@ -1 +1 @@
    -import{_ as i,r as l,o as c,c as s,b as t,d as e,a as n,w as a,f as d}from"./app.1fff394b.js";const h={},u=t("h1",{id:"从-2-0-x-迁移到-3-0-x",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#从-2-0-x-迁移到-3-0-x","aria-hidden":"true"},"#"),e(" 从 2.0.x 迁移到 3.0.x")],-1),_=t("h2",{id:"版本-3-0-x-的-break",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#版本-3-0-x-的-break","aria-hidden":"true"},"#"),e(" 版本 3.0.x 的 break")],-1),p={href:"https://github.com/webpack/webpack-dev-server",target:"_blank",rel:"noopener noreferrer"},b=t("code",null,"v3.x",-1),f=t("code",null,"v4.x",-1),k={href:"https://github.com/webpack/webpack-dev-server/blob/master/migration-v4.md",target:"_blank",rel:"noopener noreferrer"},m=t("h2",{id:"继续使用-webpack",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#继续使用-webpack","aria-hidden":"true"},"#"),e(" 继续使用 Webpack")],-1),x=t("li",null,[e("添加 Webpack 构建依赖包: "),t("code",null,"npm i @fesjs/builder-webpack -D"),e("。")],-1),g=t("code",null,"public/index.html",-1),v={href:"https://github.com/jantimon/html-webpack-plugin",target:"_blank",rel:"noopener noreferrer"},w=t("h2",{id:"换成-vite",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#换成-vite","aria-hidden":"true"},"#"),e(" 换成 Vite")],-1),j=t("li",null,[e("安装依赖包 "),t("code",null,"npm i @fesjs/builder-vite"),e("。")],-1),V=t("li",null,[e("将 Webpack 相关的配置换成 Vite,具体可查看"),t("a",{href:"../reference/config"},"配置"),e("。")],-1),L=t("code",null,"public/index.html",-1),q={href:"https://github.com/jantimon/html-webpack-plugin",target:"_blank",rel:"noopener noreferrer"},N={href:"https://github.com/vbenjs/vite-plugin-html",target:"_blank",rel:"noopener noreferrer"},W=t("li",null,[e("将 "),t("code",null,"require"),e(" 等 Vite 不支持的代码,改写成 Vite 支持的方式。")],-1),B=d('

    插件

    插件都需要升级到 3.0.x 版本,新版添加了兼容builder的逻辑,但是提供的接口和配置没有变化,只需要升级版本即可使用。

    ',3);function E(y,C){const o=l("RouterLink"),r=l("ExternalLinkIcon");return c(),s("div",null,[u,_,t("ol",null,[t("li",null,[e("编译时的 "),n(o,{to:"/reference/config/#base"},{default:a(()=>[e("base")]),_:1}),e(" 配置,移到了 "),n(o,{to:"/reference/config/#router"},{default:a(()=>[e("router.base")]),_:1}),e(" 下。")]),t("li",null,[t("a",p,[e("webpack-dev-server"),n(r)]),e(" 从 "),b,e(" 升级到了 "),f,e(",如果遇到配置不兼容,可以查看"),t("a",k,[e("webpack-dev-server 3.x 升级 4.x"),n(r)]),e("。")])]),m,t("ol",null,[x,t("li",null,[e("如果有,将 "),g,e(" 文件挪到项目根目录,移除 "),t("a",v,[e("html-webpack-plugin"),n(r)]),e(" 相关配置,具体模版变量使用请查看"),n(o,{to:"/guide/template.html"},{default:a(()=>[e("HTML 模版")]),_:1}),e("。")])]),w,t("ol",null,[j,V,t("li",null,[e("将 html 模版文件从 "),L,e(" 挪到项目根目录,如果有相应的 "),t("a",q,[e("html-webpack-plugin"),n(r)]),e(" 配置,需要改成 "),t("a",N,[e("vite-plugin-html"),n(r)]),e(" 的写法。")]),W]),B])}const R=i(h,[["render",E],["__file","upgrade3.html.vue"]]);export{R as default}; +import{_ as i,r as l,o as c,c as s,b as t,d as e,a as n,w as a,f as d}from"./app.005e0daf.js";const h={},u=t("h1",{id:"从-2-0-x-迁移到-3-0-x",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#从-2-0-x-迁移到-3-0-x","aria-hidden":"true"},"#"),e(" 从 2.0.x 迁移到 3.0.x")],-1),_=t("h2",{id:"版本-3-0-x-的-break",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#版本-3-0-x-的-break","aria-hidden":"true"},"#"),e(" 版本 3.0.x 的 break")],-1),p={href:"https://github.com/webpack/webpack-dev-server",target:"_blank",rel:"noopener noreferrer"},b=t("code",null,"v3.x",-1),f=t("code",null,"v4.x",-1),k={href:"https://github.com/webpack/webpack-dev-server/blob/master/migration-v4.md",target:"_blank",rel:"noopener noreferrer"},m=t("h2",{id:"继续使用-webpack",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#继续使用-webpack","aria-hidden":"true"},"#"),e(" 继续使用 Webpack")],-1),x=t("li",null,[e("添加 Webpack 构建依赖包: "),t("code",null,"npm i @fesjs/builder-webpack -D"),e("。")],-1),g=t("code",null,"public/index.html",-1),v={href:"https://github.com/jantimon/html-webpack-plugin",target:"_blank",rel:"noopener noreferrer"},w=t("h2",{id:"换成-vite",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#换成-vite","aria-hidden":"true"},"#"),e(" 换成 Vite")],-1),j=t("li",null,[e("安装依赖包 "),t("code",null,"npm i @fesjs/builder-vite"),e("。")],-1),V=t("li",null,[e("将 Webpack 相关的配置换成 Vite,具体可查看"),t("a",{href:"../reference/config"},"配置"),e("。")],-1),L=t("code",null,"public/index.html",-1),q={href:"https://github.com/jantimon/html-webpack-plugin",target:"_blank",rel:"noopener noreferrer"},N={href:"https://github.com/vbenjs/vite-plugin-html",target:"_blank",rel:"noopener noreferrer"},W=t("li",null,[e("将 "),t("code",null,"require"),e(" 等 Vite 不支持的代码,改写成 Vite 支持的方式。")],-1),B=d('

    插件

    插件都需要升级到 3.0.x 版本,新版添加了兼容builder的逻辑,但是提供的接口和配置没有变化,只需要升级版本即可使用。

    ',3);function E(y,C){const o=l("RouterLink"),r=l("ExternalLinkIcon");return c(),s("div",null,[u,_,t("ol",null,[t("li",null,[e("编译时的 "),n(o,{to:"/reference/config/#base"},{default:a(()=>[e("base")]),_:1}),e(" 配置,移到了 "),n(o,{to:"/reference/config/#router"},{default:a(()=>[e("router.base")]),_:1}),e(" 下。")]),t("li",null,[t("a",p,[e("webpack-dev-server"),n(r)]),e(" 从 "),b,e(" 升级到了 "),f,e(",如果遇到配置不兼容,可以查看"),t("a",k,[e("webpack-dev-server 3.x 升级 4.x"),n(r)]),e("。")])]),m,t("ol",null,[x,t("li",null,[e("如果有,将 "),g,e(" 文件挪到项目根目录,移除 "),t("a",v,[e("html-webpack-plugin"),n(r)]),e(" 相关配置,具体模版变量使用请查看"),n(o,{to:"/guide/template.html"},{default:a(()=>[e("HTML 模版")]),_:1}),e("。")])]),w,t("ol",null,[j,V,t("li",null,[e("将 html 模版文件从 "),L,e(" 挪到项目根目录,如果有相应的 "),t("a",q,[e("html-webpack-plugin"),n(r)]),e(" 配置,需要改成 "),t("a",N,[e("vite-plugin-html"),n(r)]),e(" 的写法。")]),W]),B])}const R=i(h,[["render",E],["__file","upgrade3.html.vue"]]);export{R as default}; diff --git a/assets/vuex.html.41eb0107.js b/assets/vuex.html.36df398e.js similarity index 84% rename from assets/vuex.html.41eb0107.js rename to assets/vuex.html.36df398e.js index 436fa932..1b6ef10d 100644 --- a/assets/vuex.html.41eb0107.js +++ b/assets/vuex.html.36df398e.js @@ -1 +1 @@ -const e=JSON.parse('{"key":"v-5f4c684e","path":"/reference/plugin/plugins/vuex.html","title":"@fesjs/plugin-vuex","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[]},{"level":2,"title":"场景使用","slug":"场景使用","link":"#场景使用","children":[]},{"level":2,"title":"vuex 插件","slug":"vuex-插件","link":"#vuex-插件","children":[]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"store","slug":"store","link":"#store","children":[]},{"level":3,"title":"MUTATION_TYPES","slug":"mutation-types","link":"#mutation-types","children":[]},{"level":3,"title":"GETTER_TYPES","slug":"getter-types","link":"#getter-types","children":[]},{"level":3,"title":"ACTION_TYPES","slug":"action-types","link":"#action-types","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/vuex.md"}');export{e as data}; +const e=JSON.parse('{"key":"v-5f4c684e","path":"/reference/plugin/plugins/vuex.html","title":"@fesjs/plugin-vuex","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[]},{"level":2,"title":"场景使用","slug":"场景使用","link":"#场景使用","children":[]},{"level":2,"title":"vuex 插件","slug":"vuex-插件","link":"#vuex-插件","children":[]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"store","slug":"store","link":"#store","children":[]},{"level":3,"title":"MUTATION_TYPES","slug":"mutation-types","link":"#mutation-types","children":[]},{"level":3,"title":"GETTER_TYPES","slug":"getter-types","link":"#getter-types","children":[]},{"level":3,"title":"ACTION_TYPES","slug":"action-types","link":"#action-types","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/vuex.md"}');export{e as data}; diff --git a/assets/vuex.html.0b3540af.js b/assets/vuex.html.6d094802.js similarity index 99% rename from assets/vuex.html.0b3540af.js rename to assets/vuex.html.6d094802.js index 8f9a7964..32b70616 100644 --- a/assets/vuex.html.0b3540af.js +++ b/assets/vuex.html.6d094802.js @@ -1,4 +1,4 @@ -import{_ as p,r as e,o,c,b as n,d as s,a as l,f as a}from"./app.1fff394b.js";const i={},u=a(`

    @fesjs/plugin-vuex

    提示

    vue3+ 官方推荐使用pinia,不在推荐使用 vuex。

    介绍

    集成 vuex 插件

    增强 vuex,导出所有的mutationsactionsgetter的事件类型,编辑器提示

    约定模式,module 和 plugin 定义放在 stores 目录下,文件名包含 plugin 被解析为插件,无需额外配置,定义即可用。

    └── src
    +import{_ as p,r as e,o,c,b as n,d as s,a as l,f as a}from"./app.005e0daf.js";const i={},u=a(`

    @fesjs/plugin-vuex

    提示

    vue3+ 官方推荐使用pinia,不在推荐使用 vuex。

    介绍

    集成 vuex 插件

    增强 vuex,导出所有的mutationsactionsgetter的事件类型,编辑器提示

    约定模式,module 和 plugin 定义放在 stores 目录下,文件名包含 plugin 被解析为插件,无需额外配置,定义即可用。

    └── src
         ├── pages
         │    └── index.vue
         └── stores
    diff --git a/assets/watermark.html.6e85bd26.js b/assets/watermark.html.1d51b560.js
    similarity index 99%
    rename from assets/watermark.html.6e85bd26.js
    rename to assets/watermark.html.1d51b560.js
    index a67e9735..9c2ca978 100644
    --- a/assets/watermark.html.6e85bd26.js
    +++ b/assets/watermark.html.1d51b560.js
    @@ -1,4 +1,4 @@
    -import{_ as n,o as a,c as s,f as e}from"./app.1fff394b.js";const t={},p=e(`

    @fesjs/plugin-watermark

    介绍

    给页面添加水印效果

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as n,o as a,c as s,f as e}from"./app.005e0daf.js";const t={},p=e(`

    @fesjs/plugin-watermark

    介绍

    给页面添加水印效果

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-watermark": "^3.0.0"
    diff --git a/assets/watermark.html.d6de8921.js b/assets/watermark.html.855d80c4.js
    similarity index 78%
    rename from assets/watermark.html.d6de8921.js
    rename to assets/watermark.html.855d80c4.js
    index 9b6a34bb..2cdc793b 100644
    --- a/assets/watermark.html.d6de8921.js
    +++ b/assets/watermark.html.855d80c4.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-1c0edac3","path":"/reference/plugin/plugins/watermark.html","title":"@fesjs/plugin-watermark","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[{"level":3,"title":"disabled","slug":"disabled","link":"#disabled","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"createWatermark","slug":"createwatermark","link":"#createwatermark","children":[]}]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/watermark.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-1c0edac3","path":"/reference/plugin/plugins/watermark.html","title":"@fesjs/plugin-watermark","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"编译时配置","slug":"编译时配置","link":"#编译时配置","children":[{"level":3,"title":"disabled","slug":"disabled","link":"#disabled","children":[]}]},{"level":2,"title":"API","slug":"api","link":"#api","children":[{"level":3,"title":"createWatermark","slug":"createwatermark","link":"#createwatermark","children":[]}]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/watermark.md"}');export{e as data};
    diff --git a/assets/windicss.html.6138fa98.js b/assets/windicss.html.17e40609.js
    similarity index 97%
    rename from assets/windicss.html.6138fa98.js
    rename to assets/windicss.html.17e40609.js
    index deb6786c..8205a24d 100644
    --- a/assets/windicss.html.6138fa98.js
    +++ b/assets/windicss.html.17e40609.js
    @@ -1,4 +1,4 @@
    -import{_ as i,r as o,o as c,c as r,b as s,d as n,a as e,f as t}from"./app.1fff394b.js";const p={},d=s("h1",{id:"fesjs-plugin-windicss",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-windicss","aria-hidden":"true"},"#"),n(" @fesjs/plugin-windicss")],-1),l={class:"custom-container warning"},u=s("p",{class:"custom-container-title"},"即将废弃",-1),h={href:"https://tailwindcss.com/",target:"_blank",rel:"noopener noreferrer"},v=t(`

    介绍

    windicss 支持

    启用方式

    package.json 中引入依赖:

    {
    +import{_ as i,r as o,o as c,c as r,b as s,d as n,a as e,f as t}from"./app.005e0daf.js";const p={},d=s("h1",{id:"fesjs-plugin-windicss",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#fesjs-plugin-windicss","aria-hidden":"true"},"#"),n(" @fesjs/plugin-windicss")],-1),l={class:"custom-container warning"},u=s("p",{class:"custom-container-title"},"即将废弃",-1),h={href:"https://tailwindcss.com/",target:"_blank",rel:"noopener noreferrer"},v=t(`

    介绍

    windicss 支持

    启用方式

    package.json 中引入依赖:

    {
         "devDependencies": {
             "@fesjs/plugin-windicss": "^2.0.0"
         }
    diff --git a/assets/windicss.html.cc3815a6.js b/assets/windicss.html.cc303ad2.js
    similarity index 72%
    rename from assets/windicss.html.cc3815a6.js
    rename to assets/windicss.html.cc303ad2.js
    index 9ca9606b..138510d3 100644
    --- a/assets/windicss.html.cc3815a6.js
    +++ b/assets/windicss.html.cc303ad2.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-392e58ee","path":"/reference/plugin/plugins/windicss.html","title":"@fesjs/plugin-windicss","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[]}],"git":{"updatedTime":1681286587000,"contributors":[{"name":"qlin","email":"haizekuo@gmail.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/windicss.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-392e58ee","path":"/reference/plugin/plugins/windicss.html","title":"@fesjs/plugin-windicss","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"启用方式","slug":"启用方式","link":"#启用方式","children":[]},{"level":2,"title":"配置","slug":"配置","link":"#配置","children":[]}],"git":{"updatedTime":1681713428000,"contributors":[{"name":"wanchun","email":"445436867@qq.com","commits":1}]},"filePathRelative":"reference/plugin/plugins/windicss.md"}');export{e as data};
    diff --git a/guide/builder.html b/guide/builder.html
    index 89b806b7..f59230ed 100644
    --- a/guide/builder.html
    +++ b/guide/builder.html
    @@ -24,10 +24,10 @@
         
         支持 Vite 和 Webpack 双构建 | Fes.js
         
    -    
    +    
       
       
    -    

    支持 Vite 和 Webpack 双构建

    Fes.js@3.0.x 版本支持 Vite 和 Webpack 两种构建方式,不再内置构建方式,需要开发者自行选择:

    • 选用 Vite 构建,安装 npm i @fesjs/builder-vite 依赖即可。
    • 选用 Webpack 构建,安装 npm i @fesjs/builder-webpack 依赖即可。

    使用差异

    由于 Fes.js 在 Vite 和 Webpack 上做了一层封装,开发者关心的构建配置不会太多。从使用上来说,主要存在以下几个差异点:

    配置

    Webpack 和 Vite 构建在配置方面有一些差异,具体可以查看配置

    静态文件处理

    由于 Vite 的限制,不支持 require 语法,具体 Vite 的用法可以查看官网在新窗口打开

    html 模版

    html 模版比较常规的需求,例如模版变量,Webpack 和 Vite 之间没什么差异。如果有其他特殊的需求, Webpack 可以使用 html-webpack-plugin在新窗口打开,Vite 使用vite-plugin-html在新窗口打开 进行个性化配置。

    提示

    fes3.0+ html 模版文件从 public/index.html 挪到项目根目录。

    - +

    支持 Vite 和 Webpack 双构建

    Fes.js@3.0.x 版本支持 Vite 和 Webpack 两种构建方式,不再内置构建方式,需要开发者自行选择:

    • 选用 Vite 构建,安装 npm i @fesjs/builder-vite 依赖即可。
    • 选用 Webpack 构建,安装 npm i @fesjs/builder-webpack 依赖即可。

    使用差异

    由于 Fes.js 在 Vite 和 Webpack 上做了一层封装,开发者关心的构建配置不会太多。从使用上来说,主要存在以下几个差异点:

    配置

    Webpack 和 Vite 构建在配置方面有一些差异,具体可以查看配置

    静态文件处理

    由于 Vite 的限制,不支持 require 语法,具体 Vite 的用法可以查看官网在新窗口打开

    html 模版

    html 模版比较常规的需求,例如模版变量,Webpack 和 Vite 之间没什么差异。如果有其他特殊的需求, Webpack 可以使用 html-webpack-plugin在新窗口打开,Vite 使用vite-plugin-html在新窗口打开 进行个性化配置。

    提示

    fes3.0+ html 模版文件从 public/index.html 挪到项目根目录。

    + diff --git a/guide/config.html b/guide/config.html index 7b936498..6a55c3bf 100644 --- a/guide/config.html +++ b/guide/config.html @@ -24,10 +24,10 @@ 编译时配置 | Fes.js - + -

    编译时配置

    Fes.js 约定 .fes.js 文件为项目编译需要编译时配置文件,可以引入 node 端依赖项,不要引入浏览器端依赖项。

    一份常见的配置示例如下(更多配置项请查阅配置):

    import { defineBuildConfig } from '@fesjs/fes';
    +    

    编译时配置

    Fes.js 约定 .fes.js 文件为项目编译需要编译时配置文件,可以引入 node 端依赖项,不要引入浏览器端依赖项。

    一份常见的配置示例如下(更多配置项请查阅配置):

    import { defineBuildConfig } from '@fesjs/fes';
     
     export default defineBuildConfig({
         publicPath: '/',
    @@ -85,7 +85,7 @@
         mock: true,
         devServer: { port: 8000 }
     };
    -

    优先级

    本地临时配置 > 环境配置 > 基础配置

    提示

    如果多份配置中存在相同的配置项,则优先级高的会覆盖优先级低的

    - +

    优先级

    本地临时配置 > 环境配置 > 基础配置

    提示

    如果多份配置中存在相同的配置项,则优先级高的会覆盖优先级低的

    + diff --git a/guide/contributing.html b/guide/contributing.html index d42e6db8..2003a013 100644 --- a/guide/contributing.html +++ b/guide/contributing.html @@ -24,17 +24,17 @@ 贡献指南 | Fes.js - + -

    贡献指南

    包概览

    项目仓库借助于 pnpm 工作区在新窗口打开 来实现 Monorepo在新窗口打开 ,在 packages 目录下存放多个互相关联的独立包。

    • @fesjs/create-fes-app: 创建项目模板模块。提供create-fes-app命令,提供创建多种类型项目模板的能力。

    • @fesjs/compiler: 编译时插件管理模块。定义插件的生命周期、插件配置、插件通讯机制等。

    • @fesjs/runtime: 运行时插件模块。集成了 vue-router,定义运行时插件生命周期、插件通讯机制。

    • @fesjs/preset-build-in: 内置插件集。包含devbuild等命令,集成 webpack5+babel,提供方便编写插件的 API,入口文件处理,路由处理等能力。

    • @fesjs/fes-template: 适用于 PC 类型的模板项目。

    • @fesjs/fes-template-h5: 适用于 H5 类型的模板项目。

    • @fesjs/plugin-${name}: 官方插件。

    • @fesjs/fes: 入口模块。提供fes命令和 API 入口,封装@fesjs/compiler + @fesjs/runtime + @fesjs/preset-build-in,用户只需要安装此依赖和其他插件。

    开发准备

    开发要求:

    本项目开发使用的一些主要工具:

    克隆仓库:

    git clone https://github.com/WeBankFinTech/fes.js.git
    +    

    贡献指南

    包概览

    项目仓库借助于 pnpm 工作区在新窗口打开 来实现 Monorepo在新窗口打开 ,在 packages 目录下存放多个互相关联的独立包。

    • @fesjs/create-fes-app: 创建项目模板模块。提供create-fes-app命令,提供创建多种类型项目模板的能力。

    • @fesjs/compiler: 编译时插件管理模块。定义插件的生命周期、插件配置、插件通讯机制等。

    • @fesjs/runtime: 运行时插件模块。集成了 vue-router,定义运行时插件生命周期、插件通讯机制。

    • @fesjs/preset-build-in: 内置插件集。包含devbuild等命令,集成 webpack5+babel,提供方便编写插件的 API,入口文件处理,路由处理等能力。

    • @fesjs/fes-template: 适用于 PC 类型的模板项目。

    • @fesjs/fes-template-h5: 适用于 H5 类型的模板项目。

    • @fesjs/plugin-${name}: 官方插件。

    • @fesjs/fes: 入口模块。提供fes命令和 API 入口,封装@fesjs/compiler + @fesjs/runtime + @fesjs/preset-build-in,用户只需要安装此依赖和其他插件。

    开发准备

    开发要求:

    本项目开发使用的一些主要工具:

    克隆仓库:

    git clone https://github.com/WeBankFinTech/fes.js.git
     

    进入fes.js目录,安装依赖:

    pnpm i
     

    贡献文档

    文档代码在docs目录,基于 vuepress在新窗口打开 实现。

    第一步:启动服务

    pnpm docs:dev
     

    第二步:修改 md 文件

    菜单配置在/docs/.vuepress/configs/sidebar/zh.ts中,可以通过此配置找到对应想修改的文档。

    如果想添加图片,则可以先把图片添加至/docs/.vuepress/public,在代码中使用:

    <img :src="$withBase('framework.png')" alt="架构" />
     

    第三步:查看更新

    当 md 文档保存后,文档会自动更新,在http://localhost:8080/查看。

    贡献源码

    Fes.js统一使用ES Module规范编写源码,代码会在 node 端和浏览器端执行,所以源码需要编译后才能发布成包,再被执行。

    启动编译服务

    pnpm dev
     

    当我们修改build.config.js中配置的包代码时,会把src目录的源码编译后到lib目录。

    修改源码

    在了解Fes.js设计前提下,修改核心代码或者插件代码。

    验证修改内容

    根据需求选择模板项目来验证修改内容,比如选择fes-template

    1. 查看需待验证包是否已经添加到模板项目的依赖中,如果没有则在模板项目的 package.json 中添加包依赖,添加后在根目录执行pnpm关联依赖
    2. 启动模板项目的开发服务
    cd packages/fes-template
     pnpm dev
    -
    1. 在项目模板中添加代码验证修改内容
    2. 打开localhost:8000查看结果

    快速调试技巧

    每次修改插件或者核心代码后,等待自动编译完,需要在模板目录重新执行fes dev,比较费时费力。

    可以先在模板的 .fes 目录中找到对应临时代码,更改逻辑,验证完后再将变更逻辑保存到正式文件中。

    注意

    直接修改临时文件切莫重新执行fes dev,修改会被覆盖。

    提交 PR

    1. fork 项目!
    2. 创建你的功能分支: git checkout -b my-new-feature
    3. 本地提交新代码: git commit -am 'Add some feature'
    4. 推送本地到服务器分支: git push origin my-new-feature
    5. 创建一个 PR
    - +
    1. 在项目模板中添加代码验证修改内容
    2. 打开localhost:8000查看结果

    快速调试技巧

    每次修改插件或者核心代码后,等待自动编译完,需要在模板目录重新执行fes dev,比较费时费力。

    可以先在模板的 .fes 目录中找到对应临时代码,更改逻辑,验证完后再将变更逻辑保存到正式文件中。

    注意

    直接修改临时文件切莫重新执行fes dev,修改会被覆盖。

    提交 PR

    1. fork 项目!
    2. 创建你的功能分支: git checkout -b my-new-feature
    3. 本地提交新代码: git commit -am 'Add some feature'
    4. 推送本地到服务器分支: git push origin my-new-feature
    5. 创建一个 PR
    + diff --git a/guide/css.html b/guide/css.html index dea937ad..f69e86b0 100644 --- a/guide/css.html +++ b/guide/css.html @@ -24,10 +24,10 @@ 使用 css | Fes.js - + -

    使用 css

    提示

    本文档以 css 为示例,把后缀换成 .less 同样适用。

    全局样式

    Fes.js 中约定 src/global.css 为全局样式,如果存在此文件,会被自动引入到入口文件最前面。

    比如用于覆盖样式,

    .layout-content {
    +    

    使用 css

    提示

    本文档以 css 为示例,把后缀换成 .less 同样适用。

    全局样式

    Fes.js 中约定 src/global.css 为全局样式,如果存在此文件,会被自动引入到入口文件最前面。

    比如用于覆盖样式,

    .layout-content {
       max-width: 1000px;
     }
     

    组件内样式

    <style>
    @@ -43,7 +43,7 @@
     }
     

    如果想直接引入CSS文件的话,则CSS文件名需要包含.module,比如:

    import style from '@/styles/index.module.css'
     console.log(style)
    -

    CSS 预处理器

    Fes.js 内置支持 less,不支持 sassstylus,但如果有需求,可以通过 chainWebpack 配置或者 fes-plugin 插件的形式支持。

    - +

    CSS 预处理器

    Fes.js 内置支持 less,不支持 sassstylus,但如果有需求,可以通过 chainWebpack 配置或者 fes-plugin 插件的形式支持。

    + diff --git a/guide/directory-structure.html b/guide/directory-structure.html index 8852005d..061c8c45 100644 --- a/guide/directory-structure.html +++ b/guide/directory-structure.html @@ -24,10 +24,10 @@ 目录结构 | Fes.js - + -

    目录结构

    快速上手中,大家对框架应该有初步的印象,接下来我们了解下目录结构。Fes.js 遵循 约定优于配置 的原则,一个基础的 Fes.js 项目大致是这样的:

    fes-template
    +    

    目录结构

    快速上手中,大家对框架应该有初步的印象,接下来我们了解下目录结构。Fes.js 遵循 约定优于配置 的原则,一个基础的 Fes.js 项目大致是这样的:

    fes-template
     ├── package.json
     ├── tsconfig.json
     ├── mock.js
    @@ -96,7 +96,7 @@
     FES_ENV=prod
     

    等同于 node 端运行时,设置如下:

    process.env.PORT = '8888';
     process.env.FES_ENV = 'prod';
    -

    dist 目录

    执行 fes build 后,产物默认会存放在这里。

    public 目录

    此目录下所有文件为静态资源,会被复制到输出路径。

    index.html

    默认的 html 模板文件,如果删除此 html 则会使用内置的 html 模板文件。

    src 目录

    .fes 目录

    临时文件目录,比如入口文件、路由等,都会被临时生成到这里。

    注意

    不要提交 .fes 目录到 git 仓库,他们会在 fes devfes build 时被删除并重新生成。

    pages 目录

    所有路由组件文件存放在这里。

    app.js

    运行时配置文件,可以在这里扩展运行时的能力,比如修改路由等。

    - +

    dist 目录

    执行 fes build 后,产物默认会存放在这里。

    public 目录

    此目录下所有文件为静态资源,会被复制到输出路径。

    index.html

    默认的 html 模板文件,如果删除此 html 则会使用内置的 html 模板文件。

    src 目录

    .fes 目录

    临时文件目录,比如入口文件、路由等,都会被临时生成到这里。

    注意

    不要提交 .fes 目录到 git 仓库,他们会在 fes devfes build 时被删除并重新生成。

    pages 目录

    所有路由组件文件存放在这里。

    app.js

    运行时配置文件,可以在这里扩展运行时的能力,比如修改路由等。

    + diff --git a/guide/env.html b/guide/env.html index fe537266..db8e90d4 100644 --- a/guide/env.html +++ b/guide/env.html @@ -24,10 +24,10 @@ 环境变量 | Fes.js - + -

    环境变量

    在构建或者代码在端上运行中需要一些跟区分于环境的变量,用于配置构建流程或者运行时过程,这时候我们可以配置环境变量。

    配置环境变量

    命令行添加

    比如:

    # OS X, Linux
    +    

    环境变量

    在构建或者代码在端上运行中需要一些跟区分于环境的变量,用于配置构建流程或者运行时过程,这时候我们可以配置环境变量。

    配置环境变量

    命令行添加

    比如:

    # OS X, Linux
     PORT=3000 fes dev
     
     # Windows (cmd.exe)
    @@ -44,7 +44,7 @@ cross-env PORT

    ANALYZE_MODE

    默认是server

    ANALYZE_PORT

    默认是8888

    CLEAR_OUTPUT

    仅仅在 build 时生效。如果设置为 none,就不会在构建前清除 Output 文件内容。

    RM_TMPDIR

    仅仅在 build 时生效。如果设置为 none,就不会在构建后清除 .fes 临时文件内容。

    process.env

    运行时配置需要以 FES_APP_ 开头,比如在 .env 中配置:

    FES_APP_KEY=123456789
     

    在代码中使用:

    console.log(process.env.FES_APP_KEY);
     // 输出 123456789
    -

    除了用户自定义的以FES_APP_开头的变量,还提供如下配置:

    • NODE_ENV:Node 环境变量

    • FES_ENV:Fes.js 环境变量

    • BASE_URL:等同于 publicPath

    - +

    除了用户自定义的以FES_APP_开头的变量,还提供如下配置:

    • NODE_ENV:Node 环境变量

    • FES_ENV:Fes.js 环境变量

    • BASE_URL:等同于 publicPath

    + diff --git a/guide/faq.html b/guide/faq.html index 169ac6e6..8a07f4e1 100644 --- a/guide/faq.html +++ b/guide/faq.html @@ -24,12 +24,12 @@ 常见问题 | Fes.js - + -

    常见问题

    为什么代码提示不生效?

    1. 需要先运行一次fes dev
    2. 检查tsconfig.json,include包含当前编辑文件,compilerOptions.path包含
    + diff --git a/guide/getting-started.html b/guide/getting-started.html index 3075ff55..13e81a34 100644 --- a/guide/getting-started.html +++ b/guide/getting-started.html @@ -24,10 +24,10 @@ 快速上手 | Fes.js - + -

    快速上手

    依赖环境

    首先得有 Node.js在新窗口打开,并确保 node 版本是 12.13 或以上。

    # 打印 node 版本
    +    

    快速上手

    依赖环境

    首先得有 Node.js在新窗口打开,并确保 node 版本是 12.13 或以上。

    # 打印 node 版本
     node -v
     v12.13.0
     

    推荐使用 pnpm在新窗口打开 管理 npm 依赖

    # 全局安装 pnpm
    @@ -99,7 +99,7 @@ dist
     ├── logo.png
     └── static
         └── logo.0f85bba0.png
    -

    本地验证

    发布之前,可以通过 serve在新窗口打开 做本地验证,验证结果应该跟执行 fes dev 的结果一样。

    部署

    本地验证完,就可以部署了。你需要把 dist 目录部署到服务器上。

    - +

    本地验证

    发布之前,可以通过 serve在新窗口打开 做本地验证,验证结果应该跟执行 fes dev 的结果一样。

    部署

    本地验证完,就可以部署了。你需要把 dist 目录部署到服务器上。

    + diff --git a/guide/image.html b/guide/image.html index fd283c89..e86fed44 100644 --- a/guide/image.html +++ b/guide/image.html @@ -24,10 +24,10 @@ 使用图片 | Fes.js - + -
    + diff --git a/guide/index.html b/guide/index.html index ab1b1a23..e6a310c3 100644 --- a/guide/index.html +++ b/guide/index.html @@ -24,15 +24,15 @@ 介绍 | Fes.js - + -

    介绍

    痛点

    在开发一个前端项目之前,我们可能需要做如下准备工作:

    • 搭建开发环境
    • 约定代码规范
    • 封装API请求
    • 配置路由
    • 实现布局、菜单、导航
    • 实现登录
    • 权限管理
    • ...

    除了准备工作之外,还会遇到很多相似的业务类型,比如中后台应用大多都是工作台、增删改查、权限、图表等。如果每次项目都完全手动处理一遍,不仅耗费时间,久而久之可能会存在多种技术栈、开发规范,导致开发流程不统一,历史项目越来越难维护。所以我们需要一套完整的解决方案,管理开发到部署整个流程。

    Fes.js 是什么?

    Fes.js 是一个好用的前端应用解决方案。Fes.js 以 Vue 3.0 和路由为基础,同时支持配置式路由和约定式路由,并以此进行功能扩展。配以覆盖编译时和运行时生命周期完善的插件体系,支持各种功能扩展和业务需求。

    它主要具备以下特点:

    • 🚀 快速 ,内置了路由、开发、构建等,并且提供测试、布局、权限、国际化、状态管理、API请求、数据字典、SvgIcon等插件,可以满足大部分日常开发需求。

    • 🧨 简单 ,基于Vue.js 3.0,上手简单。贯彻“约定优于配置”思想,设计插件上尽可能用约定替代配置,同时提供统一的插件配置入口,简单简洁又不失灵活。提供一致性的API入口,一致化的体验,学习起来更轻松。

    • 💪 健壮 ,只需要关心页面内容,减少写BUG的机会!提供单元测试、覆盖测试能力保障项目质量。

    • 📦 可扩展 ,借鉴Umi实现了完整的生命周期和插件化机制,插件可以管理项目的编译时和运行时,能力均可以通过插件封装进来,在 Fes.js 中协调有序的运行。

    • 📡 面向未来 ,在满足需求的同时,我们也不会停止对新技术的探索。已使用Vue3.0来提升应用性能,已使用webpack5提升构建性能和实现微服务,未来会探索vite等新技术。

    Fes.js 如何工作?

    架构

    架构

    Fes.js 把大家常用的技术栈封装成一个个插件进行整理,收敛到一起,让大家只用 Fes.js 就可以完成 80% 的日常工作。

    插件和插件集

    插件

    Fes.js 支持插件和插件集,通过这张图应该很好理解到他们的关系,通过插件集我们把插件收敛依赖然后支持不同的业务类型。

    .fes 临时文件

    .fes 临时目录是整个 Fes.js 项目的发动机,你的入口文件、路由等等都在这里,这些是由 fes 内部插件及三方插件生成的。

    你通常会在 .fes 下看到以下目录

    + .fes
    +    

    介绍

    痛点

    在开发一个前端项目之前,我们可能需要做如下准备工作:

    • 搭建开发环境
    • 约定代码规范
    • 封装API请求
    • 配置路由
    • 实现布局、菜单、导航
    • 实现登录
    • 权限管理
    • ...

    除了准备工作之外,还会遇到很多相似的业务类型,比如中后台应用大多都是工作台、增删改查、权限、图表等。如果每次项目都完全手动处理一遍,不仅耗费时间,久而久之可能会存在多种技术栈、开发规范,导致开发流程不统一,历史项目越来越难维护。所以我们需要一套完整的解决方案,管理开发到部署整个流程。

    Fes.js 是什么?

    Fes.js 是一个好用的前端应用解决方案。Fes.js 以 Vue 3.0 和路由为基础,同时支持配置式路由和约定式路由,并以此进行功能扩展。配以覆盖编译时和运行时生命周期完善的插件体系,支持各种功能扩展和业务需求。

    它主要具备以下特点:

    • 🚀 快速 ,内置了路由、开发、构建等,并且提供测试、布局、权限、国际化、状态管理、API请求、数据字典、SvgIcon等插件,可以满足大部分日常开发需求。

    • 🧨 简单 ,基于Vue.js 3.0,上手简单。贯彻“约定优于配置”思想,设计插件上尽可能用约定替代配置,同时提供统一的插件配置入口,简单简洁又不失灵活。提供一致性的API入口,一致化的体验,学习起来更轻松。

    • 💪 健壮 ,只需要关心页面内容,减少写BUG的机会!提供单元测试、覆盖测试能力保障项目质量。

    • 📦 可扩展 ,借鉴Umi实现了完整的生命周期和插件化机制,插件可以管理项目的编译时和运行时,能力均可以通过插件封装进来,在 Fes.js 中协调有序的运行。

    • 📡 面向未来 ,在满足需求的同时,我们也不会停止对新技术的探索。已使用Vue3.0来提升应用性能,已使用webpack5提升构建性能和实现微服务,未来会探索vite等新技术。

    Fes.js 如何工作?

    架构

    架构

    Fes.js 把大家常用的技术栈封装成一个个插件进行整理,收敛到一起,让大家只用 Fes.js 就可以完成 80% 的日常工作。

    插件和插件集

    插件

    Fes.js 支持插件和插件集,通过这张图应该很好理解到他们的关系,通过插件集我们把插件收敛依赖然后支持不同的业务类型。

    .fes 临时文件

    .fes 临时目录是整个 Fes.js 项目的发动机,你的入口文件、路由等等都在这里,这些是由 fes 内部插件及三方插件生成的。

    你通常会在 .fes 下看到以下目录

    + .fes
       + core     # 内部插件生成
       + pluginA  # 外部插件生成
       + presetB  # 外部插件生成
       + fes.js   # 入口文件
    -

    临时文件是 Fes.js 中非常重要的一部分,框架或插件会根据你的代码生成临时文件,这些原来需要放在项目里的脏乱差的部分都被藏在了这里。

    你可以在这里调试代码,但不要在 .git 仓库里提交他,因为他的临时性,每次启动 fes 时都会被删除并重新生成。

    为什么不是 ...?

    Vue CLI

    Vue CLI 是基于 Vue.js 进行快速开发的完整系统,提供交互式脚手架、丰富的官方插件,并且可通过插件进行扩展,他在打包层把体验做到了极致,但是不包含路由,不是框架。所以,如果大家想基于他修改部分配置,或者希望在打包层之外也做技术收敛时,就会遇到困难。

    UMI

    UMI 是个很好的选择,Fes.js 很多功能是借鉴 UMI 做的。UMI 是基于 React 封装的应用级框架,贯彻着函数式编程的思维。而 Vue 有所不同,虽然 Vue 3.0 向函数式迈了一大步,但大家可能依然喜欢编写 .vue文件,而非 .jsx 文件。两种思维方式会导致部分API设计上有所差异,虽然 UMI 有 plugin-vue ,但不太 "vue"。推荐喜欢 React 的同学使用 UMI。

    - +

    临时文件是 Fes.js 中非常重要的一部分,框架或插件会根据你的代码生成临时文件,这些原来需要放在项目里的脏乱差的部分都被藏在了这里。

    你可以在这里调试代码,但不要在 .git 仓库里提交他,因为他的临时性,每次启动 fes 时都会被删除并重新生成。

    为什么不是 ...?

    Vue CLI

    Vue CLI 是基于 Vue.js 进行快速开发的完整系统,提供交互式脚手架、丰富的官方插件,并且可通过插件进行扩展,他在打包层把体验做到了极致,但是不包含路由,不是框架。所以,如果大家想基于他修改部分配置,或者希望在打包层之外也做技术收敛时,就会遇到困难。

    UMI

    UMI 是个很好的选择,Fes.js 很多功能是借鉴 UMI 做的。UMI 是基于 React 封装的应用级框架,贯彻着函数式编程的思维。而 Vue 有所不同,虽然 Vue 3.0 向函数式迈了一大步,但大家可能依然喜欢编写 .vue文件,而非 .jsx 文件。两种思维方式会导致部分API设计上有所差异,虽然 UMI 有 plugin-vue ,但不太 "vue"。推荐喜欢 React 的同学使用 UMI。

    + diff --git a/guide/mock.html b/guide/mock.html index 01d51f35..2132434d 100644 --- a/guide/mock.html +++ b/guide/mock.html @@ -24,10 +24,10 @@ Mock 数据 | Fes.js - + -

    Mock 数据

    Mock 数据是前端开发过程中必不可少的一环,是分离前后端开发的关键链路。通过预先跟服务器端约定好的接口,模拟请求数据甚至逻辑,能够让前端开发独立自主,不会被服务端的开发所阻塞。

    约定式 Mock 文件

    Fes.js 约定 ./mock.js 为 mock 文件。

    比如:

    .
    +    

    Mock 数据

    Mock 数据是前端开发过程中必不可少的一环,是分离前后端开发的关键链路。通过预先跟服务器端约定好的接口,模拟请求数据甚至逻辑,能够让前端开发独立自主,不会被服务端的开发所阻塞。

    约定式 Mock 文件

    Fes.js 约定 ./mock.js 为 mock 文件。

    比如:

    .
     ├── mock.js
     └── src
         └── pages
    @@ -186,7 +186,7 @@
     

    utils 参数

    工具函数:

    • utils.file(path),从项目根目录根据 path 寻找文件,返回文件流。

    配置 Mock

    详见配置 mock

    关闭 Mock

    可以通过配置关闭。

    export default {
         mock: false,
     };
    -
    - +
    + diff --git a/guide/plugin.html b/guide/plugin.html index aedc7569..e11c56e1 100644 --- a/guide/plugin.html +++ b/guide/plugin.html @@ -24,10 +24,10 @@ 插件 | Fes.js - + -

    插件

    插件的 id 和 key

    每个插件都会对应一个 id 和一个 keyid 是路径的简写,key 是进一步简化后用于配置的唯一值

    比如插件 /node_modules/@fesjs/plugin-foo/index.js,通常来说,其 id@fesjs/plugin-fookeyfoo

    提示

    id 一般用不上,对于普通开发者 key 用来配置插件,而插件开发者可以使用 key 判断是否安装某个插件。

    启动插件

    有多种方式引入插件

    package.json 依赖

    Fes.js 会自动检测 dependenciesdevDependencies 里的 fes 插件,比如:

    {
    +    

    插件

    插件的 id 和 key

    每个插件都会对应一个 id 和一个 keyid 是路径的简写,key 是进一步简化后用于配置的唯一值

    比如插件 /node_modules/@fesjs/plugin-foo/index.js,通常来说,其 id@fesjs/plugin-fookeyfoo

    提示

    id 一般用不上,对于普通开发者 key 用来配置插件,而插件开发者可以使用 key 判断是否安装某个插件。

    启动插件

    有多种方式引入插件

    package.json 依赖

    Fes.js 会自动检测 dependenciesdevDependencies 里的 fes 插件,比如:

    {
         "dependencies": {
             "@fesjs/plugin-request": "^3.0.0"
         }
    @@ -45,7 +45,7 @@
             prefix: '/v2',
         },
     };
    -

    这里的 mock 是 Mock 插件 的 key。

    - +

    这里的 mock 是 Mock 插件 的 key。

    + diff --git a/guide/public.html b/guide/public.html index dfb85012..f2e224cd 100644 --- a/guide/public.html +++ b/guide/public.html @@ -24,10 +24,10 @@ 静态资源 | Fes.js - + -

    静态资源

    有些内容不需要经过 webpack 模块化处理,则可以将这些内容放在 public 文件夹,构建后会直接复制到 dist 目录,所以你需要通过BASE_URL来引入它们。

    在 HTML 模板中使用

    index.html 中需要设置:

    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
    +    

    静态资源

    有些内容不需要经过 webpack 模块化处理,则可以将这些内容放在 public 文件夹,构建后会直接复制到 dist 目录,所以你需要通过BASE_URL来引入它们。

    在 HTML 模板中使用

    index.html 中需要设置:

    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
     

    在.vue 和 js 文件中使用

    <template>
         <img :src="`${publicPath}my-image.png`" />
     </template>
    @@ -40,7 +40,7 @@
         },
     };
     </script>
    -
    - +
    + diff --git a/guide/route.html b/guide/route.html index d06f142f..5b2b0380 100644 --- a/guide/route.html +++ b/guide/route.html @@ -24,10 +24,10 @@ 路由 | Fes.js - + -

    路由

    像 Vue 、React 这类框架是用组件化搭建页面,路由解决的是路径到组件的匹配问题。Fes.js 基于 Vue Router 实现的路由,想了解更多的同学可以看看官方文档在新窗口打开

    路由配置

    在配置文件 .fes.js中通过 router 进行配置。

    + diff --git a/guide/runtime-config.html b/guide/runtime-config.html index 3d06076f..0f8b67a7 100644 --- a/guide/runtime-config.html +++ b/guide/runtime-config.html @@ -24,10 +24,10 @@ 运行时配置 | Fes.js - + -

    运行时配置

    Fes.js 约定 src/app.js 为运行时配置文件。运行时配置和配置的区别是他跑在浏览器端,因此我们可以在这里写函数、引入浏览器端依赖项等等,注意不要引入 node 端依赖项。

    运行时为啥需要配置?

    Fes.js 框架跟传统开发模式不一样。传统开发模式中用户编写 entry 文件,而 Fes.js 中 entry 文件由框架生成,用户就不必要编写胶水代码。内置插件和其他插件提供的一些运行时功能提供用户或者其他插件自定义。

    例如:

    plugin-access 插件定义运行时配置项:

    api.addRuntimePluginKey(() => 'access');
    +    

    运行时配置

    Fes.js 约定 src/app.js 为运行时配置文件。运行时配置和配置的区别是他跑在浏览器端,因此我们可以在这里写函数、引入浏览器端依赖项等等,注意不要引入 node 端依赖项。

    运行时为啥需要配置?

    Fes.js 框架跟传统开发模式不一样。传统开发模式中用户编写 entry 文件,而 Fes.js 中 entry 文件由框架生成,用户就不必要编写胶水代码。内置插件和其他插件提供的一些运行时功能提供用户或者其他插件自定义。

    例如:

    plugin-access 插件定义运行时配置项:

    api.addRuntimePluginKey(() => 'access');
     

    plugin-access 插件读取配置项:

    const runtimeConfig = plugin.applyPlugins({
         key: 'access',
         type: ApplyPluginsType.modify,
    @@ -163,7 +163,7 @@
             console.log(to);
         });
     }
    -

    更多配置项

    Fes.js 允许插件注册运行时配置,如果你使用插件,肯定会在插件里找到更多运行时的配置项。

    - +

    更多配置项

    Fes.js 允许插件注册运行时配置,如果你使用插件,肯定会在插件里找到更多运行时的配置项。

    + diff --git a/guide/template.html b/guide/template.html index c71a117e..de0d1dc7 100644 --- a/guide/template.html +++ b/guide/template.html @@ -24,10 +24,10 @@ HTML 模板 | Fes.js - + -

    HTML 模板

    Fes.js 默认模板内容是:

    提示

    fes3.0+ html 模版文件从 public/index.html 挪到项目根目录。

    + diff --git a/guide/upgrade3.html b/guide/upgrade3.html index 91043d00..3ce50b36 100644 --- a/guide/upgrade3.html +++ b/guide/upgrade3.html @@ -24,10 +24,10 @@ 从 2.0.x 迁移到 3.0.x | Fes.js - + -

    从 2.0.x 迁移到 3.0.x

    版本 3.0.x 的 break

    1. 编译时的 base 配置,移到了 router.base 下。
    2. webpack-dev-server在新窗口打开v3.x 升级到了 v4.x,如果遇到配置不兼容,可以查看webpack-dev-server 3.x 升级 4.x在新窗口打开

    继续使用 Webpack

    1. 添加 Webpack 构建依赖包: npm i @fesjs/builder-webpack -D
    2. 如果有,将 public/index.html 文件挪到项目根目录,移除 html-webpack-plugin在新窗口打开 相关配置,具体模版变量使用请查看HTML 模版

    换成 Vite

    1. 安装依赖包 npm i @fesjs/builder-vite
    2. 将 Webpack 相关的配置换成 Vite,具体可查看配置
    3. 将 html 模版文件从 public/index.html 挪到项目根目录,如果有相应的 html-webpack-plugin在新窗口打开 配置,需要改成 vite-plugin-html在新窗口打开 的写法。
    4. require 等 Vite 不支持的代码,改写成 Vite 支持的方式。

    插件

    插件都需要升级到 3.0.x 版本,新版添加了兼容builder的逻辑,但是提供的接口和配置没有变化,只需要升级版本即可使用。

    - +

    从 2.0.x 迁移到 3.0.x

    版本 3.0.x 的 break

    1. 编译时的 base 配置,移到了 router.base 下。
    2. webpack-dev-server在新窗口打开v3.x 升级到了 v4.x,如果遇到配置不兼容,可以查看webpack-dev-server 3.x 升级 4.x在新窗口打开

    继续使用 Webpack

    1. 添加 Webpack 构建依赖包: npm i @fesjs/builder-webpack -D
    2. 如果有,将 public/index.html 文件挪到项目根目录,移除 html-webpack-plugin在新窗口打开 相关配置,具体模版变量使用请查看HTML 模版

    换成 Vite

    1. 安装依赖包 npm i @fesjs/builder-vite
    2. 将 Webpack 相关的配置换成 Vite,具体可查看配置
    3. 将 html 模版文件从 public/index.html 挪到项目根目录,如果有相应的 html-webpack-plugin在新窗口打开 配置,需要改成 vite-plugin-html在新窗口打开 的写法。
    4. require 等 Vite 不支持的代码,改写成 Vite 支持的方式。

    插件

    插件都需要升级到 3.0.x 版本,新版添加了兼容builder的逻辑,但是提供的接口和配置没有变化,只需要升级版本即可使用。

    + diff --git a/index.html b/index.html index 1e58c7c5..d59820d6 100644 --- a/index.html +++ b/index.html @@ -24,10 +24,10 @@ 首页 | Fes.js - + -
    Fes.js

    Fes.js

    一个好用的前端应用解决方案

    快速上手 项目简介

    Fast

    Fes.js 内置路由、构建、插件管理,提供测试、布局、权限、国际化、状态管理、请求、数据字典、SVG等插件,可以满足大部分日常开发需求。

    Easy

    基于Vue.js 3.0,上手非常简单。贯彻 “约定优于配置” 思想,在设计插件上尽可能用约定替代配置,依然提供统一的插件配置入口,简单简洁又不失灵活。提供一致性的API入口,一致化的体验,学习起来更轻松。

    Strong

    仅仅需要关心页面内容,减少犯错的机会!提供单元测试、覆盖测试的能力保障项目质量。

    可扩展

    借鉴 UMI 实现完整的生命周期和插件化机制,插件可以管理项目的编译时和运行时,能力均可以通过插件封装进来,在 Fes.js 中协调有序的运行。

    面向未来

    在满足需求的同时,我们也不会停止对新技术的探索。已使用 Vue3.0 来提升应用性能,已使用 webpack5 和 vite 提升构建性能和实现微服务。

    令人愉悦

    我们的主要重点是开发人员体验。我们喜欢 Fes.js,并且会不断改进框架,所以您也喜欢它!期待有吸引力的解决方案,描述性的错误消息,强大的默认值和详细的文档。如果有问题或疑问,我们有用的社区将为您提供帮助。

    像数 1, 2, 3 一样容易

    # 创建模板
    +    
    Fes.js

    Fes.js

    一个好用的前端应用解决方案

    快速上手 项目简介

    Fast

    Fes.js 内置路由、构建、插件管理,提供测试、布局、权限、国际化、状态管理、请求、数据字典、SVG等插件,可以满足大部分日常开发需求。

    Easy

    基于Vue.js 3.0,上手非常简单。贯彻 “约定优于配置” 思想,在设计插件上尽可能用约定替代配置,依然提供统一的插件配置入口,简单简洁又不失灵活。提供一致性的API入口,一致化的体验,学习起来更轻松。

    Strong

    仅仅需要关心页面内容,减少犯错的机会!提供单元测试、覆盖测试的能力保障项目质量。

    可扩展

    借鉴 UMI 实现完整的生命周期和插件化机制,插件可以管理项目的编译时和运行时,能力均可以通过插件封装进来,在 Fes.js 中协调有序的运行。

    面向未来

    在满足需求的同时,我们也不会停止对新技术的探索。已使用 Vue3.0 来提升应用性能,已使用 webpack5 和 vite 提升构建性能和实现微服务。

    令人愉悦

    我们的主要重点是开发人员体验。我们喜欢 Fes.js,并且会不断改进框架,所以您也喜欢它!期待有吸引力的解决方案,描述性的错误消息,强大的默认值和详细的文档。如果有问题或疑问,我们有用的社区将为您提供帮助。

    像数 1, 2, 3 一样容易

    # 创建模板
     pnpm create @fesjs/fes-app myapp
     
     # 安装依赖
    @@ -44,6 +44,6 @@ npx @fesjs/create-fes-app myapp
     # 运行
     npm run dev
     

    反馈

    Github IssueFes.js 开源运营小助手
    @fesjs/fes.js/issues在新窗口打开
    - + diff --git a/reference/api.html b/reference/api.html index c079e1b8..744fc7f5 100644 --- a/reference/api.html +++ b/reference/api.html @@ -24,10 +24,10 @@ API | Fes.js - + - - + + diff --git a/reference/api/index.html b/reference/api/index.html index 315d03ab..35a0d642 100644 --- a/reference/api/index.html +++ b/reference/api/index.html @@ -24,10 +24,10 @@ API | Fes.js - + -

    API

    Fes.js 统一了API的出口,所有运行时API(包含Fes.js内置API和插件提供的API)全部通过@fesjs/fes导出。

    import { someApi  } from "@fesjs/fes"
    +    

    API

    Fes.js 统一了API的出口,所有运行时API(包含Fes.js内置API和插件提供的API)全部通过@fesjs/fes导出。

    import { someApi  } from "@fesjs/fes"
     

    基础API

    plugin

    提示

    主要在插件里面使用,项目代码中一般用不到。

    运行时插件接口,是 Fes.js 内置的跑在浏览器里的一套插件体系。

    import { plugin, ApplyPluginsType } from '@fesjs/fes';
     
     // 注册插件
    @@ -104,7 +104,7 @@ router.push<
     <router-view v-slot="{ Component, route }">
       <component :is="Component" />
     </router-view>
    -

    可以查看官方文档在新窗口打开了解更多 RouterView 的 Porps。查看官方文档在新窗口打开了解 RouterView 的作用域插槽。

    其他 Router Methods

    查看vue-router 官方文档在新窗口打开了解更多。

    - +

    可以查看官方文档在新窗口打开了解更多 RouterView 的 Porps。查看官方文档在新窗口打开了解 RouterView 的作用域插槽。

    其他 Router Methods

    查看vue-router 官方文档在新窗口打开了解更多。

    + diff --git a/reference/cli.html b/reference/cli.html index ea2fd297..95644496 100644 --- a/reference/cli.html +++ b/reference/cli.html @@ -24,10 +24,10 @@ 命令行接口 | Fes.js - + -

    命令行接口

    VuePress 命令行接口是由 @vuepress/cli在新窗口打开 包提供的。它是 vuepress在新窗口打开 包的依赖之一,当然你也可以单独安装它。

    执行 vuepress --help 来获取下列帮助信息:

    Usage:
    +    

    命令行接口

    VuePress 命令行接口是由 @vuepress/cli在新窗口打开 包提供的。它是 vuepress在新窗口打开 包的依赖之一,当然你也可以单独安装它。

    执行 vuepress --help 来获取下列帮助信息:

    Usage:
       $ vuepress <command> [options]
     
     Commands:
    @@ -72,7 +72,7 @@ Options:
       --debug                Enable debug mode
       -v, --version          Display version number
       -h, --help             Display this message
    -

    提示

    通过命令行设置的配置项,会覆盖你配置文件中的同名配置项。

    info

    输出当前系统和依赖相关的信息。

    在你想要检查你的环境,或者提交 Issue 时候,可以使用该命令。

    - +

    提示

    通过命令行设置的配置项,会覆盖你配置文件中的同名配置项。

    info

    输出当前系统和依赖相关的信息。

    在你想要检查你的环境,或者提交 Issue 时候,可以使用该命令。

    + diff --git a/reference/cli/index.html b/reference/cli/index.html index 3fa2920b..98812c49 100644 --- a/reference/cli/index.html +++ b/reference/cli/index.html @@ -24,10 +24,10 @@ 命令行工具 | Fes.js - + -

    命令行工具

    create-fes-app

    通过 create-fes-app 命令创建项目模板,输入create-fes-app -h则可以看到如下信息:

    Usage: create-fes-app <name>
    +    

    命令行工具

    create-fes-app

    通过 create-fes-app 命令创建项目模板,输入create-fes-app -h则可以看到如下信息:

    Usage: create-fes-app <name>
     
     Options:
         -v, --version            Output the current version
    @@ -112,7 +112,7 @@ Options:
       --verbose              show full function definitions in output
       -h, --help             display help for command
     

    比如:

    fes webpack
    -
    - +
    + diff --git a/reference/config/index.html b/reference/config/index.html index b185a67e..28cef742 100644 --- a/reference/config/index.html +++ b/reference/config/index.html @@ -24,10 +24,10 @@ | Fes.js - + -

    配置文件

    Fes.js 内置了比较通用的构建方式,如果没有个性化需求,不需要修改构建相关的配置。

    配置文件解析

    Fes.js 会自动解析项目根目录下的 .fes.js 文件。

    最基础的配置文件是这样的:

    // .fes.js
    +    

    配置文件

    Fes.js 内置了比较通用的构建方式,如果没有个性化需求,不需要修改构建相关的配置。

    配置文件解析

    Fes.js 会自动解析项目根目录下的 .fes.js 文件。

    最基础的配置文件是这样的:

    // .fes.js
     export default {};
     

    可以通过环境变量 FES_ENV 进行环境差异化配置,当我们运行 FES_ENV=prod fes dev 时,Fes.js 会找到 .fes.js.fes.prod.js(可选) 的配置文件进行 deepmerge

    配置智能提示

    可以通过 defineBuildConfig 工具函数获取类型提示:

    import { defineBuildConfig } from '@fesjs/fes';
     
    @@ -144,7 +144,7 @@
     

    extraBabelPlugins

    • 类型: array
    • 默认值: []
    • 详情:

    配置额外的 babel 插件。

    • 示例:
    export default {
         extraBabelPlugins: [['import', { libraryName: 'ant-design-vue', libraryDirectory: 'es', style: 'css' }]],
     };
    -

    extraBabelPresets

    • 类型: array
    • 默认值: []
    • 详情:

    配置额外的 babel 插件集。

    extraPostCSSPlugins

    html

    lessLoader

    nodeModulesTransform

    • 类型: object

    • 默认值: { exclude: [] }

    • 详情:

      默认编译所有 node_modules 下的包,可以通过配置 exclude 来跳过某些包,以提高编译速度。

    postcssLoader

    vueLoader

    Vite 专属配置

    viteOption

    viteVuePlugin

    viteVueJsx

    viteLegacy

    viteHtml

    更多配置项

    Fes.js 允许插件注册配置,如果你使用插件,肯定会在插件里找到更多配置项。

    - +

    extraBabelPresets

    • 类型: array
    • 默认值: []
    • 详情:

    配置额外的 babel 插件集。

    extraPostCSSPlugins

    html

    lessLoader

    nodeModulesTransform

    • 类型: object

    • 默认值: { exclude: [] }

    • 详情:

      默认编译所有 node_modules 下的包,可以通过配置 exclude 来跳过某些包,以提高编译速度。

    postcssLoader

    vueLoader

    Vite 专属配置

    viteOption

    viteVuePlugin

    viteVueJsx

    viteLegacy

    viteHtml

    更多配置项

    Fes.js 允许插件注册配置,如果你使用插件,肯定会在插件里找到更多配置项。

    + diff --git a/reference/plugin/dev/api.html b/reference/plugin/dev/api.html index 12d24414..6f50115c 100644 --- a/reference/plugin/dev/api.html +++ b/reference/plugin/dev/api.html @@ -24,10 +24,10 @@ 插件 API | Fes.js - + -

    插件 API

    属性

    api.paths

    一些关键的路径:

    • cwd,执行命令的绝对路径
    • absNodeModulesPath,nodeModule 的绝对路径
    • absOutputPath,输出 build 产物的绝对路径
    • absSrcPath,src 目录的绝对路径
    • absPagesPath,pages目录的绝对路径
    • absTmpPath,.fes临时文件目录的绝对路径

    api.cwd

    执行命令的绝对路径

    api.pkg

    package.json的内容

    api.configInstance

    config实例

    userConfig

    用户配置

    config

    插件配置可被修改,此为最终的配置

    env

    process.env

    args

    环境变量

    核心方法

    describe

    注册阶段执行,用于描述插件或插件集的 id、key、配置信息、启用方式等。

    用法:describe({ id?: string, key?: string, config?: { default, schema, onChange } }, enableBy?)

    例如:

    api.describe({
    +    

    插件 API

    属性

    api.paths

    一些关键的路径:

    • cwd,执行命令的绝对路径
    • absNodeModulesPath,nodeModule 的绝对路径
    • absOutputPath,输出 build 产物的绝对路径
    • absSrcPath,src 目录的绝对路径
    • absPagesPath,pages目录的绝对路径
    • absTmpPath,.fes临时文件目录的绝对路径

    api.cwd

    执行命令的绝对路径

    api.pkg

    package.json的内容

    api.configInstance

    config实例

    userConfig

    用户配置

    config

    插件配置可被修改,此为最终的配置

    env

    process.env

    args

    环境变量

    核心方法

    describe

    注册阶段执行,用于描述插件或插件集的 id、key、配置信息、启用方式等。

    用法:describe({ id?: string, key?: string, config?: { default, schema, onChange } }, enableBy?)

    例如:

    api.describe({
         key: 'esbuild',
         config: {
             schema(joi) {
    @@ -222,7 +222,7 @@ api.modifyRo
             REPLACE_ROLES: JSON.stringify(roles),
         }),
     });
    -

    参数:

    • path:相对于临时文件夹的路径
    • content:文件内容

    提示

    不能在注册阶段使用,通常放在 api.onGenerateFiles() 里,这样能在需要时重新生成临时文件 临时文件的写入做了缓存处理,如果内容一致,不会做写的操作,以减少触发 webpack 的重新编译

    - +

    参数:

    • path:相对于临时文件夹的路径
    • content:文件内容

    提示

    不能在注册阶段使用,通常放在 api.onGenerateFiles() 里,这样能在需要时重新生成临时文件 临时文件的写入做了缓存处理,如果内容一致,不会做写的操作,以减少触发 webpack 的重新编译

    + diff --git a/reference/plugin/dev/index.html b/reference/plugin/dev/index.html index 49471c12..72077526 100644 --- a/reference/plugin/dev/index.html +++ b/reference/plugin/dev/index.html @@ -24,10 +24,10 @@ 插件介绍 | Fes.js - + -

    插件介绍

    开始

    一个插件是一个 npm 包,它能够为 Fes.js 创建的项目添加额外的功能,这些功能包括:

    • 项目的 webpack 配置。
    • 修改项目的 babel 配置。
    • 添加新的 fes 命令 - 例如 @fes/plugin-jest 添加了 fes test 命令,允许开发者运行单元测试。
    • 集成 Vue 的插件。
    • 修改路由配置
    • 提供运行时 API
    • ...

    插件的入口是一个函数,函数会以 API 对象作为第一个参数:

    export default (api) => {
    +    

    插件介绍

    开始

    一个插件是一个 npm 包,它能够为 Fes.js 创建的项目添加额外的功能,这些功能包括:

    • 项目的 webpack 配置。
    • 修改项目的 babel 配置。
    • 添加新的 fes 命令 - 例如 @fes/plugin-jest 添加了 fes test 命令,允许开发者运行单元测试。
    • 集成 Vue 的插件。
    • 修改路由配置
    • 提供运行时 API
    • ...

    插件的入口是一个函数,函数会以 API 对象作为第一个参数:

    export default (api) => {
         api.describe({
             key: 'esbuild',
             config: {
    @@ -43,7 +43,7 @@
     
    第二步:创建插件项目
    create-fes-app pluginName
     

    在询问Pick an template时选择Plugin!

    第三步:进入插件目录 & 安装依赖
    cd pluginName & pnpm i
     
    第四步:启动编译
    pnpm dev
    -
    第五步:使用插件 API 完成你的插件!(可以参考其他插件理解 api 用法和场景)

    发布到 npm

    @fesjs/preset-@fesjs/plugin-@webank/fes-preset-@webank/fes-plugin-fes-preset-fes-plugin- 开头的依赖会被 Fes.js 自动注册为插件或插件集。

    所以编写好的插件想发布到 npm 供其他人使用,包名必须是 fes-preset-fes-plugin- 开头。

    - +
    第五步:使用插件 API 完成你的插件!(可以参考其他插件理解 api 用法和场景)

    发布到 npm

    @fesjs/preset-@fesjs/plugin-@webank/fes-preset-@webank/fes-plugin-fes-preset-fes-plugin- 开头的依赖会被 Fes.js 自动注册为插件或插件集。

    所以编写好的插件想发布到 npm 供其他人使用,包名必须是 fes-preset-fes-plugin- 开头。

    + diff --git a/reference/plugin/index.html b/reference/plugin/index.html index 8fbf394e..c6210962 100644 --- a/reference/plugin/index.html +++ b/reference/plugin/index.html @@ -24,10 +24,10 @@ 介绍 | Fes.js - + -

    介绍

    插件列表

    插件介绍
    @fesjs/plugin-access提供对页面资源的权限控制能力
    @fesjs/plugin-enums提供统一的枚举存取及丰富的函数来处理枚举
    @fesjs/plugin-iconsvg 文件自动注册为组件
    @fesjs/plugin-jest基于 Jest,提供单元测试、覆盖测试能力
    @fesjs/plugin-layout简单的配置即可拥有布局,包括导航以及侧边栏
    @fesjs/plugin-locale基于 Vue I18n,提供国际化能力
    @fesjs/plugin-model简易的数据管理方案
    @fesjs/plugin-request基于 Axios 封装的 request,内置防止重复请求、请求节流、错误处理等功能
    @fesjs/plugin-vuex基于 Vuex, 提供状态管理能力
    @fesjs/plugin-qiankun基于 qiankun,提供微服务能力
    @fesjs/plugin-sass样式支持sass
    @fesjs/plugin-monaco-editor提供代码编辑器能力, 基于monaco-editor(VS Code使用的代码编辑器)
    @fesjs/plugin-windicss基于 windicss,提供原子化 CSS 能力
    @fesjs/plugin-pinia基于 pinia,提供状态管理
    @fesjs/plugin-watermark水印
    @fesjs/plugin-swcswc

    架构

    架构

    Fes.js 把大家常用的技术栈封装成一个个插件进行整理,收敛到一起,让大家只用 Fes.js 就可以完成 80% 的日常工作。

    - +

    介绍

    插件列表

    插件介绍
    @fesjs/plugin-access提供对页面资源的权限控制能力
    @fesjs/plugin-enums提供统一的枚举存取及丰富的函数来处理枚举
    @fesjs/plugin-iconsvg 文件自动注册为组件
    @fesjs/plugin-jest基于 Jest,提供单元测试、覆盖测试能力
    @fesjs/plugin-layout简单的配置即可拥有布局,包括导航以及侧边栏
    @fesjs/plugin-locale基于 Vue I18n,提供国际化能力
    @fesjs/plugin-model简易的数据管理方案
    @fesjs/plugin-request基于 Axios 封装的 request,内置防止重复请求、请求节流、错误处理等功能
    @fesjs/plugin-vuex基于 Vuex, 提供状态管理能力
    @fesjs/plugin-qiankun基于 qiankun,提供微服务能力
    @fesjs/plugin-sass样式支持sass
    @fesjs/plugin-monaco-editor提供代码编辑器能力, 基于monaco-editor(VS Code使用的代码编辑器)
    @fesjs/plugin-windicss基于 windicss,提供原子化 CSS 能力
    @fesjs/plugin-pinia基于 pinia,提供状态管理
    @fesjs/plugin-watermark水印
    @fesjs/plugin-swcswc

    架构

    架构

    Fes.js 把大家常用的技术栈封装成一个个插件进行整理,收敛到一起,让大家只用 Fes.js 就可以完成 80% 的日常工作。

    + diff --git a/reference/plugin/plugins/access.html b/reference/plugin/plugins/access.html index 6a6bd653..2164d5d8 100644 --- a/reference/plugin/plugins/access.html +++ b/reference/plugin/plugins/access.html @@ -24,10 +24,10 @@ @fesjs/plugin-access | Fes.js - + -

    @fesjs/plugin-access

    介绍

    对于前端应用来说,权限就是页面、页面元素是否可见。

    资源

    Fes.js 把页面、页面元素统一叫做资源,用资源 ID 来识别区分他们:

    • 页面的资源 ID 默认是页面的路由 path 。比如页面 pages/a.vue 的路由 path/a。当页面访问 /a 时会渲染当前页面,/a 也就是页面的 accessId
    • 页面元素的资源 ID 没有默认值,需要自定义。
    <template>
    +    

    @fesjs/plugin-access

    介绍

    对于前端应用来说,权限就是页面、页面元素是否可见。

    资源

    Fes.js 把页面、页面元素统一叫做资源,用资源 ID 来识别区分他们:

    • 页面的资源 ID 默认是页面的路由 path 。比如页面 pages/a.vue 的路由 path/a。当页面访问 /a 时会渲染当前页面,/a 也就是页面的 accessId
    • 页面元素的资源 ID 没有默认值,需要自定义。
    <template>
         <access :id="accessId"> accessOnepicess1 </access>
         <div v-access="accessId">accessOnepicess2</div>
     </template>
    @@ -133,7 +133,7 @@ access.getAc
         },
     };
     </script>
    -
    - +
    + diff --git a/reference/plugin/plugins/editor.html b/reference/plugin/plugins/editor.html index d33854f6..c3dbf1db 100644 --- a/reference/plugin/plugins/editor.html +++ b/reference/plugin/plugins/editor.html @@ -24,10 +24,10 @@ @fesjs/plugin-monaco-editor | Fes.js - + -

    @fesjs/plugin-monaco-editor

    介绍

    我们会遇到需要编辑代码的场景,比如编辑jsonjavascriptpython等等,Monaco Editor在新窗口打开 是  一个好用而且强大的的代码编辑器库,引入Monaco Editor有一定的成本,插件实现了胶水代码,提供轻松引入的能力。目前内置的 Monaco Editor 版本是 1.9.1

    启用方式

    package.json 中引入依赖:

    {
    +    

    @fesjs/plugin-monaco-editor

    介绍

    我们会遇到需要编辑代码的场景,比如编辑jsonjavascriptpython等等,Monaco Editor在新窗口打开 是  一个好用而且强大的的代码编辑器库,引入Monaco Editor有一定的成本,插件实现了胶水代码,提供轻松引入的能力。目前内置的 Monaco Editor 版本是 1.9.1

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-monaco-editor": "^3.0.0"
    @@ -72,7 +72,7 @@ monaco.editor},
     };
     </script>
    -

    props

    属性说明类型默认值
    theme编辑器的主题,使用其他主题需要先使用monaco.editor.defineTheme定义主题stringdefaultTheme
    language编辑器的语言string-
    height编辑器的高度string100%
    width编辑器的宽度string100%
    modelValue(v-model)编辑器的代码string-
    readOnly是否只读booleanfalse
    options编辑器的配置对象object{}
    check是否检查代码,如果检查不通过则不更新数据,目前只支持jsonbooleanfalse

    events

    事件名称说明回调参数
    onload编辑器初始化后触发({monaco, editor, editorModel}) => void
    scrollChange滚动时触发(e) => void
    - +

    props

    属性说明类型默认值
    theme编辑器的主题,使用其他主题需要先使用monaco.editor.defineTheme定义主题stringdefaultTheme
    language编辑器的语言string-
    height编辑器的高度string100%
    width编辑器的宽度string100%
    modelValue(v-model)编辑器的代码string-
    readOnly是否只读booleanfalse
    options编辑器的配置对象object{}
    check是否检查代码,如果检查不通过则不更新数据,目前只支持jsonbooleanfalse

    events

    事件名称说明回调参数
    onload编辑器初始化后触发({monaco, editor, editorModel}) => void
    scrollChange滚动时触发(e) => void
    + diff --git a/reference/plugin/plugins/enums.html b/reference/plugin/plugins/enums.html index 3a078d07..d862bf5e 100644 --- a/reference/plugin/plugins/enums.html +++ b/reference/plugin/plugins/enums.html @@ -24,10 +24,10 @@ @fesjs/plugin-enums | Fes.js - + -

    @fesjs/plugin-enums

    介绍

    日常业务开发中,有很多场景会使用到枚举值,比如 select-options、table-column。

    该插件提供统一的枚举存取及丰富的函数来处理枚举。

    启用方式

    package.json 中引入依赖:

    {
    +    

    @fesjs/plugin-enums

    介绍

    日常业务开发中,有很多场景会使用到枚举值,比如 select-options、table-column。

    该插件提供统一的枚举存取及丰富的函数来处理枚举。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-enums": "^3.0.0"
    @@ -156,7 +156,7 @@ dir              value
     'age'        =>  18
     'role[0]'    =>  {id: 1, name: '管理员'}
     'role[1].id' =>  2
    -

    提示

    枚举项 value 如果是基本类型,则规则不生效,value 就是当前值

    - +

    提示

    枚举项 value 如果是基本类型,则规则不生效,value 就是当前值

    + diff --git a/reference/plugin/plugins/icon.html b/reference/plugin/plugins/icon.html index da587678..424bae54 100644 --- a/reference/plugin/plugins/icon.html +++ b/reference/plugin/plugins/icon.html @@ -24,17 +24,17 @@ @fesjs/plugin-icon | Fes.js - + -

    @fesjs/plugin-icon

    介绍

    提供以 component 的方式,直接使用 svg icon 的能力。

    启用方式

    package.json 中引入依赖:

    属性

    属性说明类型
    typesvg 文件名string
    spin是否无限旋转boolean
    rotate旋转角度number
    + diff --git a/reference/plugin/plugins/jest.html b/reference/plugin/plugins/jest.html index db8d0497..466e4edb 100644 --- a/reference/plugin/plugins/jest.html +++ b/reference/plugin/plugins/jest.html @@ -24,10 +24,10 @@ @fesjs/plugin-jest | Fes.js - + -

    @fesjs/plugin-jest

    集成 Jest在新窗口打开 测试框架,目前只支持单元测试和覆盖测试。

    启用方式

    package.json 中引入依赖:

    {
    +    

    @fesjs/plugin-jest

    集成 Jest在新窗口打开 测试框架,目前只支持单元测试和覆盖测试。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-jest": "^3.0.0"
    @@ -333,7 +333,7 @@ Options:
       -h, --help                    display help for command
     
     

    比如覆盖测试:

    fes test --coverage
    -

    配置文件

    除了插件内置的默认配置之外,插件遵循 Jest的配置文件规范,约定项目根目录下的 jest.config.js 为用户配置文件,约定 packages.jsonjest 属性内容也是配置。

    优先级

    args 配置 > package.json中的 jest > jest.config.js > 默认配置

    - +

    配置文件

    除了插件内置的默认配置之外,插件遵循 Jest的配置文件规范,约定项目根目录下的 jest.config.js 为用户配置文件,约定 packages.jsonjest 属性内容也是配置。

    优先级

    args 配置 > package.json中的 jest > jest.config.js > 默认配置

    + diff --git a/reference/plugin/plugins/layout.html b/reference/plugin/plugins/layout.html index 681f7c9f..9fcd77c6 100644 --- a/reference/plugin/plugins/layout.html +++ b/reference/plugin/plugins/layout.html @@ -24,10 +24,10 @@ @fesjs/plugin-layout | Fes.js - + -

    @fesjs/plugin-layout

    介绍

    为了进一步降低研发成本,我们将布局利用 fes.js 插件的方式内置,只需通过简单的配置即可拥有布局,包括导航以及侧边栏。从而做到用户无需关心布局。

    • 侧边栏菜单数据根据路由中的配置自动生成。
    • 布局,提供 sidetopmixinleft-right 四种布局。
    • 主题,提供 lightdark 两种主题。
    • 默认实现对路由的 404、403 处理。
    • 搭配 @fesjs/plugin-access 插件使用,可以完成对路由的权限控制。
    • 搭配 @fesjs/plugin-locale 插件使用,提供切换语言的能力。
    • 支持自定义头部或者侧边栏区域。
    • 菜单支持配置 icon。
    • 菜单标题支持国际化。
    • 可配置页面是否需要 layout。

    启用方式

    package.json 中引入依赖:

    {
    +    

    @fesjs/plugin-layout

    介绍

    为了进一步降低研发成本,我们将布局利用 fes.js 插件的方式内置,只需通过简单的配置即可拥有布局,包括导航以及侧边栏。从而做到用户无需关心布局。

    • 侧边栏菜单数据根据路由中的配置自动生成。
    • 布局,提供 sidetopmixinleft-right 四种布局。
    • 主题,提供 lightdark 两种主题。
    • 默认实现对路由的 404、403 处理。
    • 搭配 @fesjs/plugin-access 插件使用,可以完成对路由的权限控制。
    • 搭配 @fesjs/plugin-locale 插件使用,提供切换语言的能力。
    • 支持自定义头部或者侧边栏区域。
    • 菜单支持配置 icon。
    • 菜单标题支持国际化。
    • 可配置页面是否需要 layout。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-layout": "^5.0.0"
    @@ -139,7 +139,7 @@
     //如果要更新
     titleRef.value = 'changed';
     </script>
    -

    4.x 升级到 5.x

    1. 个性化 layout 配置改为使用传入 navigation
    2. customHeader 改为 renderCustom
    3. fixedHeader 改为 isFixedHeader
    4. menusConfig 改为 menuProps
    5. fixedSideBar 改为 isFixedSidebar
    6. 去掉运行时 logo、header、sidebar 三个区域显示配置,请改为使用 navigation: left-right
    - +

    4.x 升级到 5.x

    1. 个性化 layout 配置改为使用传入 navigation
    2. customHeader 改为 renderCustom
    3. fixedHeader 改为 isFixedHeader
    4. menusConfig 改为 menuProps
    5. fixedSideBar 改为 isFixedSidebar
    6. 去掉运行时 logo、header、sidebar 三个区域显示配置,请改为使用 navigation: left-right
    + diff --git a/reference/plugin/plugins/locale.html b/reference/plugin/plugins/locale.html index cc70abb1..c3f6c0f1 100644 --- a/reference/plugin/plugins/locale.html +++ b/reference/plugin/plugins/locale.html @@ -24,10 +24,10 @@ @fesjs/plugin-locale | Fes.js - + -

    @fesjs/plugin-locale

    介绍

    国际化插件,基于 Vue I18n在新窗口打开,用于解决 i18n 问题。

    启用方式

    package.json 中引入依赖:

    useI18n()返回结果是 Composer在新窗口打开,提供类似 tnd 等转换函数,在模板中使用。

    + diff --git a/reference/plugin/plugins/login.html b/reference/plugin/plugins/login.html index 4896270d..c84b8551 100644 --- a/reference/plugin/plugins/login.html +++ b/reference/plugin/plugins/login.html @@ -24,10 +24,10 @@ @fesjs/plugin-login | Fes.js - + -
    + diff --git a/reference/plugin/plugins/model.html b/reference/plugin/plugins/model.html index 047e8750..9e39cf1e 100644 --- a/reference/plugin/plugins/model.html +++ b/reference/plugin/plugins/model.html @@ -24,10 +24,10 @@ @fesjs/plugin-model | Fes.js - + -

    @fesjs/plugin-model

    启用方式

    在 package.json 中引入依赖:

    API

    useModel

    useModel(name)

    • 类型:函数
    • 详情: 获取 Model 数据, 也就是 Model 文件默认导出函数执行的结果。
    • 参数
      • name,传入 Model 文件名
    + diff --git a/reference/plugin/plugins/pinia.html b/reference/plugin/plugins/pinia.html index 7e91dc85..3639184b 100644 --- a/reference/plugin/plugins/pinia.html +++ b/reference/plugin/plugins/pinia.html @@ -24,10 +24,10 @@ @fesjs/plugin-pinia | Fes.js - + -

    @fesjs/plugin-pinia

    介绍

    集成 pinia在新窗口打开 ,提供状态管理的能力,封装一些胶水代码,可以直接定义 store 使用。

    为了防止 Fes.jspinia 提供的 API 冲突,Fes.js不提供任何 pinia 的 API,相关 API 直接从 pinia 导出:

    import { defineStore } from 'pinia';
    +    

    @fesjs/plugin-pinia

    介绍

    集成 pinia在新窗口打开 ,提供状态管理的能力,封装一些胶水代码,可以直接定义 store 使用。

    为了防止 Fes.jspinia 提供的 API 冲突,Fes.js不提供任何 pinia 的 API,相关 API 直接从 pinia 导出:

    import { defineStore } from 'pinia';
     

    约定 plugin 定义放在 stores 目录下,文件名包含 plugin 被解析为插件,无需额外配置,定义即可用。

    └── src
         ├── pages
         │    └── index.vue
    @@ -74,7 +74,7 @@
             });
         },
     };
    -
    - +
    + diff --git a/reference/plugin/plugins/qiankun.html b/reference/plugin/plugins/qiankun.html index db1752ee..4d381f3e 100644 --- a/reference/plugin/plugins/qiankun.html +++ b/reference/plugin/plugins/qiankun.html @@ -24,10 +24,10 @@ @fesjs/plugin-qiankun | Fes.js - + -

    @fesjs/plugin-qiankun

    Fes.js plugin for qiankun在新窗口打开,参考@umijs/plugin-qiankun在新窗口打开 实现,喜欢 React 的同学推荐直接用 Umi。

    启用方式

    package.json 中引入依赖:

    {
    +    

    @fesjs/plugin-qiankun

    Fes.js plugin for qiankun在新窗口打开,参考@umijs/plugin-qiankun在新窗口打开 实现,喜欢 React 的同学推荐直接用 Umi。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-qiankun": "^3.0.0"
    @@ -210,7 +210,7 @@
         },
     };
     </script>
    -

    基于 props 传递

    • 主应用使用 props 的模式传递数据(参考主应用装载子应用配置一节)
    • 子应用在生命周期钩子中获取 props 消费数据(参考子应用运行时配置一节)

    MicroApp

    属性说明类型默认值
    name子应用名称,传入qiankun.main.apps配置中的nameString-
    settings子应用配置信息Object{}
    props传入子应用的参数Object{}
    lifeCycles子应用生命周期钩子Object{}
    cacheName子应用缓存名称,配置后根据name+cacheName缓存子应用实例Object-

    MicroAppWithMemoHistory

    属性说明类型默认值
    name子应用名称,传入qiankun.main.apps配置中的nameString-
    settings子应用配置信息Object{}
    props传入子应用的参数Object{}
    lifeCycles子应用生命周期钩子Object{}
    cacheName子应用缓存名称,配置后根据name+cacheName缓存子应用实例Object-
    url子应用的路由地址String-
    - +

    基于 props 传递

    • 主应用使用 props 的模式传递数据(参考主应用装载子应用配置一节)
    • 子应用在生命周期钩子中获取 props 消费数据(参考子应用运行时配置一节)

    MicroApp

    属性说明类型默认值
    name子应用名称,传入qiankun.main.apps配置中的nameString-
    settings子应用配置信息Object{}
    props传入子应用的参数Object{}
    lifeCycles子应用生命周期钩子Object{}
    cacheName子应用缓存名称,配置后根据name+cacheName缓存子应用实例Object-

    MicroAppWithMemoHistory

    属性说明类型默认值
    name子应用名称,传入qiankun.main.apps配置中的nameString-
    settings子应用配置信息Object{}
    props传入子应用的参数Object{}
    lifeCycles子应用生命周期钩子Object{}
    cacheName子应用缓存名称,配置后根据name+cacheName缓存子应用实例Object-
    url子应用的路由地址String-
    + diff --git a/reference/plugin/plugins/request.html b/reference/plugin/plugins/request.html index eb0bd8f2..46628da7 100644 --- a/reference/plugin/plugins/request.html +++ b/reference/plugin/plugins/request.html @@ -24,10 +24,10 @@ @fesjs/plugin-request | Fes.js - + -

    @fesjs/plugin-request

    基于 fetch 封装的 request,内置防止重复请求、请求缓存、错误处理等功能。

    启用方式

    package.json 中引入依赖:

    {
    +    

    @fesjs/plugin-request

    基于 fetch 封装的 request,内置防止重复请求、请求缓存、错误处理等功能。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-request": "^4.0.0-beta.0"
    @@ -163,7 +163,7 @@ controller.a
             };
         },
     };
    -

    3.x 升级到 4.x

    1. 缓存参数 cache 改成 cacheData(避免与 fetch 原本的 cache 冲突)
    2. dataHandler 改成 transformData
    3. requestInterceptors 改为 requestInterceptor,不在支持数组,只支持函数
    4. responseInterceptors 改为 responseInterceptor,不在支持数组,只支持函数
    5. 其他 axios 特有的配置不在支持
    - +

    3.x 升级到 4.x

    1. 缓存参数 cache 改成 cacheData(避免与 fetch 原本的 cache 冲突)
    2. dataHandler 改成 transformData
    3. requestInterceptors 改为 requestInterceptor,不在支持数组,只支持函数
    4. responseInterceptors 改为 responseInterceptor,不在支持数组,只支持函数
    5. 其他 axios 特有的配置不在支持
    + diff --git a/reference/plugin/plugins/sass.html b/reference/plugin/plugins/sass.html index 43c45d40..3bfa0d8c 100644 --- a/reference/plugin/plugins/sass.html +++ b/reference/plugin/plugins/sass.html @@ -24,17 +24,17 @@ @fesjs/plugin-sass | Fes.js - + -

    @fesjs/plugin-sass

    介绍

    Fes.js 默认只支持 less,通过此插件扩展支持 sass

    webpack 构建 sass 插件

    如果使用 Vite 构建,直接装 sass 依赖即可,不需要安装此插件。

    启用方式

    package.json 中引入依赖:

    {
    +    

    @fesjs/plugin-sass

    介绍

    Fes.js 默认只支持 less,通过此插件扩展支持 sass

    webpack 构建 sass 插件

    如果使用 Vite 构建,直接装 sass 依赖即可,不需要安装此插件。

    启用方式

    package.json 中引入依赖:

    {
         "dependencies": {
             "@fesjs/fes": "^3.0.0",
             "@fesjs/plugin-sass": "^3.0.0"
         }
     }
     

    global css

    添加 src/global.scsssrc/global.sass 为全局 CSS 入口,添加一些通用样式内容。

    Vue 单文件组件

    Vue 单文件组件的 <style></style> 添加 lang='scss',例如:

    <style lang="scss"></style>
    -
    - +
    + diff --git a/reference/plugin/plugins/swc.html b/reference/plugin/plugins/swc.html index d4c9ea55..96ec000d 100644 --- a/reference/plugin/plugins/swc.html +++ b/reference/plugin/plugins/swc.html @@ -24,10 +24,10 @@ @fesjs/plugin-swc | Fes.js - + -
    + diff --git a/reference/plugin/plugins/vuex.html b/reference/plugin/plugins/vuex.html index 3f3fdc33..abb20927 100644 --- a/reference/plugin/plugins/vuex.html +++ b/reference/plugin/plugins/vuex.html @@ -24,10 +24,10 @@ @fesjs/plugin-vuex | Fes.js - + -

    @fesjs/plugin-vuex

    提示

    vue3+ 官方推荐使用pinia,不在推荐使用 vuex。

    介绍

    集成 vuex 插件

    增强 vuex,导出所有的mutationsactionsgetter的事件类型,编辑器提示

    约定模式,module 和 plugin 定义放在 stores 目录下,文件名包含 plugin 被解析为插件,无需额外配置,定义即可用。

    └── src
    +    

    @fesjs/plugin-vuex

    提示

    vue3+ 官方推荐使用pinia,不在推荐使用 vuex。

    介绍

    集成 vuex 插件

    增强 vuex,导出所有的mutationsactionsgetter的事件类型,编辑器提示

    约定模式,module 和 plugin 定义放在 stores 目录下,文件名包含 plugin 被解析为插件,无需额外配置,定义即可用。

    └── src
         ├── pages
         │    └── index.vue
         └── stores
    @@ -148,7 +148,7 @@
     </script>
     

    提示

    由于该插件注册在 onAppCreated 中,如果在 onAppCreated 及之前使用 useStore 时,获取不到 vuex 实例

    fesjs导出了 vuex 实例store,如在 app.js 文件中

    import { store, GETTER_TYPES } from '@fesjs/fes';
     console.log(store.getters[GETTER_TYPES.user.address]);
    -

    vuex 插件

    stores 文件夹下的文件名包含 plugin 被解析为插件,vuex 插件写法参考官方文档在新窗口打开

    API

    store

    • 类型 Object
    • vuex 实例

    MUTATION_TYPES

    • 类型 Object
    • mutation 的所有事件类型

    GETTER_TYPES

    • 类型 Object
    • getter 的所有方法名

    ACTION_TYPES

    • 类型 Object
    • action 的所有事件类型
    - +

    vuex 插件

    stores 文件夹下的文件名包含 plugin 被解析为插件,vuex 插件写法参考官方文档在新窗口打开

    API

    store

    • 类型 Object
    • vuex 实例

    MUTATION_TYPES

    • 类型 Object
    • mutation 的所有事件类型

    GETTER_TYPES

    • 类型 Object
    • getter 的所有方法名

    ACTION_TYPES

    • 类型 Object
    • action 的所有事件类型
    + diff --git a/reference/plugin/plugins/watermark.html b/reference/plugin/plugins/watermark.html index 6b1ddf69..98ba03c9 100644 --- a/reference/plugin/plugins/watermark.html +++ b/reference/plugin/plugins/watermark.html @@ -24,10 +24,10 @@ @fesjs/plugin-watermark | Fes.js - + -

    @fesjs/plugin-watermark

    介绍

    给页面添加水印效果

    启用方式

    package.json 中引入依赖:

    如果不需要时间戳,则可以设置timestampfalse

    + diff --git a/reference/plugin/plugins/windicss.html b/reference/plugin/plugins/windicss.html index 9064a732..6f4fc3ff 100644 --- a/reference/plugin/plugins/windicss.html +++ b/reference/plugin/plugins/windicss.html @@ -24,10 +24,10 @@ @fesjs/plugin-windicss | Fes.js - + -

    @fesjs/plugin-windicss

    即将废弃

    由于 windicss 不怎么维护了,本插件即将废弃,推荐使用 tailwindcss在新窗口打开

    介绍

    windicss 支持

    启用方式

    package.json 中引入依赖:

    + diff --git a/service-worker.js b/service-worker.js index d23456ac..dd03f521 100644 --- a/service-worker.js +++ b/service-worker.js @@ -1 +1 @@ -if(!self.define){let e,s={};const l=(l,i)=>(l=new URL(l+".js",i).href,s[l]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=l,e.onload=s,document.head.appendChild(e)}else e=l,importScripts(l),s()})).then((()=>{let e=s[l];if(!e)throw new Error(`Module ${l} didn’t register its module`);return e})));self.define=(i,r)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(s[n])return;let u={};const t=e=>l(e,n),a={module:{uri:n},exports:u,require:t};s[n]=Promise.all(i.map((e=>a[e]||t(e)))).then((e=>(r(...e),u)))}}define(["./workbox-fa9115e2"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"404.html",revision:"2d65b37c2c1eafc837653533d9082a22"},{url:"assets/404.html.500851b0.js",revision:null},{url:"assets/404.html.c3e557d0.js",revision:null},{url:"assets/access.html.7030a42b.js",revision:null},{url:"assets/access.html.a62ebf7c.js",revision:null},{url:"assets/api.html.8cb21890.js",revision:null},{url:"assets/api.html.a50ff32f.js",revision:null},{url:"assets/api.html.a5f3fb15.js",revision:null},{url:"assets/api.html.e97bc97c.js",revision:null},{url:"assets/app.1fff394b.js",revision:null},{url:"assets/back-to-top.8efcbe56.svg",revision:null},{url:"assets/builder.html.41d262aa.js",revision:null},{url:"assets/builder.html.55a7cc1f.js",revision:null},{url:"assets/cli.html.0b7f0983.js",revision:null},{url:"assets/cli.html.1bdad203.js",revision:null},{url:"assets/config.html.1c29538e.js",revision:null},{url:"assets/config.html.8e53c331.js",revision:null},{url:"assets/contributing.html.18b532cd.js",revision:null},{url:"assets/contributing.html.a6331978.js",revision:null},{url:"assets/css.html.60666f3a.js",revision:null},{url:"assets/css.html.afae2aea.js",revision:null},{url:"assets/directory-structure.html.405ab82b.js",revision:null},{url:"assets/directory-structure.html.f4065d91.js",revision:null},{url:"assets/editor.html.a0484bbe.js",revision:null},{url:"assets/editor.html.bb339413.js",revision:null},{url:"assets/enums.html.28629e2b.js",revision:null},{url:"assets/enums.html.e93ea61f.js",revision:null},{url:"assets/env.html.08b9b704.js",revision:null},{url:"assets/env.html.90215696.js",revision:null},{url:"assets/faq.html.34e02ab8.js",revision:null},{url:"assets/faq.html.ea3f8c6e.js",revision:null},{url:"assets/getting-started.html.4674ba1a.js",revision:null},{url:"assets/getting-started.html.d3b9cf9e.js",revision:null},{url:"assets/icon.html.0299fcd3.js",revision:null},{url:"assets/icon.html.6deb220e.js",revision:null},{url:"assets/image.html.d54c6051.js",revision:null},{url:"assets/image.html.f92ca3e1.js",revision:null},{url:"assets/index.0b6f9a66.js",revision:null},{url:"assets/index.html.0609b1b7.js",revision:null},{url:"assets/index.html.2916e212.js",revision:null},{url:"assets/index.html.2ac21041.js",revision:null},{url:"assets/index.html.52d8d12d.js",revision:null},{url:"assets/index.html.5aeb969b.js",revision:null},{url:"assets/index.html.af34d57a.js",revision:null},{url:"assets/index.html.bbacd821.js",revision:null},{url:"assets/index.html.c1c0d5f4.js",revision:null},{url:"assets/index.html.c3f5c27f.js",revision:null},{url:"assets/index.html.d0d11947.js",revision:null},{url:"assets/index.html.dcb7e541.js",revision:null},{url:"assets/index.html.f01282d4.js",revision:null},{url:"assets/index.html.f9721522.js",revision:null},{url:"assets/index.html.fcf804cf.js",revision:null},{url:"assets/jest.html.e33cf0c4.js",revision:null},{url:"assets/jest.html.fbca39c1.js",revision:null},{url:"assets/layout.html.198d11d8.js",revision:null},{url:"assets/layout.html.1fadc1b9.js",revision:null},{url:"assets/locale.html.8706b2b3.js",revision:null},{url:"assets/locale.html.b34d3672.js",revision:null},{url:"assets/login.html.69f1e79f.js",revision:null},{url:"assets/login.html.d631dbb6.js",revision:null},{url:"assets/mock.html.1d7540bc.js",revision:null},{url:"assets/mock.html.80f47335.js",revision:null},{url:"assets/model.html.72d355a9.js",revision:null},{url:"assets/model.html.9b462f64.js",revision:null},{url:"assets/pinia.html.36d2f07b.js",revision:null},{url:"assets/pinia.html.7f9b2e48.js",revision:null},{url:"assets/plugin.html.4294c881.js",revision:null},{url:"assets/plugin.html.65e2e2cd.js",revision:null},{url:"assets/public.html.b43d4cac.js",revision:null},{url:"assets/public.html.ce835cb0.js",revision:null},{url:"assets/qiankun.html.87eae9e6.js",revision:null},{url:"assets/qiankun.html.fef1ea5f.js",revision:null},{url:"assets/request.html.b3bfcb9e.js",revision:null},{url:"assets/request.html.e186dff0.js",revision:null},{url:"assets/route.html.65547e37.js",revision:null},{url:"assets/route.html.83ea4e67.js",revision:null},{url:"assets/runtime-config.html.4bc14dd5.js",revision:null},{url:"assets/runtime-config.html.692db2b2.js",revision:null},{url:"assets/sass.html.3cf05a81.js",revision:null},{url:"assets/sass.html.d347aba7.js",revision:null},{url:"assets/style.2de37a47.css",revision:null},{url:"assets/swc.html.95bfd8be.js",revision:null},{url:"assets/swc.html.ee318276.js",revision:null},{url:"assets/template.html.4157d97a.js",revision:null},{url:"assets/template.html.de04006d.js",revision:null},{url:"assets/upgrade3.html.0c4ef841.js",revision:null},{url:"assets/upgrade3.html.f8453010.js",revision:null},{url:"assets/vuex.html.0b3540af.js",revision:null},{url:"assets/vuex.html.41eb0107.js",revision:null},{url:"assets/watermark.html.6e85bd26.js",revision:null},{url:"assets/watermark.html.d6de8921.js",revision:null},{url:"assets/windicss.html.6138fa98.js",revision:null},{url:"assets/windicss.html.cc3815a6.js",revision:null},{url:"framework.png",revision:"d5bc1ce01d8f58c2d32e4396441e5dcc"},{url:"guide/builder.html",revision:"4c08153a11823dd4f82ecb60d29343e7"},{url:"guide/config.html",revision:"bd8c0579ee9072ae1ef100a695b41ecb"},{url:"guide/contributing.html",revision:"96865159fcfd892b7af8c6b1c641ff34"},{url:"guide/css.html",revision:"dd68278a41f17a41edf3a7caf4c9f42f"},{url:"guide/directory-structure.html",revision:"f001764016f4897254c1e2d94a79fad1"},{url:"guide/env.html",revision:"6c9837c0649478812d4919b9fe4b38b2"},{url:"guide/faq.html",revision:"765e16201abd5233feafe00f29202220"},{url:"guide/getting-started.html",revision:"a0696c9f7ef2cbc48b0794cce0ba2608"},{url:"guide/image.html",revision:"a96408a949a0a1ef00901f08442df654"},{url:"guide/index.html",revision:"73aa9b8f8440203e7a98f23d606d014e"},{url:"guide/mock.html",revision:"929980444a055b8cb721b5e783eea022"},{url:"guide/plugin.html",revision:"93f85f009dcebbc36eb1cf13ac5b8021"},{url:"guide/public.html",revision:"20bb76c7869225181273e9e8d85ddc9f"},{url:"guide/route.html",revision:"853fd6167b595815a31c067c7fb7d882"},{url:"guide/runtime-config.html",revision:"763212b2c55903241f62b52a559f96c8"},{url:"guide/template.html",revision:"4e4d8f10a1636b6628ce1a8114f2e0e5"},{url:"guide/upgrade3.html",revision:"db29efcb694e8452249d52cf614ff95b"},{url:"home.png",revision:"3a3b46b3bb2f0a9a52f439c80bade53a"},{url:"index.html",revision:"337f34ac3569ae45347f2215f9204b8b"},{url:"left-right.png",revision:"47027ee9621c21cb8f841957bdb7d805"},{url:"logo.png",revision:"41e6de8a94a52a5c1d7914b51111a12c"},{url:"mixin.png",revision:"c58d839aa919cee826f75bf5b348fd81"},{url:"pickTemplate.png",revision:"fb8b8e4e86c33eefe04abee6de5a03d9"},{url:"pickTemplateTip.png",revision:"e0c95971ab1e5692e997fe030c18f2a9"},{url:"plugins.png",revision:"f5e112b065621364d8cd663b245dc619"},{url:"reference/api.html",revision:"952e06a5ef3b38761c7bcd0195d4dfda"},{url:"reference/api/index.html",revision:"352f59e789849622925e4b1f28513d48"},{url:"reference/cli.html",revision:"4492cab1b53d30b68b1c0b37e92ae664"},{url:"reference/cli/index.html",revision:"c919c1d9441b847abfccbe6e4d3dc6a8"},{url:"reference/config/index.html",revision:"e44006316b08c27fddb435c73bfcc2d2"},{url:"reference/plugin/dev/api.html",revision:"dfd2aa65b1db7fb28ea63d5c13333d92"},{url:"reference/plugin/dev/index.html",revision:"12a321c06b2971664f8bcad87891fe7f"},{url:"reference/plugin/index.html",revision:"3574598db33ad5cc02177b102fc14ea7"},{url:"reference/plugin/plugins/access.html",revision:"a366c0ed9a3f8df1f5d6140216c01a90"},{url:"reference/plugin/plugins/editor.html",revision:"62319c60cbadeb31739caa5187f700a2"},{url:"reference/plugin/plugins/enums.html",revision:"bd6c4f624f41ee5f900e24babf9eedf6"},{url:"reference/plugin/plugins/icon.html",revision:"c4dbbc6b053dc40f4f14891b6914f177"},{url:"reference/plugin/plugins/jest.html",revision:"708afa7fb070af3baac3a5388725fedb"},{url:"reference/plugin/plugins/layout.html",revision:"80994324a7a4518d1da6f4b54291ef10"},{url:"reference/plugin/plugins/locale.html",revision:"e28d101860cf43fa3ee9d840901639a6"},{url:"reference/plugin/plugins/login.html",revision:"0e3b74ede6f9db3d77d5f132678043bc"},{url:"reference/plugin/plugins/model.html",revision:"7558aa8a4dc37104651a30493a8c88e6"},{url:"reference/plugin/plugins/pinia.html",revision:"f78b7618511a5f4148fd4ce7a868e3de"},{url:"reference/plugin/plugins/qiankun.html",revision:"cf0608da893a3b87d7fe3e3a8500bef5"},{url:"reference/plugin/plugins/request.html",revision:"ad95bf8454ae393be49b39c9e31652ba"},{url:"reference/plugin/plugins/sass.html",revision:"8a297999a1822c138b8f1a31d2af7e08"},{url:"reference/plugin/plugins/swc.html",revision:"3e77832d98f462e1f437685ac7d4d85d"},{url:"reference/plugin/plugins/vuex.html",revision:"fc31b3e7a47e8c394dc24cc7979b0496"},{url:"reference/plugin/plugins/watermark.html",revision:"04476e323504b4cdcb8e92e4548c03da"},{url:"reference/plugin/plugins/windicss.html",revision:"cafd4dea037f3ca2dc2a08fa314014d1"},{url:"side.png",revision:"a5bf932a270e116563f7e1da8968d493"},{url:"top.png",revision:"b282c6a45571a8a0aa710c044b7e4893"}],{})})); +if(!self.define){let e,s={};const l=(l,i)=>(l=new URL(l+".js",i).href,s[l]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=l,e.onload=s,document.head.appendChild(e)}else e=l,importScripts(l),s()})).then((()=>{let e=s[l];if(!e)throw new Error(`Module ${l} didn’t register its module`);return e})));self.define=(i,r)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(s[n])return;let u={};const t=e=>l(e,n),a={module:{uri:n},exports:u,require:t};s[n]=Promise.all(i.map((e=>a[e]||t(e)))).then((e=>(r(...e),u)))}}define(["./workbox-fa9115e2"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"404.html",revision:"3f6e8ba042ba92e3a233e0dc73cbd9da"},{url:"assets/404.html.c3e557d0.js",revision:null},{url:"assets/404.html.ef11e76b.js",revision:null},{url:"assets/access.html.2783c102.js",revision:null},{url:"assets/access.html.701eacb0.js",revision:null},{url:"assets/api.html.1aa2bbfa.js",revision:null},{url:"assets/api.html.20695f57.js",revision:null},{url:"assets/api.html.3fadc9c0.js",revision:null},{url:"assets/api.html.b17fa30f.js",revision:null},{url:"assets/app.005e0daf.js",revision:null},{url:"assets/back-to-top.8efcbe56.svg",revision:null},{url:"assets/builder.html.999bf635.js",revision:null},{url:"assets/builder.html.e970d1bc.js",revision:null},{url:"assets/cli.html.768b01bb.js",revision:null},{url:"assets/cli.html.b37682a1.js",revision:null},{url:"assets/config.html.3c4760e9.js",revision:null},{url:"assets/config.html.5d92a440.js",revision:null},{url:"assets/contributing.html.24d74808.js",revision:null},{url:"assets/contributing.html.8cad4b5e.js",revision:null},{url:"assets/css.html.3990f0c1.js",revision:null},{url:"assets/css.html.a45df14e.js",revision:null},{url:"assets/directory-structure.html.15096386.js",revision:null},{url:"assets/directory-structure.html.4960a3b9.js",revision:null},{url:"assets/editor.html.2fb88cf1.js",revision:null},{url:"assets/editor.html.604dae94.js",revision:null},{url:"assets/enums.html.7c55aefa.js",revision:null},{url:"assets/enums.html.e894dfd6.js",revision:null},{url:"assets/env.html.35aa0f1a.js",revision:null},{url:"assets/env.html.805df8a5.js",revision:null},{url:"assets/faq.html.1e599082.js",revision:null},{url:"assets/faq.html.f70ba546.js",revision:null},{url:"assets/getting-started.html.3b600666.js",revision:null},{url:"assets/getting-started.html.8eca842e.js",revision:null},{url:"assets/icon.html.c524fb7f.js",revision:null},{url:"assets/icon.html.d2dc60da.js",revision:null},{url:"assets/image.html.20b52f7d.js",revision:null},{url:"assets/image.html.58aa17c7.js",revision:null},{url:"assets/index.0b6f9a66.js",revision:null},{url:"assets/index.html.174811be.js",revision:null},{url:"assets/index.html.1f2b7059.js",revision:null},{url:"assets/index.html.35cddc8c.js",revision:null},{url:"assets/index.html.5f811d7d.js",revision:null},{url:"assets/index.html.7417ac5c.js",revision:null},{url:"assets/index.html.74321f46.js",revision:null},{url:"assets/index.html.7e2b22df.js",revision:null},{url:"assets/index.html.82e50780.js",revision:null},{url:"assets/index.html.85db73e3.js",revision:null},{url:"assets/index.html.8a34550e.js",revision:null},{url:"assets/index.html.b3f98887.js",revision:null},{url:"assets/index.html.bc74ee4c.js",revision:null},{url:"assets/index.html.c22810d3.js",revision:null},{url:"assets/index.html.d460e0cc.js",revision:null},{url:"assets/jest.html.9bcb2ce1.js",revision:null},{url:"assets/jest.html.de551700.js",revision:null},{url:"assets/layout.html.b7ee50eb.js",revision:null},{url:"assets/layout.html.bccb8e74.js",revision:null},{url:"assets/locale.html.4d3b3790.js",revision:null},{url:"assets/locale.html.c1dcd857.js",revision:null},{url:"assets/login.html.0ea4b7ad.js",revision:null},{url:"assets/login.html.2f0338ab.js",revision:null},{url:"assets/mock.html.6d653289.js",revision:null},{url:"assets/mock.html.9cef5d45.js",revision:null},{url:"assets/model.html.3cd49de2.js",revision:null},{url:"assets/model.html.fab33d63.js",revision:null},{url:"assets/pinia.html.1e6ca3bb.js",revision:null},{url:"assets/pinia.html.1eb91490.js",revision:null},{url:"assets/plugin.html.0095f814.js",revision:null},{url:"assets/plugin.html.ccfb9074.js",revision:null},{url:"assets/public.html.848eef99.js",revision:null},{url:"assets/public.html.9d99cf84.js",revision:null},{url:"assets/qiankun.html.b3592391.js",revision:null},{url:"assets/qiankun.html.deb33c50.js",revision:null},{url:"assets/request.html.f4de04c7.js",revision:null},{url:"assets/request.html.fe4ceade.js",revision:null},{url:"assets/route.html.3d217616.js",revision:null},{url:"assets/route.html.aa1f3f0b.js",revision:null},{url:"assets/runtime-config.html.c81fa63e.js",revision:null},{url:"assets/runtime-config.html.d036f810.js",revision:null},{url:"assets/sass.html.177ef37c.js",revision:null},{url:"assets/sass.html.9338147b.js",revision:null},{url:"assets/style.2de37a47.css",revision:null},{url:"assets/swc.html.0bd38fed.js",revision:null},{url:"assets/swc.html.a56bb9f7.js",revision:null},{url:"assets/template.html.91640404.js",revision:null},{url:"assets/template.html.decb42ff.js",revision:null},{url:"assets/upgrade3.html.0ae06c8e.js",revision:null},{url:"assets/upgrade3.html.3629ebda.js",revision:null},{url:"assets/vuex.html.36df398e.js",revision:null},{url:"assets/vuex.html.6d094802.js",revision:null},{url:"assets/watermark.html.1d51b560.js",revision:null},{url:"assets/watermark.html.855d80c4.js",revision:null},{url:"assets/windicss.html.17e40609.js",revision:null},{url:"assets/windicss.html.cc303ad2.js",revision:null},{url:"framework.png",revision:"d5bc1ce01d8f58c2d32e4396441e5dcc"},{url:"guide/builder.html",revision:"ea57b3b9ca9f68b3ce8c34395f6db7d9"},{url:"guide/config.html",revision:"edfc4f70df0afde399fd6100fa8a5f5e"},{url:"guide/contributing.html",revision:"65504695930b59187f29e7de9d09309b"},{url:"guide/css.html",revision:"8b7dcf7cded3f74cdea5440c5e0668ce"},{url:"guide/directory-structure.html",revision:"64b958e766ae9a7fc96a81b37356c308"},{url:"guide/env.html",revision:"58f6db09a714e26a5266c1945a9cbdf6"},{url:"guide/faq.html",revision:"b306bac31683e477cbef0b2785bac825"},{url:"guide/getting-started.html",revision:"13da4252b822019be33398611c163f70"},{url:"guide/image.html",revision:"c39df0dc4650c1bb5e779c73c4af37c8"},{url:"guide/index.html",revision:"86e23e1534511aeb32eece783198a02d"},{url:"guide/mock.html",revision:"d1c9e1785792cf719eb3d7a240336128"},{url:"guide/plugin.html",revision:"05c0ca58723ca45b2ff6d9500111f08b"},{url:"guide/public.html",revision:"ebb69ddbe1d719ef43f2062f880713f9"},{url:"guide/route.html",revision:"c42fe6d06672e6b84769f66034c1a02d"},{url:"guide/runtime-config.html",revision:"e0c288199439eb3f25075409eba42c2d"},{url:"guide/template.html",revision:"a1e956df1f5a01a97eaab43893d8903b"},{url:"guide/upgrade3.html",revision:"77116138bc240c14ab1b7f7acfb9620f"},{url:"home.png",revision:"3a3b46b3bb2f0a9a52f439c80bade53a"},{url:"index.html",revision:"34da6063a0758af1506e5978de8f2ca1"},{url:"left-right.png",revision:"47027ee9621c21cb8f841957bdb7d805"},{url:"logo.png",revision:"41e6de8a94a52a5c1d7914b51111a12c"},{url:"mixin.png",revision:"c58d839aa919cee826f75bf5b348fd81"},{url:"pickTemplate.png",revision:"fb8b8e4e86c33eefe04abee6de5a03d9"},{url:"pickTemplateTip.png",revision:"e0c95971ab1e5692e997fe030c18f2a9"},{url:"plugins.png",revision:"f5e112b065621364d8cd663b245dc619"},{url:"reference/api.html",revision:"b9193206d122b74d52ca6edb050894a8"},{url:"reference/api/index.html",revision:"3b210dc4c4e781ff472a9c1ad51af10a"},{url:"reference/cli.html",revision:"77b1030421786be797a5293181ff4cf3"},{url:"reference/cli/index.html",revision:"9b950ffe37ac73a5050e4db0a9f73bfc"},{url:"reference/config/index.html",revision:"2953ae143b7c8371a66793c6fbf00c7e"},{url:"reference/plugin/dev/api.html",revision:"e00982b6251db18a6f4d71ca4c1a7376"},{url:"reference/plugin/dev/index.html",revision:"f848e6ab46193eb23f0a5219e5b841d2"},{url:"reference/plugin/index.html",revision:"f50c453ff52193ed387db1b6f7ead417"},{url:"reference/plugin/plugins/access.html",revision:"3003f9c5abbfcda8a0978d30148fab7c"},{url:"reference/plugin/plugins/editor.html",revision:"bf7ab04a66e75dc8052652ddf4d9f7c0"},{url:"reference/plugin/plugins/enums.html",revision:"194be35cd2d4e8af2bc41dafc6b987b0"},{url:"reference/plugin/plugins/icon.html",revision:"cbaaba7ccd64686928c4b3f73839dcb6"},{url:"reference/plugin/plugins/jest.html",revision:"af542a5179aa7cb7bdfdf01e1e287187"},{url:"reference/plugin/plugins/layout.html",revision:"9799d8915a2e0b35fc4f22d3f88cf6f3"},{url:"reference/plugin/plugins/locale.html",revision:"459f3680564ae23a0798007436141efb"},{url:"reference/plugin/plugins/login.html",revision:"c7dce0fd71f4efa2056f3fff42dc738f"},{url:"reference/plugin/plugins/model.html",revision:"7dcddc9370e38487daa781d0b0cc44d2"},{url:"reference/plugin/plugins/pinia.html",revision:"fb70436894cdc513ebcc16d7bd7f8d9a"},{url:"reference/plugin/plugins/qiankun.html",revision:"1fffbdc301da9a49eada5cb6fba07dca"},{url:"reference/plugin/plugins/request.html",revision:"f8547a1c4854dd80c5c9edb151db146c"},{url:"reference/plugin/plugins/sass.html",revision:"08ae289264b129edd3ed55010a498f84"},{url:"reference/plugin/plugins/swc.html",revision:"e18988c9c198735e68d2fe9e8f6b368c"},{url:"reference/plugin/plugins/vuex.html",revision:"0daf1bf63e3148539121c4b5a5154acc"},{url:"reference/plugin/plugins/watermark.html",revision:"e137dd5672265df2032c712de8eb7f55"},{url:"reference/plugin/plugins/windicss.html",revision:"9f4ec1bdf309b50eb5a9b6ec51b23f61"},{url:"side.png",revision:"a5bf932a270e116563f7e1da8968d493"},{url:"top.png",revision:"b282c6a45571a8a0aa710c044b7e4893"}],{})}));