From d43300c3adc04c76863a52506b96921f02d06b0d Mon Sep 17 00:00:00 2001 From: dobble11 <1103650146@qq.com> Date: Tue, 26 Mar 2024 10:11:16 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20epeejs/d?= =?UTF-8?q?aydayup@311782deee0564df86d08b2eb65a9b4f29cb283f=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 18 +- assets/{1.360b622b.png => 1.OTVfcfE_.png} | Bin assets/{12.ed740cde.png => 12.RLMX_f8l.png} | Bin assets/{2.0c42fe8e.jpg => 2.BxU4XP9_.jpg} | Bin assets/{3.2f7a5266.png => 3.Ck8TSuHh.png} | Bin assets/{4.3eb71080.jpg => 4.B_IXwkaL.jpg} | Bin assets/{5.08c71843.jpg => 5.BZOY32BX.jpg} | Bin assets/{6.99b74071.jpg => 6.C6Vbk8Kw.jpg} | Bin assets/{7.59621565.svg => 7.V9Yi50CN.svg} | 0 assets/{8.9e0d6471.gif => 8.Cag8uqth.gif} | Bin assets/{9.745f77d0.webp => 9.DyWMZ0Kk.webp} | Bin assets/app.16fe5ceb.js | 1 - assets/app.CwaW4dH7.js | 7 + assets/chunks/VPAlgoliaSearchBox.4628d215.js | 14 - assets/chunks/VPAlgoliaSearchBox.DA--5JLU.js | 17 + assets/chunks/framework.3876c926.js | 2 - assets/chunks/framework.D5F7AbHZ.js | 17 + assets/chunks/theme.62945df0.js | 7 - assets/chunks/theme.C-PiQMS2.js | 7 + assets/index.md.DYvXomfm.js | 1 + assets/index.md.DYvXomfm.lean.js | 1 + assets/index.md.ecf03cad.js | 1 - assets/index.md.ecf03cad.lean.js | 1 - ... inter-italic-cyrillic-ext.5XJwZIOp.woff2} | Bin ...2 => inter-italic-cyrillic.D6csxwjC.woff2} | Bin ... => inter-italic-greek-ext.CHOfFY1k.woff2} | Bin ...off2 => inter-italic-greek.9J96vYpw.woff2} | Bin ... => inter-italic-latin-ext.BGcWXLrn.woff2} | Bin ...off2 => inter-italic-latin.DbsTr1gm.woff2} | Bin ...=> inter-italic-vietnamese.DHNAd7Wr.woff2} | Bin ...> inter-roman-cyrillic-ext.DxP3Awbn.woff2} | Bin ...f2 => inter-roman-cyrillic.CMhn1ESj.woff2} | Bin ...2 => inter-roman-greek-ext.D0mI3NpI.woff2} | Bin ...woff2 => inter-roman-greek.JvnBZ4YD.woff2} | Bin ...2 => inter-roman-latin-ext.ZlYT4o7i.woff2} | Bin ...woff2 => inter-roman-latin.Bu8hRsVA.woff2} | Bin ... => inter-roman-vietnamese.ClpjcLMQ.woff2} | Bin assets/style.35c1bf4d.css | 1 - assets/style.CYsvUZlg.css | 1 + assets/zjw_(0_fn)().md.90153474.js | 17 - assets/zjw_(0_fn)().md.90153474.lean.js | 1 - assets/zjw_(0_fn)().md.DR-yeSMY.js | 17 + assets/zjw_(0_fn)().md.DR-yeSMY.lean.js | 1 + assets/zjw_api-cache.md.47c00025.js | 55 -- assets/zjw_api-cache.md.47c00025.lean.js | 1 - assets/zjw_api-cache.md.D3wFev7N.js | 55 ++ assets/zjw_api-cache.md.D3wFev7N.lean.js | 1 + assets/zjw_auto-test.md.HsizIQ-a.js | 114 ++++ assets/zjw_auto-test.md.HsizIQ-a.lean.js | 1 + assets/zjw_auto-test.md.eaf268b9.js | 114 ---- assets/zjw_auto-test.md.eaf268b9.lean.js | 1 - assets/zjw_babel-plugin-import.md.CR8YxeOP.js | 82 +++ ...jw_babel-plugin-import.md.CR8YxeOP.lean.js | 1 + assets/zjw_babel-plugin-import.md.b3fe9f86.js | 82 --- ...jw_babel-plugin-import.md.b3fe9f86.lean.js | 1 - ..._babel-plugin-taro-page-hoc.md.DwkJp9WN.js | 106 ++++ ...l-plugin-taro-page-hoc.md.DwkJp9WN.lean.js | 1 + ..._babel-plugin-taro-page-hoc.md.c5b8e797.js | 106 ---- ...l-plugin-taro-page-hoc.md.c5b8e797.lean.js | 1 - assets/zjw_bfc.md.Wc3HGD05.js | 1 + assets/zjw_bfc.md.Wc3HGD05.lean.js | 1 + assets/zjw_bfc.md.bf39e00f.js | 1 - assets/zjw_bfc.md.bf39e00f.lean.js | 1 - assets/zjw_binary-search.md.4a6149b9.js | 64 -- assets/zjw_binary-search.md.4a6149b9.lean.js | 1 - assets/zjw_binary-search.md.qAilxVuS.js | 64 ++ assets/zjw_binary-search.md.qAilxVuS.lean.js | 1 + assets/zjw_binary-tree.md.DZw5h4Ni.js | 79 +++ assets/zjw_binary-tree.md.DZw5h4Ni.lean.js | 1 + assets/zjw_binary-tree.md.b08eff68.js | 79 --- assets/zjw_binary-tree.md.b08eff68.lean.js | 1 - assets/zjw_data-structure.md.YAkYuSGi.js | 171 ++++++ assets/zjw_data-structure.md.YAkYuSGi.lean.js | 1 + assets/zjw_data-structure.md.ff8b49fb.js | 171 ------ assets/zjw_data-structure.md.ff8b49fb.lean.js | 1 - assets/zjw_koa-middleware.md.5b834bb2.js | 62 -- assets/zjw_koa-middleware.md.5b834bb2.lean.js | 1 - assets/zjw_koa-middleware.md.DA53IkQj.js | 62 ++ assets/zjw_koa-middleware.md.DA53IkQj.lean.js | 1 + assets/zjw_linked-list.md.826dff0c.js | 108 ---- assets/zjw_linked-list.md.826dff0c.lean.js | 1 - assets/zjw_linked-list.md.DKumdPKd.js | 108 ++++ assets/zjw_linked-list.md.DKumdPKd.lean.js | 1 + assets/zjw_react-router.md.DTfIZYpJ.js | 11 + assets/zjw_react-router.md.DTfIZYpJ.lean.js | 1 + assets/zjw_react-router.md.b0bc65d4.js | 11 - assets/zjw_react-router.md.b0bc65d4.lean.js | 1 - assets/zjw_sandbox.md.0865631e.js | 19 - assets/zjw_sandbox.md.0865631e.lean.js | 1 - assets/zjw_sandbox.md.DgdhC6rv.js | 19 + assets/zjw_sandbox.md.DgdhC6rv.lean.js | 1 + assets/zjw_sort.md.Bm-jLNgr.js | 167 ++++++ assets/zjw_sort.md.Bm-jLNgr.lean.js | 1 + assets/zjw_sort.md.c1426320.js | 167 ------ assets/zjw_sort.md.c1426320.lean.js | 1 - assets/zjw_transform-tree.md.4415d31c.js | 60 -- assets/zjw_transform-tree.md.4415d31c.lean.js | 1 - assets/zjw_transform-tree.md.BWHY7563.js | 60 ++ assets/zjw_transform-tree.md.BWHY7563.lean.js | 1 + ...w_webpack-pack-optimization.md.CKTxYpQR.js | 94 +++ ...pack-pack-optimization.md.CKTxYpQR.lean.js | 1 + ...w_webpack-pack-optimization.md.bd8e6393.js | 94 --- ...pack-pack-optimization.md.bd8e6393.lean.js | 1 - assets/zjw_webpack.md.M_XiAUUo.js | 9 + assets/zjw_webpack.md.M_XiAUUo.lean.js | 1 + assets/zjw_webpack.md.f23ad039.js | 9 - assets/zjw_webpack.md.f23ad039.lean.js | 1 - ...31\344\273\243\347\240\201.md.2bdbb8db.js" | 292 ---------- ...4\273\243\347\240\201.md.2bdbb8db.lean.js" | 1 - ...31\344\273\243\347\240\201.md.DK0l8WTV.js" | 292 ++++++++++ ...4\273\243\347\240\201.md.DK0l8WTV.lean.js" | 1 + hashmap.json | 2 +- index.html | 24 +- zjw/(0,fn)().html | 54 +- zjw/api-cache.html | 114 ++-- zjw/auto-test.html | 234 ++++---- zjw/babel-plugin-import.html | 166 +++--- zjw/babel-plugin-taro-page-hoc.html | 210 +++---- zjw/bfc.html | 24 +- zjw/binary-search.html | 128 ++-- zjw/binary-tree.html | 154 ++--- zjw/data-structure.html | 350 +++++------ zjw/koa-middleware.html | 138 ++--- zjw/linked-list.html | 210 +++---- zjw/react-router.html | 42 +- zjw/sandbox.html | 54 +- zjw/sort.html | 356 ++++++------ zjw/transform-tree.html | 132 ++--- zjw/webpack-pack-optimization.html | 200 +++---- zjw/webpack.html | 40 +- ...\345\206\231\344\273\243\347\240\201.html" | 548 +++++++++--------- 131 files changed, 3199 insertions(+), 3135 deletions(-) rename assets/{1.360b622b.png => 1.OTVfcfE_.png} (100%) rename assets/{12.ed740cde.png => 12.RLMX_f8l.png} (100%) rename assets/{2.0c42fe8e.jpg => 2.BxU4XP9_.jpg} (100%) rename assets/{3.2f7a5266.png => 3.Ck8TSuHh.png} (100%) rename assets/{4.3eb71080.jpg => 4.B_IXwkaL.jpg} (100%) rename assets/{5.08c71843.jpg => 5.BZOY32BX.jpg} (100%) rename assets/{6.99b74071.jpg => 6.C6Vbk8Kw.jpg} (100%) rename assets/{7.59621565.svg => 7.V9Yi50CN.svg} (100%) rename assets/{8.9e0d6471.gif => 8.Cag8uqth.gif} (100%) rename assets/{9.745f77d0.webp => 9.DyWMZ0Kk.webp} (100%) delete mode 100644 assets/app.16fe5ceb.js create mode 100644 assets/app.CwaW4dH7.js delete mode 100644 assets/chunks/VPAlgoliaSearchBox.4628d215.js create mode 100644 assets/chunks/VPAlgoliaSearchBox.DA--5JLU.js delete mode 100644 assets/chunks/framework.3876c926.js create mode 100644 assets/chunks/framework.D5F7AbHZ.js delete mode 100644 assets/chunks/theme.62945df0.js create mode 100644 assets/chunks/theme.C-PiQMS2.js create mode 100644 assets/index.md.DYvXomfm.js create mode 100644 assets/index.md.DYvXomfm.lean.js delete mode 100644 assets/index.md.ecf03cad.js delete mode 100644 assets/index.md.ecf03cad.lean.js rename assets/{inter-italic-cyrillic-ext.33bd5a8e.woff2 => inter-italic-cyrillic-ext.5XJwZIOp.woff2} (100%) rename assets/{inter-italic-cyrillic.ea42a392.woff2 => inter-italic-cyrillic.D6csxwjC.woff2} (100%) rename assets/{inter-italic-greek-ext.4fbe9427.woff2 => inter-italic-greek-ext.CHOfFY1k.woff2} (100%) rename assets/{inter-italic-greek.8f4463c4.woff2 => inter-italic-greek.9J96vYpw.woff2} (100%) rename assets/{inter-italic-latin-ext.bd8920cc.woff2 => inter-italic-latin-ext.BGcWXLrn.woff2} (100%) rename assets/{inter-italic-latin.bd3b6f56.woff2 => inter-italic-latin.DbsTr1gm.woff2} (100%) rename assets/{inter-italic-vietnamese.6ce511fb.woff2 => inter-italic-vietnamese.DHNAd7Wr.woff2} (100%) rename assets/{inter-roman-cyrillic-ext.e75737ce.woff2 => inter-roman-cyrillic-ext.DxP3Awbn.woff2} (100%) rename assets/{inter-roman-cyrillic.5f2c6c8c.woff2 => inter-roman-cyrillic.CMhn1ESj.woff2} (100%) rename assets/{inter-roman-greek-ext.ab0619bc.woff2 => inter-roman-greek-ext.D0mI3NpI.woff2} (100%) rename assets/{inter-roman-greek.d5a6d92a.woff2 => inter-roman-greek.JvnBZ4YD.woff2} (100%) rename assets/{inter-roman-latin-ext.0030eebd.woff2 => inter-roman-latin-ext.ZlYT4o7i.woff2} (100%) rename assets/{inter-roman-latin.2ed14f66.woff2 => inter-roman-latin.Bu8hRsVA.woff2} (100%) rename assets/{inter-roman-vietnamese.14ce25a6.woff2 => inter-roman-vietnamese.ClpjcLMQ.woff2} (100%) delete mode 100644 assets/style.35c1bf4d.css create mode 100644 assets/style.CYsvUZlg.css delete mode 100644 assets/zjw_(0_fn)().md.90153474.js delete mode 100644 assets/zjw_(0_fn)().md.90153474.lean.js create mode 100644 assets/zjw_(0_fn)().md.DR-yeSMY.js create mode 100644 assets/zjw_(0_fn)().md.DR-yeSMY.lean.js delete mode 100644 assets/zjw_api-cache.md.47c00025.js delete mode 100644 assets/zjw_api-cache.md.47c00025.lean.js create mode 100644 assets/zjw_api-cache.md.D3wFev7N.js create mode 100644 assets/zjw_api-cache.md.D3wFev7N.lean.js create mode 100644 assets/zjw_auto-test.md.HsizIQ-a.js create mode 100644 assets/zjw_auto-test.md.HsizIQ-a.lean.js delete mode 100644 assets/zjw_auto-test.md.eaf268b9.js delete mode 100644 assets/zjw_auto-test.md.eaf268b9.lean.js create mode 100644 assets/zjw_babel-plugin-import.md.CR8YxeOP.js create mode 100644 assets/zjw_babel-plugin-import.md.CR8YxeOP.lean.js delete mode 100644 assets/zjw_babel-plugin-import.md.b3fe9f86.js delete mode 100644 assets/zjw_babel-plugin-import.md.b3fe9f86.lean.js create mode 100644 assets/zjw_babel-plugin-taro-page-hoc.md.DwkJp9WN.js create mode 100644 assets/zjw_babel-plugin-taro-page-hoc.md.DwkJp9WN.lean.js delete mode 100644 assets/zjw_babel-plugin-taro-page-hoc.md.c5b8e797.js delete mode 100644 assets/zjw_babel-plugin-taro-page-hoc.md.c5b8e797.lean.js create mode 100644 assets/zjw_bfc.md.Wc3HGD05.js create mode 100644 assets/zjw_bfc.md.Wc3HGD05.lean.js delete mode 100644 assets/zjw_bfc.md.bf39e00f.js delete mode 100644 assets/zjw_bfc.md.bf39e00f.lean.js delete mode 100644 assets/zjw_binary-search.md.4a6149b9.js delete mode 100644 assets/zjw_binary-search.md.4a6149b9.lean.js create mode 100644 assets/zjw_binary-search.md.qAilxVuS.js create mode 100644 assets/zjw_binary-search.md.qAilxVuS.lean.js create mode 100644 assets/zjw_binary-tree.md.DZw5h4Ni.js create mode 100644 assets/zjw_binary-tree.md.DZw5h4Ni.lean.js delete mode 100644 assets/zjw_binary-tree.md.b08eff68.js delete mode 100644 assets/zjw_binary-tree.md.b08eff68.lean.js create mode 100644 assets/zjw_data-structure.md.YAkYuSGi.js create mode 100644 assets/zjw_data-structure.md.YAkYuSGi.lean.js delete mode 100644 assets/zjw_data-structure.md.ff8b49fb.js delete mode 100644 assets/zjw_data-structure.md.ff8b49fb.lean.js delete mode 100644 assets/zjw_koa-middleware.md.5b834bb2.js delete mode 100644 assets/zjw_koa-middleware.md.5b834bb2.lean.js create mode 100644 assets/zjw_koa-middleware.md.DA53IkQj.js create mode 100644 assets/zjw_koa-middleware.md.DA53IkQj.lean.js delete mode 100644 assets/zjw_linked-list.md.826dff0c.js delete mode 100644 assets/zjw_linked-list.md.826dff0c.lean.js create mode 100644 assets/zjw_linked-list.md.DKumdPKd.js create mode 100644 assets/zjw_linked-list.md.DKumdPKd.lean.js create mode 100644 assets/zjw_react-router.md.DTfIZYpJ.js create mode 100644 assets/zjw_react-router.md.DTfIZYpJ.lean.js delete mode 100644 assets/zjw_react-router.md.b0bc65d4.js delete mode 100644 assets/zjw_react-router.md.b0bc65d4.lean.js delete mode 100644 assets/zjw_sandbox.md.0865631e.js delete mode 100644 assets/zjw_sandbox.md.0865631e.lean.js create mode 100644 assets/zjw_sandbox.md.DgdhC6rv.js create mode 100644 assets/zjw_sandbox.md.DgdhC6rv.lean.js create mode 100644 assets/zjw_sort.md.Bm-jLNgr.js create mode 100644 assets/zjw_sort.md.Bm-jLNgr.lean.js delete mode 100644 assets/zjw_sort.md.c1426320.js delete mode 100644 assets/zjw_sort.md.c1426320.lean.js delete mode 100644 assets/zjw_transform-tree.md.4415d31c.js delete mode 100644 assets/zjw_transform-tree.md.4415d31c.lean.js create mode 100644 assets/zjw_transform-tree.md.BWHY7563.js create mode 100644 assets/zjw_transform-tree.md.BWHY7563.lean.js create mode 100644 assets/zjw_webpack-pack-optimization.md.CKTxYpQR.js create mode 100644 assets/zjw_webpack-pack-optimization.md.CKTxYpQR.lean.js delete mode 100644 assets/zjw_webpack-pack-optimization.md.bd8e6393.js delete mode 100644 assets/zjw_webpack-pack-optimization.md.bd8e6393.lean.js create mode 100644 assets/zjw_webpack.md.M_XiAUUo.js create mode 100644 assets/zjw_webpack.md.M_XiAUUo.lean.js delete mode 100644 assets/zjw_webpack.md.f23ad039.js delete mode 100644 assets/zjw_webpack.md.f23ad039.lean.js delete mode 100644 "assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.2bdbb8db.js" delete mode 100644 "assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.2bdbb8db.lean.js" create mode 100644 "assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.DK0l8WTV.js" create mode 100644 "assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.DK0l8WTV.lean.js" diff --git a/404.html b/404.html index e7034be..e4a4c71 100644 --- a/404.html +++ b/404.html @@ -5,16 +5,18 @@ 404 | daydayup - - - - - + + + + + + + + -
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ \ No newline at end of file diff --git a/assets/1.360b622b.png b/assets/1.OTVfcfE_.png similarity index 100% rename from assets/1.360b622b.png rename to assets/1.OTVfcfE_.png diff --git a/assets/12.ed740cde.png b/assets/12.RLMX_f8l.png similarity index 100% rename from assets/12.ed740cde.png rename to assets/12.RLMX_f8l.png diff --git a/assets/2.0c42fe8e.jpg b/assets/2.BxU4XP9_.jpg similarity index 100% rename from assets/2.0c42fe8e.jpg rename to assets/2.BxU4XP9_.jpg diff --git a/assets/3.2f7a5266.png b/assets/3.Ck8TSuHh.png similarity index 100% rename from assets/3.2f7a5266.png rename to assets/3.Ck8TSuHh.png diff --git a/assets/4.3eb71080.jpg b/assets/4.B_IXwkaL.jpg similarity index 100% rename from assets/4.3eb71080.jpg rename to assets/4.B_IXwkaL.jpg diff --git a/assets/5.08c71843.jpg b/assets/5.BZOY32BX.jpg similarity index 100% rename from assets/5.08c71843.jpg rename to assets/5.BZOY32BX.jpg diff --git a/assets/6.99b74071.jpg b/assets/6.C6Vbk8Kw.jpg similarity index 100% rename from assets/6.99b74071.jpg rename to assets/6.C6Vbk8Kw.jpg diff --git a/assets/7.59621565.svg b/assets/7.V9Yi50CN.svg similarity index 100% rename from assets/7.59621565.svg rename to assets/7.V9Yi50CN.svg diff --git a/assets/8.9e0d6471.gif b/assets/8.Cag8uqth.gif similarity index 100% rename from assets/8.9e0d6471.gif rename to assets/8.Cag8uqth.gif diff --git a/assets/9.745f77d0.webp b/assets/9.DyWMZ0Kk.webp similarity index 100% rename from assets/9.745f77d0.webp rename to assets/9.DyWMZ0Kk.webp diff --git a/assets/app.16fe5ceb.js b/assets/app.16fe5ceb.js deleted file mode 100644 index c6bd1b3..0000000 --- a/assets/app.16fe5ceb.js +++ /dev/null @@ -1 +0,0 @@ -import{d as p,M as s,a4 as i,u,p as c,k as l,a5 as d,a6 as f,a7 as m,a8 as h,a9 as A,aa as g,ab as P,ac as v,ad as y,ae as C,af as w,ag as _,ah as b,J as E}from"./chunks/framework.3876c926.js";import{t as R}from"./chunks/theme.62945df0.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(R),D=p({name:"VitePressApp",setup(){const{site:e}=u();return c(()=>{l(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),d(),f(),m(),n.setup&&n.setup(),()=>h(n.Layout)}});async function O(){const e=T(),a=S();a.provide(A,e);const t=g(e.route);return a.provide(P,t),a.component("Content",v),a.component("ClientOnly",y),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:C}),{app:a,router:e,data:t}}function S(){return w(D)}function T(){let e=s,a;return _(t=>{let o=b(t);return e&&(a=o),(e||a===o)&&(o=o.replace(/\.js$/,".lean.js")),s&&(e=!1),E(()=>import(o),[])},n.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{O as createApp}; diff --git a/assets/app.CwaW4dH7.js b/assets/app.CwaW4dH7.js new file mode 100644 index 0000000..0ece92b --- /dev/null +++ b/assets/app.CwaW4dH7.js @@ -0,0 +1,7 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +import{j as o,a5 as p,a6 as u,a7 as l,a8 as c,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,Y as P,d as _,u as v,l as y,z as C,af as E,ag as b,ah as w,ai as R}from"./chunks/framework.D5F7AbHZ.js";import{t as S}from"./chunks/theme.C-PiQMS2.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&E(),b(),w(),s.setup&&s.setup(),()=>R(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=L(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function L(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),__vite__mapDeps([]))),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/assets/chunks/VPAlgoliaSearchBox.4628d215.js b/assets/chunks/VPAlgoliaSearchBox.4628d215.js deleted file mode 100644 index d1c8513..0000000 --- a/assets/chunks/VPAlgoliaSearchBox.4628d215.js +++ /dev/null @@ -1,14 +0,0 @@ -import{d as jr,ai as Pr,x as Ir,p as kr,w as Dr,o as Cr,c as Ar}from"./framework.3876c926.js";import{u as xr}from"./theme.62945df0.js";/*! @docsearch/js 3.3.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function Ct(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 P(e){for(var t=1;t=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ve(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 a,i,u=[],l=!0,s=!1;try{for(o=o.call(n);!(l=(a=o.next()).done)&&(u.push(a.value),!r||u.length!==r);l=!0);}catch(c){s=!0,i=c}finally{try{l||o.return==null||o.return()}finally{if(s)throw i}}return u}}(e,t)||qn(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 We(e){return function(t){if(Array.isArray(t))return ft(t)}(e)||function(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||qn(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 qn(e,t){if(e){if(typeof e=="string")return ft(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)?ft(e,t):void 0}}function ft(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n3)for(n=[n],a=3;a0?Se(p.type,p.props,p.key,null,p.__v):p)!=null){if(p.__=n,p.__b=n.__b+1,(m=v[c])===null||m&&p.key==m.key&&p.type===m.type)v[c]=void 0;else for(d=0;d3)for(n=[n],a=3;a=n.__.length&&n.__.push({}),n.__[e]}function Qn(e){return ue=1,Zn(Gn,e)}function Zn(e,t,n){var r=ke(le++,2);return r.t=e,r.__c||(r.__=[n?n(t):Gn(void 0,t),function(o){var a=r.t(r.__[0],o);r.__[0]!==a&&(r.__=[a,r.__[1]],r.__c.setState({}))}],r.__c=T),r.__}function Yn(e,t){var n=ke(le++,3);!w.__s&&jt(n.__H,t)&&(n.__=e,n.__H=t,T.__H.__h.push(n))}function Ft(e,t){var n=ke(le++,4);!w.__s&&jt(n.__H,t)&&(n.__=e,n.__H=t,T.__h.push(n))}function rt(e,t){var n=ke(le++,7);return jt(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Hr(){mt.forEach(function(e){if(e.__P)try{e.__H.__h.forEach(He),e.__H.__h.forEach(dt),e.__H.__h=[]}catch(t){e.__H.__h=[],w.__e(t,e.__v)}}),mt=[]}w.__b=function(e){T=null,Lt&&Lt(e)},w.__r=function(e){qt&&qt(e),le=0;var t=(T=e.__c).__H;t&&(t.__h.forEach(He),t.__h.forEach(dt),t.__h=[])},w.diffed=function(e){Mt&&Mt(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(mt.push(t)!==1&&Tt===w.requestAnimationFrame||((Tt=w.requestAnimationFrame)||function(n){var r,o=function(){clearTimeout(a),Bt&&cancelAnimationFrame(r),setTimeout(n)},a=setTimeout(o,100);Bt&&(r=requestAnimationFrame(o))})(Hr)),T=void 0},w.__c=function(e,t){t.some(function(n){try{n.__h.forEach(He),n.__h=n.__h.filter(function(r){return!r.__||dt(r)})}catch(r){t.some(function(o){o.__h&&(o.__h=[])}),t=[],w.__e(r,n.__v)}}),Ht&&Ht(e,t)},w.unmount=function(e){Ut&&Ut(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(He)}catch(n){w.__e(n,t.__v)}};var Bt=typeof requestAnimationFrame=="function";function He(e){var t=T;typeof e.__c=="function"&&e.__c(),T=t}function dt(e){var t=T;e.__c=e.__(),T=t}function jt(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function Gn(e,t){return typeof t=="function"?t(e):t}function Xn(e,t){for(var n in t)e[n]=t[n];return e}function ht(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 vt(e){this.props=e}(vt.prototype=new W).isPureReactComponent=!0,vt.prototype.shouldComponentUpdate=function(e,t){return ht(this.props,e)||ht(this.state,t)};var Vt=w.__b;w.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Vt&&Vt(e)};var Ur=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,Wt=function(e,t){return e==null?null:J(J(e).map(t))},Fr={map:Wt,forEach:Wt,count:function(e){return e?J(e).length:0},only:function(e){var t=J(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:J},Br=w.__e;function Ue(){this.__u=0,this.t=null,this.__b=null}function er(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function ge(){this.u=null,this.o=null}w.__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)}Br(e,t,n)},(Ue.prototype=new W).__c=function(e,t){var n=t.__c,r=this;r.t==null&&(r.t=[]),r.t.push(n);var o=er(r.__v),a=!1,i=function(){a||(a=!0,n.componentWillUnmount=n.__c,o?o(u):u())};n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){i(),n.__c&&n.__c()};var u=function(){if(!--r.__u){if(r.state.__e){var s=r.state.__e;r.__v.__k[0]=function d(m,p,_){return m&&(m.__v=null,m.__k=m.__k&&m.__k.map(function(h){return d(h,p,_)}),m.__c&&m.__c.__P===p&&(m.__e&&_.insertBefore(m.__e,m.__d),m.__c.__e=!0,m.__c.__P=_)),m}(s,s.__c.__P,s.__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(i,i)},Ue.prototype.componentWillUnmount=function(){this.t=[]},Ue.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 a(i,u,l){return i&&(i.__c&&i.__c.__H&&(i.__c.__H.__.forEach(function(s){typeof s.__c=="function"&&s.__c()}),i.__c.__H=null),(i=Xn({},i)).__c!=null&&(i.__c.__P===l&&(i.__c.__P=u),i.__c=null),i.__k=i.__k&&i.__k.map(function(s){return a(s,u,l)})),i}(this.__b,n,r.__O=r.__P)}this.__b=null}var o=t.__e&&V(Z,null,e.fallback);return o&&(o.__h=null),[V(Z,null,t.__e?null:e.children),o]};var Kt=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)}}),Pe(V(Vr,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function tr(e,t){return V(Wr,{__v:e,i:t})}(ge.prototype=new W).__e=function(e){var t=this,n=er(t.__v),r=t.o.get(e);return r[0]++,function(o){var a=function(){t.props.revealOrder?(r.push(o),Kt(t,e,r)):o()};n?n(a):a()}},ge.prototype.render=function(e){this.u=null,this.o=new Map;var t=J(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},ge.prototype.componentDidUpdate=ge.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,n){Kt(e,n,t)})};var nr=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Kr=/^(?: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]/,zr=function(e){return(typeof Symbol<"u"&&Ee(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function rr(e,t,n){return t.__k==null&&(t.textContent=""),Pe(e,t),typeof n=="function"&&n(),e?e.__c:null}W.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(W.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var zt=w.event;function Jr(){}function $r(){return this.cancelBubble}function Qr(){return this.defaultPrevented}w.event=function(e){return zt&&(e=zt(e)),e.persist=Jr,e.isPropagationStopped=$r,e.isDefaultPrevented=Qr,e.nativeEvent=e};var or,Jt={configurable:!0,get:function(){return this.class}},$t=w.vnode;w.vnode=function(e){var t=e.type,n=e.props,r=n;if(typeof t=="string"){for(var o in r={},n){var a=n[o];o==="value"&&"defaultValue"in n&&a==null||(o==="defaultValue"&&"value"in n&&n.value==null?o="value":o==="download"&&a===!0?a="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!zr(n.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():Kr.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():a===null&&(a=void 0),r[o]=a)}t=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=J(n.children).forEach(function(i){i.props.selected=r.value.indexOf(i.props.value)!=-1})),t=="select"&&r.defaultValue!=null&&(r.value=J(n.children).forEach(function(i){i.props.selected=r.multiple?r.defaultValue.indexOf(i.props.value)!=-1:r.defaultValue==i.props.value})),e.props=r}t&&n.class!=n.className&&(Jt.enumerable="className"in n,n.className!=null&&(r.class=n.className),Object.defineProperty(r,"className",Jt)),e.$$typeof=nr,$t&&$t(e)};var Qt=w.__r;w.__r=function(e){Qt&&Qt(e),or=e.__c};var Zr={ReactCurrentDispatcher:{current:{readContext:function(e){return or.__n[e.__c].props.value}}}};(typeof performance>"u"?"undefined":Ee(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);function Zt(e){return!!e&&e.$$typeof===nr}var f={useState:Qn,useReducer:Zn,useEffect:Yn,useLayoutEffect:Ft,useRef:function(e){return ue=5,rt(function(){return{current:e}},[])},useImperativeHandle:function(e,t,n){ue=6,Ft(function(){typeof e=="function"?e(t()):e&&(e.current=t())},n==null?n:n.concat(e))},useMemo:rt,useCallback:function(e,t){return ue=8,rt(function(){return e},t)},useContext:function(e){var t=T.context[e.__c],n=ke(le++,9);return n.__c=e,t?(n.__==null&&(n.__=!0,t.sub(T)),t.props.value):e.__},useDebugValue:function(e,t){w.useDebugValue&&w.useDebugValue(t?t(e):e)},version:"16.8.0",Children:Fr,render:rr,hydrate:function(e,t,n){return $n(e,t),typeof n=="function"&&n(),e?e.__c:null},unmountComponentAtNode:function(e){return!!e.__k&&(Pe(null,e),!0)},createPortal:tr,createElement:V,createContext:function(e,t){var n={__c:t="__cC"+Hn++,__:e,Consumer:function(r,o){return r.children(o)},Provider:function(r){var o,a;return this.getChildContext||(o=[],(a={})[t]=this,this.getChildContext=function(){return a},this.shouldComponentUpdate=function(i){this.props.value!==i.value&&o.some(pt)},this.sub=function(i){o.push(i);var u=i.componentWillUnmount;i.componentWillUnmount=function(){o.splice(o.indexOf(i),1),u&&u.call(i)}}),r.children}};return n.Provider.__=n.Consumer.contextType=n},createFactory:function(e){return V.bind(null,e)},cloneElement:function(e){return Zt(e)?Mr.apply(null,arguments):e},createRef:function(){return{current:null}},Fragment:Z,isValidElement:Zt,findDOMNode:function(e){return e&&(e.base||e.nodeType===1&&e)||null},Component:W,PureComponent:vt,memo:function(e,t){function n(o){var a=this.props.ref,i=a==o.ref;return!i&&a&&(a.call?a(null):a.current=null),t?!t(this.props,o)||!i:ht(this.props,o)}function r(o){return this.shouldComponentUpdate=n,V(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=Xn({},n);return delete o.ref,e(o,(r=n.ref||r)&&(Ee(r)!="object"||"current"in r)?r:null)}return t.$$typeof=Ur,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:Z,Suspense:Ue,SuspenseList:ge,lazy:function(e){var t,n,r;function o(a){if(t||(t=e()).then(function(i){n=i.default||i},function(i){r=i}),r)throw r;if(!n)throw t;return V(n,a)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Zr};function Yr(){return f.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},f.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 ar(){return f.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},f.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 Gr=["translations"];function yt(){return yt=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]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var to=f.forwardRef(function(e,t){var n=e.translations,r=n===void 0?{}:n,o=eo(e,Gr),a=r.buttonText,i=a===void 0?"Search":a,u=r.buttonAriaLabel,l=u===void 0?"Search":u,s=Xr(Qn(null),2),c=s[0],d=s[1];return Yn(function(){typeof navigator<"u"&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?d("⌘"):d("Ctrl"))},[]),f.createElement("button",yt({type:"button",className:"DocSearch DocSearch-Button","aria-label":l},o,{ref:t}),f.createElement("span",{className:"DocSearch-Button-Container"},f.createElement(ar,null),f.createElement("span",{className:"DocSearch-Button-Placeholder"},i)),f.createElement("span",{className:"DocSearch-Button-Keys"},c!==null&&f.createElement(f.Fragment,null,f.createElement("kbd",{className:"DocSearch-Button-Key"},c==="Ctrl"?f.createElement(Yr,null):c),f.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))});function Ie(e){return e.reduce(function(t,n){return t.concat(n)},[])}var no=0;function _t(e){return e.collections.length===0?0:e.collections.reduce(function(t,n){return t+n.items.length},0)}var ir=function(){},ro=[{segment:"autocomplete-core",version:"1.7.4"}];function Fe(e,t){var n=t;return{then:function(r,o){return Fe(e.then(xe(r,n,e),xe(o,n,e)),n)},catch:function(r){return Fe(e.catch(xe(r,n,e)),n)},finally:function(r){return r&&n.onCancelList.push(r),Fe(e.finally(xe(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 Gt(e){return Fe(e,{isCanceled:!1,onCancelList:[]})}function xe(e,t,n){return e?function(r){return t.isCanceled?r:e(r)}:n}function Xt(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 en(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 oo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ao(e,t){var n=[];return Promise.resolve(e(t)).then(function(r){return Promise.all(r.filter(function(o){return!!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 a=function(i){for(var u=1;ue.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var sn,it,qe,ye=null,fn=(sn=-1,it=-1,qe=void 0,function(e){var t=++sn;return Promise.resolve(e).then(function(n){return qe&&t=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var jo=["props","refresh","store"],Po=["inputElement","formElement","panelElement"],Io=["inputElement"],ko=["inputElement","maxLength"],Do=["item","source"];function mn(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 x(e){for(var t=1;t=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Ao(e){var t=e.props,n=e.refresh,r=e.store,o=_e(e,jo);return{getEnvironmentProps:function(a){var i=a.inputElement,u=a.formElement,l=a.panelElement;function s(c){!r.getState().isOpen&&r.pendingRequests.isEmpty()||c.target===i||[u,l].some(function(d){return m=d,p=c.target,m===p||m.contains(p);var m,p})===!1&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return x({onTouchStart:s,onMouseDown:s,onTouchMove:function(c){r.getState().isOpen!==!1&&i===t.environment.document.activeElement&&c.target!==i&&i.blur()}},_e(a,Po))},getRootProps:function(a){return x({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},a)},getFormProps:function(a){return a.inputElement,x({action:"",noValidate:!0,role:"search",onSubmit:function(i){var u;i.preventDefault(),t.onSubmit(x({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),(u=a.inputElement)===null||u===void 0||u.blur()},onReset:function(i){var u;i.preventDefault(),t.onReset(x({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),(u=a.inputElement)===null||u===void 0||u.focus()}},_e(a,Io))},getLabelProps:function(a){return x({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},a)},getInputProps:function(a){var i;function u(h){(t.openOnFocus||r.getState().query)&&ae(x({event:h,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var l=a||{},s=(l.inputElement,l.maxLength),c=s===void 0?512:s,d=_e(l,ko),m=ie(r.getState()),p=function(h){return!!(h&&h.match(io))}(((i=t.environment.navigator)===null||i===void 0?void 0:i.userAgent)||""),_=m!=null&&m.itemUrl&&!p?"go":"search";return x({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&r.getState().activeItemId!==null?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:_,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(h){ae(x({event:h,props:t,query:h.currentTarget.value.slice(0,c),refresh:n,store:r},o))},onKeyDown:function(h){(function(g){var v=g.event,S=g.props,O=g.refresh,y=g.store,b=Eo(g,So);if(v.key==="ArrowUp"||v.key==="ArrowDown"){var I=function(){var q=S.environment.document.getElementById("".concat(S.id,"-item-").concat(y.getState().activeItemId));q&&(q.scrollIntoViewIfNeeded?q.scrollIntoViewIfNeeded(!1):q.scrollIntoView(!1))},N=function(){var q=ie(y.getState());if(y.getState().activeItemId!==null&&q){var De=q.item,Y=q.itemInputValue,Xe=q.itemUrl,se=q.source;se.onActive(X({event:v,item:De,itemInputValue:Y,itemUrl:Xe,refresh:O,source:se,state:y.getState()},b))}};v.preventDefault(),y.getState().isOpen===!1&&(S.openOnFocus||y.getState().query)?ae(X({event:v,props:S,query:y.getState().query,refresh:O,store:y},b)).then(function(){y.dispatch(v.key,{nextActiveItemId:S.defaultActiveItemId}),N(),setTimeout(I,0)}):(y.dispatch(v.key,{}),N(),I())}else if(v.key==="Escape")v.preventDefault(),y.dispatch(v.key,null),y.pendingRequests.cancelAll();else if(v.key==="Tab")y.dispatch("blur",null),y.pendingRequests.cancelAll();else if(v.key==="Enter"){if(y.getState().activeItemId===null||y.getState().collections.every(function(q){return q.items.length===0}))return void(S.debug||y.pendingRequests.cancelAll());v.preventDefault();var A=ie(y.getState()),k=A.item,R=A.itemInputValue,L=A.itemUrl,B=A.source;if(v.metaKey||v.ctrlKey)L!==void 0&&(B.onSelect(X({event:v,item:k,itemInputValue:R,itemUrl:L,refresh:O,source:B,state:y.getState()},b)),S.navigator.navigateNewTab({itemUrl:L,item:k,state:y.getState()}));else if(v.shiftKey)L!==void 0&&(B.onSelect(X({event:v,item:k,itemInputValue:R,itemUrl:L,refresh:O,source:B,state:y.getState()},b)),S.navigator.navigateNewWindow({itemUrl:L,item:k,state:y.getState()}));else if(!v.altKey){if(L!==void 0)return B.onSelect(X({event:v,item:k,itemInputValue:R,itemUrl:L,refresh:O,source:B,state:y.getState()},b)),void S.navigator.navigate({itemUrl:L,item:k,state:y.getState()});ae(X({event:v,nextState:{isOpen:!1},props:S,query:R,refresh:O,store:y},b)).then(function(){B.onSelect(X({event:v,item:k,itemInputValue:R,itemUrl:L,refresh:O,source:B,state:y.getState()},b))})}}})(x({event:h,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:ir,onClick:function(h){a.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(h)}},d)},getPanelProps:function(a){return x({onMouseDown:function(i){i.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},a)},getListProps:function(a){return x({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},a)},getItemProps:function(a){var i=a.item,u=a.source,l=_e(a,Do);return x({id:"".concat(t.id,"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(s){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var c=ie(r.getState());if(r.getState().activeItemId!==null&&c){var d=c.item,m=c.itemInputValue,p=c.itemUrl,_=c.source;_.onActive(x({event:s,item:d,itemInputValue:m,itemUrl:p,refresh:n,source:_,state:r.getState()},o))}}},onMouseDown:function(s){s.preventDefault()},onClick:function(s){var c=u.getItemInputValue({item:i,state:r.getState()}),d=u.getItemUrl({item:i,state:r.getState()});(d?Promise.resolve():ae(x({event:s,nextState:{isOpen:!1},props:t,query:c,refresh:n,store:r},o))).then(function(){u.onSelect(x({event:s,item:i,itemInputValue:c,itemUrl:d,refresh:n,source:u,state:r.getState()},o))})}},l)}}}function dn(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 xo(e){for(var t=1;t0},reshape:function(m){return m.sources}},u),{},{id:(s=u.id)!==null&&s!==void 0?s:"autocomplete-".concat(no++),plugins:d,initialState:re({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},u.initialState),onStateChange:function(m){var p;(p=u.onStateChange)===null||p===void 0||p.call(u,m),d.forEach(function(_){var h;return(h=_.onStateChange)===null||h===void 0?void 0:h.call(_,m)})},onSubmit:function(m){var p;(p=u.onSubmit)===null||p===void 0||p.call(u,m),d.forEach(function(_){var h;return(h=_.onSubmit)===null||h===void 0?void 0:h.call(_,m)})},onReset:function(m){var p;(p=u.onReset)===null||p===void 0||p.call(u,m),d.forEach(function(_){var h;return(h=_.onReset)===null||h===void 0?void 0:h.call(_,m)})},getSources:function(m){return Promise.all([].concat(fo(d.map(function(p){return p.getSources})),[u.getSources]).filter(Boolean).map(function(p){return ao(p,m)})).then(function(p){return Ie(p)}).then(function(p){return p.map(function(_){return re(re({},_),{},{onSelect:function(h){_.onSelect(h),l.forEach(function(g){var v;return(v=g.onSelect)===null||v===void 0?void 0:v.call(g,h)})},onActive:function(h){_.onActive(h),l.forEach(function(g){var v;return(v=g.onActive)===null||v===void 0?void 0:v.call(g,h)})}})})})},navigator:re({navigate:function(m){var p=m.itemUrl;c.location.assign(p)},navigateNewTab:function(m){var p=m.itemUrl,_=c.open(p,"_blank","noopener");_==null||_.focus()},navigateNewWindow:function(m){var p=m.itemUrl;c.open(p,"_blank","noopener")}},u.navigator)})}(e,t),r=lo(To,n,function(u){var l=u.prevState,s=u.state;n.onStateChange(ee({prevState:l,state:s,refresh:i},o))}),o=function(u){var l=u.store;return{setActiveItemId:function(s){l.dispatch("setActiveItemId",s)},setQuery:function(s){l.dispatch("setQuery",s)},setCollections:function(s){var c=0,d=s.map(function(m){return Re(Re({},m),{},{items:Ie(m.items).map(function(p){return Re(Re({},p),{},{__autocomplete_id:c++})})})});l.dispatch("setCollections",d)},setIsOpen:function(s){l.dispatch("setIsOpen",s)},setStatus:function(s){l.dispatch("setStatus",s)},setContext:function(s){l.dispatch("setContext",s)}}}({store:r}),a=Ao(ee({props:n,refresh:i,store:r},o));function i(){return ae(ee({event:new Event("input"),nextState:{isOpen:r.getState().isOpen},props:n,query:r.getState().query,refresh:i,store:r},o))}return n.plugins.forEach(function(u){var l;return(l=u.subscribe)===null||l===void 0?void 0:l.call(u,ee(ee({},o),{},{refresh:i,onSelect:function(s){t.push({onSelect:s})},onActive:function(s){t.push({onActive:s})}}))}),function(u){var l,s,c=u.metadata,d=u.environment;if(!((l=d.navigator)===null||l===void 0||(s=l.userAgent)===null||s===void 0)&&s.includes("Algolia Crawler")){var m=d.document.createElement("meta"),p=d.document.querySelector("head");m.name="algolia:metadata",setTimeout(function(){m.content=JSON.stringify(c),p.appendChild(m)},0)}}({metadata:No({plugins:n.plugins,options:e}),environment:n.environment}),ee(ee({refresh:i},a),o)}function Mo(e){var t=e.translations,n=(t===void 0?{}:t).searchByText,r=n===void 0?"Search by":n;return f.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},f.createElement("span",{className:"DocSearch-Label"},r),f.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},f.createElement("defs",null,f.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),f.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),f.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),f.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),f.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),f.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),f.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),f.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),f.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),f.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function Me(e){return f.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},f.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function Ho(e){var t=e.translations,n=t===void 0?{}:t,r=n.selectText,o=r===void 0?"to select":r,a=n.selectKeyAriaLabel,i=a===void 0?"Enter key":a,u=n.navigateText,l=u===void 0?"to navigate":u,s=n.navigateUpKeyAriaLabel,c=s===void 0?"Arrow up":s,d=n.navigateDownKeyAriaLabel,m=d===void 0?"Arrow down":d,p=n.closeText,_=p===void 0?"to close":p,h=n.closeKeyAriaLabel,g=h===void 0?"Escape key":h,v=n.searchByText,S=v===void 0?"Search by":v;return f.createElement(f.Fragment,null,f.createElement("div",{className:"DocSearch-Logo"},f.createElement(Mo,{translations:{searchByText:S}})),f.createElement("ul",{className:"DocSearch-Commands"},f.createElement("li",null,f.createElement("kbd",{className:"DocSearch-Commands-Key"},f.createElement(Me,{ariaLabel:i},f.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),f.createElement("span",{className:"DocSearch-Label"},o)),f.createElement("li",null,f.createElement("kbd",{className:"DocSearch-Commands-Key"},f.createElement(Me,{ariaLabel:m},f.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),f.createElement("kbd",{className:"DocSearch-Commands-Key"},f.createElement(Me,{ariaLabel:c},f.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),f.createElement("span",{className:"DocSearch-Label"},l)),f.createElement("li",null,f.createElement("kbd",{className:"DocSearch-Commands-Key"},f.createElement(Me,{ariaLabel:g},f.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),f.createElement("span",{className:"DocSearch-Label"},_))))}function Uo(e){var t=e.hit,n=e.children;return f.createElement("a",{href:t.url},n)}function Fo(){return f.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},f.createElement("g",{fill:"none",fillRule:"evenodd"},f.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},f.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),f.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},f.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}function Bo(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},f.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),f.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function gt(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Vo(){return f.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},f.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),f.createElement("path",{d:"M8 17l-6-6 6-6"})))}var Wo=function(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Ko(e){switch(e.type){case"lvl1":return f.createElement(Wo,null);case"content":return f.createElement(Jo,null);default:return f.createElement(zo,null)}}function zo(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Jo(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function _n(){return f.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},f.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function $o(){return f.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},f.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function Qo(){return f.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},f.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}function Zo(e){var t=e.translations,n=t===void 0?{}:t,r=n.titleText,o=r===void 0?"Unable to fetch results":r,a=n.helpText,i=a===void 0?"You might want to check your network connection.":a;return f.createElement("div",{className:"DocSearch-ErrorScreen"},f.createElement("div",{className:"DocSearch-Screen-Icon"},f.createElement($o,null)),f.createElement("p",{className:"DocSearch-Title"},o),f.createElement("p",{className:"DocSearch-Help"},i))}var Yo=["translations"];function Go(e){return function(t){if(Array.isArray(t))return ct(t)}(e)||function(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}(e)||function(t,n){if(t){if(typeof t=="string")return ct(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ct(t,n)}}(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 ct(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ea(e){var t=e.translations,n=t===void 0?{}:t,r=Xo(e,Yo),o=n.noResultsText,a=o===void 0?"No results for":o,i=n.suggestedQueryText,u=i===void 0?"Try searching for":i,l=n.reportMissingResultsText,s=l===void 0?"Believe this query should return results?":l,c=n.reportMissingResultsLinkText,d=c===void 0?"Let us know.":c,m=r.state.context.searchSuggestions;return f.createElement("div",{className:"DocSearch-NoResults"},f.createElement("div",{className:"DocSearch-Screen-Icon"},f.createElement(Qo,null)),f.createElement("p",{className:"DocSearch-Title"},a,' "',f.createElement("strong",null,r.state.query),'"'),m&&m.length>0&&f.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},f.createElement("p",{className:"DocSearch-Help"},u,":"),f.createElement("ul",null,m.slice(0,3).reduce(function(p,_){return[].concat(Go(p),[f.createElement("li",{key:_},f.createElement("button",{className:"DocSearch-Prefill",key:_,type:"button",onClick:function(){r.setQuery(_.toLowerCase()+" "),r.refresh(),r.inputRef.current.focus()}},_))])},[]))),r.getMissingResultsUrl&&f.createElement("p",{className:"DocSearch-Help"},"".concat(s," "),f.createElement("a",{href:r.getMissingResultsUrl({query:r.state.query}),target:"_blank",rel:"noopener noreferrer"},d)))}var ta=["hit","attribute","tagName"];function gn(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 bn(e){for(var t=1;t=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function On(e,t){return t.split(".").reduce(function(n,r){return n!=null&&n[r]?n[r]:null},e)}function oe(e){var t=e.hit,n=e.attribute,r=e.tagName;return V(r===void 0?"span":r,bn(bn({},ra(e,ta)),{},{dangerouslySetInnerHTML:{__html:On(t,"_snippetResult.".concat(n,".value"))||On(t,n)}}))}function Sn(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 a,i,u=[],l=!0,s=!1;try{for(o=o.call(n);!(l=(a=o.next()).done)&&(u.push(a.value),!r||u.length!==r);l=!0);}catch(c){s=!0,i=c}finally{try{l||o.return==null||o.return()}finally{if(s)throw i}}return u}}(e,t)||function(n,r){if(n){if(typeof n=="string")return wn(n,r);var o=Object.prototype.toString.call(n).slice(8,-1);if(o==="Object"&&n.constructor&&(o=n.constructor.name),o==="Map"||o==="Set")return Array.from(n);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return wn(n,r)}}(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 wn(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n|<\/mark>)/g,ia=RegExp(lr.source);function sr(e){var t,n,r,o,a,i=e;if(!i.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var u=((i.__docsearch_parent?(t=i.__docsearch_parent)===null||t===void 0||(n=t._highlightResult)===null||n===void 0||(r=n.hierarchy)===null||r===void 0?void 0:r.lvl0:(o=e._highlightResult)===null||o===void 0||(a=o.hierarchy)===null||a===void 0?void 0:a.lvl0)||{}).value;return u&&ia.test(u)?u.replace(lr,""):u}function Ot(){return Ot=Object.assign||function(e){for(var t=1;t=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function sa(e){var t=e.translations,n=t===void 0?{}:t,r=la(e,ua),o=n.recentSearchesTitle,a=o===void 0?"Recent":o,i=n.noRecentSearchesText,u=i===void 0?"No recent searches":i,l=n.saveRecentSearchButtonTitle,s=l===void 0?"Save this search":l,c=n.removeRecentSearchButtonTitle,d=c===void 0?"Remove this search from history":c,m=n.favoriteSearchesTitle,p=m===void 0?"Favorite":m,_=n.removeFavoriteSearchButtonTitle,h=_===void 0?"Remove this search from favorites":_;return r.state.status==="idle"&&r.hasCollections===!1?r.disableUserPersonalization?null:f.createElement("div",{className:"DocSearch-StartScreen"},f.createElement("p",{className:"DocSearch-Help"},u)):r.hasCollections===!1?null:f.createElement("div",{className:"DocSearch-Dropdown-Container"},f.createElement(bt,$e({},r,{title:a,collection:r.state.collections[0],renderIcon:function(){return f.createElement("div",{className:"DocSearch-Hit-icon"},f.createElement(Bo,null))},renderAction:function(g){var v=g.item,S=g.runFavoriteTransition,O=g.runDeleteTransition;return f.createElement(f.Fragment,null,f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:s,type:"submit",onClick:function(y){y.preventDefault(),y.stopPropagation(),S(function(){r.favoriteSearches.add(v),r.recentSearches.remove(v),r.refresh()})}},f.createElement(_n,null))),f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:d,type:"submit",onClick:function(y){y.preventDefault(),y.stopPropagation(),O(function(){r.recentSearches.remove(v),r.refresh()})}},f.createElement(gt,null))))}})),f.createElement(bt,$e({},r,{title:p,collection:r.state.collections[1],renderIcon:function(){return f.createElement("div",{className:"DocSearch-Hit-icon"},f.createElement(_n,null))},renderAction:function(g){var v=g.item,S=g.runDeleteTransition;return f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(O){O.preventDefault(),O.stopPropagation(),S(function(){r.favoriteSearches.remove(v),r.refresh()})}},f.createElement(gt,null)))}})))}var fa=["translations"];function Qe(){return Qe=Object.assign||function(e){for(var t=1;t=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ma=f.memo(function(e){var t=e.translations,n=t===void 0?{}:t,r=pa(e,fa);if(r.state.status==="error")return f.createElement(Zo,{translations:n==null?void 0:n.errorScreen});var o=r.state.collections.some(function(a){return a.items.length>0});return r.state.query?o===!1?f.createElement(ea,Qe({},r,{translations:n==null?void 0:n.noResultsScreen})):f.createElement(ca,r):f.createElement(sa,Qe({},r,{hasCollections:o,translations:n==null?void 0:n.startScreen}))},function(e,t){return t.state.status==="loading"||t.state.status==="stalled"}),da=["translations"];function Ze(){return Ze=Object.assign||function(e){for(var t=1;t=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function va(e){var t=e.translations,n=t===void 0?{}:t,r=ha(e,da),o=n.resetButtonTitle,a=o===void 0?"Clear the query":o,i=n.resetButtonAriaLabel,u=i===void 0?"Clear the query":i,l=n.cancelButtonText,s=l===void 0?"Cancel":l,c=n.cancelButtonAriaLabel,d=c===void 0?"Cancel":c,m=r.getFormProps({inputElement:r.inputRef.current}).onReset;return f.useEffect(function(){r.autoFocus&&r.inputRef.current&&r.inputRef.current.focus()},[r.autoFocus,r.inputRef]),f.useEffect(function(){r.isFromSelection&&r.inputRef.current&&r.inputRef.current.select()},[r.isFromSelection,r.inputRef]),f.createElement(f.Fragment,null,f.createElement("form",{className:"DocSearch-Form",onSubmit:function(p){p.preventDefault()},onReset:m},f.createElement("label",Ze({className:"DocSearch-MagnifierLabel"},r.getLabelProps()),f.createElement(ar,null)),f.createElement("div",{className:"DocSearch-LoadingIndicator"},f.createElement(Fo,null)),f.createElement("input",Ze({className:"DocSearch-Input",ref:r.inputRef},r.getInputProps({inputElement:r.inputRef.current,autoFocus:r.autoFocus,maxLength:64}))),f.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":u,hidden:!r.state.query},f.createElement(gt,null))),f.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":d,onClick:r.onClose},s))}var ya=["_highlightResult","_snippetResult"];function _a(e,t){if(e==null)return{};var n,r,o=function(i,u){if(i==null)return{};var l,s,c={},d=Object.keys(i);for(s=0;s=0||(c[l]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ga(e){return function(){var t="__TEST_KEY__";try{return localStorage.setItem(t,""),localStorage.removeItem(t),!0}catch{return!1}}()===!1?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function Pn(e){var t=e.key,n=e.limit,r=n===void 0?5:n,o=ga(t),a=o.getItem().slice(0,r);return{add:function(i){var u=i,l=(u._highlightResult,u._snippetResult,_a(u,ya)),s=a.findIndex(function(c){return c.objectID===l.objectID});s>-1&&a.splice(s,1),a.unshift(l),a=a.slice(0,r),o.setItem(a)},remove:function(i){a=a.filter(function(u){return u.objectID!==i.objectID}),o.setItem(a)},getAll:function(){return a}}}var ba=["facetName","facetQuery"];function Oa(e){var t,n="algoliasearch-client-js-".concat(e.key),r=function(){return t===void 0&&(t=e.localStorage||window.localStorage),t},o=function(){return JSON.parse(r().getItem(n)||"{}")};return{get:function(a,i){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){var l=JSON.stringify(a),s=o()[l];return Promise.all([s||i(),s!==void 0])}).then(function(l){var s=Ve(l,2),c=s[0],d=s[1];return Promise.all([c,d||u.miss(c)])}).then(function(l){return Ve(l,1)[0]})},set:function(a,i){return Promise.resolve().then(function(){var u=o();return u[JSON.stringify(a)]=i,r().setItem(n,JSON.stringify(u)),i})},delete:function(a){return Promise.resolve().then(function(){var i=o();delete i[JSON.stringify(a)],r().setItem(n,JSON.stringify(i))})},clear:function(){return Promise.resolve().then(function(){r().removeItem(n)})}}}function be(e){var t=We(e.caches),n=t.shift();return n===void 0?{get:function(r,o){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return o().then(function(i){return Promise.all([i,a.miss(i)])}).then(function(i){return Ve(i,1)[0]})},set:function(r,o){return Promise.resolve(o)},delete:function(r){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(r,o){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(r,o,a).catch(function(){return be({caches:t}).get(r,o,a)})},set:function(r,o){return n.set(r,o).catch(function(){return be({caches:t}).set(r,o)})},delete:function(r){return n.delete(r).catch(function(){return be({caches:t}).delete(r)})},clear:function(){return n.clear().catch(function(){return be({caches:t}).clear()})}}}function ut(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},t={};return{get:function(n,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(n);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var i=r(),u=o&&o.miss||function(){return Promise.resolve()};return i.then(function(l){return u(l)}).then(function(){return i})},set:function(n,r){return t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete:function(n){return delete t[JSON.stringify(n)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function Sa(e){for(var t=e.length-1;t>0;t--){var n=Math.floor(Math.random()*(t+1)),r=e[t];e[t]=e[n],e[n]=r}return e}function fr(e,t){return t&&Object.keys(t).forEach(function(n){e[n]=t[n](e)}),e}function Ye(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r0?r:void 0,timeout:n.timeout||t,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}var ce={Read:1,Write:2,Any:3},pr=1,wa=2,mr=3;function dr(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:pr;return P(P({},e),{},{status:t,lastUpdate:Date.now()})}function hr(e){return typeof e=="string"?{protocol:"https",url:e,accept:ce.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||ce.Any}}var kn="GET",Ge="POST";function Ea(e,t){return Promise.all(t.map(function(n){return e.get(n,function(){return Promise.resolve(dr(n))})})).then(function(n){var r=n.filter(function(i){return function(u){return u.status===pr||Date.now()-u.lastUpdate>12e4}(i)}),o=n.filter(function(i){return function(u){return u.status===mr&&Date.now()-u.lastUpdate<=12e4}(i)}),a=[].concat(We(r),We(o));return{getTimeout:function(i,u){return(o.length===0&&i===0?1:o.length+3+i)*u},statelessHosts:a.length>0?a.map(function(i){return hr(i)}):t}})}function Dn(e,t,n,r){var o=[],a=function(m,p){if(!(m.method===kn||m.data===void 0&&p.data===void 0)){var _=Array.isArray(m.data)?m.data:P(P({},m.data),p.data);return JSON.stringify(_)}}(n,r),i=function(m,p){var _=P(P({},m.headers),p.headers),h={};return Object.keys(_).forEach(function(g){var v=_[g];h[g.toLowerCase()]=v}),h}(e,r),u=n.method,l=n.method!==kn?{}:P(P({},n.data),r.data),s=P(P(P({"x-algolia-agent":e.userAgent.value},e.queryParameters),l),r.queryParameters),c=0,d=function m(p,_){var h=p.pop();if(h===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:Cn(o)};var g={data:a,headers:i,method:u,url:Pa(h,n.path,s),connectTimeout:_(c,e.timeouts.connect),responseTimeout:_(c,r.timeout)},v=function(O){var y={request:g,response:O,host:h,triesLeft:p.length};return o.push(y),y},S={onSucess:function(O){return function(y){try{return JSON.parse(y.content)}catch(b){throw function(I,N){return{name:"DeserializationError",message:I,response:N}}(b.message,y)}}(O)},onRetry:function(O){var y=v(O);return O.isTimedOut&&c++,Promise.all([e.logger.info("Retryable failure",yr(y)),e.hostsCache.set(h,dr(h,O.isTimedOut?mr:wa))]).then(function(){return m(p,_)})},onFail:function(O){throw v(O),function(y,b){var I=y.content,N=y.status,A=I;try{A=JSON.parse(I).message}catch{}return function(k,R,L){return{name:"ApiError",message:k,status:R,transporterStackTrace:L}}(A,N,b)}(O,Cn(o))}};return e.requester.send(g).then(function(O){return function(y,b){return function(I){var N=I.status;return I.isTimedOut||function(A){var k=A.isTimedOut,R=A.status;return!k&&~~R==0}(I)||~~(N/100)!=2&&~~(N/100)!=4}(y)?b.onRetry(y):~~(y.status/100)==2?b.onSucess(y):b.onFail(y)}(O,S)})};return Ea(e.hostsCache,t).then(function(m){return d(We(m.statelessHosts).reverse(),m.getTimeout)})}function ja(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(n){var r="; ".concat(n.segment).concat(n.version!==void 0?" (".concat(n.version,")"):"");return t.value.indexOf(r)===-1&&(t.value="".concat(t.value).concat(r)),t}};return t}function Pa(e,t,n){var r=vr(n),o="".concat(e.protocol,"://").concat(e.url,"/").concat(t.charAt(0)==="/"?t.substr(1):t);return r.length&&(o+="?".concat(r)),o}function vr(e){return Object.keys(e).map(function(t){return Ye("%s=%s",t,(n=e[t],Object.prototype.toString.call(n)==="[object Object]"||Object.prototype.toString.call(n)==="[object Array]"?JSON.stringify(e[t]):e[t]));var n}).join("&")}function Cn(e){return e.map(function(t){return yr(t)})}function yr(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return P(P({},e),{},{request:P(P({},e.request),{},{headers:P(P({},e.request.headers),t)})})}var Ia=function(e){var t=e.appId,n=function(a,i,u){var l={"x-algolia-api-key":u,"x-algolia-application-id":i};return{headers:function(){return a===Be.WithinHeaders?l:{}},queryParameters:function(){return a===Be.WithinQueryParameters?l:{}}}}(e.authMode!==void 0?e.authMode:Be.WithinHeaders,t,e.apiKey),r=function(a){var i=a.hostsCache,u=a.logger,l=a.requester,s=a.requestsCache,c=a.responsesCache,d=a.timeouts,m=a.userAgent,p=a.hosts,_=a.queryParameters,h={hostsCache:i,logger:u,requester:l,requestsCache:s,responsesCache:c,timeouts:d,userAgent:m,headers:a.headers,queryParameters:_,hosts:p.map(function(g){return hr(g)}),read:function(g,v){var S=In(v,h.timeouts.read),O=function(){return Dn(h,h.hosts.filter(function(b){return(b.accept&ce.Read)!=0}),g,S)};if((S.cacheable!==void 0?S.cacheable:g.cacheable)!==!0)return O();var y={request:g,mappedRequestOptions:S,transporter:{queryParameters:h.queryParameters,headers:h.headers}};return h.responsesCache.get(y,function(){return h.requestsCache.get(y,function(){return h.requestsCache.set(y,O()).then(function(b){return Promise.all([h.requestsCache.delete(y),b])},function(b){return Promise.all([h.requestsCache.delete(y),Promise.reject(b)])}).then(function(b){var I=Ve(b,2);return I[0],I[1]})})},{miss:function(b){return h.responsesCache.set(y,b)}})},write:function(g,v){return Dn(h,h.hosts.filter(function(S){return(S.accept&ce.Write)!=0}),g,In(v,h.timeouts.write))}};return h}(P(P({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:ce.Read},{url:"".concat(t,".algolia.net"),accept:ce.Write}].concat(Sa([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:P(P(P({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:P(P({},n.queryParameters()),e.queryParameters)})),o={transporter:r,appId:t,addAlgoliaAgent:function(a,i){r.userAgent.add({segment:a,version:i})},clearCache:function(){return Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then(function(){})}};return fr(o,e.methods)},_r=function(e){return function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r={transporter:e.transporter,appId:e.appId,indexName:t};return fr(r,n.methods)}},An=function(e){return function(t,n){var r=t.map(function(o){return P(P({},o),{},{params:vr(o.params||{})})});return e.transporter.read({method:Ge,path:"1/indexes/*/queries",data:{requests:r},cacheable:!0},n)}},xn=function(e){return function(t,n){return Promise.all(t.map(function(r){var o=r.params,a=o.facetName,i=o.facetQuery,u=Rr(o,ba);return _r(e)(r.indexName,{methods:{searchForFacetValues:gr}}).searchForFacetValues(a,i,P(P({},n),u))}))}},ka=function(e){return function(t,n,r){return e.transporter.read({method:Ge,path:Ye("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:n},cacheable:!0},r)}},Da=function(e){return function(t,n){return e.transporter.read({method:Ge,path:Ye("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},n)}},gr=function(e){return function(t,n,r){return e.transporter.read({method:Ge,path:Ye("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:n},cacheable:!0},r)}},Ca=1,Aa=2,xa=3;function br(e,t,n){var r,o={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(a){return new Promise(function(i){var u=new XMLHttpRequest;u.open(a.method,a.url,!0),Object.keys(a.headers).forEach(function(d){return u.setRequestHeader(d,a.headers[d])});var l,s=function(d,m){return setTimeout(function(){u.abort(),i({status:0,content:m,isTimedOut:!0})},1e3*d)},c=s(a.connectTimeout,"Connection timeout");u.onreadystatechange=function(){u.readyState>u.OPENED&&l===void 0&&(clearTimeout(c),l=s(a.responseTimeout,"Socket timeout"))},u.onerror=function(){u.status===0&&(clearTimeout(c),clearTimeout(l),i({content:u.responseText||"Network request failed",status:u.status,isTimedOut:!1}))},u.onload=function(){clearTimeout(c),clearTimeout(l),i({content:u.responseText,status:u.status,isTimedOut:!1})},u.send(a.data)})}},logger:(r=xa,{debug:function(a,i){return Ca>=r&&console.debug(a,i),Promise.resolve()},info:function(a,i){return Aa>=r&&console.info(a,i),Promise.resolve()},error:function(a,i){return console.error(a,i),Promise.resolve()}}),responsesCache:ut(),requestsCache:ut({serializable:!1}),hostsCache:be({caches:[Oa({key:"".concat("4.8.5","-").concat(e)}),ut()]}),userAgent:ja("4.8.5").add({segment:"Browser",version:"lite"}),authMode:Be.WithinQueryParameters};return Ia(P(P(P({},o),n),{},{methods:{search:An,searchForFacetValues:xn,multipleQueries:An,multipleSearchForFacetValues:xn,initIndex:function(a){return function(i){return _r(a)(i,{methods:{search:Da,searchForFacetValues:gr,findAnswers:ka}})}}}}))}br.version="4.8.5";var Na=["footer","searchBox"];function we(){return we=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]=i[l]);return c}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function qa(e){var t=e.appId,n=e.apiKey,r=e.indexName,o=e.placeholder,a=o===void 0?"Search docs":o,i=e.searchParameters,u=e.onClose,l=u===void 0?aa:u,s=e.transformItems,c=s===void 0?jn:s,d=e.hitComponent,m=d===void 0?Uo:d,p=e.resultsFooterComponent,_=p===void 0?function(){return null}:p,h=e.navigator,g=e.initialScrollY,v=g===void 0?0:g,S=e.transformSearchClient,O=S===void 0?jn:S,y=e.disableUserPersonalization,b=y!==void 0&&y,I=e.initialQuery,N=I===void 0?"":I,A=e.translations,k=A===void 0?{}:A,R=e.getMissingResultsUrl,L=k.footer,B=k.searchBox,q=La(k,Na),De=Ta(f.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),Y=De[0],Xe=De[1],se=f.useRef(null),et=f.useRef(null),Pt=f.useRef(null),Ce=f.useRef(null),fe=f.useRef(null),$=f.useRef(10),It=f.useRef(typeof window<"u"?window.getSelection().toString().slice(0,64):"").current,G=f.useRef(N||It).current,kt=function(j,D,M){return f.useMemo(function(){var H=br(j,D);return H.addAlgoliaAgent("docsearch","3.3.3"),/docsearch.js \(.*\)/.test(H.transporter.userAgent.value)===!1&&H.addAlgoliaAgent("docsearch-react","3.3.3"),M(H)},[j,D,M])}(t,n,O),te=f.useRef(Pn({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(r),limit:10})).current,pe=f.useRef(Pn({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(r),limit:te.getAll().length===0?7:4})).current,me=f.useCallback(function(j){if(!b){var D=j.type==="content"?j.__docsearch_parent:j;D&&te.getAll().findIndex(function(M){return M.objectID===D.objectID})===-1&&pe.add(D)}},[te,pe,b]),de=f.useMemo(function(){return qo({id:"docsearch",defaultActiveItemId:0,placeholder:a,openOnFocus:!0,initialState:{query:G,context:{searchSuggestions:[]}},navigator:h,onStateChange:function(j){Xe(j.state)},getSources:function(j){var D=j.query,M=j.state,H=j.setContext,Q=j.setStatus;return D?kt.search([{query:D,indexName:r,params:lt({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat($.current),"hierarchy.lvl2:".concat($.current),"hierarchy.lvl3:".concat($.current),"hierarchy.lvl4:".concat($.current),"hierarchy.lvl5:".concat($.current),"hierarchy.lvl6:".concat($.current),"content:".concat($.current)],snippetEllipsisText:"…",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20},i)}]).catch(function(C){throw C.name==="RetryError"&&Q("error"),C}).then(function(C){var U=C.results[0],F=U.hits,wr=U.nbHits,tt=En(F,function(nt){return sr(nt)});return M.context.searchSuggestions.length0&&(Dt(),fe.current&&fe.current.focus())},[G,Dt]),f.useEffect(function(){function j(){if(et.current){var D=.01*window.innerHeight;et.current.style.setProperty("--docsearch-vh","".concat(D,"px"))}}return j(),window.addEventListener("resize",j),function(){window.removeEventListener("resize",j)}},[]),f.createElement("div",we({ref:se},Sr({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container",Y.status==="stalled"&&"DocSearch-Container--Stalled",Y.status==="error"&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(j){j.target===j.currentTarget&&l()}}),f.createElement("div",{className:"DocSearch-Modal",ref:et},f.createElement("header",{className:"DocSearch-SearchBar",ref:Pt},f.createElement(va,we({},de,{state:Y,autoFocus:G.length===0,inputRef:fe,isFromSelection:!!G&&G===It,translations:B,onClose:l}))),f.createElement("div",{className:"DocSearch-Dropdown",ref:Ce},f.createElement(ma,we({},de,{indexName:r,state:Y,hitComponent:m,resultsFooterComponent:_,disableUserPersonalization:b,recentSearches:pe,favoriteSearches:te,inputRef:fe,translations:q,getMissingResultsUrl:R,onItemClick:function(j){me(j),l()}}))),f.createElement("footer",{className:"DocSearch-Footer"},f.createElement(Ho,{translations:L}))))}function St(){return St=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&arguments[1]!==void 0?arguments[1]:window;return typeof t=="string"?n.document.querySelector(t):t}(e.container,e.environment))}const Ua={id:"docsearch"},Va=jr({__name:"VPAlgoliaSearchBox",props:{algolia:null},setup(e){const t=e,n=Pr(),r=Ir(),{site:o,localeIndex:a,lang:i}=xr();kr(u),Dr(a,u);function u(){var p,_;const c={...t.algolia,...(p=t.algolia.locales)==null?void 0:p[a.value]},d=((_=c.searchParameters)==null?void 0:_.facetFilters)??[],m=[...(Array.isArray(d)?d:[d]).filter(h=>!h.startsWith("lang:")),`lang:${i.value}`];l({...c,searchParameters:{...c.searchParameters,facetFilters:m}})}function l(c){const d=Object.assign({},c,{container:"#docsearch",navigator:{navigate({itemUrl:m}){const{pathname:p}=new URL(window.location.origin+m);r.path===p?window.location.assign(window.location.origin+m):n.go(m)}},transformItems(m){return m.map(p=>Object.assign({},p,{url:s(p.url)}))},hitComponent({hit:m,children:p}){return{__v:null,type:"a",ref:void 0,constructor:void 0,key:void 0,props:{href:m.url,children:p}}}});Ha(d)}function s(c){const{pathname:d,hash:m}=new URL(c);return d.replace(/\.html$/,o.value.cleanUrls?"":".html")+m}return(c,d)=>(Cr(),Ar("div",Ua))}});export{Va as default}; diff --git a/assets/chunks/VPAlgoliaSearchBox.DA--5JLU.js b/assets/chunks/VPAlgoliaSearchBox.DA--5JLU.js new file mode 100644 index 0000000..bc408ae --- /dev/null +++ b/assets/chunks/VPAlgoliaSearchBox.DA--5JLU.js @@ -0,0 +1,17 @@ +import{d as mo,aj as po,M as vo,l as ho,y as yo,U as go,o as bo,c as _o}from"./framework.D5F7AbHZ.js";import{u as Oo}from"./theme.C-PiQMS2.js";/*! @docsearch/js 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */function lr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function I(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function se(t,e){return function(r){if(Array.isArray(r))return r}(t)||function(r,n){var o=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(o!=null){var i,a,c=[],u=!0,s=!1;try{for(o=o.call(r);!(u=(i=o.next()).done)&&(c.push(i.value),!n||c.length!==n);u=!0);}catch(l){s=!0,a=l}finally{try{u||o.return==null||o.return()}finally{if(s)throw a}}return c}}(t,e)||_n(t,e)||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 ft(t){return function(e){if(Array.isArray(e))return qt(e)}(t)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(t)||_n(t)||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 _n(t,e){if(t){if(typeof t=="string")return qt(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set"?Array.from(t):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?qt(t,e):void 0}}function qt(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r3)for(r=[r],i=3;i0?Ie(v.type,v.props,v.key,null,v.__v):v)!=null){if(v.__=r,v.__b=r.__b+1,(p=b[l])===null||p&&v.key==p.key&&v.type===p.type)b[l]=void 0;else for(m=0;m<_;m++){if((p=b[m])&&v.key==p.key&&v.type===p.type){b[m]=void 0;break}p=null}Yt(t,v,p=p||mt,o,i,a,c,u,s),d=v.__e,(m=v.ref)&&p.ref!=m&&(y||(y=[]),p.ref&&y.push(p.ref,null,v),y.push(m,v.__c||d,v)),d!=null?(h==null&&(h=d),typeof v.type=="function"&&v.__k!=null&&v.__k===p.__k?v.__d=u=Pn(v,u,t):u=In(t,v,p,b,d,u),s||r.type!=="option"?typeof r.type=="function"&&(r.__d=u):t.value=""):u&&p.__e==u&&u.parentNode!=t&&(u=Ke(p))}for(r.__e=h,l=_;l--;)b[l]!=null&&(typeof r.type=="function"&&b[l].__e!=null&&b[l].__e==r.__d&&(r.__d=Ke(n,l+1)),An(b[l],b[l]));if(y)for(l=0;l3)for(r=[r],i=3;i=r.__.length&&r.__.push({}),r.__[t]}function Gt(t){return pe=1,xn(Nn,t)}function xn(t,e,r){var n=Je(de++,2);return n.t=t,n.__c||(n.__=[r?r(e):Nn(void 0,e),function(o){var i=n.t(n.__[0],o);n.__[0]!==i&&(n.__=[i,n.__[1]],n.__c.setState({}))}],n.__c=L),n.__}function Xt(t,e){var r=Je(de++,3);!w.__s&&er(r.__H,e)&&(r.__=t,r.__H=e,L.__H.__h.push(r))}function _r(t,e){var r=Je(de++,4);!w.__s&&er(r.__H,e)&&(r.__=t,r.__H=e,L.__h.push(r))}function Pt(t,e){var r=Je(de++,7);return er(r.__H,e)&&(r.__=t(),r.__H=e,r.__h=t),r.__}function ko(){Ht.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(ut),t.__H.__h.forEach(Ut),t.__H.__h=[]}catch(e){t.__H.__h=[],w.__e(e,t.__v)}}),Ht=[]}w.__b=function(t){L=null,dr&&dr(t)},w.__r=function(t){hr&&hr(t),de=0;var e=(L=t.__c).__H;e&&(e.__h.forEach(ut),e.__h.forEach(Ut),e.__h=[])},w.diffed=function(t){yr&&yr(t);var e=t.__c;e&&e.__H&&e.__H.__h.length&&(Ht.push(e)!==1&&vr===w.requestAnimationFrame||((vr=w.requestAnimationFrame)||function(r){var n,o=function(){clearTimeout(i),Or&&cancelAnimationFrame(n),setTimeout(r)},i=setTimeout(o,100);Or&&(n=requestAnimationFrame(o))})(ko)),L=void 0},w.__c=function(t,e){e.some(function(r){try{r.__h.forEach(ut),r.__h=r.__h.filter(function(n){return!n.__||Ut(n)})}catch(n){e.some(function(o){o.__h&&(o.__h=[])}),e=[],w.__e(n,r.__v)}}),gr&&gr(t,e)},w.unmount=function(t){br&&br(t);var e=t.__c;if(e&&e.__H)try{e.__H.__.forEach(ut)}catch(r){w.__e(r,e.__v)}};var Or=typeof requestAnimationFrame=="function";function ut(t){var e=L;typeof t.__c=="function"&&t.__c(),L=e}function Ut(t){var e=L;t.__c=t.__(),L=e}function er(t,e){return!t||t.length!==e.length||e.some(function(r,n){return r!==t[n]})}function Nn(t,e){return typeof e=="function"?e(t):e}function Tn(t,e){for(var r in e)t[r]=e[r];return t}function Ft(t,e){for(var r in t)if(r!=="__source"&&!(r in e))return!0;for(var n in e)if(n!=="__source"&&t[n]!==e[n])return!0;return!1}function Bt(t){this.props=t}(Bt.prototype=new W).isPureReactComponent=!0,Bt.prototype.shouldComponentUpdate=function(t,e){return Ft(this.props,t)||Ft(this.state,e)};var Sr=w.__b;w.__b=function(t){t.type&&t.type.__f&&t.ref&&(t.props.ref=t.ref,t.ref=null),Sr&&Sr(t)};var Do=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911,wr=function(t,e){return t==null?null:$($(t).map(e))},Ao={map:wr,forEach:wr,count:function(t){return t?$(t).length:0},only:function(t){var e=$(t);if(e.length!==1)throw"Children.only";return e[0]},toArray:$},Co=w.__e;function ct(){this.__u=0,this.t=null,this.__b=null}function Rn(t){var e=t.__.__c;return e&&e.__e&&e.__e(t)}function je(){this.u=null,this.o=null}w.__e=function(t,e,r){if(t.then){for(var n,o=e;o=o.__;)if((n=o.__c)&&n.__c)return e.__e==null&&(e.__e=r.__e,e.__k=r.__k),n.__c(t,e)}Co(t,e,r)},(ct.prototype=new W).__c=function(t,e){var r=e.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var o=Rn(n.__v),i=!1,a=function(){i||(i=!0,r.componentWillUnmount=r.__c,o?o(c):c())};r.__c=r.componentWillUnmount,r.componentWillUnmount=function(){a(),r.__c&&r.__c()};var c=function(){if(!--n.__u){if(n.state.__e){var s=n.state.__e;n.__v.__k[0]=function m(p,v,d){return p&&(p.__v=null,p.__k=p.__k&&p.__k.map(function(h){return m(h,v,d)}),p.__c&&p.__c.__P===v&&(p.__e&&d.insertBefore(p.__e,p.__d),p.__c.__e=!0,p.__c.__P=d)),p}(s,s.__c.__P,s.__c.__O)}var l;for(n.setState({__e:n.__b=null});l=n.t.pop();)l.forceUpdate()}},u=e.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),t.then(a,a)},ct.prototype.componentWillUnmount=function(){this.t=[]},ct.prototype.render=function(t,e){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function i(a,c,u){return a&&(a.__c&&a.__c.__H&&(a.__c.__H.__.forEach(function(s){typeof s.__c=="function"&&s.__c()}),a.__c.__H=null),(a=Tn({},a)).__c!=null&&(a.__c.__P===u&&(a.__c.__P=c),a.__c=null),a.__k=a.__k&&a.__k.map(function(s){return i(s,c,u)})),a}(this.__b,r,n.__O=n.__P)}this.__b=null}var o=e.__e&&K(X,null,t.fallback);return o&&(o.__h=null),[K(X,null,e.__e?null:t.children),o]};var jr=function(t,e,r){if(++r[1]===r[0]&&t.o.delete(e),t.props.revealOrder&&(t.props.revealOrder[0]!=="t"||!t.o.size))for(r=t.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),e.i.removeChild(n)}}),We(K(xo,{context:e.context},t.__v),e.l)):e.l&&e.componentWillUnmount()}function Ln(t,e){return K(No,{__v:t,i:e})}(je.prototype=new W).__e=function(t){var e=this,r=Rn(e.__v),n=e.o.get(t);return n[0]++,function(o){var i=function(){e.props.revealOrder?(n.push(o),jr(e,t,n)):o()};r?r(i):i()}},je.prototype.render=function(t){this.u=null,this.o=new Map;var e=$(t.children);t.revealOrder&&t.revealOrder[0]==="b"&&e.reverse();for(var r=e.length;r--;)this.o.set(e[r],this.u=[1,0,this.u]);return t.children},je.prototype.componentDidUpdate=je.prototype.componentDidMount=function(){var t=this;this.o.forEach(function(e,r){jr(t,r,e)})};var qn=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,To=/^(?: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]/,Ro=function(t){return(typeof Symbol<"u"&&Ve(Symbol())=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(t)};function Mn(t,e,r){return e.__k==null&&(e.textContent=""),We(t,e),typeof r=="function"&&r(),t?t.__c:null}W.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(W.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Er=w.event;function Lo(){}function qo(){return this.cancelBubble}function Mo(){return this.defaultPrevented}w.event=function(t){return Er&&(t=Er(t)),t.persist=Lo,t.isPropagationStopped=qo,t.isDefaultPrevented=Mo,t.nativeEvent=t};var Hn,Pr={configurable:!0,get:function(){return this.class}},Ir=w.vnode;w.vnode=function(t){var e=t.type,r=t.props,n=r;if(typeof e=="string"){for(var o in n={},r){var i=r[o];o==="value"&&"defaultValue"in r&&i==null||(o==="defaultValue"&&"value"in r&&r.value==null?o="value":o==="download"&&i===!0?i="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+e)&&!Ro(r.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():To.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():i===null&&(i=void 0),n[o]=i)}e=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=$(r.children).forEach(function(a){a.props.selected=n.value.indexOf(a.props.value)!=-1})),e=="select"&&n.defaultValue!=null&&(n.value=$(r.children).forEach(function(a){a.props.selected=n.multiple?n.defaultValue.indexOf(a.props.value)!=-1:n.defaultValue==a.props.value})),t.props=n}e&&r.class!=r.className&&(Pr.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",Pr)),t.$$typeof=qn,Ir&&Ir(t)};var kr=w.__r;w.__r=function(t){kr&&kr(t),Hn=t.__c};var Ho={ReactCurrentDispatcher:{current:{readContext:function(t){return Hn.__n[t.__c].props.value}}}};(typeof performance>"u"?"undefined":Ve(performance))=="object"&&typeof performance.now=="function"&&performance.now.bind(performance);function Dr(t){return!!t&&t.$$typeof===qn}var f={useState:Gt,useReducer:xn,useEffect:Xt,useLayoutEffect:_r,useRef:function(t){return pe=5,Pt(function(){return{current:t}},[])},useImperativeHandle:function(t,e,r){pe=6,_r(function(){typeof t=="function"?t(e()):t&&(t.current=e())},r==null?r:r.concat(t))},useMemo:Pt,useCallback:function(t,e){return pe=8,Pt(function(){return t},e)},useContext:function(t){var e=L.context[t.__c],r=Je(de++,9);return r.__c=t,e?(r.__==null&&(r.__=!0,e.sub(L)),e.props.value):t.__},useDebugValue:function(t,e){w.useDebugValue&&w.useDebugValue(e?e(t):t)},version:"16.8.0",Children:Ao,render:Mn,hydrate:function(t,e,r){return Cn(t,e),typeof r=="function"&&r(),t?t.__c:null},unmountComponentAtNode:function(t){return!!t.__k&&(We(null,t),!0)},createPortal:Ln,createElement:K,createContext:function(t,e){var r={__c:e="__cC"+Sn++,__:t,Consumer:function(n,o){return n.children(o)},Provider:function(n){var o,i;return this.getChildContext||(o=[],(i={})[e]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(a){this.props.value!==a.value&&o.some(Mt)},this.sub=function(a){o.push(a);var c=a.componentWillUnmount;a.componentWillUnmount=function(){o.splice(o.indexOf(a),1),c&&c.call(a)}}),n.children}};return r.Provider.__=r.Consumer.contextType=r},createFactory:function(t){return K.bind(null,t)},cloneElement:function(t){return Dr(t)?Io.apply(null,arguments):t},createRef:function(){return{current:null}},Fragment:X,isValidElement:Dr,findDOMNode:function(t){return t&&(t.base||t.nodeType===1&&t)||null},Component:W,PureComponent:Bt,memo:function(t,e){function r(o){var i=this.props.ref,a=i==o.ref;return!a&&i&&(i.call?i(null):i.current=null),e?!e(this.props,o)||!a:Ft(this.props,o)}function n(o){return this.shouldComponentUpdate=r,K(t,o)}return n.displayName="Memo("+(t.displayName||t.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n},forwardRef:function(t){function e(r,n){var o=Tn({},r);return delete o.ref,t(o,(n=r.ref||n)&&(Ve(n)!="object"||"current"in n)?n:null)}return e.$$typeof=Do,e.render=e,e.prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(t.displayName||t.name)+")",e},unstable_batchedUpdates:function(t,e){return t(e)},StrictMode:X,Suspense:ct,SuspenseList:je,lazy:function(t){var e,r,n;function o(i){if(e||(e=t()).then(function(a){r=a.default||a},function(a){n=a}),n)throw n;if(!r)throw e;return K(r,i)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Ho};function Uo(){return f.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},f.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 Un(){return f.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20","aria-hidden":"true"},f.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 Fo=["translations"];function Vt(){return Vt=Object.assign||function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var Vo=f.forwardRef(function(t,e){var r=t.translations,n=r===void 0?{}:r,o=Bo(t,Fo),i=n.buttonText,a=i===void 0?"Search":i,c=n.buttonAriaLabel,u=c===void 0?"Search":c,s=Fn(Gt(null),2),l=s[0],m=s[1];return Xt(function(){typeof navigator<"u"&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?m("⌘"):m("Ctrl"))},[]),f.createElement("button",Vt({type:"button",className:"DocSearch DocSearch-Button","aria-label":u},o,{ref:e}),f.createElement("span",{className:"DocSearch-Button-Container"},f.createElement(Un,null),f.createElement("span",{className:"DocSearch-Button-Placeholder"},a)),f.createElement("span",{className:"DocSearch-Button-Keys"},l!==null&&f.createElement(f.Fragment,null,f.createElement(Cr,{reactsToKey:l==="Ctrl"?"Ctrl":"Meta"},l==="Ctrl"?f.createElement(Uo,null):l),f.createElement(Cr,{reactsToKey:"k"},"K"))))});function Cr(t){var e=t.reactsToKey,r=t.children,n=Fn(Gt(!1),2),o=n[0],i=n[1];return Xt(function(){if(e)return window.addEventListener("keydown",a),window.addEventListener("keyup",c),function(){window.removeEventListener("keydown",a),window.removeEventListener("keyup",c)};function a(u){u.key===e&&i(!0)}function c(u){u.key!==e&&u.key!=="Meta"||i(!1)}},[e]),f.createElement("kbd",{className:o?"DocSearch-Button-Key DocSearch-Button-Key--pressed":"DocSearch-Button-Key"},r)}function Bn(t,e){var r=void 0;return function(){for(var n=arguments.length,o=new Array(n),i=0;it.length)&&(e=t.length);for(var r=0,n=new Array(e);rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Rr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function ve(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:20,r=[],n=0;n=3||r===2&&n>=4||r===1&&n>=10);function i(a,c,u){if(o&&u!==void 0){var s=u[0].__autocomplete_algoliaCredentials,l={"X-Algolia-Application-Id":s.appId,"X-Algolia-API-Key":s.apiKey};t.apply(void 0,[a].concat(Ge(c),[{headers:l}]))}else t.apply(void 0,[a].concat(Ge(c)))}return{init:function(a,c){t("init",{appId:a,apiKey:c})},setUserToken:function(a){t("setUserToken",a)},clickedObjectIDsAfterSearch:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&i("clickedObjectIDsAfterSearch",Xe(c),c[0].items)},clickedObjectIDs:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&i("clickedObjectIDs",Xe(c),c[0].items)},clickedFilters:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&t.apply(void 0,["clickedFilters"].concat(c))},convertedObjectIDsAfterSearch:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&i("convertedObjectIDsAfterSearch",Xe(c),c[0].items)},convertedObjectIDs:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&i("convertedObjectIDs",Xe(c),c[0].items)},convertedFilters:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&t.apply(void 0,["convertedFilters"].concat(c))},viewedObjectIDs:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&c.reduce(function(s,l){var m=l.items,p=Kn(l,$o);return[].concat(Ge(s),Ge(Zo(ve(ve({},p),{},{objectIDs:(m==null?void 0:m.map(function(v){return v.objectID}))||p.objectIDs})).map(function(v){return{items:m,payload:v}})))},[]).forEach(function(s){var l=s.items;return i("viewedObjectIDs",[s.payload],l)})},viewedFilters:function(){for(var a=arguments.length,c=new Array(a),u=0;u0&&t.apply(void 0,["viewedFilters"].concat(c))}}}function Go(t){var e=t.items.reduce(function(r,n){var o;return r[n.__autocomplete_indexName]=((o=r[n.__autocomplete_indexName])!==null&&o!==void 0?o:[]).concat(n),r},{});return Object.keys(e).map(function(r){return{index:r,items:e[r],algoliaSource:["autocomplete"]}})}function kt(t){return t.objectID&&t.__autocomplete_indexName&&t.__autocomplete_queryID}function De(t){return De=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},De(t)}function ie(t){return function(e){if(Array.isArray(e))return Dt(e)}(t)||function(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}(t)||function(e,r){if(e){if(typeof e=="string")return Dt(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Dt(e,r)}}(t)||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 Dt(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&ti({onItemsChange:n,items:p,insights:c,state:m}))}},0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(l){var m=l.setContext,p=l.onSelect,v=l.onActive;a("addAlgoliaAgent","insights-plugin"),m({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:c}}),p(function(d){var h=d.item,y=d.state,b=d.event;kt(h)&&o({state:y,event:b,insights:c,item:h,insightsEvents:[G({eventName:"Item Selected"},Nr({item:h,items:u.current}))]})}),v(function(d){var h=d.item,y=d.state,b=d.event;kt(h)&&i({state:y,event:b,insights:c,item:h,insightsEvents:[G({eventName:"Item Active"},Nr({item:h,items:u.current}))]})})},onStateChange:function(l){var m=l.state;s({state:m})},__autocomplete_pluginOptions:t}}function lt(t,e){var r=e;return{then:function(n,o){return lt(t.then(et(n,r,t),et(o,r,t)),r)},catch:function(n){return lt(t.catch(et(n,r,t)),r)},finally:function(n){return n&&r.onCancelList.push(n),lt(t.finally(et(n&&function(){return r.onCancelList=[],n()},r,t)),r)},cancel:function(){r.isCanceled=!0;var n=r.onCancelList;r.onCancelList=[],n.forEach(function(o){o()})},isCanceled:function(){return r.isCanceled===!0}}}function qr(t){return lt(t,{isCanceled:!1,onCancelList:[]})}function et(t,e,r){return t?function(n){return e.isCanceled?n:t(n)}:r}function Mr(t,e,r,n){if(!r)return null;if(t<0&&(e===null||n!==null&&e===0))return r+t;var o=(e===null?-1:e)+t;return o<=-1||o>=r?n===null?null:0:o}function Hr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function Ur(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r0},reshape:function(i){return i.sources}},t),{},{id:(r=t.id)!==null&&r!==void 0?r:"autocomplete-".concat(Ko++),plugins:o,initialState:ae({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},t.initialState),onStateChange:function(i){var a;(a=t.onStateChange)===null||a===void 0||a.call(t,i),o.forEach(function(c){var u;return(u=c.onStateChange)===null||u===void 0?void 0:u.call(c,i)})},onSubmit:function(i){var a;(a=t.onSubmit)===null||a===void 0||a.call(t,i),o.forEach(function(c){var u;return(u=c.onSubmit)===null||u===void 0?void 0:u.call(c,i)})},onReset:function(i){var a;(a=t.onReset)===null||a===void 0||a.call(t,i),o.forEach(function(c){var u;return(u=c.onReset)===null||u===void 0?void 0:u.call(c,i)})},getSources:function(i){return Promise.all([].concat(ci(o.map(function(a){return a.getSources})),[t.getSources]).filter(Boolean).map(function(a){return function(c,u){var s=[];return Promise.resolve(c(u)).then(function(l){return Promise.all(l.filter(function(m){return!!m}).map(function(m){if(m.sourceId,s.includes(m.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(m.sourceId)," is not unique."));s.push(m.sourceId);var p={getItemInputValue:function(d){return d.state.query},getItemUrl:function(){},onSelect:function(d){(0,d.setIsOpen)(!1)},onActive:vt,onResolve:vt};Object.keys(p).forEach(function(d){p[d].__default=!0});var v=Ur(Ur({},p),m);return Promise.resolve(v)}))})}(a,i)})).then(function(a){return ze(a)}).then(function(a){return a.map(function(c){return ae(ae({},c),{},{onSelect:function(u){c.onSelect(u),e.forEach(function(s){var l;return(l=s.onSelect)===null||l===void 0?void 0:l.call(s,u)})},onActive:function(u){c.onActive(u),e.forEach(function(s){var l;return(l=s.onActive)===null||l===void 0?void 0:l.call(s,u)})},onResolve:function(u){c.onResolve(u),e.forEach(function(s){var l;return(l=s.onResolve)===null||l===void 0?void 0:l.call(s,u)})}})})})},navigator:ae({navigate:function(i){var a=i.itemUrl;n.location.assign(a)},navigateNewTab:function(i){var a=i.itemUrl,c=n.open(a,"_blank","noopener");c==null||c.focus()},navigateNewWindow:function(i){var a=i.itemUrl;n.open(a,"_blank","noopener")}},t.navigator)})}function Te(t){return Te=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Te(t)}function Kr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function rt(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var Jr,xt,ot,we=null,$r=(Jr=-1,xt=-1,ot=void 0,function(t){var e=++Jr;return Promise.resolve(t).then(function(r){return ot&&e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Me(t){return Me=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Me(t)}var Oi=["props","refresh","store"],Si=["inputElement","formElement","panelElement"],wi=["inputElement"],ji=["inputElement","maxLength"],Ei=["sourceIndex"],Pi=["sourceIndex"],Ii=["item","source","sourceIndex"];function Zr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function R(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Di(t){var e=t.props,r=t.refresh,n=t.store,o=re(t,Oi),i=function(a,c){return c!==void 0?"".concat(a,"-").concat(c):a};return{getEnvironmentProps:function(a){var c=a.inputElement,u=a.formElement,s=a.panelElement;function l(m){!n.getState().isOpen&&n.pendingRequests.isEmpty()||m.target===c||[u,s].some(function(p){return v=p,d=m.target,v===d||v.contains(d);var v,d})===!1&&(n.dispatch("blur",null),e.debug||n.pendingRequests.cancelAll())}return R({onTouchStart:l,onMouseDown:l,onTouchMove:function(m){n.getState().isOpen!==!1&&c===e.environment.document.activeElement&&m.target!==c&&c.blur()}},re(a,Si))},getRootProps:function(a){return R({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(e.id,"-list"):void 0,"aria-labelledby":"".concat(e.id,"-label")},a)},getFormProps:function(a){return a.inputElement,R({action:"",noValidate:!0,role:"search",onSubmit:function(c){var u;c.preventDefault(),e.onSubmit(R({event:c,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),(u=a.inputElement)===null||u===void 0||u.blur()},onReset:function(c){var u;c.preventDefault(),e.onReset(R({event:c,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),(u=a.inputElement)===null||u===void 0||u.focus()}},re(a,wi))},getLabelProps:function(a){var c=a||{},u=c.sourceIndex,s=re(c,Ei);return R({htmlFor:"".concat(i(e.id,u),"-input"),id:"".concat(i(e.id,u),"-label")},s)},getInputProps:function(a){var c;function u(y){(e.openOnFocus||n.getState().query)&&le(R({event:y,props:e,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var s=a||{},l=(s.inputElement,s.maxLength),m=l===void 0?512:l,p=re(s,ji),v=fe(n.getState()),d=function(y){return!!(y&&y.match(oi))}(((c=e.environment.navigator)===null||c===void 0?void 0:c.userAgent)||""),h=v!=null&&v.itemUrl&&!d?"go":"search";return R({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&n.getState().activeItemId!==null?"".concat(e.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(e.id,"-list"):void 0,"aria-labelledby":"".concat(e.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(e.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:h,spellCheck:"false",autoFocus:e.autoFocus,placeholder:e.placeholder,maxLength:m,type:"search",onChange:function(y){le(R({event:y,props:e,query:y.currentTarget.value.slice(0,m),refresh:r,store:n},o))},onKeyDown:function(y){(function(b){var _=b.event,S=b.props,O=b.refresh,g=b.store,P=_i(b,gi);if(_.key==="ArrowUp"||_.key==="ArrowDown"){var C=function(){var M=S.environment.document.getElementById("".concat(S.id,"-item-").concat(g.getState().activeItemId));M&&(M.scrollIntoViewIfNeeded?M.scrollIntoViewIfNeeded(!1):M.scrollIntoView(!1))},q=function(){var M=fe(g.getState());if(g.getState().activeItemId!==null&&M){var Ot=M.item,St=M.itemInputValue,$e=M.itemUrl,B=M.source;B.onActive(te({event:_,item:Ot,itemInputValue:St,itemUrl:$e,refresh:O,source:B,state:g.getState()},P))}};_.preventDefault(),g.getState().isOpen===!1&&(S.openOnFocus||g.getState().query)?le(te({event:_,props:S,query:g.getState().query,refresh:O,store:g},P)).then(function(){g.dispatch(_.key,{nextActiveItemId:S.defaultActiveItemId}),q(),setTimeout(C,0)}):(g.dispatch(_.key,{}),q(),C())}else if(_.key==="Escape")_.preventDefault(),g.dispatch(_.key,null),g.pendingRequests.cancelAll();else if(_.key==="Tab")g.dispatch("blur",null),g.pendingRequests.cancelAll();else if(_.key==="Enter"){if(g.getState().activeItemId===null||g.getState().collections.every(function(M){return M.items.length===0}))return void(S.debug||g.pendingRequests.cancelAll());_.preventDefault();var x=fe(g.getState()),D=x.item,N=x.itemInputValue,U=x.itemUrl,F=x.source;if(_.metaKey||_.ctrlKey)U!==void 0&&(F.onSelect(te({event:_,item:D,itemInputValue:N,itemUrl:U,refresh:O,source:F,state:g.getState()},P)),S.navigator.navigateNewTab({itemUrl:U,item:D,state:g.getState()}));else if(_.shiftKey)U!==void 0&&(F.onSelect(te({event:_,item:D,itemInputValue:N,itemUrl:U,refresh:O,source:F,state:g.getState()},P)),S.navigator.navigateNewWindow({itemUrl:U,item:D,state:g.getState()}));else if(!_.altKey){if(U!==void 0)return F.onSelect(te({event:_,item:D,itemInputValue:N,itemUrl:U,refresh:O,source:F,state:g.getState()},P)),void S.navigator.navigate({itemUrl:U,item:D,state:g.getState()});le(te({event:_,nextState:{isOpen:!1},props:S,query:N,refresh:O,store:g},P)).then(function(){F.onSelect(te({event:_,item:D,itemInputValue:N,itemUrl:U,refresh:O,source:F,state:g.getState()},P))})}}})(R({event:y,props:e,refresh:r,store:n},o))},onFocus:u,onBlur:vt,onClick:function(y){a.inputElement!==e.environment.document.activeElement||n.getState().isOpen||u(y)}},p)},getPanelProps:function(a){return R({onMouseDown:function(c){c.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},a)},getListProps:function(a){var c=a||{},u=c.sourceIndex,s=re(c,Pi);return R({role:"listbox","aria-labelledby":"".concat(i(e.id,u),"-label"),id:"".concat(i(e.id,u),"-list")},s)},getItemProps:function(a){var c=a.item,u=a.source,s=a.sourceIndex,l=re(a,Ii);return R({id:"".concat(i(e.id,s),"-item-").concat(c.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===c.__autocomplete_id,onMouseMove:function(m){if(c.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",c.__autocomplete_id);var p=fe(n.getState());if(n.getState().activeItemId!==null&&p){var v=p.item,d=p.itemInputValue,h=p.itemUrl,y=p.source;y.onActive(R({event:m,item:v,itemInputValue:d,itemUrl:h,refresh:r,source:y,state:n.getState()},o))}}},onMouseDown:function(m){m.preventDefault()},onClick:function(m){var p=u.getItemInputValue({item:c,state:n.getState()}),v=u.getItemUrl({item:c,state:n.getState()});(v?Promise.resolve():le(R({event:m,nextState:{isOpen:!1},props:e,query:p,refresh:r,store:n},o))).then(function(){u.onSelect(R({event:m,item:c,itemInputValue:p,itemUrl:v,refresh:r,source:u,state:n.getState()},o))})}},l)}}}function He(t){return He=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},He(t)}function Yr(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function Ai(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function Gi(t){var e=t.translations,r=e===void 0?{}:e,n=Yi(t,Qi),o=r.noResultsText,i=o===void 0?"No results for":o,a=r.suggestedQueryText,c=a===void 0?"Try searching for":a,u=r.reportMissingResultsText,s=u===void 0?"Believe this query should return results?":u,l=r.reportMissingResultsLinkText,m=l===void 0?"Let us know.":l,p=n.state.context.searchSuggestions;return f.createElement("div",{className:"DocSearch-NoResults"},f.createElement("div",{className:"DocSearch-Screen-Icon"},f.createElement(Ji,null)),f.createElement("p",{className:"DocSearch-Title"},i,' "',f.createElement("strong",null,n.state.query),'"'),p&&p.length>0&&f.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},f.createElement("p",{className:"DocSearch-Help"},c,":"),f.createElement("ul",null,p.slice(0,3).reduce(function(v,d){return[].concat(Zi(v),[f.createElement("li",{key:d},f.createElement("button",{className:"DocSearch-Prefill",key:d,type:"button",onClick:function(){n.setQuery(d.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},d))])},[]))),n.getMissingResultsUrl&&f.createElement("p",{className:"DocSearch-Help"},"".concat(s," "),f.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},m)))}var Xi=["hit","attribute","tagName"];function rn(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,n)}return r}function nn(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function on(t,e){return e.split(".").reduce(function(r,n){return r!=null&&r[n]?r[n]:null},t)}function ce(t){var e=t.hit,r=t.attribute,n=t.tagName;return K(n===void 0?"span":n,nn(nn({},ta(t,Xi)),{},{dangerouslySetInnerHTML:{__html:on(e,"_snippetResult.".concat(r,".value"))||on(e,r)}}))}function an(t,e){return function(r){if(Array.isArray(r))return r}(t)||function(r,n){var o=r==null?null:typeof Symbol<"u"&&r[Symbol.iterator]||r["@@iterator"];if(o!=null){var i,a,c=[],u=!0,s=!1;try{for(o=o.call(r);!(u=(i=o.next()).done)&&(c.push(i.value),!n||c.length!==n);u=!0);}catch(l){s=!0,a=l}finally{try{u||o.return==null||o.return()}finally{if(s)throw a}}return c}}(t,e)||function(r,n){if(r){if(typeof r=="string")return un(r,n);var o=Object.prototype.toString.call(r).slice(8,-1);if(o==="Object"&&r.constructor&&(o=r.constructor.name),o==="Map"||o==="Set")return Array.from(r);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return un(r,n)}}(t,e)||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 un(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r|<\/mark>)/g,oa=RegExp($n.source);function Qn(t){var e,r,n=t;if(!n.__docsearch_parent&&!t._highlightResult)return t.hierarchy.lvl0;var o=((n.__docsearch_parent?(e=n.__docsearch_parent)===null||e===void 0||(e=e._highlightResult)===null||e===void 0||(e=e.hierarchy)===null||e===void 0?void 0:e.lvl0:(r=t._highlightResult)===null||r===void 0||(r=r.hierarchy)===null||r===void 0?void 0:r.lvl0)||{}).value;return o&&oa.test(o)?o.replace($n,""):o}function Jt(){return Jt=Object.assign||function(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function ca(t){var e=t.translations,r=e===void 0?{}:e,n=ua(t,aa),o=r.recentSearchesTitle,i=o===void 0?"Recent":o,a=r.noRecentSearchesText,c=a===void 0?"No recent searches":a,u=r.saveRecentSearchButtonTitle,s=u===void 0?"Save this search":u,l=r.removeRecentSearchButtonTitle,m=l===void 0?"Remove this search from history":l,p=r.favoriteSearchesTitle,v=p===void 0?"Favorite":p,d=r.removeFavoriteSearchButtonTitle,h=d===void 0?"Remove this search from favorites":d;return n.state.status==="idle"&&n.hasCollections===!1?n.disableUserPersonalization?null:f.createElement("div",{className:"DocSearch-StartScreen"},f.createElement("p",{className:"DocSearch-Help"},c)):n.hasCollections===!1?null:f.createElement("div",{className:"DocSearch-Dropdown-Container"},f.createElement(zt,ht({},n,{title:i,collection:n.state.collections[0],renderIcon:function(){return f.createElement("div",{className:"DocSearch-Hit-icon"},f.createElement(Ui,null))},renderAction:function(y){var b=y.item,_=y.runFavoriteTransition,S=y.runDeleteTransition;return f.createElement(f.Fragment,null,f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:s,type:"submit",onClick:function(O){O.preventDefault(),O.stopPropagation(),_(function(){n.favoriteSearches.add(b),n.recentSearches.remove(b),n.refresh()})}},f.createElement(tn,null))),f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:m,type:"submit",onClick:function(O){O.preventDefault(),O.stopPropagation(),S(function(){n.recentSearches.remove(b),n.refresh()})}},f.createElement(Wt,null))))}})),f.createElement(zt,ht({},n,{title:v,collection:n.state.collections[1],renderIcon:function(){return f.createElement("div",{className:"DocSearch-Hit-icon"},f.createElement(tn,null))},renderAction:function(y){var b=y.item,_=y.runDeleteTransition;return f.createElement("div",{className:"DocSearch-Hit-action"},f.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(S){S.preventDefault(),S.stopPropagation(),_(function(){n.favoriteSearches.remove(b),n.refresh()})}},f.createElement(Wt,null)))}})))}var la=["translations"];function yt(){return yt=Object.assign||function(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var fa=f.memo(function(t){var e=t.translations,r=e===void 0?{}:e,n=sa(t,la);if(n.state.status==="error")return f.createElement($i,{translations:r==null?void 0:r.errorScreen});var o=n.state.collections.some(function(i){return i.items.length>0});return n.state.query?o===!1?f.createElement(Gi,yt({},n,{translations:r==null?void 0:r.noResultsScreen})):f.createElement(ia,n):f.createElement(ca,yt({},n,{hasCollections:o,translations:r==null?void 0:r.startScreen}))},function(t,e){return e.state.status==="loading"||e.state.status==="stalled"}),ma=["translations"];function gt(){return gt=Object.assign||function(t){for(var e=1;e=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function va(t){var e=t.translations,r=e===void 0?{}:e,n=pa(t,ma),o=r.resetButtonTitle,i=o===void 0?"Clear the query":o,a=r.resetButtonAriaLabel,c=a===void 0?"Clear the query":a,u=r.cancelButtonText,s=u===void 0?"Cancel":u,l=r.cancelButtonAriaLabel,m=l===void 0?"Cancel":l,p=r.searchInputLabel,v=p===void 0?"Search":p,d=n.getFormProps({inputElement:n.inputRef.current}).onReset;return f.useEffect(function(){n.autoFocus&&n.inputRef.current&&n.inputRef.current.focus()},[n.autoFocus,n.inputRef]),f.useEffect(function(){n.isFromSelection&&n.inputRef.current&&n.inputRef.current.select()},[n.isFromSelection,n.inputRef]),f.createElement(f.Fragment,null,f.createElement("form",{className:"DocSearch-Form",onSubmit:function(h){h.preventDefault()},onReset:d},f.createElement("label",gt({className:"DocSearch-MagnifierLabel"},n.getLabelProps()),f.createElement(Un,null),f.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},v)),f.createElement("div",{className:"DocSearch-LoadingIndicator"},f.createElement(Hi,null)),f.createElement("input",gt({className:"DocSearch-Input",ref:n.inputRef},n.getInputProps({inputElement:n.inputRef.current,autoFocus:n.autoFocus,maxLength:64}))),f.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":c,hidden:!n.state.query},f.createElement(Wt,null))),f.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":m,onClick:n.onClose},s))}var da=["_highlightResult","_snippetResult"];function ha(t,e){if(t==null)return{};var r,n,o=function(a,c){if(a==null)return{};var u,s,l={},m=Object.keys(a);for(s=0;s=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function ya(t){return function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch{return!1}}()===!1?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(e){return window.localStorage.setItem(t,JSON.stringify(e))},getItem:function(){var e=window.localStorage.getItem(t);return e?JSON.parse(e):[]}}}function sn(t){var e=t.key,r=t.limit,n=r===void 0?5:r,o=ya(e),i=o.getItem().slice(0,n);return{add:function(a){var c=a,u=(c._highlightResult,c._snippetResult,ha(c,da)),s=i.findIndex(function(l){return l.objectID===u.objectID});s>-1&&i.splice(s,1),i.unshift(u),i=i.slice(0,n),o.setItem(i)},remove:function(a){i=i.filter(function(c){return c.objectID!==a.objectID}),o.setItem(i)},getAll:function(){return i}}}var ga=["facetName","facetQuery"];function ba(t){var e,r="algoliasearch-client-js-".concat(t.key),n=function(){return e===void 0&&(e=t.localStorage||window.localStorage),e},o=function(){return JSON.parse(n().getItem(r)||"{}")},i=function(c){n().setItem(r,JSON.stringify(c))},a=function(){var c=t.timeToLive?1e3*t.timeToLive:null,u=o(),s=Object.fromEntries(Object.entries(u).filter(function(m){return se(m,2)[1].timestamp!==void 0}));if(i(s),c){var l=Object.fromEntries(Object.entries(s).filter(function(m){var p=se(m,2)[1],v=new Date().getTime();return!(p.timestamp+c2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then(function(){a();var l=JSON.stringify(c);return o()[l]}).then(function(l){return Promise.all([l?l.value:u(),l!==void 0])}).then(function(l){var m=se(l,2),p=m[0],v=m[1];return Promise.all([p,v||s.miss(p)])}).then(function(l){return se(l,1)[0]})},set:function(c,u){return Promise.resolve().then(function(){var s=o();return s[JSON.stringify(c)]={timestamp:new Date().getTime(),value:u},n().setItem(r,JSON.stringify(s)),u})},delete:function(c){return Promise.resolve().then(function(){var u=o();delete u[JSON.stringify(c)],n().setItem(r,JSON.stringify(u))})},clear:function(){return Promise.resolve().then(function(){n().removeItem(r)})}}}function Ee(t){var e=ft(t.caches),r=e.shift();return r===void 0?{get:function(n,o){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return o().then(function(a){return Promise.all([a,i.miss(a)])}).then(function(a){return se(a,1)[0]})},set:function(n,o){return Promise.resolve(o)},delete:function(n){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(n,o){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(n,o,i).catch(function(){return Ee({caches:e}).get(n,o,i)})},set:function(n,o){return r.set(n,o).catch(function(){return Ee({caches:e}).set(n,o)})},delete:function(n){return r.delete(n).catch(function(){return Ee({caches:e}).delete(n)})},clear:function(){return r.clear().catch(function(){return Ee({caches:e}).clear()})}}}function Tt(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{serializable:!0},e={};return{get:function(r,n){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{miss:function(){return Promise.resolve()}},i=JSON.stringify(r);if(i in e)return Promise.resolve(t.serializable?JSON.parse(e[i]):e[i]);var a=n(),c=o&&o.miss||function(){return Promise.resolve()};return a.then(function(u){return c(u)}).then(function(){return a})},set:function(r,n){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear:function(){return e={},Promise.resolve()}}}function _a(t){for(var e=t.length-1;e>0;e--){var r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}function Zn(t,e){return e&&Object.keys(e).forEach(function(r){t[r]=e[r](t)}),t}function bt(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n0?n:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var me={Read:1,Write:2,Any:3},Yn=1,Oa=2,Gn=3;function Xn(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Yn;return I(I({},t),{},{status:e,lastUpdate:Date.now()})}function eo(t){return typeof t=="string"?{protocol:"https",url:t,accept:me.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||me.Any}}var $t="GET",_t="POST";function Sa(t,e){return Promise.all(e.map(function(r){return t.get(r,function(){return Promise.resolve(Xn(r))})})).then(function(r){var n=r.filter(function(a){return function(c){return c.status===Yn||Date.now()-c.lastUpdate>12e4}(a)}),o=r.filter(function(a){return function(c){return c.status===Gn&&Date.now()-c.lastUpdate<=12e4}(a)}),i=[].concat(ft(n),ft(o));return{getTimeout:function(a,c){return(o.length===0&&a===0?1:o.length+3+a)*c},statelessHosts:i.length>0?i.map(function(a){return eo(a)}):e}})}function mn(t,e,r,n){var o=[],i=function(p,v){if(!(p.method===$t||p.data===void 0&&v.data===void 0)){var d=Array.isArray(p.data)?p.data:I(I({},p.data),v.data);return JSON.stringify(d)}}(r,n),a=function(p,v){var d=I(I({},p.headers),v.headers),h={};return Object.keys(d).forEach(function(y){var b=d[y];h[y.toLowerCase()]=b}),h}(t,n),c=r.method,u=r.method!==$t?{}:I(I({},r.data),n.data),s=I(I(I({"x-algolia-agent":t.userAgent.value},t.queryParameters),u),n.queryParameters),l=0,m=function p(v,d){var h=v.pop();if(h===void 0)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:pn(o)};var y={data:i,headers:a,method:c,url:ja(h,r.path,s),connectTimeout:d(l,t.timeouts.connect),responseTimeout:d(l,n.timeout)},b=function(S){var O={request:y,response:S,host:h,triesLeft:v.length};return o.push(O),O},_={onSuccess:function(S){return function(O){try{return JSON.parse(O.content)}catch(g){throw function(P,C){return{name:"DeserializationError",message:P,response:C}}(g.message,O)}}(S)},onRetry:function(S){var O=b(S);return S.isTimedOut&&l++,Promise.all([t.logger.info("Retryable failure",ro(O)),t.hostsCache.set(h,Xn(h,S.isTimedOut?Gn:Oa))]).then(function(){return p(v,d)})},onFail:function(S){throw b(S),function(O,g){var P=O.content,C=O.status,q=P;try{q=JSON.parse(P).message}catch{}return function(x,D,N){return{name:"ApiError",message:x,status:D,transporterStackTrace:N}}(q,C,g)}(S,pn(o))}};return t.requester.send(y).then(function(S){return function(O,g){return function(P){var C=P.status;return P.isTimedOut||function(q){var x=q.isTimedOut,D=q.status;return!x&&~~D==0}(P)||~~(C/100)!=2&&~~(C/100)!=4}(O)?g.onRetry(O):~~(O.status/100)==2?g.onSuccess(O):g.onFail(O)}(S,_)})};return Sa(t.hostsCache,e).then(function(p){return m(ft(p.statelessHosts).reverse(),p.getTimeout)})}function wa(t){var e={value:"Algolia for JavaScript (".concat(t,")"),add:function(r){var n="; ".concat(r.segment).concat(r.version!==void 0?" (".concat(r.version,")"):"");return e.value.indexOf(n)===-1&&(e.value="".concat(e.value).concat(n)),e}};return e}function ja(t,e,r){var n=to(r),o="".concat(t.protocol,"://").concat(t.url,"/").concat(e.charAt(0)==="/"?e.substr(1):e);return n.length&&(o+="?".concat(n)),o}function to(t){return Object.keys(t).map(function(e){return bt("%s=%s",e,(r=t[e],Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]"?JSON.stringify(t[e]):t[e]));var r}).join("&")}function pn(t){return t.map(function(e){return ro(e)})}function ro(t){var e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return I(I({},t),{},{request:I(I({},t.request),{},{headers:I(I({},t.request.headers),e)})})}var Ea=function(t){var e=t.appId,r=function(i,a,c){var u={"x-algolia-api-key":c,"x-algolia-application-id":a};return{headers:function(){return i===st.WithinHeaders?u:{}},queryParameters:function(){return i===st.WithinQueryParameters?u:{}}}}(t.authMode!==void 0?t.authMode:st.WithinHeaders,e,t.apiKey),n=function(i){var a=i.hostsCache,c=i.logger,u=i.requester,s=i.requestsCache,l=i.responsesCache,m=i.timeouts,p=i.userAgent,v=i.hosts,d=i.queryParameters,h={hostsCache:a,logger:c,requester:u,requestsCache:s,responsesCache:l,timeouts:m,userAgent:p,headers:i.headers,queryParameters:d,hosts:v.map(function(y){return eo(y)}),read:function(y,b){var _=fn(b,h.timeouts.read),S=function(){return mn(h,h.hosts.filter(function(g){return(g.accept&me.Read)!=0}),y,_)};if((_.cacheable!==void 0?_.cacheable:y.cacheable)!==!0)return S();var O={request:y,mappedRequestOptions:_,transporter:{queryParameters:h.queryParameters,headers:h.headers}};return h.responsesCache.get(O,function(){return h.requestsCache.get(O,function(){return h.requestsCache.set(O,S()).then(function(g){return Promise.all([h.requestsCache.delete(O),g])},function(g){return Promise.all([h.requestsCache.delete(O),Promise.reject(g)])}).then(function(g){var P=se(g,2);return P[0],P[1]})})},{miss:function(g){return h.responsesCache.set(O,g)}})},write:function(y,b){return mn(h,h.hosts.filter(function(_){return(_.accept&me.Write)!=0}),y,fn(b,h.timeouts.write))}};return h}(I(I({hosts:[{url:"".concat(e,"-dsn.algolia.net"),accept:me.Read},{url:"".concat(e,".algolia.net"),accept:me.Write}].concat(_a([{url:"".concat(e,"-1.algolianet.com")},{url:"".concat(e,"-2.algolianet.com")},{url:"".concat(e,"-3.algolianet.com")}]))},t),{},{headers:I(I(I({},r.headers()),{"content-type":"application/x-www-form-urlencoded"}),t.headers),queryParameters:I(I({},r.queryParameters()),t.queryParameters)})),o={transporter:n,appId:e,addAlgoliaAgent:function(i,a){n.userAgent.add({segment:i,version:a})},clearCache:function(){return Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then(function(){})}};return Zn(o,t.methods)},Pa=function(t){return function(e,r){return e.method===$t?t.transporter.read(e,r):t.transporter.write(e,r)}},no=function(t){return function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n={transporter:t.transporter,appId:t.appId,indexName:e};return Zn(n,r.methods)}},vn=function(t){return function(e,r){var n=e.map(function(o){return I(I({},o),{},{params:to(o.params||{})})});return t.transporter.read({method:_t,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)}},dn=function(t){return function(e,r){return Promise.all(e.map(function(n){var o=n.params,i=o.facetName,a=o.facetQuery,c=wo(o,ga);return no(t)(n.indexName,{methods:{searchForFacetValues:oo}}).searchForFacetValues(i,a,I(I({},r),c))}))}},Ia=function(t){return function(e,r,n){return t.transporter.read({method:_t,path:bt("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},n)}},ka=function(t){return function(e,r){return t.transporter.read({method:_t,path:bt("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r)}},oo=function(t){return function(e,r,n){return t.transporter.read({method:_t,path:bt("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},n)}},Da=1,Aa=2,Ca=3;function io(t,e,r){var n,o={appId:t,apiKey:e,timeouts:{connect:1,read:2,write:30},requester:{send:function(i){return new Promise(function(a){var c=new XMLHttpRequest;c.open(i.method,i.url,!0),Object.keys(i.headers).forEach(function(m){return c.setRequestHeader(m,i.headers[m])});var u,s=function(m,p){return setTimeout(function(){c.abort(),a({status:0,content:p,isTimedOut:!0})},1e3*m)},l=s(i.connectTimeout,"Connection timeout");c.onreadystatechange=function(){c.readyState>c.OPENED&&u===void 0&&(clearTimeout(l),u=s(i.responseTimeout,"Socket timeout"))},c.onerror=function(){c.status===0&&(clearTimeout(l),clearTimeout(u),a({content:c.responseText||"Network request failed",status:c.status,isTimedOut:!1}))},c.onload=function(){clearTimeout(l),clearTimeout(u),a({content:c.responseText,status:c.status,isTimedOut:!1})},c.send(i.data)})}},logger:(n=Ca,{debug:function(i,a){return Da>=n&&console.debug(i,a),Promise.resolve()},info:function(i,a){return Aa>=n&&console.info(i,a),Promise.resolve()},error:function(i,a){return console.error(i,a),Promise.resolve()}}),responsesCache:Tt(),requestsCache:Tt({serializable:!1}),hostsCache:Ee({caches:[ba({key:"".concat("4.19.1","-").concat(t)}),Tt()]}),userAgent:wa("4.19.1").add({segment:"Browser",version:"lite"}),authMode:st.WithinQueryParameters};return Ea(I(I(I({},o),r),{},{methods:{search:vn,searchForFacetValues:dn,multipleQueries:vn,multipleSearchForFacetValues:dn,customRequest:Pa,initIndex:function(i){return function(a){return no(i)(a,{methods:{search:ka,searchForFacetValues:oo,findAnswers:Ia}})}}}}))}io.version="4.19.1";var xa=["footer","searchBox"];function Be(){return Be=Object.assign||function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||(l[u]=a[u]);return l}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function La(t){var e=t.appId,r=t.apiKey,n=t.indexName,o=t.placeholder,i=o===void 0?"Search docs":o,a=t.searchParameters,c=t.maxResultsPerGroup,u=t.onClose,s=u===void 0?na:u,l=t.transformItems,m=l===void 0?ln:l,p=t.hitComponent,v=p===void 0?Mi:p,d=t.resultsFooterComponent,h=d===void 0?function(){return null}:d,y=t.navigator,b=t.initialScrollY,_=b===void 0?0:b,S=t.transformSearchClient,O=S===void 0?ln:S,g=t.disableUserPersonalization,P=g!==void 0&&g,C=t.initialQuery,q=C===void 0?"":C,x=t.translations,D=x===void 0?{}:x,N=t.getMissingResultsUrl,U=t.insights,F=U!==void 0&&U,M=D.footer,Ot=D.searchBox,St=Ra(D,xa),$e=Ta(f.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),B=$e[0],ao=$e[1],tr=f.useRef(null),wt=f.useRef(null),rr=f.useRef(null),Qe=f.useRef(null),he=f.useRef(null),Q=f.useRef(10),nr=f.useRef(typeof window<"u"?window.getSelection().toString().slice(0,64):"").current,ee=f.useRef(q||nr).current,or=function(j,k,T){return f.useMemo(function(){var H=io(j,k);return H.addAlgoliaAgent("docsearch","3.6.0"),/docsearch.js \(.*\)/.test(H.transporter.userAgent.value)===!1&&H.addAlgoliaAgent("docsearch-react","3.6.0"),T(H)},[j,k,T])}(e,r,O),oe=f.useRef(sn({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(n),limit:10})).current,ye=f.useRef(sn({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(n),limit:oe.getAll().length===0?7:4})).current,ge=f.useCallback(function(j){if(!P){var k=j.type==="content"?j.__docsearch_parent:j;k&&oe.getAll().findIndex(function(T){return T.objectID===k.objectID})===-1&&ye.add(k)}},[oe,ye,P]),uo=f.useCallback(function(j){if(B.context.algoliaInsightsPlugin&&j.__autocomplete_id){var k=j,T={eventName:"Item Selected",index:k.__autocomplete_indexName,items:[k],positions:[j.__autocomplete_id],queryID:k.__autocomplete_queryID};B.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(T)}},[B.context.algoliaInsightsPlugin]),be=f.useMemo(function(){return Ri({id:"docsearch",defaultActiveItemId:0,placeholder:i,openOnFocus:!0,initialState:{query:ee,context:{searchSuggestions:[]}},insights:F,navigator:y,onStateChange:function(j){ao(j.state)},getSources:function(j){var k=j.query,T=j.state,H=j.setContext,Z=j.setStatus;if(!k)return P?[]:[{sourceId:"recentSearches",onSelect:function(A){var V=A.item,_e=A.event;ge(V),at(_e)||s()},getItemUrl:function(A){return A.item.url},getItems:function(){return ye.getAll()}},{sourceId:"favoriteSearches",onSelect:function(A){var V=A.item,_e=A.event;ge(V),at(_e)||s()},getItemUrl:function(A){return A.item.url},getItems:function(){return oe.getAll()}}];var Y=!!F;return or.search([{query:k,indexName:n,params:Rt({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(Q.current),"hierarchy.lvl2:".concat(Q.current),"hierarchy.lvl3:".concat(Q.current),"hierarchy.lvl4:".concat(Q.current),"hierarchy.lvl5:".concat(Q.current),"hierarchy.lvl6:".concat(Q.current),"content:".concat(Q.current)],snippetEllipsisText:"…",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20,clickAnalytics:Y},a)}]).catch(function(A){throw A.name==="RetryError"&&Z("error"),A}).then(function(A){var V=A.results[0],_e=V.hits,so=V.nbHits,jt=cn(_e,function(Et){return Qn(Et)},c);T.context.searchSuggestions.length0&&(ir(),he.current&&he.current.focus())},[ee,ir]),f.useEffect(function(){function j(){if(wt.current){var k=.01*window.innerHeight;wt.current.style.setProperty("--docsearch-vh","".concat(k,"px"))}}return j(),window.addEventListener("resize",j),function(){window.removeEventListener("resize",j)}},[]),f.createElement("div",Be({ref:tr},lo({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container",B.status==="stalled"&&"DocSearch-Container--Stalled",B.status==="error"&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(j){j.target===j.currentTarget&&s()}}),f.createElement("div",{className:"DocSearch-Modal",ref:wt},f.createElement("header",{className:"DocSearch-SearchBar",ref:rr},f.createElement(va,Be({},be,{state:B,autoFocus:ee.length===0,inputRef:he,isFromSelection:!!ee&&ee===nr,translations:Ot,onClose:s}))),f.createElement("div",{className:"DocSearch-Dropdown",ref:Qe},f.createElement(fa,Be({},be,{indexName:n,state:B,hitComponent:v,resultsFooterComponent:h,disableUserPersonalization:P,recentSearches:ye,favoriteSearches:oe,inputRef:he,translations:St,getMissingResultsUrl:N,onItemClick:function(j,k){uo(j),ge(j),at(k)||s()}}))),f.createElement("footer",{className:"DocSearch-Footer"},f.createElement(qi,{translations:M}))))}function Qt(){return Qt=Object.assign||function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&arguments[1]!==void 0?arguments[1]:window;return typeof e=="string"?r.document.querySelector(e):e}(t.container,t.environment))}const Ha={id:"docsearch"},Ba=mo({__name:"VPAlgoliaSearchBox",props:{algolia:{}},setup(t){const e=t,r=po(),n=vo(),{site:o,localeIndex:i,lang:a}=Oo();ho(c),yo(i,c);async function c(){var v,d;await go();const l={...e.algolia,...(v=e.algolia.locales)==null?void 0:v[i.value]},m=((d=l.searchParameters)==null?void 0:d.facetFilters)??[],p=[...(Array.isArray(m)?m:[m]).filter(h=>!h.startsWith("lang:")),`lang:${a.value}`];u({...l,searchParameters:{...l.searchParameters,facetFilters:p}})}function u(l){const m=Object.assign({},l,{container:"#docsearch",navigator:{navigate({itemUrl:p}){const{pathname:v}=new URL(window.location.origin+p);n.path===v?window.location.assign(window.location.origin+p):r.go(p)}},transformItems(p){return p.map(v=>Object.assign({},v,{url:s(v.url)}))},hitComponent({hit:p,children:v}){return{__v:null,type:"a",ref:void 0,constructor:void 0,key:void 0,props:{href:p.url,children:v}}}});Ma(m)}function s(l){const{pathname:m,hash:p}=new URL(l,location.origin);return m.replace(/\.html$/,o.value.cleanUrls?"":".html")+p}return(l,m)=>(bo(),_o("div",Ha))}});export{Ba as default}; diff --git a/assets/chunks/framework.3876c926.js b/assets/chunks/framework.3876c926.js deleted file mode 100644 index 61117f4..0000000 --- a/assets/chunks/framework.3876c926.js +++ /dev/null @@ -1,2 +0,0 @@ -function qn(e,t){const n=Object.create(null),s=e.split(",");for(let r=0;r!!n[r.toLowerCase()]:r=>!!n[r]}function Vn(e){if(N(e)){const t={};for(let n=0;n{if(n){const s=n.split(bi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function zn(e){let t="";if(ie(e))t=e;else if(N(e))for(let n=0;nie(e)?e:e==null?"":N(e)||ee(e)&&(e.toString===ur||!B(e.toString))?JSON.stringify(e,lr,2):String(e),lr=(e,t)=>t&&t.__v_isRef?lr(e,t.value):ut(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r])=>(n[`${s} =>`]=r,n),{})}:cr(t)?{[`Set(${t.size})`]:[...t.values()]}:ee(t)&&!N(t)&&!ar(t)?String(t):t,te={},ft=[],Ie=()=>{},Ei=()=>!1,vi=/^on[^a-z]/,Nt=e=>vi.test(e),Yn=e=>e.startsWith("onUpdate:"),ce=Object.assign,Jn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ti=Object.prototype.hasOwnProperty,V=(e,t)=>Ti.call(e,t),N=Array.isArray,ut=e=>cn(e)==="[object Map]",cr=e=>cn(e)==="[object Set]",B=e=>typeof e=="function",ie=e=>typeof e=="string",Xn=e=>typeof e=="symbol",ee=e=>e!==null&&typeof e=="object",fr=e=>ee(e)&&B(e.then)&&B(e.catch),ur=Object.prototype.toString,cn=e=>ur.call(e),Ai=e=>cn(e).slice(8,-1),ar=e=>cn(e)==="[object Object]",Zn=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,vt=qn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),fn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ri=/-(\w)/g,Se=fn(e=>e.replace(Ri,(t,n)=>n?n.toUpperCase():"")),Ii=/\B([A-Z])/g,it=fn(e=>e.replace(Ii,"-$1").toLowerCase()),un=fn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Jt=fn(e=>e?`on${un(e)}`:""),Ft=(e,t)=>!Object.is(e,t),En=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Oi=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Fi=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let ys;const Pi=()=>ys||(ys=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let _e;class Mi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=_e;try{return _e=this,t()}finally{_e=n}}}on(){_e=this}off(){_e=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},dr=e=>(e.w&qe)>0,hr=e=>(e.n&qe)>0,Ni=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let s=0;s{(d==="length"||d>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":N(e)?Zn(n)&&l.push(o.get("length")):(l.push(o.get(st)),ut(e)&&l.push(o.get(Ln)));break;case"delete":N(e)||(l.push(o.get(st)),ut(e)&&l.push(o.get(Ln)));break;case"set":ut(e)&&l.push(o.get(st));break}if(l.length===1)l[0]&&Nn(l[0]);else{const c=[];for(const a of l)a&&c.push(...a);Nn(Qn(c))}}function Nn(e,t){const n=N(e)?e:[...e];for(const s of n)s.computed&&Cs(s);for(const s of n)s.computed||Cs(s)}function Cs(e,t){(e!==Ae||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Hi(e,t){var n;return(n=en.get(e))===null||n===void 0?void 0:n.get(t)}const ji=qn("__proto__,__v_isRef,__isVue"),mr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xn)),Ui=es(),Bi=es(!1,!0),Di=es(!0),xs=Ki();function Ki(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=z(this);for(let i=0,o=this.length;i{e[t]=function(...n){yt();const s=z(this)[t].apply(this,n);return wt(),s}}),e}function ki(e){const t=z(this);return pe(t,"has",e),t.hasOwnProperty(e)}function es(e=!1,t=!1){return function(s,r,i){if(r==="__v_isReactive")return!e;if(r==="__v_isReadonly")return e;if(r==="__v_isShallow")return t;if(r==="__v_raw"&&i===(e?t?io:Cr:t?wr:yr).get(s))return s;const o=N(s);if(!e){if(o&&V(xs,r))return Reflect.get(xs,r,i);if(r==="hasOwnProperty")return ki}const l=Reflect.get(s,r,i);return(Xn(r)?mr.has(r):ji(r))||(e||pe(s,"get",r),t)?l:le(l)?o&&Zn(r)?l:l.value:ee(l)?e?xr(l):dn(l):l}}const Wi=_r(),qi=_r(!0);function _r(e=!1){return function(n,s,r,i){let o=n[s];if(gt(o)&&le(o)&&!le(r))return!1;if(!e&&(!tn(r)&&!gt(r)&&(o=z(o),r=z(r)),!N(n)&&le(o)&&!le(r)))return o.value=r,!0;const l=N(n)&&Zn(s)?Number(s)e,an=e=>Reflect.getPrototypeOf(e);function Bt(e,t,n=!1,s=!1){e=e.__v_raw;const r=z(e),i=z(t);n||(t!==i&&pe(r,"get",t),pe(r,"get",i));const{has:o}=an(r),l=s?ts:n?rs:Pt;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Dt(e,t=!1){const n=this.__v_raw,s=z(n),r=z(e);return t||(e!==r&&pe(s,"has",e),pe(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Kt(e,t=!1){return e=e.__v_raw,!t&&pe(z(e),"iterate",st),Reflect.get(e,"size",e)}function Es(e){e=z(e);const t=z(this);return an(t).has.call(t,e)||(t.add(e),$e(t,"add",e,e)),this}function vs(e,t){t=z(t);const n=z(this),{has:s,get:r}=an(n);let i=s.call(n,e);i||(e=z(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Ft(t,o)&&$e(n,"set",e,t):$e(n,"add",e,t),this}function Ts(e){const t=z(this),{has:n,get:s}=an(t);let r=n.call(t,e);r||(e=z(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&$e(t,"delete",e,void 0),i}function As(){const e=z(this),t=e.size!==0,n=e.clear();return t&&$e(e,"clear",void 0,void 0),n}function kt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=z(o),c=t?ts:e?rs:Pt;return!e&&pe(l,"iterate",st),o.forEach((a,d)=>s.call(r,c(a),c(d),i))}}function Wt(e,t,n){return function(...s){const r=this.__v_raw,i=z(r),o=ut(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,a=r[e](...s),d=n?ts:t?rs:Pt;return!t&&pe(i,"iterate",c?Ln:st),{next(){const{value:p,done:y}=a.next();return y?{value:p,done:y}:{value:l?[d(p[0]),d(p[1])]:d(p),done:y}},[Symbol.iterator](){return this}}}}function je(e){return function(...t){return e==="delete"?!1:this}}function Zi(){const e={get(i){return Bt(this,i)},get size(){return Kt(this)},has:Dt,add:Es,set:vs,delete:Ts,clear:As,forEach:kt(!1,!1)},t={get(i){return Bt(this,i,!1,!0)},get size(){return Kt(this)},has:Dt,add:Es,set:vs,delete:Ts,clear:As,forEach:kt(!1,!0)},n={get(i){return Bt(this,i,!0)},get size(){return Kt(this,!0)},has(i){return Dt.call(this,i,!0)},add:je("add"),set:je("set"),delete:je("delete"),clear:je("clear"),forEach:kt(!0,!1)},s={get(i){return Bt(this,i,!0,!0)},get size(){return Kt(this,!0)},has(i){return Dt.call(this,i,!0)},add:je("add"),set:je("set"),delete:je("delete"),clear:je("clear"),forEach:kt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Wt(i,!1,!1),n[i]=Wt(i,!0,!1),t[i]=Wt(i,!1,!0),s[i]=Wt(i,!0,!0)}),[e,n,t,s]}const[Qi,Gi,eo,to]=Zi();function ns(e,t){const n=t?e?to:eo:e?Gi:Qi;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(V(n,r)&&r in s?n:s,r,i)}const no={get:ns(!1,!1)},so={get:ns(!1,!0)},ro={get:ns(!0,!1)},yr=new WeakMap,wr=new WeakMap,Cr=new WeakMap,io=new WeakMap;function oo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function lo(e){return e.__v_skip||!Object.isExtensible(e)?0:oo(Ai(e))}function dn(e){return gt(e)?e:ss(e,!1,br,no,yr)}function co(e){return ss(e,!1,Xi,so,wr)}function xr(e){return ss(e,!0,Ji,ro,Cr)}function ss(e,t,n,s,r){if(!ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=lo(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function at(e){return gt(e)?at(e.__v_raw):!!(e&&e.__v_isReactive)}function gt(e){return!!(e&&e.__v_isReadonly)}function tn(e){return!!(e&&e.__v_isShallow)}function Er(e){return at(e)||gt(e)}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function Tt(e){return Gt(e,"__v_skip",!0),e}const Pt=e=>ee(e)?dn(e):e,rs=e=>ee(e)?xr(e):e;function is(e){ke&&Ae&&(e=z(e),gr(e.dep||(e.dep=Qn())))}function os(e,t){e=z(e);const n=e.dep;n&&Nn(n)}function le(e){return!!(e&&e.__v_isRef===!0)}function At(e){return vr(e,!1)}function fo(e){return vr(e,!0)}function vr(e,t){return le(e)?e:new uo(e,t)}class uo{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:z(t),this._value=n?t:Pt(t)}get value(){return is(this),this._value}set value(t){const n=this.__v_isShallow||tn(t)||gt(t);t=n?t:z(t),Ft(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Pt(t),os(this))}}function ao(e){return le(e)?e.value:e}const ho={get:(e,t,n)=>ao(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return le(r)&&!le(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Tr(e){return at(e)?e:new Proxy(e,ho)}class po{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>is(this),()=>os(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function Tc(e){return new po(e)}class go{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,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 Hi(z(this._object),this._key)}}function Ac(e,t,n){const s=e[t];return le(s)?s:new go(e,t,n)}var Ar;class mo{constructor(t,n,s,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[Ar]=!1,this._dirty=!0,this.effect=new Gn(t,()=>{this._dirty||(this._dirty=!0,os(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=z(this);return is(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}Ar="__v_isReadonly";function _o(e,t,n=!1){let s,r;const i=B(e);return i?(s=e,r=Ie):(s=e.get,r=e.set),new mo(s,r,i||!r,n)}function We(e,t,n,s){let r;try{r=s?e(...s):e()}catch(i){$t(i,t,n)}return r}function xe(e,t,n,s){if(B(e)){const i=We(e,t,n,s);return i&&fr(i)&&i.catch(o=>{$t(o,t,n)}),i}const r=[];for(let i=0;i>>1;St(fe[s])Me&&fe.splice(t,1)}function Co(e){N(e)?dt.push(...e):(!Ne||!Ne.includes(e,e.allowRecurse?Ge+1:Ge))&&dt.push(e),Or()}function Rs(e,t=Mt?Me+1:0){for(;tSt(n)-St(s)),Ge=0;Gee.id==null?1/0:e.id,xo=(e,t)=>{const n=St(e)-St(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Fr(e){$n=!1,Mt=!0,fe.sort(xo);const t=Ie;try{for(Me=0;Meie(v)?v.trim():v)),p&&(r=n.map(Oi))}let l,c=s[l=Jt(t)]||s[l=Jt(Se(t))];!c&&i&&(c=s[l=Jt(it(t))]),c&&xe(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,xe(a,e,6,r)}}function Pr(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!B(e)){const c=a=>{const d=Pr(a,t,!0);d&&(l=!0,ce(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ee(e)&&s.set(e,null),null):(N(i)?i.forEach(c=>o[c]=null):ce(o,i),ee(e)&&s.set(e,o),o)}function pn(e,t){return!e||!Nt(t)?!1:(t=t.slice(2).replace(/Once$/,""),V(e,t[0].toLowerCase()+t.slice(1))||V(e,it(t))||V(e,t))}let ue=null,gn=null;function sn(e){const t=ue;return ue=e,gn=e&&e.type.__scopeId||null,t}function Rc(e){gn=e}function Ic(){gn=null}function vo(e,t=ue,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Hs(-1);const i=sn(t);let o;try{o=e(...r)}finally{sn(i),s._d&&Hs(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function vn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:a,render:d,renderCache:p,data:y,setupState:v,ctx:R,inheritAttrs:O}=e;let j,g;const w=sn(e);try{if(n.shapeFlag&4){const H=r||s;j=Te(d.call(H,H,p,i,v,y,R)),g=c}else{const H=t;j=Te(H.length>1?H(i,{attrs:c,slots:l,emit:a}):H(i,null)),g=t.props?c:To(c)}}catch(H){Ot.length=0,$t(H,e,1),j=re(be)}let I=j;if(g&&O!==!1){const H=Object.keys(g),{shapeFlag:K}=I;H.length&&K&7&&(o&&H.some(Yn)&&(g=Ao(g,o)),I=Ve(I,g))}return n.dirs&&(I=Ve(I),I.dirs=I.dirs?I.dirs.concat(n.dirs):n.dirs),n.transition&&(I.transition=n.transition),j=I,sn(w),j}const To=e=>{let t;for(const n in e)(n==="class"||n==="style"||Nt(n))&&((t||(t={}))[n]=e[n]);return t},Ao=(e,t)=>{const n={};for(const s in e)(!Yn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ro(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Is(s,o,a):!!o;if(c&8){const d=t.dynamicProps;for(let p=0;pe.__isSuspense;function Mr(e,t){t&&t.pendingBranch?N(e)?t.effects.push(...e):t.effects.push(e):Co(e)}function Fo(e,t){if(se){let n=se.provides;const s=se.parent&&se.parent.provides;s===n&&(n=se.provides=Object.create(s)),n[e]=t}}function ht(e,t,n=!1){const s=se||ue;if(s){const r=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&B(t)?t.call(s.proxy):t}}function Po(e,t){return mn(e,null,t)}function Oc(e,t){return mn(e,null,{flush:"post"})}const qt={};function Xt(e,t,n){return mn(e,t,n)}function mn(e,t,{immediate:n,deep:s,flush:r,onTrack:i,onTrigger:o}=te){const l=Li()===(se==null?void 0:se.scope)?se:null;let c,a=!1,d=!1;if(le(e)?(c=()=>e.value,a=tn(e)):at(e)?(c=()=>e,s=!0):N(e)?(d=!0,a=e.some(I=>at(I)||tn(I)),c=()=>e.map(I=>{if(le(I))return I.value;if(at(I))return ct(I);if(B(I))return We(I,l,2)})):B(e)?t?c=()=>We(e,l,2):c=()=>{if(!(l&&l.isUnmounted))return p&&p(),xe(e,l,3,[y])}:c=Ie,t&&s){const I=c;c=()=>ct(I())}let p,y=I=>{p=g.onStop=()=>{We(I,l,4)}},v;if(bt)if(y=Ie,t?n&&xe(t,l,3,[c(),d?[]:void 0,y]):c(),r==="sync"){const I=El();v=I.__watcherHandles||(I.__watcherHandles=[])}else return Ie;let R=d?new Array(e.length).fill(qt):qt;const O=()=>{if(g.active)if(t){const I=g.run();(s||a||(d?I.some((H,K)=>Ft(H,R[K])):Ft(I,R)))&&(p&&p(),xe(t,l,3,[I,R===qt?void 0:d&&R[0]===qt?[]:R,y]),R=I)}else g.run()};O.allowRecurse=!!t;let j;r==="sync"?j=O:r==="post"?j=()=>de(O,l&&l.suspense):(O.pre=!0,l&&(O.id=l.uid),j=()=>hn(O));const g=new Gn(c,j);t?n?O():R=g.run():r==="post"?de(g.run.bind(g),l&&l.suspense):g.run();const w=()=>{g.stop(),l&&l.scope&&Jn(l.scope.effects,g)};return v&&v.push(w),w}function Mo(e,t,n){const s=this.proxy,r=ie(e)?e.includes(".")?Sr(s,e):()=>s[e]:e.bind(s,s);let i;B(t)?i=t:(i=t.handler,n=t);const o=se;_t(this);const l=mn(r,i.bind(s),n);return o?_t(o):rt(),l}function Sr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{ct(n,t)});else if(ar(e))for(const n in e)ct(e[n],t);return e}function So(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return bn(()=>{e.isMounted=!0}),jr(()=>{e.isUnmounting=!0}),e}const ye=[Function,Array],Lo={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ye,onEnter:ye,onAfterEnter:ye,onEnterCancelled:ye,onBeforeLeave:ye,onLeave:ye,onAfterLeave:ye,onLeaveCancelled:ye,onBeforeAppear:ye,onAppear:ye,onAfterAppear:ye,onAppearCancelled:ye},setup(e,{slots:t}){const n=ni(),s=So();let r;return()=>{const i=t.default&&$r(t.default(),!0);if(!i||!i.length)return;let o=i[0];if(i.length>1){for(const O of i)if(O.type!==be){o=O;break}}const l=z(e),{mode:c}=l;if(s.isLeaving)return Tn(o);const a=Os(o);if(!a)return Tn(o);const d=Hn(a,l,s,n);jn(a,d);const p=n.subTree,y=p&&Os(p);let v=!1;const{getTransitionKey:R}=a.type;if(R){const O=R();r===void 0?r=O:O!==r&&(r=O,v=!0)}if(y&&y.type!==be&&(!et(a,y)||v)){const O=Hn(y,l,s,n);if(jn(y,O),c==="out-in")return s.isLeaving=!0,O.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&n.update()},Tn(o);c==="in-out"&&a.type!==be&&(O.delayLeave=(j,g,w)=>{const I=Nr(s,y);I[String(y.key)]=y,j._leaveCb=()=>{g(),j._leaveCb=void 0,delete d.delayedLeave},d.delayedLeave=w})}return o}}},Lr=Lo;function Nr(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Hn(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:d,onBeforeLeave:p,onLeave:y,onAfterLeave:v,onLeaveCancelled:R,onBeforeAppear:O,onAppear:j,onAfterAppear:g,onAppearCancelled:w}=t,I=String(e.key),H=Nr(n,e),K=(A,D)=>{A&&xe(A,s,9,D)},Z=(A,D)=>{const U=D[1];K(A,D),N(A)?A.every(Y=>Y.length<=1)&&U():A.length<=1&&U()},q={mode:i,persisted:o,beforeEnter(A){let D=l;if(!n.isMounted)if(r)D=O||l;else return;A._leaveCb&&A._leaveCb(!0);const U=H[I];U&&et(e,U)&&U.el._leaveCb&&U.el._leaveCb(),K(D,[A])},enter(A){let D=c,U=a,Y=d;if(!n.isMounted)if(r)D=j||c,U=g||a,Y=w||d;else return;let F=!1;const k=A._enterCb=M=>{F||(F=!0,M?K(Y,[A]):K(U,[A]),q.delayedLeave&&q.delayedLeave(),A._enterCb=void 0)};D?Z(D,[A,k]):k()},leave(A,D){const U=String(e.key);if(A._enterCb&&A._enterCb(!0),n.isUnmounting)return D();K(p,[A]);let Y=!1;const F=A._leaveCb=k=>{Y||(Y=!0,D(),k?K(R,[A]):K(v,[A]),A._leaveCb=void 0,H[U]===e&&delete H[U])};H[U]=e,y?Z(y,[A,F]):F()},clone(A){return Hn(A,t,n,s)}};return q}function Tn(e){if(Ht(e))return e=Ve(e),e.children=null,e}function Os(e){return Ht(e)?e.children?e.children[0]:void 0:e}function jn(e,t){e.shapeFlag&6&&e.component?jn(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 $r(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;function Fc(e){B(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:i,suspensible:o=!0,onError:l}=e;let c=null,a,d=0;const p=()=>(d++,c=null,y()),y=()=>{let v;return c||(v=c=t().catch(R=>{if(R=R instanceof Error?R:new Error(String(R)),l)return new Promise((O,j)=>{l(R,()=>O(p()),()=>j(R),d+1)});throw R}).then(R=>v!==c&&c?c:(R&&(R.__esModule||R[Symbol.toStringTag]==="Module")&&(R=R.default),a=R,R)))};return cs({name:"AsyncComponentWrapper",__asyncLoader:y,get __asyncResolved(){return a},setup(){const v=se;if(a)return()=>An(a,v);const R=w=>{c=null,$t(w,v,13,!s)};if(o&&v.suspense||bt)return y().then(w=>()=>An(w,v)).catch(w=>(R(w),()=>s?re(s,{error:w}):null));const O=At(!1),j=At(),g=At(!!r);return r&&setTimeout(()=>{g.value=!1},r),i!=null&&setTimeout(()=>{if(!O.value&&!j.value){const w=new Error(`Async component timed out after ${i}ms.`);R(w),j.value=w}},i),y().then(()=>{O.value=!0,v.parent&&Ht(v.parent.vnode)&&hn(v.parent.update)}).catch(w=>{R(w),j.value=w}),()=>{if(O.value&&a)return An(a,v);if(j.value&&s)return re(s,{error:j.value});if(n&&!g.value)return re(n)}}})}function An(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=re(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const Ht=e=>e.type.__isKeepAlive;function No(e,t){Hr(e,"a",t)}function $o(e,t){Hr(e,"da",t)}function Hr(e,t,n=se){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(_n(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Ht(r.parent.vnode)&&Ho(s,t,n,r),r=r.parent}}function Ho(e,t,n,s){const r=_n(t,e,s,!0);yn(()=>{Jn(s[t],r)},n)}function _n(e,t,n=se,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;yt(),_t(n);const l=xe(t,n,e,o);return rt(),wt(),l});return s?r.unshift(i):r.push(i),i}}const He=e=>(t,n=se)=>(!bt||e==="sp")&&_n(e,(...s)=>t(...s),n),jo=He("bm"),bn=He("m"),Uo=He("bu"),Bo=He("u"),jr=He("bum"),yn=He("um"),Do=He("sp"),Ko=He("rtg"),ko=He("rtc");function Wo(e,t=se){_n("ec",e,t)}function Pe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;ot(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lln(t)?!(t.type===be||t.type===he&&!Dr(t.children)):!0)?e:null}function Nc(e,t){const n={};for(const s in e)n[t&&/[A-Z]/.test(s)?`on:${s}`:Jt(s)]=e[s];return n}const Un=e=>e?si(e)?hs(e)||e.proxy:Un(e.parent):null,Rt=ce(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=>Un(e.parent),$root:e=>Un(e.root),$emit:e=>e.emit,$options:e=>us(e),$forceUpdate:e=>e.f||(e.f=()=>hn(e.update)),$nextTick:e=>e.n||(e.n=Ir.bind(e.proxy)),$watch:e=>Mo.bind(e)}),Rn=(e,t)=>e!==te&&!e.__isScriptSetup&&V(e,t),qo={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Rn(s,t))return o[t]=1,s[t];if(r!==te&&V(r,t))return o[t]=2,r[t];if((a=e.propsOptions[0])&&V(a,t))return o[t]=3,i[t];if(n!==te&&V(n,t))return o[t]=4,n[t];Bn&&(o[t]=0)}}const d=Rt[t];let p,y;if(d)return t==="$attrs"&&pe(e,"get",t),d(e);if((p=l.__cssModules)&&(p=p[t]))return p;if(n!==te&&V(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,V(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Rn(r,t)?(r[t]=n,!0):s!==te&&V(s,t)?(s[t]=n,!0):V(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&V(e,o)||Rn(t,o)||(l=i[0])&&V(l,o)||V(s,o)||V(Rt,o)||V(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:V(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Bn=!0;function Vo(e){const t=us(e),n=e.proxy,s=e.ctx;Bn=!1,t.beforeCreate&&Ps(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:a,created:d,beforeMount:p,mounted:y,beforeUpdate:v,updated:R,activated:O,deactivated:j,beforeDestroy:g,beforeUnmount:w,destroyed:I,unmounted:H,render:K,renderTracked:Z,renderTriggered:q,errorCaptured:A,serverPrefetch:D,expose:U,inheritAttrs:Y,components:F,directives:k,filters:M}=t;if(a&&zo(a,s,null,e.appContext.config.unwrapInjectedRef),o)for(const ne in o){const Q=o[ne];B(Q)&&(s[ne]=Q.bind(n))}if(r){const ne=r.call(n,n);ee(ne)&&(e.data=dn(ne))}if(Bn=!0,i)for(const ne in i){const Q=i[ne],ze=B(Q)?Q.bind(n,n):B(Q.get)?Q.get.bind(n,n):Ie,jt=!B(Q)&&B(Q.set)?Q.set.bind(n):Ie,Ye=ve({get:ze,set:jt});Object.defineProperty(s,ne,{enumerable:!0,configurable:!0,get:()=>Ye.value,set:Oe=>Ye.value=Oe})}if(l)for(const ne in l)Kr(l[ne],s,n,ne);if(c){const ne=B(c)?c.call(n):c;Reflect.ownKeys(ne).forEach(Q=>{Fo(Q,ne[Q])})}d&&Ps(d,e,"c");function J(ne,Q){N(Q)?Q.forEach(ze=>ne(ze.bind(n))):Q&&ne(Q.bind(n))}if(J(jo,p),J(bn,y),J(Uo,v),J(Bo,R),J(No,O),J($o,j),J(Wo,A),J(ko,Z),J(Ko,q),J(jr,w),J(yn,H),J(Do,D),N(U))if(U.length){const ne=e.exposed||(e.exposed={});U.forEach(Q=>{Object.defineProperty(ne,Q,{get:()=>n[Q],set:ze=>n[Q]=ze})})}else e.exposed||(e.exposed={});K&&e.render===Ie&&(e.render=K),Y!=null&&(e.inheritAttrs=Y),F&&(e.components=F),k&&(e.directives=k)}function zo(e,t,n=Ie,s=!1){N(e)&&(e=Dn(e));for(const r in e){const i=e[r];let o;ee(i)?"default"in i?o=ht(i.from||r,i.default,!0):o=ht(i.from||r):o=ht(i),le(o)&&s?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[r]=o}}function Ps(e,t,n){xe(N(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Kr(e,t,n,s){const r=s.includes(".")?Sr(n,s):()=>n[s];if(ie(e)){const i=t[e];B(i)&&Xt(r,i)}else if(B(e))Xt(r,e.bind(n));else if(ee(e))if(N(e))e.forEach(i=>Kr(i,t,n,s));else{const i=B(e.handler)?e.handler.bind(n):t[e.handler];B(i)&&Xt(r,i,e)}}function us(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>rn(c,a,o,!0)),rn(c,t,o)),ee(t)&&i.set(t,c),c}function rn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&rn(e,i,n,!0),r&&r.forEach(o=>rn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Yo[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Yo={data:Ms,props:Qe,emits:Qe,methods:Qe,computed:Qe,beforeCreate:ae,created:ae,beforeMount:ae,mounted:ae,beforeUpdate:ae,updated:ae,beforeDestroy:ae,beforeUnmount:ae,destroyed:ae,unmounted:ae,activated:ae,deactivated:ae,errorCaptured:ae,serverPrefetch:ae,components:Qe,directives:Qe,watch:Xo,provide:Ms,inject:Jo};function Ms(e,t){return t?e?function(){return ce(B(e)?e.call(this,this):e,B(t)?t.call(this,this):t)}:t:e}function Jo(e,t){return Qe(Dn(e),Dn(t))}function Dn(e){if(N(e)){const t={};for(let n=0;n0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let p=0;p{c=!0;const[y,v]=Wr(p,t,!0);ce(o,y),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return ee(e)&&s.set(e,ft),ft;if(N(i))for(let d=0;d-1,v[1]=O<0||R-1||V(v,"default"))&&l.push(p)}}}const a=[o,l];return ee(e)&&s.set(e,a),a}function Ss(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 Ns(e,t){return Ls(e)===Ls(t)}function $s(e,t){return N(t)?t.findIndex(n=>Ns(n,e)):B(t)&&Ns(t,e)?0:-1}const qr=e=>e[0]==="_"||e==="$stable",as=e=>N(e)?e.map(Te):[Te(e)],Go=(e,t,n)=>{if(t._n)return t;const s=vo((...r)=>as(t(...r)),n);return s._c=!1,s},Vr=(e,t,n)=>{const s=e._ctx;for(const r in e){if(qr(r))continue;const i=e[r];if(B(i))t[r]=Go(r,i,s);else if(i!=null){const o=as(i);t[r]=()=>o}}},zr=(e,t)=>{const n=as(t);e.slots.default=()=>n},el=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=z(t),Gt(t,"_",n)):Vr(t,e.slots={})}else e.slots={},t&&zr(e,t);Gt(e.slots,wn,1)},tl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(ce(r,t),!n&&l===1&&delete r._):(i=!t.$stable,Vr(t,r)),o=t}else t&&(zr(e,t),o={default:1});if(i)for(const l in r)!qr(l)&&!(l in o)&&delete r[l]};function Yr(){return{app:null,config:{isNativeTag:Ei,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 nl=0;function sl(e,t){return function(s,r=null){B(s)||(s=Object.assign({},s)),r!=null&&!ee(r)&&(r=null);const i=Yr(),o=new Set;let l=!1;const c=i.app={_uid:nl++,_component:s,_props:r,_container:null,_context:i,_instance:null,version:vl,get config(){return i.config},set config(a){},use(a,...d){return o.has(a)||(a&&B(a.install)?(o.add(a),a.install(c,...d)):B(a)&&(o.add(a),a(c,...d))),c},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),c},component(a,d){return d?(i.components[a]=d,c):i.components[a]},directive(a,d){return d?(i.directives[a]=d,c):i.directives[a]},mount(a,d,p){if(!l){const y=re(s,r);return y.appContext=i,d&&t?t(y,a):e(y,a,p),l=!0,c._container=a,a.__vue_app__=c,hs(y.component)||y.component.proxy}},unmount(){l&&(e(null,c._container),delete c._container.__vue_app__)},provide(a,d){return i.provides[a]=d,c}};return c}}function on(e,t,n,s,r=!1){if(N(e)){e.forEach((y,v)=>on(y,t&&(N(t)?t[v]:t),n,s,r));return}if(pt(s)&&!r)return;const i=s.shapeFlag&4?hs(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,a=t&&t.r,d=l.refs===te?l.refs={}:l.refs,p=l.setupState;if(a!=null&&a!==c&&(ie(a)?(d[a]=null,V(p,a)&&(p[a]=null)):le(a)&&(a.value=null)),B(c))We(c,l,12,[o,d]);else{const y=ie(c),v=le(c);if(y||v){const R=()=>{if(e.f){const O=y?V(p,c)?p[c]:d[c]:c.value;r?N(O)&&Jn(O,i):N(O)?O.includes(i)||O.push(i):y?(d[c]=[i],V(p,c)&&(p[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else y?(d[c]=o,V(p,c)&&(p[c]=o)):v&&(c.value=o,e.k&&(d[e.k]=o))};o?(R.id=-1,de(R,n)):R()}}}let Ue=!1;const Vt=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",zt=e=>e.nodeType===8;function rl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:a}}=e,d=(g,w)=>{if(!w.hasChildNodes()){n(null,g,w),nn(),w._vnode=g;return}Ue=!1,p(w.firstChild,g,null,null,null),nn(),w._vnode=g,Ue&&console.error("Hydration completed but contains mismatches.")},p=(g,w,I,H,K,Z=!1)=>{const q=zt(g)&&g.data==="[",A=()=>O(g,w,I,H,K,q),{type:D,ref:U,shapeFlag:Y,patchFlag:F}=w;let k=g.nodeType;w.el=g,F===-2&&(Z=!1,w.dynamicChildren=null);let M=null;switch(D){case mt:k!==3?w.children===""?(c(w.el=r(""),o(g),g),M=g):M=A():(g.data!==w.children&&(Ue=!0,g.data=w.children),M=i(g));break;case be:k!==8||q?M=A():M=i(g);break;case It:if(q&&(g=i(g),k=g.nodeType),k===1||k===3){M=g;const ge=!w.children.length;for(let J=0;J{Z=Z||!!w.dynamicChildren;const{type:q,props:A,patchFlag:D,shapeFlag:U,dirs:Y}=w,F=q==="input"&&Y||q==="option";if(F||D!==-1){if(Y&&Pe(w,null,I,"created"),A)if(F||!Z||D&48)for(const M in A)(F&&M.endsWith("value")||Nt(M)&&!vt(M))&&s(g,M,null,A[M],!1,void 0,I);else A.onClick&&s(g,"onClick",null,A.onClick,!1,void 0,I);let k;if((k=A&&A.onVnodeBeforeMount)&&we(k,I,w),Y&&Pe(w,null,I,"beforeMount"),((k=A&&A.onVnodeMounted)||Y)&&Mr(()=>{k&&we(k,I,w),Y&&Pe(w,null,I,"mounted")},H),U&16&&!(A&&(A.innerHTML||A.textContent))){let M=v(g.firstChild,w,g,I,H,K,Z);for(;M;){Ue=!0;const ge=M;M=M.nextSibling,l(ge)}}else U&8&&g.textContent!==w.children&&(Ue=!0,g.textContent=w.children)}return g.nextSibling},v=(g,w,I,H,K,Z,q)=>{q=q||!!w.dynamicChildren;const A=w.children,D=A.length;for(let U=0;U{const{slotScopeIds:q}=w;q&&(K=K?K.concat(q):q);const A=o(g),D=v(i(g),w,A,I,H,K,Z);return D&&zt(D)&&D.data==="]"?i(w.anchor=D):(Ue=!0,c(w.anchor=a("]"),A,D),D)},O=(g,w,I,H,K,Z)=>{if(Ue=!0,w.el=null,Z){const D=j(g);for(;;){const U=i(g);if(U&&U!==D)l(U);else break}}const q=i(g),A=o(g);return l(g),n(null,w,A,q,I,H,Vt(A),K),q},j=g=>{let w=0;for(;g;)if(g=i(g),g&&zt(g)&&(g.data==="["&&w++,g.data==="]")){if(w===0)return i(g);w--}return g};return[d,p]}const de=Mr;function il(e){return ol(e,rl)}function ol(e,t){const n=Pi();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:a,setElementText:d,parentNode:p,nextSibling:y,setScopeId:v=Ie,insertStaticContent:R}=e,O=(f,u,h,_=null,m=null,x=null,T=!1,C=null,E=!!u.dynamicChildren)=>{if(f===u)return;f&&!et(f,u)&&(_=Ut(f),Oe(f,m,x,!0),f=null),u.patchFlag===-2&&(E=!1,u.dynamicChildren=null);const{type:b,ref:S,shapeFlag:P}=u;switch(b){case mt:j(f,u,h,_);break;case be:g(f,u,h,_);break;case It:f==null&&w(u,h,_,T);break;case he:F(f,u,h,_,m,x,T,C,E);break;default:P&1?K(f,u,h,_,m,x,T,C,E):P&6?k(f,u,h,_,m,x,T,C,E):(P&64||P&128)&&b.process(f,u,h,_,m,x,T,C,E,ot)}S!=null&&m&&on(S,f&&f.ref,x,u||f,!u)},j=(f,u,h,_)=>{if(f==null)s(u.el=l(u.children),h,_);else{const m=u.el=f.el;u.children!==f.children&&a(m,u.children)}},g=(f,u,h,_)=>{f==null?s(u.el=c(u.children||""),h,_):u.el=f.el},w=(f,u,h,_)=>{[f.el,f.anchor]=R(f.children,u,h,_,f.el,f.anchor)},I=({el:f,anchor:u},h,_)=>{let m;for(;f&&f!==u;)m=y(f),s(f,h,_),f=m;s(u,h,_)},H=({el:f,anchor:u})=>{let h;for(;f&&f!==u;)h=y(f),r(f),f=h;r(u)},K=(f,u,h,_,m,x,T,C,E)=>{T=T||u.type==="svg",f==null?Z(u,h,_,m,x,T,C,E):D(f,u,m,x,T,C,E)},Z=(f,u,h,_,m,x,T,C)=>{let E,b;const{type:S,props:P,shapeFlag:L,transition:$,dirs:W}=f;if(E=f.el=o(f.type,x,P&&P.is,P),L&8?d(E,f.children):L&16&&A(f.children,E,null,_,m,x&&S!=="foreignObject",T,C),W&&Pe(f,null,_,"created"),q(E,f,f.scopeId,T,_),P){for(const X in P)X!=="value"&&!vt(X)&&i(E,X,null,P[X],x,f.children,_,m,Le);"value"in P&&i(E,"value",null,P.value),(b=P.onVnodeBeforeMount)&&we(b,_,f)}W&&Pe(f,null,_,"beforeMount");const G=(!m||m&&!m.pendingBranch)&&$&&!$.persisted;G&&$.beforeEnter(E),s(E,u,h),((b=P&&P.onVnodeMounted)||G||W)&&de(()=>{b&&we(b,_,f),G&&$.enter(E),W&&Pe(f,null,_,"mounted")},m)},q=(f,u,h,_,m)=>{if(h&&v(f,h),_)for(let x=0;x<_.length;x++)v(f,_[x]);if(m){let x=m.subTree;if(u===x){const T=m.vnode;q(f,T,T.scopeId,T.slotScopeIds,m.parent)}}},A=(f,u,h,_,m,x,T,C,E=0)=>{for(let b=E;b{const C=u.el=f.el;let{patchFlag:E,dynamicChildren:b,dirs:S}=u;E|=f.patchFlag&16;const P=f.props||te,L=u.props||te;let $;h&&Je(h,!1),($=L.onVnodeBeforeUpdate)&&we($,h,u,f),S&&Pe(u,f,h,"beforeUpdate"),h&&Je(h,!0);const W=m&&u.type!=="foreignObject";if(b?U(f.dynamicChildren,b,C,h,_,W,x):T||Q(f,u,C,null,h,_,W,x,!1),E>0){if(E&16)Y(C,u,P,L,h,_,m);else if(E&2&&P.class!==L.class&&i(C,"class",null,L.class,m),E&4&&i(C,"style",P.style,L.style,m),E&8){const G=u.dynamicProps;for(let X=0;X{$&&we($,h,u,f),S&&Pe(u,f,h,"updated")},_)},U=(f,u,h,_,m,x,T)=>{for(let C=0;C{if(h!==_){if(h!==te)for(const C in h)!vt(C)&&!(C in _)&&i(f,C,h[C],null,T,u.children,m,x,Le);for(const C in _){if(vt(C))continue;const E=_[C],b=h[C];E!==b&&C!=="value"&&i(f,C,b,E,T,u.children,m,x,Le)}"value"in _&&i(f,"value",h.value,_.value)}},F=(f,u,h,_,m,x,T,C,E)=>{const b=u.el=f?f.el:l(""),S=u.anchor=f?f.anchor:l("");let{patchFlag:P,dynamicChildren:L,slotScopeIds:$}=u;$&&(C=C?C.concat($):$),f==null?(s(b,h,_),s(S,h,_),A(u.children,h,S,m,x,T,C,E)):P>0&&P&64&&L&&f.dynamicChildren?(U(f.dynamicChildren,L,h,m,x,T,C),(u.key!=null||m&&u===m.subTree)&&Jr(f,u,!0)):Q(f,u,h,S,m,x,T,C,E)},k=(f,u,h,_,m,x,T,C,E)=>{u.slotScopeIds=C,f==null?u.shapeFlag&512?m.ctx.activate(u,h,_,T,E):M(u,h,_,m,x,T,E):ge(f,u,E)},M=(f,u,h,_,m,x,T)=>{const C=f.component=gl(f,_,m);if(Ht(f)&&(C.ctx.renderer=ot),ml(C),C.asyncDep){if(m&&m.registerDep(C,J),!f.el){const E=C.subTree=re(be);g(null,E,u,h)}return}J(C,f,u,h,m,x,T)},ge=(f,u,h)=>{const _=u.component=f.component;if(Ro(f,u,h))if(_.asyncDep&&!_.asyncResolved){ne(_,u,h);return}else _.next=u,wo(_.update),_.update();else u.el=f.el,_.vnode=u},J=(f,u,h,_,m,x,T)=>{const C=()=>{if(f.isMounted){let{next:S,bu:P,u:L,parent:$,vnode:W}=f,G=S,X;Je(f,!1),S?(S.el=W.el,ne(f,S,T)):S=W,P&&En(P),(X=S.props&&S.props.onVnodeBeforeUpdate)&&we(X,$,S,W),Je(f,!0);const oe=vn(f),Ee=f.subTree;f.subTree=oe,O(Ee,oe,p(Ee.el),Ut(Ee),f,m,x),S.el=oe.el,G===null&&Io(f,oe.el),L&&de(L,m),(X=S.props&&S.props.onVnodeUpdated)&&de(()=>we(X,$,S,W),m)}else{let S;const{el:P,props:L}=u,{bm:$,m:W,parent:G}=f,X=pt(u);if(Je(f,!1),$&&En($),!X&&(S=L&&L.onVnodeBeforeMount)&&we(S,G,u),Je(f,!0),P&&xn){const oe=()=>{f.subTree=vn(f),xn(P,f.subTree,f,m,null)};X?u.type.__asyncLoader().then(()=>!f.isUnmounted&&oe()):oe()}else{const oe=f.subTree=vn(f);O(null,oe,h,_,f,m,x),u.el=oe.el}if(W&&de(W,m),!X&&(S=L&&L.onVnodeMounted)){const oe=u;de(()=>we(S,G,oe),m)}(u.shapeFlag&256||G&&pt(G.vnode)&&G.vnode.shapeFlag&256)&&f.a&&de(f.a,m),f.isMounted=!0,u=h=_=null}},E=f.effect=new Gn(C,()=>hn(b),f.scope),b=f.update=()=>E.run();b.id=f.uid,Je(f,!0),b()},ne=(f,u,h)=>{u.component=f;const _=f.vnode.props;f.vnode=u,f.next=null,Qo(f,u.props,_,h),tl(f,u.children,h),yt(),Rs(),wt()},Q=(f,u,h,_,m,x,T,C,E=!1)=>{const b=f&&f.children,S=f?f.shapeFlag:0,P=u.children,{patchFlag:L,shapeFlag:$}=u;if(L>0){if(L&128){jt(b,P,h,_,m,x,T,C,E);return}else if(L&256){ze(b,P,h,_,m,x,T,C,E);return}}$&8?(S&16&&Le(b,m,x),P!==b&&d(h,P)):S&16?$&16?jt(b,P,h,_,m,x,T,C,E):Le(b,m,x,!0):(S&8&&d(h,""),$&16&&A(P,h,_,m,x,T,C,E))},ze=(f,u,h,_,m,x,T,C,E)=>{f=f||ft,u=u||ft;const b=f.length,S=u.length,P=Math.min(b,S);let L;for(L=0;LS?Le(f,m,x,!0,!1,P):A(u,h,_,m,x,T,C,E,P)},jt=(f,u,h,_,m,x,T,C,E)=>{let b=0;const S=u.length;let P=f.length-1,L=S-1;for(;b<=P&&b<=L;){const $=f[b],W=u[b]=E?Ke(u[b]):Te(u[b]);if(et($,W))O($,W,h,null,m,x,T,C,E);else break;b++}for(;b<=P&&b<=L;){const $=f[P],W=u[L]=E?Ke(u[L]):Te(u[L]);if(et($,W))O($,W,h,null,m,x,T,C,E);else break;P--,L--}if(b>P){if(b<=L){const $=L+1,W=$L)for(;b<=P;)Oe(f[b],m,x,!0),b++;else{const $=b,W=b,G=new Map;for(b=W;b<=L;b++){const me=u[b]=E?Ke(u[b]):Te(u[b]);me.key!=null&&G.set(me.key,b)}let X,oe=0;const Ee=L-W+1;let lt=!1,ms=0;const Ct=new Array(Ee);for(b=0;b=Ee){Oe(me,m,x,!0);continue}let Fe;if(me.key!=null)Fe=G.get(me.key);else for(X=W;X<=L;X++)if(Ct[X-W]===0&&et(me,u[X])){Fe=X;break}Fe===void 0?Oe(me,m,x,!0):(Ct[Fe-W]=b+1,Fe>=ms?ms=Fe:lt=!0,O(me,u[Fe],h,null,m,x,T,C,E),oe++)}const _s=lt?ll(Ct):ft;for(X=_s.length-1,b=Ee-1;b>=0;b--){const me=W+b,Fe=u[me],bs=me+1{const{el:x,type:T,transition:C,children:E,shapeFlag:b}=f;if(b&6){Ye(f.component.subTree,u,h,_);return}if(b&128){f.suspense.move(u,h,_);return}if(b&64){T.move(f,u,h,ot);return}if(T===he){s(x,u,h);for(let P=0;PC.enter(x),m);else{const{leave:P,delayLeave:L,afterLeave:$}=C,W=()=>s(x,u,h),G=()=>{P(x,()=>{W(),$&&$()})};L?L(x,W,G):G()}else s(x,u,h)},Oe=(f,u,h,_=!1,m=!1)=>{const{type:x,props:T,ref:C,children:E,dynamicChildren:b,shapeFlag:S,patchFlag:P,dirs:L}=f;if(C!=null&&on(C,null,h,f,!0),S&256){u.ctx.deactivate(f);return}const $=S&1&&L,W=!pt(f);let G;if(W&&(G=T&&T.onVnodeBeforeUnmount)&&we(G,u,f),S&6)mi(f.component,h,_);else{if(S&128){f.suspense.unmount(h,_);return}$&&Pe(f,null,u,"beforeUnmount"),S&64?f.type.remove(f,u,h,m,ot,_):b&&(x!==he||P>0&&P&64)?Le(b,u,h,!1,!0):(x===he&&P&384||!m&&S&16)&&Le(E,u,h),_&&ps(f)}(W&&(G=T&&T.onVnodeUnmounted)||$)&&de(()=>{G&&we(G,u,f),$&&Pe(f,null,u,"unmounted")},h)},ps=f=>{const{type:u,el:h,anchor:_,transition:m}=f;if(u===he){gi(h,_);return}if(u===It){H(f);return}const x=()=>{r(h),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(f.shapeFlag&1&&m&&!m.persisted){const{leave:T,delayLeave:C}=m,E=()=>T(h,x);C?C(f.el,x,E):E()}else x()},gi=(f,u)=>{let h;for(;f!==u;)h=y(f),r(f),f=h;r(u)},mi=(f,u,h)=>{const{bum:_,scope:m,update:x,subTree:T,um:C}=f;_&&En(_),m.stop(),x&&(x.active=!1,Oe(T,f,u,h)),C&&de(C,u),de(()=>{f.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},Le=(f,u,h,_=!1,m=!1,x=0)=>{for(let T=x;Tf.shapeFlag&6?Ut(f.component.subTree):f.shapeFlag&128?f.suspense.next():y(f.anchor||f.el),gs=(f,u,h)=>{f==null?u._vnode&&Oe(u._vnode,null,null,!0):O(u._vnode||null,f,u,null,null,null,h),Rs(),nn(),u._vnode=f},ot={p:O,um:Oe,m:Ye,r:ps,mt:M,mc:A,pc:Q,pbc:U,n:Ut,o:e};let Cn,xn;return t&&([Cn,xn]=t(ot)),{render:gs,hydrate:Cn,createApp:sl(gs,Cn)}}function Je({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Jr(e,t,n=!1){const s=e.children,r=t.children;if(N(s)&&N(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}const cl=e=>e.__isTeleport,he=Symbol(void 0),mt=Symbol(void 0),be=Symbol(void 0),It=Symbol(void 0),Ot=[];let Re=null;function Xr(e=!1){Ot.push(Re=e?null:[])}function fl(){Ot.pop(),Re=Ot[Ot.length-1]||null}let Lt=1;function Hs(e){Lt+=e}function Zr(e){return e.dynamicChildren=Lt>0?Re||ft:null,fl(),Lt>0&&Re&&Re.push(e),e}function $c(e,t,n,s,r,i){return Zr(ei(e,t,n,s,r,i,!0))}function Qr(e,t,n,s,r){return Zr(re(e,t,n,s,r,!0))}function ln(e){return e?e.__v_isVNode===!0:!1}function et(e,t){return e.type===t.type&&e.key===t.key}const wn="__vInternal",Gr=({key:e})=>e??null,Zt=({ref:e,ref_key:t,ref_for:n})=>e!=null?ie(e)||le(e)||B(e)?{i:ue,r:e,k:t,f:!!n}:e:null;function ei(e,t=null,n=null,s=0,r=null,i=e===he?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Gr(t),ref:t&&Zt(t),scopeId:gn,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:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ue};return l?(ds(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=ie(n)?8:16),Lt>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const re=ul;function ul(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Ur)&&(e=be),ln(e)){const l=Ve(e,t,!0);return n&&ds(l,n),Lt>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(wl(e)&&(e=e.__vccOpts),t){t=al(t);let{class:l,style:c}=t;l&&!ie(l)&&(t.class=zn(l)),ee(c)&&(Er(c)&&!N(c)&&(c=ce({},c)),t.style=Vn(c))}const o=ie(e)?1:Oo(e)?128:cl(e)?64:ee(e)?4:B(e)?2:0;return ei(e,t,n,s,r,o,i,!0)}function al(e){return e?Er(e)||wn in e?ce({},e):e:null}function Ve(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?dl(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Gr(l),ref:t&&t.ref?n&&r?N(r)?r.concat(Zt(t)):[r,Zt(t)]:Zt(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==he?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&&Ve(e.ssContent),ssFallback:e.ssFallback&&Ve(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ti(e=" ",t=0){return re(mt,null,e,t)}function Hc(e,t){const n=re(It,null,e);return n.staticCount=t,n}function jc(e="",t=!1){return t?(Xr(),Qr(be,null,e)):re(be,null,e)}function Te(e){return e==null||typeof e=="boolean"?re(be):N(e)?re(he,null,e.slice()):typeof e=="object"?Ke(e):re(mt,null,String(e))}function Ke(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ve(e)}function ds(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(N(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ds(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(wn in t)?t._ctx=ue:r===3&&ue&&(ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else B(t)?(t={default:t,_ctx:ue},n=32):(t=String(t),s&64?(n=16,t=[ti(t)]):n=8);e.children=t,e.shapeFlag|=n}function dl(...e){const t={};for(let n=0;nse||ue,_t=e=>{se=e,e.scope.on()},rt=()=>{se&&se.scope.off(),se=null};function si(e){return e.vnode.shapeFlag&4}let bt=!1;function ml(e,t=!1){bt=t;const{props:n,children:s}=e.vnode,r=si(e);Zo(e,n,r,t),el(e,s);const i=r?_l(e,t):void 0;return bt=!1,i}function _l(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Tt(new Proxy(e.ctx,qo));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?ii(e):null;_t(e),yt();const i=We(s,e,0,[e.props,r]);if(wt(),rt(),fr(i)){if(i.then(rt,rt),t)return i.then(o=>{js(e,o,t)}).catch(o=>{$t(o,e,0)});e.asyncDep=i}else js(e,i,t)}else ri(e,t)}function js(e,t,n){B(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ee(t)&&(e.setupState=Tr(t)),ri(e,n)}let Us;function ri(e,t,n){const s=e.type;if(!e.render){if(!t&&Us&&!s.render){const r=s.template||us(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,a=ce(ce({isCustomElement:i,delimiters:l},o),c);s.render=Us(r,a)}}e.render=s.render||Ie}_t(e),yt(),Vo(e),wt(),rt()}function bl(e){return new Proxy(e.attrs,{get(t,n){return pe(e,"get","$attrs"),t[n]}})}function ii(e){const t=s=>{e.exposed=s||{}};let n;return{get attrs(){return n||(n=bl(e))},slots:e.slots,emit:e.emit,expose:t}}function hs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Tr(Tt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Rt)return Rt[n](e)},has(t,n){return n in t||n in Rt}}))}function yl(e,t=!0){return B(e)?e.displayName||e.name:e.name||t&&e.__name}function wl(e){return B(e)&&"__vccOpts"in e}const ve=(e,t)=>_o(e,t,bt);function Uc(){return Cl().slots}function Cl(){const e=ni();return e.setupContext||(e.setupContext=ii(e))}function kn(e,t,n){const s=arguments.length;return s===2?ee(t)&&!N(t)?ln(t)?re(e,null,[t]):re(e,t):re(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&ln(n)&&(n=[n]),re(e,t,n))}const xl=Symbol(""),El=()=>ht(xl),vl="3.2.47",Tl="http://www.w3.org/2000/svg",tt=typeof document<"u"?document:null,Bs=tt&&tt.createElement("template"),Al={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t?tt.createElementNS(Tl,e):tt.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>tt.createTextNode(e),createComment:e=>tt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>tt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Bs.innerHTML=s?`${e}`:e;const l=Bs.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Rl(e,t,n){const s=e._vtc;s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Il(e,t,n){const s=e.style,r=ie(n);if(n&&!r){if(t&&!ie(t))for(const i in t)n[i]==null&&Wn(s,i,"");for(const i in n)Wn(s,i,n[i])}else{const i=s.display;r?t!==n&&(s.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(s.display=i)}}const Ds=/\s*!important$/;function Wn(e,t,n){if(N(n))n.forEach(s=>Wn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ol(e,t);Ds.test(n)?e.setProperty(it(s),n.replace(Ds,""),"important"):e[s]=n}}const Ks=["Webkit","Moz","ms"],In={};function Ol(e,t){const n=In[t];if(n)return n;let s=Se(t);if(s!=="filter"&&s in e)return In[t]=s;s=un(s);for(let r=0;rOn||($l.then(()=>On=0),On=Date.now());function jl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;xe(Ul(s,n.value),t,5,[s])};return n.value=e,n.attached=Hl(),n}function Ul(e,t){if(N(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const qs=/^on[a-z]/,Bl=(e,t,n,s,r=!1,i,o,l,c)=>{t==="class"?Rl(e,s,r):t==="style"?Il(e,n,s):Nt(t)?Yn(t)||Ll(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Dl(e,t,s,r))?Pl(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Fl(e,t,s,r))};function Dl(e,t,n,s){return s?!!(t==="innerHTML"||t==="textContent"||t in e&&qs.test(t)&&B(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||qs.test(t)&&ie(n)?!1:t in e}const Be="transition",xt="animation",oi=(e,{slots:t})=>kn(Lr,Kl(e),t);oi.displayName="Transition";const li={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};oi.props=ce({},Lr.props,li);const Xe=(e,t=[])=>{N(e)?e.forEach(n=>n(...t)):e&&e(...t)},Vs=e=>e?N(e)?e.some(t=>t.length>1):e.length>1:!1;function Kl(e){const t={};for(const F in e)F in li||(t[F]=e[F]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:a=o,appearToClass:d=l,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,R=kl(r),O=R&&R[0],j=R&&R[1],{onBeforeEnter:g,onEnter:w,onEnterCancelled:I,onLeave:H,onLeaveCancelled:K,onBeforeAppear:Z=g,onAppear:q=w,onAppearCancelled:A=I}=t,D=(F,k,M)=>{Ze(F,k?d:l),Ze(F,k?a:o),M&&M()},U=(F,k)=>{F._isLeaving=!1,Ze(F,p),Ze(F,v),Ze(F,y),k&&k()},Y=F=>(k,M)=>{const ge=F?q:w,J=()=>D(k,F,M);Xe(ge,[k,J]),zs(()=>{Ze(k,F?c:i),De(k,F?d:l),Vs(ge)||Ys(k,s,O,J)})};return ce(t,{onBeforeEnter(F){Xe(g,[F]),De(F,i),De(F,o)},onBeforeAppear(F){Xe(Z,[F]),De(F,c),De(F,a)},onEnter:Y(!1),onAppear:Y(!0),onLeave(F,k){F._isLeaving=!0;const M=()=>U(F,k);De(F,p),Vl(),De(F,y),zs(()=>{F._isLeaving&&(Ze(F,p),De(F,v),Vs(H)||Ys(F,s,j,M))}),Xe(H,[F,M])},onEnterCancelled(F){D(F,!1),Xe(I,[F])},onAppearCancelled(F){D(F,!0),Xe(A,[F])},onLeaveCancelled(F){U(F),Xe(K,[F])}})}function kl(e){if(e==null)return null;if(ee(e))return[Fn(e.enter),Fn(e.leave)];{const t=Fn(e);return[t,t]}}function Fn(e){return Fi(e)}function De(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ze(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function zs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Wl=0;function Ys(e,t,n,s){const r=e._endId=++Wl,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ql(e,t);if(!o)return s();const a=o+"end";let d=0;const p=()=>{e.removeEventListener(a,y),i()},y=v=>{v.target===e&&++d>=c&&p()};setTimeout(()=>{d(n[R]||"").split(", "),r=s(`${Be}Delay`),i=s(`${Be}Duration`),o=Js(r,i),l=s(`${xt}Delay`),c=s(`${xt}Duration`),a=Js(l,c);let d=null,p=0,y=0;t===Be?o>0&&(d=Be,p=o,y=i.length):t===xt?a>0&&(d=xt,p=a,y=c.length):(p=Math.max(o,a),d=p>0?o>a?Be:xt:null,y=d?d===Be?i.length:c.length:0);const v=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:p,propCount:y,hasTransform:v}}function Js(e,t){for(;e.lengthXs(n)+Xs(e[s])))}function Xs(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Vl(){return document.body.offsetHeight}const zl=["ctrl","shift","alt","meta"],Yl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>zl.some(n=>e[`${n}Key`]&&!t.includes(n))},Bc=(e,t)=>(n,...s)=>{for(let r=0;rn=>{if(!("key"in n))return;const s=it(n.key);if(t.some(r=>r===s||Jl[r]===s))return e(n)},Xl=ce({patchProp:Bl},Al);let Pn,Zs=!1;function Zl(){return Pn=Zs?Pn:il(Xl),Zs=!0,Pn}const Kc=(...e)=>{const t=Zl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ql(s);if(r)return n(r,!0,r instanceof SVGElement)},t};function Ql(e){return ie(e)?document.querySelector(e):e}const kc=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Gl="modulepreload",ec=function(e){return"/daydayup/"+e},Qs={},Wc=function(t,n,s){if(!n||n.length===0)return t();const r=document.getElementsByTagName("link");return Promise.all(n.map(i=>{if(i=ec(i),i in Qs)return;Qs[i]=!0;const o=i.endsWith(".css"),l=o?'[rel="stylesheet"]':"";if(!!s)for(let d=r.length-1;d>=0;d--){const p=r[d];if(p.href===i&&(!o||p.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${l}`))return;const a=document.createElement("link");if(a.rel=o?"stylesheet":Gl,o||(a.as="script",a.crossOrigin=""),a.href=i,document.head.appendChild(a),o)return new Promise((d,p)=>{a.addEventListener("load",d),a.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>t())},tc=window.__VP_SITE_DATA__,ci=/^[a-z]+:/i,qc=/^pathname:\/\//,Vc="vitepress-theme-appearance",fi=/#.*$/,nc=/(index)?\.(md|html)$/,Ce=typeof document<"u",ui={relativePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function sc(e,t,n=!1){if(t===void 0)return!1;if(e=Gs(`/${e}`),n)return new RegExp(t).test(e);if(Gs(t)!==e)return!1;const s=t.match(fi);return s?(Ce?location.hash:"")===s[0]:!0}function Gs(e){return decodeURI(e).replace(fi,"").replace(nc,"")}function rc(e){return ci.test(e)}function ic(e,t){var s,r,i,o,l,c,a;const n=Object.keys(e.locales).find(d=>d!=="root"&&!rc(d)&&sc(t,`/${d}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:di(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function ai(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=oc(e.title,s);return`${n}${r}`}function oc(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function lc(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function di(e,t){return[...e.filter(n=>!lc(t,n)),...t]}const cc=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,fc=/^[a-z]:/i;function er(e){const t=fc.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(cc,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const uc=Symbol(),nt=fo(tc);function zc(e){const t=ve(()=>ic(nt.value,e.data.relativePath));return{site:t,theme:ve(()=>t.value.themeConfig),page:ve(()=>e.data),frontmatter:ve(()=>e.data.frontmatter),params:ve(()=>e.data.params),lang:ve(()=>t.value.lang),dir:ve(()=>t.value.dir),localeIndex:ve(()=>t.value.localeIndex||"root"),title:ve(()=>ai(t.value,e.data)),description:ve(()=>e.data.description||t.value.description),isDark:At(!1)}}function Yc(){const e=ht(uc);if(!e)throw new Error("vitepress data not properly injected in app");return e}function ac(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function tr(e){return ci.test(e)||e.startsWith(".")?e:ac(nt.value.base,e)}function dc(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/daydayup/";t=er(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),t=`${n}assets/${t}.${s}.js`}else t=`./${er(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Qt=[];function Jc(e){Qt.push(e),yn(()=>{Qt=Qt.filter(t=>t!==e)})}const hc=Symbol(),nr="http://a.com",pc=()=>({path:"/",component:null,data:ui});function Xc(e,t){const n=dn(pc()),s={route:n,go:r};async function r(l=Ce?location.href:"/"){var a,d;await((a=s.onBeforeRouteChange)==null?void 0:a.call(s,l));const c=new URL(l,nr);nt.value.cleanUrls||!c.pathname.endsWith("/")&&!c.pathname.endsWith(".html")&&(c.pathname+=".html",l=c.pathname+c.search+c.hash),Ce&&l!==location.href&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",l)),await o(l),await((d=s.onAfterRouteChanged)==null?void 0:d.call(s,l))}let i=null;async function o(l,c=0,a=!1){const d=new URL(l,nr),p=i=d.pathname;try{let y=await e(p);if(i===p){i=null;const{default:v,__pageData:R}=y;if(!v)throw new Error(`Invalid route component: ${v}`);n.path=Ce?p:tr(p),n.component=Tt(v),n.data=Tt(R),Ce&&Ir(()=>{let O=nt.value.base+R.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!nt.value.cleanUrls&&!O.endsWith("/")&&(O+=".html"),O!==d.pathname&&(d.pathname=O,l=O+d.search+d.hash,history.replaceState(null,"",l)),d.hash&&!c){let j=null;try{j=document.querySelector(decodeURIComponent(d.hash))}catch(g){console.warn(g)}if(j){sr(j,d.hash);return}}window.scrollTo(0,c)})}}catch(y){if(!/fetch/.test(y.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(y),!a)try{const v=await fetch(nt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await v.json(),await o(l,c,!0);return}catch{}i===p&&(i=null,n.path=Ce?p:tr(p),n.component=t?Tt(t):null,n.data=ui)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:d}=a,{href:p,origin:y,pathname:v,hash:R,search:O}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),j=window.location,g=v.match(/\.\w+$/);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&d!=="_blank"&&y===j.origin&&!(g&&g[0]!==".html")&&(l.preventDefault(),v===j.pathname&&O===j.search?R&&(R!==j.hash&&(history.pushState(null,"",R),window.dispatchEvent(new Event("hashchange"))),sr(a,R,a.classList.contains("header-anchor"))):r(p))}},{capture:!0}),window.addEventListener("popstate",l=>{o(location.href,l.state&&l.state.scrollPosition||0)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function gc(){const e=ht(hc);if(!e)throw new Error("useRouter() is called without provider.");return e}function hi(){return gc().route}function sr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.querySelector(decodeURIComponent(t))}catch(r){console.warn(r)}if(s){const r=nt.value.scrollOffset;let i=0;if(typeof r=="number")i=r;else if(typeof r=="string")i=rr(r);else if(Array.isArray(r))for(const c of r){const a=rr(c);if(a){i=a;break}}const o=parseInt(window.getComputedStyle(s).paddingTop,10),l=window.scrollY+s.getBoundingClientRect().top-i+o;!n||Math.abs(l-window.scrollY)>window.innerHeight?window.scrollTo(0,l):window.scrollTo({left:0,top:l,behavior:"smooth"})}}function rr(e){const t=document.querySelector(e);if(!t)return 0;const n=t.getBoundingClientRect().bottom;return n<0?0:n+24}const ir=()=>Qt.forEach(e=>e()),Zc=cs({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=hi();return()=>kn(e.as,{style:{position:"relative"}},[t.component?kn(t.component,{onVnodeMounted:ir,onVnodeUpdated:ir}):"404 Page Not Found"])}});function Qc(e,t){let n=[],s=!0;const r=i=>{if(s){s=!1;return}n.forEach(o=>document.head.removeChild(o)),n=[],i.forEach(o=>{const l=mc(o);document.head.appendChild(l),n.push(l)})};Po(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[];document.title=ai(o,i),document.querySelector("meta[name=description]").setAttribute("content",l||o.description),r(di(o.head,bc(c)))})}function mc([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),s}function _c(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function bc(e){return e.filter(t=>!_c(t))}const Mn=new Set,pi=()=>document.createElement("link"),yc=e=>{const t=pi();t.rel="prefetch",t.href=e,document.head.appendChild(t)},wc=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let Yt;const Cc=Ce&&(Yt=pi())&&Yt.relList&&Yt.relList.supports&&Yt.relList.supports("prefetch")?yc:wc;function Gc(){if(!Ce||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!Mn.has(c)){Mn.add(c);const a=dc(c);Cc(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{target:o}=i,{hostname:l,pathname:c}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),a=c.match(/\.\w+$/);a&&a[0]!==".html"||o!=="_blank"&&l===location.hostname&&(c!==location.pathname?n.observe(i):Mn.add(c))})})};bn(s);const r=hi();Xt(()=>r.path,s),yn(()=>{n&&n.disconnect()})}const ef=cs({setup(e,{slots:t}){const n=At(!1);return bn(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function tf(){if(Ce){const e=new Map;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className);let l="";i.querySelectorAll("span.line:not(.diff.remove)").forEach(c=>l+=(c.textContent||"")+` -`),l=l.slice(0,-1),o&&(l=l.replace(/^ *(\$|>) /gm,"").trim()),xc(l).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const c=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,c)})}})}}async function xc(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function nf(){Ce&&window.addEventListener("click",e=>{var n,s;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement,i=Array.from((r==null?void 0:r.querySelectorAll("input"))||[]).indexOf(t),o=r==null?void 0:r.querySelector('div[class*="language-"].active'),l=(s=r==null?void 0:r.querySelectorAll('div[class*="language-"]:not(.language-id)'))==null?void 0:s[i];o&&l&&o!==l&&(o.classList.remove("active"),l.classList.add("active"))}})}export{Dc as $,Qr as A,vo as B,jc as C,dl as D,re as E,he as F,Pc as G,Fc as H,Vn as I,Wc as J,Mc as K,ci as L,Ce as M,Sc as N,Rc as O,qc as P,Ic as Q,Hc as R,Vc as S,oi as T,ht as U,Fo as V,Bo as W,Jc as X,fo as Y,Ir as Z,kc as _,ti as a,Nc as a0,Oc as a1,Bc as a2,Uc as a3,Qc as a4,Gc as a5,tf as a6,nf as a7,kn as a8,hc as a9,zc as aa,uc as ab,Zc as ac,ef as ad,nt as ae,Kc as af,Xc as ag,dc as ah,gc as ai,ao as b,$c as c,cs as d,Ac as e,xr as f,Tc as g,At as h,Li as i,vc as j,Po as k,ve as l,ni as m,zn as n,Xr as o,bn as p,rc as q,Lc as r,tr as s,Ec as t,Yc as u,sc as v,Xt as w,hi as x,yn as y,ei as z}; diff --git a/assets/chunks/framework.D5F7AbHZ.js b/assets/chunks/framework.D5F7AbHZ.js new file mode 100644 index 0000000..e2c07a9 --- /dev/null +++ b/assets/chunks/framework.D5F7AbHZ.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function vs(e,t){const n=new Set(e.split(","));return t?s=>n.has(s.toLowerCase()):s=>n.has(s)}const te={},mt=[],xe=()=>{},lo=()=>!1,Bt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),bs=e=>e.startsWith("onUpdate:"),le=Object.assign,ws=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},co=Object.prototype.hasOwnProperty,Y=(e,t)=>co.call(e,t),B=Array.isArray,yt=e=>En(e)==="[object Map]",Vr=e=>En(e)==="[object Set]",W=e=>typeof e=="function",se=e=>typeof e=="string",St=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Dr=e=>(Z(e)||W(e))&&W(e.then)&&W(e.catch),Ur=Object.prototype.toString,En=e=>Ur.call(e),ao=e=>En(e).slice(8,-1),Br=e=>En(e)==="[object Object]",Es=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=vs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Cn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},uo=/-(\w)/g,Me=Cn(e=>e.replace(uo,(t,n)=>n?n.toUpperCase():"")),fo=/\B([A-Z])/g,at=Cn(e=>e.replace(fo,"-$1").toLowerCase()),xn=Cn(e=>e.charAt(0).toUpperCase()+e.slice(1)),an=Cn(e=>e?`on${xn(e)}`:""),Qe=(e,t)=>!Object.is(e,t),Dn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},ho=e=>{const t=parseFloat(e);return isNaN(t)?e:t},po=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let Gs;const kr=()=>Gs||(Gs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Cs(e){if(B(e)){const t={};for(let n=0;n{if(n){const s=n.split(mo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function xs(e){let t="";if(se(e))t=e;else if(B(e))for(let n=0;nse(e)?e:e==null?"":B(e)||Z(e)&&(e.toString===Ur||!W(e.toString))?JSON.stringify(e,Wr,2):String(e),Wr=(e,t)=>t&&t.__v_isRef?Wr(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Un(s,i)+" =>"]=r,n),{})}:Vr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Un(n))}:St(t)?Un(t):Z(t)&&!B(t)&&!Br(t)?String(t):t,Un=(e,t="")=>{var n;return St(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ve;class wo{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=ve;try{return ve=this,t()}finally{ve=n}}}on(){ve=this}off(){ve=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),ft()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Xe,n=ot;try{return Xe=!0,ot=this,this._runnings++,zs(this),this.fn()}finally{Xs(this),this._runnings--,ot=n,Xe=t}}stop(){var t;this.active&&(zs(this),Xs(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function xo(e){return e.value}function zs(e){e._trackId++,e._depsLength=0}function Xs(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},pn=new WeakMap,lt=Symbol(""),ls=Symbol("");function ye(e,t,n){if(Xe&&ot){let s=pn.get(e);s||pn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=Jr(()=>s.delete(n))),Xr(ot,r)}}function He(e,t,n,s,r,i){const o=pn.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(n==="length"&&B(e)){const c=Number(s);o.forEach((u,d)=>{(d==="length"||!St(d)&&d>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":B(e)?Es(n)&&l.push(o.get("length")):(l.push(o.get(lt)),yt(e)&&l.push(o.get(ls)));break;case"delete":B(e)||(l.push(o.get(lt)),yt(e)&&l.push(o.get(ls)));break;case"set":yt(e)&&l.push(o.get(lt));break}Ts();for(const c of l)c&&Yr(c,4);As()}function So(e,t){var n;return(n=pn.get(e))==null?void 0:n.get(t)}const To=vs("__proto__,__v_isRef,__isVue"),Qr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(St)),Ys=Ao();function Ao(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i{e[t]=function(...n){ut(),Ts();const s=J(this)[t].apply(this,n);return As(),ft(),s}}),e}function Ro(e){const t=J(this);return ye(t,"has",e),t.hasOwnProperty(e)}class Zr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Uo:si:i?ni:ti).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=B(t);if(!r){if(o&&Y(Ys,n))return Reflect.get(Ys,n,s);if(n==="hasOwnProperty")return Ro}const l=Reflect.get(t,n,s);return(St(n)?Qr.has(n):To(n))||(r||ye(t,"get",n),i)?l:he(l)?o&&Es(n)?l:l.value:Z(l)?r?An(l):Tn(l):l}}class ei extends Zr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=Ct(i);if(!gn(s)&&!Ct(s)&&(i=J(i),s=J(s)),!B(t)&&he(i)&&!he(s))return c?!1:(i.value=s,!0)}const o=B(t)&&Es(n)?Number(n)e,Sn=e=>Reflect.getPrototypeOf(e);function Xt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(Qe(t,i)&&ye(r,"get",t),ye(r,"get",i));const{has:o}=Sn(r),l=s?Rs:n?Is:Ht;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Yt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Qe(e,r)&&ye(s,"has",e),ye(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Jt(e,t=!1){return e=e.__v_raw,!t&&ye(J(e),"iterate",lt),Reflect.get(e,"size",e)}function Js(e){e=J(e);const t=J(this);return Sn(t).has.call(t,e)||(t.add(e),He(t,"add",e,e)),this}function Qs(e,t){t=J(t);const n=J(this),{has:s,get:r}=Sn(n);let i=s.call(n,e);i||(e=J(e),i=s.call(n,e));const o=r.call(n,e);return n.set(e,t),i?Qe(t,o)&&He(n,"set",e,t):He(n,"add",e,t),this}function Zs(e){const t=J(this),{has:n,get:s}=Sn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&He(t,"delete",e,void 0),i}function er(){const e=J(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function Qt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?Rs:e?Is:Ht;return!e&&ye(l,"iterate",lt),o.forEach((u,d)=>s.call(r,c(u),c(d),i))}}function Zt(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=yt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=r[e](...s),d=n?Rs:t?Is:Ht;return!t&&ye(i,"iterate",c?ls:lt),{next(){const{value:h,done:p}=u.next();return p?{value:h,done:p}:{value:l?[d(h[0]),d(h[1])]:d(h),done:p}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Mo(){const e={get(i){return Xt(this,i)},get size(){return Jt(this)},has:Yt,add:Js,set:Qs,delete:Zs,clear:er,forEach:Qt(!1,!1)},t={get(i){return Xt(this,i,!1,!0)},get size(){return Jt(this)},has:Yt,add:Js,set:Qs,delete:Zs,clear:er,forEach:Qt(!1,!0)},n={get(i){return Xt(this,i,!0)},get size(){return Jt(this,!0)},has(i){return Yt.call(this,i,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:Qt(!0,!1)},s={get(i){return Xt(this,i,!0,!0)},get size(){return Jt(this,!0)},has(i){return Yt.call(this,i,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:Qt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Zt(i,!1,!1),n[i]=Zt(i,!0,!1),t[i]=Zt(i,!1,!0),s[i]=Zt(i,!0,!0)}),[e,n,t,s]}const[No,Fo,$o,Ho]=Mo();function Os(e,t){const n=t?e?Ho:$o:e?Fo:No;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Y(n,r)&&r in s?n:s,r,i)}const jo={get:Os(!1,!1)},Vo={get:Os(!1,!0)},Do={get:Os(!0,!1)},ti=new WeakMap,ni=new WeakMap,si=new WeakMap,Uo=new WeakMap;function Bo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ko(e){return e.__v_skip||!Object.isExtensible(e)?0:Bo(ao(e))}function Tn(e){return Ct(e)?e:Ls(e,!1,Lo,jo,ti)}function Ko(e){return Ls(e,!1,Po,Vo,ni)}function An(e){return Ls(e,!0,Io,Do,si)}function Ls(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=ko(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function vt(e){return Ct(e)?vt(e.__v_raw):!!(e&&e.__v_isReactive)}function Ct(e){return!!(e&&e.__v_isReadonly)}function gn(e){return!!(e&&e.__v_isShallow)}function ri(e){return vt(e)||Ct(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Lt(e){return Object.isExtensible(e)&&hn(e,"__v_skip",!0),e}const Ht=e=>Z(e)?Tn(e):e,Is=e=>Z(e)?An(e):e;class ii{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ss(()=>t(this._value),()=>It(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Qe(t._value,t._value=t.effect.run())&&It(t,4),Ps(t),t.effect._dirtyLevel>=2&&It(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Wo(e,t,n=!1){let s,r;const i=W(e);return i?(s=e,r=xe):(s=e.get,r=e.set),new ii(s,r,i||!r,n)}function Ps(e){var t;Xe&&ot&&(e=J(e),Xr(ot,(t=e.dep)!=null?t:e.dep=Jr(()=>e.dep=void 0,e instanceof ii?e:void 0)))}function It(e,t=4,n){e=J(e);const s=e.dep;s&&Yr(s,t)}function he(e){return!!(e&&e.__v_isRef===!0)}function oe(e){return li(e,!1)}function oi(e){return li(e,!0)}function li(e,t){return he(e)?e:new qo(e,t)}class qo{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Ht(t)}get value(){return Ps(this),this._value}set value(t){const n=this.__v_isShallow||gn(t)||Ct(t);t=n?t:J(t),Qe(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Ht(t),It(this,4))}}function ci(e){return he(e)?e.value:e}const Go={get:(e,t,n)=>ci(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return he(r)&&!he(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ai(e){return vt(e)?e:new Proxy(e,Go)}class zo{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>Ps(this),()=>It(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function Xo(e){return new zo(e)}class Yo{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,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 So(J(this._object),this._key)}}class Jo{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Qo(e,t,n){return he(e)?e:W(e)?new Jo(e):Z(e)&&arguments.length>1?Zo(e,t,n):oe(e)}function Zo(e,t,n){const s=e[t];return he(s)?s:new Yo(e,t,n)}/** +* @vue/runtime-core v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ye(e,t,n,s){try{return s?e(...s):e()}catch(r){kt(r,t,n)}}function Se(e,t,n,s){if(W(e)){const i=Ye(e,t,n,s);return i&&Dr(i)&&i.catch(o=>{kt(o,t,n)}),i}const r=[];for(let i=0;i>>1,r=fe[s],i=Vt(r);iPe&&fe.splice(t,1)}function sl(e){B(e)?bt.push(...e):(!We||!We.includes(e,e.allowRecurse?rt+1:rt))&&bt.push(e),fi()}function tr(e,t,n=jt?Pe+1:0){for(;nVt(n)-Vt(s));if(bt.length=0,We){We.push(...t);return}for(We=t,rt=0;rte.id==null?1/0:e.id,rl=(e,t)=>{const n=Vt(e)-Vt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function di(e){cs=!1,jt=!0,fe.sort(rl);try{for(Pe=0;Pese(y)?y.trim():y)),h&&(r=n.map(ho))}let l,c=s[l=an(t)]||s[l=an(Me(t))];!c&&i&&(c=s[l=an(at(t))]),c&&Se(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(u,e,6,r)}}function hi(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!W(e)){const c=u=>{const d=hi(u,t,!0);d&&(l=!0,le(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(Z(e)&&s.set(e,null),null):(B(i)?i.forEach(c=>o[c]=null):le(o,i),Z(e)&&s.set(e,o),o)}function Ln(e,t){return!e||!Bt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,at(t))||Y(e,t))}let de=null,In=null;function yn(e){const t=de;return de=e,In=e&&e.type.__scopeId||null,t}function Ha(e){In=e}function ja(){In=null}function ol(e,t=de,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&hr(-1);const i=yn(t);let o;try{o=e(...r)}finally{yn(i),s._d&&hr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Bn(e){const{type:t,vnode:n,proxy:s,withProxy:r,props:i,propsOptions:[o],slots:l,attrs:c,emit:u,render:d,renderCache:h,data:p,setupState:y,ctx:E,inheritAttrs:M}=e;let N,q;const k=yn(e);try{if(n.shapeFlag&4){const _=r||s,P=_;N=Ae(d.call(P,_,h,i,y,p,E)),q=c}else{const _=t;N=Ae(_.length>1?_(i,{attrs:c,slots:l,emit:u}):_(i,null)),q=t.props?c:ll(c)}}catch(_){Ft.length=0,kt(_,e,1),N=ne(be)}let m=N;if(q&&M!==!1){const _=Object.keys(q),{shapeFlag:P}=m;_.length&&P&7&&(o&&_.some(bs)&&(q=cl(q,o)),m=Ze(m,q))}return n.dirs&&(m=Ze(m),m.dirs=m.dirs?m.dirs.concat(n.dirs):n.dirs),n.transition&&(m.transition=n.transition),N=m,yn(k),N}const ll=e=>{let t;for(const n in e)(n==="class"||n==="style"||Bt(n))&&((t||(t={}))[n]=e[n]);return t},cl=(e,t)=>{const n={};for(const s in e)(!bs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function al(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?nr(s,o,u):!!o;if(c&8){const d=t.dynamicProps;for(let h=0;he.__isSuspense;function mi(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):sl(e)}const dl=Symbol.for("v-scx"),hl=()=>Et(dl);function yi(e,t){return Pn(e,null,t)}function Ua(e,t){return Pn(e,null,{flush:"post"})}const en={};function je(e,t,n){return Pn(e,t,n)}function Pn(e,t,{immediate:n,deep:s,flush:r,once:i,onTrack:o,onTrigger:l}=te){if(t&&i){const L=t;t=(...D)=>{L(...D),P()}}const c=ae,u=L=>s===!0?L:pt(L,s===!1?1:void 0);let d,h=!1,p=!1;if(he(e)?(d=()=>e.value,h=gn(e)):vt(e)?(d=()=>u(e),h=!0):B(e)?(p=!0,h=e.some(L=>vt(L)||gn(L)),d=()=>e.map(L=>{if(he(L))return L.value;if(vt(L))return u(L);if(W(L))return Ye(L,c,2)})):W(e)?t?d=()=>Ye(e,c,2):d=()=>(y&&y(),Se(e,c,3,[E])):d=xe,t&&s){const L=d;d=()=>pt(L())}let y,E=L=>{y=m.onStop=()=>{Ye(L,c,4),y=m.onStop=void 0}},M;if(qt)if(E=xe,t?n&&Se(t,c,3,[d(),p?[]:void 0,E]):d(),r==="sync"){const L=hl();M=L.__watcherHandles||(L.__watcherHandles=[])}else return xe;let N=p?new Array(e.length).fill(en):en;const q=()=>{if(!(!m.active||!m.dirty))if(t){const L=m.run();(s||h||(p?L.some((D,O)=>Qe(D,N[O])):Qe(L,N)))&&(y&&y(),Se(t,c,3,[L,N===en?void 0:p&&N[0]===en?[]:N,E]),N=L)}else m.run()};q.allowRecurse=!!t;let k;r==="sync"?k=q:r==="post"?k=()=>ge(q,c&&c.suspense):(q.pre=!0,c&&(q.id=c.uid),k=()=>On(q));const m=new Ss(d,xe,k),_=qr(),P=()=>{m.stop(),_&&ws(_.effects,m)};return t?n?q():N=m.run():r==="post"?ge(m.run.bind(m),c&&c.suspense):m.run(),M&&M.push(P),P}function pl(e,t,n){const s=this.proxy,r=se(e)?e.includes(".")?_i(s,e):()=>s[e]:e.bind(s,s);let i;W(t)?i=t:(i=t.handler,n=t);const o=Wt(this),l=Pn(r,i.bind(s),n);return o(),l}function _i(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r0){if(n>=t)return e;n++}if(s=s||new Set,s.has(e))return e;if(s.add(e),he(e))pt(e.value,t,n,s);else if(B(e))for(let r=0;r{pt(r,t,n,s)});else if(Br(e))for(const r in e)pt(e[r],t,n,s);return e}function Ie(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o{e.isMounted=!0}),Ci(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],vi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},ml={name:"BaseTransition",props:vi,setup(e,{slots:t}){const n=$n(),s=gl();return()=>{const r=t.default&&wi(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const p of r)if(p.type!==be){i=p;break}}const o=J(e),{mode:l}=o;if(s.isLeaving)return kn(i);const c=rr(i);if(!c)return kn(i);const u=as(c,o,s,n);us(c,u);const d=n.subTree,h=d&&rr(d);if(h&&h.type!==be&&!it(c,h)){const p=as(h,o,s,n);if(us(h,p),l==="out-in")return s.isLeaving=!0,p.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},kn(i);l==="in-out"&&c.type!==be&&(p.delayLeave=(y,E,M)=>{const N=bi(s,h);N[String(h.key)]=h,y[qe]=()=>{E(),y[qe]=void 0,delete u.delayedLeave},u.delayedLeave=M})}return i}}},yl=ml;function bi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function as(e,t,n,s){const{appear:r,mode:i,persisted:o=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:h,onLeave:p,onAfterLeave:y,onLeaveCancelled:E,onBeforeAppear:M,onAppear:N,onAfterAppear:q,onAppearCancelled:k}=t,m=String(e.key),_=bi(n,e),P=(O,V)=>{O&&Se(O,s,9,V)},L=(O,V)=>{const C=V[1];P(O,V),B(O)?O.every(U=>U.length<=1)&&C():O.length<=1&&C()},D={mode:i,persisted:o,beforeEnter(O){let V=l;if(!n.isMounted)if(r)V=M||l;else return;O[qe]&&O[qe](!0);const C=_[m];C&&it(e,C)&&C.el[qe]&&C.el[qe](),P(V,[O])},enter(O){let V=c,C=u,U=d;if(!n.isMounted)if(r)V=N||c,C=q||u,U=k||d;else return;let T=!1;const G=O[tn]=ie=>{T||(T=!0,ie?P(U,[O]):P(C,[O]),D.delayedLeave&&D.delayedLeave(),O[tn]=void 0)};V?L(V,[O,G]):G()},leave(O,V){const C=String(e.key);if(O[tn]&&O[tn](!0),n.isUnmounting)return V();P(h,[O]);let U=!1;const T=O[qe]=G=>{U||(U=!0,V(),G?P(E,[O]):P(y,[O]),O[qe]=void 0,_[C]===e&&delete _[C])};_[C]=e,p?L(p,[O,T]):T()},clone(O){return as(O,t,n,s)}};return D}function kn(e){if(Kt(e))return e=Ze(e),e.children=null,e}function rr(e){return Kt(e)?e.children?e.children[0]:void 0:e}function us(e,t){e.shapeFlag&6&&e.component?us(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 wi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Ba(e){W(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,timeout:i,suspensible:o=!0,onError:l}=e;let c=null,u,d=0;const h=()=>(d++,c=null,p()),p=()=>{let y;return c||(y=c=t().catch(E=>{if(E=E instanceof Error?E:new Error(String(E)),l)return new Promise((M,N)=>{l(E,()=>M(h()),()=>N(E),d+1)});throw E}).then(E=>y!==c&&c?c:(E&&(E.__esModule||E[Symbol.toStringTag]==="Module")&&(E=E.default),u=E,E)))};return Fs({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return u},setup(){const y=ae;if(u)return()=>Kn(u,y);const E=k=>{c=null,kt(k,y,13,!s)};if(o&&y.suspense||qt)return p().then(k=>()=>Kn(k,y)).catch(k=>(E(k),()=>s?ne(s,{error:k}):null));const M=oe(!1),N=oe(),q=oe(!!r);return r&&setTimeout(()=>{q.value=!1},r),i!=null&&setTimeout(()=>{if(!M.value&&!N.value){const k=new Error(`Async component timed out after ${i}ms.`);E(k),N.value=k}},i),p().then(()=>{M.value=!0,y.parent&&Kt(y.parent.vnode)&&(y.parent.effect.dirty=!0,On(y.parent.update))}).catch(k=>{E(k),N.value=k}),()=>{if(M.value&&u)return Kn(u,y);if(N.value&&s)return ne(s,{error:N.value});if(n&&!q.value)return ne(n)}}})}function Kn(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ne(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const Kt=e=>e.type.__isKeepAlive;function _l(e,t){Ei(e,"a",t)}function vl(e,t){Ei(e,"da",t)}function Ei(e,t,n=ae){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Mn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Kt(r.parent.vnode)&&bl(s,t,n,r),r=r.parent}}function bl(e,t,n,s){const r=Mn(t,e,s,!0);Nn(()=>{ws(s[t],r)},n)}function Mn(e,t,n=ae,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;ut();const l=Wt(n),c=Se(t,n,e,o);return l(),ft(),c});return s?r.unshift(i):r.push(i),i}}const De=e=>(t,n=ae)=>(!qt||e==="sp")&&Mn(e,(...s)=>t(...s),n),wl=De("bm"),Tt=De("m"),El=De("bu"),Cl=De("u"),Ci=De("bum"),Nn=De("um"),xl=De("sp"),Sl=De("rtg"),Tl=De("rtc");function Al(e,t=ae){Mn("ec",e,t)}function ka(e,t,n,s){let r;const i=n&&n[s];if(B(e)||se(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i&&i[l]));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lbn(t)?!(t.type===be||t.type===me&&!xi(t.children)):!0)?e:null}function Wa(e,t){const n={};for(const s in e)n[t&&/[A-Z]/.test(s)?`on:${s}`:an(s)]=e[s];return n}const fs=e=>e?Ui(e)?Vs(e)||e.proxy:fs(e.parent):null,Pt=le(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=>fs(e.parent),$root:e=>fs(e.root),$emit:e=>e.emit,$options:e=>$s(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,On(e.update)}),$nextTick:e=>e.n||(e.n=Rn.bind(e.proxy)),$watch:e=>pl.bind(e)}),Wn=(e,t)=>e!==te&&!e.__isScriptSetup&&Y(e,t),Rl={get({_:e},t){const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const y=o[t];if(y!==void 0)switch(y){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Wn(s,t))return o[t]=1,s[t];if(r!==te&&Y(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&Y(u,t))return o[t]=3,i[t];if(n!==te&&Y(n,t))return o[t]=4,n[t];ds&&(o[t]=0)}}const d=Pt[t];let h,p;if(d)return t==="$attrs"&&ye(e,"get",t),d(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&Y(n,t))return o[t]=4,n[t];if(p=c.config.globalProperties,Y(p,t))return p[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Wn(r,t)?(r[t]=n,!0):s!==te&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==te&&Y(e,o)||Wn(t,o)||(l=i[0])&&Y(l,o)||Y(s,o)||Y(Pt,o)||Y(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function qa(){return Ol().slots}function Ol(){const e=$n();return e.setupContext||(e.setupContext=ki(e))}function ir(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ds=!0;function Ll(e){const t=$s(e),n=e.proxy,s=e.ctx;ds=!1,t.beforeCreate&&or(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:u,created:d,beforeMount:h,mounted:p,beforeUpdate:y,updated:E,activated:M,deactivated:N,beforeDestroy:q,beforeUnmount:k,destroyed:m,unmounted:_,render:P,renderTracked:L,renderTriggered:D,errorCaptured:O,serverPrefetch:V,expose:C,inheritAttrs:U,components:T,directives:G,filters:ie}=t;if(u&&Il(u,s,null),o)for(const X in o){const $=o[X];W($)&&(s[X]=$.bind(n))}if(r){const X=r.call(n,n);Z(X)&&(e.data=Tn(X))}if(ds=!0,i)for(const X in i){const $=i[X],Fe=W($)?$.bind(n,n):W($.get)?$.get.bind(n,n):xe,Gt=!W($)&&W($.set)?$.set.bind(n):xe,et=re({get:Fe,set:Gt});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>et.value,set:Oe=>et.value=Oe})}if(l)for(const X in l)Si(l[X],s,n,X);if(c){const X=W(c)?c.call(n):c;Reflect.ownKeys(X).forEach($=>{Hl($,X[$])})}d&&or(d,e,"c");function H(X,$){B($)?$.forEach(Fe=>X(Fe.bind(n))):$&&X($.bind(n))}if(H(wl,h),H(Tt,p),H(El,y),H(Cl,E),H(_l,M),H(vl,N),H(Al,O),H(Tl,L),H(Sl,D),H(Ci,k),H(Nn,_),H(xl,V),B(C))if(C.length){const X=e.exposed||(e.exposed={});C.forEach($=>{Object.defineProperty(X,$,{get:()=>n[$],set:Fe=>n[$]=Fe})})}else e.exposed||(e.exposed={});P&&e.render===xe&&(e.render=P),U!=null&&(e.inheritAttrs=U),T&&(e.components=T),G&&(e.directives=G)}function Il(e,t,n=xe){B(e)&&(e=hs(e));for(const s in e){const r=e[s];let i;Z(r)?"default"in r?i=Et(r.from||s,r.default,!0):i=Et(r.from||s):i=Et(r),he(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function or(e,t,n){Se(B(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Si(e,t,n,s){const r=s.includes(".")?_i(n,s):()=>n[s];if(se(e)){const i=t[e];W(i)&&je(r,i)}else if(W(e))je(r,e.bind(n));else if(Z(e))if(B(e))e.forEach(i=>Si(i,t,n,s));else{const i=W(e.handler)?e.handler.bind(n):t[e.handler];W(i)&&je(r,i,e)}}function $s(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>_n(c,u,o,!0)),_n(c,t,o)),Z(t)&&i.set(t,c),c}function _n(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&_n(e,i,n,!0),r&&r.forEach(o=>_n(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Pl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Pl={data:lr,props:cr,emits:cr,methods:Ot,computed:Ot,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Ot,directives:Ot,watch:Nl,provide:lr,inject:Ml};function lr(e,t){return t?e?function(){return le(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function Ml(e,t){return Ot(hs(e),hs(t))}function hs(e){if(B(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(s&&s.proxy):t}}function jl(e,t,n,s=!1){const r={},i={};hn(i,Fn,1),e.propsDefaults=Object.create(null),Ai(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Ko(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Vl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[p,y]=Ri(h,t,!0);le(o,p),y&&l.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return Z(e)&&s.set(e,mt),mt;if(B(i))for(let d=0;d-1,y[1]=M<0||E-1||Y(y,"default"))&&l.push(h)}}}const u=[o,l];return Z(e)&&s.set(e,u),u}function ar(e){return e[0]!=="$"&&!_t(e)}function ur(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function fr(e,t){return ur(e)===ur(t)}function dr(e,t){return B(t)?t.findIndex(n=>fr(n,e)):W(t)&&fr(t,e)?0:-1}const Oi=e=>e[0]==="_"||e==="$stable",Hs=e=>B(e)?e.map(Ae):[Ae(e)],Dl=(e,t,n)=>{if(t._n)return t;const s=ol((...r)=>Hs(t(...r)),n);return s._c=!1,s},Li=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Oi(r))continue;const i=e[r];if(W(i))t[r]=Dl(r,i,s);else if(i!=null){const o=Hs(i);t[r]=()=>o}}},Ii=(e,t)=>{const n=Hs(t);e.slots.default=()=>n},Ul=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),hn(t,"_",n)):Li(t,e.slots={})}else e.slots={},t&&Ii(e,t);hn(e.slots,Fn,1)},Bl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=te;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:(le(r,t),!n&&l===1&&delete r._):(i=!t.$stable,Li(t,r)),o=t}else t&&(Ii(e,t),o={default:1});if(i)for(const l in r)!Oi(l)&&o[l]==null&&delete r[l]};function vn(e,t,n,s,r=!1){if(B(e)){e.forEach((p,y)=>vn(p,t&&(B(t)?t[y]:t),n,s,r));return}if(wt(s)&&!r)return;const i=s.shapeFlag&4?Vs(s.component)||s.component.proxy:s.el,o=r?null:i,{i:l,r:c}=e,u=t&&t.r,d=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(se(u)?(d[u]=null,Y(h,u)&&(h[u]=null)):he(u)&&(u.value=null)),W(c))Ye(c,l,12,[o,d]);else{const p=se(c),y=he(c);if(p||y){const E=()=>{if(e.f){const M=p?Y(h,c)?h[c]:d[c]:c.value;r?B(M)&&ws(M,i):B(M)?M.includes(i)||M.push(i):p?(d[c]=[i],Y(h,c)&&(h[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else p?(d[c]=o,Y(h,c)&&(h[c]=o)):y&&(c.value=o,e.k&&(d[e.k]=o))};o?(E.id=-1,ge(E,n)):E()}}}let Be=!1;const kl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Kl=e=>e.namespaceURI.includes("MathML"),nn=e=>{if(kl(e))return"svg";if(Kl(e))return"mathml"},sn=e=>e.nodeType===8;function Wl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:u}}=e,d=(m,_)=>{if(!_.hasChildNodes()){n(null,m,_),mn(),_._vnode=m;return}Be=!1,h(_.firstChild,m,null,null,null),mn(),_._vnode=m,Be&&console.error("Hydration completed but contains mismatches.")},h=(m,_,P,L,D,O=!1)=>{const V=sn(m)&&m.data==="[",C=()=>M(m,_,P,L,D,V),{type:U,ref:T,shapeFlag:G,patchFlag:ie}=_;let ue=m.nodeType;_.el=m,ie===-2&&(O=!1,_.dynamicChildren=null);let H=null;switch(U){case xt:ue!==3?_.children===""?(c(_.el=r(""),o(m),m),H=m):H=C():(m.data!==_.children&&(Be=!0,m.data=_.children),H=i(m));break;case be:k(m)?(H=i(m),q(_.el=m.content.firstChild,m,P)):ue!==8||V?H=C():H=i(m);break;case Nt:if(V&&(m=i(m),ue=m.nodeType),ue===1||ue===3){H=m;const X=!_.children.length;for(let $=0;$<_.staticCount;$++)X&&(_.children+=H.nodeType===1?H.outerHTML:H.data),$===_.staticCount-1&&(_.anchor=H),H=i(H);return V?i(H):H}else C();break;case me:V?H=E(m,_,P,L,D,O):H=C();break;default:if(G&1)(ue!==1||_.type.toLowerCase()!==m.tagName.toLowerCase())&&!k(m)?H=C():H=p(m,_,P,L,D,O);else if(G&6){_.slotScopeIds=D;const X=o(m);if(V?H=N(m):sn(m)&&m.data==="teleport start"?H=N(m,m.data,"teleport end"):H=i(m),t(_,X,null,P,L,nn(X),O),wt(_)){let $;V?($=ne(me),$.anchor=H?H.previousSibling:X.lastChild):$=m.nodeType===3?Di(""):ne("div"),$.el=m,_.component.subTree=$}}else G&64?ue!==8?H=C():H=_.type.hydrate(m,_,P,L,D,O,e,y):G&128&&(H=_.type.hydrate(m,_,P,L,nn(o(m)),D,O,e,h))}return T!=null&&vn(T,null,L,_),H},p=(m,_,P,L,D,O)=>{O=O||!!_.dynamicChildren;const{type:V,props:C,patchFlag:U,shapeFlag:T,dirs:G,transition:ie}=_,ue=V==="input"||V==="option";if(ue||U!==-1){G&&Ie(_,null,P,"created");let H=!1;if(k(m)){H=Pi(L,ie)&&P&&P.vnode.props&&P.vnode.props.appear;const $=m.content.firstChild;H&&ie.beforeEnter($),q($,m,P),_.el=m=$}if(T&16&&!(C&&(C.innerHTML||C.textContent))){let $=y(m.firstChild,_,m,P,L,D,O);for(;$;){Be=!0;const Fe=$;$=$.nextSibling,l(Fe)}}else T&8&&m.textContent!==_.children&&(Be=!0,m.textContent=_.children);if(C)if(ue||!O||U&48)for(const $ in C)(ue&&($.endsWith("value")||$==="indeterminate")||Bt($)&&!_t($)||$[0]===".")&&s(m,$,null,C[$],void 0,void 0,P);else C.onClick&&s(m,"onClick",null,C.onClick,void 0,void 0,P);let X;(X=C&&C.onVnodeBeforeMount)&&Ee(X,P,_),G&&Ie(_,null,P,"beforeMount"),((X=C&&C.onVnodeMounted)||G||H)&&mi(()=>{X&&Ee(X,P,_),H&&ie.enter(m),G&&Ie(_,null,P,"mounted")},L)}return m.nextSibling},y=(m,_,P,L,D,O,V)=>{V=V||!!_.dynamicChildren;const C=_.children,U=C.length;for(let T=0;T{const{slotScopeIds:V}=_;V&&(D=D?D.concat(V):V);const C=o(m),U=y(i(m),_,C,P,L,D,O);return U&&sn(U)&&U.data==="]"?i(_.anchor=U):(Be=!0,c(_.anchor=u("]"),C,U),U)},M=(m,_,P,L,D,O)=>{if(Be=!0,_.el=null,O){const U=N(m);for(;;){const T=i(m);if(T&&T!==U)l(T);else break}}const V=i(m),C=o(m);return l(m),n(null,_,C,V,P,L,nn(C),D),V},N=(m,_="[",P="]")=>{let L=0;for(;m;)if(m=i(m),m&&sn(m)&&(m.data===_&&L++,m.data===P)){if(L===0)return i(m);L--}return m},q=(m,_,P)=>{const L=_.parentNode;L&&L.replaceChild(m,_);let D=P;for(;D;)D.vnode.el===_&&(D.vnode.el=D.subTree.el=m),D=D.parent},k=m=>m.nodeType===1&&m.tagName.toLowerCase()==="template";return[d,h]}const ge=mi;function ql(e){return Gl(e,Wl)}function Gl(e,t){const n=kr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:d,parentNode:h,nextSibling:p,setScopeId:y=xe,insertStaticContent:E}=e,M=(a,f,g,v=null,b=null,S=null,R=void 0,x=null,A=!!f.dynamicChildren)=>{if(a===f)return;a&&!it(a,f)&&(v=zt(a),Oe(a,b,S,!0),a=null),f.patchFlag===-2&&(A=!1,f.dynamicChildren=null);const{type:w,ref:I,shapeFlag:j}=f;switch(w){case xt:N(a,f,g,v);break;case be:q(a,f,g,v);break;case Nt:a==null&&k(f,g,v,R);break;case me:T(a,f,g,v,b,S,R,x,A);break;default:j&1?P(a,f,g,v,b,S,R,x,A):j&6?G(a,f,g,v,b,S,R,x,A):(j&64||j&128)&&w.process(a,f,g,v,b,S,R,x,A,dt)}I!=null&&b&&vn(I,a&&a.ref,S,f||a,!f)},N=(a,f,g,v)=>{if(a==null)s(f.el=l(f.children),g,v);else{const b=f.el=a.el;f.children!==a.children&&u(b,f.children)}},q=(a,f,g,v)=>{a==null?s(f.el=c(f.children||""),g,v):f.el=a.el},k=(a,f,g,v)=>{[a.el,a.anchor]=E(a.children,f,g,v,a.el,a.anchor)},m=({el:a,anchor:f},g,v)=>{let b;for(;a&&a!==f;)b=p(a),s(a,g,v),a=b;s(f,g,v)},_=({el:a,anchor:f})=>{let g;for(;a&&a!==f;)g=p(a),r(a),a=g;r(f)},P=(a,f,g,v,b,S,R,x,A)=>{f.type==="svg"?R="svg":f.type==="math"&&(R="mathml"),a==null?L(f,g,v,b,S,R,x,A):V(a,f,b,S,R,x,A)},L=(a,f,g,v,b,S,R,x)=>{let A,w;const{props:I,shapeFlag:j,transition:F,dirs:K}=a;if(A=a.el=o(a.type,S,I&&I.is,I),j&8?d(A,a.children):j&16&&O(a.children,A,null,v,b,qn(a,S),R,x),K&&Ie(a,null,v,"created"),D(A,a,a.scopeId,R,v),I){for(const Q in I)Q!=="value"&&!_t(Q)&&i(A,Q,null,I[Q],S,a.children,v,b,$e);"value"in I&&i(A,"value",null,I.value,S),(w=I.onVnodeBeforeMount)&&Ee(w,v,a)}K&&Ie(a,null,v,"beforeMount");const z=Pi(b,F);z&&F.beforeEnter(A),s(A,f,g),((w=I&&I.onVnodeMounted)||z||K)&&ge(()=>{w&&Ee(w,v,a),z&&F.enter(A),K&&Ie(a,null,v,"mounted")},b)},D=(a,f,g,v,b)=>{if(g&&y(a,g),v)for(let S=0;S{for(let w=A;w{const x=f.el=a.el;let{patchFlag:A,dynamicChildren:w,dirs:I}=f;A|=a.patchFlag&16;const j=a.props||te,F=f.props||te;let K;if(g&&tt(g,!1),(K=F.onVnodeBeforeUpdate)&&Ee(K,g,f,a),I&&Ie(f,a,g,"beforeUpdate"),g&&tt(g,!0),w?C(a.dynamicChildren,w,x,g,v,qn(f,b),S):R||$(a,f,x,null,g,v,qn(f,b),S,!1),A>0){if(A&16)U(x,f,j,F,g,v,b);else if(A&2&&j.class!==F.class&&i(x,"class",null,F.class,b),A&4&&i(x,"style",j.style,F.style,b),A&8){const z=f.dynamicProps;for(let Q=0;Q{K&&Ee(K,g,f,a),I&&Ie(f,a,g,"updated")},v)},C=(a,f,g,v,b,S,R)=>{for(let x=0;x{if(g!==v){if(g!==te)for(const x in g)!_t(x)&&!(x in v)&&i(a,x,g[x],null,R,f.children,b,S,$e);for(const x in v){if(_t(x))continue;const A=v[x],w=g[x];A!==w&&x!=="value"&&i(a,x,w,A,R,f.children,b,S,$e)}"value"in v&&i(a,"value",g.value,v.value,R)}},T=(a,f,g,v,b,S,R,x,A)=>{const w=f.el=a?a.el:l(""),I=f.anchor=a?a.anchor:l("");let{patchFlag:j,dynamicChildren:F,slotScopeIds:K}=f;K&&(x=x?x.concat(K):K),a==null?(s(w,g,v),s(I,g,v),O(f.children||[],g,I,b,S,R,x,A)):j>0&&j&64&&F&&a.dynamicChildren?(C(a.dynamicChildren,F,g,b,S,R,x),(f.key!=null||b&&f===b.subTree)&&Mi(a,f,!0)):$(a,f,g,I,b,S,R,x,A)},G=(a,f,g,v,b,S,R,x,A)=>{f.slotScopeIds=x,a==null?f.shapeFlag&512?b.ctx.activate(f,g,v,R,A):ie(f,g,v,b,S,R,A):ue(a,f,A)},ie=(a,f,g,v,b,S,R)=>{const x=a.component=nc(a,v,b);if(Kt(a)&&(x.ctx.renderer=dt),sc(x),x.asyncDep){if(b&&b.registerDep(x,H),!a.el){const A=x.subTree=ne(be);q(null,A,f,g)}}else H(x,a,f,g,b,S,R)},ue=(a,f,g)=>{const v=f.component=a.component;if(al(a,f,g))if(v.asyncDep&&!v.asyncResolved){X(v,f,g);return}else v.next=f,nl(v.update),v.effect.dirty=!0,v.update();else f.el=a.el,v.vnode=f},H=(a,f,g,v,b,S,R)=>{const x=()=>{if(a.isMounted){let{next:I,bu:j,u:F,parent:K,vnode:z}=a;{const ht=Ni(a);if(ht){I&&(I.el=z.el,X(a,I,R)),ht.asyncDep.then(()=>{a.isUnmounted||x()});return}}let Q=I,ee;tt(a,!1),I?(I.el=z.el,X(a,I,R)):I=z,j&&Dn(j),(ee=I.props&&I.props.onVnodeBeforeUpdate)&&Ee(ee,K,I,z),tt(a,!0);const ce=Bn(a),Te=a.subTree;a.subTree=ce,M(Te,ce,h(Te.el),zt(Te),a,b,S),I.el=ce.el,Q===null&&ul(a,ce.el),F&&ge(F,b),(ee=I.props&&I.props.onVnodeUpdated)&&ge(()=>Ee(ee,K,I,z),b)}else{let I;const{el:j,props:F}=f,{bm:K,m:z,parent:Q}=a,ee=wt(f);if(tt(a,!1),K&&Dn(K),!ee&&(I=F&&F.onVnodeBeforeMount)&&Ee(I,Q,f),tt(a,!0),j&&Vn){const ce=()=>{a.subTree=Bn(a),Vn(j,a.subTree,a,b,null)};ee?f.type.__asyncLoader().then(()=>!a.isUnmounted&&ce()):ce()}else{const ce=a.subTree=Bn(a);M(null,ce,g,v,a,b,S),f.el=ce.el}if(z&&ge(z,b),!ee&&(I=F&&F.onVnodeMounted)){const ce=f;ge(()=>Ee(I,Q,ce),b)}(f.shapeFlag&256||Q&&wt(Q.vnode)&&Q.vnode.shapeFlag&256)&&a.a&&ge(a.a,b),a.isMounted=!0,f=g=v=null}},A=a.effect=new Ss(x,xe,()=>On(w),a.scope),w=a.update=()=>{A.dirty&&A.run()};w.id=a.uid,tt(a,!0),w()},X=(a,f,g)=>{f.component=a;const v=a.vnode.props;a.vnode=f,a.next=null,Vl(a,f.props,v,g),Bl(a,f.children,g),ut(),tr(a),ft()},$=(a,f,g,v,b,S,R,x,A=!1)=>{const w=a&&a.children,I=a?a.shapeFlag:0,j=f.children,{patchFlag:F,shapeFlag:K}=f;if(F>0){if(F&128){Gt(w,j,g,v,b,S,R,x,A);return}else if(F&256){Fe(w,j,g,v,b,S,R,x,A);return}}K&8?(I&16&&$e(w,b,S),j!==w&&d(g,j)):I&16?K&16?Gt(w,j,g,v,b,S,R,x,A):$e(w,b,S,!0):(I&8&&d(g,""),K&16&&O(j,g,v,b,S,R,x,A))},Fe=(a,f,g,v,b,S,R,x,A)=>{a=a||mt,f=f||mt;const w=a.length,I=f.length,j=Math.min(w,I);let F;for(F=0;FI?$e(a,b,S,!0,!1,j):O(f,g,v,b,S,R,x,A,j)},Gt=(a,f,g,v,b,S,R,x,A)=>{let w=0;const I=f.length;let j=a.length-1,F=I-1;for(;w<=j&&w<=F;){const K=a[w],z=f[w]=A?Ge(f[w]):Ae(f[w]);if(it(K,z))M(K,z,g,null,b,S,R,x,A);else break;w++}for(;w<=j&&w<=F;){const K=a[j],z=f[F]=A?Ge(f[F]):Ae(f[F]);if(it(K,z))M(K,z,g,null,b,S,R,x,A);else break;j--,F--}if(w>j){if(w<=F){const K=F+1,z=KF)for(;w<=j;)Oe(a[w],b,S,!0),w++;else{const K=w,z=w,Q=new Map;for(w=z;w<=F;w++){const _e=f[w]=A?Ge(f[w]):Ae(f[w]);_e.key!=null&&Q.set(_e.key,w)}let ee,ce=0;const Te=F-z+1;let ht=!1,Ks=0;const At=new Array(Te);for(w=0;w=Te){Oe(_e,b,S,!0);continue}let Le;if(_e.key!=null)Le=Q.get(_e.key);else for(ee=z;ee<=F;ee++)if(At[ee-z]===0&&it(_e,f[ee])){Le=ee;break}Le===void 0?Oe(_e,b,S,!0):(At[Le-z]=w+1,Le>=Ks?Ks=Le:ht=!0,M(_e,f[Le],g,null,b,S,R,x,A),ce++)}const Ws=ht?zl(At):mt;for(ee=Ws.length-1,w=Te-1;w>=0;w--){const _e=z+w,Le=f[_e],qs=_e+1{const{el:S,type:R,transition:x,children:A,shapeFlag:w}=a;if(w&6){et(a.component.subTree,f,g,v);return}if(w&128){a.suspense.move(f,g,v);return}if(w&64){R.move(a,f,g,dt);return}if(R===me){s(S,f,g);for(let j=0;jx.enter(S),b);else{const{leave:j,delayLeave:F,afterLeave:K}=x,z=()=>s(S,f,g),Q=()=>{j(S,()=>{z(),K&&K()})};F?F(S,z,Q):Q()}else s(S,f,g)},Oe=(a,f,g,v=!1,b=!1)=>{const{type:S,props:R,ref:x,children:A,dynamicChildren:w,shapeFlag:I,patchFlag:j,dirs:F}=a;if(x!=null&&vn(x,null,g,a,!0),I&256){f.ctx.deactivate(a);return}const K=I&1&&F,z=!wt(a);let Q;if(z&&(Q=R&&R.onVnodeBeforeUnmount)&&Ee(Q,f,a),I&6)oo(a.component,g,v);else{if(I&128){a.suspense.unmount(g,v);return}K&&Ie(a,null,f,"beforeUnmount"),I&64?a.type.remove(a,f,g,b,dt,v):w&&(S!==me||j>0&&j&64)?$e(w,f,g,!1,!0):(S===me&&j&384||!b&&I&16)&&$e(A,f,g),v&&Bs(a)}(z&&(Q=R&&R.onVnodeUnmounted)||K)&&ge(()=>{Q&&Ee(Q,f,a),K&&Ie(a,null,f,"unmounted")},g)},Bs=a=>{const{type:f,el:g,anchor:v,transition:b}=a;if(f===me){io(g,v);return}if(f===Nt){_(a);return}const S=()=>{r(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(a.shapeFlag&1&&b&&!b.persisted){const{leave:R,delayLeave:x}=b,A=()=>R(g,S);x?x(a.el,S,A):A()}else S()},io=(a,f)=>{let g;for(;a!==f;)g=p(a),r(a),a=g;r(f)},oo=(a,f,g)=>{const{bum:v,scope:b,update:S,subTree:R,um:x}=a;v&&Dn(v),b.stop(),S&&(S.active=!1,Oe(R,a,f,g)),x&&ge(x,f),ge(()=>{a.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},$e=(a,f,g,v=!1,b=!1,S=0)=>{for(let R=S;Ra.shapeFlag&6?zt(a.component.subTree):a.shapeFlag&128?a.suspense.next():p(a.anchor||a.el);let Hn=!1;const ks=(a,f,g)=>{a==null?f._vnode&&Oe(f._vnode,null,null,!0):M(f._vnode||null,a,f,null,null,null,g),Hn||(Hn=!0,tr(),mn(),Hn=!1),f._vnode=a},dt={p:M,um:Oe,m:et,r:Bs,mt:ie,mc:O,pc:$,pbc:C,n:zt,o:e};let jn,Vn;return t&&([jn,Vn]=t(dt)),{render:ks,hydrate:jn,createApp:$l(ks,jn)}}function qn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function tt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Pi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Mi(e,t,n=!1){const s=e.children,r=t.children;if(B(s)&&B(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Ni(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Ni(t)}const Xl=e=>e.__isTeleport,me=Symbol.for("v-fgt"),xt=Symbol.for("v-txt"),be=Symbol.for("v-cmt"),Nt=Symbol.for("v-stc"),Ft=[];let Re=null;function Fi(e=!1){Ft.push(Re=e?null:[])}function Yl(){Ft.pop(),Re=Ft[Ft.length-1]||null}let Dt=1;function hr(e){Dt+=e}function $i(e){return e.dynamicChildren=Dt>0?Re||mt:null,Yl(),Dt>0&&Re&&Re.push(e),e}function Ga(e,t,n,s,r,i){return $i(Vi(e,t,n,s,r,i,!0))}function Hi(e,t,n,s,r){return $i(ne(e,t,n,s,r,!0))}function bn(e){return e?e.__v_isVNode===!0:!1}function it(e,t){return e.type===t.type&&e.key===t.key}const Fn="__vInternal",ji=({key:e})=>e??null,un=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||he(e)||W(e)?{i:de,r:e,k:t,f:!!n}:e:null);function Vi(e,t=null,n=null,s=0,r=null,i=e===me?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ji(t),ref:t&&un(t),scopeId:In,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:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(js(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Dt>0&&!o&&Re&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Re.push(c),c}const ne=Jl;function Jl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===pi)&&(e=be),bn(e)){const l=Ze(e,t,!0);return n&&js(l,n),Dt>0&&!i&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(lc(e)&&(e=e.__vccOpts),t){t=Ql(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=xs(l)),Z(c)&&(ri(c)&&!B(c)&&(c=le({},c)),t.style=Cs(c))}const o=se(e)?1:fl(e)?128:Xl(e)?64:Z(e)?4:W(e)?2:0;return Vi(e,t,n,s,r,o,i,!0)}function Ql(e){return e?ri(e)||Fn in e?le({},e):e:null}function Ze(e,t,n=!1){const{props:s,ref:r,patchFlag:i,children:o}=e,l=t?Zl(s||{},t):s;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&ji(l),ref:t&&t.ref?n&&r?B(r)?r.concat(un(t)):[r,un(t)]:un(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==me?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&&Ze(e.ssContent),ssFallback:e.ssFallback&&Ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Di(e=" ",t=0){return ne(xt,null,e,t)}function za(e,t){const n=ne(Nt,null,e);return n.staticCount=t,n}function Xa(e="",t=!1){return t?(Fi(),Hi(be,null,e)):ne(be,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ne(be):B(e)?ne(me,null,e.slice()):typeof e=="object"?Ge(e):ne(xt,null,String(e))}function Ge(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ze(e)}function js(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),js(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(Fn in t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[Di(t)]):n=8);e.children=t,e.shapeFlag|=n}function Zl(...e){const t={};for(let n=0;nae||de;let wn,gs;{const e=kr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};wn=t("__VUE_INSTANCE_SETTERS__",n=>ae=n),gs=t("__VUE_SSR_SETTERS__",n=>qt=n)}const Wt=e=>{const t=ae;return wn(e),e.scope.on(),()=>{e.scope.off(),wn(t)}},pr=()=>{ae&&ae.scope.off(),wn(null)};function Ui(e){return e.vnode.shapeFlag&4}let qt=!1;function sc(e,t=!1){t&&gs(t);const{props:n,children:s}=e.vnode,r=Ui(e);jl(e,n,r,t),Ul(e,s);const i=r?rc(e,t):void 0;return t&&gs(!1),i}function rc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Lt(new Proxy(e.ctx,Rl));const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?ki(e):null,i=Wt(e);ut();const o=Ye(s,e,0,[e.props,r]);if(ft(),i(),Dr(o)){if(o.then(pr,pr),t)return o.then(l=>{gr(e,l,t)}).catch(l=>{kt(l,e,0)});e.asyncDep=o}else gr(e,o,t)}else Bi(e,t)}function gr(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=ai(t)),Bi(e,n)}let mr;function Bi(e,t,n){const s=e.type;if(!e.render){if(!t&&mr&&!s.render){const r=s.template||$s(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=le(le({isCustomElement:i,delimiters:l},o),c);s.render=mr(r,u)}}e.render=s.render||xe}{const r=Wt(e);ut();try{Ll(e)}finally{ft(),r()}}}function ic(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ye(e,"get","$attrs"),t[n]}}))}function ki(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return ic(e)},slots:e.slots,emit:e.emit,expose:t}}function Vs(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ai(Lt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Pt)return Pt[n](e)},has(t,n){return n in t||n in Pt}}))}function oc(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function lc(e){return W(e)&&"__vccOpts"in e}const re=(e,t)=>Wo(e,t,qt);function ms(e,t,n){const s=arguments.length;return s===2?Z(t)&&!B(t)?bn(t)?ne(e,null,[t]):ne(e,t):ne(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&bn(n)&&(n=[n]),ne(e,t,n))}const cc="3.4.21";/** +* @vue/runtime-dom v3.4.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const ac="http://www.w3.org/2000/svg",uc="http://www.w3.org/1998/Math/MathML",ze=typeof document<"u"?document:null,yr=ze&&ze.createElement("template"),fc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?ze.createElementNS(ac,e):t==="mathml"?ze.createElementNS(uc,e):ze.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>ze.createTextNode(e),createComment:e=>ze.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ze.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{yr.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=yr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ke="transition",Rt="animation",Ut=Symbol("_vtc"),Ki=(e,{slots:t})=>ms(yl,dc(e),t);Ki.displayName="Transition";const Wi={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};Ki.props=le({},vi,Wi);const nt=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},_r=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function dc(e){const t={};for(const T in e)T in Wi||(t[T]=e[T]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,E=hc(r),M=E&&E[0],N=E&&E[1],{onBeforeEnter:q,onEnter:k,onEnterCancelled:m,onLeave:_,onLeaveCancelled:P,onBeforeAppear:L=q,onAppear:D=k,onAppearCancelled:O=m}=t,V=(T,G,ie)=>{st(T,G?d:l),st(T,G?u:o),ie&&ie()},C=(T,G)=>{T._isLeaving=!1,st(T,h),st(T,y),st(T,p),G&&G()},U=T=>(G,ie)=>{const ue=T?D:k,H=()=>V(G,T,ie);nt(ue,[G,H]),vr(()=>{st(G,T?c:i),Ke(G,T?d:l),_r(ue)||br(G,s,M,H)})};return le(t,{onBeforeEnter(T){nt(q,[T]),Ke(T,i),Ke(T,o)},onBeforeAppear(T){nt(L,[T]),Ke(T,c),Ke(T,u)},onEnter:U(!1),onAppear:U(!0),onLeave(T,G){T._isLeaving=!0;const ie=()=>C(T,G);Ke(T,h),mc(),Ke(T,p),vr(()=>{T._isLeaving&&(st(T,h),Ke(T,y),_r(_)||br(T,s,N,ie))}),nt(_,[T,ie])},onEnterCancelled(T){V(T,!1),nt(m,[T])},onAppearCancelled(T){V(T,!0),nt(O,[T])},onLeaveCancelled(T){C(T),nt(P,[T])}})}function hc(e){if(e==null)return null;if(Z(e))return[Gn(e.enter),Gn(e.leave)];{const t=Gn(e);return[t,t]}}function Gn(e){return po(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ut]||(e[Ut]=new Set)).add(t)}function st(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Ut];n&&(n.delete(t),n.size||(e[Ut]=void 0))}function vr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let pc=0;function br(e,t,n,s){const r=e._endId=++pc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=gc(e,t);if(!o)return s();const u=o+"end";let d=0;const h=()=>{e.removeEventListener(u,p),i()},p=y=>{y.target===e&&++d>=c&&h()};setTimeout(()=>{d(n[E]||"").split(", "),r=s(`${ke}Delay`),i=s(`${ke}Duration`),o=wr(r,i),l=s(`${Rt}Delay`),c=s(`${Rt}Duration`),u=wr(l,c);let d=null,h=0,p=0;t===ke?o>0&&(d=ke,h=o,p=i.length):t===Rt?u>0&&(d=Rt,h=u,p=c.length):(h=Math.max(o,u),d=h>0?o>u?ke:Rt:null,p=d?d===ke?i.length:c.length:0);const y=d===ke&&/\b(transform|all)(,|$)/.test(s(`${ke}Property`).toString());return{type:d,timeout:h,propCount:p,hasTransform:y}}function wr(e,t){for(;e.lengthEr(n)+Er(e[s])))}function Er(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function mc(){return document.body.offsetHeight}function yc(e,t,n){const s=e[Ut];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Cr=Symbol("_vod"),_c=Symbol("_vsh"),vc=Symbol(""),bc=/(^|;)\s*display\s*:/;function wc(e,t,n){const s=e.style,r=se(n);let i=!1;if(n&&!r){if(t)if(se(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&fn(s,l,"")}else for(const o in t)n[o]==null&&fn(s,o,"");for(const o in n)o==="display"&&(i=!0),fn(s,o,n[o])}else if(r){if(t!==n){const o=s[vc];o&&(n+=";"+o),s.cssText=n,i=bc.test(n)}}else t&&e.removeAttribute("style");Cr in e&&(e[Cr]=i?s.display:"",e[_c]&&(s.display="none"))}const xr=/\s*!important$/;function fn(e,t,n){if(B(n))n.forEach(s=>fn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ec(e,t);xr.test(n)?e.setProperty(at(s),n.replace(xr,""),"important"):e[s]=n}}const Sr=["Webkit","Moz","ms"],zn={};function Ec(e,t){const n=zn[t];if(n)return n;let s=Me(t);if(s!=="filter"&&s in e)return zn[t]=s;s=xn(s);for(let r=0;rXn||(Oc.then(()=>Xn=0),Xn=Date.now());function Ic(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Se(Pc(s,n.value),t,5,[s])};return n.value=e,n.attached=Lc(),n}function Pc(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Or=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Mc=(e,t,n,s,r,i,o,l,c)=>{const u=r==="svg";t==="class"?yc(e,s,u):t==="style"?wc(e,n,s):Bt(t)?bs(t)||Ac(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nc(e,t,s,u))?xc(e,t,s,i,o,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Cc(e,t,s,u))};function Nc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Or(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Or(t)&&se(n)?!1:t in e}const Fc=["ctrl","shift","alt","meta"],$c={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Fc.some(n=>e[`${n}Key`]&&!t.includes(n))},Ya=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=at(r.key);if(t.some(o=>o===i||Hc[o]===i))return e(r)})},jc=le({patchProp:Mc},fc);let Yn,Lr=!1;function Vc(){return Yn=Lr?Yn:ql(jc),Lr=!0,Yn}const Qa=(...e)=>{const t=Vc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Uc(s);if(r)return n(r,!0,Dc(r))},t};function Dc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Uc(e){return se(e)?document.querySelector(e):e}const Za=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Bc="modulepreload",kc=function(e){return"/daydayup/"+e},Ir={},eu=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.all(n.map(c=>{if(c=kc(c),c in Ir)return;Ir[c]=!0;const u=c.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(!!s)for(let y=i.length-1;y>=0;y--){const E=i[y];if(E.href===c&&(!u||E.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${d}`))return;const p=document.createElement("link");if(p.rel=u?"stylesheet":Bc,u||(p.as="script",p.crossOrigin=""),p.href=c,l&&p.setAttribute("nonce",l),document.head.appendChild(p),u)return new Promise((y,E)=>{p.addEventListener("load",y),p.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${c}`)))})}))}return r.then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},Kc=window.__VP_SITE_DATA__;function Ds(e){return qr()?(Co(e),!0):!1}function Je(e){return typeof e=="function"?e():ci(e)}const qi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Wc=Object.prototype.toString,qc=e=>Wc.call(e)==="[object Object]",$t=()=>{},ys=Gc();function Gc(){var e,t;return qi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function zc(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Gi=e=>e();function Xc(e=Gi){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:An(t),pause:n,resume:s,eventFilter:r}}function Yc(e){return e||$n()}function zi(...e){if(e.length!==1)return Qo(...e);const t=e[0];return typeof t=="function"?An(Xo(()=>({get:t,set:$t}))):oe(t)}function Jc(e,t,n={}){const{eventFilter:s=Gi,...r}=n;return je(e,zc(s,t),r)}function Qc(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Xc(s);return{stop:Jc(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function Us(e,t=!0,n){Yc()?Tt(e,n):t?e():Rn(e)}function gt(e){var t;const n=Je(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Ne=qi?window:void 0;function Ve(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=Ne):[t,n,s,r]=e,!t)return $t;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(d=>d()),i.length=0},l=(d,h,p,y)=>(d.addEventListener(h,p,y),()=>d.removeEventListener(h,p,y)),c=je(()=>[gt(t),Je(r)],([d,h])=>{if(o(),!d)return;const p=qc(h)?{...h}:h;i.push(...n.flatMap(y=>s.map(E=>l(d,y,E,p))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return Ds(u),u}let Pr=!1;function tu(e,t,n={}){const{window:s=Ne,ignore:r=[],capture:i=!0,detectIframe:o=!1}=n;if(!s)return $t;ys&&!Pr&&(Pr=!0,Array.from(s.document.body.children).forEach(p=>p.addEventListener("click",$t)),s.document.documentElement.addEventListener("click",$t));let l=!0;const c=p=>r.some(y=>{if(typeof y=="string")return Array.from(s.document.querySelectorAll(y)).some(E=>E===p.target||p.composedPath().includes(E));{const E=gt(y);return E&&(p.target===E||p.composedPath().includes(E))}}),d=[Ve(s,"click",p=>{const y=gt(e);if(!(!y||y===p.target||p.composedPath().includes(y))){if(p.detail===0&&(l=!c(p)),!l){l=!0;return}t(p)}},{passive:!0,capture:i}),Ve(s,"pointerdown",p=>{const y=gt(e);l=!c(p)&&!!(y&&!p.composedPath().includes(y))},{passive:!0}),o&&Ve(s,"blur",p=>{setTimeout(()=>{var y;const E=gt(e);((y=s.document.activeElement)==null?void 0:y.tagName)==="IFRAME"&&!(E!=null&&E.contains(s.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>d.forEach(p=>p())}function Zc(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function nu(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=Ne,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=Zc(t);return Ve(r,i,d=>{d.repeat&&Je(l)||c(d)&&n(d)},o)}function ea(){const e=oe(!1),t=$n();return t&&Tt(()=>{e.value=!0},t),e}function ta(e){const t=ea();return re(()=>(t.value,!!e()))}function Xi(e,t={}){const{window:n=Ne}=t,s=ta(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=u=>{i.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=yi(()=>{s.value&&(l(),r=n.matchMedia(Je(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Ds(()=>{c(),l(),r=void 0}),i}const rn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},on="__vueuse_ssr_handlers__",na=sa();function sa(){return on in rn||(rn[on]=rn[on]||{}),rn[on]}function Yi(e,t){return na[e]||t}function ra(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"}const ia={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()}},Mr="vueuse-storage";function oa(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:d,window:h=Ne,eventFilter:p,onError:y=C=>{console.error(C)},initOnMounted:E}=s,M=(d?oi:oe)(typeof t=="function"?t():t);if(!n)try{n=Yi("getDefaultStorage",()=>{var C;return(C=Ne)==null?void 0:C.localStorage})()}catch(C){y(C)}if(!n)return M;const N=Je(t),q=ra(N),k=(r=s.serializer)!=null?r:ia[q],{pause:m,resume:_}=Qc(M,()=>L(M.value),{flush:i,deep:o,eventFilter:p});h&&l&&Us(()=>{Ve(h,"storage",O),Ve(h,Mr,V),E&&O()}),E||O();function P(C,U){h&&h.dispatchEvent(new CustomEvent(Mr,{detail:{key:e,oldValue:C,newValue:U,storageArea:n}}))}function L(C){try{const U=n.getItem(e);if(C==null)P(U,null),n.removeItem(e);else{const T=k.write(C);U!==T&&(n.setItem(e,T),P(U,T))}}catch(U){y(U)}}function D(C){const U=C?C.newValue:n.getItem(e);if(U==null)return c&&N!=null&&n.setItem(e,k.write(N)),N;if(!C&&u){const T=k.read(U);return typeof u=="function"?u(T,N):q==="object"&&!Array.isArray(T)?{...N,...T}:T}else return typeof U!="string"?U:k.read(U)}function O(C){if(!(C&&C.storageArea!==n)){if(C&&C.key==null){M.value=N;return}if(!(C&&C.key!==e)){m();try{(C==null?void 0:C.newValue)!==k.write(M.value)&&(M.value=D(C))}catch(U){y(U)}finally{C?Rn(_):_()}}}}function V(C){O(C.detail)}return M}function Ji(e){return Xi("(prefers-color-scheme: dark)",e)}function la(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=Ne,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},p=Ji({window:r}),y=re(()=>p.value?"dark":"light"),E=c||(o==null?zi(s):oa(o,s,i,{window:r,listenToStorageChanges:l})),M=re(()=>E.value==="auto"?y.value:E.value),N=Yi("updateHTMLAttrs",(_,P,L)=>{const D=typeof _=="string"?r==null?void 0:r.document.querySelector(_):gt(_);if(!D)return;let O;if(d&&(O=r.document.createElement("style"),O.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild(O)),P==="class"){const V=L.split(/\s/g);Object.values(h).flatMap(C=>(C||"").split(/\s/g)).filter(Boolean).forEach(C=>{V.includes(C)?D.classList.add(C):D.classList.remove(C)})}else D.setAttribute(P,L);d&&(r.getComputedStyle(O).opacity,document.head.removeChild(O))});function q(_){var P;N(t,n,(P=h[_])!=null?P:_)}function k(_){e.onChanged?e.onChanged(_,q):q(_)}je(M,k,{flush:"post",immediate:!0}),Us(()=>k(M.value));const m=re({get(){return u?E.value:M.value},set(_){E.value=_}});try{return Object.assign(m,{store:E,system:y,state:M})}catch{return m}}function ca(e={}){const{valueDark:t="dark",valueLight:n="",window:s=Ne}=e,r=la({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=re(()=>r.system?r.system.value:Ji({window:s}).value?"dark":"light");return re({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function Jn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Qi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const ln=new WeakMap;function su(e,t=!1){const n=oe(t);let s=null;je(zi(e),o=>{const l=Jn(Je(o));if(l){const c=l;ln.get(c)||ln.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const r=()=>{const o=Jn(Je(e));!o||n.value||(ys&&(s=Ve(o,"touchmove",l=>{aa(l)},{passive:!1})),o.style.overflow="hidden",n.value=!0)},i=()=>{var o;const l=Jn(Je(e));!l||!n.value||(ys&&(s==null||s()),l.style.overflow=(o=ln.get(l))!=null?o:"",ln.delete(l),n.value=!1)};return Ds(i),re({get(){return n.value},set(o){o?r():i()}})}function ru(e={}){const{window:t=Ne,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=re({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=re({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Ve(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function iu(e={}){const{window:t=Ne,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0}=e,o=oe(n),l=oe(s),c=()=>{t&&(i?(o.value=t.innerWidth,l.value=t.innerHeight):(o.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Us(c),Ve("resize",c,{passive:!0}),r){const u=Xi("(orientation: portrait)");je(u,()=>c())}return{width:o,height:l}}var Qn={BASE_URL:"/daydayup/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},Zn={};const Zi=/^(?:[a-z]+:|\/\/)/i,ua="vitepress-theme-appearance",fa=/#.*$/,da=/[?#].*$/,ha=/(?:(^|\/)index)?\.(?:md|html)$/,Ce=typeof document<"u",eo={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function pa(e,t,n=!1){if(t===void 0)return!1;if(e=Nr(`/${e}`),n)return new RegExp(t).test(e);if(Nr(t)!==e)return!1;const s=t.match(fa);return s?(Ce?location.hash:"")===s[0]:!0}function Nr(e){return decodeURI(e).replace(da,"").replace(ha,"$1")}function ga(e){return Zi.test(e)}function ma(e,t){var s,r,i,o,l,c,u;const n=Object.keys(e.locales).find(d=>d!=="root"&&!ga(d)&&pa(t,`/${d}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:no(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function to(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=ya(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function ya(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function _a(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function no(e,t){return[...e.filter(n=>!_a(t,n)),...t]}const va=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ba=/^[a-z]:/i;function Fr(e){const t=ba.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(va,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const es=new Set;function wa(e){if(es.size===0){const n=typeof process=="object"&&(Zn==null?void 0:Zn.VITE_EXTRA_EXTENSIONS)||(Qn==null?void 0:Qn.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>es.add(s))}const t=e.split(".").pop();return t==null||!es.has(t.toLowerCase())}const Ea=Symbol(),ct=oi(Kc);function ou(e){const t=re(()=>ma(ct.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n?ca({storageKey:ua,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):oe(!1);return{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>to(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:s}}function Ca(){const e=Et(Ea);if(!e)throw new Error("vitepress data not properly injected in app");return e}function xa(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function $r(e){return Zi.test(e)||!e.startsWith("/")?e:xa(ct.value.base,e)}function Sa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/daydayup/";t=Fr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Fr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let dn=[];function lu(e){dn.push(e),Nn(()=>{dn=dn.filter(t=>t!==e)})}function Ta(){let e=ct.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Hr(e,n);else if(Array.isArray(e))for(const s of e){const r=Hr(s,n);if(r){t=r;break}}return t}function Hr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Aa=Symbol(),_s="http://a.com",Ra=()=>({path:"/",component:null,data:eo});function cu(e,t){const n=Tn(Ra()),s={route:n,go:r};async function r(l=Ce?location.href:"/"){var c,u;if(l=ts(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1){if(Ce){const d=new URL(location.href);l!==ts(d.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",l),new URL(l,_s).hash!==d.hash&&window.dispatchEvent(new Event("hashchange")))}await o(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l))}}let i=null;async function o(l,c=0,u=!1){var p;if(await((p=s.onBeforePageLoad)==null?void 0:p.call(s,l))===!1)return;const d=new URL(l,_s),h=i=d.pathname;try{let y=await e(h);if(!y)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:E,__pageData:M}=y;if(!E)throw new Error(`Invalid route component: ${E}`);n.path=Ce?h:$r(h),n.component=Lt(E),n.data=Lt(M),Ce&&Rn(()=>{let N=ct.value.base+M.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ct.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==d.pathname&&(d.pathname=N,l=N+d.search+d.hash,history.replaceState(null,"",l)),d.hash&&!c){let q=null;try{q=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(k){console.warn(k)}if(q){jr(q,d.hash);return}}window.scrollTo(0,c)})}}catch(y){if(!/fetch|Page not found/.test(y.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(y),!u)try{const E=await fetch(ct.value.base+"hashmap.json");window.__VP_HASH_MAP__=await E.json(),await o(l,c,!0);return}catch{}i===h&&(i=null,n.path=Ce?h:$r(h),n.component=t?Lt(t):null,n.data=eo)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const u=l.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:d}=u,{href:h,origin:p,pathname:y,hash:E,search:M}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),N=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!d&&p===N.origin&&wa(y)&&(l.preventDefault(),y===N.pathname&&M===N.search?(E!==N.hash&&(history.pushState(null,"",h),window.dispatchEvent(new Event("hashchange"))),E?jr(u,E,u.classList.contains("header-anchor")):window.scrollTo(0,0)):r(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;await o(ts(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Oa(){const e=Et(Aa);if(!e)throw new Error("useRouter() is called without provider.");return e}function so(){return Oa().route}function jr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Ta()+i;requestAnimationFrame(r)}}function ts(e){const t=new URL(e,_s);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ct.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const ns=()=>dn.forEach(e=>e()),au=Fs({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=so(),{site:n}=Ca();return()=>ms(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?ms(t.component,{onVnodeMounted:ns,onVnodeUpdated:ns,onVnodeUnmounted:ns}):"404 Page Not Found"])}}),uu=Fs({setup(e,{slots:t}){const n=oe(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function fu(){Ce&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function du(){if(Ce){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(d=>d.remove());let u=c.textContent||"";o&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),La(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const d=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,d)})}})}}async function La(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function hu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=ss(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const o=i.map(ss);s.forEach((l,c)=>{const u=o.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));u!==-1?delete o[u]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};yi(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=to(o,i);u!==document.title&&(document.title=u);const d=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):ss(["meta",{name:"description",content:d}]),r(no(o.head,Pa(c)))})}function ss([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Ia(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Pa(e){return e.filter(t=>!Ia(t))}const rs=new Set,ro=()=>document.createElement("link"),Ma=e=>{const t=ro();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Na=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let cn;const Fa=Ce&&(cn=ro())&&cn.relList&&cn.relList.supports&&cn.relList.supports("prefetch")?Ma:Na;function pu(){if(!Ce||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!rs.has(c)){rs.add(c);const u=Sa(c);u&&Fa(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):rs.add(l))})})};Tt(s);const r=so();je(()=>r.path,s),Nn(()=>{n&&n.disconnect()})}export{Hl as $,Nn as A,Ua as B,Cl as C,Ta as D,Va as E,me as F,ka as G,oi as H,lu as I,ne as J,Da as K,Zi as L,so as M,Zl as N,Et as O,iu as P,Cs as Q,tu as R,nu as S,Ki as T,Rn as U,ru as V,An as W,Ba as X,eu as Y,su as Z,Za as _,Di as a,Ja as a0,Wa as a1,Ya as a2,qa as a3,za as a4,hu as a5,Aa as a6,ou as a7,Ea as a8,au as a9,uu as aa,ct as ab,Qa as ac,cu as ad,Sa as ae,pu as af,du as ag,fu as ah,ms as ai,Oa as aj,Hi as b,Ga as c,Fs as d,Xa as e,wa as f,$r as g,oe as h,ga as i,Ce as j,re as k,Tt as l,Vi as m,xs as n,Fi as o,ci as p,Ha as q,Ka as r,ja as s,$a as t,Ca as u,pa as v,ol as w,Xi as x,je as y,yi as z}; diff --git a/assets/chunks/theme.62945df0.js b/assets/chunks/theme.62945df0.js deleted file mode 100644 index bf78410..0000000 --- a/assets/chunks/theme.62945df0.js +++ /dev/null @@ -1,7 +0,0 @@ -import{d as g,o as a,c as i,r,n as M,a as A,t as P,_ as p,u as Je,b as c,e as Ze,f as He,g as et,h as w,i as tt,j as nt,w as j,k as Q,l as k,m as st,p as F,q as ot,P as at,s as fe,v as K,x as ee,y as ie,z as u,F as S,A as y,B as v,T as pe,C as m,D as se,E as h,G as R,H as ct,I as Ee,J as lt,K as U,L as ze,M as it,N,O as H,Q as E,R as rt,S as Be,U as me,V as oe,W as ut,X as J,Y as ge,Z as dt,$ as _t,a0 as vt,a1 as ht,a2 as ft,a3 as pt}from"./framework.3876c926.js";const mt=g({__name:"VPBadge",props:{text:null,type:null},setup(e){return(t,n)=>(a(),i("span",{class:M(["VPBadge",e.type??"tip"])},[r(t.$slots,"default",{},()=>[A(P(e.text),1)],!0)],2))}});const gt=p(mt,[["__scopeId","data-v-6120e03b"]]),V=Je;function De(e){return tt()?(nt(e),!0):!1}function Fe(e){return typeof e=="function"?e():c(e)}const yt=typeof window<"u",Oe=()=>{};function bt(...e){if(e.length!==1)return Ze(...e);const t=e[0];return typeof t=="function"?He(et(()=>({get:t,set:Oe}))):w(t)}function kt(e){var t;const n=Fe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const ye=yt?window:void 0;function $t(...e){let t,n,s,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,o]=e,t=ye):[t,n,s,o]=e,!t)return Oe;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const l=[],d=()=>{l.forEach(x=>x()),l.length=0},f=(x,I,B,b)=>(x.addEventListener(I,B,b),()=>x.removeEventListener(I,B,b)),_=j(()=>[kt(t),Fe(o)],([x,I])=>{d(),x&&l.push(...n.flatMap(B=>s.map(b=>f(x,B,b,I))))},{immediate:!0,flush:"post"}),$=()=>{_(),d()};return De($),$}function Pt(){const e=w(!1);return st()&&F(()=>{e.value=!0}),e}function Vt(e){const t=Pt();return k(()=>(t.value,!!e()))}function _e(e,t={}){const{window:n=ye}=t,s=Vt(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const l=w(!1),d=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",f):o.removeListener(f))},f=()=>{s.value&&(d(),o=n.matchMedia(bt(e).value),l.value=!!(o!=null&&o.matches),o&&("addEventListener"in o?o.addEventListener("change",f):o.addListener(f)))};return Q(f),De(()=>d()),l}function wt({window:e=ye}={}){if(!e)return{x:w(0),y:w(0)};const t=w(e.scrollX),n=w(e.scrollY);return $t(e,"scroll",()=>{t.value=e.scrollX,n.value=e.scrollY},{capture:!1,passive:!0}),{x:t,y:n}}function xt(e,t){let n,s=!1;return()=>{n&&clearTimeout(n),s?n=setTimeout(e,t):(e(),s=!0,setTimeout(()=>{s=!1},t))}}function ve(e){return/^\//.test(e)?e:`/${e}`}function Z(e){if(ot(e))return e.replace(at,"");const{site:t}=V(),{pathname:n,search:s,hash:o}=new URL(e,"http://example.com"),l=n.endsWith("/")||n.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${n.replace(/(\.md)?$/,t.value.cleanUrls?"":".html")}${s}${o}`);return fe(l)}function Ge(e,t){if(Array.isArray(e))return e;if(e==null)return[];t=ve(t);const n=Object.keys(e).sort((s,o)=>o.split("/").length-s.split("/").length).find(s=>t.startsWith(ve(s)));return n?e[n]:[]}function St(e){const t=[];let n=0;for(const s in e){const o=e[s];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function Lt(e){const t=[];function n(s){for(const o of s)o.text&&o.link&&t.push({text:o.text,link:o.link}),o.items&&n(o.items)}return n(e),t}function he(e,t){return Array.isArray(t)?t.some(n=>he(e,n)):K(e,t.link)?!0:t.items?he(e,t.items):!1}function z(){const e=ee(),{theme:t,frontmatter:n}=V(),s=_e("(min-width: 960px)"),o=w(!1),l=k(()=>{const C=t.value.sidebar,L=e.data.relativePath;return C?Ge(C,L):[]}),d=k(()=>n.value.sidebar!==!1&&l.value.length>0&&n.value.layout!=="home"),f=k(()=>_?n.value.aside==null?t.value.aside==="left":n.value.aside==="left":!1),_=k(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),$=k(()=>d.value&&s.value),x=k(()=>d.value?St(l.value):[]);function I(){o.value=!0}function B(){o.value=!1}function b(){o.value?B():I()}return{isOpen:o,sidebar:l,sidebarGroups:x,hasSidebar:d,hasAside:_,leftAside:f,isSidebarEnabled:$,open:I,close:B,toggle:b}}function Mt(e,t){let n;Q(()=>{n=e.value?document.activeElement:void 0}),F(()=>{window.addEventListener("keyup",s)}),ie(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function Ct(e){const{page:t}=V(),n=w(!1),s=k(()=>e.value.collapsed!=null),o=k(()=>!!e.value.link),l=k(()=>K(t.value.relativePath,e.value.link)),d=k(()=>l.value?!0:e.value.items?he(t.value.relativePath,e.value.items):!1),f=k(()=>!!(e.value.items&&e.value.items.length));Q(()=>{n.value=!!(s.value&&e.value.collapsed)}),Q(()=>{(l.value||d.value)&&(n.value=!1)});function _(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:o,isActiveLink:l,hasActiveLink:d,hasChildren:f,toggle:_}}const It=g({__name:"VPSkipLink",setup(e){const t=ee(),n=w();j(()=>t.path,()=>n.value.focus());function s({target:o}){const l=document.querySelector(decodeURIComponent(o.hash));if(l){const d=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",d)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",d),l.focus(),window.scrollTo(0,0)}}return(o,l)=>(a(),i(S,null,[u("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),u("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}});const Bt=p(It,[["__scopeId","data-v-f5a352f2"]]),Tt={key:0,class:"VPBackdrop"},At=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(a(),y(pe,{name:"fade"},{default:v(()=>[e.show?(a(),i("div",Tt)):m("",!0)]),_:1}))}});const Nt=p(At,[["__scopeId","data-v-8e9bf528"]]);function Ht(){const e=w(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function s(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const l=ee();return j(()=>l.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:s}}function te({removeCurrent:e=!0,correspondingLink:t=!1}={}){const{site:n,localeIndex:s,page:o,theme:l}=V(),d=k(()=>{var _,$;return{label:(_=n.value.locales[s.value])==null?void 0:_.label,link:(($=n.value.locales[s.value])==null?void 0:$.link)||(s.value==="root"?"/":`/${s.value}/`)}});return{localeLinks:k(()=>Object.entries(n.value.locales).flatMap(([_,$])=>e&&d.value.label===$.label?[]:{text:$.label,link:Et($.link||(_==="root"?"/":`/${_}/`),l.value.i18nRouting!==!1&&t,o.value.relativePath.slice(d.value.link.length-1),!n.value.cleanUrls)})),currentLang:d}}function Et(e,t,n,s){return t?e.replace(/\/$/,"")+ve(n.replace(/(^|\/)?index.md$/,"$1").replace(/\.md$/,s?".html":"")):e}const zt=["src","alt"],Dt={inheritAttrs:!1},Ft=g({...Dt,__name:"VPImage",props:{image:null,alt:null},setup(e){return(t,n)=>{const s=R("VPImage",!0);return e.image?(a(),i(S,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),i("img",se({key:0,class:"VPImage"},typeof e.image=="string"?t.$attrs:{...e.image,...t.$attrs},{src:c(fe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,zt)):(a(),i(S,{key:1},[h(s,se({class:"dark",image:e.image.dark,alt:e.image.alt},t.$attrs),null,16,["image","alt"]),h(s,se({class:"light",image:e.image.light,alt:e.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}});const be=p(Ft,[["__scopeId","data-v-6dd5884f"]]),Ot=["href"],Gt=g({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=V(),{hasSidebar:s}=z(),{currentLang:o}=te();return(l,d)=>(a(),i("div",{class:M(["VPNavBarTitle",{"has-sidebar":c(s)}])},[u("a",{class:"title",href:c(Z)(c(o).link)},[r(l.$slots,"nav-bar-title-before",{},void 0,!0),c(n).logo?(a(),y(be,{key:0,class:"logo",image:c(n).logo},null,8,["image"])):m("",!0),c(n).siteTitle?(a(),i(S,{key:1},[A(P(c(n).siteTitle),1)],64)):c(n).siteTitle===void 0?(a(),i(S,{key:2},[A(P(c(t).title),1)],64)):m("",!0),r(l.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ot)],2))}});const Rt=p(Gt,[["__scopeId","data-v-d298091b"]]);const Ut={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},qt={class:"DocSearch-Button-Container"},jt=u("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[u("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","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Kt={class:"DocSearch-Button-Placeholder"},Wt=u("span",{class:"DocSearch-Button-Keys"},[u("kbd",{class:"DocSearch-Button-Key"}),u("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Te=g({__name:"VPNavBarSearchButton",props:{placeholder:null},setup(e){return(t,n)=>(a(),i("button",Ut,[u("span",qt,[jt,u("span",Kt,P(e.placeholder),1)]),Wt]))}});const Yt={id:"local-search"},Xt={key:1,id:"docsearch"},Qt=g({__name:"VPNavBarSearch",setup(e){const t=()=>null,n=ct(()=>lt(()=>import("./VPAlgoliaSearchBox.4628d215.js"),["assets/chunks/VPAlgoliaSearchBox.4628d215.js","assets/chunks/framework.3876c926.js"])),{theme:s,localeIndex:o}=V(),l=w(!1),d=k(()=>{var C,L,T,D,ne,W,Ie;const b=((C=s.value.search)==null?void 0:C.options)??s.value.algolia;return((ne=(D=(T=(L=b==null?void 0:b.locales)==null?void 0:L[o.value])==null?void 0:T.translations)==null?void 0:D.button)==null?void 0:ne.buttonText)||((Ie=(W=b==null?void 0:b.translations)==null?void 0:W.button)==null?void 0:Ie.buttonText)||"Search"}),f=()=>{const b="VPAlgoliaPreconnect";(window.requestIdleCallback||setTimeout)(()=>{var T;const L=document.createElement("link");L.id=b,L.rel="preconnect",L.href=`https://${(((T=s.value.search)==null?void 0:T.options)??s.value.algolia).appId}-dsn.algolia.net`,L.crossOrigin="",document.head.appendChild(L)})};F(()=>{f();const b=L=>{L.key==="k"&&(L.ctrlKey||L.metaKey)&&(L.preventDefault(),_(),C())},C=()=>{window.removeEventListener("keydown",b)};window.addEventListener("keydown",b),ie(C)});function _(){l.value||(l.value=!0,setTimeout($,16))}function $(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||$()},16)}const x=w(!1),I=w("'Meta'");F(()=>{I.value=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"'⌘'":"'Ctrl'"});const B="algolia";return(b,C)=>{var L;return a(),i("div",{class:"VPNavBarSearch",style:Ee({"--vp-meta-key":I.value})},[c(B)==="local"?(a(),i(S,{key:0},[x.value?(a(),y(c(t),{key:0,placeholder:c(d),onClose:C[0]||(C[0]=T=>x.value=!1)},null,8,["placeholder"])):m("",!0),u("div",Yt,[h(Te,{placeholder:c(d),onClick:C[1]||(C[1]=T=>x.value=!0)},null,8,["placeholder"])])],64)):c(B)==="algolia"?(a(),i(S,{key:1},[l.value?(a(),y(c(n),{key:0,algolia:((L=c(s).search)==null?void 0:L.options)??c(s).algolia},null,8,["algolia"])):(a(),i("div",Xt,[h(Te,{placeholder:c(d),onClick:_},null,8,["placeholder"])]))],64)):m("",!0)],4)}}});const Jt={},Zt={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",height:"24px",viewBox:"0 0 24 24",width:"24px"},en=u("path",{d:"M0 0h24v24H0V0z",fill:"none"},null,-1),tn=u("path",{d:"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z"},null,-1),nn=[en,tn];function sn(e,t){return a(),i("svg",Zt,nn)}const on=p(Jt,[["render",sn]]),an=g({__name:"VPLink",props:{tag:null,href:null,noIcon:{type:Boolean},target:null,rel:null},setup(e){const t=e,n=k(()=>t.tag??t.href?"a":"span"),s=k(()=>t.href&&ze.test(t.href));return(o,l)=>(a(),y(U(c(n)),{class:M(["VPLink",{link:e.href}]),href:e.href?c(Z)(e.href):void 0,target:e.target||(c(s)?"_blank":void 0),rel:e.rel||(c(s)?"noreferrer":void 0)},{default:v(()=>[r(o.$slots,"default",{},void 0,!0),c(s)&&!e.noIcon?(a(),y(on,{key:0,class:"icon"})):m("",!0)]),_:3},8,["class","href","target","rel"]))}});const O=p(an,[["__scopeId","data-v-d502cd7b"]]),cn=g({__name:"VPNavBarMenuLink",props:{item:null},setup(e){const{page:t}=V();return(n,s)=>(a(),y(O,{class:M({VPNavBarMenuLink:!0,active:c(K)(c(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel,tabindex:"0"},{default:v(()=>[A(P(e.item.text),1)]),_:1},8,["class","href","target","rel"]))}});const ln=p(cn,[["__scopeId","data-v-bdc88584"]]),ke=w();let Re=!1,de=0;function rn(e){const t=w(!1);if(it){!Re&&un(),de++;const n=j(ke,s=>{var o,l,d;s===e.el.value||(o=e.el.value)!=null&&o.contains(s)?(t.value=!0,(l=e.onFocus)==null||l.call(e)):(t.value=!1,(d=e.onBlur)==null||d.call(e))});ie(()=>{n(),de--,de||dn()})}return He(t)}function un(){document.addEventListener("focusin",Ue),Re=!0,ke.value=document.activeElement}function dn(){document.removeEventListener("focusin",Ue)}function Ue(){ke.value=document.activeElement}const _n={},vn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},hn=u("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),fn=[hn];function pn(e,t){return a(),i("svg",vn,fn)}const qe=p(_n,[["render",pn]]),mn={},gn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},yn=u("circle",{cx:"12",cy:"12",r:"2"},null,-1),bn=u("circle",{cx:"19",cy:"12",r:"2"},null,-1),kn=u("circle",{cx:"5",cy:"12",r:"2"},null,-1),$n=[yn,bn,kn];function Pn(e,t){return a(),i("svg",gn,$n)}const Vn=p(mn,[["render",Pn]]),wn={class:"VPMenuLink"},xn=g({__name:"VPMenuLink",props:{item:null},setup(e){const{page:t}=V();return(n,s)=>(a(),i("div",wn,[h(O,{class:M({active:c(K)(c(t).relativePath,e.item.activeMatch||e.item.link,!!e.item.activeMatch)}),href:e.item.link,target:e.item.target,rel:e.item.rel},{default:v(()=>[A(P(e.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const re=p(xn,[["__scopeId","data-v-2a9f32f4"]]),Sn={class:"VPMenuGroup"},Ln={key:0,class:"title"},Mn=g({__name:"VPMenuGroup",props:{text:null,items:null},setup(e){return(t,n)=>(a(),i("div",Sn,[e.text?(a(),i("p",Ln,P(e.text),1)):m("",!0),(a(!0),i(S,null,N(e.items,s=>(a(),i(S,null,["link"in s?(a(),y(re,{key:0,item:s},null,8,["item"])):m("",!0)],64))),256))]))}});const Cn=p(Mn,[["__scopeId","data-v-b7d5e02b"]]),In={class:"VPMenu"},Bn={key:0,class:"items"},Tn=g({__name:"VPMenu",props:{items:null},setup(e){return(t,n)=>(a(),i("div",In,[e.items?(a(),i("div",Bn,[(a(!0),i(S,null,N(e.items,s=>(a(),i(S,{key:s.text},["link"in s?(a(),y(re,{key:0,item:s},null,8,["item"])):(a(),y(Cn,{key:1,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):m("",!0),r(t.$slots,"default",{},void 0,!0)]))}});const An=p(Tn,[["__scopeId","data-v-280e28cb"]]),Nn=["aria-expanded","aria-label"],Hn={key:0,class:"text"},En={class:"menu"},zn=g({__name:"VPFlyout",props:{icon:null,button:null,label:null,items:null},setup(e){const t=w(!1),n=w();rn({el:n,onBlur:s});function s(){t.value=!1}return(o,l)=>(a(),i("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:l[1]||(l[1]=d=>t.value=!0),onMouseleave:l[2]||(l[2]=d=>t.value=!1)},[u("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":e.label,onClick:l[0]||(l[0]=d=>t.value=!t.value)},[e.button||e.icon?(a(),i("span",Hn,[e.icon?(a(),y(U(e.icon),{key:0,class:"option-icon"})):m("",!0),A(" "+P(e.button)+" ",1),h(qe,{class:"text-icon"})])):(a(),y(Vn,{key:1,class:"icon"}))],8,Nn),u("div",En,[h(An,{items:e.items},{default:v(()=>[r(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const $e=p(zn,[["__scopeId","data-v-529736ff"]]),Dn=g({__name:"VPNavBarMenuGroup",props:{item:null},setup(e){const{page:t}=V();return(n,s)=>(a(),y($e,{class:M({VPNavBarMenuGroup:!0,active:c(K)(c(t).relativePath,e.item.activeMatch,!!e.item.activeMatch)}),button:e.item.text,items:e.item.items},null,8,["class","button","items"]))}}),Fn=e=>(H("data-v-f54c34e6"),e=e(),E(),e),On={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Gn=Fn(()=>u("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Rn=g({__name:"VPNavBarMenu",setup(e){const{theme:t}=V();return(n,s)=>c(t).nav?(a(),i("nav",On,[Gn,(a(!0),i(S,null,N(c(t).nav,o=>(a(),i(S,{key:o.text},["link"in o?(a(),y(ln,{key:0,item:o},null,8,["item"])):(a(),y(Dn,{key:1,item:o},null,8,["item"]))],64))),128))])):m("",!0)}});const Un=p(Rn,[["__scopeId","data-v-f54c34e6"]]),qn={},jn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Kn=u("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Wn=u("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),Yn=[Kn,Wn];function Xn(e,t){return a(),i("svg",jn,Yn)}const je=p(qn,[["render",Xn]]),Qn={class:"items"},Jn={class:"title"},Zn=g({__name:"VPNavBarTranslations",setup(e){const{theme:t}=V(),{localeLinks:n,currentLang:s}=te({correspondingLink:!0});return(o,l)=>c(n).length&&c(s).label?(a(),y($e,{key:0,class:"VPNavBarTranslations",icon:je,label:c(t).langMenuLabel||"Change language"},{default:v(()=>[u("div",Qn,[u("p",Jn,P(c(s).label),1),(a(!0),i(S,null,N(c(n),d=>(a(),y(re,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}});const es=p(Zn,[["__scopeId","data-v-a3d11da5"]]);const ts={},ns={class:"VPSwitch",type:"button",role:"switch"},ss={class:"check"},os={key:0,class:"icon"};function as(e,t){return a(),i("button",ns,[u("span",ss,[e.$slots.default?(a(),i("span",os,[r(e.$slots,"default",{},void 0,!0)])):m("",!0)])])}const cs=p(ts,[["render",as],["__scopeId","data-v-5c77962f"]]),ls={},is={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},rs=rt('',9),us=[rs];function ds(e,t){return a(),i("svg",is,us)}const _s=p(ls,[["render",ds]]),vs={},hs={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},fs=u("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),ps=[fs];function ms(e,t){return a(),i("svg",hs,ps)}const gs=p(vs,[["render",ms]]),ys={title:"toggle dark mode"},bs=g({__name:"VPSwitchAppearance",setup(e){const{site:t,isDark:n}=V(),s=w(!1),o=typeof localStorage<"u"?l():()=>{};F(()=>{s.value=document.documentElement.classList.contains("dark")});function l(){const d=window.matchMedia("(prefers-color-scheme: dark)"),f=document.documentElement.classList;let _=localStorage.getItem(Be),$=t.value.appearance==="dark"&&_==null||(_==="auto"||_==null?d.matches:_==="dark");d.onchange=B=>{_==="auto"&&I($=B.matches)};function x(){I($=!$),_=$?d.matches?"auto":"dark":d.matches?"light":"auto",localStorage.setItem(Be,_)}function I(B){const b=document.createElement("style");b.type="text/css",b.appendChild(document.createTextNode(`:not(.VPSwitchAppearance):not(.VPSwitchAppearance *) { - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; - -ms-transition: none !important; - transition: none !important; -}`)),document.head.appendChild(b),s.value=B,f[B?"add":"remove"]("dark"),window.getComputedStyle(b).opacity,document.head.removeChild(b)}return x}return j(s,d=>{n.value=d}),(d,f)=>(a(),i("label",ys,[h(cs,{class:"VPSwitchAppearance","aria-checked":s.value,onClick:c(o)},{default:v(()=>[h(_s,{class:"sun"}),h(gs,{class:"moon"})]),_:1},8,["aria-checked","onClick"])]))}});const Pe=p(bs,[["__scopeId","data-v-6efeb7e0"]]),ks={key:0,class:"VPNavBarAppearance"},$s=g({__name:"VPNavBarAppearance",setup(e){const{site:t}=V();return(n,s)=>c(t).appearance?(a(),i("div",ks,[h(Pe)])):m("",!0)}});const Ps=p($s,[["__scopeId","data-v-0088fcc3"]]),Vs={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',youtube:'YouTube'},ws=["href","aria-label","innerHTML"],xs=g({__name:"VPSocialLink",props:{icon:null,link:null},setup(e){const t=e,n=k(()=>typeof t.icon=="object"?t.icon.svg:Vs[t.icon]);return(s,o)=>(a(),i("a",{class:"VPSocialLink",href:e.link,"aria-label":typeof e.icon=="string"?e.icon:"",target:"_blank",rel:"noopener",innerHTML:c(n)},null,8,ws))}});const Ss=p(xs,[["__scopeId","data-v-d6790091"]]),Ls={class:"VPSocialLinks"},Ms=g({__name:"VPSocialLinks",props:{links:null},setup(e){return(t,n)=>(a(),i("div",Ls,[(a(!0),i(S,null,N(e.links,({link:s,icon:o})=>(a(),y(Ss,{key:s,icon:o,link:s},null,8,["icon","link"]))),128))]))}});const Ve=p(Ms,[["__scopeId","data-v-c74e4df9"]]),Cs=g({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=V();return(n,s)=>c(t).socialLinks?(a(),y(Ve,{key:0,class:"VPNavBarSocialLinks",links:c(t).socialLinks},null,8,["links"])):m("",!0)}});const Is=p(Cs,[["__scopeId","data-v-f8334a3a"]]),Bs={key:0,class:"group translations"},Ts={class:"trans-title"},As={key:1,class:"group"},Ns={class:"item appearance"},Hs={class:"label"},Es={class:"appearance-action"},zs={key:2,class:"group"},Ds={class:"item social-links"},Fs=g({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=V(),{localeLinks:s,currentLang:o}=te({correspondingLink:!0}),l=k(()=>s.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(d,f)=>c(l)?(a(),y($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[c(s).length&&c(o).label?(a(),i("div",Bs,[u("p",Ts,P(c(o).label),1),(a(!0),i(S,null,N(c(s),_=>(a(),y(re,{key:_.link,item:_},null,8,["item"]))),128))])):m("",!0),c(t).appearance?(a(),i("div",As,[u("div",Ns,[u("p",Hs,P(c(n).darkModeSwitchLabel||"Appearance"),1),u("div",Es,[h(Pe)])])])):m("",!0),c(n).socialLinks?(a(),i("div",zs,[u("div",Ds,[h(Ve,{class:"social-links-list",links:c(n).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}});const Os=p(Fs,[["__scopeId","data-v-206ebc7c"]]),Gs=e=>(H("data-v-47edab87"),e=e(),E(),e),Rs=["aria-expanded"],Us=Gs(()=>u("span",{class:"container"},[u("span",{class:"top"}),u("span",{class:"middle"}),u("span",{class:"bottom"})],-1)),qs=[Us],js=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(a(),i("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=s=>t.$emit("click"))},qs,10,Rs))}});const Ks=p(js,[["__scopeId","data-v-47edab87"]]),Ws=e=>(H("data-v-2264840b"),e=e(),E(),e),Ys={class:"container"},Xs={class:"title"},Qs={class:"content"},Js=Ws(()=>u("div",{class:"curtain"},null,-1)),Zs={class:"content-body"},eo=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const{y:t}=wt(),{hasSidebar:n}=z(),s=k(()=>({"has-sidebar":n.value,fill:t.value>0}));return(o,l)=>(a(),i("div",{class:M(["VPNavBar",c(s)])},[u("div",Ys,[u("div",Xs,[h(Rt,null,{"nav-bar-title-before":v(()=>[r(o.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[r(o.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),u("div",Qs,[Js,u("div",Zs,[r(o.$slots,"nav-bar-content-before",{},void 0,!0),h(Qt,{class:"search"}),h(Un,{class:"menu"}),h(es,{class:"translations"}),h(Ps,{class:"appearance"}),h(Is,{class:"social-links"}),h(Os,{class:"extra"}),r(o.$slots,"nav-bar-content-after",{},void 0,!0),h(Ks,{class:"hamburger",active:e.isScreenOpen,onClick:l[0]||(l[0]=d=>o.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const to=p(eo,[["__scopeId","data-v-2264840b"]]);function no(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1),q=[],ce=!1,xe=-1,Y=void 0,G=void 0,X=void 0,Ke=function(t){return q.some(function(n){return!!(n.options.allowTouchMove&&n.options.allowTouchMove(t))})},le=function(t){var n=t||window.event;return Ke(n.target)||n.touches.length>1?!0:(n.preventDefault&&n.preventDefault(),!1)},so=function(t){if(X===void 0){var n=!!t&&t.reserveScrollBarGap===!0,s=window.innerWidth-document.documentElement.clientWidth;if(n&&s>0){var o=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"),10);X=document.body.style.paddingRight,document.body.style.paddingRight=o+s+"px"}}Y===void 0&&(Y=document.body.style.overflow,document.body.style.overflow="hidden")},oo=function(){X!==void 0&&(document.body.style.paddingRight=X,X=void 0),Y!==void 0&&(document.body.style.overflow=Y,Y=void 0)},ao=function(){return window.requestAnimationFrame(function(){if(G===void 0){G={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left};var t=window,n=t.scrollY,s=t.scrollX,o=t.innerHeight;document.body.style.position="fixed",document.body.style.top=-n,document.body.style.left=-s,setTimeout(function(){return window.requestAnimationFrame(function(){var l=o-window.innerHeight;l&&n>=o&&(document.body.style.top=-(n+l))})},300)}})},co=function(){if(G!==void 0){var t=-parseInt(document.body.style.top,10),n=-parseInt(document.body.style.left,10);document.body.style.position=G.position,document.body.style.top=G.top,document.body.style.left=G.left,window.scrollTo(n,t),G=void 0}},lo=function(t){return t?t.scrollHeight-t.scrollTop<=t.clientHeight:!1},io=function(t,n){var s=t.targetTouches[0].clientY-xe;return Ke(t.target)?!1:n&&n.scrollTop===0&&s>0||lo(n)&&s<0?le(t):(t.stopPropagation(),!0)},We=function(t,n){if(!t){console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");return}if(!q.some(function(o){return o.targetElement===t})){var s={targetElement:t,options:n||{}};q=[].concat(no(q),[s]),ae?ao():so(n),ae&&(t.ontouchstart=function(o){o.targetTouches.length===1&&(xe=o.targetTouches[0].clientY)},t.ontouchmove=function(o){o.targetTouches.length===1&&io(o,t)},ce||(document.addEventListener("touchmove",le,we?{passive:!1}:void 0),ce=!0))}},Ye=function(){ae&&(q.forEach(function(t){t.targetElement.ontouchstart=null,t.targetElement.ontouchmove=null}),ce&&(document.removeEventListener("touchmove",le,we?{passive:!1}:void 0),ce=!1),xe=-1),ae?co():oo(),q=[]};const ro=g({__name:"VPNavScreenMenuLink",props:{text:null,link:null},setup(e){const t=me("close-screen");return(n,s)=>(a(),y(O,{class:"VPNavScreenMenuLink",href:e.link,onClick:c(t)},{default:v(()=>[A(P(e.text),1)]),_:1},8,["href","onClick"]))}});const uo=p(ro,[["__scopeId","data-v-107cfdeb"]]),_o={},vo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ho=u("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),fo=[ho];function po(e,t){return a(),i("svg",vo,fo)}const mo=p(_o,[["render",po]]),go=g({__name:"VPNavScreenMenuGroupLink",props:{text:null,link:null},setup(e){const t=me("close-screen");return(n,s)=>(a(),y(O,{class:"VPNavScreenMenuGroupLink",href:e.link,onClick:c(t)},{default:v(()=>[A(P(e.text),1)]),_:1},8,["href","onClick"]))}});const Xe=p(go,[["__scopeId","data-v-bd729644"]]),yo={class:"VPNavScreenMenuGroupSection"},bo={key:0,class:"title"},ko=g({__name:"VPNavScreenMenuGroupSection",props:{text:null,items:null},setup(e){return(t,n)=>(a(),i("div",yo,[e.text?(a(),i("p",bo,P(e.text),1)):m("",!0),(a(!0),i(S,null,N(e.items,s=>(a(),y(Xe,{key:s.text,text:s.text,link:s.link},null,8,["text","link"]))),128))]))}});const $o=p(ko,[["__scopeId","data-v-8c8e6db1"]]),Po=["aria-controls","aria-expanded"],Vo={class:"button-text"},wo=["id"],xo={key:1,class:"group"},So=g({__name:"VPNavScreenMenuGroup",props:{text:null,items:null},setup(e){const t=e,n=w(!1),s=k(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(l,d)=>(a(),i("div",{class:M(["VPNavScreenMenuGroup",{open:n.value}])},[u("button",{class:"button","aria-controls":c(s),"aria-expanded":n.value,onClick:o},[u("span",Vo,P(e.text),1),h(mo,{class:"button-icon"})],8,Po),u("div",{id:c(s),class:"items"},[(a(!0),i(S,null,N(e.items,f=>(a(),i(S,{key:f.text},["link"in f?(a(),i("div",{key:f.text,class:"item"},[h(Xe,{text:f.text,link:f.link},null,8,["text","link"])])):(a(),i("div",xo,[h($o,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,wo)],2))}});const Lo=p(So,[["__scopeId","data-v-4bd35761"]]),Mo={key:0,class:"VPNavScreenMenu"},Co=g({__name:"VPNavScreenMenu",setup(e){const{theme:t}=V();return(n,s)=>c(t).nav?(a(),i("nav",Mo,[(a(!0),i(S,null,N(c(t).nav,o=>(a(),i(S,{key:o.text},["link"in o?(a(),y(uo,{key:0,text:o.text,link:o.link},null,8,["text","link"])):(a(),y(Lo,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),Io={key:0,class:"VPNavScreenAppearance"},Bo={class:"text"},To=g({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=V();return(s,o)=>c(t).appearance?(a(),i("div",Io,[u("p",Bo,P(c(n).darkModeSwitchLabel||"Appearance"),1),h(Pe)])):m("",!0)}});const Ao=p(To,[["__scopeId","data-v-0cc362cf"]]),No={class:"list"},Ho=g({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=te({correspondingLink:!0}),s=w(!1);function o(){s.value=!s.value}return(l,d)=>c(t).length&&c(n).label?(a(),i("div",{key:0,class:M(["VPNavScreenTranslations",{open:s.value}])},[u("button",{class:"title",onClick:o},[h(je,{class:"icon lang"}),A(" "+P(c(n).label)+" ",1),h(qe,{class:"icon chevron"})]),u("ul",No,[(a(!0),i(S,null,N(c(t),f=>(a(),i("li",{key:f.link,class:"item"},[h(O,{class:"link",href:f.link},{default:v(()=>[A(P(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}});const Eo=p(Ho,[["__scopeId","data-v-3f0a9a3f"]]),zo=g({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=V();return(n,s)=>c(t).socialLinks?(a(),y(Ve,{key:0,class:"VPNavScreenSocialLinks",links:c(t).socialLinks},null,8,["links"])):m("",!0)}}),Do={class:"container"},Fo=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=w(null);function n(){We(t.value,{reserveScrollBarGap:!0})}function s(){Ye()}return(o,l)=>(a(),y(pe,{name:"fade",onEnter:n,onAfterLeave:s},{default:v(()=>[e.open?(a(),i("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t},[u("div",Do,[r(o.$slots,"nav-screen-content-before",{},void 0,!0),h(Co,{class:"menu"}),h(Eo,{class:"translations"}),h(Ao,{class:"appearance"}),h(zo,{class:"social-links"}),r(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}});const Oo=p(Fo,[["__scopeId","data-v-8a8239f5"]]),Go={class:"VPNav"},Ro=g({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:s}=Ht();return oe("close-screen",n),(o,l)=>(a(),i("header",Go,[h(to,{"is-screen-open":c(t),onToggleScreen:c(s)},{"nav-bar-title-before":v(()=>[r(o.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[r(o.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[r(o.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[r(o.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),h(Oo,{open:c(t)},{"nav-screen-content-before":v(()=>[r(o.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[r(o.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])]))}});const Uo=p(Ro,[["__scopeId","data-v-283c37a7"]]),qo={},jo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ko=u("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Wo=u("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),Yo=u("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Xo=u("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Qo=[Ko,Wo,Yo,Xo];function Jo(e,t){return a(),i("svg",jo,Qo)}const Zo=p(qo,[["render",Jo]]);function ea(){const{hasSidebar:e}=z(),t=_e("(min-width: 960px)"),n=_e("(min-width: 1280px)");return{isAsideEnabled:k(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const ta=71;function Se(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function Le(e){const t=[...document.querySelectorAll(".VPDoc h2,h3,h4,h5,h6")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const s=Number(n.tagName[1]);return{title:na(n),link:"#"+n.id,level:s}});return sa(t,e)}function na(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(n.classList.contains("VPBadge")||n.classList.contains("header-anchor"))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function sa(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[s,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;e=e.filter(d=>d.level>=s&&d.level<=o);const l=[];e:for(let d=0;d=0;_--){const $=e[_];if($.level{requestAnimationFrame(l),window.addEventListener("scroll",s)}),ut(()=>{d(location.hash)}),ie(()=>{window.removeEventListener("scroll",s)});function l(){if(!n.value)return;const f=[].slice.call(e.value.querySelectorAll(".outline-link")),_=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(b=>f.some(C=>C.hash===b.hash&&b.offsetParent!==null)),$=window.scrollY,x=window.innerHeight,I=document.body.offsetHeight,B=Math.abs($+x-I)<1;if(_.length&&B){d(_[_.length-1].hash);return}for(let b=0;b<_.length;b++){const C=_[b],L=_[b+1],[T,D]=aa(b,C,L);if(T){d(D);return}}}function d(f){o&&o.classList.remove("active"),f!==null&&(o=e.value.querySelector(`a[href="${decodeURIComponent(f)}"]`));const _=o;_?(_.classList.add("active"),t.value.style.top=_.offsetTop+33+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function Ne(e){return e.parentElement.offsetTop-ta}function aa(e,t,n){const s=window.scrollY;return e===0&&s===0?[!0,null]:s{const o=R("VPDocOutlineItem",!0);return a(),i("ul",{class:M(e.root?"root":"nested")},[(a(!0),i(S,null,N(e.headers,({children:l,link:d,title:f})=>(a(),i("li",null,[u("a",{class:"outline-link",href:d,onClick:t,title:f},P(f),9,ca),l!=null&&l.length?(a(),y(o,{key:0,headers:l},null,8,["headers"])):m("",!0)]))),256))],2)}}});const Me=p(la,[["__scopeId","data-v-df1a6cf2"]]),ia={},ra={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ua=u("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),da=[ua];function _a(e,t){return a(),i("svg",ra,da)}const Ce=p(ia,[["render",_a]]),va=g({__name:"VPLocalNavOutlineDropdown",setup(e){const{frontmatter:t,theme:n}=V(),s=w(!1),o=w(0),l=w();J(()=>{s.value=!1});function d(){s.value=!s.value,o.value=window.innerHeight+Math.min(window.scrollY-64,0)}function f(x){x.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),dt(()=>{s.value=!1}))}function _(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}const $=ge([]);return J(()=>{$.value=Le(t.value.outline??n.value.outline)}),(x,I)=>(a(),i("div",{class:"VPLocalNavOutlineDropdown",style:Ee({"--vp-vh":o.value+"px"})},[c($).length>0?(a(),i("button",{key:0,onClick:d,class:M({open:s.value})},[A(P(c(Se)(c(n)))+" ",1),h(Ce,{class:"icon"})],2)):(a(),i("button",{key:1,onClick:_},P(c(n).returnToTopLabel||"Return to top"),1)),h(pe,{name:"flyout"},{default:v(()=>[s.value?(a(),i("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:f},[u("a",{class:"top-link",href:"#",onClick:_},P(c(n).returnToTopLabel||"Return to top"),1),h(Me,{headers:c($)},null,8,["headers"])],512)):m("",!0)]),_:1})],4))}});const ha=p(va,[["__scopeId","data-v-c20a59a7"]]),fa={class:"VPLocalNav"},pa=["aria-expanded"],ma={class:"menu-text"},ga=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t}=V(),{hasSidebar:n}=z();return(s,o)=>(a(),i("div",fa,[c(n)?(a(),i("button",{key:0,class:"menu","aria-expanded":e.open,"aria-controls":"VPSidebarNav",onClick:o[0]||(o[0]=l=>s.$emit("open-menu"))},[h(Zo,{class:"menu-icon"}),u("span",ma,P(c(t).sidebarMenuLabel||"Menu"),1)],8,pa)):m("",!0),h(ha)]))}});const ya=p(ga,[["__scopeId","data-v-b59ad933"]]),ba=e=>(H("data-v-b1f1ab92"),e=e(),E(),e),ka=["role","tabindex"],$a=ba(()=>u("div",{class:"indicator"},null,-1)),Pa=["onKeydown"],Va={key:1,class:"items"},wa=g({__name:"VPSidebarItem",props:{item:null,depth:null},setup(e){const t=e,{collapsed:n,collapsible:s,isLink:o,isActiveLink:l,hasActiveLink:d,hasChildren:f,toggle:_}=Ct(k(()=>t.item)),$=k(()=>f.value?"section":"div"),x=k(()=>o.value?"a":"div"),I=k(()=>f.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),B=k(()=>o.value?void 0:"button"),b=k(()=>[[`level-${t.depth}`],{collapsible:s.value},{collapsed:n.value},{"is-link":o.value},{"is-active":l.value},{"has-active":d.value}]);function C(T){"key"in T&&T.key!=="Enter"||!t.item.link&&_()}function L(){t.item.link&&_()}return(T,D)=>{const ne=R("VPSidebarItem",!0);return a(),y(U(c($)),{class:M(["VPSidebarItem",c(b)])},{default:v(()=>[e.item.text?(a(),i("div",se({key:0,class:"item",role:c(B)},vt(e.item.items?{click:C,keydown:C}:{},!0),{tabindex:e.item.items&&0}),[$a,e.item.link?(a(),y(O,{key:0,tag:c(x),class:"link",href:e.item.link},{default:v(()=>[(a(),y(U(c(I)),{class:"text",innerHTML:e.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href"])):(a(),y(U(c(I)),{key:1,class:"text",innerHTML:e.item.text},null,8,["innerHTML"])),e.item.collapsed!=null?(a(),i("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:L,onKeydown:_t(L,["enter"]),tabindex:"0"},[h(Ce,{class:"caret-icon"})],40,Pa)):m("",!0)],16,ka)):m("",!0),e.item.items&&e.item.items.length?(a(),i("div",Va,[e.depth<5?(a(!0),i(S,{key:0},N(e.item.items,W=>(a(),y(ne,{key:W.text,item:W,depth:e.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}});const xa=p(wa,[["__scopeId","data-v-b1f1ab92"]]),Qe=e=>(H("data-v-c7a7361d"),e=e(),E(),e),Sa=Qe(()=>u("div",{class:"curtain"},null,-1)),La={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ma=Qe(()=>u("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Ca=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const t=e,{sidebarGroups:n,hasSidebar:s}=z();let o=w(null);function l(){We(o.value,{reserveScrollBarGap:!0})}function d(){Ye()}return ht(async()=>{var f;t.open?(l(),(f=o.value)==null||f.focus()):d()}),(f,_)=>c(s)?(a(),i("aside",{key:0,class:M(["VPSidebar",{open:e.open}]),ref_key:"navEl",ref:o,onClick:_[0]||(_[0]=ft(()=>{},["stop"]))},[Sa,u("nav",La,[Ma,r(f.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),i(S,null,N(c(n),$=>(a(),i("div",{key:$.text,class:"group"},[h(xa,{item:$,depth:0},null,8,["item"])]))),128)),r(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}});const Ia=p(Ca,[["__scopeId","data-v-c7a7361d"]]),Ba={},Ta={class:"VPPage"};function Aa(e,t){const n=R("Content");return a(),i("div",Ta,[r(e.$slots,"page-top"),h(n),r(e.$slots,"page-bottom")])}const Na=p(Ba,[["render",Aa]]),Ha=g({__name:"VPButton",props:{tag:null,size:null,theme:null,text:null,href:null},setup(e){const t=e,n=k(()=>[t.size??"medium",t.theme??"brand"]),s=k(()=>t.href&&ze.test(t.href)),o=k(()=>t.tag?t.tag:t.href?"a":"button");return(l,d)=>(a(),y(U(c(o)),{class:M(["VPButton",c(n)]),href:e.href?c(Z)(e.href):void 0,target:c(s)?"_blank":void 0,rel:c(s)?"noreferrer":void 0},{default:v(()=>[A(P(e.text),1)]),_:1},8,["class","href","target","rel"]))}});const Ea=p(Ha,[["__scopeId","data-v-a23e414a"]]),za=e=>(H("data-v-15361c6c"),e=e(),E(),e),Da={class:"container"},Fa={class:"main"},Oa={key:0,class:"name"},Ga={class:"clip"},Ra={key:1,class:"text"},Ua={key:2,class:"tagline"},qa={key:0,class:"actions"},ja={key:0,class:"image"},Ka={class:"image-container"},Wa=za(()=>u("div",{class:"image-bg"},null,-1)),Ya=g({__name:"VPHero",props:{name:null,text:null,tagline:null,image:null,actions:null},setup(e){const t=me("hero-image-slot-exists");return(n,s)=>(a(),i("div",{class:M(["VPHero",{"has-image":e.image||c(t)}])},[u("div",Da,[u("div",Fa,[r(n.$slots,"home-hero-info",{},()=>[e.name?(a(),i("h1",Oa,[u("span",Ga,P(e.name),1)])):m("",!0),e.text?(a(),i("p",Ra,P(e.text),1)):m("",!0),e.tagline?(a(),i("p",Ua,P(e.tagline),1)):m("",!0)],!0),e.actions?(a(),i("div",qa,[(a(!0),i(S,null,N(e.actions,o=>(a(),i("div",{key:o.link,class:"action"},[h(Ea,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):m("",!0)]),e.image||c(t)?(a(),i("div",ja,[u("div",Ka,[Wa,r(n.$slots,"home-hero-image",{},()=>[e.image?(a(),y(be,{key:0,class:"image-src",image:e.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}});const Xa=p(Ya,[["__scopeId","data-v-15361c6c"]]),Qa=g({__name:"VPHomeHero",setup(e){const{frontmatter:t}=V();return(n,s)=>c(t).hero?(a(),y(Xa,{key:0,class:"VPHomeHero",name:c(t).hero.name,text:c(t).hero.text,tagline:c(t).hero.tagline,image:c(t).hero.image,actions:c(t).hero.actions},{"home-hero-info":v(()=>[r(n.$slots,"home-hero-info")]),"home-hero-image":v(()=>[r(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):m("",!0)}}),Ja={},Za={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},ec=u("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),tc=[ec];function nc(e,t){return a(),i("svg",Za,tc)}const sc=p(Ja,[["render",nc]]),oc={class:"box"},ac=["innerHTML"],cc=["innerHTML"],lc=["innerHTML"],ic={key:3,class:"link-text"},rc={class:"link-text-value"},uc=g({__name:"VPFeature",props:{icon:null,title:null,details:null,link:null,linkText:null},setup(e){return(t,n)=>(a(),y(O,{class:"VPFeature",href:e.link,"no-icon":!0},{default:v(()=>[u("article",oc,[typeof e.icon=="object"?(a(),y(be,{key:0,image:e.icon,alt:e.icon.alt,height:e.icon.height,width:e.icon.width},null,8,["image","alt","height","width"])):e.icon?(a(),i("div",{key:1,class:"icon",innerHTML:e.icon},null,8,ac)):m("",!0),u("h2",{class:"title",innerHTML:e.title},null,8,cc),e.details?(a(),i("p",{key:2,class:"details",innerHTML:e.details},null,8,lc)):m("",!0),e.linkText?(a(),i("div",ic,[u("p",rc,[A(P(e.linkText)+" ",1),h(sc,{class:"link-text-icon"})])])):m("",!0)])]),_:1},8,["href"]))}});const dc=p(uc,[["__scopeId","data-v-3fcc5e64"]]),_c={key:0,class:"VPFeatures"},vc={class:"container"},hc={class:"items"},fc=g({__name:"VPFeatures",props:{features:null},setup(e){const t=e,n=k(()=>{const s=t.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s%2===0)return"grid-4"}else return});return(s,o)=>e.features?(a(),i("div",_c,[u("div",vc,[u("div",hc,[(a(!0),i(S,null,N(e.features,l=>(a(),i("div",{key:l.title,class:M(["item",[c(n)]])},[h(dc,{icon:l.icon,title:l.title,details:l.details,link:l.link,"link-text":l.linkText},null,8,["icon","title","details","link","link-text"])],2))),128))])])])):m("",!0)}});const pc=p(fc,[["__scopeId","data-v-8c809639"]]),mc=g({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=V();return(n,s)=>c(t).features?(a(),y(pc,{key:0,class:"VPHomeFeatures",features:c(t).features},null,8,["features"])):m("",!0)}}),gc={class:"VPHome"},yc=g({__name:"VPHome",setup(e){return(t,n)=>{const s=R("Content");return a(),i("div",gc,[r(t.$slots,"home-hero-before",{},void 0,!0),h(Qa,null,{"home-hero-info":v(()=>[r(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[r(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),r(t.$slots,"home-hero-after",{},void 0,!0),r(t.$slots,"home-features-before",{},void 0,!0),h(mc),r(t.$slots,"home-features-after",{},void 0,!0),h(s)])}}});const bc=p(yc,[["__scopeId","data-v-d1511ec4"]]),kc=e=>(H("data-v-12ef9dee"),e=e(),E(),e),$c={class:"content"},Pc={class:"outline-title"},Vc={"aria-labelledby":"doc-outline-aria-label"},wc=kc(()=>u("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),xc=g({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=V(),s=ge([]);J(()=>{s.value=Le(t.value.outline??n.value.outline)});const o=w(),l=w();return oa(o,l),(d,f)=>(a(),i("div",{class:M(["VPDocAsideOutline",{"has-outline":c(s).length>0}]),ref_key:"container",ref:o},[u("div",$c,[u("div",{class:"outline-marker",ref_key:"marker",ref:l},null,512),u("div",Pc,P(c(Se)(c(n))),1),u("nav",Vc,[wc,h(Me,{headers:c(s),root:!0},null,8,["headers"])])])],2))}});const Sc=p(xc,[["__scopeId","data-v-12ef9dee"]]),Lc={class:"VPDocAsideCarbonAds"},Mc=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:null},setup(e){const t=()=>null;return(n,s)=>(a(),i("div",Lc,[h(c(t),{"carbon-ads":e.carbonAds},null,8,["carbon-ads"])]))}}),Cc=e=>(H("data-v-6db944aa"),e=e(),E(),e),Ic={class:"VPDocAside"},Bc=Cc(()=>u("div",{class:"spacer"},null,-1)),Tc=g({__name:"VPDocAside",setup(e){const{theme:t}=V();return(n,s)=>(a(),i("div",Ic,[r(n.$slots,"aside-top",{},void 0,!0),r(n.$slots,"aside-outline-before",{},void 0,!0),h(Sc),r(n.$slots,"aside-outline-after",{},void 0,!0),Bc,r(n.$slots,"aside-ads-before",{},void 0,!0),c(t).carbonAds?(a(),y(Mc,{key:0,"carbon-ads":c(t).carbonAds},null,8,["carbon-ads"])):m("",!0),r(n.$slots,"aside-ads-after",{},void 0,!0),r(n.$slots,"aside-bottom",{},void 0,!0)]))}});const Ac=p(Tc,[["__scopeId","data-v-6db944aa"]]);function Nc(){const{theme:e,page:t}=V();return k(()=>{const{text:n="Edit this page",pattern:s=""}=e.value.editLink||{},{relativePath:o}=t.value;let l;return typeof s=="function"?l=s({relativePath:o}):l=s.replace(/:path/g,o),{url:l,text:n}})}function Hc(){const{page:e,theme:t,frontmatter:n}=V();return k(()=>{var d,f,_,$;const s=Ge(t.value.sidebar,e.value.relativePath),o=Lt(s),l=o.findIndex(x=>K(e.value.relativePath,x.link));return{prev:n.value.prev===!1?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((d=o[l-1])==null?void 0:d.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((f=o[l-1])==null?void 0:f.link)},next:n.value.next===!1?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??((_=o[l+1])==null?void 0:_.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??(($=o[l+1])==null?void 0:$.link)}}})}const Ec={},zc={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Dc=u("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Fc=u("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Oc=[Dc,Fc];function Gc(e,t){return a(),i("svg",zc,Oc)}const Rc=p(Ec,[["render",Gc]]),Uc={class:"VPLastUpdated"},qc=["datetime"],jc=g({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:s}=V(),o=k(()=>new Date(n.value.lastUpdated)),l=k(()=>o.value.toISOString()),d=w("");return F(()=>{Q(()=>{d.value=o.value.toLocaleString(s.value)})}),(f,_)=>(a(),i("p",Uc,[A(P(c(t).lastUpdatedText||"Last updated")+": ",1),u("time",{datetime:c(l)},P(d.value),9,qc)]))}});const Kc=p(jc,[["__scopeId","data-v-d04e231d"]]),Wc={key:0,class:"VPDocFooter"},Yc={key:0,class:"edit-info"},Xc={key:0,class:"edit-link"},Qc={key:1,class:"last-updated"},Jc={key:1,class:"prev-next"},Zc={class:"pager"},el=["href"],tl=["innerHTML"],nl=["innerHTML"],sl=["href"],ol=["innerHTML"],al=["innerHTML"],cl=g({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:s}=V(),o=Nc(),l=Hc(),d=k(()=>t.value.editLink&&s.value.editLink!==!1),f=k(()=>n.value.lastUpdated&&s.value.lastUpdated!==!1),_=k(()=>d.value||f.value||l.value.prev||l.value.next);return($,x)=>{var I,B,b,C,L,T,D;return c(_)?(a(),i("footer",Wc,[r($.$slots,"doc-footer-before",{},void 0,!0),c(d)||c(f)?(a(),i("div",Yc,[c(d)?(a(),i("div",Xc,[h(O,{class:"edit-link-button",href:c(o).url,"no-icon":!0},{default:v(()=>[h(Rc,{class:"edit-link-icon","aria-label":"edit icon"}),A(" "+P(c(o).text),1)]),_:1},8,["href"])])):m("",!0),c(f)?(a(),i("div",Qc,[h(Kc)])):m("",!0)])):m("",!0),(I=c(l).prev)!=null&&I.link||(B=c(l).next)!=null&&B.link?(a(),i("div",Jc,[u("div",Zc,[(b=c(l).prev)!=null&&b.link?(a(),i("a",{key:0,class:"pager-link prev",href:c(Z)(c(l).prev.link)},[u("span",{class:"desc",innerHTML:((C=c(t).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,tl),u("span",{class:"title",innerHTML:c(l).prev.text},null,8,nl)],8,el)):m("",!0)]),u("div",{class:M(["pager",{"has-prev":(L=c(l).prev)==null?void 0:L.link}])},[(T=c(l).next)!=null&&T.link?(a(),i("a",{key:0,class:"pager-link next",href:c(Z)(c(l).next.link)},[u("span",{class:"desc",innerHTML:((D=c(t).docFooter)==null?void 0:D.next)||"Next page"},null,8,ol),u("span",{class:"title",innerHTML:c(l).next.text},null,8,al)],8,sl)):m("",!0)],2)])):m("",!0)])):m("",!0)}}});const ll=p(cl,[["__scopeId","data-v-6b942b4b"]]),il={key:0,class:"VPDocOutlineDropdown"},rl={key:0,class:"items"},ul=g({__name:"VPDocOutlineDropdown",setup(e){const{frontmatter:t,theme:n}=V(),s=w(!1);J(()=>{s.value=!1});const o=ge([]);return J(()=>{o.value=Le(t.value.outline??n.value.outline)}),(l,d)=>c(o).length>0?(a(),i("div",il,[u("button",{onClick:d[0]||(d[0]=f=>s.value=!s.value),class:M({open:s.value})},[A(P(c(Se)(c(n)))+" ",1),h(Ce,{class:"icon"})],2),s.value?(a(),i("div",rl,[h(Me,{headers:c(o)},null,8,["headers"])])):m("",!0)])):m("",!0)}});const dl=p(ul,[["__scopeId","data-v-a144482a"]]),_l=e=>(H("data-v-e031c361"),e=e(),E(),e),vl={class:"container"},hl=_l(()=>u("div",{class:"aside-curtain"},null,-1)),fl={class:"aside-container"},pl={class:"aside-content"},ml={class:"content"},gl={class:"content-container"},yl={class:"main"},bl=g({__name:"VPDoc",setup(e){const t=ee(),{hasSidebar:n,hasAside:s,leftAside:o}=z(),l=k(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,f)=>{const _=R("Content");return a(),i("div",{class:M(["VPDoc",{"has-sidebar":c(n),"has-aside":c(s)}])},[r(d.$slots,"doc-top",{},void 0,!0),u("div",vl,[c(s)?(a(),i("div",{key:0,class:M(["aside",{"left-aside":c(o)}])},[hl,u("div",fl,[u("div",pl,[h(Ac,null,{"aside-top":v(()=>[r(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[r(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[r(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[r(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[r(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[r(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):m("",!0),u("div",ml,[u("div",gl,[r(d.$slots,"doc-before",{},void 0,!0),h(dl),u("main",yl,[h(_,{class:M(["vp-doc",c(l)])},null,8,["class"])]),h(ll,null,{"doc-footer-before":v(()=>[r(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),r(d.$slots,"doc-after",{},void 0,!0)])])]),r(d.$slots,"doc-bottom",{},void 0,!0)],2)}}});const kl=p(bl,[["__scopeId","data-v-e031c361"]]),ue=e=>(H("data-v-27e6da3d"),e=e(),E(),e),$l={class:"NotFound"},Pl=ue(()=>u("p",{class:"code"},"404",-1)),Vl=ue(()=>u("h1",{class:"title"},"PAGE NOT FOUND",-1)),wl=ue(()=>u("div",{class:"divider"},null,-1)),xl=ue(()=>u("blockquote",{class:"quote"}," But if you don't change your direction, and if you keep looking, you may end up where you are heading. ",-1)),Sl={class:"action"},Ll=["href"],Ml=g({__name:"NotFound",setup(e){const{site:t}=V(),{localeLinks:n}=te({removeCurrent:!1}),s=w("/");return F(()=>{var l;const o=window.location.pathname.replace(t.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(s.value=((l=n.value.find(({link:d})=>d.startsWith(o)))==null?void 0:l.link)||n.value[0].link)}),(o,l)=>(a(),i("div",$l,[Pl,Vl,wl,xl,u("div",Sl,[u("a",{class:"link",href:c(fe)(s.value),"aria-label":"go to home"}," Take me home ",8,Ll)])]))}});const Cl=p(Ml,[["__scopeId","data-v-27e6da3d"]]),Il=g({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=V(),{hasSidebar:s}=z();return(o,l)=>(a(),i("div",{class:M(["VPContent",{"has-sidebar":c(s),"is-home":c(n).layout==="home"}]),id:"VPContent"},[c(t).isNotFound?r(o.$slots,"not-found",{key:0},()=>[h(Cl)],!0):c(n).layout==="page"?(a(),y(Na,{key:1},{"page-top":v(()=>[r(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[r(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):c(n).layout==="home"?(a(),y(bc,{key:2},{"home-hero-before":v(()=>[r(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[r(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[r(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[r(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[r(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[r(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):(a(),y(kl,{key:3},{"doc-top":v(()=>[r(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[r(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[r(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[r(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[r(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[r(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[r(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[r(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[r(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[r(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[r(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const Bl=p(Il,[["__scopeId","data-v-e1441724"]]),Tl={class:"container"},Al=["innerHTML"],Nl=["innerHTML"],Hl=g({__name:"VPFooter",setup(e){const{theme:t}=V(),{hasSidebar:n}=z();return(s,o)=>c(t).footer?(a(),i("footer",{key:0,class:M(["VPFooter",{"has-sidebar":c(n)}])},[u("div",Tl,[c(t).footer.message?(a(),i("p",{key:0,class:"message",innerHTML:c(t).footer.message},null,8,Al)):m("",!0),c(t).footer.copyright?(a(),i("p",{key:1,class:"copyright",innerHTML:c(t).footer.copyright},null,8,Nl)):m("",!0)])],2)):m("",!0)}});const El=p(Hl,[["__scopeId","data-v-3d1b5f7c"]]),zl={key:0,class:"Layout"},Dl=g({__name:"Layout",setup(e){const{isOpen:t,open:n,close:s}=z(),o=ee();j(()=>o.path,s),Mt(t,s),oe("close-sidebar",s),oe("is-sidebar-open",t);const{frontmatter:l}=V(),d=pt(),f=k(()=>!!d["home-hero-image"]);return oe("hero-image-slot-exists",f),(_,$)=>{const x=R("Content");return c(l).layout!==!1?(a(),i("div",zl,[r(_.$slots,"layout-top",{},void 0,!0),h(Bt),h(Nt,{class:"backdrop",show:c(t),onClick:c(s)},null,8,["show","onClick"]),h(Uo,null,{"nav-bar-title-before":v(()=>[r(_.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[r(_.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[r(_.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[r(_.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[r(_.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[r(_.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),h(ya,{open:c(t),onOpenMenu:c(n)},null,8,["open","onOpenMenu"]),h(Ia,{open:c(t)},{"sidebar-nav-before":v(()=>[r(_.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[r(_.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),h(Bl,null,{"page-top":v(()=>[r(_.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[r(_.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[r(_.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[r(_.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[r(_.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[r(_.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[r(_.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[r(_.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[r(_.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[r(_.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[r(_.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[r(_.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[r(_.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[r(_.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[r(_.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[r(_.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[r(_.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[r(_.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[r(_.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[r(_.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),h(El),r(_.$slots,"layout-bottom",{},void 0,!0)])):(a(),y(x,{key:1}))}}});const Fl=p(Dl,[["__scopeId","data-v-2bf54a99"]]);const Gl={Layout:Fl,enhanceApp:({app:e})=>{e.component("Badge",gt)}};export{Gl as t,V as u}; diff --git a/assets/chunks/theme.C-PiQMS2.js b/assets/chunks/theme.C-PiQMS2.js new file mode 100644 index 0000000..0c0fb85 --- /dev/null +++ b/assets/chunks/theme.C-PiQMS2.js @@ -0,0 +1,7 @@ +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/chunks/VPAlgoliaSearchBox.DA--5JLU.js","assets/chunks/framework.D5F7AbHZ.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} +import{d as _,o as a,c,r as l,n as M,a as F,t as T,b,w as d,T as ve,e as f,_ as k,u as Oe,i as Ue,f as Ge,g as pe,h as N,j as J,k as $,l as z,m as v,p as i,q as B,s as H,v as j,x as le,y as q,z as x,A as ee,B as ye,C as je,D as ze,E as K,F as A,G as E,H as Pe,I as te,J as m,K as R,L as Le,M as oe,N as Q,O as se,P as qe,Q as Ve,R as Ke,S as We,U as Re,V as Se,W as Je,X as Ye,Y as Qe,Z as we,$ as Ie,a0 as Xe,a1 as Ze,a2 as xe,a3 as et}from"./framework.D5F7AbHZ.js";const tt=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:M(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[F(T(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},st=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),b(ve,{name:"fade"},{default:d(()=>[e.show?(a(),c("div",ot)):f("",!0)]),_:1}))}}),nt=k(st,[["__scopeId","data-v-1f8663d0"]]),L=Oe;function at(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function he(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Ue(o)||o.startsWith("#")||!n.startsWith("http")||!Ge(e))return o;const{site:r}=L(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${s}`);return pe(u)}const fe=N(J?location.hash:"");J&&window.addEventListener("hashchange",()=>{fe.value=location.hash});function Y({removeCurrent:o=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:s,page:n,theme:r}=L(),u=$(()=>{var p,g;return{label:(p=t.value.locales[s.value])==null?void 0:p.label,link:((g=t.value.locales[s.value])==null?void 0:g.link)||(s.value==="root"?"/":`/${s.value}/`)}});return{localeLinks:$(()=>Object.entries(t.value.locales).flatMap(([p,g])=>o&&u.value.label===g.label?[]:{text:g.label,link:rt(g.link||(p==="root"?"/":`/${p}/`),r.value.i18nRouting!==!1&&e,n.value.relativePath.slice(u.value.link.length-1),!t.value.cleanUrls)+fe.value})),currentLang:u}}function rt(o,e,t,s){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const it=o=>(B("data-v-54fcb384"),o=o(),H(),o),lt={class:"NotFound"},ct={class:"code"},ut={class:"title"},dt=it(()=>v("div",{class:"divider"},null,-1)),vt={class:"quote"},pt={class:"action"},ht=["href","aria-label"],ft=_({__name:"NotFound",setup(o){const{site:e,theme:t}=L(),{localeLinks:s}=Y({removeCurrent:!1}),n=N("/");return z(()=>{var u;const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");s.value.length&&(n.value=((u=s.value.find(({link:h})=>h.startsWith(r)))==null?void 0:u.link)||s.value[0].link)}),(r,u)=>{var h,p,g,y,w;return a(),c("div",lt,[v("p",ct,T(((h=i(t).notFound)==null?void 0:h.code)??"404"),1),v("h1",ut,T(((p=i(t).notFound)==null?void 0:p.title)??"PAGE NOT FOUND"),1),dt,v("blockquote",vt,T(((g=i(t).notFound)==null?void 0:g.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",pt,[v("a",{class:"link",href:i(pe)(n.value),"aria-label":((y=i(t).notFound)==null?void 0:y.linkLabel)??"go to home"},T(((w=i(t).notFound)==null?void 0:w.linkText)??"Take me home"),9,ht)])])}}}),_t=k(ft,[["__scopeId","data-v-54fcb384"]]);function Te(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(ce(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function mt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function kt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):j(o,e.link)?!0:e.items?ue(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function O(){const{frontmatter:o,page:e,theme:t}=L(),s=le("(min-width: 960px)"),n=N(!1),r=$(()=>{const C=t.value.sidebar,I=e.value.relativePath;return C?Te(C,I):[]}),u=N(r.value);q(r,(C,I)=>{JSON.stringify(C)!==JSON.stringify(I)&&(u.value=r.value)});const h=$(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=$(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=$(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),y=$(()=>h.value&&s.value),w=$(()=>h.value?mt(u.value):[]);function S(){n.value=!0}function V(){n.value=!1}function P(){n.value?V():S()}return{isOpen:n,sidebar:u,sidebarGroups:w,hasSidebar:h,hasAside:g,leftAside:p,isSidebarEnabled:y,open:S,close:V,toggle:P}}function bt(o,e){let t;x(()=>{t=o.value?document.activeElement:void 0}),z(()=>{window.addEventListener("keyup",s)}),ee(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function $t(o){const{page:e}=L(),t=N(!1),s=$(()=>o.value.collapsed!=null),n=$(()=>!!o.value.link),r=N(!1),u=()=>{r.value=j(e.value.relativePath,o.value.link)};q([e,o,fe],u),z(u);const h=$(()=>r.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),p=$(()=>!!(o.value.items&&o.value.items.length));x(()=>{t.value=!!(s.value&&o.value.collapsed)}),ye(()=>{(r.value||h.value)&&(t.value=!1)});function g(){s.value&&(t.value=!t.value)}return{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:h,hasChildren:p,toggle:g}}function gt(){const{hasSidebar:o}=O(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:$(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Ne(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=s&&u.level<=n),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const r=[];e:for(let u=0;u=0;p--){const g=o[p];if(g.level{requestAnimationFrame(r),window.addEventListener("scroll",s)}),je(()=>{u(location.hash)}),ee(()=>{window.removeEventListener("scroll",s)});function r(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,g=document.body.offsetHeight,y=Math.abs(h+p-g)<1,w=de.map(({element:V,link:P})=>({link:P,top:Vt(V)})).filter(({top:V})=>!Number.isNaN(V)).sort((V,P)=>V.top-P.top);if(!w.length){u(null);return}if(h<1){u(null);return}if(y){u(w[w.length-1].link);return}let S=null;for(const{link:V,top:P}of w){if(P>h+ze()+4)break;S=V}u(S)}function u(h){n&&n.classList.remove("active"),h==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Vt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const St=["href","title"],wt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const s=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(s));n==null||n.focus({preventScroll:!0})}return(t,s)=>{const n=K("VPDocOutlineItem",!0);return a(),c("ul",{class:M(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(A,null,E(t.headers,({children:r,link:u,title:h})=>(a(),c("li",null,[v("a",{class:"outline-link",href:u,onClick:e,title:h},T(h),9,St),r!=null&&r.length?(a(),b(n,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Me=k(wt,[["__scopeId","data-v-95af26cc"]]),It=o=>(B("data-v-facbbd7b"),o=o(),H(),o),Tt={class:"content"},Nt={class:"outline-title",role:"heading","aria-level":"2"},Mt={"aria-labelledby":"doc-outline-aria-label"},Ct=It(()=>v("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),At=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=L(),s=Pe([]);te(()=>{s.value=_e(e.value.outline??t.value.outline)});const n=N(),r=N();return Lt(n,r),(u,h)=>(a(),c("div",{class:M(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n,role:"navigation"},[v("div",Tt,[v("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),v("div",Nt,T(i(Ne)(i(t))),1),v("nav",Mt,[Ct,m(Me,{headers:s.value,root:!0},null,8,["headers"])])])],2))}}),Bt=k(At,[["__scopeId","data-v-facbbd7b"]]),Ht={class:"VPDocAsideCarbonAds"},Et=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),c("div",Ht,[m(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft=o=>(B("data-v-bfbdc8d7"),o=o(),H(),o),Dt={class:"VPDocAside"},Ot=Ft(()=>v("div",{class:"spacer"},null,-1)),Ut=_({__name:"VPDocAside",setup(o){const{theme:e}=L();return(t,s)=>(a(),c("div",Dt,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Bt),l(t.$slots,"aside-outline-after",{},void 0,!0),Ot,l(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),b(Et,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Gt=k(Ut,[["__scopeId","data-v-bfbdc8d7"]]);function jt(){const{theme:o,page:e}=L();return $(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function zt(){const{page:o,theme:e,frontmatter:t}=L();return $(()=>{var g,y,w,S,V,P,C,I;const s=Te(e.value.sidebar,o.value.relativePath),n=kt(s),r=qt(n,U=>U.link.replace(/[?#].*$/,"")),u=r.findIndex(U=>j(o.value.relativePath,U.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((y=e.value.docFooter)==null?void 0:y.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((w=r[u-1])==null?void 0:w.docFooterText)??((S=r[u-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((V=r[u-1])==null?void 0:V.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((P=r[u+1])==null?void 0:P.docFooterText)??((C=r[u+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((I=r[u+1])==null?void 0:I.link)}}})}function qt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=$(()=>e.tag??(e.href?"a":"span")),s=$(()=>e.href&&Le.test(e.href));return(n,r)=>(a(),b(R(t.value),{class:M(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?i(he)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:d(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Kt={class:"VPLastUpdated"},Wt=["datetime"],Rt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:s,lang:n}=L(),r=$(()=>new Date(s.value.lastUpdated??t.value.lastUpdated)),u=$(()=>r.value.toISOString()),h=N("");return z(()=>{x(()=>{var p,g,y;h.value=new Intl.DateTimeFormat((g=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&g.forceLocale?n.value:void 0,((y=e.value.lastUpdated)==null?void 0:y.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(p,g)=>{var y;return a(),c("p",Kt,[F(T(((y=i(e).lastUpdated)==null?void 0:y.text)||i(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:u.value},T(h.value),9,Wt)])}}}),Jt=k(Rt,[["__scopeId","data-v-cf585a23"]]),Yt=o=>(B("data-v-438133a6"),o=o(),H(),o),Qt={key:0,class:"VPDocFooter"},Xt={key:0,class:"edit-info"},Zt={key:0,class:"edit-link"},xt=Yt(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),eo={key:1,class:"last-updated"},to={key:1,class:"prev-next"},oo={class:"pager"},so=["innerHTML"],no=["innerHTML"],ao={class:"pager"},ro=["innerHTML"],io=["innerHTML"],lo=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=L(),n=jt(),r=zt(),u=$(()=>e.value.editLink&&s.value.editLink!==!1),h=$(()=>t.value.lastUpdated&&s.value.lastUpdated!==!1),p=$(()=>u.value||h.value||r.value.prev||r.value.next);return(g,y)=>{var w,S,V,P;return p.value?(a(),c("footer",Qt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Xt,[u.value?(a(),c("div",Zt,[m(D,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:d(()=>[xt,F(" "+T(i(n).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",eo,[m(Jt)])):f("",!0)])):f("",!0),(w=i(r).prev)!=null&&w.link||(S=i(r).next)!=null&&S.link?(a(),c("nav",to,[v("div",oo,[(V=i(r).prev)!=null&&V.link?(a(),b(D,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,so),v("span",{class:"title",innerHTML:i(r).prev.text},null,8,no)]}),_:1},8,["href"])):f("",!0)]),v("div",ao,[(P=i(r).next)!=null&&P.link?(a(),b(D,{key:0,class:"pager-link next",href:i(r).next.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,ro),v("span",{class:"title",innerHTML:i(r).next.text},null,8,io)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),co=k(lo,[["__scopeId","data-v-438133a6"]]),uo=o=>(B("data-v-926db95e"),o=o(),H(),o),vo={class:"container"},po=uo(()=>v("div",{class:"aside-curtain"},null,-1)),ho={class:"aside-container"},fo={class:"aside-content"},_o={class:"content"},mo={class:"content-container"},ko={class:"main"},bo=_({__name:"VPDoc",setup(o){const{theme:e}=L(),t=oe(),{hasSidebar:s,hasAside:n,leftAside:r}=O(),u=$(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const g=K("Content");return a(),c("div",{class:M(["VPDoc",{"has-sidebar":i(s),"has-aside":i(n)}])},[l(h.$slots,"doc-top",{},void 0,!0),v("div",vo,[i(n)?(a(),c("div",{key:0,class:M(["aside",{"left-aside":i(r)}])},[po,v("div",ho,[v("div",fo,[m(Gt,null,{"aside-top":d(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),v("div",_o,[v("div",mo,[l(h.$slots,"doc-before",{},void 0,!0),v("main",ko,[m(g,{class:M(["vp-doc",[u.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(co,null,{"doc-footer-before":d(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),$o=k(bo,[["__scopeId","data-v-926db95e"]]),go=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=$(()=>e.href&&Le.test(e.href)),s=$(()=>e.tag||e.href?"a":"button");return(n,r)=>(a(),b(R(s.value),{class:M(["VPButton",[n.size,n.theme]]),href:n.href?i(he)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:d(()=>[F(T(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),yo=k(go,[["__scopeId","data-v-3a0ec07a"]]),Po=["src","alt"],Lo=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=K("VPImage",!0);return e.image?(a(),c(A,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Po)):(a(),c(A,{key:1},[m(s,Q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(s,Q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),Z=k(Lo,[["__scopeId","data-v-8d5926dc"]]),Vo=o=>(B("data-v-4ec2e118"),o=o(),H(),o),So={class:"container"},wo={class:"main"},Io={key:0,class:"name"},To=["innerHTML"],No=["innerHTML"],Mo=["innerHTML"],Co={key:0,class:"actions"},Ao={key:0,class:"image"},Bo={class:"image-container"},Ho=Vo(()=>v("div",{class:"image-bg"},null,-1)),Eo=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=se("hero-image-slot-exists");return(t,s)=>(a(),c("div",{class:M(["VPHero",{"has-image":t.image||i(e)}])},[v("div",So,[v("div",wo,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Io,[v("span",{innerHTML:t.name,class:"clip"},null,8,To)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,No)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Mo)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",Co,[(a(!0),c(A,null,E(t.actions,n=>(a(),c("div",{key:n.link,class:"action"},[m(yo,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),c("div",Ao,[v("div",Bo,[Ho,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),b(Z,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Fo=k(Eo,[["__scopeId","data-v-4ec2e118"]]),Do=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=L();return(t,s)=>i(e).hero?(a(),b(Fo,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Oo=o=>(B("data-v-e5e7bd8b"),o=o(),H(),o),Uo={class:"box"},Go={key:0,class:"icon"},jo=["innerHTML"],zo=["innerHTML"],qo=["innerHTML"],Ko={key:4,class:"link-text"},Wo={class:"link-text-value"},Ro=Oo(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Jo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),b(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:d(()=>[v("article",Uo,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Go,[m(Z,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),b(Z,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,jo)):f("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,zo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,qo)):f("",!0),e.linkText?(a(),c("div",Ko,[v("p",Wo,[F(T(e.linkText)+" ",1),Ro])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Yo=k(Jo,[["__scopeId","data-v-e5e7bd8b"]]),Qo={key:0,class:"VPFeatures"},Xo={class:"container"},Zo={class:"items"},xo=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=$(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),c("div",Qo,[v("div",Xo,[v("div",Zo,[(a(!0),c(A,null,E(s.features,r=>(a(),c("div",{key:r.title,class:M(["item",[t.value]])},[m(Yo,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),es=k(xo,[["__scopeId","data-v-a5b4818c"]]),ts=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=L();return(t,s)=>i(e).features?(a(),b(es,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):f("",!0)}}),os=_({__name:"VPHomeContent",setup(o){const{width:e}=qe({includeScrollbar:!1});return(t,s)=>(a(),c("div",{class:"vp-doc container",style:Ve(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),ss=k(os,[["__scopeId","data-v-992c883e"]]),ns={class:"VPHome"},as=_({__name:"VPHome",setup(o){const{frontmatter:e}=L();return(t,s)=>{const n=K("Content");return a(),c("div",ns,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Do,null,{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(ts),l(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),b(ss,{key:0},{default:d(()=>[m(n)]),_:1})):(a(),b(n,{key:1}))])}}}),rs=k(as,[["__scopeId","data-v-f20aabfd"]]),is={},ls={class:"VPPage"};function cs(o,e){const t=K("Content");return a(),c("div",ls,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const us=k(is,[["render",cs]]),ds=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=L(),{hasSidebar:s}=O();return(n,r)=>(a(),c("div",{class:M(["VPContent",{"has-sidebar":i(s),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[m(_t)],!0):i(t).layout==="page"?(a(),b(us,{key:1},{"page-top":d(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),b(rs,{key:2},{"home-hero-before":d(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),b(R(i(t).layout),{key:3})):(a(),b($o,{key:4},{"doc-top":d(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":d(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":d(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":d(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":d(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),vs=k(ds,[["__scopeId","data-v-c788ce77"]]),ps={class:"container"},hs=["innerHTML"],fs=["innerHTML"],_s=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=O();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),c("footer",{key:0,class:M(["VPFooter",{"has-sidebar":i(s)}])},[v("div",ps,[i(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,hs)):f("",!0),i(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,fs)):f("",!0)])],2)):f("",!0)}}),ms=k(_s,[["__scopeId","data-v-f0cf6efd"]]);function ks(){const{theme:o,frontmatter:e}=L(),t=Pe([]),s=$(()=>t.value.length>0);return te(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const bs=o=>(B("data-v-f15d19c4"),o=o(),H(),o),$s=bs(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),gs={class:"header"},ys={class:"outline"},Ps=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=L(),s=N(!1),n=N(0),r=N(),u=N();Ke(r,()=>{s.value=!1}),We("Escape",()=>{s.value=!1}),te(()=>{s.value=!1});function h(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(y){y.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),Re(()=>{s.value=!1}))}function g(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,w)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Ve({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[y.headers.length>0?(a(),c("button",{key:0,onClick:h,class:M({open:s.value})},[F(T(i(Ne)(i(t)))+" ",1),$s],2)):(a(),c("button",{key:1,onClick:g},T(i(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:d(()=>[s.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:p},[v("div",gs,[v("a",{class:"top-link",href:"#",onClick:g},T(i(t).returnToTopLabel||"Return to top"),1)]),v("div",ys,[m(Me,{headers:y.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Ls=k(Ps,[["__scopeId","data-v-f15d19c4"]]),Vs=o=>(B("data-v-fc4fc217"),o=o(),H(),o),Ss={class:"container"},ws=["aria-expanded"],Is=Vs(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),Ts={class:"menu-text"},Ns=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=O(),{headers:n}=ks(),{y:r}=Se(),u=N(0);z(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),te(()=>{n.value=_e(t.value.outline??e.value.outline)});const h=$(()=>n.value.length===0),p=$(()=>h.value&&!s.value),g=$(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:h.value,fixed:p.value}));return(y,w)=>i(t).layout!=="home"&&(!p.value||i(r)>=u.value)?(a(),c("div",{key:0,class:M(g.value)},[v("div",Ss,[i(s)?(a(),c("button",{key:0,class:"menu","aria-expanded":y.open,"aria-controls":"VPSidebarNav",onClick:w[0]||(w[0]=S=>y.$emit("open-menu"))},[Is,v("span",Ts,T(i(e).sidebarMenuLabel||"Menu"),1)],8,ws)):f("",!0),m(Ls,{headers:i(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Ms=k(Ns,[["__scopeId","data-v-fc4fc217"]]);function Cs(){const o=N(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=oe();return q(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const As={},Bs={class:"VPSwitch",type:"button",role:"switch"},Hs={class:"check"},Es={key:0,class:"icon"};function Fs(o,e){return a(),c("button",Bs,[v("span",Hs,[o.$slots.default?(a(),c("span",Es,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Ds=k(As,[["render",Fs],["__scopeId","data-v-5a9711a9"]]),Ce=o=>(B("data-v-fc358d5e"),o=o(),H(),o),Os=Ce(()=>v("span",{class:"vpi-sun sun"},null,-1)),Us=Ce(()=>v("span",{class:"vpi-moon moon"},null,-1)),Gs=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=L(),s=se("toggle-appearance",()=>{e.value=!e.value}),n=$(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(r,u)=>(a(),b(Ds,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(s)},{default:d(()=>[Os,Us]),_:1},8,["title","aria-checked","onClick"]))}}),me=k(Gs,[["__scopeId","data-v-fc358d5e"]]),js={key:0,class:"VPNavBarAppearance"},zs=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=L();return(t,s)=>i(e).appearance&&i(e).appearance!=="force-dark"?(a(),c("div",js,[m(me)])):f("",!0)}}),qs=k(zs,[["__scopeId","data-v-7c273665"]]),ke=N();let Ae=!1,ie=0;function Ks(o){const e=N(!1);if(J){!Ae&&Ws(),ie++;const t=q(ke,s=>{var n,r,u;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});ee(()=>{t(),ie--,ie||Rs()})}return Je(e)}function Ws(){document.addEventListener("focusin",Be),Ae=!0,ke.value=document.activeElement}function Rs(){document.removeEventListener("focusin",Be)}function Be(){ke.value=document.activeElement}const Js={class:"VPMenuLink"},Ys=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),c("div",Js,[m(D,{class:M({active:i(j)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:d(()=>[F(T(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=k(Ys,[["__scopeId","data-v-f8b123ce"]]),Qs={class:"VPMenuGroup"},Xs={key:0,class:"title"},Zs=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Qs,[e.text?(a(),c("p",Xs,T(e.text),1)):f("",!0),(a(!0),c(A,null,E(e.items,s=>(a(),c(A,null,["link"in s?(a(),b(ne,{key:0,item:s},null,8,["item"])):f("",!0)],64))),256))]))}}),xs=k(Zs,[["__scopeId","data-v-68969cb9"]]),en={class:"VPMenu"},tn={key:0,class:"items"},on=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",en,[e.items?(a(),c("div",tn,[(a(!0),c(A,null,E(e.items,s=>(a(),c(A,{key:s.text},["link"in s?(a(),b(ne,{key:0,item:s},null,8,["item"])):(a(),b(xs,{key:1,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),sn=k(on,[["__scopeId","data-v-c4198b50"]]),nn=o=>(B("data-v-26532166"),o=o(),H(),o),an=["aria-expanded","aria-label"],rn={key:0,class:"text"},ln=["innerHTML"],cn=nn(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),un={key:1,class:"vpi-more-horizontal icon"},dn={class:"menu"},vn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=N(!1),t=N();Ks({el:t,onBlur:s});function s(){e.value=!1}return(n,r)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=u=>e.value=!0),onMouseleave:r[2]||(r[2]=u=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),c("span",rn,[n.icon?(a(),c("span",{key:0,class:M([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),c("span",{key:1,innerHTML:n.button},null,8,ln)):f("",!0),cn])):(a(),c("span",un))],8,an),v("div",dn,[m(sn,{items:n.items},{default:d(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),be=k(vn,[["__scopeId","data-v-26532166"]]),pn=["href","aria-label","innerHTML"],hn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=$(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),c("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,pn))}}),fn=k(hn,[["__scopeId","data-v-80dc6408"]]),_n={class:"VPSocialLinks"},mn=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",_n,[(a(!0),c(A,null,E(e.links,({link:s,icon:n,ariaLabel:r})=>(a(),b(fn,{key:s,icon:n,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=k(mn,[["__scopeId","data-v-dcace2da"]]),kn={key:0,class:"group translations"},bn={class:"trans-title"},$n={key:1,class:"group"},gn={class:"item appearance"},yn={class:"label"},Pn={class:"appearance-action"},Ln={key:2,class:"group"},Vn={class:"item social-links"},Sn=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=L(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),r=$(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>r.value?(a(),b(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:d(()=>[i(s).length&&i(n).label?(a(),c("div",kn,[v("p",bn,T(i(n).label),1),(a(!0),c(A,null,E(i(s),p=>(a(),b(ne,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),i(e).appearance&&i(e).appearance!=="force-dark"?(a(),c("div",$n,[v("div",gn,[v("p",yn,T(i(t).darkModeSwitchLabel||"Appearance"),1),v("div",Pn,[m(me)])])])):f("",!0),i(t).socialLinks?(a(),c("div",Ln,[v("div",Vn,[m($e,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),wn=k(Sn,[["__scopeId","data-v-8acb9ba8"]]),In=o=>(B("data-v-1f112e84"),o=o(),H(),o),Tn=["aria-expanded"],Nn=In(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),Mn=[Nn],Cn=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:M(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Mn,10,Tn))}}),An=k(Cn,[["__scopeId","data-v-1f112e84"]]),Bn=["innerHTML"],Hn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),b(D,{class:M({VPNavBarMenuLink:!0,active:i(j)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:d(()=>[v("span",{innerHTML:t.item.text},null,8,Bn)]),_:1},8,["class","href","noIcon","target","rel"]))}}),En=k(Hn,[["__scopeId","data-v-ba441ad6"]]),Fn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=L(),s=r=>"link"in r?j(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(s),n=$(()=>s(e.item));return(r,u)=>(a(),b(be,{class:M({VPNavBarMenuGroup:!0,active:i(j)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),Dn=o=>(B("data-v-18e4883d"),o=o(),H(),o),On={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Un=Dn(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Gn=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=L();return(t,s)=>i(e).nav?(a(),c("nav",On,[Un,(a(!0),c(A,null,E(i(e).nav,n=>(a(),c(A,{key:n.text},["link"in n?(a(),b(En,{key:0,item:n},null,8,["item"])):(a(),b(Fn,{key:1,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),jn=k(Gn,[["__scopeId","data-v-18e4883d"]]);function zn(o){const{localeIndex:e,theme:t}=L();function s(n){var P,C,I;const r=n.split("."),u=(P=t.value.search)==null?void 0:P.options,h=u&&typeof u=="object",p=h&&((I=(C=u.locales)==null?void 0:C[e.value])==null?void 0:I.translations)||null,g=h&&u.translations||null;let y=p,w=g,S=o;const V=r.pop();for(const U of r){let G=null;const W=S==null?void 0:S[U];W&&(G=S=W);const ae=w==null?void 0:w[U];ae&&(G=w=ae);const re=y==null?void 0:y[U];re&&(G=y=re),W||(S=G),ae||(w=G),re||(y=G)}return(y==null?void 0:y[V])??(w==null?void 0:w[V])??(S==null?void 0:S[V])??""}return s}const qn=["aria-label"],Kn={class:"DocSearch-Button-Container"},Wn=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Rn={class:"DocSearch-Button-Placeholder"},Jn=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ge=_({__name:"VPNavBarSearchButton",setup(o){const t=zn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[v("span",Kn,[Wn,v("span",Rn,T(i(t)("button.buttonText")),1)]),Jn],8,qn))}}),Yn={class:"VPNavBarSearch"},Qn={id:"local-search"},Xn={key:1,id:"docsearch"},Zn=_({__name:"VPNavBarSearch",setup(o){const e=()=>null,t=Ye(()=>Qe(()=>import("./VPAlgoliaSearchBox.DA--5JLU.js"),__vite__mapDeps([0,1]))),{theme:s}=L(),n=N(!1),r=N(!1),u=()=>{const S="VPAlgoliaPreconnect";(window.requestIdleCallback||setTimeout)(()=>{var C;const P=document.createElement("link");P.id=S,P.rel="preconnect",P.href=`https://${(((C=s.value.search)==null?void 0:C.options)??s.value.algolia).appId}-dsn.algolia.net`,P.crossOrigin="",document.head.appendChild(P)})};z(()=>{u();const S=P=>{(P.key.toLowerCase()==="k"&&(P.metaKey||P.ctrlKey)||!g(P)&&P.key==="/")&&(P.preventDefault(),h(),V())},V=()=>{window.removeEventListener("keydown",S)};window.addEventListener("keydown",S),ee(V)});function h(){n.value||(n.value=!0,setTimeout(p,16))}function p(){const S=new Event("keydown");S.key="k",S.metaKey=!0,window.dispatchEvent(S),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||p()},16)}function g(S){const V=S.target,P=V.tagName;return V.isContentEditable||P==="INPUT"||P==="SELECT"||P==="TEXTAREA"}const y=N(!1),w="algolia";return(S,V)=>{var P;return a(),c("div",Yn,[i(w)==="local"?(a(),c(A,{key:0},[y.value?(a(),b(i(e),{key:0,onClose:V[0]||(V[0]=C=>y.value=!1)})):f("",!0),v("div",Qn,[m(ge,{onClick:V[1]||(V[1]=C=>y.value=!0)})])],64)):i(w)==="algolia"?(a(),c(A,{key:1},[n.value?(a(),b(i(t),{key:0,algolia:((P=i(s).search)==null?void 0:P.options)??i(s).algolia,onVnodeBeforeMount:V[2]||(V[2]=C=>r.value=!0)},null,8,["algolia"])):f("",!0),r.value?f("",!0):(a(),c("div",Xn,[m(ge,{onClick:h})]))],64)):f("",!0)])}}}),xn=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>i(e).socialLinks?(a(),b($e,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),ea=k(xn,[["__scopeId","data-v-c0641f5a"]]),ta=["href","rel","target"],oa={key:1},sa={key:2},na=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=L(),{hasSidebar:s}=O(),{currentLang:n}=Y(),r=$(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=$(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=$(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,g)=>(a(),c("div",{class:M(["VPNavBarTitle",{"has-sidebar":i(s)}])},[v("a",{class:"title",href:r.value??i(he)(i(n).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),b(Z,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):f("",!0),i(t).siteTitle?(a(),c("span",oa,T(i(t).siteTitle),1)):i(t).siteTitle===void 0?(a(),c("span",sa,T(i(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,ta)],2))}}),aa=k(na,[["__scopeId","data-v-287ea40d"]]),ra={class:"items"},ia={class:"title"},la=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=L(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,r)=>i(t).length&&i(s).label?(a(),b(be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:d(()=>[v("div",ra,[v("p",ia,T(i(s).label),1),(a(!0),c(A,null,E(i(t),u=>(a(),b(ne,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ca=k(la,[["__scopeId","data-v-5bcc9546"]]),ua=o=>(B("data-v-3b8fc0f7"),o=o(),H(),o),da={class:"wrapper"},va={class:"container"},pa={class:"title"},ha={class:"content"},fa={class:"content-body"},_a=ua(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),ma=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=Se(),{hasSidebar:t}=O(),{frontmatter:s}=L(),n=N({});return ye(()=>{n.value={"has-sidebar":t.value,home:s.value.layout==="home",top:e.value===0}}),(r,u)=>(a(),c("div",{class:M(["VPNavBar",n.value])},[v("div",da,[v("div",va,[v("div",pa,[m(aa,null,{"nav-bar-title-before":d(()=>[l(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",ha,[v("div",fa,[l(r.$slots,"nav-bar-content-before",{},void 0,!0),m(Zn,{class:"search"}),m(jn,{class:"menu"}),m(ca,{class:"translations"}),m(qs,{class:"appearance"}),m(ea,{class:"social-links"}),m(wn,{class:"extra"}),l(r.$slots,"nav-bar-content-after",{},void 0,!0),m(An,{class:"hamburger",active:r.isScreenOpen,onClick:u[0]||(u[0]=h=>r.$emit("toggle-screen"))},null,8,["active"])])])])]),_a],2))}}),ka=k(ma,[["__scopeId","data-v-3b8fc0f7"]]),ba={key:0,class:"VPNavScreenAppearance"},$a={class:"text"},ga=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=L();return(s,n)=>i(e).appearance&&i(e).appearance!=="force-dark"?(a(),c("div",ba,[v("p",$a,T(i(t).darkModeSwitchLabel||"Appearance"),1),m(me)])):f("",!0)}}),ya=k(ga,[["__scopeId","data-v-bc4b47f6"]]),Pa=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=se("close-screen");return(t,s)=>(a(),b(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:d(()=>[F(T(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),La=k(Pa,[["__scopeId","data-v-16a75162"]]),Va=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=se("close-screen");return(t,s)=>(a(),b(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:i(e)},{default:d(()=>[F(T(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),He=k(Va,[["__scopeId","data-v-b8f04618"]]),Sa={class:"VPNavScreenMenuGroupSection"},wa={key:0,class:"title"},Ia=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Sa,[e.text?(a(),c("p",wa,T(e.text),1)):f("",!0),(a(!0),c(A,null,E(e.items,s=>(a(),b(He,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ta=k(Ia,[["__scopeId","data-v-902c48d5"]]),Na=o=>(B("data-v-564c17b7"),o=o(),H(),o),Ma=["aria-controls","aria-expanded"],Ca=["innerHTML"],Aa=Na(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),Ba=["id"],Ha={key:1,class:"group"},Ea=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=N(!1),s=$(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,u)=>(a(),c("div",{class:M(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:r.text},null,8,Ca),Aa],8,Ma),v("div",{id:s.value,class:"items"},[(a(!0),c(A,null,E(r.items,h=>(a(),c(A,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(He,{item:h},null,8,["item"])])):(a(),c("div",Ha,[m(Ta,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ba)],2))}}),Fa=k(Ea,[["__scopeId","data-v-564c17b7"]]),Da={key:0,class:"VPNavScreenMenu"},Oa=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=L();return(t,s)=>i(e).nav?(a(),c("nav",Da,[(a(!0),c(A,null,E(i(e).nav,n=>(a(),c(A,{key:n.text},["link"in n?(a(),b(La,{key:0,item:n},null,8,["item"])):(a(),b(Fa,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Ua=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>i(e).socialLinks?(a(),b($e,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):f("",!0)}}),Ee=o=>(B("data-v-21c91625"),o=o(),H(),o),Ga=Ee(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),ja=Ee(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),za={class:"list"},qa=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=N(!1);function n(){s.value=!s.value}return(r,u)=>i(e).length&&i(t).label?(a(),c("div",{key:0,class:M(["VPNavScreenTranslations",{open:s.value}])},[v("button",{class:"title",onClick:n},[Ga,F(" "+T(i(t).label)+" ",1),ja]),v("ul",za,[(a(!0),c(A,null,E(i(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(D,{class:"link",href:h.link},{default:d(()=>[F(T(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Ka=k(qa,[["__scopeId","data-v-21c91625"]]),Wa={class:"container"},Ra=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=N(null),t=we(J?document.body:null);return(s,n)=>(a(),b(ve,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:d(()=>[s.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",Wa,[l(s.$slots,"nav-screen-content-before",{},void 0,!0),m(Oa,{class:"menu"}),m(Ka,{class:"translations"}),m(ya,{class:"appearance"}),m(Ua,{class:"social-links"}),l(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ja=k(Ra,[["__scopeId","data-v-9f67e6f8"]]),Ya={key:0,class:"VPNav"},Qa=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Cs(),{frontmatter:n}=L(),r=$(()=>n.value.navbar!==!1);return Ie("close-screen",t),x(()=>{J&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(u,h)=>r.value?(a(),c("header",Ya,[m(ka,{"is-screen-open":i(e),onToggleScreen:i(s)},{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Ja,{open:i(e)},{"nav-screen-content-before":d(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Xa=k(Qa,[["__scopeId","data-v-a1655bdb"]]),Fe=o=>(B("data-v-506212c1"),o=o(),H(),o),Za=["role","tabindex"],xa=Fe(()=>v("div",{class:"indicator"},null,-1)),er=Fe(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),tr=[er],or={key:1,class:"items"},sr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:u,hasChildren:h,toggle:p}=$t($(()=>e.item)),g=$(()=>h.value?"section":"div"),y=$(()=>n.value?"a":"div"),w=$(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),S=$(()=>n.value?void 0:"button"),V=$(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":u.value}]);function P(I){"key"in I&&I.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(I,U)=>{const G=K("VPSidebarItem",!0);return a(),b(R(g.value),{class:M(["VPSidebarItem",V.value])},{default:d(()=>[I.item.text?(a(),c("div",Q({key:0,class:"item",role:S.value},Ze(I.item.items?{click:P,keydown:P}:{},!0),{tabindex:I.item.items&&0}),[xa,I.item.link?(a(),b(D,{key:0,tag:y.value,class:"link",href:I.item.link,rel:I.item.rel,target:I.item.target},{default:d(()=>[(a(),b(R(w.value),{class:"text",innerHTML:I.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),b(R(w.value),{key:1,class:"text",innerHTML:I.item.text},null,8,["innerHTML"])),I.item.collapsed!=null&&I.item.items&&I.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Xe(C,["enter"]),tabindex:"0"},tr,32)):f("",!0)],16,Za)):f("",!0),I.item.items&&I.item.items.length?(a(),c("div",or,[I.depth<5?(a(!0),c(A,{key:0},E(I.item.items,W=>(a(),b(G,{key:W.text,item:W,depth:I.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),nr=k(sr,[["__scopeId","data-v-506212c1"]]),De=o=>(B("data-v-288c56f5"),o=o(),H(),o),ar=De(()=>v("div",{class:"curtain"},null,-1)),rr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},ir=De(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),lr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),s=o,n=N(null),r=we(J?document.body:null);return q([s,n],()=>{var u;s.open?(r.value=!0,(u=n.value)==null||u.focus()):r.value=!1},{immediate:!0,flush:"post"}),(u,h)=>i(t)?(a(),c("aside",{key:0,class:M(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:n,onClick:h[0]||(h[0]=xe(()=>{},["stop"]))},[ar,v("nav",rr,[ir,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(A,null,E(i(e),p=>(a(),c("div",{key:p.text,class:"group"},[m(nr,{item:p,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),cr=k(lr,[["__scopeId","data-v-288c56f5"]]),ur=_({__name:"VPSkipLink",setup(o){const e=oe(),t=N();q(()=>e.path,()=>t.value.focus());function s({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const u=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",u)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",u),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),c(A,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),dr=k(ur,[["__scopeId","data-v-c948f111"]]),vr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=O(),n=oe();q(()=>n.path,s),bt(e,s);const{frontmatter:r}=L(),u=et(),h=$(()=>!!u["home-hero-image"]);return Ie("hero-image-slot-exists",h),(p,g)=>{const y=K("Content");return i(r).layout!==!1?(a(),c("div",{key:0,class:M(["Layout",i(r).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(dr),m(nt,{class:"backdrop",show:i(e),onClick:i(s)},null,8,["show","onClick"]),m(Xa,null,{"nav-bar-title-before":d(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":d(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Ms,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),m(cr,{open:i(e)},{"sidebar-nav-before":d(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":d(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(vs,null,{"page-top":d(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":d(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":d(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":d(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":d(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":d(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ms),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),b(y,{key:1}))}}}),pr=k(vr,[["__scopeId","data-v-e7bc242b"]]),fr={Layout:pr,enhanceApp:({app:o})=>{o.component("Badge",tt)}};export{fr as t,L as u}; diff --git a/assets/index.md.DYvXomfm.js b/assets/index.md.DYvXomfm.js new file mode 100644 index 0000000..aa31580 --- /dev/null +++ b/assets/index.md.DYvXomfm.js @@ -0,0 +1 @@ +import{_ as e,c as r,o as a,a4 as l}from"./chunks/framework.D5F7AbHZ.js";const d=JSON.parse('{"title":"学习清单","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),t={name:"index.md"},i=l('

学习清单

构建工具篇

基础篇

框架篇

算法篇

',9),n=[i];function o(h,p,u,s,b,c){return a(),r("div",null,n)}const _=e(t,[["render",o]]);export{d as __pageData,_ as default}; diff --git a/assets/index.md.DYvXomfm.lean.js b/assets/index.md.DYvXomfm.lean.js new file mode 100644 index 0000000..b4e34ea --- /dev/null +++ b/assets/index.md.DYvXomfm.lean.js @@ -0,0 +1 @@ +import{_ as e,c as r,o as a,a4 as l}from"./chunks/framework.D5F7AbHZ.js";const d=JSON.parse('{"title":"学习清单","description":"","frontmatter":{},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),t={name:"index.md"},i=l("",9),n=[i];function o(h,p,u,s,b,c){return a(),r("div",null,n)}const _=e(t,[["render",o]]);export{d as __pageData,_ as default}; diff --git a/assets/index.md.ecf03cad.js b/assets/index.md.ecf03cad.js deleted file mode 100644 index b36d359..0000000 --- a/assets/index.md.ecf03cad.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as r,o as a,R as l}from"./chunks/framework.3876c926.js";const d=JSON.parse('{"title":"学习清单","description":"","frontmatter":{},"headers":[],"relativePath":"index.md"}'),t={name:"index.md"},i=l('

学习清单

构建工具篇

基础篇

框架篇

算法篇

',9),o=[i];function n(h,p,u,s,b,c){return a(),r("div",null,o)}const _=e(t,[["render",n]]);export{d as __pageData,_ as default}; diff --git a/assets/index.md.ecf03cad.lean.js b/assets/index.md.ecf03cad.lean.js deleted file mode 100644 index 550491c..0000000 --- a/assets/index.md.ecf03cad.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as r,o as a,R as l}from"./chunks/framework.3876c926.js";const d=JSON.parse('{"title":"学习清单","description":"","frontmatter":{},"headers":[],"relativePath":"index.md"}'),t={name:"index.md"},i=l("",9),o=[i];function n(h,p,u,s,b,c){return a(),r("div",null,o)}const _=e(t,[["render",n]]);export{d as __pageData,_ as default}; diff --git a/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 b/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 similarity index 100% rename from assets/inter-italic-cyrillic-ext.33bd5a8e.woff2 rename to assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 diff --git a/assets/inter-italic-cyrillic.ea42a392.woff2 b/assets/inter-italic-cyrillic.D6csxwjC.woff2 similarity index 100% rename from assets/inter-italic-cyrillic.ea42a392.woff2 rename to assets/inter-italic-cyrillic.D6csxwjC.woff2 diff --git a/assets/inter-italic-greek-ext.4fbe9427.woff2 b/assets/inter-italic-greek-ext.CHOfFY1k.woff2 similarity index 100% rename from assets/inter-italic-greek-ext.4fbe9427.woff2 rename to assets/inter-italic-greek-ext.CHOfFY1k.woff2 diff --git a/assets/inter-italic-greek.8f4463c4.woff2 b/assets/inter-italic-greek.9J96vYpw.woff2 similarity index 100% rename from assets/inter-italic-greek.8f4463c4.woff2 rename to assets/inter-italic-greek.9J96vYpw.woff2 diff --git a/assets/inter-italic-latin-ext.bd8920cc.woff2 b/assets/inter-italic-latin-ext.BGcWXLrn.woff2 similarity index 100% rename from assets/inter-italic-latin-ext.bd8920cc.woff2 rename to assets/inter-italic-latin-ext.BGcWXLrn.woff2 diff --git a/assets/inter-italic-latin.bd3b6f56.woff2 b/assets/inter-italic-latin.DbsTr1gm.woff2 similarity index 100% rename from assets/inter-italic-latin.bd3b6f56.woff2 rename to assets/inter-italic-latin.DbsTr1gm.woff2 diff --git a/assets/inter-italic-vietnamese.6ce511fb.woff2 b/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 similarity index 100% rename from assets/inter-italic-vietnamese.6ce511fb.woff2 rename to assets/inter-italic-vietnamese.DHNAd7Wr.woff2 diff --git a/assets/inter-roman-cyrillic-ext.e75737ce.woff2 b/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 similarity index 100% rename from assets/inter-roman-cyrillic-ext.e75737ce.woff2 rename to assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 diff --git a/assets/inter-roman-cyrillic.5f2c6c8c.woff2 b/assets/inter-roman-cyrillic.CMhn1ESj.woff2 similarity index 100% rename from assets/inter-roman-cyrillic.5f2c6c8c.woff2 rename to assets/inter-roman-cyrillic.CMhn1ESj.woff2 diff --git a/assets/inter-roman-greek-ext.ab0619bc.woff2 b/assets/inter-roman-greek-ext.D0mI3NpI.woff2 similarity index 100% rename from assets/inter-roman-greek-ext.ab0619bc.woff2 rename to assets/inter-roman-greek-ext.D0mI3NpI.woff2 diff --git a/assets/inter-roman-greek.d5a6d92a.woff2 b/assets/inter-roman-greek.JvnBZ4YD.woff2 similarity index 100% rename from assets/inter-roman-greek.d5a6d92a.woff2 rename to assets/inter-roman-greek.JvnBZ4YD.woff2 diff --git a/assets/inter-roman-latin-ext.0030eebd.woff2 b/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 similarity index 100% rename from assets/inter-roman-latin-ext.0030eebd.woff2 rename to assets/inter-roman-latin-ext.ZlYT4o7i.woff2 diff --git a/assets/inter-roman-latin.2ed14f66.woff2 b/assets/inter-roman-latin.Bu8hRsVA.woff2 similarity index 100% rename from assets/inter-roman-latin.2ed14f66.woff2 rename to assets/inter-roman-latin.Bu8hRsVA.woff2 diff --git a/assets/inter-roman-vietnamese.14ce25a6.woff2 b/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 similarity index 100% rename from assets/inter-roman-vietnamese.14ce25a6.woff2 rename to assets/inter-roman-vietnamese.ClpjcLMQ.woff2 diff --git a/assets/style.35c1bf4d.css b/assets/style.35c1bf4d.css deleted file mode 100644 index 635c30c..0000000 --- a/assets/style.35c1bf4d.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-gray: #8e8e93;--vp-c-text-light-1: rgba(60, 60, 67);--vp-c-text-light-2: rgba(60, 60, 67, .75);--vp-c-text-light-3: rgba(60, 60, 67, .33);--vp-c-text-dark-1: rgba(255, 255, 245, .86);--vp-c-text-dark-2: rgba(235, 235, 245, .6);--vp-c-text-dark-3: rgba(235, 235, 245, .38);--vp-c-green: #10b981;--vp-c-green-light: #34d399;--vp-c-green-lighter: #6ee7b7;--vp-c-green-dark: #059669;--vp-c-green-darker: #047857;--vp-c-green-dimm-1: rgba(16, 185, 129, .05);--vp-c-green-dimm-2: rgba(16, 185, 129, .2);--vp-c-green-dimm-3: rgba(16, 185, 129, .5);--vp-c-yellow: #d97706;--vp-c-yellow-light: #f59e0b;--vp-c-yellow-lighter: #fbbf24;--vp-c-yellow-dark: #b45309;--vp-c-yellow-darker: #92400e;--vp-c-yellow-dimm-1: rgba(234, 179, 8, .05);--vp-c-yellow-dimm-2: rgba(234, 179, 8, .2);--vp-c-yellow-dimm-3: rgba(234, 179, 8, .5);--vp-c-red: #f43f5e;--vp-c-red-light: #fb7185;--vp-c-red-lighter: #fda4af;--vp-c-red-dark: #e11d48;--vp-c-red-darker: #be123c;--vp-c-red-dimm-1: rgba(244, 63, 94, .05);--vp-c-red-dimm-2: rgba(244, 63, 94, .2);--vp-c-red-dimm-3: rgba(244, 63, 94, .5);--vp-c-sponsor: #db2777}:root{--vp-c-bg: #ffffff;--vp-c-bg-elv: #ffffff;--vp-c-bg-elv-up: #ffffff;--vp-c-bg-elv-down: #f6f6f7;--vp-c-bg-elv-mute: #f6f6f7;--vp-c-bg-soft: #f6f6f7;--vp-c-bg-soft-up: #f9f9fa;--vp-c-bg-soft-down: #e3e3e5;--vp-c-bg-soft-mute: #e3e3e5;--vp-c-bg-alt: #f6f6f7;--vp-c-border: rgba(60, 60, 67, .29);--vp-c-divider: rgba(60, 60, 67, .12);--vp-c-gutter: rgba(60, 60, 67, .12);--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white);--vp-c-text-1: var(--vp-c-text-light-1);--vp-c-text-2: var(--vp-c-text-light-2);--vp-c-text-3: var(--vp-c-text-light-3);--vp-c-text-inverse-1: var(--vp-c-text-dark-1);--vp-c-text-inverse-2: var(--vp-c-text-dark-2);--vp-c-text-inverse-3: var(--vp-c-text-dark-3);--vp-c-text-code: #476582;--vp-c-brand: var(--vp-c-green);--vp-c-brand-light: var(--vp-c-green-light);--vp-c-brand-lighter: var(--vp-c-green-lighter);--vp-c-brand-dark: var(--vp-c-green-dark);--vp-c-brand-darker: var(--vp-c-green-darker);--vp-c-mute: #f6f6f7;--vp-c-mute-light: #f9f9fc;--vp-c-mute-lighter: #ffffff;--vp-c-mute-dark: #e3e3e5;--vp-c-mute-darker: #d7d7d9}.dark{--vp-c-bg: #1e1e20;--vp-c-bg-elv: #252529;--vp-c-bg-elv-up: #313136;--vp-c-bg-elv-down: #1e1e20;--vp-c-bg-elv-mute: #313136;--vp-c-bg-soft: #252529;--vp-c-bg-soft-up: #313136;--vp-c-bg-soft-down: #1e1e20;--vp-c-bg-soft-mute: #313136;--vp-c-bg-alt: #161618;--vp-c-border: rgba(82, 82, 89, .68);--vp-c-divider: rgba(82, 82, 89, .32);--vp-c-gutter: #000000;--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black);--vp-c-text-1: var(--vp-c-text-dark-1);--vp-c-text-2: var(--vp-c-text-dark-2);--vp-c-text-3: var(--vp-c-text-dark-3);--vp-c-text-inverse-1: var(--vp-c-text-light-1);--vp-c-text-inverse-2: var(--vp-c-text-light-2);--vp-c-text-inverse-3: var(--vp-c-text-light-3);--vp-c-text-code: #c9def1;--vp-c-mute: #313136;--vp-c-mute-light: #3a3a3c;--vp-c-mute-lighter: #505053;--vp-c-mute-dark: #2c2c30;--vp-c-mute-darker: #252529}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-local-nav: 10;--vp-z-index-nav: 20;--vp-z-index-layout-top: 30;--vp-z-index-backdrop: 40;--vp-z-index-sidebar: 50;--vp-z-index-footer: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-block-color: var(--vp-c-text-dark-1);--vp-code-block-bg: #292b30;--vp-code-block-bg-light: #1e1e20;--vp-code-block-divider-color: #000000;--vp-code-line-highlight-color: rgba(0, 0, 0, .5);--vp-code-line-number-color: var(--vp-c-text-dark-3);--vp-code-line-diff-add-color: var(--vp-c-green-dimm-2);--vp-code-line-diff-add-symbol-color: var(--vp-c-green);--vp-code-line-diff-remove-color: var(--vp-c-red-dimm-2);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red);--vp-code-line-warning-color: var(--vp-c-yellow-dimm-2);--vp-code-line-error-color: var(--vp-c-red-dimm-2);--vp-code-copy-code-border-color: transparent;--vp-code-copy-code-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-code-block-bg-light);--vp-code-copy-code-active-text: var(--vp-c-text-dark-2);--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-dark-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-text-color: var(--vp-c-text-dark-1);--vp-code-tab-active-bar-color: var(--vp-c-brand)}.dark{--vp-code-block-bg: #161618}:root{--vp-button-brand-border: var(--vp-c-brand-lighter);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-lighter);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-dark);--vp-button-brand-active-border: var(--vp-c-brand-lighter);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-darker);--vp-button-alt-border: var(--vp-c-border);--vp-button-alt-text: var(--vp-c-neutral);--vp-button-alt-bg: var(--vp-c-mute);--vp-button-alt-hover-border: var(--vp-c-border);--vp-button-alt-hover-text: var(--vp-c-neutral);--vp-button-alt-hover-bg: var(--vp-c-mute-dark);--vp-button-alt-active-border: var(--vp-c-border);--vp-button-alt-active-text: var(--vp-c-neutral);--vp-button-alt-active-bg: var(--vp-c-mute-darker);--vp-button-sponsor-border: var(--vp-c-gray-light-3);--vp-button-sponsor-text: var(--vp-c-text-light-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}.dark{--vp-button-sponsor-border: var(--vp-c-gray-dark-1);--vp-button-sponsor-text: var(--vp-c-text-dark-2)}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: var(--vp-c-border);--vp-custom-block-info-text: var(--vp-c-text-2);--vp-custom-block-info-bg: var(--vp-c-bg-soft-up);--vp-custom-block-info-code-bg: var(--vp-c-bg-soft);--vp-custom-block-tip-border: var(--vp-c-green);--vp-custom-block-tip-text: var(--vp-c-green-dark);--vp-custom-block-tip-bg: var(--vp-c-bg-soft-up);--vp-custom-block-tip-code-bg: var(--vp-c-bg-soft);--vp-custom-block-warning-border: var(--vp-c-yellow);--vp-custom-block-warning-text: var(--vp-c-yellow);--vp-custom-block-warning-bg: var(--vp-c-bg-soft-up);--vp-custom-block-warning-code-bg: var(--vp-c-bg-soft);--vp-custom-block-danger-border: var(--vp-c-red);--vp-custom-block-danger-text: var(--vp-c-red);--vp-custom-block-danger-bg: var(--vp-c-bg-soft-up);--vp-custom-block-danger-code-bg: var(--vp-c-bg-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-details-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-hover-border-color: var(--vp-c-gray);--vp-input-switch-bg-color: var(--vp-c-mute)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg)}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: var(--vp-c-border);--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-bg-soft-up);--vp-badge-tip-border: var(--vp-c-green-dark);--vp-badge-tip-text: var(--vp-c-green);--vp-badge-tip-bg: var(--vp-c-green-dimm-1);--vp-badge-warning-border: var(--vp-c-yellow-dark);--vp-badge-warning-text: var(--vp-c-yellow);--vp-badge-warning-bg: var(--vp-c-yellow-dimm-1);--vp-badge-danger-border: var(--vp-c-red-dark);--vp-badge-danger-text: var(--vp-c-red);--vp-badge-danger-bg: var(--vp-c-red-dimm-1)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand);--vp-local-search-highlight-bg: var(--vp-c-green-lighter);--vp-local-search-highlight-text: var(--vp-c-black)}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600}.custom-block a:hover{text-decoration:underline}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden}.vp-code-group .tabs:after{position:absolute;right:0;bottom:0;left:0;height:1px;background-color:var(--vp-code-tab-divider);content:""}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:absolute;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:10;height:1px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-]{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active{display:block}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{float:left;margin-left:-.87em;padding-right:.23em;font-weight:500;user-select:none;opacity:0;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand);text-decoration-style:dotted;transition:color .25s}.vp-doc a:hover{text-decoration:underline}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block a{color:inherit;font-weight:600}.vp-doc .custom-block a:hover{text-decoration:underline}.vp-doc .custom-block code{font-size:var(--vp-custom-block-code-font-size);font-weight:700;color:inherit}.vp-doc .custom-block div[class*=language-]{margin:8px 0}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;color:var(--vp-c-text-code);background-color:var(--vp-c-mute);transition:color .5s,background-color .5s}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc a>code{color:var(--vp-c-brand);transition:color .25s}.vp-doc a:hover>code{color:var(--vp-c-brand-dark)}.vp-doc div[class*=language-]{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-]{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;left:-65px;display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;width:64px;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:"Copied"}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-c-text-dark-3);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-bg-soft-down)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-6120e03b]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:10px;padding:0 8px;line-height:18px;font-size:12px;font-weight:600;transform:translateY(-2px)}h1 .VPBadge[data-v-6120e03b],h2 .VPBadge[data-v-6120e03b],h3 .VPBadge[data-v-6120e03b],h4 .VPBadge[data-v-6120e03b],h5 .VPBadge[data-v-6120e03b],h6 .VPBadge[data-v-6120e03b]{vertical-align:top}h2 .VPBadge[data-v-6120e03b]{border-radius:11px;line-height:20px}.VPBadge.info[data-v-6120e03b]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-6120e03b]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-6120e03b]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-6120e03b]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPSkipLink[data-v-f5a352f2]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-f5a352f2]:focus{height:auto;width:auto;clip:auto;clip-path:none}.dark .VPSkipLink[data-v-f5a352f2]{color:var(--vp-c-green)}@media (min-width: 1280px){.VPSkipLink[data-v-f5a352f2]{top:14px;left:16px}}.VPBackdrop[data-v-8e9bf528]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-8e9bf528],.VPBackdrop.fade-leave-to[data-v-8e9bf528]{opacity:0}.VPBackdrop.fade-leave-active[data-v-8e9bf528]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-8e9bf528]{display:none}}html:not(.dark) .VPImage.dark[data-v-6dd5884f]{display:none}.dark .VPImage.light[data-v-6dd5884f]{display:none}.title[data-v-d298091b]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}.title[data-v-d298091b]:hover{opacity:.6}@media (min-width: 960px){.title[data-v-d298091b]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-d298091b]{border-bottom-color:var(--vp-c-divider)}}[data-v-d298091b] .logo{margin-right:8px;height:24px}/*! @docsearch/css 3.3.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.DocSearch{--docsearch-primary-color: var(--vp-c-brand);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark .DocSearch{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-bg-soft-mute);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:32px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:1px;letter-spacing:-12px;color:transparent}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:var(--vp-meta-key);font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-bg-soft-mute)}.DocSearch-Screen-Icon>svg{margin:auto}.icon[data-v-d502cd7b]{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;fill:var(--vp-c-text-3);transition:fill .25s;flex-shrink:0}.VPNavBarMenuLink[data-v-bdc88584]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-bdc88584],.VPNavBarMenuLink[data-v-bdc88584]:hover{color:var(--vp-c-brand)}.VPMenuGroup+.VPMenuLink[data-v-2a9f32f4]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-2a9f32f4]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-2a9f32f4]:hover{color:var(--vp-c-brand);background-color:var(--vp-c-bg-elv-mute)}.link.active[data-v-2a9f32f4]{color:var(--vp-c-brand)}.VPMenuGroup[data-v-b7d5e02b]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-b7d5e02b]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-b7d5e02b]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-b7d5e02b]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-280e28cb]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-280e28cb] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-280e28cb] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-280e28cb] .group:last-child{padding-bottom:0}.VPMenu[data-v-280e28cb] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-280e28cb] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-280e28cb] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-280e28cb] .action{padding-left:24px}.VPFlyout[data-v-529736ff]{position:relative}.VPFlyout[data-v-529736ff]:hover{color:var(--vp-c-brand);transition:color .25s}.VPFlyout:hover .text[data-v-529736ff]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-529736ff]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-529736ff]{color:var(--vp-c-brand)}.VPFlyout.active:hover .text[data-v-529736ff]{color:var(--vp-c-brand-dark)}.VPFlyout:hover .menu[data-v-529736ff],.button[aria-expanded=true]+.menu[data-v-529736ff]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-529736ff]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-529736ff]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-529736ff]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-529736ff]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-529736ff]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-529736ff]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPNavBarMenu[data-v-f54c34e6]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-f54c34e6]{display:flex}}.VPNavBarTranslations[data-v-a3d11da5]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-a3d11da5]{display:flex;align-items:center}}.title[data-v-a3d11da5]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPSwitch[data-v-5c77962f]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s}.VPSwitch[data-v-5c77962f]:hover{border-color:var(--vp-input-hover-border-color)}.check[data-v-5c77962f]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s}.icon[data-v-5c77962f]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-5c77962f] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-5c77962f] svg{fill:var(--vp-c-text-1);transition:opacity .25s}.sun[data-v-6efeb7e0]{opacity:1}.moon[data-v-6efeb7e0],.dark .sun[data-v-6efeb7e0]{opacity:0}.dark .moon[data-v-6efeb7e0]{opacity:1}.dark .VPSwitchAppearance[data-v-6efeb7e0] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-0088fcc3]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-0088fcc3]{display:flex;align-items:center}}.VPSocialLink[data-v-d6790091]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-d6790091]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-d6790091]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-c74e4df9]{display:flex;flex-wrap:wrap;justify-content:center}.VPNavBarSocialLinks[data-v-f8334a3a]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-f8334a3a]{display:flex;align-items:center}}.VPNavBarExtra[data-v-206ebc7c]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-206ebc7c]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-206ebc7c]{display:none}}.trans-title[data-v-206ebc7c]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-206ebc7c],.item.social-links[data-v-206ebc7c]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-206ebc7c]{min-width:176px}.appearance-action[data-v-206ebc7c]{margin-right:-2px}.social-links-list[data-v-206ebc7c]{margin:-4px -8px}.VPNavBarHamburger[data-v-47edab87]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-47edab87]{display:none}}.container[data-v-47edab87]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-47edab87]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-47edab87]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-47edab87]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-47edab87]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-47edab87]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-47edab87]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-47edab87],.VPNavBarHamburger.active:hover .middle[data-v-47edab87],.VPNavBarHamburger.active:hover .bottom[data-v-47edab87]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-47edab87],.middle[data-v-47edab87],.bottom[data-v-47edab87]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-47edab87]{top:0;left:0;transform:translate(0)}.middle[data-v-47edab87]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-47edab87]{top:12px;left:0;transform:translate(4px)}.VPNavBar[data-v-2264840b]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);transition:border-color .5s,background-color .5s;pointer-events:none;white-space:nowrap}.VPNavBar.has-sidebar[data-v-2264840b]{border-bottom-color:var(--vp-c-gutter)}@media (min-width: 768px){.VPNavBar[data-v-2264840b]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-2264840b]{border-bottom-color:transparent;padding:0}.VPNavBar.fill[data-v-2264840b]:not(.has-sidebar){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-2264840b]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-2264840b],.container>.content[data-v-2264840b]{pointer-events:none}.container[data-v-2264840b] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-2264840b]{max-width:100%}}.title[data-v-2264840b]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-2264840b]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-2264840b]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-2264840b]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-2264840b]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-2264840b]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-2264840b]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .content-body[data-v-2264840b],.VPNavBar.fill .content-body[data-v-2264840b]{position:relative;background-color:var(--vp-nav-bg-color)}}.menu+.translations[data-v-2264840b]:before,.menu+.appearance[data-v-2264840b]:before,.menu+.social-links[data-v-2264840b]:before,.translations+.appearance[data-v-2264840b]:before,.appearance+.social-links[data-v-2264840b]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-2264840b]:before,.translations+.appearance[data-v-2264840b]:before{margin-right:16px}.appearance+.social-links[data-v-2264840b]:before{margin-left:16px}.social-links[data-v-2264840b]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-2264840b]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-2264840b]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-2264840b]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenMenuLink[data-v-107cfdeb]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-107cfdeb]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupLink[data-v-bd729644]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-bd729644]:hover{color:var(--vp-c-brand)}.VPNavScreenMenuGroupSection[data-v-8c8e6db1]{display:block}.title[data-v-8c8e6db1]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-4bd35761]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-4bd35761]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-4bd35761]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-4bd35761]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-4bd35761]{padding-bottom:6px;color:var(--vp-c-brand)}.VPNavScreenMenuGroup.open .button-icon[data-v-4bd35761]{transform:rotate(45deg)}.button[data-v-4bd35761]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-4bd35761]:hover{color:var(--vp-c-brand)}.button-icon[data-v-4bd35761]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-4bd35761]:first-child{padding-top:0}.group+.group[data-v-4bd35761],.group+.item[data-v-4bd35761]{padding-top:4px}.VPNavScreenAppearance[data-v-0cc362cf]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-0cc362cf]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenTranslations[data-v-3f0a9a3f]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-3f0a9a3f]{height:auto}.title[data-v-3f0a9a3f]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-3f0a9a3f]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-3f0a9a3f]{margin-right:8px}.icon.chevron[data-v-3f0a9a3f]{margin-left:4px}.list[data-v-3f0a9a3f]{padding:4px 0 0 24px}.link[data-v-3f0a9a3f]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-8a8239f5]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-8a8239f5],.VPNavScreen.fade-leave-active[data-v-8a8239f5]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-8a8239f5],.VPNavScreen.fade-leave-active .container[data-v-8a8239f5]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-8a8239f5],.VPNavScreen.fade-leave-to[data-v-8a8239f5]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-8a8239f5],.VPNavScreen.fade-leave-to .container[data-v-8a8239f5]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-8a8239f5]{display:none}}.container[data-v-8a8239f5]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-8a8239f5],.menu+.appearance[data-v-8a8239f5],.translations+.appearance[data-v-8a8239f5]{margin-top:24px}.menu+.social-links[data-v-8a8239f5]{margin-top:16px}.appearance+.social-links[data-v-8a8239f5]{margin-top:16px}.VPNav[data-v-283c37a7]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-283c37a7]{position:fixed}}.root[data-v-df1a6cf2]{position:relative;z-index:1}.nested[data-v-df1a6cf2]{padding-left:13px}.outline-link[data-v-df1a6cf2]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:500}.outline-link[data-v-df1a6cf2]:hover,.outline-link.active[data-v-df1a6cf2]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-df1a6cf2]{padding-left:13px}.VPLocalNavOutlineDropdown[data-v-c20a59a7]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-c20a59a7]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-c20a59a7]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-c20a59a7]{color:var(--vp-c-text-1)}.icon[data-v-c20a59a7]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-c20a59a7] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-c20a59a7]{transform:rotate(90deg)}.items[data-v-c20a59a7]{position:absolute;left:20px;right:20px;top:64px;background-color:var(--vp-local-nav-bg-color);padding:4px 10px 16px;border:1px solid var(--vp-c-divider);border-radius:8px;max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.top-link[data-v-c20a59a7]{display:block;color:var(--vp-c-brand);font-size:13px;font-weight:500;padding:6px 0;margin:0 13px 10px;border-bottom:1px solid var(--vp-c-divider)}.flyout-enter-active[data-v-c20a59a7]{transition:all .2s ease-out}.flyout-leave-active[data-v-c20a59a7]{transition:all .15s ease-in}.flyout-enter-from[data-v-c20a59a7],.flyout-leave-to[data-v-c20a59a7]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-b59ad933]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color);transition:border-color .5s,background-color .5s}@media (min-width: 960px){.VPLocalNav[data-v-b59ad933]{display:none}}.menu[data-v-b59ad933]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-b59ad933]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-b59ad933]{padding:0 32px}}.menu-icon[data-v-b59ad933]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-b59ad933]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-b59ad933]{padding:12px 32px 11px}}.VPSidebarItem.level-0[data-v-b1f1ab92]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b1f1ab92]{padding-bottom:10px}.item[data-v-b1f1ab92]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b1f1ab92]{cursor:pointer}.indicator[data-v-b1f1ab92]{position:absolute;top:6px;bottom:6px;left:-17px;width:1px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b1f1ab92],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b1f1ab92],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b1f1ab92],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b1f1ab92]{background-color:var(--vp-c-brand)}.link[data-v-b1f1ab92]{display:flex;align-items:center;flex-grow:1}.text[data-v-b1f1ab92]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b1f1ab92]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b1f1ab92],.VPSidebarItem.level-2 .text[data-v-b1f1ab92],.VPSidebarItem.level-3 .text[data-v-b1f1ab92],.VPSidebarItem.level-4 .text[data-v-b1f1ab92],.VPSidebarItem.level-5 .text[data-v-b1f1ab92]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b1f1ab92],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b1f1ab92],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b1f1ab92],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b1f1ab92],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b1f1ab92],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b1f1ab92]{color:var(--vp-c-brand)}.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b1f1ab92],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b1f1ab92],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b1f1ab92],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b1f1ab92],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b1f1ab92],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b1f1ab92]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b1f1ab92],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b1f1ab92],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b1f1ab92],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b1f1ab92],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b1f1ab92],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b1f1ab92]{color:var(--vp-c-brand)}.caret[data-v-b1f1ab92]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s}.item:hover .caret[data-v-b1f1ab92]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b1f1ab92]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b1f1ab92]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b1f1ab92]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b1f1ab92],.VPSidebarItem.level-2 .items[data-v-b1f1ab92],.VPSidebarItem.level-3 .items[data-v-b1f1ab92],.VPSidebarItem.level-4 .items[data-v-b1f1ab92],.VPSidebarItem.level-5 .items[data-v-b1f1ab92]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b1f1ab92]{display:none}.VPSidebar[data-v-c7a7361d]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-c7a7361d]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-c7a7361d]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-c7a7361d]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-c7a7361d]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-c7a7361d]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-c7a7361d]{outline:0}.group+.group[data-v-c7a7361d]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-c7a7361d]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPButton[data-v-a23e414a]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-a23e414a]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-a23e414a]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-a23e414a]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-a23e414a]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-a23e414a]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-a23e414a]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-a23e414a]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-a23e414a]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-a23e414a]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-a23e414a]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-a23e414a]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-a23e414a]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}.VPHero[data-v-15361c6c]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-15361c6c]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-15361c6c]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-15361c6c]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-15361c6c]{flex-direction:row}}.main[data-v-15361c6c]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-15361c6c]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-15361c6c]{text-align:left}}@media (min-width: 960px){.main[data-v-15361c6c]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-15361c6c]{max-width:592px}}.name[data-v-15361c6c],.text[data-v-15361c6c]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-15361c6c],.VPHero.has-image .text[data-v-15361c6c]{margin:0 auto}.name[data-v-15361c6c]{color:var(--vp-home-hero-name-color)}.clip[data-v-15361c6c]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-15361c6c],.text[data-v-15361c6c]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-15361c6c],.text[data-v-15361c6c]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-15361c6c],.VPHero.has-image .text[data-v-15361c6c]{margin:0}}.tagline[data-v-15361c6c]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-15361c6c]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-15361c6c]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-15361c6c]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-15361c6c]{margin:0}}.actions[data-v-15361c6c]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-15361c6c]{justify-content:center}@media (min-width: 640px){.actions[data-v-15361c6c]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-15361c6c]{justify-content:flex-start}}.action[data-v-15361c6c]{flex-shrink:0;padding:6px}.image[data-v-15361c6c]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-15361c6c]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-15361c6c]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-15361c6c]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-15361c6c]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-15361c6c]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-15361c6c]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-15361c6c]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-15361c6c]{width:320px;height:320px}}[data-v-15361c6c] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-15361c6c] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-15361c6c] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-3fcc5e64]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-3fcc5e64]:hover{border-color:var(--vp-c-brand);background-color:var(--vp-c-bg-soft-up)}.box[data-v-3fcc5e64]{display:flex;flex-direction:column;padding:24px;height:100%}.VPFeature[data-v-3fcc5e64] .VPImage{width:48px;height:48px;margin-bottom:20px}.icon[data-v-3fcc5e64]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-bg-soft-down);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-3fcc5e64]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-3fcc5e64]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-3fcc5e64]{padding-top:8px}.link-text-value[data-v-3fcc5e64]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand)}.link-text-icon[data-v-3fcc5e64]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-8c809639]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-8c809639]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-8c809639]{padding:0 64px}}.container[data-v-8c809639]{margin:0 auto;max-width:1152px}.items[data-v-8c809639]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-8c809639]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-8c809639],.item.grid-4[data-v-8c809639],.item.grid-6[data-v-8c809639]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-8c809639],.item.grid-4[data-v-8c809639]{width:50%}.item.grid-3[data-v-8c809639],.item.grid-6[data-v-8c809639]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-8c809639]{width:25%}}.VPHome[data-v-d1511ec4]{padding-bottom:96px}.VPHome[data-v-d1511ec4] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d1511ec4]{padding-bottom:128px}}.VPDocAsideOutline[data-v-12ef9dee]{display:none}.VPDocAsideOutline.has-outline[data-v-12ef9dee]{display:block}.content[data-v-12ef9dee]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-12ef9dee]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:1px;height:18px;background-color:var(--vp-c-brand);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-12ef9dee]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-6db944aa]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6db944aa]{flex-grow:1}.VPDocAside[data-v-6db944aa] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6db944aa] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6db944aa] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-d04e231d]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-d04e231d]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-6b942b4b]{margin-top:64px}.edit-info[data-v-6b942b4b]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-6b942b4b]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-6b942b4b]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.edit-link-button[data-v-6b942b4b]:hover{color:var(--vp-c-brand-dark)}.edit-link-icon[data-v-6b942b4b]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-6b942b4b]{border-top:1px solid var(--vp-c-divider);padding-top:24px}@media (min-width: 640px){.prev-next[data-v-6b942b4b]{display:flex}}.pager.has-prev[data-v-6b942b4b]{padding-top:8px}@media (min-width: 640px){.pager[data-v-6b942b4b]{display:flex;flex-direction:column;flex-shrink:0;width:50%}.pager.has-prev[data-v-6b942b4b]{padding-top:0;padding-left:16px}}.pager-link[data-v-6b942b4b]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-6b942b4b]:hover{border-color:var(--vp-c-brand)}.pager-link.next[data-v-6b942b4b]{margin-left:auto;text-align:right}.desc[data-v-6b942b4b]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-6b942b4b]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:color .25s}.VPDocOutlineDropdown[data-v-a144482a]{margin-bottom:42px}.VPDocOutlineDropdown button[data-v-a144482a]{display:block;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;border:1px solid var(--vp-c-border);padding:4px 12px;border-radius:8px}.VPDocOutlineDropdown button[data-v-a144482a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-a144482a]{color:var(--vp-c-text-1)}.icon[data-v-a144482a]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-a144482a] .outline-link{font-size:13px}.open>.icon[data-v-a144482a]{transform:rotate(90deg)}.items[data-v-a144482a]{margin-top:10px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-e031c361]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-e031c361]{display:none}@media (min-width: 960px) and (max-width: 1280px){.VPDoc .VPDocOutlineDropdown[data-v-e031c361]{display:block}}@media (min-width: 768px){.VPDoc[data-v-e031c361]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-e031c361]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-e031c361]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-e031c361]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-e031c361]{display:flex;justify-content:center}.VPDoc .aside[data-v-e031c361]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-e031c361]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-e031c361]{max-width:1104px}}.container[data-v-e031c361]{margin:0 auto;width:100%}.aside[data-v-e031c361]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-e031c361]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-e031c361]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-e031c361]::-webkit-scrollbar{display:none}.aside-curtain[data-v-e031c361]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-e031c361]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-e031c361]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-e031c361]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-e031c361]{order:1;margin:0;min-width:640px}}.content-container[data-v-e031c361]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-e031c361]{max-width:688px}.NotFound[data-v-27e6da3d]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-27e6da3d]{padding:96px 32px 168px}}.code[data-v-27e6da3d]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-27e6da3d]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-27e6da3d]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-27e6da3d]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-27e6da3d]{padding-top:20px}.link[data-v-27e6da3d]{display:inline-block;border:1px solid var(--vp-c-brand);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand);transition:border-color .25s,color .25s}.link[data-v-27e6da3d]:hover{border-color:var(--vp-c-brand-dark);color:var(--vp-c-brand-dark)}.VPContent[data-v-e1441724]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-e1441724]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-e1441724]{margin:0}@media (min-width: 960px){.VPContent[data-v-e1441724]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-e1441724]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-e1441724]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-3d1b5f7c]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-3d1b5f7c]{display:none}@media (min-width: 768px){.VPFooter[data-v-3d1b5f7c]{padding:32px}}.container[data-v-3d1b5f7c]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-3d1b5f7c],.copyright[data-v-3d1b5f7c]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.message[data-v-3d1b5f7c]{order:2}.copyright[data-v-3d1b5f7c]{order:1}.Layout[data-v-2bf54a99]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-09def122]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-09def122]{margin:0 auto;max-width:1152px}.love[data-v-09def122]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-09def122]{width:28px;height:28px;fill:currentColor}.message[data-v-09def122]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-09def122]{padding-top:32px}.action[data-v-09def122]{padding-top:40px;text-align:center}.VPTeamPage[data-v-51f4b015]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-51f4b015]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-51f4b015-s],.VPTeamMembers+.VPTeamPageSection[data-v-51f4b015-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-51f4b015-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-51f4b015-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-51f4b015-s],.VPTeamMembers+.VPTeamPageSection[data-v-51f4b015-s]{margin-top:96px}}.VPTeamMembers[data-v-51f4b015-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-51f4b015-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-51f4b015-s]{padding:0 64px}}.VPTeamPageTitle[data-v-96ee56ab]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-96ee56ab]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-96ee56ab]{padding:80px 64px 48px}}.title[data-v-96ee56ab]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-96ee56ab]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-96ee56ab]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-96ee56ab]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-28621502]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-28621502]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-28621502]{padding:0 64px}}.title[data-v-28621502]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-28621502]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-28621502]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-28621502]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-28621502]{padding-top:40px}.VPTeamMembersItem[data-v-d598140a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-d598140a]{padding:32px}.VPTeamMembersItem.small .data[data-v-d598140a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-d598140a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-d598140a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-d598140a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-d598140a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-d598140a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-d598140a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-d598140a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-d598140a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-d598140a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-d598140a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-d598140a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-d598140a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-d598140a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-d598140a]{text-align:center}.avatar[data-v-d598140a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-d598140a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-d598140a]{margin:0;font-weight:600}.affiliation[data-v-d598140a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-d598140a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-d598140a]:hover{color:var(--vp-c-brand)}.desc[data-v-d598140a]{margin:0 auto}.desc[data-v-d598140a] a{font-weight:500;color:var(--vp-c-brand);text-decoration-style:dotted;transition:color .25s}.links[data-v-d598140a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-d598140a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-d598140a]:hover,.sp .sp-link.link[data-v-d598140a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-d598140a]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-aa48aec8]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-aa48aec8]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-aa48aec8]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-aa48aec8]{max-width:876px}.VPTeamMembers.medium .container[data-v-aa48aec8]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-aa48aec8]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-aa48aec8]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-aa48aec8]{max-width:760px}.container[data-v-aa48aec8]{display:grid;gap:24px;margin:0 auto;max-width:1152px}._row_7kqxf_2>:first-child{width:100px;height:100px;border:2px solid rebeccapurple}._row_7kqxf_2>:nth-child(2){border:2px solid orange;height:100px}._float_7kqxf_12{float:left} diff --git a/assets/style.CYsvUZlg.css b/assets/style.CYsvUZlg.css new file mode 100644 index 0000000..fc2caf5 --- /dev/null +++ b/assets/style.CYsvUZlg.css @@ -0,0 +1 @@ +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-cyrillic.CMhn1ESj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-greek.JvnBZ4YD.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-greek-ext.D0mI3NpI.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-latin.Bu8hRsVA.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-latin-ext.ZlYT4o7i.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/daydayup/assets/inter-roman-vietnamese.ClpjcLMQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-cyrillic.D6csxwjC.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-greek.9J96vYpw.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-greek-ext.CHOfFY1k.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-latin.DbsTr1gm.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-latin-ext.BGcWXLrn.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/daydayup/assets/inter-italic-vietnamese.DHNAd7Wr.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-1f8663d0]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-1f8663d0],.VPBackdrop.fade-leave-to[data-v-1f8663d0]{opacity:0}.VPBackdrop.fade-leave-active[data-v-1f8663d0]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-1f8663d0]{display:none}}.NotFound[data-v-54fcb384]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-54fcb384]{padding:96px 32px 168px}}.code[data-v-54fcb384]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-54fcb384]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-54fcb384]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-54fcb384]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-54fcb384]{padding-top:20px}.link[data-v-54fcb384]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-54fcb384]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-95af26cc]{position:relative;z-index:1}.nested[data-v-95af26cc]{padding-right:16px;padding-left:16px}.outline-link[data-v-95af26cc]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-95af26cc]:hover,.outline-link.active[data-v-95af26cc]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-95af26cc]{padding-left:13px}.VPDocAsideOutline[data-v-facbbd7b]{display:none}.VPDocAsideOutline.has-outline[data-v-facbbd7b]{display:block}.content[data-v-facbbd7b]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-facbbd7b]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-facbbd7b]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-bfbdc8d7]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-bfbdc8d7]{flex-grow:1}.VPDocAside[data-v-bfbdc8d7] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-bfbdc8d7] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-bfbdc8d7] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-cf585a23]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-cf585a23]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-438133a6]{margin-top:64px}.edit-info[data-v-438133a6]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-438133a6]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-438133a6]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-438133a6]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-438133a6]{margin-right:8px}.prev-next[data-v-438133a6]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-438133a6]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-438133a6]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-438133a6]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-438133a6]{margin-left:auto;text-align:right}.desc[data-v-438133a6]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-438133a6]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-926db95e]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-926db95e]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-926db95e]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-926db95e]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-926db95e]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-926db95e]{display:flex;justify-content:center}.VPDoc .aside[data-v-926db95e]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-926db95e]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-926db95e]{max-width:1104px}}.container[data-v-926db95e]{margin:0 auto;width:100%}.aside[data-v-926db95e]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-926db95e]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-926db95e]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-926db95e]::-webkit-scrollbar{display:none}.aside-curtain[data-v-926db95e]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-926db95e]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-926db95e]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-926db95e]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-926db95e]{order:1;margin:0;min-width:640px}}.content-container[data-v-926db95e]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-926db95e]{max-width:688px}.VPButton[data-v-3a0ec07a]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-3a0ec07a]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-3a0ec07a]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-3a0ec07a]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-3a0ec07a]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-3a0ec07a]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-3a0ec07a]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-3a0ec07a]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-3a0ec07a]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-3a0ec07a]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-3a0ec07a]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-3a0ec07a]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-3a0ec07a]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8d5926dc]{display:none}.dark .VPImage.light[data-v-8d5926dc]{display:none}.VPHero[data-v-4ec2e118]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-4ec2e118]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-4ec2e118]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-4ec2e118]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-4ec2e118]{flex-direction:row}}.main[data-v-4ec2e118]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-4ec2e118]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-4ec2e118]{text-align:left}}@media (min-width: 960px){.main[data-v-4ec2e118]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-4ec2e118]{max-width:592px}}.name[data-v-4ec2e118],.text[data-v-4ec2e118]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-4ec2e118],.VPHero.has-image .text[data-v-4ec2e118]{margin:0 auto}.name[data-v-4ec2e118]{color:var(--vp-home-hero-name-color)}.clip[data-v-4ec2e118]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-4ec2e118],.text[data-v-4ec2e118]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-4ec2e118],.text[data-v-4ec2e118]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-4ec2e118],.VPHero.has-image .text[data-v-4ec2e118]{margin:0}}.tagline[data-v-4ec2e118]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-4ec2e118]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-4ec2e118]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-4ec2e118]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-4ec2e118]{margin:0}}.actions[data-v-4ec2e118]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-4ec2e118]{justify-content:center}@media (min-width: 640px){.actions[data-v-4ec2e118]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-4ec2e118]{justify-content:flex-start}}.action[data-v-4ec2e118]{flex-shrink:0;padding:6px}.image[data-v-4ec2e118]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-4ec2e118]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-4ec2e118]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-4ec2e118]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-4ec2e118]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-4ec2e118]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-4ec2e118]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-4ec2e118]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-4ec2e118]{width:320px;height:320px}}[data-v-4ec2e118] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-4ec2e118] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-4ec2e118] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-e5e7bd8b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-e5e7bd8b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-e5e7bd8b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-e5e7bd8b]>.VPImage{margin-bottom:20px}.icon[data-v-e5e7bd8b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-e5e7bd8b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-e5e7bd8b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-e5e7bd8b]{padding-top:8px}.link-text-value[data-v-e5e7bd8b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-e5e7bd8b]{margin-left:6px}.VPFeatures[data-v-a5b4818c]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a5b4818c]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a5b4818c]{padding:0 64px}}.container[data-v-a5b4818c]{margin:0 auto;max-width:1152px}.items[data-v-a5b4818c]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a5b4818c]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a5b4818c],.item.grid-4[data-v-a5b4818c],.item.grid-6[data-v-a5b4818c]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a5b4818c],.item.grid-4[data-v-a5b4818c]{width:50%}.item.grid-3[data-v-a5b4818c],.item.grid-6[data-v-a5b4818c]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a5b4818c]{width:25%}}.container[data-v-992c883e]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-992c883e]{padding:0 48px}}@media (min-width: 960px){.container[data-v-992c883e]{width:100%;padding:0 64px}}.vp-doc[data-v-992c883e] .VPHomeSponsors,.vp-doc[data-v-992c883e] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-992c883e] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-992c883e] .VPHomeSponsors a,.vp-doc[data-v-992c883e] .VPTeamPage a{text-decoration:none}.VPHome[data-v-f20aabfd]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-f20aabfd]{margin-bottom:128px}}.VPContent[data-v-c788ce77]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-c788ce77]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-c788ce77]{margin:0}@media (min-width: 960px){.VPContent[data-v-c788ce77]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-c788ce77]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-c788ce77]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-f0cf6efd]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-f0cf6efd]{display:none}.VPFooter[data-v-f0cf6efd] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-f0cf6efd] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-f0cf6efd]{padding:32px}}.container[data-v-f0cf6efd]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-f0cf6efd],.copyright[data-v-f0cf6efd]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-f15d19c4]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-f15d19c4]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-f15d19c4]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-f15d19c4]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-f15d19c4]{color:var(--vp-c-text-1)}.icon[data-v-f15d19c4]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-f15d19c4]{font-size:14px}.icon[data-v-f15d19c4]{font-size:16px}}.open>.icon[data-v-f15d19c4]{transform:rotate(90deg)}.items[data-v-f15d19c4]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-f15d19c4]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-f15d19c4]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-f15d19c4]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-f15d19c4]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-f15d19c4]{transition:all .2s ease-out}.flyout-leave-active[data-v-f15d19c4]{transition:all .15s ease-in}.flyout-enter-from[data-v-f15d19c4],.flyout-leave-to[data-v-f15d19c4]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-fc4fc217]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-fc4fc217]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-fc4fc217]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-fc4fc217]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-fc4fc217]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-fc4fc217]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-fc4fc217]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-fc4fc217]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-fc4fc217]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-fc4fc217]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-fc4fc217]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-fc4fc217]{display:none}}.menu-icon[data-v-fc4fc217]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-fc4fc217]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-fc4fc217]{padding:12px 32px 11px}}.VPSwitch[data-v-5a9711a9]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-5a9711a9]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-5a9711a9]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-5a9711a9]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-5a9711a9] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-5a9711a9] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-fc358d5e]{opacity:1}.moon[data-v-fc358d5e],.dark .sun[data-v-fc358d5e]{opacity:0}.dark .moon[data-v-fc358d5e]{opacity:1}.dark .VPSwitchAppearance[data-v-fc358d5e] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-7c273665]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-7c273665]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-f8b123ce]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-f8b123ce]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-f8b123ce]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-f8b123ce]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-68969cb9]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-68969cb9]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-68969cb9]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-68969cb9]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-c4198b50]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-c4198b50] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-c4198b50] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-c4198b50] .group:last-child{padding-bottom:0}.VPMenu[data-v-c4198b50] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-c4198b50] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-c4198b50] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-c4198b50] .action{padding-left:24px}.VPFlyout[data-v-26532166]{position:relative}.VPFlyout[data-v-26532166]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-26532166]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-26532166]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-26532166]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-26532166]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-26532166],.button[aria-expanded=true]+.menu[data-v-26532166]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-26532166]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-26532166]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-26532166]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-26532166]{margin-right:0;font-size:16px}.text-icon[data-v-26532166]{margin-left:4px;font-size:14px}.icon[data-v-26532166]{font-size:20px;transition:fill .25s}.menu[data-v-26532166]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-80dc6408]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-80dc6408]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-80dc6408]>svg,.VPSocialLink[data-v-80dc6408]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-dcace2da]{display:flex;justify-content:center}.VPNavBarExtra[data-v-8acb9ba8]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-8acb9ba8]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-8acb9ba8]{display:none}}.trans-title[data-v-8acb9ba8]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-8acb9ba8],.item.social-links[data-v-8acb9ba8]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-8acb9ba8]{min-width:176px}.appearance-action[data-v-8acb9ba8]{margin-right:-2px}.social-links-list[data-v-8acb9ba8]{margin:-4px -8px}.VPNavBarHamburger[data-v-1f112e84]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-1f112e84]{display:none}}.container[data-v-1f112e84]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-1f112e84]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-1f112e84]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-1f112e84]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-1f112e84]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-1f112e84]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-1f112e84]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-1f112e84],.VPNavBarHamburger.active:hover .middle[data-v-1f112e84],.VPNavBarHamburger.active:hover .bottom[data-v-1f112e84]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-1f112e84],.middle[data-v-1f112e84],.bottom[data-v-1f112e84]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-1f112e84]{top:0;left:0;transform:translate(0)}.middle[data-v-1f112e84]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-1f112e84]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-ba441ad6]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-ba441ad6],.VPNavBarMenuLink[data-v-ba441ad6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-18e4883d]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-18e4883d]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-c0641f5a]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-c0641f5a]{display:flex;align-items:center}}.title[data-v-287ea40d]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-287ea40d]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-287ea40d]{border-bottom-color:var(--vp-c-divider)}}[data-v-287ea40d] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-5bcc9546]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-5bcc9546]{display:flex;align-items:center}}.title[data-v-5bcc9546]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-3b8fc0f7]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-3b8fc0f7]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-3b8fc0f7]:not(.home){background-color:transparent}.VPNavBar[data-v-3b8fc0f7]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-3b8fc0f7]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-3b8fc0f7]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-3b8fc0f7]{padding:0}}.container[data-v-3b8fc0f7]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-3b8fc0f7],.container>.content[data-v-3b8fc0f7]{pointer-events:none}.container[data-v-3b8fc0f7] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-3b8fc0f7]{max-width:100%}}.title[data-v-3b8fc0f7]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-3b8fc0f7]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-3b8fc0f7]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-3b8fc0f7]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-3b8fc0f7]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-3b8fc0f7]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-3b8fc0f7]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-3b8fc0f7]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-3b8fc0f7]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-3b8fc0f7]{column-gap:.5rem}}.menu+.translations[data-v-3b8fc0f7]:before,.menu+.appearance[data-v-3b8fc0f7]:before,.menu+.social-links[data-v-3b8fc0f7]:before,.translations+.appearance[data-v-3b8fc0f7]:before,.appearance+.social-links[data-v-3b8fc0f7]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-3b8fc0f7]:before,.translations+.appearance[data-v-3b8fc0f7]:before{margin-right:16px}.appearance+.social-links[data-v-3b8fc0f7]:before{margin-left:16px}.social-links[data-v-3b8fc0f7]{margin-right:-8px}.divider[data-v-3b8fc0f7]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-3b8fc0f7]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-3b8fc0f7]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-3b8fc0f7]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-3b8fc0f7]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-3b8fc0f7]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-3b8fc0f7]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-bc4b47f6]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-bc4b47f6]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-16a75162]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-16a75162]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-b8f04618]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-b8f04618]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-902c48d5]{display:block}.title[data-v-902c48d5]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-564c17b7]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-564c17b7]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-564c17b7]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-564c17b7]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-564c17b7]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-564c17b7]{transform:rotate(45deg)}.button[data-v-564c17b7]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-564c17b7]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-564c17b7]{transition:transform .25s}.group[data-v-564c17b7]:first-child{padding-top:0}.group+.group[data-v-564c17b7],.group+.item[data-v-564c17b7]{padding-top:4px}.VPNavScreenTranslations[data-v-21c91625]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-21c91625]{height:auto}.title[data-v-21c91625]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-21c91625]{font-size:16px}.icon.lang[data-v-21c91625]{margin-right:8px}.icon.chevron[data-v-21c91625]{margin-left:4px}.list[data-v-21c91625]{padding:4px 0 0 24px}.link[data-v-21c91625]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-9f67e6f8]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-9f67e6f8],.VPNavScreen.fade-leave-active[data-v-9f67e6f8]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-9f67e6f8],.VPNavScreen.fade-leave-active .container[data-v-9f67e6f8]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-9f67e6f8],.VPNavScreen.fade-leave-to[data-v-9f67e6f8]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-9f67e6f8],.VPNavScreen.fade-leave-to .container[data-v-9f67e6f8]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-9f67e6f8]{display:none}}.container[data-v-9f67e6f8]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-9f67e6f8],.menu+.appearance[data-v-9f67e6f8],.translations+.appearance[data-v-9f67e6f8]{margin-top:24px}.menu+.social-links[data-v-9f67e6f8]{margin-top:16px}.appearance+.social-links[data-v-9f67e6f8]{margin-top:16px}.VPNav[data-v-a1655bdb]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-a1655bdb]{position:fixed}}.VPSidebarItem.level-0[data-v-506212c1]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-506212c1]{padding-bottom:10px}.item[data-v-506212c1]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-506212c1]{cursor:pointer}.indicator[data-v-506212c1]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-506212c1],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-506212c1],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-506212c1],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-506212c1]{background-color:var(--vp-c-brand-1)}.link[data-v-506212c1]{display:flex;align-items:center;flex-grow:1}.text[data-v-506212c1]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-506212c1]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-506212c1],.VPSidebarItem.level-2 .text[data-v-506212c1],.VPSidebarItem.level-3 .text[data-v-506212c1],.VPSidebarItem.level-4 .text[data-v-506212c1],.VPSidebarItem.level-5 .text[data-v-506212c1]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-506212c1],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-506212c1],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-506212c1],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-506212c1],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-506212c1],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-506212c1]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-506212c1],.VPSidebarItem.level-1.has-active>.item>.text[data-v-506212c1],.VPSidebarItem.level-2.has-active>.item>.text[data-v-506212c1],.VPSidebarItem.level-3.has-active>.item>.text[data-v-506212c1],.VPSidebarItem.level-4.has-active>.item>.text[data-v-506212c1],.VPSidebarItem.level-5.has-active>.item>.text[data-v-506212c1],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-506212c1],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-506212c1],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-506212c1],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-506212c1],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-506212c1],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-506212c1]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-506212c1],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-506212c1],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-506212c1],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-506212c1],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-506212c1],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-506212c1]{color:var(--vp-c-brand-1)}.caret[data-v-506212c1]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-506212c1]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-506212c1]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-506212c1]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-506212c1]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-506212c1],.VPSidebarItem.level-2 .items[data-v-506212c1],.VPSidebarItem.level-3 .items[data-v-506212c1],.VPSidebarItem.level-4 .items[data-v-506212c1],.VPSidebarItem.level-5 .items[data-v-506212c1]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-506212c1]{display:none}.VPSidebar[data-v-288c56f5]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-288c56f5]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-288c56f5]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-288c56f5]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-288c56f5]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-288c56f5]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-288c56f5]{outline:0}.group+.group[data-v-288c56f5]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-288c56f5]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-c948f111]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c948f111]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c948f111]{top:14px;left:16px}}.Layout[data-v-e7bc242b]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-897abb4c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-897abb4c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-897abb4c]{margin:128px 0}}.VPHomeSponsors[data-v-897abb4c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-897abb4c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-897abb4c]{padding:0 64px}}.container[data-v-897abb4c]{margin:0 auto;max-width:1152px}.love[data-v-897abb4c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-897abb4c]{display:inline-block}.message[data-v-897abb4c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-897abb4c]{padding-top:32px}.action[data-v-897abb4c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-6b354fe4]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-6b354fe4]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-6b354fe4-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-6b354fe4-s],.VPTeamMembers+.VPTeamPageSection[data-v-6b354fe4-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-6b354fe4-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-6b354fe4-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-6b354fe4-s],.VPTeamMembers+.VPTeamPageSection[data-v-6b354fe4-s]{margin-top:96px}}.VPTeamMembers[data-v-6b354fe4-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-6b354fe4-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-6b354fe4-s]{padding:0 64px}}.VPTeamPageTitle[data-v-95e3ea54]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-95e3ea54]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-95e3ea54]{padding:80px 64px 48px}}.title[data-v-95e3ea54]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-95e3ea54]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-95e3ea54]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-95e3ea54]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-c7c33507]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-c7c33507]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-c7c33507]{padding:0 64px}}.title[data-v-c7c33507]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-c7c33507]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-c7c33507]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-c7c33507]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-c7c33507]{padding-top:40px}.VPTeamMembersItem[data-v-f75224f4]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f75224f4]{padding:32px}.VPTeamMembersItem.small .data[data-v-f75224f4]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f75224f4]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f75224f4]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f75224f4]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f75224f4]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f75224f4]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f75224f4]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f75224f4]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f75224f4]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f75224f4]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f75224f4]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f75224f4]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f75224f4]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f75224f4]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f75224f4]{text-align:center}.avatar[data-v-f75224f4]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f75224f4]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f75224f4]{margin:0;font-weight:600}.affiliation[data-v-f75224f4]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f75224f4]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f75224f4]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f75224f4]{margin:0 auto}.desc[data-v-f75224f4] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f75224f4]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f75224f4]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f75224f4]:hover,.sp .sp-link.link[data-v-f75224f4]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f75224f4]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-1c62fb56]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-1c62fb56]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-1c62fb56]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-1c62fb56]{max-width:876px}.VPTeamMembers.medium .container[data-v-1c62fb56]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-1c62fb56]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-1c62fb56]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-1c62fb56]{max-width:760px}.container[data-v-1c62fb56]{display:grid;gap:24px;margin:0 auto;max-width:1152px}._row_7kqxf_2>:first-child{width:100px;height:100px;border:2px solid rebeccapurple}._row_7kqxf_2>:nth-child(2){border:2px solid orange;height:100px}._float_7kqxf_12{float:left} diff --git a/assets/zjw_(0_fn)().md.90153474.js b/assets/zjw_(0_fn)().md.90153474.js deleted file mode 100644 index 13bd177..0000000 --- a/assets/zjw_(0_fn)().md.90153474.js +++ /dev/null @@ -1,17 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const A=JSON.parse('{"title":"从模块编译结果学习 (0,fn)() 用法","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/(0,fn)().md"}'),o={name:"zjw/(0,fn)().md"},p=l(`

从模块编译结果学习 (0,fn)() 用法

例如下面示例代码

js
export function say(name) {
-  return \`hello \${name}\`;
-}
js
import { say } from './hello.js';
-say('world');

当我们使用 babel 编译后,出现如下结果

js
var _hello = require('./hello.js');
-(0, _hello.say)('world');

为什么需要 (0,fn)() 这种形式调用

其实 (0,fn)() 是逗号运算符,等同于 fn=_hello.say; fn() 最终还是为了调用 fn 函数,为什么不直接调用

从例子分析

js
// a.js
-const moduleA = {
-  name: 1,
-  say() {
-    console.log(this.name);
-  },
-};
-
-// b.js
-// 输出 1
-moduleA.say();
-// undefined
-(0, moduleA.say)();

这样调用后,等于函数 say 在 b 模块上下文下执行,从而保证执行上下文的正确

`,11),e=[p];function t(c,r,y,D,F,i){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default}; diff --git a/assets/zjw_(0_fn)().md.90153474.lean.js b/assets/zjw_(0_fn)().md.90153474.lean.js deleted file mode 100644 index 85cd0fe..0000000 --- a/assets/zjw_(0_fn)().md.90153474.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const A=JSON.parse('{"title":"从模块编译结果学习 (0,fn)() 用法","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/(0,fn)().md"}'),o={name:"zjw/(0,fn)().md"},p=l("",11),e=[p];function t(c,r,y,D,F,i){return n(),a("div",null,e)}const d=s(o,[["render",t]]);export{A as __pageData,d as default}; diff --git a/assets/zjw_(0_fn)().md.DR-yeSMY.js b/assets/zjw_(0_fn)().md.DR-yeSMY.js new file mode 100644 index 0000000..535ad76 --- /dev/null +++ b/assets/zjw_(0_fn)().md.DR-yeSMY.js @@ -0,0 +1,17 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const c=JSON.parse('{"title":"从模块编译结果学习 (0,fn)() 用法","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/(0,fn)().md","filePath":"zjw/(0,fn)().md"}'),h={name:"zjw/(0,fn)().md"},l=n(`

从模块编译结果学习 (0,fn)() 用法

例如下面示例代码

js
export function say(name) {
+  return \`hello \${name}\`;
+}
js
import { say } from './hello.js';
+say('world');

当我们使用 babel 编译后,出现如下结果

js
var _hello = require('./hello.js');
+(0, _hello.say)('world');

为什么需要 (0,fn)() 这种形式调用

其实 (0,fn)() 是逗号运算符,等同于 fn=_hello.say; fn() 最终还是为了调用 fn 函数,为什么不直接调用

从例子分析

js
// a.js
+const moduleA = {
+  name: 1,
+  say() {
+    console.log(this.name);
+  },
+};
+
+// b.js
+// 输出 1
+moduleA.say();
+// undefined
+(0, moduleA.say)();

这样调用后,等于函数 say 在 b 模块上下文下执行,从而保证执行上下文的正确

`,11),p=[l];function t(e,k,d,E,r,o){return a(),i("div",null,p)}const y=s(h,[["render",t]]);export{c as __pageData,y as default}; diff --git a/assets/zjw_(0_fn)().md.DR-yeSMY.lean.js b/assets/zjw_(0_fn)().md.DR-yeSMY.lean.js new file mode 100644 index 0000000..0d09bc5 --- /dev/null +++ b/assets/zjw_(0_fn)().md.DR-yeSMY.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const c=JSON.parse('{"title":"从模块编译结果学习 (0,fn)() 用法","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/(0,fn)().md","filePath":"zjw/(0,fn)().md"}'),h={name:"zjw/(0,fn)().md"},l=n("",11),p=[l];function t(e,k,d,E,r,o){return a(),i("div",null,p)}const y=s(h,[["render",t]]);export{c as __pageData,y as default}; diff --git a/assets/zjw_api-cache.md.47c00025.js b/assets/zjw_api-cache.md.47c00025.js deleted file mode 100644 index 6bca2a1..0000000 --- a/assets/zjw_api-cache.md.47c00025.js +++ /dev/null @@ -1,55 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"请求缓存","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/api-cache.md"}'),p={name:"zjw/api-cache.md"},o=l(`

请求缓存

在 PaaS 组件或者路由中间件内发起的重复请求,多数情况下可以通过请求缓存合并成一个请求

需求

  • 扩展现有请求方法
  • 合并同一时间内的重复请求

定义缓存结构

js
export class MapCache {
-  map = new Map();
-
-  static getKey(parmas) {
-    return JSON.stringify(parmas);
-  }
-
-  get(key) {
-    return this.map.get(key) && this.map.get(key).value;
-  }
-  set(key, value) {
-    return this.map.set(key, { value, timestamp: Date.now() });
-  }
-  // 按时间是否命中缓存
-  hit(key, maxTime) {
-    const { timestamp = 0 } = this.map.get(key) || {};
-
-    if (Date.now() - timestamp < maxTime) {
-      return true;
-    }
-    return false;
-  }
-}

使用装饰器模式扩展当前请求

js
export function apiHelper(fn) {
-  const apiCache = new MapCache();
-
-  return function (...args) {
-    let cache = false;
-
-    // 是否开启缓存
-    if (args.length === 2) {
-      cache = args.splice(-1)[0];
-    }
-    if (!cache) {
-      return fn.apply(this, args);
-    }
-    // 处理缓存
-    const { maxTime } = typeof cache === 'boolean' ? { maxTime: 1000 } : cache;
-    const { url, params, data, method } = args[0];
-    const key = ApiCache.getKey({ url, params, data, method });
-
-    if (apiCache.hit(key, maxTime)) {
-      return apiCache.get(key);
-    }
-    const response = fn.apply(this, args);
-    // 支持并发请求合并成一个 Promise
-    apiCache.set(key, response);
-
-    return response;
-  };
-}

使用

js
import Axios from 'axios';
-
-const request = apiHelper(Axios.request);
-
-// 使用缓存
-request({ url: 'http://api.twitter.com', params: { a: 1 } }, true);
`,10),e=[o];function t(c,r,F,y,D,A){return n(),a("div",null,e)}const h=s(p,[["render",t]]);export{i as __pageData,h as default}; diff --git a/assets/zjw_api-cache.md.47c00025.lean.js b/assets/zjw_api-cache.md.47c00025.lean.js deleted file mode 100644 index 99368c9..0000000 --- a/assets/zjw_api-cache.md.47c00025.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"请求缓存","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/api-cache.md"}'),p={name:"zjw/api-cache.md"},o=l("",10),e=[o];function t(c,r,F,y,D,A){return n(),a("div",null,e)}const h=s(p,[["render",t]]);export{i as __pageData,h as default}; diff --git a/assets/zjw_api-cache.md.D3wFev7N.js b/assets/zjw_api-cache.md.D3wFev7N.js new file mode 100644 index 0000000..1716976 --- /dev/null +++ b/assets/zjw_api-cache.md.D3wFev7N.js @@ -0,0 +1,55 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"请求缓存","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/api-cache.md","filePath":"zjw/api-cache.md"}'),h={name:"zjw/api-cache.md"},k=n(`

请求缓存

在 PaaS 组件或者路由中间件内发起的重复请求,多数情况下可以通过请求缓存合并成一个请求

需求

  • 扩展现有请求方法
  • 合并同一时间内的重复请求

定义缓存结构

js
export class MapCache {
+  map = new Map();
+
+  static getKey(parmas) {
+    return JSON.stringify(parmas);
+  }
+
+  get(key) {
+    return this.map.get(key) && this.map.get(key).value;
+  }
+  set(key, value) {
+    return this.map.set(key, { value, timestamp: Date.now() });
+  }
+  // 按时间是否命中缓存
+  hit(key, maxTime) {
+    const { timestamp = 0 } = this.map.get(key) || {};
+
+    if (Date.now() - timestamp < maxTime) {
+      return true;
+    }
+    return false;
+  }
+}

使用装饰器模式扩展当前请求

js
export function apiHelper(fn) {
+  const apiCache = new MapCache();
+
+  return function (...args) {
+    let cache = false;
+
+    // 是否开启缓存
+    if (args.length === 2) {
+      cache = args.splice(-1)[0];
+    }
+    if (!cache) {
+      return fn.apply(this, args);
+    }
+    // 处理缓存
+    const { maxTime } = typeof cache === 'boolean' ? { maxTime: 1000 } : cache;
+    const { url, params, data, method } = args[0];
+    const key = ApiCache.getKey({ url, params, data, method });
+
+    if (apiCache.hit(key, maxTime)) {
+      return apiCache.get(key);
+    }
+    const response = fn.apply(this, args);
+    // 支持并发请求合并成一个 Promise
+    apiCache.set(key, response);
+
+    return response;
+  };
+}

使用

js
import Axios from 'axios';
+
+const request = apiHelper(Axios.request);
+
+// 使用缓存
+request({ url: 'http://api.twitter.com', params: { a: 1 } }, true);
`,10),p=[k];function l(t,e,E,r,d,g){return a(),i("div",null,p)}const c=s(h,[["render",l]]);export{F as __pageData,c as default}; diff --git a/assets/zjw_api-cache.md.D3wFev7N.lean.js b/assets/zjw_api-cache.md.D3wFev7N.lean.js new file mode 100644 index 0000000..abc6fdc --- /dev/null +++ b/assets/zjw_api-cache.md.D3wFev7N.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"请求缓存","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/api-cache.md","filePath":"zjw/api-cache.md"}'),h={name:"zjw/api-cache.md"},k=n("",10),p=[k];function l(t,e,E,r,d,g){return a(),i("div",null,p)}const c=s(h,[["render",l]]);export{F as __pageData,c as default}; diff --git a/assets/zjw_auto-test.md.HsizIQ-a.js b/assets/zjw_auto-test.md.HsizIQ-a.js new file mode 100644 index 0000000..2ec218c --- /dev/null +++ b/assets/zjw_auto-test.md.HsizIQ-a.js @@ -0,0 +1,114 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/5.BZOY32BX.jpg",k="/daydayup/assets/6.C6Vbk8Kw.jpg",t="/daydayup/assets/7.V9Yi50CN.svg",l="/daydayup/assets/8.Cag8uqth.gif",B=JSON.parse('{"title":"前端自动化测试","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/auto-test.md","filePath":"zjw/auto-test.md"}'),p={name:"zjw/auto-test.md"},e=n('

前端自动化测试

现状

技术选型

技术选择:jest+@testing-library/react+playwright

bash
yarn add -D jest @playwright/test babel-jest jest-environment-jsdom react-test-renderer @testing-library/react @types/jest

cypress 使用中的问题

流程与规范

目录与命名规范

  • 单元测试一般放在对应目录的 __tests__文件夹下,命名为测试代码的文件名中加 .test
  • e2e 测试放在根目录 e2e 下,命名 xxxx.test.ts

组件测试

typescript
import { render } from '@testing-library/react';
+import IncPrice from '.';
+
+jest.mock('antd-mobile/es/utils/native-props', () => {
+  return {
+    withNativeProps: (props, el) => el,
+  };
+});
+
+describe('价格组件', () => {
+  it('1+100=>1积分+1.00元', () => {
+    const { container } = render(<IncPrice integral={1} currency={100} />);
+    expect(container.textContent).toBe('1积分+1.00元');
+  });
+  it('0+100=>1.00元', () => {
+    const { container } = render(<IncPrice integral={0} currency={100} />);
+    expect(container.textContent).toBe('1.00元');
+  });
+  it('1=>1积分', () => {
+    const { container } = render(<IncPrice integral={1} currency={0} />);
+    expect(container.textContent).toBe('1积分');
+  });
+  it('0+0=>免费', () => {
+    const { container } = render(<IncPrice integral={0} currency={0} />);
+    expect(container.textContent).toBe('免费');
+  });
+});

可以使用 chatGPT 生成基础测试代码

e2e 测试

typescript
import { test } from '@playwright/test';
+
+test.beforeEach(async ({ page }) => {
+  await page.goto('https://127.0.0.1:10086');
+});
+
+test.describe('下单', () => {
+  test('券码下单流程', async ({ page }) => {
+    const goodsName = '券码';
+    await page.getByPlaceholder('请输入关键词').fill(goodsName);
+    await page.keyboard.press('Enter');
+    await page.getByText(goodsName).last().click();
+    // 商品详情页
+    await page.getByRole('button', { name: '立即兑换' }).click();
+    // 确认订单页
+    await page.getByRole('button', { name: '提交订单' }).click();
+    // 支付结果页
+    await page.waitForSelector('text=支付成功');
+  });
+});

GitLab 工作流集成

yml
stages:
+  - test
+  - deploy
+
+.testTpl:
+  rules:
+    # 提交默认分支时触发
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+      when: always
+
+test:
+  extends: .testTpl
+  image: mcr.microsoft.com/playwright:v1.31.0-focal
+  stage: test
+  script:
+    - 'yarn'
+    # jest --ci --coverage --runInBand --reporters=default --reporters=jest-junit
+    - 'yarn test:ci'
+    # playwright test ; node ./post-message.js  用于发消息到企微
+    - 'yarn test:e2e:ci'
+  artifacts:
+    reports:
+      cobertura: coverage/cobertura-coverage.xml
+      junit:
+        # 单测报告
+        - junit.xml
+        # e2e报告
+        - je2e.xml
+    paths:
+      - coverage
+      - playwright-report
+      - test
+
+pages:
+  extends: .testTpl
+  stage: deploy
+  dependencies:
+    - test
+  script:
+    # 部署单测报告到 GitLab Pages
+    - mv coverage/ public/
+  artifacts:
+    paths:
+      - public

post-message.js 部分代码

js
async function main() {
+  // 读取e2e报告文件
+  if (fs.existsSync('je2e.xml')) {
+    const xml = fs.readFileSync('je2e.xml', 'utf8').toString();
+    const result = await parser.parseStringPromise(xml);
+    const { testsuites } = result;
+    const { time, tests, failures } = testsuites.$;
+    // 拼接消息并发送到企微
+    const msg = \`总数: \${tests}  失败: \${failures}  耗时: \${Math.floor(time)}s\\n\\n
+   \${testsuites.testsuite
+     .map(
+       (m) => \`\${m.$.name}\\n
+       \${m.testcase
+         .map(
+           (c) =>
+             \`>\${c.failure ? '<font color="warning">✕</font>' : '<font color="info">✓</font>'} \${
+               c.$.name
+             } (\${c.$.time * 1000} ms)\`,
+         )
+         .join('\\n')}\`,
+     )
+     .join('\\n')}\\n\\n流水线地址:\${process.env.CI_PIPELINE_URL}\`;
+
+    postMsgToQw(msg);
+  }
+}

完整例子:https://github.com/dobble11/daydayup-playground/tree/main/vite-react-playwright

`,24),E=[e];function r(d,g,F,y,c,C){return a(),i("div",null,E)}const A=s(p,[["render",r]]);export{B as __pageData,A as default}; diff --git a/assets/zjw_auto-test.md.HsizIQ-a.lean.js b/assets/zjw_auto-test.md.HsizIQ-a.lean.js new file mode 100644 index 0000000..8e7b5fa --- /dev/null +++ b/assets/zjw_auto-test.md.HsizIQ-a.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/5.BZOY32BX.jpg",k="/daydayup/assets/6.C6Vbk8Kw.jpg",t="/daydayup/assets/7.V9Yi50CN.svg",l="/daydayup/assets/8.Cag8uqth.gif",B=JSON.parse('{"title":"前端自动化测试","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/auto-test.md","filePath":"zjw/auto-test.md"}'),p={name:"zjw/auto-test.md"},e=n("",24),E=[e];function r(d,g,F,y,c,C){return a(),i("div",null,E)}const A=s(p,[["render",r]]);export{B as __pageData,A as default}; diff --git a/assets/zjw_auto-test.md.eaf268b9.js b/assets/zjw_auto-test.md.eaf268b9.js deleted file mode 100644 index 92bcb4b..0000000 --- a/assets/zjw_auto-test.md.eaf268b9.js +++ /dev/null @@ -1,114 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const p="/daydayup/assets/5.08c71843.jpg",o="/daydayup/assets/6.99b74071.jpg",e="/daydayup/assets/7.59621565.svg",t="/daydayup/assets/8.9e0d6471.gif",u=JSON.parse('{"title":"前端自动化测试","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/auto-test.md"}'),c={name:"zjw/auto-test.md"},r=l('

前端自动化测试

现状

技术选型

技术选择:jest+@testing-library/react+playwright

bash
yarn add -D jest @playwright/test babel-jest jest-environment-jsdom react-test-renderer @testing-library/react @types/jest

cypress 使用中的问题

流程与规范

目录与命名规范

  • 单元测试一般放在对应目录的 __tests__文件夹下,命名为测试代码的文件名中加 .test
  • e2e 测试放在根目录 e2e 下,命名 xxxx.test.ts

组件测试

typescript
import { render } from '@testing-library/react';
-import IncPrice from '.';
-
-jest.mock('antd-mobile/es/utils/native-props', () => {
-  return {
-    withNativeProps: (props, el) => el,
-  };
-});
-
-describe('价格组件', () => {
-  it('1+100=>1积分+1.00元', () => {
-    const { container } = render(<IncPrice integral={1} currency={100} />);
-    expect(container.textContent).toBe('1积分+1.00元');
-  });
-  it('0+100=>1.00元', () => {
-    const { container } = render(<IncPrice integral={0} currency={100} />);
-    expect(container.textContent).toBe('1.00元');
-  });
-  it('1=>1积分', () => {
-    const { container } = render(<IncPrice integral={1} currency={0} />);
-    expect(container.textContent).toBe('1积分');
-  });
-  it('0+0=>免费', () => {
-    const { container } = render(<IncPrice integral={0} currency={0} />);
-    expect(container.textContent).toBe('免费');
-  });
-});

可以使用 chatGPT 生成基础测试代码

e2e 测试

typescript
import { test } from '@playwright/test';
-
-test.beforeEach(async ({ page }) => {
-  await page.goto('https://127.0.0.1:10086');
-});
-
-test.describe('下单', () => {
-  test('券码下单流程', async ({ page }) => {
-    const goodsName = '券码';
-    await page.getByPlaceholder('请输入关键词').fill(goodsName);
-    await page.keyboard.press('Enter');
-    await page.getByText(goodsName).last().click();
-    // 商品详情页
-    await page.getByRole('button', { name: '立即兑换' }).click();
-    // 确认订单页
-    await page.getByRole('button', { name: '提交订单' }).click();
-    // 支付结果页
-    await page.waitForSelector('text=支付成功');
-  });
-});

GitLab 工作流集成

yml
stages:
-  - test
-  - deploy
-
-.testTpl:
-  rules:
-    # 提交默认分支时触发
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-      when: always
-
-test:
-  extends: .testTpl
-  image: mcr.microsoft.com/playwright:v1.31.0-focal
-  stage: test
-  script:
-    - 'yarn'
-    # jest --ci --coverage --runInBand --reporters=default --reporters=jest-junit
-    - 'yarn test:ci'
-    # playwright test ; node ./post-message.js  用于发消息到企微
-    - 'yarn test:e2e:ci'
-  artifacts:
-    reports:
-      cobertura: coverage/cobertura-coverage.xml
-      junit:
-        # 单测报告
-        - junit.xml
-        # e2e报告
-        - je2e.xml
-    paths:
-      - coverage
-      - playwright-report
-      - test
-
-pages:
-  extends: .testTpl
-  stage: deploy
-  dependencies:
-    - test
-  script:
-    # 部署单测报告到 GitLab Pages
-    - mv coverage/ public/
-  artifacts:
-    paths:
-      - public

post-message.js 部分代码

js
async function main() {
-  // 读取e2e报告文件
-  if (fs.existsSync('je2e.xml')) {
-    const xml = fs.readFileSync('je2e.xml', 'utf8').toString();
-    const result = await parser.parseStringPromise(xml);
-    const { testsuites } = result;
-    const { time, tests, failures } = testsuites.$;
-    // 拼接消息并发送到企微
-    const msg = \`总数: \${tests}  失败: \${failures}  耗时: \${Math.floor(time)}s\\n\\n
-   \${testsuites.testsuite
-     .map(
-       (m) => \`\${m.$.name}\\n
-       \${m.testcase
-         .map(
-           (c) =>
-             \`>\${c.failure ? '<font color="warning">✕</font>' : '<font color="info">✓</font>'} \${
-               c.$.name
-             } (\${c.$.time * 1000} ms)\`,
-         )
-         .join('\\n')}\`,
-     )
-     .join('\\n')}\\n\\n流水线地址:\${process.env.CI_PIPELINE_URL}\`;
-
-    postMsgToQw(msg);
-  }
-}

完整例子:https://github.com/dobble11/daydayup-playground/tree/main/vite-react-playwright

`,24),F=[r];function y(D,C,A,i,d,E){return n(),a("div",null,F)}const h=s(c,[["render",y]]);export{u as __pageData,h as default}; diff --git a/assets/zjw_auto-test.md.eaf268b9.lean.js b/assets/zjw_auto-test.md.eaf268b9.lean.js deleted file mode 100644 index eda8c93..0000000 --- a/assets/zjw_auto-test.md.eaf268b9.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const p="/daydayup/assets/5.08c71843.jpg",o="/daydayup/assets/6.99b74071.jpg",e="/daydayup/assets/7.59621565.svg",t="/daydayup/assets/8.9e0d6471.gif",u=JSON.parse('{"title":"前端自动化测试","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/auto-test.md"}'),c={name:"zjw/auto-test.md"},r=l("",24),F=[r];function y(D,C,A,i,d,E){return n(),a("div",null,F)}const h=s(c,[["render",y]]);export{u as __pageData,h as default}; diff --git a/assets/zjw_babel-plugin-import.md.CR8YxeOP.js b/assets/zjw_babel-plugin-import.md.CR8YxeOP.js new file mode 100644 index 0000000..cc873d6 --- /dev/null +++ b/assets/zjw_babel-plugin-import.md.CR8YxeOP.js @@ -0,0 +1,82 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const o=JSON.parse('{"title":"实现导入转换 babel 插件","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/babel-plugin-import.md","filePath":"zjw/babel-plugin-import.md"}'),l={name:"zjw/babel-plugin-import.md"},p=n(`

实现导入转换 babel 插件

转换 antd 导入为按需加载,例如

js
import { Button } from 'antd'
+
+⬇️    ⬇️     ⬇️
+import Button from 'antd/es/button'
+import 'antd/es/button/style'

babel 运行过程

输入 code -> ast (@babel/parser) -> 转换 (应用插件修改 ast) -> 生成代码 (@babel/generator)

babel 插件顺序

  • 插件在预设之前运行
  • 插件按定义循序执行
  • 预设从后往前执行

插件基本结构

js
export default function (babel) {
+  return {
+    // pre(state) {},
+    visitor: {},
+    // post(state) {},
+  };
+}

插件执行时,pre -> visitor -> post

插件分为两类:

  • 语法插件
  • 转换插件

其中语法插件则是启用 @babel/parser 内部支持语法,例如支持解析 jsx 插件

babel-plugin-syntax-jsx 源码

ts
import { declare } from '@babel/helper-plugin-utils';
+
+export default declare((api) => {
+  api.assertVersion(7);
+
+  return {
+    name: 'syntax-jsx',
+
+    manipulateOptions(opts, parserOpts) {
+      const { plugins } = parserOpts;
+      // 如果包含 typescript 插件,则使用其解析 jsx,所以直接返回
+      if (plugins.some((p) => (Array.isArray(p) ? p[0] : p) === 'typescript')) {
+        return;
+      }
+
+      // 启用 jsx 语法解析,否则 @babel/praser 会报错
+      plugins.push('jsx');
+    },
+  };
+});

实现

ts
import * as Babel from '@babel/core';
+
+export default function (babel: typeof Babel): Babel.PluginObj {
+  const { types: t } = babel;
+
+  return {
+    name: 'babel-plugin-import',
+    visitor: {
+      ImportDeclaration(path) {
+        if (path.node.source?.value === 'antd') {
+          const vars = path.node.specifiers.map((m) => m.local.name);
+
+          path.replaceWithMultiple(
+            vars
+              .map((m) => [
+                t.importDeclaration(
+                  [t.importDefaultSpecifier(t.identifier(m))],
+                  t.stringLiteral(\`antd/es/\${m.toLowerCase()}\`),
+                ),
+                t.importDeclaration([], t.stringLiteral(\`antd/es/\${m.toLowerCase()}/style\`)),
+              ])
+              .flat(),
+          );
+        }
+      },
+    },
+  };
+}

使用

json
{
+  "plugins": ["./babel-plugin-import"]
+}

插件选项

支持库目录指定

diff
+      ImportDeclaration(path, state) {
+         if (path.node.source?.value === 'antd') {
++          const { libraryDirectory = 'es' } = state.opts;
+
+           path.replaceWithMultiple(
+             vars
+               .map((m) => [
+                 t.importDeclaration(
+                   [t.importDefaultSpecifier(t.identifier(m))],
++                  t.stringLiteral(\`antd/\${libraryDirectory}/\${m.toLowerCase()}\`),
+                 ),
+                 t.importDeclaration(
+                   [],
++                  t.stringLiteral(\`antd/\${libraryDirectory}/\${m.toLowerCase()}/style\`),
+                 ),
+               ])
+               .flat(),
+           );
+         }
+       },

使用

json
{
+  "plugins": [["./babel-plugin-import", { "libraryDirectory": "lib" }]]
+}

遇到的问题

  • @babel/cli 默认只编译 js 文件,会忽略 ts 文件,需要设置 --extensions '.ts'"presets": ["@babel/preset-typescript"](.babelrc)
  • ts 文件下应用插件不生效,由于 @babel/preset-typescript onlyRemoveTypeImports 选项默认值为 false 移除未使用的导入,可以设置为 true 仅移除类型导入,或者使用导入变量,例如
diff
import { Button, Card } from 'antd';
+
++ console.log(Button, Card)

相关资源

`,29),t=[p];function h(k,e,E,r,d,g){return a(),i("div",null,t)}const c=s(l,[["render",h]]);export{o as __pageData,c as default}; diff --git a/assets/zjw_babel-plugin-import.md.CR8YxeOP.lean.js b/assets/zjw_babel-plugin-import.md.CR8YxeOP.lean.js new file mode 100644 index 0000000..980e30f --- /dev/null +++ b/assets/zjw_babel-plugin-import.md.CR8YxeOP.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const o=JSON.parse('{"title":"实现导入转换 babel 插件","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/babel-plugin-import.md","filePath":"zjw/babel-plugin-import.md"}'),l={name:"zjw/babel-plugin-import.md"},p=n("",29),t=[p];function h(k,e,E,r,d,g){return a(),i("div",null,t)}const c=s(l,[["render",h]]);export{o as __pageData,c as default}; diff --git a/assets/zjw_babel-plugin-import.md.b3fe9f86.js b/assets/zjw_babel-plugin-import.md.b3fe9f86.js deleted file mode 100644 index 7d3c49f..0000000 --- a/assets/zjw_babel-plugin-import.md.b3fe9f86.js +++ /dev/null @@ -1,82 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const A=JSON.parse('{"title":"实现导入转换 babel 插件","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/babel-plugin-import.md"}'),p={name:"zjw/babel-plugin-import.md"},o=l(`

实现导入转换 babel 插件

转换 antd 导入为按需加载,例如

js
import { Button } from 'antd'
-
-⬇️    ⬇️     ⬇️
-import Button from 'antd/es/button'
-import 'antd/es/button/style'

babel 运行过程

输入 code -> ast (@babel/parser) -> 转换 (应用插件修改 ast) -> 生成代码 (@babel/generator)

babel 插件顺序

  • 插件在预设之前运行
  • 插件按定义循序执行
  • 预设从后往前执行

插件基本结构

js
export default function (babel) {
-  return {
-    // pre(state) {},
-    visitor: {},
-    // post(state) {},
-  };
-}

插件执行时,pre -> visitor -> post

插件分为两类:

  • 语法插件
  • 转换插件

其中语法插件则是启用 @babel/parser 内部支持语法,例如支持解析 jsx 插件

babel-plugin-syntax-jsx 源码

ts
import { declare } from '@babel/helper-plugin-utils';
-
-export default declare((api) => {
-  api.assertVersion(7);
-
-  return {
-    name: 'syntax-jsx',
-
-    manipulateOptions(opts, parserOpts) {
-      const { plugins } = parserOpts;
-      // 如果包含 typescript 插件,则使用其解析 jsx,所以直接返回
-      if (plugins.some((p) => (Array.isArray(p) ? p[0] : p) === 'typescript')) {
-        return;
-      }
-
-      // 启用 jsx 语法解析,否则 @babel/praser 会报错
-      plugins.push('jsx');
-    },
-  };
-});

实现

ts
import * as Babel from '@babel/core';
-
-export default function (babel: typeof Babel): Babel.PluginObj {
-  const { types: t } = babel;
-
-  return {
-    name: 'babel-plugin-import',
-    visitor: {
-      ImportDeclaration(path) {
-        if (path.node.source?.value === 'antd') {
-          const vars = path.node.specifiers.map((m) => m.local.name);
-
-          path.replaceWithMultiple(
-            vars
-              .map((m) => [
-                t.importDeclaration(
-                  [t.importDefaultSpecifier(t.identifier(m))],
-                  t.stringLiteral(\`antd/es/\${m.toLowerCase()}\`),
-                ),
-                t.importDeclaration([], t.stringLiteral(\`antd/es/\${m.toLowerCase()}/style\`)),
-              ])
-              .flat(),
-          );
-        }
-      },
-    },
-  };
-}

使用

json
{
-  "plugins": ["./babel-plugin-import"]
-}

插件选项

支持库目录指定

diff
+      ImportDeclaration(path, state) {
-         if (path.node.source?.value === 'antd') {
-+          const { libraryDirectory = 'es' } = state.opts;
-
-           path.replaceWithMultiple(
-             vars
-               .map((m) => [
-                 t.importDeclaration(
-                   [t.importDefaultSpecifier(t.identifier(m))],
-+                  t.stringLiteral(\`antd/\${libraryDirectory}/\${m.toLowerCase()}\`),
-                 ),
-                 t.importDeclaration(
-                   [],
-+                  t.stringLiteral(\`antd/\${libraryDirectory}/\${m.toLowerCase()}/style\`),
-                 ),
-               ])
-               .flat(),
-           );
-         }
-       },

使用

json
{
-  "plugins": [["./babel-plugin-import", { "libraryDirectory": "lib" }]]
-}

遇到的问题

  • @babel/cli 默认只编译 js 文件,会忽略 ts 文件,需要设置 --extensions '.ts'"presets": ["@babel/preset-typescript"](.babelrc)
  • ts 文件下应用插件不生效,由于 @babel/preset-typescript onlyRemoveTypeImports 选项默认值为 false 移除未使用的导入,可以设置为 true 仅移除类型导入,或者使用导入变量,例如
diff
import { Button, Card } from 'antd';
-
-+ console.log(Button, Card)

相关资源

`,29),e=[o];function t(c,r,y,F,D,i){return n(),a("div",null,e)}const b=s(p,[["render",t]]);export{A as __pageData,b as default}; diff --git a/assets/zjw_babel-plugin-import.md.b3fe9f86.lean.js b/assets/zjw_babel-plugin-import.md.b3fe9f86.lean.js deleted file mode 100644 index 488d2f5..0000000 --- a/assets/zjw_babel-plugin-import.md.b3fe9f86.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const A=JSON.parse('{"title":"实现导入转换 babel 插件","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/babel-plugin-import.md"}'),p={name:"zjw/babel-plugin-import.md"},o=l("",29),e=[o];function t(c,r,y,F,D,i){return n(),a("div",null,e)}const b=s(p,[["render",t]]);export{A as __pageData,b as default}; diff --git a/assets/zjw_babel-plugin-taro-page-hoc.md.DwkJp9WN.js b/assets/zjw_babel-plugin-taro-page-hoc.md.DwkJp9WN.js new file mode 100644 index 0000000..aca8372 --- /dev/null +++ b/assets/zjw_babel-plugin-taro-page-hoc.md.DwkJp9WN.js @@ -0,0 +1,106 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/1.OTVfcfE_.png",p="/daydayup/assets/2.BxU4XP9_.jpg",o=JSON.parse('{"title":"如何解决 Taro 页面无法异步渲染问题","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/babel-plugin-taro-page-hoc.md","filePath":"zjw/babel-plugin-taro-page-hoc.md"}'),k={name:"zjw/babel-plugin-taro-page-hoc.md"},l=n(`

如何解决 Taro 页面无法异步渲染问题

当使用 Taro 开发时,要实现拦截页面渲染做一些异步操作(例如单点登录,前置检查等)

举个自动登录场景,当访问页面链接上带有登录凭证 (ticket) 时,需要调用后端接口实现登录操作,在请求过程中展示一个 loading 样式,我们很容易想到通过入口组件(app.tsx)去拦截子元素(this.props.children)渲染实现

Taro H5 端实现

tsx
class App extends Component {
+  state = {
+    loading: false,
+  };
+
+  componentDidMount() {
+    const ticket = getQuery('ticket');
+
+    if (ticket) {
+      this.setState({ loading: true });
+      // 模拟异步过程
+      setTimeout(() => {
+        this.setState({ loading: false });
+      }, 2000);
+    }
+  }
+
+  render() {
+    return this.state.loading ? <div>loading</div> : this.props.children;
+  }
+}
+
+export default App;

当运行上面代码,会得到如下报错

Taro 遵守小程序设计,所以无法从入口组件拦截子元素的挂载
另一种方式是通过高阶组件去包裹每个页面实现

tsx
function hoc(Component) {
+  return (props) => {
+    const [loading, setLoading] = useState(false);
+
+    useEffect(() => {
+      const ticket = getQuery('ticket');
+
+      if (ticket) {
+        setLoading(true);
+        setTimeout(() => {
+          setLoading(false);
+        }, 2000);
+      }
+    }, []);
+
+    return loading ? <div>loading</div> : <Component {...props} />;
+  };
+}
+
+export default hoc;
+
+// 包裹页面组件
+export default hoc(Home);

但是这样带来一个问题,通过约定无法保证每个人新建页面时都会使用这个 hoc
既然运行时我们无法通过入口组件拦截整个页面,那是不是可以通过编译时解决

通过 Babel 编译时转换页面导出

可以实现一个 babel 插件,获取页面路径,然后匹配到页面组件,转换导出内容,包裹上自定义的 hoc 函数

主要实现流程

step1:获取页面路径

Taro 的页面路径配置在 app.config.ts 文件的 pages 字段,可以通过 babel 解析拿到这个值

tsx
const srcPath = path.join(process.cwd(), './src');
+const filenames = fs.readdirSync(srcPath);
+// 查找到app配置文件路径
+const appConfigPath = \`\${srcPath}/\${filenames.find((m) => m.includes('app.config.'))}\`;
+let pages: string[] = [];
+
+if (fs.existsSync(appConfigPath)) {
+  const code = fs.readFileSync(appConfigPath).toString();
+  // 读取文件,转换成 ast
+  const ast = parse(code, {
+    sourceType: 'module',
+    plugins: ['typescript'],
+  });
+  traverse(ast, {
+    // 查找数组元素
+    ArrayExpression(path) {
+      if (
+        t.isObjectProperty(path.parent) &&
+        t.isIdentifier(path.parent.key) &&
+        // 判断属性名为 pages
+        path.parent.key.name === 'pages'
+      ) {
+        // 获取 pages 的值
+        pages = pages.concat(path.node.elements.map((m: any) => m.value));
+      }
+    },
+  });
+}

这样我们就可以拿到 Taro 所有的页面路径

step2:遍历默认导出找到页面组件

tsx
{
+  ExportDefaultDeclaration(path, state) {
+    // 当前代码的文件名
+    const filename = state.filename;
+    // 通过排除config文件及匹配上一步中获取的路径找到页面组件
+    const isPage = filename.includes('.config.')
+      ? false
+      : pages.some((m) => state.filename.includes(m));
+    }
+  },
+}

step3:转换

tsx
{
+  ExportDefaultDeclaration(path, state) {
+    const hocSource='src/component/hoc'
+    const hocName='__hoc__'
+
+    if (!t.isClassDeclaration(path.node.declaration) && isPage) {
+      // 在前面插入导入语句
+      path.insertBefore(
+        t.importDeclaration(
+          [t.importDefaultSpecifier(t.identifier(hocName))],
+          t.stringLiteral(hocSource),
+        ),
+      );
+      // hoc 包裹导出
+      path.node.declaration = t.callExpression(t.identifier(hocName), [
+        path.node.declaration as any,
+      ]);
+    }
+  },
+}
+
+// 例如页面组件 Home 转换后输出
+⬇️     ⬇️     ⬇️
+import __hoc__ from 'src/component/hoc'
+export default __hoc__(Home)

更完整的实现:https://github.com/epeejs/babel-plugin-taro-page-hoc

`,23),t=[l];function e(E,r,d,g,y,F){return a(),i("div",null,t)}const C=s(k,[["render",e]]);export{o as __pageData,C as default}; diff --git a/assets/zjw_babel-plugin-taro-page-hoc.md.DwkJp9WN.lean.js b/assets/zjw_babel-plugin-taro-page-hoc.md.DwkJp9WN.lean.js new file mode 100644 index 0000000..3acc787 --- /dev/null +++ b/assets/zjw_babel-plugin-taro-page-hoc.md.DwkJp9WN.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/1.OTVfcfE_.png",p="/daydayup/assets/2.BxU4XP9_.jpg",o=JSON.parse('{"title":"如何解决 Taro 页面无法异步渲染问题","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/babel-plugin-taro-page-hoc.md","filePath":"zjw/babel-plugin-taro-page-hoc.md"}'),k={name:"zjw/babel-plugin-taro-page-hoc.md"},l=n("",23),t=[l];function e(E,r,d,g,y,F){return a(),i("div",null,t)}const C=s(k,[["render",e]]);export{o as __pageData,C as default}; diff --git a/assets/zjw_babel-plugin-taro-page-hoc.md.c5b8e797.js b/assets/zjw_babel-plugin-taro-page-hoc.md.c5b8e797.js deleted file mode 100644 index 668356e..0000000 --- a/assets/zjw_babel-plugin-taro-page-hoc.md.c5b8e797.js +++ /dev/null @@ -1,106 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const p="/daydayup/assets/1.360b622b.png",o="/daydayup/assets/2.0c42fe8e.jpg",h=JSON.parse('{"title":"如何解决 Taro 页面无法异步渲染问题","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/babel-plugin-taro-page-hoc.md"}'),e={name:"zjw/babel-plugin-taro-page-hoc.md"},t=l(`

如何解决 Taro 页面无法异步渲染问题

当使用 Taro 开发时,要实现拦截页面渲染做一些异步操作(例如单点登录,前置检查等)

举个自动登录场景,当访问页面链接上带有登录凭证 (ticket) 时,需要调用后端接口实现登录操作,在请求过程中展示一个 loading 样式,我们很容易想到通过入口组件(app.tsx)去拦截子元素(this.props.children)渲染实现

Taro H5 端实现

tsx
class App extends Component {
-  state = {
-    loading: false,
-  };
-
-  componentDidMount() {
-    const ticket = getQuery('ticket');
-
-    if (ticket) {
-      this.setState({ loading: true });
-      // 模拟异步过程
-      setTimeout(() => {
-        this.setState({ loading: false });
-      }, 2000);
-    }
-  }
-
-  render() {
-    return this.state.loading ? <div>loading</div> : this.props.children;
-  }
-}
-
-export default App;

当运行上面代码,会得到如下报错

Taro 遵守小程序设计,所以无法从入口组件拦截子元素的挂载
另一种方式是通过高阶组件去包裹每个页面实现

tsx
function hoc(Component) {
-  return (props) => {
-    const [loading, setLoading] = useState(false);
-
-    useEffect(() => {
-      const ticket = getQuery('ticket');
-
-      if (ticket) {
-        setLoading(true);
-        setTimeout(() => {
-          setLoading(false);
-        }, 2000);
-      }
-    }, []);
-
-    return loading ? <div>loading</div> : <Component {...props} />;
-  };
-}
-
-export default hoc;
-
-// 包裹页面组件
-export default hoc(Home);

但是这样带来一个问题,通过约定无法保证每个人新建页面时都会使用这个 hoc
既然运行时我们无法通过入口组件拦截整个页面,那是不是可以通过编译时解决

通过 Babel 编译时转换页面导出

可以实现一个 babel 插件,获取页面路径,然后匹配到页面组件,转换导出内容,包裹上自定义的 hoc 函数

主要实现流程

step1:获取页面路径

Taro 的页面路径配置在 app.config.ts 文件的 pages 字段,可以通过 babel 解析拿到这个值

tsx
const srcPath = path.join(process.cwd(), './src');
-const filenames = fs.readdirSync(srcPath);
-// 查找到app配置文件路径
-const appConfigPath = \`\${srcPath}/\${filenames.find((m) => m.includes('app.config.'))}\`;
-let pages: string[] = [];
-
-if (fs.existsSync(appConfigPath)) {
-  const code = fs.readFileSync(appConfigPath).toString();
-  // 读取文件,转换成 ast
-  const ast = parse(code, {
-    sourceType: 'module',
-    plugins: ['typescript'],
-  });
-  traverse(ast, {
-    // 查找数组元素
-    ArrayExpression(path) {
-      if (
-        t.isObjectProperty(path.parent) &&
-        t.isIdentifier(path.parent.key) &&
-        // 判断属性名为 pages
-        path.parent.key.name === 'pages'
-      ) {
-        // 获取 pages 的值
-        pages = pages.concat(path.node.elements.map((m: any) => m.value));
-      }
-    },
-  });
-}

这样我们就可以拿到 Taro 所有的页面路径

step2:遍历默认导出找到页面组件

tsx
{
-  ExportDefaultDeclaration(path, state) {
-    // 当前代码的文件名
-    const filename = state.filename;
-    // 通过排除config文件及匹配上一步中获取的路径找到页面组件
-    const isPage = filename.includes('.config.')
-      ? false
-      : pages.some((m) => state.filename.includes(m));
-    }
-  },
-}

step3:转换

tsx
{
-  ExportDefaultDeclaration(path, state) {
-    const hocSource='src/component/hoc'
-    const hocName='__hoc__'
-
-    if (!t.isClassDeclaration(path.node.declaration) && isPage) {
-      // 在前面插入导入语句
-      path.insertBefore(
-        t.importDeclaration(
-          [t.importDefaultSpecifier(t.identifier(hocName))],
-          t.stringLiteral(hocSource),
-        ),
-      );
-      // hoc 包裹导出
-      path.node.declaration = t.callExpression(t.identifier(hocName), [
-        path.node.declaration as any,
-      ]);
-    }
-  },
-}
-
-// 例如页面组件 Home 转换后输出
-⬇️     ⬇️     ⬇️
-import __hoc__ from 'src/component/hoc'
-export default __hoc__(Home)

更完整的实现:https://github.com/epeejs/babel-plugin-taro-page-hoc

`,23),c=[t];function r(F,y,D,A,i,C){return n(),a("div",null,c)}const f=s(e,[["render",r]]);export{h as __pageData,f as default}; diff --git a/assets/zjw_babel-plugin-taro-page-hoc.md.c5b8e797.lean.js b/assets/zjw_babel-plugin-taro-page-hoc.md.c5b8e797.lean.js deleted file mode 100644 index 6c69a6d..0000000 --- a/assets/zjw_babel-plugin-taro-page-hoc.md.c5b8e797.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const p="/daydayup/assets/1.360b622b.png",o="/daydayup/assets/2.0c42fe8e.jpg",h=JSON.parse('{"title":"如何解决 Taro 页面无法异步渲染问题","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/babel-plugin-taro-page-hoc.md"}'),e={name:"zjw/babel-plugin-taro-page-hoc.md"},t=l("",23),c=[t];function r(F,y,D,A,i,C){return n(),a("div",null,c)}const f=s(e,[["render",r]]);export{h as __pageData,f as default}; diff --git a/assets/zjw_bfc.md.Wc3HGD05.js b/assets/zjw_bfc.md.Wc3HGD05.js new file mode 100644 index 0000000..b71c3b9 --- /dev/null +++ b/assets/zjw_bfc.md.Wc3HGD05.js @@ -0,0 +1 @@ +import{_ as o,c as i,m as l,n as e,a4 as s,a,o as n}from"./chunks/framework.D5F7AbHZ.js";const d="_row_7kqxf_2",c="_float_7kqxf_12",r={row:d,float:c},G=JSON.parse('{"title":"块级格式化上下文(Block Formatting Context)","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/bfc.md","filePath":"zjw/bfc.md"}'),_={name:"zjw/bfc.md"},h=s('

块级格式化上下文(Block Formatting Context)

它决定了元素如何对其内容进行定位,以及与其它元素的关系和相互作用

简单解析:BFC 创建一个完全独立的布局环境,让空间里子元素不会影响到外面布局

用于定位与清除浮动

  • 包含内部浮动
  • 排除外部浮动
  • 阻止外边距重叠

创建 BFC 的主要方式

  • html 元素(display: flow-root)
  • 定位与布局方式,position:absolutefixed;float:值不为 none;display:inline-blocktableflexgrid
  • 溢出行为,overflow 值不为 visible 的块元素

扩展

两栏布局,一列固定宽度,一列自适应

  • float + BFC 或 margin-left
  • absolute + margin-left
  • inline-block 设置 width:<percentage>
  • table
  • flex
  • grid
',10),u=l("p",null,"float + BFC 或 margin-left (父元素高度塌陷问题)",-1),f=l("div",{style:{display:"flow-root"}},null,-1),b=l("p",null,"absolute + margin-left",-1),p=l("div",{style:{position:"absolute"}},null,-1),y=l("div",{style:{"margin-left":"100px"}},null,-1),m=[p,y],g=l("p",null,"inline-block(内联块之间空白符会当作一个字符,可以通过 font-size:0 消除)",-1),v=l("div",{style:{display:"inline-block"}},null,-1),k=l("div",{style:{display:"inline-block",width:"calc(100% - 100px)"}},null,-1),w=[v,k],x=l("p",null,"table(未设置宽的一列自动填充剩余空间)",-1),q=l("div",{style:{display:"table-cell"}},null,-1),$=l("div",{style:{display:"table-cell"}},null,-1),B=[q,$],C=l("p",null,"flex",-1),P=l("div",null,null,-1),F=l("div",{style:{"flex-grow":"1"}},null,-1),T=[P,F],z=l("p",null,"grid",-1),N=l("div",null,null,-1),S=l("div",null,null,-1),V=[N,S],j=l("blockquote",null,[l("p",null,[a("代码仓库:"),l("a",{href:"https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html",target:"_blank",rel:"noreferrer"},"https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html")])],-1);function A(t,E,I,M,J,O){return n(),i("div",null,[h,l("div",null,[u,l("div",{class:e(t.$style.row)},[l("div",{class:e(t.$style.float)},null,2),f],2),b,l("div",{class:e(t.$style.row),style:{position:"relative"}},m,2),g,l("div",{class:e(t.$style.row),style:{"font-size":"0"}},w,2),x,l("div",{class:e(t.$style.row),style:{display:"table",width:"100%"}},B,2),C,l("div",{class:e(t.$style.row),style:{display:"flex"}},T,2),z,l("div",{class:e(t.$style.row),style:{display:"grid","grid-template-columns":"100px auto"}},V,2)]),j])}const D={$style:r},H=o(_,[["render",A],["__cssModules",D]]);export{G as __pageData,H as default}; diff --git a/assets/zjw_bfc.md.Wc3HGD05.lean.js b/assets/zjw_bfc.md.Wc3HGD05.lean.js new file mode 100644 index 0000000..af5c227 --- /dev/null +++ b/assets/zjw_bfc.md.Wc3HGD05.lean.js @@ -0,0 +1 @@ +import{_ as o,c as i,m as l,n as e,a4 as s,a,o as n}from"./chunks/framework.D5F7AbHZ.js";const d="_row_7kqxf_2",c="_float_7kqxf_12",r={row:d,float:c},G=JSON.parse('{"title":"块级格式化上下文(Block Formatting Context)","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/bfc.md","filePath":"zjw/bfc.md"}'),_={name:"zjw/bfc.md"},h=s("",10),u=l("p",null,"float + BFC 或 margin-left (父元素高度塌陷问题)",-1),f=l("div",{style:{display:"flow-root"}},null,-1),b=l("p",null,"absolute + margin-left",-1),p=l("div",{style:{position:"absolute"}},null,-1),y=l("div",{style:{"margin-left":"100px"}},null,-1),m=[p,y],g=l("p",null,"inline-block(内联块之间空白符会当作一个字符,可以通过 font-size:0 消除)",-1),v=l("div",{style:{display:"inline-block"}},null,-1),k=l("div",{style:{display:"inline-block",width:"calc(100% - 100px)"}},null,-1),w=[v,k],x=l("p",null,"table(未设置宽的一列自动填充剩余空间)",-1),q=l("div",{style:{display:"table-cell"}},null,-1),$=l("div",{style:{display:"table-cell"}},null,-1),B=[q,$],C=l("p",null,"flex",-1),P=l("div",null,null,-1),F=l("div",{style:{"flex-grow":"1"}},null,-1),T=[P,F],z=l("p",null,"grid",-1),N=l("div",null,null,-1),S=l("div",null,null,-1),V=[N,S],j=l("blockquote",null,[l("p",null,[a("代码仓库:"),l("a",{href:"https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html",target:"_blank",rel:"noreferrer"},"https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html")])],-1);function A(t,E,I,M,J,O){return n(),i("div",null,[h,l("div",null,[u,l("div",{class:e(t.$style.row)},[l("div",{class:e(t.$style.float)},null,2),f],2),b,l("div",{class:e(t.$style.row),style:{position:"relative"}},m,2),g,l("div",{class:e(t.$style.row),style:{"font-size":"0"}},w,2),x,l("div",{class:e(t.$style.row),style:{display:"table",width:"100%"}},B,2),C,l("div",{class:e(t.$style.row),style:{display:"flex"}},T,2),z,l("div",{class:e(t.$style.row),style:{display:"grid","grid-template-columns":"100px auto"}},V,2)]),j])}const D={$style:r},H=o(_,[["render",A],["__cssModules",D]]);export{G as __pageData,H as default}; diff --git a/assets/zjw_bfc.md.bf39e00f.js b/assets/zjw_bfc.md.bf39e00f.js deleted file mode 100644 index 635b2c1..0000000 --- a/assets/zjw_bfc.md.bf39e00f.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as i,z as l,n as o,R as s,a,o as n}from"./chunks/framework.3876c926.js";const d="_row_7kqxf_2",c="_float_7kqxf_12",r={row:d,float:c},G=JSON.parse('{"title":"块级格式化上下文(Block Formatting Context)","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/bfc.md"}'),_={name:"zjw/bfc.md"},h=s('

块级格式化上下文(Block Formatting Context)

它决定了元素如何对其内容进行定位,以及与其它元素的关系和相互作用

简单解析:BFC 创建一个完全独立的布局环境,让空间里子元素不会影响到外面布局

用于定位与清除浮动

  • 包含内部浮动
  • 排除外部浮动
  • 阻止外边距重叠

创建 BFC 的主要方式

  • html 元素(display: flow-root)
  • 定位与布局方式,position:absolutefixed;float:值不为 none;display:inline-blocktableflexgrid
  • 溢出行为,overflow 值不为 visible 的块元素

扩展

两栏布局,一列固定宽度,一列自适应

  • float + BFC 或 margin-left
  • absolute + margin-left
  • inline-block 设置 width:<percentage>
  • table
  • flex
  • grid
',10),u=l("p",null,"float + BFC 或 margin-left (父元素高度塌陷问题)",-1),f=l("div",{style:{display:"flow-root"}},null,-1),p=l("p",null,"absolute + margin-left",-1),b=l("div",{style:{position:"absolute"}},null,-1),y=l("div",{style:{"margin-left":"100px"}},null,-1),m=[b,y],g=l("p",null,"inline-block(内联块之间空白符会当作一个字符,可以通过 font-size:0 消除)",-1),v=l("div",{style:{display:"inline-block"}},null,-1),k=l("div",{style:{display:"inline-block",width:"calc(100% - 100px)"}},null,-1),w=[v,k],x=l("p",null,"table(未设置宽的一列自动填充剩余空间)",-1),q=l("div",{style:{display:"table-cell"}},null,-1),$=l("div",{style:{display:"table-cell"}},null,-1),B=[q,$],C=l("p",null,"flex",-1),F=l("div",null,null,-1),P=l("div",{style:{"flex-grow":"1"}},null,-1),T=[F,P],z=l("p",null,"grid",-1),N=l("div",null,null,-1),S=l("div",null,null,-1),V=[N,S],A=l("blockquote",null,[l("p",null,[a("代码仓库:"),l("a",{href:"https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html",target:"_blank",rel:"noreferrer"},"https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html")])],-1);function j(t,E,I,M,R,J){return n(),i("div",null,[h,l("div",null,[u,l("div",{class:o(t.$style.row)},[l("div",{class:o(t.$style.float)},null,2),f],2),p,l("div",{class:o(t.$style.row),style:{position:"relative"}},m,2),g,l("div",{class:o(t.$style.row),style:{"font-size":"0"}},w,2),x,l("div",{class:o(t.$style.row),style:{display:"table",width:"100%"}},B,2),C,l("div",{class:o(t.$style.row),style:{display:"flex"}},T,2),z,l("div",{class:o(t.$style.row),style:{display:"grid","grid-template-columns":"100px auto"}},V,2)]),A])}const D={$style:r},H=e(_,[["render",j],["__cssModules",D]]);export{G as __pageData,H as default}; diff --git a/assets/zjw_bfc.md.bf39e00f.lean.js b/assets/zjw_bfc.md.bf39e00f.lean.js deleted file mode 100644 index 9ea4136..0000000 --- a/assets/zjw_bfc.md.bf39e00f.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as i,z as l,n as o,R as s,a,o as n}from"./chunks/framework.3876c926.js";const d="_row_7kqxf_2",c="_float_7kqxf_12",r={row:d,float:c},G=JSON.parse('{"title":"块级格式化上下文(Block Formatting Context)","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/bfc.md"}'),_={name:"zjw/bfc.md"},h=s("",10),u=l("p",null,"float + BFC 或 margin-left (父元素高度塌陷问题)",-1),f=l("div",{style:{display:"flow-root"}},null,-1),p=l("p",null,"absolute + margin-left",-1),b=l("div",{style:{position:"absolute"}},null,-1),y=l("div",{style:{"margin-left":"100px"}},null,-1),m=[b,y],g=l("p",null,"inline-block(内联块之间空白符会当作一个字符,可以通过 font-size:0 消除)",-1),v=l("div",{style:{display:"inline-block"}},null,-1),k=l("div",{style:{display:"inline-block",width:"calc(100% - 100px)"}},null,-1),w=[v,k],x=l("p",null,"table(未设置宽的一列自动填充剩余空间)",-1),q=l("div",{style:{display:"table-cell"}},null,-1),$=l("div",{style:{display:"table-cell"}},null,-1),B=[q,$],C=l("p",null,"flex",-1),F=l("div",null,null,-1),P=l("div",{style:{"flex-grow":"1"}},null,-1),T=[F,P],z=l("p",null,"grid",-1),N=l("div",null,null,-1),S=l("div",null,null,-1),V=[N,S],A=l("blockquote",null,[l("p",null,[a("代码仓库:"),l("a",{href:"https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html",target:"_blank",rel:"noreferrer"},"https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html")])],-1);function j(t,E,I,M,R,J){return n(),i("div",null,[h,l("div",null,[u,l("div",{class:o(t.$style.row)},[l("div",{class:o(t.$style.float)},null,2),f],2),p,l("div",{class:o(t.$style.row),style:{position:"relative"}},m,2),g,l("div",{class:o(t.$style.row),style:{"font-size":"0"}},w,2),x,l("div",{class:o(t.$style.row),style:{display:"table",width:"100%"}},B,2),C,l("div",{class:o(t.$style.row),style:{display:"flex"}},T,2),z,l("div",{class:o(t.$style.row),style:{display:"grid","grid-template-columns":"100px auto"}},V,2)]),A])}const D={$style:r},H=e(_,[["render",j],["__cssModules",D]]);export{G as __pageData,H as default}; diff --git a/assets/zjw_binary-search.md.4a6149b9.js b/assets/zjw_binary-search.md.4a6149b9.js deleted file mode 100644 index 7abae92..0000000 --- a/assets/zjw_binary-search.md.4a6149b9.js +++ /dev/null @@ -1,64 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const A=JSON.parse('{"title":"二分查找","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/binary-search.md"}'),p={name:"zjw/binary-search.md"},o=l(`

二分查找

基本实现

js
function binarySearch(nums, target) {
-  var left = 0,
-    right = nums.length - 1;
-
-  while (left <= right) {
-    var mid = left + Math.floor((right - left) / 2);
-
-    if (nums[mid] === target) {
-      return mid;
-    } else if (nums[mid] < target) {
-      left = mid + 1;
-    } else if (nums[mid] > target) {
-      right = mid - 1;
-    }
-  }
-
-  return -1;
-}

寻找左侧边界

js
function leftBound(nums, target) {
-  var left = 0,
-    right = nums.length - 1;
-
-  while (left <= right) {
-    var mid = left + Math.floor((right - left) / 2);
-
-    if (nums[mid] === target) {
-      // 向左收缩
-      right = mid - 1;
-    } else if (nums[mid] < target) {
-      left = mid + 1;
-    } else if (nums[mid] > target) {
-      right = mid - 1;
-    }
-  }
-
-  // left = right + 1 退出循环,mid = right + 1 所以 left = mid
-  if (left >= nums.length || nums[left] !== target) {
-    return -1;
-  }
-
-  return left;
-}

寻找右侧边界

js
function rightBound(nums, target) {
-  var left = 0,
-    right = nums.length - 1;
-
-  while (left <= right) {
-    var mid = left + Math.floor((right - left) / 2);
-
-    if (nums[mid] === target) {
-      // 向右收缩
-      left = mid + 1;
-    } else if (nums[mid] < target) {
-      left = mid + 1;
-    } else if (nums[mid] > target) {
-      right = mid - 1;
-    }
-  }
-
-  // right = left - 1 退出循环,mid = left - 1 所以 right = mid
-  if (right < 0 || nums[right] !== target) {
-    return -1;
-  }
-
-  return right;
-}
`,7),t=[o];function e(c,r,F,y,D,C){return a(),n("div",null,t)}const f=s(p,[["render",e]]);export{A as __pageData,f as default}; diff --git a/assets/zjw_binary-search.md.4a6149b9.lean.js b/assets/zjw_binary-search.md.4a6149b9.lean.js deleted file mode 100644 index d7e8551..0000000 --- a/assets/zjw_binary-search.md.4a6149b9.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const A=JSON.parse('{"title":"二分查找","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/binary-search.md"}'),p={name:"zjw/binary-search.md"},o=l("",7),t=[o];function e(c,r,F,y,D,C){return a(),n("div",null,t)}const f=s(p,[["render",e]]);export{A as __pageData,f as default}; diff --git a/assets/zjw_binary-search.md.qAilxVuS.js b/assets/zjw_binary-search.md.qAilxVuS.js new file mode 100644 index 0000000..cc07fb3 --- /dev/null +++ b/assets/zjw_binary-search.md.qAilxVuS.js @@ -0,0 +1,64 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"二分查找","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/binary-search.md","filePath":"zjw/binary-search.md"}'),h={name:"zjw/binary-search.md"},k=n(`

二分查找

基本实现

js
function binarySearch(nums, target) {
+  var left = 0,
+    right = nums.length - 1;
+
+  while (left <= right) {
+    var mid = left + Math.floor((right - left) / 2);
+
+    if (nums[mid] === target) {
+      return mid;
+    } else if (nums[mid] < target) {
+      left = mid + 1;
+    } else if (nums[mid] > target) {
+      right = mid - 1;
+    }
+  }
+
+  return -1;
+}

寻找左侧边界

js
function leftBound(nums, target) {
+  var left = 0,
+    right = nums.length - 1;
+
+  while (left <= right) {
+    var mid = left + Math.floor((right - left) / 2);
+
+    if (nums[mid] === target) {
+      // 向左收缩
+      right = mid - 1;
+    } else if (nums[mid] < target) {
+      left = mid + 1;
+    } else if (nums[mid] > target) {
+      right = mid - 1;
+    }
+  }
+
+  // left = right + 1 退出循环,mid = right + 1 所以 left = mid
+  if (left >= nums.length || nums[left] !== target) {
+    return -1;
+  }
+
+  return left;
+}

寻找右侧边界

js
function rightBound(nums, target) {
+  var left = 0,
+    right = nums.length - 1;
+
+  while (left <= right) {
+    var mid = left + Math.floor((right - left) / 2);
+
+    if (nums[mid] === target) {
+      // 向右收缩
+      left = mid + 1;
+    } else if (nums[mid] < target) {
+      left = mid + 1;
+    } else if (nums[mid] > target) {
+      right = mid - 1;
+    }
+  }
+
+  // right = left - 1 退出循环,mid = left - 1 所以 right = mid
+  if (right < 0 || nums[right] !== target) {
+    return -1;
+  }
+
+  return right;
+}
`,7),l=[k];function t(p,E,e,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",t]]);export{F as __pageData,c as default}; diff --git a/assets/zjw_binary-search.md.qAilxVuS.lean.js b/assets/zjw_binary-search.md.qAilxVuS.lean.js new file mode 100644 index 0000000..f2bbc20 --- /dev/null +++ b/assets/zjw_binary-search.md.qAilxVuS.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"二分查找","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/binary-search.md","filePath":"zjw/binary-search.md"}'),h={name:"zjw/binary-search.md"},k=n("",7),l=[k];function t(p,E,e,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",t]]);export{F as __pageData,c as default}; diff --git a/assets/zjw_binary-tree.md.DZw5h4Ni.js b/assets/zjw_binary-tree.md.DZw5h4Ni.js new file mode 100644 index 0000000..ac02b52 --- /dev/null +++ b/assets/zjw_binary-tree.md.DZw5h4Ni.js @@ -0,0 +1,79 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/12.RLMX_f8l.png",k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAADjCAIAAACek59lAAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAACLRJREFUeNrt3dty4zgMRVHblf//Zc9DqnpS3bajC0EBxNqPMx3FIrF5IFkR78/n8wYgNw9DABAVAFGBHnwZgj7c7/fP/8ANi7xzZ24oSlqiopifdHWNimKWjjoIJCr22fXrdL/7WXVCVIRbuneWhxwEWl/ECvbyR7TBEhUhlp6f3IhjQqJisFG0JCoC43SgYH8dSgNMVKSzlKtEBUBUcSpUiYqchN77cWOJqACI2qbvbfKriQp9r+6XqACIChAVAFEBEBUgKgCiAkQ1BABREcuFTyB4+IGoOMKEZ/o8NkhUAEQVquKUqMhzmRqk05w/TwdRAaJi6VDV9F5/UaOHWfUCdcjMntnGBhIVM2Lw8xHu97uklagYZtSxKf6wjY0bS0RFSHIO383NnjRExXGdXibeLp127QcnWomKfZZ+jrszfK4Q0UpUHHdjlKsby0O0EhVnlTgm7cnLWnVFVIqOcem8nHQlKqoKwFWiUrRG6bvDRFRB6sMTFQpdtBIVPbNItJ7HQ/nKOhy7lUvUlRVdL3xEK1Gvl2pjnjQv4tAHNhYuZqIGKrqxgLrdcdl7vnOerCJqXz+3VE/bbnDLiZ8f82XGk6jzLL35k8490Tr57wqIuqyi70Lgz39/97PP59NtlQ/ROvzvaRcYYaLunvWEj8Iv37AMf0MFUVnaaJmfo+vwdz4RtcvlU55jGvMmY+7JpHk3JGhpzIkauLQPnGwP0xlzomavGK4ac6ICK0PUqUu7UDXmRI2d2kIHN+brjTlRAaJW7sGa/GpjTlQ9mO7XmBMV0PoCICoAogJEBUBUAEQFiAqAqLFc+G1424cfjDlRTzHh+TJ/iWrMiQpofS3w4tSYEzXPJVPQ1Hr7tjEnqmUYWt9+C/xw7cXp/FBdYMyJOq9uvID7ElfXWBmJusmo83Wjhb5kxJYZdlta7Jtd+6DMH/mx+/1ofVss5AdWaFl68gaBMZeonyb4e2Qi9uoUqocH7Xv31A/j9iGT/51copavkoitr3+WGlG3LJRDRv7lVPoedcG1/Pl8jppX78g/0wMPPE65kZeob5vegRP87wGF6vYpGDXmuyY6G1/qY9da/uf/jrr+/HzFZQqGj/mojpqo6W5gRPRmRcvl2ikYvqIVWiVdo17fCzE21MZLfgVR15m/uBvLHTqabqtkd1GvnSdXp1cNSLlV8sHSJM7Y0M0qSdS8cyZUMwxF/lWyr6gJ56ZhqLr0IGqZpleouvQgajFJWoVqhpOtclepo6gJ58P7zQw+UfM2vZ1DNedpph38vq1vNkvtamHwiVosrJYP1cwnmPOzPXpamnMFbfhQYZ6JSD74HVvfzH1OhwY47RqUefC7iFoxoJYP1cxiZBv8RzdL80fW2qGafPVJO/i9Wt96755bN1Tzz0WqwV//DQ8Va33V9z+UOKmfg7/lFRBzXgr71cfSoi3ld63UfUXwy9e4JZ+LXwd846QMLMJ7kyuiiqd5OH8ynGz1l4+PfSXi+XOvLer2UWt4dXrVKc9/U9zMVX5U9773lO91G8L17l5cXg09V5aNoRqxucn2Uy4m6nrVsP0EJ1RDq5Xl/HntTsUTe9Xd5UzyE5xZDRNWlp/3US9cWc6f4OQNOGuIunw13OK3Bo0434ory/lzPP/ZDhzzXvR7Z9VwyTGrryznP9uoT7X3sI8Olt7G7ZA7hyHVEFroL1eBw7/x5c9mmJ0gS2/79/V71LJUNYRWw8IrS6p5OTA7lZ71VQ1JXF1gZSlHXlFVQ7d5STU70ae592QfqkE14MIubOPBbWmhGqwsWl/VYGUpeCsh4TaQD9WgGnBtkWz5FVpf1WBl0fqqBitLzX6HqKoBWEtUAEQFiAqAqABRARAVyM2F3wW8+9VEVQ34xIRv17f8CqKqBiuL1lc1WFkS/4oMn2TjwR+qQTXg11U7aAC3/6GY1lc1WFm0vqrBypJmZcl2srtO86EaVAPmz85q7/VVDdksbb6yRLzGsXDrqxoyN/a1VpaxJ/v9IQ+f8sufLb/3TNCmDDktrbVDRMU9OC6fnWV3c4soONXQc2UJ7VDsj6oaplbD2itLnquS25I7jsdVwy39pvSTq2H5lSXJ7Bw4waqinq+G5Vfumae2/B7To0758AmWF3Xt4phcDX1WlpknPuYO6PJtxruB+3Pk6nuupzqLQitLseWgSp78/JyHq+F+//983x0crVYWoo6c7Hcf8mQ11ApVdOardNM78A9BuIrMFNgfNU4hcoKoxVzyJ28gal5nhCqImrfpFaogarGsE6ogarFME6ogat6mV6iCqMW0Eaogal49hCqImrfpFaogarFYE6ogarH4Eqogat6mV6iCqMUMEaogal4ThCqImrfpFaogarEEE6ogarGkEqpoKmqJpleoQqIWk0Goop2ohYpeqKKpqHVfpStU0bH1rWKpUEU7UauHklDFhXzNr/JaMfW9EcYBb6UxRhoUWk+Zt/eemaWkRS5RZ+5DUa7vpSuuF/VAKS+/ay1XkUXUtdvCoM3O6Yq9PK619Fb2buoW2Z7P58t/5gYyJiXqh1J7V5ovdxDOnDMvP+dfuyGfPJT6Q6CoQ8ouee1G3K9e4x44arS+owSr1RMOMYqWmJSoTXLmr48U+g0WexGSqMvnTLRIfx3QjSUMFjWugtUuMEbUJjkzpy+1MGFq67s2oT25S1OMF1XOAMUSdeGcuXBpsCpB65t0ydD9YqSocgYolqhyBtD6AiAqQFQARAWICoCoAIg6jAu/GfKlFIh6hAnPWnicAyNFlTNAsURtlTOhn0ScQus7LMODdPLaJISLKmeApKK2ypnokxWn0Ppmd5WliBW1ec503mUHKSrwzAu4g7ZsTGLpwE037D2DK1vftXNm1KYbLMXsRG2YM3v3rdvysyxFuKi3Hru5BcU+RTFP1J45s/be6lhT1LY5c+yUKYorRe2cM7+eODmRSFQ5A5QRVc4AlUQFEIFnfQGiAiAq0IT/AEpCD0QKLIdHAAAAAElFTkSuQmCC",l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL8AAADiCAIAAACQmIF4AAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAABx5JREFUeNrtndty5CoUQxsq///LmYc5lUqd6XRom4ukvfQ87bFhIWEHNu3z8/OB0CV1mgBBD4IeZKUPmmBQrbXX/6DgDLIxa77PTVmSoGcmNNUYYt6zCp1ZF8F7Qrj5ta1++m1qI0PP793/bhNNuQjJVRGdn34SmWJ4z4+9e79lVlwT7zHQlG7mnaui8Uzs9f9dKiy/oGchOvEAQQ+CHlXjybYfvGfTJJfvPQhBj0CCZIQX3rMvWfLCC3oQ9CDoQdCDoAch6EHQg6AHQU+MDn6+y/hyiPf8pw1/Oshb2gw9CHrkvSFyT0V1evas29qzBg16EPRgP98ulWo8D3YDrguXCvuR8Z5Ck1y8Zzcx19qnSCEEvOeX3r1gQnV8C+95o+8v1+9JtR+qXq41lb+4pLoRybUwdP51mjCMSK7nXfvVLNf6+zU3MW0OPaO9e39Ok/fZEHq2GkMYQMx7tmZKWDGN6t5zajqSMQ0qTc9XFx5phACAOuic0ndiTCOsg47I2nhHgDro4ECF5j03v7tozjZM50BO9Nw/J0u5kxwBMqBn1jlZ+t1z9h0wkJ4VUwHZR37rYRWeojk25Z11NpGj5dRDNXEPv9NGXstDHQ+y7KnoPKzOyTI9yLIpv3pMGVLiDmR9kKU6PbNuT3NphHtA9wroPCSXRgQEdJP18BU3puNAGQdZsjpMQqYHWarQU+qcrJiA7qkDUWeAbh4nOwEiuZA5PXXOyQoLaDnvqXNOVkBAk1wIehyUF9DQQ0BDDyK5EPQg6EEIelA4PZyTBT1zxDlZ0IOgJ9F+DhpPXkCr0FPtnKyMgCa5UAQ9S+2ntaa2KScgoLW8ZxFA+zcbFAlo9eTi7Vq6dwQ/l8Wfk7XUG3YGtM3XwonnZElVS30sOAl12zjR8p7Bdrx/TtZxB8rYS9rEKz/OGpdPL6gGkF1Ad2V0Hgu26OpUuF16kOWegSHhPSN+cLmnf+0kQQe6GdC16ve8VSt0vF5za6+eTq1A6RQj3PwsH3atNt5Ag//yNWRG2v8UTce3Dzy8XgVnaqY6dZ5sCXCLw7kb3RZ53uwedTos4JysQvQIjnUAcvIewZgAIAN6lDuGSY80PUbzU+xHix4LdMgvRXqMXAeAtOix+6ACQCr0mH6LAyCteY/dGw0AHabHvdEB6Bg9GX8/4iPQAXoi//SI/eygJwwd8msfPZGuA0DP+3riFpD4GQMrge7Sc2fkBbQ4AF2hx3HFPwBJ0DN9Q2cYQBZrkA/QY71XTfPtPYmkof1ylx8+FaCbZpzjwW/t/E0qonMKnah3iMG9+I71QXZyUzPHh+iZ9YRqdSf3O2iYDfedfbz5rHk1dB7zqq6Ies8Ge7BzIHL8De9BG2a7Ga9dfb8reOUXOX7FewLOmtcPWXeASC40g568s+YtZvfW9tNPJYvXtJEcJ7kQ9KSHqVF4QY9EspiGF/Qg6EHQg6AHQQ9C4/TknTWPznhPxlnziORChvQEnDVvGqZGOd5f3Lf7WfNGrJvmOMmF5tGz2n5MN+UUz/E3vCfmrPm58w9y/GJyTWk4uxG2/4btvnuNri1srV1uzae/dfxCuDrHc2bNAWfNr+jXsjn+/BGo3/P6zp8Wd2Iv6RA9cwec3RvW1w1Tj+b6rLnU3tvx3p2V474ToDalFljMq8TripYrctzagVbVaza14n8za0OOj/ynmvoo8mViorOOFEm9fANmFbFYmTWSWatz3LQGNPRM6LwpOe4I0Afo3E/kWe+kVGCJne4UvyXoUc8Lu3Oc8B6tqYYXQKXp0ewe13XNZBZ8Q4/9WHfJr6L0eG0Jkr3bXhwd5UmG/gSogw5mCT2Zrzbi+VWLHsdFWMoA9ZroUC0aepIzy8I+q9DjvnNKM796NXR8jUcQoFrJ5b4UTu3+8+lJLXGn8Fy9DjoZa3Cl8quDDgBBT/J0R/aJFFfFj4+nDXv2LCz2FExaO3IudHnS9ii7aO4irXC5utTrH2bveZ1bpMvSe9ZtC8+jZ5Y3J9Dzrmd8D/jIkhTrBtiipjg34ZpRBKlCZimX3jpDD6W4bkIjUvbvAD2UAdxmqKuH1vl3rlJl7e48y4VnnFUwT8V7lpaZDahh6+XNPQadx66zAfBmoeRCewbYiqHVA9olxn7svPmM9yydkVBLb5tIrirGs8J++pGmOfsKU2SmvOHiPaxpCC+Sq3psQQ/K92boQdCDoAdBD4IehKAH2dNz8PMdXw6jvGfDl7E6G0lJLhR9oraXN7gbj5E391PDa93BsEx6SK7ScvHmrfSsth9r43H05h7TRmRWxeSaAlDk5ht9b2Yfu/qkZ9azrLis0J6KC0MttQSCizc71e8Z+W0GOi7eHFg7LNhy1GpoSFS9lK2NJdssdev3zGUo/s2c2mGT26vatxzqFqJAb4aeQIy29Sn0oOvib+wIehD0IOhB0IPQb/oDyjOPVt7RHbIAAAAASUVORK5CYII=",p="/daydayup/assets/4.B_IXwkaL.jpg",C=JSON.parse('{"title":"二叉树","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/binary-tree.md","filePath":"zjw/binary-tree.md"}'),t={name:"zjw/binary-tree.md"},e=n('

二叉树

  • 满二叉树(完美二叉树):除了叶节点,每个节点度都为 2
  • 完全二叉树:除去最后一层为满二叉树,且最后一层节点从左到右分布
  • 完满二叉树:除了叶子结点之外的每一个结点都有两个孩子结点

满二叉树

完全二叉树

完满二叉树

高度为 H 的一棵满 K 叉树,其节点总数为等比数列求和公式 (K^H - 1)/(K - 1),用 Big O 表示就是 O(K^H)

满二叉树的节点数为 2^h - 1,节点总数为 n 的满二叉树高度为 log (n+1)

完全二叉树层序遍历结果还原

tree.jpg

补充成完全二叉树的层序遍历结果:[3,9,20,null,null,15,7]

代码实现

js
function TreeNode(val, left, right) {
+  this.val = val === undefined ? 0 : val;
+  this.left = left === undefined ? null : left;
+  this.right = right === undefined ? null : right;
+}
+
+function build(levelOrder) {
+  var p = 0;
+  var track = [];
+  var res = new TreeNode(levelOrder[p]);
+
+  track.push(res);
+
+  while (p < levelOrder.length - 1) {
+    var n = track.length;
+
+    for (var i = 0; i < n; i++) {
+      var node = track.shift();
+
+      if (node) {
+        node.left = levelOrder[p + 1] ? new TreeNode(levelOrder[p + 1]) : null;
+        node.right = levelOrder[p + 2] ? new TreeNode(levelOrder[p + 2]) : null;
+        track.push(node.left, node.right);
+        // 无节点
+      } else {
+        track.push(null, null);
+      }
+      p += 2;
+    }
+  }
+
+  return res;
+}
+
+console.log(build([3, 9, 20, null, null, 15, 7]));

中序+后序遍历结果还原

js
function build(inorder, inStart, inEnd, postorder, postStart, postEnd) {
+  if (inStart > inEnd) return null;
+
+  var rootVal = postorder[postEnd];
+  // rootVal在中序中的索引
+  var index = 0;
+
+  for (var i = inStart; i <= inEnd; i++) {
+    if (inorder[i] === rootVal) {
+      index = i;
+      break;
+    }
+  }
+  var leftSize = index - inStart;
+  var root = new TreeNode(rootVal);
+  root.left = build(inorder, inStart, index - 1, postorder, postStart, postStart + leftSize - 1);
+  root.right = build(inorder, index + 1, inEnd, postorder, postStart + leftSize, postEnd - 1);
+  return root;
+}
+
+function buildTree(inorder, postorder) {
+  return build(inorder, 0, inorder.length - 1, postorder, 0, postorder.length - 1);
+}

中序+前序遍历结果还原

js
function build(preorder, preStart, preEnd, inorder, inStart, inEnd) {
+  if (preStart > preEnd) return null;
+
+  var rootVal = preorder[preStart];
+  // rootVal在中序中的索引
+  var index = 0;
+
+  for (var i = inStart; i <= inEnd; i++) {
+    if (inorder[i] === rootVal) {
+      index = i;
+      break;
+    }
+  }
+  var leftSize = index - inStart;
+  var root = new TreeNode(rootVal);
+  root.left = build(preorder, preStart + 1, preStart + leftSize, inorder, inStart, index - 1);
+  root.right = build(preorder, preStart + leftSize + 1, preEnd, inorder, index + 1, inEnd);
+  return root;
+}
+
+function buildTree(preorder, inorder) {
+  return build(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1);
+}
`,14),E=[e];function r(d,g,y,F,A,o){return a(),i("div",null,E)}const D=s(t,[["render",r]]);export{C as __pageData,D as default}; diff --git a/assets/zjw_binary-tree.md.DZw5h4Ni.lean.js b/assets/zjw_binary-tree.md.DZw5h4Ni.lean.js new file mode 100644 index 0000000..52aeaba --- /dev/null +++ b/assets/zjw_binary-tree.md.DZw5h4Ni.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/12.RLMX_f8l.png",k="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAADjCAIAAACek59lAAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAACLRJREFUeNrt3dty4zgMRVHblf//Zc9DqnpS3bajC0EBxNqPMx3FIrF5IFkR78/n8wYgNw9DABAVAFGBHnwZgj7c7/fP/8ANi7xzZ24oSlqiopifdHWNimKWjjoIJCr22fXrdL/7WXVCVIRbuneWhxwEWl/ECvbyR7TBEhUhlp6f3IhjQqJisFG0JCoC43SgYH8dSgNMVKSzlKtEBUBUcSpUiYqchN77cWOJqACI2qbvbfKriQp9r+6XqACIChAVAFEBEBUgKgCiAkQ1BABREcuFTyB4+IGoOMKEZ/o8NkhUAEQVquKUqMhzmRqk05w/TwdRAaJi6VDV9F5/UaOHWfUCdcjMntnGBhIVM2Lw8xHu97uklagYZtSxKf6wjY0bS0RFSHIO383NnjRExXGdXibeLp127QcnWomKfZZ+jrszfK4Q0UpUHHdjlKsby0O0EhVnlTgm7cnLWnVFVIqOcem8nHQlKqoKwFWiUrRG6bvDRFRB6sMTFQpdtBIVPbNItJ7HQ/nKOhy7lUvUlRVdL3xEK1Gvl2pjnjQv4tAHNhYuZqIGKrqxgLrdcdl7vnOerCJqXz+3VE/bbnDLiZ8f82XGk6jzLL35k8490Tr57wqIuqyi70Lgz39/97PP59NtlQ/ROvzvaRcYYaLunvWEj8Iv37AMf0MFUVnaaJmfo+vwdz4RtcvlU55jGvMmY+7JpHk3JGhpzIkauLQPnGwP0xlzomavGK4ac6ICK0PUqUu7UDXmRI2d2kIHN+brjTlRAaJW7sGa/GpjTlQ9mO7XmBMV0PoCICoAogJEBUBUAEQFiAqAqLFc+G1424cfjDlRTzHh+TJ/iWrMiQpofS3w4tSYEzXPJVPQ1Hr7tjEnqmUYWt9+C/xw7cXp/FBdYMyJOq9uvID7ElfXWBmJusmo83Wjhb5kxJYZdlta7Jtd+6DMH/mx+/1ofVss5AdWaFl68gaBMZeonyb4e2Qi9uoUqocH7Xv31A/j9iGT/51copavkoitr3+WGlG3LJRDRv7lVPoedcG1/Pl8jppX78g/0wMPPE65kZeob5vegRP87wGF6vYpGDXmuyY6G1/qY9da/uf/jrr+/HzFZQqGj/mojpqo6W5gRPRmRcvl2ikYvqIVWiVdo17fCzE21MZLfgVR15m/uBvLHTqabqtkd1GvnSdXp1cNSLlV8sHSJM7Y0M0qSdS8cyZUMwxF/lWyr6gJ56ZhqLr0IGqZpleouvQgajFJWoVqhpOtclepo6gJ58P7zQw+UfM2vZ1DNedpph38vq1vNkvtamHwiVosrJYP1cwnmPOzPXpamnMFbfhQYZ6JSD74HVvfzH1OhwY47RqUefC7iFoxoJYP1cxiZBv8RzdL80fW2qGafPVJO/i9Wt96755bN1Tzz0WqwV//DQ8Va33V9z+UOKmfg7/lFRBzXgr71cfSoi3ld63UfUXwy9e4JZ+LXwd846QMLMJ7kyuiiqd5OH8ynGz1l4+PfSXi+XOvLer2UWt4dXrVKc9/U9zMVX5U9773lO91G8L17l5cXg09V5aNoRqxucn2Uy4m6nrVsP0EJ1RDq5Xl/HntTsUTe9Xd5UzyE5xZDRNWlp/3US9cWc6f4OQNOGuIunw13OK3Bo0434ory/lzPP/ZDhzzXvR7Z9VwyTGrryznP9uoT7X3sI8Olt7G7ZA7hyHVEFroL1eBw7/x5c9mmJ0gS2/79/V71LJUNYRWw8IrS6p5OTA7lZ71VQ1JXF1gZSlHXlFVQ7d5STU70ae592QfqkE14MIubOPBbWmhGqwsWl/VYGUpeCsh4TaQD9WgGnBtkWz5FVpf1WBl0fqqBitLzX6HqKoBWEtUAEQFiAqAqABRARAVyM2F3wW8+9VEVQ34xIRv17f8CqKqBiuL1lc1WFkS/4oMn2TjwR+qQTXg11U7aAC3/6GY1lc1WFm0vqrBypJmZcl2srtO86EaVAPmz85q7/VVDdksbb6yRLzGsXDrqxoyN/a1VpaxJ/v9IQ+f8sufLb/3TNCmDDktrbVDRMU9OC6fnWV3c4soONXQc2UJ7VDsj6oaplbD2itLnquS25I7jsdVwy39pvSTq2H5lSXJ7Bw4waqinq+G5Vfumae2/B7To0758AmWF3Xt4phcDX1WlpknPuYO6PJtxruB+3Pk6nuupzqLQitLseWgSp78/JyHq+F+//983x0crVYWoo6c7Hcf8mQ11ApVdOardNM78A9BuIrMFNgfNU4hcoKoxVzyJ28gal5nhCqImrfpFaogarGsE6ogarFME6ogat6mV6iCqMW0Eaogal49hCqImrfpFaogarFYE6ogarH4Eqogat6mV6iCqMUMEaogal4ThCqImrfpFaogarEEE6ogarGkEqpoKmqJpleoQqIWk0Goop2ohYpeqKKpqHVfpStU0bH1rWKpUEU7UauHklDFhXzNr/JaMfW9EcYBb6UxRhoUWk+Zt/eemaWkRS5RZ+5DUa7vpSuuF/VAKS+/ay1XkUXUtdvCoM3O6Yq9PK619Fb2buoW2Z7P58t/5gYyJiXqh1J7V5ovdxDOnDMvP+dfuyGfPJT6Q6CoQ8ouee1G3K9e4x44arS+owSr1RMOMYqWmJSoTXLmr48U+g0WexGSqMvnTLRIfx3QjSUMFjWugtUuMEbUJjkzpy+1MGFq67s2oT25S1OMF1XOAMUSdeGcuXBpsCpB65t0ydD9YqSocgYolqhyBtD6AiAqQFQARAWICoCoAIg6jAu/GfKlFIh6hAnPWnicAyNFlTNAsURtlTOhn0ScQus7LMODdPLaJISLKmeApKK2ypnokxWn0Ppmd5WliBW1ec503mUHKSrwzAu4g7ZsTGLpwE037D2DK1vftXNm1KYbLMXsRG2YM3v3rdvysyxFuKi3Hru5BcU+RTFP1J45s/be6lhT1LY5c+yUKYorRe2cM7+eODmRSFQ5A5QRVc4AlUQFEIFnfQGiAiAq0IT/AEpCD0QKLIdHAAAAAElFTkSuQmCC",l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL8AAADiCAIAAACQmIF4AAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAABx5JREFUeNrtndty5CoUQxsq///LmYc5lUqd6XRom4ukvfQ87bFhIWEHNu3z8/OB0CV1mgBBD4IeZKUPmmBQrbXX/6DgDLIxa77PTVmSoGcmNNUYYt6zCp1ZF8F7Qrj5ta1++m1qI0PP793/bhNNuQjJVRGdn34SmWJ4z4+9e79lVlwT7zHQlG7mnaui8Uzs9f9dKiy/oGchOvEAQQ+CHlXjybYfvGfTJJfvPQhBj0CCZIQX3rMvWfLCC3oQ9CDoQdCDoAch6EHQg6AHQU+MDn6+y/hyiPf8pw1/Oshb2gw9CHrkvSFyT0V1evas29qzBg16EPRgP98ulWo8D3YDrguXCvuR8Z5Ck1y8Zzcx19qnSCEEvOeX3r1gQnV8C+95o+8v1+9JtR+qXq41lb+4pLoRybUwdP51mjCMSK7nXfvVLNf6+zU3MW0OPaO9e39Ok/fZEHq2GkMYQMx7tmZKWDGN6t5zajqSMQ0qTc9XFx5phACAOuic0ndiTCOsg47I2nhHgDro4ECF5j03v7tozjZM50BO9Nw/J0u5kxwBMqBn1jlZ+t1z9h0wkJ4VUwHZR37rYRWeojk25Z11NpGj5dRDNXEPv9NGXstDHQ+y7KnoPKzOyTI9yLIpv3pMGVLiDmR9kKU6PbNuT3NphHtA9wroPCSXRgQEdJP18BU3puNAGQdZsjpMQqYHWarQU+qcrJiA7qkDUWeAbh4nOwEiuZA5PXXOyQoLaDnvqXNOVkBAk1wIehyUF9DQQ0BDDyK5EPQg6EEIelA4PZyTBT1zxDlZ0IOgJ9F+DhpPXkCr0FPtnKyMgCa5UAQ9S+2ntaa2KScgoLW8ZxFA+zcbFAlo9eTi7Vq6dwQ/l8Wfk7XUG3YGtM3XwonnZElVS30sOAl12zjR8p7Bdrx/TtZxB8rYS9rEKz/OGpdPL6gGkF1Ad2V0Hgu26OpUuF16kOWegSHhPSN+cLmnf+0kQQe6GdC16ve8VSt0vF5za6+eTq1A6RQj3PwsH3atNt5Ag//yNWRG2v8UTce3Dzy8XgVnaqY6dZ5sCXCLw7kb3RZ53uwedTos4JysQvQIjnUAcvIewZgAIAN6lDuGSY80PUbzU+xHix4LdMgvRXqMXAeAtOix+6ACQCr0mH6LAyCteY/dGw0AHabHvdEB6Bg9GX8/4iPQAXoi//SI/eygJwwd8msfPZGuA0DP+3riFpD4GQMrge7Sc2fkBbQ4AF2hx3HFPwBJ0DN9Q2cYQBZrkA/QY71XTfPtPYmkof1ylx8+FaCbZpzjwW/t/E0qonMKnah3iMG9+I71QXZyUzPHh+iZ9YRqdSf3O2iYDfedfbz5rHk1dB7zqq6Ies8Ge7BzIHL8De9BG2a7Ga9dfb8reOUXOX7FewLOmtcPWXeASC40g568s+YtZvfW9tNPJYvXtJEcJ7kQ9KSHqVF4QY9EspiGF/Qg6EHQg6AHQQ9C4/TknTWPznhPxlnziORChvQEnDVvGqZGOd5f3Lf7WfNGrJvmOMmF5tGz2n5MN+UUz/E3vCfmrPm58w9y/GJyTWk4uxG2/4btvnuNri1srV1uzae/dfxCuDrHc2bNAWfNr+jXsjn+/BGo3/P6zp8Wd2Iv6RA9cwec3RvW1w1Tj+b6rLnU3tvx3p2V474ToDalFljMq8TripYrctzagVbVaza14n8za0OOj/ynmvoo8mViorOOFEm9fANmFbFYmTWSWatz3LQGNPRM6LwpOe4I0Afo3E/kWe+kVGCJne4UvyXoUc8Lu3Oc8B6tqYYXQKXp0ewe13XNZBZ8Q4/9WHfJr6L0eG0Jkr3bXhwd5UmG/gSogw5mCT2Zrzbi+VWLHsdFWMoA9ZroUC0aepIzy8I+q9DjvnNKM796NXR8jUcQoFrJ5b4UTu3+8+lJLXGn8Fy9DjoZa3Cl8quDDgBBT/J0R/aJFFfFj4+nDXv2LCz2FExaO3IudHnS9ii7aO4irXC5utTrH2bveZ1bpMvSe9ZtC8+jZ5Y3J9Dzrmd8D/jIkhTrBtiipjg34ZpRBKlCZimX3jpDD6W4bkIjUvbvAD2UAdxmqKuH1vl3rlJl7e48y4VnnFUwT8V7lpaZDahh6+XNPQadx66zAfBmoeRCewbYiqHVA9olxn7svPmM9yydkVBLb5tIrirGs8J++pGmOfsKU2SmvOHiPaxpCC+Sq3psQQ/K92boQdCDoAdBD4IehKAH2dNz8PMdXw6jvGfDl7E6G0lJLhR9oraXN7gbj5E391PDa93BsEx6SK7ScvHmrfSsth9r43H05h7TRmRWxeSaAlDk5ht9b2Yfu/qkZ9azrLis0J6KC0MttQSCizc71e8Z+W0GOi7eHFg7LNhy1GpoSFS9lK2NJdssdev3zGUo/s2c2mGT26vatxzqFqJAb4aeQIy29Sn0oOvib+wIehD0IOhB0IPQb/oDyjOPVt7RHbIAAAAASUVORK5CYII=",p="/daydayup/assets/4.B_IXwkaL.jpg",C=JSON.parse('{"title":"二叉树","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/binary-tree.md","filePath":"zjw/binary-tree.md"}'),t={name:"zjw/binary-tree.md"},e=n("",14),E=[e];function r(d,g,y,F,A,o){return a(),i("div",null,E)}const D=s(t,[["render",r]]);export{C as __pageData,D as default}; diff --git a/assets/zjw_binary-tree.md.b08eff68.js b/assets/zjw_binary-tree.md.b08eff68.js deleted file mode 100644 index c538694..0000000 --- a/assets/zjw_binary-tree.md.b08eff68.js +++ /dev/null @@ -1,79 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const p="/daydayup/assets/12.ed740cde.png",o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAADjCAIAAACek59lAAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAACLRJREFUeNrt3dty4zgMRVHblf//Zc9DqnpS3bajC0EBxNqPMx3FIrF5IFkR78/n8wYgNw9DABAVAFGBHnwZgj7c7/fP/8ANi7xzZ24oSlqiopifdHWNimKWjjoIJCr22fXrdL/7WXVCVIRbuneWhxwEWl/ECvbyR7TBEhUhlp6f3IhjQqJisFG0JCoC43SgYH8dSgNMVKSzlKtEBUBUcSpUiYqchN77cWOJqACI2qbvbfKriQp9r+6XqACIChAVAFEBEBUgKgCiAkQ1BABREcuFTyB4+IGoOMKEZ/o8NkhUAEQVquKUqMhzmRqk05w/TwdRAaJi6VDV9F5/UaOHWfUCdcjMntnGBhIVM2Lw8xHu97uklagYZtSxKf6wjY0bS0RFSHIO383NnjRExXGdXibeLp127QcnWomKfZZ+jrszfK4Q0UpUHHdjlKsby0O0EhVnlTgm7cnLWnVFVIqOcem8nHQlKqoKwFWiUrRG6bvDRFRB6sMTFQpdtBIVPbNItJ7HQ/nKOhy7lUvUlRVdL3xEK1Gvl2pjnjQv4tAHNhYuZqIGKrqxgLrdcdl7vnOerCJqXz+3VE/bbnDLiZ8f82XGk6jzLL35k8490Tr57wqIuqyi70Lgz39/97PP59NtlQ/ROvzvaRcYYaLunvWEj8Iv37AMf0MFUVnaaJmfo+vwdz4RtcvlU55jGvMmY+7JpHk3JGhpzIkauLQPnGwP0xlzomavGK4ac6ICK0PUqUu7UDXmRI2d2kIHN+brjTlRAaJW7sGa/GpjTlQ9mO7XmBMV0PoCICoAogJEBUBUAEQFiAqAqLFc+G1424cfjDlRTzHh+TJ/iWrMiQpofS3w4tSYEzXPJVPQ1Hr7tjEnqmUYWt9+C/xw7cXp/FBdYMyJOq9uvID7ElfXWBmJusmo83Wjhb5kxJYZdlta7Jtd+6DMH/mx+/1ofVss5AdWaFl68gaBMZeonyb4e2Qi9uoUqocH7Xv31A/j9iGT/51copavkoitr3+WGlG3LJRDRv7lVPoedcG1/Pl8jppX78g/0wMPPE65kZeob5vegRP87wGF6vYpGDXmuyY6G1/qY9da/uf/jrr+/HzFZQqGj/mojpqo6W5gRPRmRcvl2ikYvqIVWiVdo17fCzE21MZLfgVR15m/uBvLHTqabqtkd1GvnSdXp1cNSLlV8sHSJM7Y0M0qSdS8cyZUMwxF/lWyr6gJ56ZhqLr0IGqZpleouvQgajFJWoVqhpOtclepo6gJ58P7zQw+UfM2vZ1DNedpph38vq1vNkvtamHwiVosrJYP1cwnmPOzPXpamnMFbfhQYZ6JSD74HVvfzH1OhwY47RqUefC7iFoxoJYP1cxiZBv8RzdL80fW2qGafPVJO/i9Wt96755bN1Tzz0WqwV//DQ8Va33V9z+UOKmfg7/lFRBzXgr71cfSoi3ld63UfUXwy9e4JZ+LXwd846QMLMJ7kyuiiqd5OH8ynGz1l4+PfSXi+XOvLer2UWt4dXrVKc9/U9zMVX5U9773lO91G8L17l5cXg09V5aNoRqxucn2Uy4m6nrVsP0EJ1RDq5Xl/HntTsUTe9Xd5UzyE5xZDRNWlp/3US9cWc6f4OQNOGuIunw13OK3Bo0434ory/lzPP/ZDhzzXvR7Z9VwyTGrryznP9uoT7X3sI8Olt7G7ZA7hyHVEFroL1eBw7/x5c9mmJ0gS2/79/V71LJUNYRWw8IrS6p5OTA7lZ71VQ1JXF1gZSlHXlFVQ7d5STU70ae592QfqkE14MIubOPBbWmhGqwsWl/VYGUpeCsh4TaQD9WgGnBtkWz5FVpf1WBl0fqqBitLzX6HqKoBWEtUAEQFiAqAqABRARAVyM2F3wW8+9VEVQ34xIRv17f8CqKqBiuL1lc1WFkS/4oMn2TjwR+qQTXg11U7aAC3/6GY1lc1WFm0vqrBypJmZcl2srtO86EaVAPmz85q7/VVDdksbb6yRLzGsXDrqxoyN/a1VpaxJ/v9IQ+f8sufLb/3TNCmDDktrbVDRMU9OC6fnWV3c4soONXQc2UJ7VDsj6oaplbD2itLnquS25I7jsdVwy39pvSTq2H5lSXJ7Bw4waqinq+G5Vfumae2/B7To0758AmWF3Xt4phcDX1WlpknPuYO6PJtxruB+3Pk6nuupzqLQitLseWgSp78/JyHq+F+//983x0crVYWoo6c7Hcf8mQ11ApVdOardNM78A9BuIrMFNgfNU4hcoKoxVzyJ28gal5nhCqImrfpFaogarGsE6ogarFME6ogat6mV6iCqMW0Eaogal49hCqImrfpFaogarFYE6ogarH4Eqogat6mV6iCqMUMEaogal4ThCqImrfpFaogarEEE6ogarGkEqpoKmqJpleoQqIWk0Goop2ohYpeqKKpqHVfpStU0bH1rWKpUEU7UauHklDFhXzNr/JaMfW9EcYBb6UxRhoUWk+Zt/eemaWkRS5RZ+5DUa7vpSuuF/VAKS+/ay1XkUXUtdvCoM3O6Yq9PK619Fb2buoW2Z7P58t/5gYyJiXqh1J7V5ovdxDOnDMvP+dfuyGfPJT6Q6CoQ8ouee1G3K9e4x44arS+owSr1RMOMYqWmJSoTXLmr48U+g0WexGSqMvnTLRIfx3QjSUMFjWugtUuMEbUJjkzpy+1MGFq67s2oT25S1OMF1XOAMUSdeGcuXBpsCpB65t0ydD9YqSocgYolqhyBtD6AiAqQFQARAWICoCoAIg6jAu/GfKlFIh6hAnPWnicAyNFlTNAsURtlTOhn0ScQus7LMODdPLaJISLKmeApKK2ypnokxWn0Ppmd5WliBW1ec503mUHKSrwzAu4g7ZsTGLpwE037D2DK1vftXNm1KYbLMXsRG2YM3v3rdvysyxFuKi3Hru5BcU+RTFP1J45s/be6lhT1LY5c+yUKYorRe2cM7+eODmRSFQ5A5QRVc4AlUQFEIFnfQGiAiAq0IT/AEpCD0QKLIdHAAAAAElFTkSuQmCC",e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL8AAADiCAIAAACQmIF4AAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAABx5JREFUeNrtndty5CoUQxsq///LmYc5lUqd6XRom4ukvfQ87bFhIWEHNu3z8/OB0CV1mgBBD4IeZKUPmmBQrbXX/6DgDLIxa77PTVmSoGcmNNUYYt6zCp1ZF8F7Qrj5ta1++m1qI0PP793/bhNNuQjJVRGdn34SmWJ4z4+9e79lVlwT7zHQlG7mnaui8Uzs9f9dKiy/oGchOvEAQQ+CHlXjybYfvGfTJJfvPQhBj0CCZIQX3rMvWfLCC3oQ9CDoQdCDoAch6EHQg6AHQU+MDn6+y/hyiPf8pw1/Oshb2gw9CHrkvSFyT0V1evas29qzBg16EPRgP98ulWo8D3YDrguXCvuR8Z5Ck1y8Zzcx19qnSCEEvOeX3r1gQnV8C+95o+8v1+9JtR+qXq41lb+4pLoRybUwdP51mjCMSK7nXfvVLNf6+zU3MW0OPaO9e39Ok/fZEHq2GkMYQMx7tmZKWDGN6t5zajqSMQ0qTc9XFx5phACAOuic0ndiTCOsg47I2nhHgDro4ECF5j03v7tozjZM50BO9Nw/J0u5kxwBMqBn1jlZ+t1z9h0wkJ4VUwHZR37rYRWeojk25Z11NpGj5dRDNXEPv9NGXstDHQ+y7KnoPKzOyTI9yLIpv3pMGVLiDmR9kKU6PbNuT3NphHtA9wroPCSXRgQEdJP18BU3puNAGQdZsjpMQqYHWarQU+qcrJiA7qkDUWeAbh4nOwEiuZA5PXXOyQoLaDnvqXNOVkBAk1wIehyUF9DQQ0BDDyK5EPQg6EEIelA4PZyTBT1zxDlZ0IOgJ9F+DhpPXkCr0FPtnKyMgCa5UAQ9S+2ntaa2KScgoLW8ZxFA+zcbFAlo9eTi7Vq6dwQ/l8Wfk7XUG3YGtM3XwonnZElVS30sOAl12zjR8p7Bdrx/TtZxB8rYS9rEKz/OGpdPL6gGkF1Ad2V0Hgu26OpUuF16kOWegSHhPSN+cLmnf+0kQQe6GdC16ve8VSt0vF5za6+eTq1A6RQj3PwsH3atNt5Ag//yNWRG2v8UTce3Dzy8XgVnaqY6dZ5sCXCLw7kb3RZ53uwedTos4JysQvQIjnUAcvIewZgAIAN6lDuGSY80PUbzU+xHix4LdMgvRXqMXAeAtOix+6ACQCr0mH6LAyCteY/dGw0AHabHvdEB6Bg9GX8/4iPQAXoi//SI/eygJwwd8msfPZGuA0DP+3riFpD4GQMrge7Sc2fkBbQ4AF2hx3HFPwBJ0DN9Q2cYQBZrkA/QY71XTfPtPYmkof1ylx8+FaCbZpzjwW/t/E0qonMKnah3iMG9+I71QXZyUzPHh+iZ9YRqdSf3O2iYDfedfbz5rHk1dB7zqq6Ies8Ge7BzIHL8De9BG2a7Ga9dfb8reOUXOX7FewLOmtcPWXeASC40g568s+YtZvfW9tNPJYvXtJEcJ7kQ9KSHqVF4QY9EspiGF/Qg6EHQg6AHQQ9C4/TknTWPznhPxlnziORChvQEnDVvGqZGOd5f3Lf7WfNGrJvmOMmF5tGz2n5MN+UUz/E3vCfmrPm58w9y/GJyTWk4uxG2/4btvnuNri1srV1uzae/dfxCuDrHc2bNAWfNr+jXsjn+/BGo3/P6zp8Wd2Iv6RA9cwec3RvW1w1Tj+b6rLnU3tvx3p2V474ToDalFljMq8TripYrctzagVbVaza14n8za0OOj/ynmvoo8mViorOOFEm9fANmFbFYmTWSWatz3LQGNPRM6LwpOe4I0Afo3E/kWe+kVGCJne4UvyXoUc8Lu3Oc8B6tqYYXQKXp0ewe13XNZBZ8Q4/9WHfJr6L0eG0Jkr3bXhwd5UmG/gSogw5mCT2Zrzbi+VWLHsdFWMoA9ZroUC0aepIzy8I+q9DjvnNKM796NXR8jUcQoFrJ5b4UTu3+8+lJLXGn8Fy9DjoZa3Cl8quDDgBBT/J0R/aJFFfFj4+nDXv2LCz2FExaO3IudHnS9ii7aO4irXC5utTrH2bveZ1bpMvSe9ZtC8+jZ5Y3J9Dzrmd8D/jIkhTrBtiipjg34ZpRBKlCZimX3jpDD6W4bkIjUvbvAD2UAdxmqKuH1vl3rlJl7e48y4VnnFUwT8V7lpaZDahh6+XNPQadx66zAfBmoeRCewbYiqHVA9olxn7svPmM9yydkVBLb5tIrirGs8J++pGmOfsKU2SmvOHiPaxpCC+Sq3psQQ/K92boQdCDoAdBD4IehKAH2dNz8PMdXw6jvGfDl7E6G0lJLhR9oraXN7gbj5E391PDa93BsEx6SK7ScvHmrfSsth9r43H05h7TRmRWxeSaAlDk5ht9b2Yfu/qkZ9azrLis0J6KC0MttQSCizc71e8Z+W0GOi7eHFg7LNhy1GpoSFS9lK2NJdssdev3zGUo/s2c2mGT26vatxzqFqJAb4aeQIy29Sn0oOvib+wIehD0IOhB0IPQb/oDyjOPVt7RHbIAAAAASUVORK5CYII=",t="/daydayup/assets/4.3eb71080.jpg",h=JSON.parse('{"title":"二叉树","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/binary-tree.md"}'),r={name:"zjw/binary-tree.md"},c=l('

二叉树

  • 满二叉树(完美二叉树):除了叶节点,每个节点度都为 2
  • 完全二叉树:除去最后一层为满二叉树,且最后一层节点从左到右分布
  • 完满二叉树:除了叶子结点之外的每一个结点都有两个孩子结点

满二叉树

完全二叉树

完满二叉树

高度为 H 的一棵满 K 叉树,其节点总数为等比数列求和公式 (K^H - 1)/(K - 1),用 Big O 表示就是 O(K^H)

满二叉树的节点数为 2^h - 1,节点总数为 n 的满二叉树高度为 log (n+1)

完全二叉树层序遍历结果还原

tree.jpg

补充成完全二叉树的层序遍历结果:[3,9,20,null,null,15,7]

代码实现

js
function TreeNode(val, left, right) {
-  this.val = val === undefined ? 0 : val;
-  this.left = left === undefined ? null : left;
-  this.right = right === undefined ? null : right;
-}
-
-function build(levelOrder) {
-  var p = 0;
-  var track = [];
-  var res = new TreeNode(levelOrder[p]);
-
-  track.push(res);
-
-  while (p < levelOrder.length - 1) {
-    var n = track.length;
-
-    for (var i = 0; i < n; i++) {
-      var node = track.shift();
-
-      if (node) {
-        node.left = levelOrder[p + 1] ? new TreeNode(levelOrder[p + 1]) : null;
-        node.right = levelOrder[p + 2] ? new TreeNode(levelOrder[p + 2]) : null;
-        track.push(node.left, node.right);
-        // 无节点
-      } else {
-        track.push(null, null);
-      }
-      p += 2;
-    }
-  }
-
-  return res;
-}
-
-console.log(build([3, 9, 20, null, null, 15, 7]));

中序+后序遍历结果还原

js
function build(inorder, inStart, inEnd, postorder, postStart, postEnd) {
-  if (inStart > inEnd) return null;
-
-  var rootVal = postorder[postEnd];
-  // rootVal在中序中的索引
-  var index = 0;
-
-  for (var i = inStart; i <= inEnd; i++) {
-    if (inorder[i] === rootVal) {
-      index = i;
-      break;
-    }
-  }
-  var leftSize = index - inStart;
-  var root = new TreeNode(rootVal);
-  root.left = build(inorder, inStart, index - 1, postorder, postStart, postStart + leftSize - 1);
-  root.right = build(inorder, index + 1, inEnd, postorder, postStart + leftSize, postEnd - 1);
-  return root;
-}
-
-function buildTree(inorder, postorder) {
-  return build(inorder, 0, inorder.length - 1, postorder, 0, postorder.length - 1);
-}

中序+前序遍历结果还原

js
function build(preorder, preStart, preEnd, inorder, inStart, inEnd) {
-  if (preStart > preEnd) return null;
-
-  var rootVal = preorder[preStart];
-  // rootVal在中序中的索引
-  var index = 0;
-
-  for (var i = inStart; i <= inEnd; i++) {
-    if (inorder[i] === rootVal) {
-      index = i;
-      break;
-    }
-  }
-  var leftSize = index - inStart;
-  var root = new TreeNode(rootVal);
-  root.left = build(preorder, preStart + 1, preStart + leftSize, inorder, inStart, index - 1);
-  root.right = build(preorder, preStart + leftSize + 1, preEnd, inorder, index + 1, inEnd);
-  return root;
-}
-
-function buildTree(preorder, inorder) {
-  return build(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1);
-}
`,14),F=[c];function y(D,A,C,i,d,f){return a(),n("div",null,F)}const g=s(r,[["render",y]]);export{h as __pageData,g as default}; diff --git a/assets/zjw_binary-tree.md.b08eff68.lean.js b/assets/zjw_binary-tree.md.b08eff68.lean.js deleted file mode 100644 index 4599ce8..0000000 --- a/assets/zjw_binary-tree.md.b08eff68.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const p="/daydayup/assets/12.ed740cde.png",o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAADjCAIAAACek59lAAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAACLRJREFUeNrt3dty4zgMRVHblf//Zc9DqnpS3bajC0EBxNqPMx3FIrF5IFkR78/n8wYgNw9DABAVAFGBHnwZgj7c7/fP/8ANi7xzZ24oSlqiopifdHWNimKWjjoIJCr22fXrdL/7WXVCVIRbuneWhxwEWl/ECvbyR7TBEhUhlp6f3IhjQqJisFG0JCoC43SgYH8dSgNMVKSzlKtEBUBUcSpUiYqchN77cWOJqACI2qbvbfKriQp9r+6XqACIChAVAFEBEBUgKgCiAkQ1BABREcuFTyB4+IGoOMKEZ/o8NkhUAEQVquKUqMhzmRqk05w/TwdRAaJi6VDV9F5/UaOHWfUCdcjMntnGBhIVM2Lw8xHu97uklagYZtSxKf6wjY0bS0RFSHIO383NnjRExXGdXibeLp127QcnWomKfZZ+jrszfK4Q0UpUHHdjlKsby0O0EhVnlTgm7cnLWnVFVIqOcem8nHQlKqoKwFWiUrRG6bvDRFRB6sMTFQpdtBIVPbNItJ7HQ/nKOhy7lUvUlRVdL3xEK1Gvl2pjnjQv4tAHNhYuZqIGKrqxgLrdcdl7vnOerCJqXz+3VE/bbnDLiZ8f82XGk6jzLL35k8490Tr57wqIuqyi70Lgz39/97PP59NtlQ/ROvzvaRcYYaLunvWEj8Iv37AMf0MFUVnaaJmfo+vwdz4RtcvlU55jGvMmY+7JpHk3JGhpzIkauLQPnGwP0xlzomavGK4ac6ICK0PUqUu7UDXmRI2d2kIHN+brjTlRAaJW7sGa/GpjTlQ9mO7XmBMV0PoCICoAogJEBUBUAEQFiAqAqLFc+G1424cfjDlRTzHh+TJ/iWrMiQpofS3w4tSYEzXPJVPQ1Hr7tjEnqmUYWt9+C/xw7cXp/FBdYMyJOq9uvID7ElfXWBmJusmo83Wjhb5kxJYZdlta7Jtd+6DMH/mx+/1ofVss5AdWaFl68gaBMZeonyb4e2Qi9uoUqocH7Xv31A/j9iGT/51copavkoitr3+WGlG3LJRDRv7lVPoedcG1/Pl8jppX78g/0wMPPE65kZeob5vegRP87wGF6vYpGDXmuyY6G1/qY9da/uf/jrr+/HzFZQqGj/mojpqo6W5gRPRmRcvl2ikYvqIVWiVdo17fCzE21MZLfgVR15m/uBvLHTqabqtkd1GvnSdXp1cNSLlV8sHSJM7Y0M0qSdS8cyZUMwxF/lWyr6gJ56ZhqLr0IGqZpleouvQgajFJWoVqhpOtclepo6gJ58P7zQw+UfM2vZ1DNedpph38vq1vNkvtamHwiVosrJYP1cwnmPOzPXpamnMFbfhQYZ6JSD74HVvfzH1OhwY47RqUefC7iFoxoJYP1cxiZBv8RzdL80fW2qGafPVJO/i9Wt96755bN1Tzz0WqwV//DQ8Va33V9z+UOKmfg7/lFRBzXgr71cfSoi3ld63UfUXwy9e4JZ+LXwd846QMLMJ7kyuiiqd5OH8ynGz1l4+PfSXi+XOvLer2UWt4dXrVKc9/U9zMVX5U9773lO91G8L17l5cXg09V5aNoRqxucn2Uy4m6nrVsP0EJ1RDq5Xl/HntTsUTe9Xd5UzyE5xZDRNWlp/3US9cWc6f4OQNOGuIunw13OK3Bo0434ory/lzPP/ZDhzzXvR7Z9VwyTGrryznP9uoT7X3sI8Olt7G7ZA7hyHVEFroL1eBw7/x5c9mmJ0gS2/79/V71LJUNYRWw8IrS6p5OTA7lZ71VQ1JXF1gZSlHXlFVQ7d5STU70ae592QfqkE14MIubOPBbWmhGqwsWl/VYGUpeCsh4TaQD9WgGnBtkWz5FVpf1WBl0fqqBitLzX6HqKoBWEtUAEQFiAqAqABRARAVyM2F3wW8+9VEVQ34xIRv17f8CqKqBiuL1lc1WFkS/4oMn2TjwR+qQTXg11U7aAC3/6GY1lc1WFm0vqrBypJmZcl2srtO86EaVAPmz85q7/VVDdksbb6yRLzGsXDrqxoyN/a1VpaxJ/v9IQ+f8sufLb/3TNCmDDktrbVDRMU9OC6fnWV3c4soONXQc2UJ7VDsj6oaplbD2itLnquS25I7jsdVwy39pvSTq2H5lSXJ7Bw4waqinq+G5Vfumae2/B7To0758AmWF3Xt4phcDX1WlpknPuYO6PJtxruB+3Pk6nuupzqLQitLseWgSp78/JyHq+F+//983x0crVYWoo6c7Hcf8mQ11ApVdOardNM78A9BuIrMFNgfNU4hcoKoxVzyJ28gal5nhCqImrfpFaogarGsE6ogarFME6ogat6mV6iCqMW0Eaogal49hCqImrfpFaogarFYE6ogarH4Eqogat6mV6iCqMUMEaogal4ThCqImrfpFaogarEEE6ogarGkEqpoKmqJpleoQqIWk0Goop2ohYpeqKKpqHVfpStU0bH1rWKpUEU7UauHklDFhXzNr/JaMfW9EcYBb6UxRhoUWk+Zt/eemaWkRS5RZ+5DUa7vpSuuF/VAKS+/ay1XkUXUtdvCoM3O6Yq9PK619Fb2buoW2Z7P58t/5gYyJiXqh1J7V5ovdxDOnDMvP+dfuyGfPJT6Q6CoQ8ouee1G3K9e4x44arS+owSr1RMOMYqWmJSoTXLmr48U+g0WexGSqMvnTLRIfx3QjSUMFjWugtUuMEbUJjkzpy+1MGFq67s2oT25S1OMF1XOAMUSdeGcuXBpsCpB65t0ydD9YqSocgYolqhyBtD6AiAqQFQARAWICoCoAIg6jAu/GfKlFIh6hAnPWnicAyNFlTNAsURtlTOhn0ScQus7LMODdPLaJISLKmeApKK2ypnokxWn0Ppmd5WliBW1ec503mUHKSrwzAu4g7ZsTGLpwE037D2DK1vftXNm1KYbLMXsRG2YM3v3rdvysyxFuKi3Hru5BcU+RTFP1J45s/be6lhT1LY5c+yUKYorRe2cM7+eODmRSFQ5A5QRVc4AlUQFEIFnfQGiAiAq0IT/AEpCD0QKLIdHAAAAAElFTkSuQmCC",e="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL8AAADiCAIAAACQmIF4AAAAA3NCSVQICAjb4U/gAAAAEHRFWHRTb2Z0d2FyZQBTaHV0dGVyY4LQCQAABx5JREFUeNrtndty5CoUQxsq///LmYc5lUqd6XRom4ukvfQ87bFhIWEHNu3z8/OB0CV1mgBBD4IeZKUPmmBQrbXX/6DgDLIxa77PTVmSoGcmNNUYYt6zCp1ZF8F7Qrj5ta1++m1qI0PP793/bhNNuQjJVRGdn34SmWJ4z4+9e79lVlwT7zHQlG7mnaui8Uzs9f9dKiy/oGchOvEAQQ+CHlXjybYfvGfTJJfvPQhBj0CCZIQX3rMvWfLCC3oQ9CDoQdCDoAch6EHQg6AHQU+MDn6+y/hyiPf8pw1/Oshb2gw9CHrkvSFyT0V1evas29qzBg16EPRgP98ulWo8D3YDrguXCvuR8Z5Ck1y8Zzcx19qnSCEEvOeX3r1gQnV8C+95o+8v1+9JtR+qXq41lb+4pLoRybUwdP51mjCMSK7nXfvVLNf6+zU3MW0OPaO9e39Ok/fZEHq2GkMYQMx7tmZKWDGN6t5zajqSMQ0qTc9XFx5phACAOuic0ndiTCOsg47I2nhHgDro4ECF5j03v7tozjZM50BO9Nw/J0u5kxwBMqBn1jlZ+t1z9h0wkJ4VUwHZR37rYRWeojk25Z11NpGj5dRDNXEPv9NGXstDHQ+y7KnoPKzOyTI9yLIpv3pMGVLiDmR9kKU6PbNuT3NphHtA9wroPCSXRgQEdJP18BU3puNAGQdZsjpMQqYHWarQU+qcrJiA7qkDUWeAbh4nOwEiuZA5PXXOyQoLaDnvqXNOVkBAk1wIehyUF9DQQ0BDDyK5EPQg6EEIelA4PZyTBT1zxDlZ0IOgJ9F+DhpPXkCr0FPtnKyMgCa5UAQ9S+2ntaa2KScgoLW8ZxFA+zcbFAlo9eTi7Vq6dwQ/l8Wfk7XUG3YGtM3XwonnZElVS30sOAl12zjR8p7Bdrx/TtZxB8rYS9rEKz/OGpdPL6gGkF1Ad2V0Hgu26OpUuF16kOWegSHhPSN+cLmnf+0kQQe6GdC16ve8VSt0vF5za6+eTq1A6RQj3PwsH3atNt5Ag//yNWRG2v8UTce3Dzy8XgVnaqY6dZ5sCXCLw7kb3RZ53uwedTos4JysQvQIjnUAcvIewZgAIAN6lDuGSY80PUbzU+xHix4LdMgvRXqMXAeAtOix+6ACQCr0mH6LAyCteY/dGw0AHabHvdEB6Bg9GX8/4iPQAXoi//SI/eygJwwd8msfPZGuA0DP+3riFpD4GQMrge7Sc2fkBbQ4AF2hx3HFPwBJ0DN9Q2cYQBZrkA/QY71XTfPtPYmkof1ylx8+FaCbZpzjwW/t/E0qonMKnah3iMG9+I71QXZyUzPHh+iZ9YRqdSf3O2iYDfedfbz5rHk1dB7zqq6Ies8Ge7BzIHL8De9BG2a7Ga9dfb8reOUXOX7FewLOmtcPWXeASC40g568s+YtZvfW9tNPJYvXtJEcJ7kQ9KSHqVF4QY9EspiGF/Qg6EHQg6AHQQ9C4/TknTWPznhPxlnziORChvQEnDVvGqZGOd5f3Lf7WfNGrJvmOMmF5tGz2n5MN+UUz/E3vCfmrPm58w9y/GJyTWk4uxG2/4btvnuNri1srV1uzae/dfxCuDrHc2bNAWfNr+jXsjn+/BGo3/P6zp8Wd2Iv6RA9cwec3RvW1w1Tj+b6rLnU3tvx3p2V474ToDalFljMq8TripYrctzagVbVaza14n8za0OOj/ynmvoo8mViorOOFEm9fANmFbFYmTWSWatz3LQGNPRM6LwpOe4I0Afo3E/kWe+kVGCJne4UvyXoUc8Lu3Oc8B6tqYYXQKXp0ewe13XNZBZ8Q4/9WHfJr6L0eG0Jkr3bXhwd5UmG/gSogw5mCT2Zrzbi+VWLHsdFWMoA9ZroUC0aepIzy8I+q9DjvnNKM796NXR8jUcQoFrJ5b4UTu3+8+lJLXGn8Fy9DjoZa3Cl8quDDgBBT/J0R/aJFFfFj4+nDXv2LCz2FExaO3IudHnS9ii7aO4irXC5utTrH2bveZ1bpMvSe9ZtC8+jZ5Y3J9Dzrmd8D/jIkhTrBtiipjg34ZpRBKlCZimX3jpDD6W4bkIjUvbvAD2UAdxmqKuH1vl3rlJl7e48y4VnnFUwT8V7lpaZDahh6+XNPQadx66zAfBmoeRCewbYiqHVA9olxn7svPmM9yydkVBLb5tIrirGs8J++pGmOfsKU2SmvOHiPaxpCC+Sq3psQQ/K92boQdCDoAdBD4IehKAH2dNz8PMdXw6jvGfDl7E6G0lJLhR9oraXN7gbj5E391PDa93BsEx6SK7ScvHmrfSsth9r43H05h7TRmRWxeSaAlDk5ht9b2Yfu/qkZ9azrLis0J6KC0MttQSCizc71e8Z+W0GOi7eHFg7LNhy1GpoSFS9lK2NJdssdev3zGUo/s2c2mGT26vatxzqFqJAb4aeQIy29Sn0oOvib+wIehD0IOhB0IPQb/oDyjOPVt7RHbIAAAAASUVORK5CYII=",t="/daydayup/assets/4.3eb71080.jpg",h=JSON.parse('{"title":"二叉树","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/binary-tree.md"}'),r={name:"zjw/binary-tree.md"},c=l("",14),F=[c];function y(D,A,C,i,d,f){return a(),n("div",null,F)}const g=s(r,[["render",y]]);export{h as __pageData,g as default}; diff --git a/assets/zjw_data-structure.md.YAkYuSGi.js b/assets/zjw_data-structure.md.YAkYuSGi.js new file mode 100644 index 0000000..43e0a2e --- /dev/null +++ b/assets/zjw_data-structure.md.YAkYuSGi.js @@ -0,0 +1,171 @@ +import{_ as s,c as i,o as a,a4 as h}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"数据结构","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/data-structure.md","filePath":"zjw/data-structure.md"}'),n={name:"zjw/data-structure.md"},k=h(`

数据结构

优先队列

js
class PriorityQueue {
+  size = 0;
+  pq = [];
+
+  constructor(compareFn) {
+    this.compareFn = compareFn;
+  }
+
+  // 上浮
+  swim(x) {
+    // 小堆:当x小,上浮(a-b>0),反之
+    while (x > 1 && this.compare(this.parent(x), x)) {
+      this.swap(x, this.parent(x));
+      x = this.parent(x);
+    }
+  }
+  // 下沉
+  sink(x) {
+    while (this.left(x) <= this.size) {
+      var cur = this.left(x);
+
+      if (this.right(x) <= this.size && this.compare(cur, this.right(x))) {
+        cur = this.right(x);
+      }
+      if (this.compare(cur, x)) break;
+      this.swap(cur, x);
+      x = cur;
+    }
+  }
+  // 插入堆底
+  add(e) {
+    this.size++;
+    this.pq[this.size] = e;
+    this.swim(this.size);
+  }
+  // 移除堆顶
+  poll() {
+    var cur = this.pq[1];
+    this.swap(1, this.size);
+    this.pq.pop();
+    this.size--;
+    this.sink(1);
+    return cur;
+  }
+  // 获取堆顶元素
+  peek() {
+    return this.pq[1];
+  }
+  swap(i, j) {
+    var temp = this.pq[i];
+    this.pq[i] = this.pq[j];
+    this.pq[j] = temp;
+  }
+  compare(i, j) {
+    if (this.compareFn) {
+      return this.compareFn(this.pq[i], this.pq[j]) > 0;
+    }
+    return this.pq[i] - this.pq[j] > 0;
+  }
+  left(x) {
+    return x * 2;
+  }
+  right(x) {
+    return x * 2 + 1;
+  }
+  parent(x) {
+    return Math.floor(x / 2);
+  }
+  isEmpty() {
+    return !this.size;
+  }
+}
+// 大堆
+var pq = new PriorityQueue((a, b) => b - a);
+[1, 2, 3, 4, 5, 6].forEach((e) => pq.add(e));
+console.log(pq.pq);
js
class PriorityQueue {
+  size = 0;
+  pq = [];
+
+  constructor(compareFn) {
+    this.compareFn = compareFn;
+  }
+
+  // 上浮
+  swim(x) {
+    // 改动处:x>1
+    while (x > 0 && this.compare(this.parent(x), x)) {
+      this.swap(x, this.parent(x));
+      x = this.parent(x);
+    }
+  }
+  // 下沉
+  sink(x) {
+    while (this.left(x) <= this.size) {
+      var cur = this.left(x);
+
+      if (this.right(x) <= this.size && this.compare(cur, this.right(x))) {
+        cur = this.right(x);
+      }
+      if (this.compare(cur, x)) break;
+      this.swap(cur, x);
+      x = cur;
+    }
+  }
+  // 插入堆底
+  add(e) {
+    this.pq[this.size] = e;
+    this.swim(this.size);
+    // 改动处:后加
+    this.size++;
+  }
+  // 移除堆顶
+  poll() {
+    // 改动处:this.pq[1]
+    var cur = this.pq[0];
+    this.swap(0, this.size);
+    this.pq.pop();
+    this.size--;
+    this.sink(0);
+    return cur;
+  }
+  peek() {
+    // 改动处:this.pq[1]
+    return this.pq[0];
+  }
+  swap(i, j) {
+    var temp = this.pq[i];
+    this.pq[i] = this.pq[j];
+    this.pq[j] = temp;
+  }
+  compare(i, j) {
+    if (this.compareFn) {
+      return this.compareFn(this.pq[i], this.pq[j]) > 0;
+    }
+    return this.pq[i] - this.pq[j] > 0;
+  }
+  left(x) {
+    // 改动处:x*2
+    return x * 2 + 1;
+  }
+  right(x) {
+    // 改动处:x*2+1
+    return x * 2 + 2;
+  }
+  parent(x) {
+    // 改动处:x/2
+    return Math.floor(x - 1 / 2);
+  }
+  isEmpty() {
+    return !this.pq.length;
+  }
+}

优点:自排序,时间复杂度 O(log n)
缺点:出队顺序按照元素大小,无法按先进先出顺序

单调队列

js
class MonotonicQueue {
+  maxq = [];
+
+  pop(n) {
+    // 如果出队不是最大元素,可能被压扁,则不用出队
+    if (this.maxq[0] === n) {
+      this.maxq.shift();
+    }
+  }
+  push(n) {
+    // 压扁中间元素,找到合适位置
+    while (this.maxq.length && this.maxq[this.maxq.length - 1] < n) {
+      this.maxq.pop();
+    }
+    this.maxq.push(n);
+  }
+  max() {
+    return this.maxq[0];
+  }
+}

优点:单调递增或递减,时间复杂度 O(1),可以按先进先出顺序
缺点:不能获取完整数据(由于删除中间元素)

`,7),p=[k];function l(t,E,e,r,d,g){return a(),i("div",null,p)}const C=s(n,[["render",l]]);export{F as __pageData,C as default}; diff --git a/assets/zjw_data-structure.md.YAkYuSGi.lean.js b/assets/zjw_data-structure.md.YAkYuSGi.lean.js new file mode 100644 index 0000000..338bd30 --- /dev/null +++ b/assets/zjw_data-structure.md.YAkYuSGi.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as h}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"数据结构","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/data-structure.md","filePath":"zjw/data-structure.md"}'),n={name:"zjw/data-structure.md"},k=h("",7),p=[k];function l(t,E,e,r,d,g){return a(),i("div",null,p)}const C=s(n,[["render",l]]);export{F as __pageData,C as default}; diff --git a/assets/zjw_data-structure.md.ff8b49fb.js b/assets/zjw_data-structure.md.ff8b49fb.js deleted file mode 100644 index dbd4175..0000000 --- a/assets/zjw_data-structure.md.ff8b49fb.js +++ /dev/null @@ -1,171 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"数据结构","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/data-structure.md"}'),p={name:"zjw/data-structure.md"},o=l(`

数据结构

优先队列

js
class PriorityQueue {
-  size = 0;
-  pq = [];
-
-  constructor(compareFn) {
-    this.compareFn = compareFn;
-  }
-
-  // 上浮
-  swim(x) {
-    // 小堆:当x小,上浮(a-b>0),反之
-    while (x > 1 && this.compare(this.parent(x), x)) {
-      this.swap(x, this.parent(x));
-      x = this.parent(x);
-    }
-  }
-  // 下沉
-  sink(x) {
-    while (this.left(x) <= this.size) {
-      var cur = this.left(x);
-
-      if (this.right(x) <= this.size && this.compare(cur, this.right(x))) {
-        cur = this.right(x);
-      }
-      if (this.compare(cur, x)) break;
-      this.swap(cur, x);
-      x = cur;
-    }
-  }
-  // 插入堆底
-  add(e) {
-    this.size++;
-    this.pq[this.size] = e;
-    this.swim(this.size);
-  }
-  // 移除堆顶
-  poll() {
-    var cur = this.pq[1];
-    this.swap(1, this.size);
-    this.pq.pop();
-    this.size--;
-    this.sink(1);
-    return cur;
-  }
-  // 获取堆顶元素
-  peek() {
-    return this.pq[1];
-  }
-  swap(i, j) {
-    var temp = this.pq[i];
-    this.pq[i] = this.pq[j];
-    this.pq[j] = temp;
-  }
-  compare(i, j) {
-    if (this.compareFn) {
-      return this.compareFn(this.pq[i], this.pq[j]) > 0;
-    }
-    return this.pq[i] - this.pq[j] > 0;
-  }
-  left(x) {
-    return x * 2;
-  }
-  right(x) {
-    return x * 2 + 1;
-  }
-  parent(x) {
-    return Math.floor(x / 2);
-  }
-  isEmpty() {
-    return !this.size;
-  }
-}
-// 大堆
-var pq = new PriorityQueue((a, b) => b - a);
-[1, 2, 3, 4, 5, 6].forEach((e) => pq.add(e));
-console.log(pq.pq);
js
class PriorityQueue {
-  size = 0;
-  pq = [];
-
-  constructor(compareFn) {
-    this.compareFn = compareFn;
-  }
-
-  // 上浮
-  swim(x) {
-    // 改动处:x>1
-    while (x > 0 && this.compare(this.parent(x), x)) {
-      this.swap(x, this.parent(x));
-      x = this.parent(x);
-    }
-  }
-  // 下沉
-  sink(x) {
-    while (this.left(x) <= this.size) {
-      var cur = this.left(x);
-
-      if (this.right(x) <= this.size && this.compare(cur, this.right(x))) {
-        cur = this.right(x);
-      }
-      if (this.compare(cur, x)) break;
-      this.swap(cur, x);
-      x = cur;
-    }
-  }
-  // 插入堆底
-  add(e) {
-    this.pq[this.size] = e;
-    this.swim(this.size);
-    // 改动处:后加
-    this.size++;
-  }
-  // 移除堆顶
-  poll() {
-    // 改动处:this.pq[1]
-    var cur = this.pq[0];
-    this.swap(0, this.size);
-    this.pq.pop();
-    this.size--;
-    this.sink(0);
-    return cur;
-  }
-  peek() {
-    // 改动处:this.pq[1]
-    return this.pq[0];
-  }
-  swap(i, j) {
-    var temp = this.pq[i];
-    this.pq[i] = this.pq[j];
-    this.pq[j] = temp;
-  }
-  compare(i, j) {
-    if (this.compareFn) {
-      return this.compareFn(this.pq[i], this.pq[j]) > 0;
-    }
-    return this.pq[i] - this.pq[j] > 0;
-  }
-  left(x) {
-    // 改动处:x*2
-    return x * 2 + 1;
-  }
-  right(x) {
-    // 改动处:x*2+1
-    return x * 2 + 2;
-  }
-  parent(x) {
-    // 改动处:x/2
-    return Math.floor(x - 1 / 2);
-  }
-  isEmpty() {
-    return !this.pq.length;
-  }
-}

优点:自排序,时间复杂度 O(log n)
缺点:出队顺序按照元素大小,无法按先进先出顺序

单调队列

js
class MonotonicQueue {
-  maxq = [];
-
-  pop(n) {
-    // 如果出队不是最大元素,可能被压扁,则不用出队
-    if (this.maxq[0] === n) {
-      this.maxq.shift();
-    }
-  }
-  push(n) {
-    // 压扁中间元素,找到合适位置
-    while (this.maxq.length && this.maxq[this.maxq.length - 1] < n) {
-      this.maxq.pop();
-    }
-    this.maxq.push(n);
-  }
-  max() {
-    return this.maxq[0];
-  }
-}

优点:单调递增或递减,时间复杂度 O(1),可以按先进先出顺序
缺点:不能获取完整数据(由于删除中间元素)

`,7),t=[o];function e(c,F,r,y,D,A){return a(),n("div",null,t)}const h=s(p,[["render",e]]);export{i as __pageData,h as default}; diff --git a/assets/zjw_data-structure.md.ff8b49fb.lean.js b/assets/zjw_data-structure.md.ff8b49fb.lean.js deleted file mode 100644 index 1c0d55d..0000000 --- a/assets/zjw_data-structure.md.ff8b49fb.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"数据结构","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/data-structure.md"}'),p={name:"zjw/data-structure.md"},o=l("",7),t=[o];function e(c,F,r,y,D,A){return a(),n("div",null,t)}const h=s(p,[["render",e]]);export{i as __pageData,h as default}; diff --git a/assets/zjw_koa-middleware.md.5b834bb2.js b/assets/zjw_koa-middleware.md.5b834bb2.js deleted file mode 100644 index b6e8f72..0000000 --- a/assets/zjw_koa-middleware.md.5b834bb2.js +++ /dev/null @@ -1,62 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const C=JSON.parse('{"title":"实现 koa 中间件","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/koa-middleware.md"}'),p={name:"zjw/koa-middleware.md"},o=l(`

实现 koa 中间件

koa 中间件具备以下特点

  • 每个中间件接受 next 函数,控制继续向下个中间件执行
  • next(error) 调用时,抛出异常,中断调用栈
  • await next() 前代码按中间件正序运行,后面代码按逆序运行(即洋葱模型)

例如,实现 run 函数,输出以下结果

ts
run(() => {
-  console.log('run task');
-  return Promise.resolve(1);
-}, [
-  (next) => {
-    console.log('1 entry');
-    await next();
-    console.log('1 leave');
-  },
-  (next) => {
-    console.log('2 entry');
-    await next();
-    console.log('2 leave');
-  },
-]);
-
-// 1 entry
-// 2 entry
-// run task
-// 2 leave
-// 1 leave

使用 async await 实现

逆序遍历中间件列表,层层包裹 task 实现

ts
function run(task, middlewares: any[]) {
-  const composeTask = middlewares.reverse().reduce((prev, curr) => {
-    return async () => {
-      await curr(prev);
-    };
-  }, task);
-
-  return composeTask();
-}

实现 next(error) 调用抛出异常

ts
function run(task, middlewares: any[]) {
-  // 包裹 task 接收 error 参数抛出
-  const composeTask = [...middlewares, task].reverse().reduce((prev, curr) => {
-    return async (error) => {
-      if (error) {
-        throw error;
-      }
-      await curr(prev);
-    };
-    // 省略第二个参数,会从第二个元素开始遍历
-  }, undefined);
-
-  return composeTask();
-}

如果其中一个中间件不使用 await 方式调用 next 会出现以下输出

ts
run(() => {
-  console.log('run task');
-  return Promise.resolve(1);
-}, [
-  (next) => {
-    console.log('1 entry');
-    next();
-    console.log('1 leave');
-  },
-  (next) => {
-    console.log('2 entry');
-    await next();
-    console.log('2 leave');
-  },
-]);
-
-// 1 entry
-// 2 entry
-// run task
-// 1 leave
-// 2 leave

可以发现,entry 代码是按正确循序执行,但是 leave 代码,由于第二个中间件 await next() 后面代码添加成微任务,退出第一个中间件 next 调用,执行接下来语句,所以先输出 “1 leave”,再执行微任务,输出 “2 leave”

`,13),e=[o];function t(c,r,y,F,D,i){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{C as __pageData,d as default}; diff --git a/assets/zjw_koa-middleware.md.5b834bb2.lean.js b/assets/zjw_koa-middleware.md.5b834bb2.lean.js deleted file mode 100644 index 42acd00..0000000 --- a/assets/zjw_koa-middleware.md.5b834bb2.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const C=JSON.parse('{"title":"实现 koa 中间件","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/koa-middleware.md"}'),p={name:"zjw/koa-middleware.md"},o=l("",13),e=[o];function t(c,r,y,F,D,i){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{C as __pageData,d as default}; diff --git a/assets/zjw_koa-middleware.md.DA53IkQj.js b/assets/zjw_koa-middleware.md.DA53IkQj.js new file mode 100644 index 0000000..9c72630 --- /dev/null +++ b/assets/zjw_koa-middleware.md.DA53IkQj.js @@ -0,0 +1,62 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"实现 koa 中间件","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/koa-middleware.md","filePath":"zjw/koa-middleware.md"}'),h={name:"zjw/koa-middleware.md"},k=n(`

实现 koa 中间件

koa 中间件具备以下特点

  • 每个中间件接受 next 函数,控制继续向下个中间件执行
  • next(error) 调用时,抛出异常,中断调用栈
  • await next() 前代码按中间件正序运行,后面代码按逆序运行(即洋葱模型)

例如,实现 run 函数,输出以下结果

ts
run(() => {
+  console.log('run task');
+  return Promise.resolve(1);
+}, [
+  (next) => {
+    console.log('1 entry');
+    await next();
+    console.log('1 leave');
+  },
+  (next) => {
+    console.log('2 entry');
+    await next();
+    console.log('2 leave');
+  },
+]);
+
+// 1 entry
+// 2 entry
+// run task
+// 2 leave
+// 1 leave

使用 async await 实现

逆序遍历中间件列表,层层包裹 task 实现

ts
function run(task, middlewares: any[]) {
+  const composeTask = middlewares.reverse().reduce((prev, curr) => {
+    return async () => {
+      await curr(prev);
+    };
+  }, task);
+
+  return composeTask();
+}

实现 next(error) 调用抛出异常

ts
function run(task, middlewares: any[]) {
+  // 包裹 task 接收 error 参数抛出
+  const composeTask = [...middlewares, task].reverse().reduce((prev, curr) => {
+    return async (error) => {
+      if (error) {
+        throw error;
+      }
+      await curr(prev);
+    };
+    // 省略第二个参数,会从第二个元素开始遍历
+  }, undefined);
+
+  return composeTask();
+}

如果其中一个中间件不使用 await 方式调用 next 会出现以下输出

ts
run(() => {
+  console.log('run task');
+  return Promise.resolve(1);
+}, [
+  (next) => {
+    console.log('1 entry');
+    next();
+    console.log('1 leave');
+  },
+  (next) => {
+    console.log('2 entry');
+    await next();
+    console.log('2 leave');
+  },
+]);
+
+// 1 entry
+// 2 entry
+// run task
+// 1 leave
+// 2 leave

可以发现,entry 代码是按正确循序执行,但是 leave 代码,由于第二个中间件 await next() 后面代码添加成微任务,退出第一个中间件 next 调用,执行接下来语句,所以先输出 “1 leave”,再执行微任务,输出 “2 leave”

`,13),l=[k];function p(t,e,E,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",p]]);export{F as __pageData,c as default}; diff --git a/assets/zjw_koa-middleware.md.DA53IkQj.lean.js b/assets/zjw_koa-middleware.md.DA53IkQj.lean.js new file mode 100644 index 0000000..214e1cd --- /dev/null +++ b/assets/zjw_koa-middleware.md.DA53IkQj.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"实现 koa 中间件","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/koa-middleware.md","filePath":"zjw/koa-middleware.md"}'),h={name:"zjw/koa-middleware.md"},k=n("",13),l=[k];function p(t,e,E,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",p]]);export{F as __pageData,c as default}; diff --git a/assets/zjw_linked-list.md.826dff0c.js b/assets/zjw_linked-list.md.826dff0c.js deleted file mode 100644 index 9b26d2c..0000000 --- a/assets/zjw_linked-list.md.826dff0c.js +++ /dev/null @@ -1,108 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"链表","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/linked-list.md"}'),p={name:"zjw/linked-list.md"},o=l(`

链表

构建

js
function ListNode(val) {
-  this.val = val;
-  this.next = null;
-}
-
-console.log(build([1, 2, 3]));
js
function build(nums) {
-  var dummy = new ListNode();
-  var p = dummy;
-
-  for (let i = 0; i < nums.length; i++) {
-    var node = new ListNode(nums[i]);
-    p.next = node;
-    p = node;
-  }
-
-  return dummy.next;
-}
js
function build(nums, start = 0) {
-  if (start > nums.length - 1) {
-    return null;
-  }
-  var node = new ListNode(nums[start]);
-  node.next = build(nums, start + 1);
-
-  return node;
-}

反转

js
function reverse(head) {
-  var pre = null,
-    cur = head;
-
-  while (cur) {
-    var next = cur.next;
-    cur.next = pre;
-    pre = cur;
-    cur = next;
-  }
-  return pre;
-}
js
function reverse(head) {
-  if (head === null || head.next === null) {
-    return head;
-  }
-
-  var last = reverse(head.next);
-  head.next.next = head;
-  head.next = null;
-  return last;
-}

反转 m 到 n 之间元素

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

js
var reverseBetween = function (head, left, right) {
-  if (left === 1) {
-    return reverseN(head, right);
-  }
-
-  head.next = reverseBetween(head.next, left - 1, right - 1);
-  return head;
-};
-
-var successor = null;
-
-function reverseN(head, n) {
-  if (n === 1) {
-    successor = head.next;
-    return head;
-  }
-
-  var last = reverseN(head.next, n - 1);
-  head.next.next = head;
-  head.next = successor;
-
-  return last;
-}

双向链表

js
class Node {
-  prev = null;
-  next = null;
-
-  constructor(val) {
-    this.val = val;
-  }
-}
-
-class DoubleLinkedList {
-  size = 0;
-
-  constructor() {
-    this.head = new Node();
-    this.tail = new Node();
-    this.head.next = this.tail;
-    this.tail.prev = this.head;
-  }
-  // 向队尾添加节点
-  addLast(node) {
-    node.prev = this.tail.prev;
-    node.next = this.tail;
-    this.tail.prev.next = node;
-    this.tail.prev = node;
-    this.size++;
-  }
-  // 移除节点
-  remove(node) {
-    node.prev.next = node.next;
-    node.next.prev = node.prev;
-    this.size--;
-  }
-  // 移除队头
-  removeFirst() {
-    if (this.head.next === this.tail) {
-      return null;
-    }
-    const first = this.head.next;
-    this.remove(first);
-    return first;
-  }
-}
`,11),e=[o];function t(c,r,F,y,D,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default}; diff --git a/assets/zjw_linked-list.md.826dff0c.lean.js b/assets/zjw_linked-list.md.826dff0c.lean.js deleted file mode 100644 index 7dbe71c..0000000 --- a/assets/zjw_linked-list.md.826dff0c.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"链表","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/linked-list.md"}'),p={name:"zjw/linked-list.md"},o=l("",11),e=[o];function t(c,r,F,y,D,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default}; diff --git a/assets/zjw_linked-list.md.DKumdPKd.js b/assets/zjw_linked-list.md.DKumdPKd.js new file mode 100644 index 0000000..ec2ee7f --- /dev/null +++ b/assets/zjw_linked-list.md.DKumdPKd.js @@ -0,0 +1,108 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"链表","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/linked-list.md","filePath":"zjw/linked-list.md"}'),h={name:"zjw/linked-list.md"},k=n(`

链表

构建

js
function ListNode(val) {
+  this.val = val;
+  this.next = null;
+}
+
+console.log(build([1, 2, 3]));
js
function build(nums) {
+  var dummy = new ListNode();
+  var p = dummy;
+
+  for (let i = 0; i < nums.length; i++) {
+    var node = new ListNode(nums[i]);
+    p.next = node;
+    p = node;
+  }
+
+  return dummy.next;
+}
js
function build(nums, start = 0) {
+  if (start > nums.length - 1) {
+    return null;
+  }
+  var node = new ListNode(nums[start]);
+  node.next = build(nums, start + 1);
+
+  return node;
+}

反转

js
function reverse(head) {
+  var pre = null,
+    cur = head;
+
+  while (cur) {
+    var next = cur.next;
+    cur.next = pre;
+    pre = cur;
+    cur = next;
+  }
+  return pre;
+}
js
function reverse(head) {
+  if (head === null || head.next === null) {
+    return head;
+  }
+
+  var last = reverse(head.next);
+  head.next.next = head;
+  head.next = null;
+  return last;
+}

反转 m 到 n 之间元素

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

js
var reverseBetween = function (head, left, right) {
+  if (left === 1) {
+    return reverseN(head, right);
+  }
+
+  head.next = reverseBetween(head.next, left - 1, right - 1);
+  return head;
+};
+
+var successor = null;
+
+function reverseN(head, n) {
+  if (n === 1) {
+    successor = head.next;
+    return head;
+  }
+
+  var last = reverseN(head.next, n - 1);
+  head.next.next = head;
+  head.next = successor;
+
+  return last;
+}

双向链表

js
class Node {
+  prev = null;
+  next = null;
+
+  constructor(val) {
+    this.val = val;
+  }
+}
+
+class DoubleLinkedList {
+  size = 0;
+
+  constructor() {
+    this.head = new Node();
+    this.tail = new Node();
+    this.head.next = this.tail;
+    this.tail.prev = this.head;
+  }
+  // 向队尾添加节点
+  addLast(node) {
+    node.prev = this.tail.prev;
+    node.next = this.tail;
+    this.tail.prev.next = node;
+    this.tail.prev = node;
+    this.size++;
+  }
+  // 移除节点
+  remove(node) {
+    node.prev.next = node.next;
+    node.next.prev = node.prev;
+    this.size--;
+  }
+  // 移除队头
+  removeFirst() {
+    if (this.head.next === this.tail) {
+      return null;
+    }
+    const first = this.head.next;
+    this.remove(first);
+    return first;
+  }
+}
`,11),l=[k];function p(t,e,E,d,r,g){return a(),i("div",null,l)}const c=s(h,[["render",p]]);export{F as __pageData,c as default}; diff --git a/assets/zjw_linked-list.md.DKumdPKd.lean.js b/assets/zjw_linked-list.md.DKumdPKd.lean.js new file mode 100644 index 0000000..b5e1736 --- /dev/null +++ b/assets/zjw_linked-list.md.DKumdPKd.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"链表","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/linked-list.md","filePath":"zjw/linked-list.md"}'),h={name:"zjw/linked-list.md"},k=n("",11),l=[k];function p(t,e,E,d,r,g){return a(),i("div",null,l)}const c=s(h,[["render",p]]);export{F as __pageData,c as default}; diff --git a/assets/zjw_react-router.md.DTfIZYpJ.js b/assets/zjw_react-router.md.DTfIZYpJ.js new file mode 100644 index 0000000..0d93caa --- /dev/null +++ b/assets/zjw_react-router.md.DTfIZYpJ.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/9.DyWMZ0Kk.webp",y=JSON.parse('{"title":"react-router 实现","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/react-router.md","filePath":"zjw/react-router.md"}'),n={name:"zjw/react-router.md"},e=t(`

react-router 实现

history

  • pushState 与 replaceState 改变路由,不会触发路由事件

  • 监听路由改变事件(只在浏览器行为下触发,前进后退、history 方法 forward、back、go)

    window.addEventListener('popstate',function(e){ // 监听改变 })

    需要修改 nginx 支持路由重定向到 index.html

nginx
 location / {
+   try_files $uri $uri/ /index.html;
+ }

hash

  • location.hash 设置改变路由

  • onhashchange 监听路由改变

    window.addEventListener('onhashchange',function(e){ // 监听改变 })

js
function push(path) {
+  location.hash = path;
+}
+function replace(path) {
+  const hashIndex = location.href.indexOf('#');
+  const href = hashIndex === -1 ? url : url.slice(0, hashIndex);
+
+  location.replace(href + '#' + path);
+}

总结

v5 版本:路由改变 history 创建新的 location 对象,Router 监听 history 触发的事件,并更新 RouterContext 的 location 值,触发 Switch 匹配 Route 并渲染

图片来源:https://juejin.cn/post/6886290490640039943

',11),l=[e];function p(k,r,d,o,E,c){return a(),i("div",null,l)}const u=s(n,[["render",p]]);export{y as __pageData,u as default}; diff --git a/assets/zjw_react-router.md.DTfIZYpJ.lean.js b/assets/zjw_react-router.md.DTfIZYpJ.lean.js new file mode 100644 index 0000000..99a3801 --- /dev/null +++ b/assets/zjw_react-router.md.DTfIZYpJ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as t}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/9.DyWMZ0Kk.webp",y=JSON.parse('{"title":"react-router 实现","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/react-router.md","filePath":"zjw/react-router.md"}'),n={name:"zjw/react-router.md"},e=t("",11),l=[e];function p(k,r,d,o,E,c){return a(),i("div",null,l)}const u=s(n,[["render",p]]);export{y as __pageData,u as default}; diff --git a/assets/zjw_react-router.md.b0bc65d4.js b/assets/zjw_react-router.md.b0bc65d4.js deleted file mode 100644 index f84e094..0000000 --- a/assets/zjw_react-router.md.b0bc65d4.js +++ /dev/null @@ -1,11 +0,0 @@ -import{_ as s,c as a,o as n,R as o}from"./chunks/framework.3876c926.js";const l="/daydayup/assets/9.745f77d0.webp",A=JSON.parse('{"title":"react-router 实现","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/react-router.md"}'),p={name:"zjw/react-router.md"},e=o(`

react-router 实现

history

  • pushState 与 replaceState 改变路由,不会触发路由事件

  • 监听路由改变事件(只在浏览器行为下触发,前进后退、history 方法 forward、back、go)

    window.addEventListener('popstate',function(e){ // 监听改变 })

    需要修改 nginx 支持路由重定向到 index.html

nginx
location / {
-   try_files $uri $uri/ /index.html;
- }

hash

  • location.hash 设置改变路由

  • onhashchange 监听路由改变

    window.addEventListener('onhashchange',function(e){ // 监听改变 })

js
function push(path) {
-  location.hash = path;
-}
-function replace(path) {
-  const hashIndex = location.href.indexOf('#');
-  const href = hashIndex === -1 ? url : url.slice(0, hashIndex);
-
-  location.replace(href + '#' + path);
-}

总结

v5 版本:路由改变 history 创建新的 location 对象,Router 监听 history 触发的事件,并更新 RouterContext 的 location 值,触发 Switch 匹配 Route 并渲染

图片来源:https://juejin.cn/post/6886290490640039943

',11),t=[e];function r(c,y,F,i,D,h){return n(),a("div",null,t)}const d=s(p,[["render",r]]);export{A as __pageData,d as default}; diff --git a/assets/zjw_react-router.md.b0bc65d4.lean.js b/assets/zjw_react-router.md.b0bc65d4.lean.js deleted file mode 100644 index 31f7050..0000000 --- a/assets/zjw_react-router.md.b0bc65d4.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as n,R as o}from"./chunks/framework.3876c926.js";const l="/daydayup/assets/9.745f77d0.webp",A=JSON.parse('{"title":"react-router 实现","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/react-router.md"}'),p={name:"zjw/react-router.md"},e=o("",11),t=[e];function r(c,y,F,i,D,h){return n(),a("div",null,t)}const d=s(p,[["render",r]]);export{A as __pageData,d as default}; diff --git a/assets/zjw_sandbox.md.0865631e.js b/assets/zjw_sandbox.md.0865631e.js deleted file mode 100644 index 20b2a5d..0000000 --- a/assets/zjw_sandbox.md.0865631e.js +++ /dev/null @@ -1,19 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const C=JSON.parse('{"title":"实现一个不能操作 DOM 的环境","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/sandbox.md"}'),o={name:"zjw/sandbox.md"},p=l(`

实现一个不能操作 DOM 的环境

实现一

通过 with 语句限制内部代码访问的上下文,再代理 window 对象

js
function sandbox(code, options) {
-  const { blackList, ctx } = options;
-  const innerCtx = new Proxy(ctx, {
-    has(target, prop) {
-      if (blackList.includes(prop)) {
-        throw new Error(\`cant use \${prop} in sandbox\`);
-      }
-
-      return Reflect.has(target, prop);
-    },
-  });
-
-  return new Function('ctx', \`with(ctx) { \${code} }\`).call(innerCtx, innerCtx);
-}
-
-sandbox('console.log(document)', {
-  blackList: ['document'],
-  ctx: window,
-});
`,4),t=[p];function e(c,r,F,y,D,A){return a(),n("div",null,t)}const d=s(o,[["render",e]]);export{C as __pageData,d as default}; diff --git a/assets/zjw_sandbox.md.0865631e.lean.js b/assets/zjw_sandbox.md.0865631e.lean.js deleted file mode 100644 index 489c8a8..0000000 --- a/assets/zjw_sandbox.md.0865631e.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const C=JSON.parse('{"title":"实现一个不能操作 DOM 的环境","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/sandbox.md"}'),o={name:"zjw/sandbox.md"},p=l("",4),t=[p];function e(c,r,F,y,D,A){return a(),n("div",null,t)}const d=s(o,[["render",e]]);export{C as __pageData,d as default}; diff --git a/assets/zjw_sandbox.md.DgdhC6rv.js b/assets/zjw_sandbox.md.DgdhC6rv.js new file mode 100644 index 0000000..e3652cb --- /dev/null +++ b/assets/zjw_sandbox.md.DgdhC6rv.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const o=JSON.parse('{"title":"实现一个不能操作 DOM 的环境","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/sandbox.md","filePath":"zjw/sandbox.md"}'),h={name:"zjw/sandbox.md"},t=n(`

实现一个不能操作 DOM 的环境

实现一

通过 with 语句限制内部代码访问的上下文,再代理 window 对象

js
function sandbox(code, options) {
+  const { blackList, ctx } = options;
+  const innerCtx = new Proxy(ctx, {
+    has(target, prop) {
+      if (blackList.includes(prop)) {
+        throw new Error(\`cant use \${prop} in sandbox\`);
+      }
+
+      return Reflect.has(target, prop);
+    },
+  });
+
+  return new Function('ctx', \`with(ctx) { \${code} }\`).call(innerCtx, innerCtx);
+}
+
+sandbox('console.log(document)', {
+  blackList: ['document'],
+  ctx: window,
+});
`,4),k=[t];function l(p,e,E,r,d,g){return a(),i("div",null,k)}const y=s(h,[["render",l]]);export{o as __pageData,y as default}; diff --git a/assets/zjw_sandbox.md.DgdhC6rv.lean.js b/assets/zjw_sandbox.md.DgdhC6rv.lean.js new file mode 100644 index 0000000..4459e6e --- /dev/null +++ b/assets/zjw_sandbox.md.DgdhC6rv.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const o=JSON.parse('{"title":"实现一个不能操作 DOM 的环境","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/sandbox.md","filePath":"zjw/sandbox.md"}'),h={name:"zjw/sandbox.md"},t=n("",4),k=[t];function l(p,e,E,r,d,g){return a(),i("div",null,k)}const y=s(h,[["render",l]]);export{o as __pageData,y as default}; diff --git a/assets/zjw_sort.md.Bm-jLNgr.js b/assets/zjw_sort.md.Bm-jLNgr.js new file mode 100644 index 0000000..cbd839a --- /dev/null +++ b/assets/zjw_sort.md.Bm-jLNgr.js @@ -0,0 +1,167 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/3.Ck8TSuHh.png",c=JSON.parse('{"title":"排序算法","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/sort.md","filePath":"zjw/sort.md"}'),k={name:"zjw/sort.md"},l=n('

排序算法

冒泡排序

javascript
function bubbleSort(nums) {
+  var n = nums.length;
+  var temp, didSwap;
+
+  for (var i = 0; i < n - 1; i++) {
+    didSwap = false;
+    for (var j = 0; j < n - i - 1; j++) {
+      if (nums[j] > nums[j + 1]) {
+        temp = nums[j];
+        nums[j] = nums[j + 1];
+        nums[j + 1] = temp;
+        didSwap = true;
+      }
+    }
+
+    // 正序情况下直接返回
+    if (!didSwap) {
+      return;
+    }
+  }
+}

归并排序

javascript
class Merge {
+  static temp;
+
+  static sort(nums) {
+    Merge.temp = [];
+    Merge._sort(nums, 0, nums.length - 1);
+  }
+
+  static _sort(nums, lo, hi) {
+    if (lo === hi) {
+      return;
+    }
+    var mid = lo + Math.floor((hi - lo) / 2);
+    Merge._sort(nums, lo, mid);
+    Merge._sort(nums, mid + 1, hi);
+    Merge.merge(nums, lo, mid, hi);
+  }
+
+  static merge(nums, lo, mid, hi) {
+    for (var i = lo; i <= hi; i++) {
+      Merge.temp[i] = nums[i];
+    }
+    // 合并两个升序数组 temp[lo,mid] temp[mid+1,hi]
+    var i = lo,
+      j = mid + 1;
+    for (var p = lo; p <= hi; p++) {
+      if (i === mid + 1) {
+        // 左半边数组被全部合并
+        nums[p] = Merge.temp[j++];
+      } else if (j === hi + 1) {
+        // 右半边数组被全部合并
+        nums[p] = Merge.temp[i++];
+      } else if (Merge.temp[i] > Merge.temp[j]) {
+        nums[p] = Merge.temp[j++];
+      } else {
+        nums[p] = Merge.temp[i++];
+      }
+    }
+  }
+}
+
+Merge.sort([5, 2, 3, 1]);

快速排序

js
function quickSort(nums) {
+  // 洗牌降低退化成一个链表的概率
+  shuffle(nums);
+  sort(nums, 0, nums.length - 1);
+  return nums;
+}
+
+function sort(nums, lo, hi) {
+  if (lo >= hi) {
+    return;
+  }
+  // 对 nums[lo..hi] 进行切分
+  // 使得 nums[lo..p-1] <= nums[p] < nums[p+1..hi]
+  var p = partition(nums, lo, hi);
+
+  sort(nums, lo, p - 1);
+  sort(nums, p + 1, hi);
+}
+
+function partition(nums, lo, hi) {
+  // [lo, i) <= pivot && (j, hi] > pivot
+  var pivot = nums[lo];
+  var i = lo + 1,
+    j = hi;
+
+  while (i <= j) {
+    while (i < hi && nums[i] <= pivot) i++;
+    while (j > lo && nums[j] > pivot) j--;
+
+    // 此时 [lo, i) <= pivot && (j, hi] > pivot
+    if (i >= j) {
+      break;
+    }
+    [nums[i], nums[j]] = [nums[j], nums[i]];
+  }
+  [nums[lo], nums[j]] = [nums[j], nums[lo]];
+  return j;
+}
+
+// 洗牌算法,将输入的数组随机打乱
+function shuffle(nums) {
+  for (var i = nums.length - 1; i > 0; i--) {
+    const j = Math.floor(Math.random() * (i + 1));
+
+    [nums[i], nums[j]] = [nums[j], nums[i]];
+  }
+}
js
function quickSort(nums) {
+  const stack = [[0, nums.length - 1]];
+
+  while (stack.length) {
+    const [lo, hi] = stack.pop();
+
+    if (lo >= hi) {
+      continue;
+    }
+
+    let p = partition(nums, lo, hi);
+
+    stack.push([lo, p - 1]);
+    stack.push([p + 1, hi]);
+  }
+
+  return nums;
+}

堆排序

javascript
function heapSort(nums) {
+  buildMaxHeap(nums);
+  for (var i = nums.length - 1; i >= 0; i--) {
+    // 交换堆顶与最后一个元素
+    [nums[i], nums[0]] = [nums[0], nums[i]];
+    // 下沉堆顶元素到合适位置
+    maxHeapify(nums, 0, i);
+  }
+}
+
+function buildMaxHeap(nums) {
+  var n = nums.length;
+  // 从低向上构建大堆
+  for (var i = Math.floor(n / 2) - 1; i >= 0; i--) {
+    maxHeapify(nums, i, n);
+  }
+}
+
+/**
+ *
+ * @param {*} nums
+ * @param {*} i 父节点下标
+ * @param {*} len 堆大小
+ */
+function maxHeapify(nums, i, len) {
+  var largest = i;
+  var left = i * 2 + 1;
+  var right = i * 2 + 2;
+
+  if (left < len && nums[left] > nums[largest]) {
+    largest = left;
+  }
+  if (right < len && nums[right] > nums[largest]) {
+    largest = right;
+  }
+
+  if (largest !== i) {
+    // 上浮大元素
+    [nums[i], nums[largest]] = [nums[largest], nums[i]];
+    // 下沉小元素
+    maxHeapify(nums, largest, len);
+  }
+}
`,10),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const A=s(k,[["render",t]]);export{c as __pageData,A as default}; diff --git a/assets/zjw_sort.md.Bm-jLNgr.lean.js b/assets/zjw_sort.md.Bm-jLNgr.lean.js new file mode 100644 index 0000000..c97ffd1 --- /dev/null +++ b/assets/zjw_sort.md.Bm-jLNgr.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const h="/daydayup/assets/3.Ck8TSuHh.png",c=JSON.parse('{"title":"排序算法","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/sort.md","filePath":"zjw/sort.md"}'),k={name:"zjw/sort.md"},l=n("",10),p=[l];function t(E,e,r,d,g,y){return a(),i("div",null,p)}const A=s(k,[["render",t]]);export{c as __pageData,A as default}; diff --git a/assets/zjw_sort.md.c1426320.js b/assets/zjw_sort.md.c1426320.js deleted file mode 100644 index 2d78e2a..0000000 --- a/assets/zjw_sort.md.c1426320.js +++ /dev/null @@ -1,167 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const p="/daydayup/assets/3.2f7a5266.png",f=JSON.parse('{"title":"排序算法","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/sort.md"}'),o={name:"zjw/sort.md"},t=l('

排序算法

冒泡排序

javascript
function bubbleSort(nums) {
-  var n = nums.length;
-  var temp, didSwap;
-
-  for (var i = 0; i < n - 1; i++) {
-    didSwap = false;
-    for (var j = 0; j < n - i - 1; j++) {
-      if (nums[j] > nums[j + 1]) {
-        temp = nums[j];
-        nums[j] = nums[j + 1];
-        nums[j + 1] = temp;
-        didSwap = true;
-      }
-    }
-
-    // 正序情况下直接返回
-    if (!didSwap) {
-      return;
-    }
-  }
-}

归并排序

javascript
class Merge {
-  static temp;
-
-  static sort(nums) {
-    Merge.temp = [];
-    Merge._sort(nums, 0, nums.length - 1);
-  }
-
-  static _sort(nums, lo, hi) {
-    if (lo === hi) {
-      return;
-    }
-    var mid = lo + Math.floor((hi - lo) / 2);
-    Merge._sort(nums, lo, mid);
-    Merge._sort(nums, mid + 1, hi);
-    Merge.merge(nums, lo, mid, hi);
-  }
-
-  static merge(nums, lo, mid, hi) {
-    for (var i = lo; i <= hi; i++) {
-      Merge.temp[i] = nums[i];
-    }
-    // 合并两个升序数组 temp[lo,mid] temp[mid+1,hi]
-    var i = lo,
-      j = mid + 1;
-    for (var p = lo; p <= hi; p++) {
-      if (i === mid + 1) {
-        // 左半边数组被全部合并
-        nums[p] = Merge.temp[j++];
-      } else if (j === hi + 1) {
-        // 右半边数组被全部合并
-        nums[p] = Merge.temp[i++];
-      } else if (Merge.temp[i] > Merge.temp[j]) {
-        nums[p] = Merge.temp[j++];
-      } else {
-        nums[p] = Merge.temp[i++];
-      }
-    }
-  }
-}
-
-Merge.sort([5, 2, 3, 1]);

快速排序

js
function quickSort(nums) {
-  // 洗牌降低退化成一个链表的概率
-  shuffle(nums);
-  sort(nums, 0, nums.length - 1);
-  return nums;
-}
-
-function sort(nums, lo, hi) {
-  if (lo >= hi) {
-    return;
-  }
-  // 对 nums[lo..hi] 进行切分
-  // 使得 nums[lo..p-1] <= nums[p] < nums[p+1..hi]
-  var p = partition(nums, lo, hi);
-
-  sort(nums, lo, p - 1);
-  sort(nums, p + 1, hi);
-}
-
-function partition(nums, lo, hi) {
-  // [lo, i) <= pivot && (j, hi] > pivot
-  var pivot = nums[lo];
-  var i = lo + 1,
-    j = hi;
-
-  while (i <= j) {
-    while (i < hi && nums[i] <= pivot) i++;
-    while (j > lo && nums[j] > pivot) j--;
-
-    // 此时 [lo, i) <= pivot && (j, hi] > pivot
-    if (i >= j) {
-      break;
-    }
-    [nums[i], nums[j]] = [nums[j], nums[i]];
-  }
-  [nums[lo], nums[j]] = [nums[j], nums[lo]];
-  return j;
-}
-
-// 洗牌算法,将输入的数组随机打乱
-function shuffle(nums) {
-  for (var i = nums.length - 1; i > 0; i--) {
-    const j = Math.floor(Math.random() * (i + 1));
-
-    [nums[i], nums[j]] = [nums[j], nums[i]];
-  }
-}
js
function quickSort(nums) {
-  const stack = [[0, nums.length - 1]];
-
-  while (stack.length) {
-    const [lo, hi] = stack.pop();
-
-    if (lo >= hi) {
-      continue;
-    }
-
-    let p = partition(nums, lo, hi);
-
-    stack.push([lo, p - 1]);
-    stack.push([p + 1, hi]);
-  }
-
-  return nums;
-}

堆排序

javascript
function heapSort(nums) {
-  buildMaxHeap(nums);
-  for (var i = nums.length - 1; i >= 0; i--) {
-    // 交换堆顶与最后一个元素
-    [nums[i], nums[0]] = [nums[0], nums[i]];
-    // 下沉堆顶元素到合适位置
-    maxHeapify(nums, 0, i);
-  }
-}
-
-function buildMaxHeap(nums) {
-  var n = nums.length;
-  // 从低向上构建大堆
-  for (var i = Math.floor(n / 2) - 1; i >= 0; i--) {
-    maxHeapify(nums, i, n);
-  }
-}
-
-/**
- *
- * @param {*} nums
- * @param {*} i 父节点下标
- * @param {*} len 堆大小
- */
-function maxHeapify(nums, i, len) {
-  var largest = i;
-  var left = i * 2 + 1;
-  var right = i * 2 + 2;
-
-  if (left < len && nums[left] > nums[largest]) {
-    largest = left;
-  }
-  if (right < len && nums[right] > nums[largest]) {
-    largest = right;
-  }
-
-  if (largest !== i) {
-    // 上浮大元素
-    [nums[i], nums[largest]] = [nums[largest], nums[i]];
-    // 下沉小元素
-    maxHeapify(nums, largest, len);
-  }
-}
`,10),e=[t];function c(r,y,F,D,C,A){return a(),n("div",null,e)}const m=s(o,[["render",c]]);export{f as __pageData,m as default}; diff --git a/assets/zjw_sort.md.c1426320.lean.js b/assets/zjw_sort.md.c1426320.lean.js deleted file mode 100644 index dcd4c7a..0000000 --- a/assets/zjw_sort.md.c1426320.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const p="/daydayup/assets/3.2f7a5266.png",f=JSON.parse('{"title":"排序算法","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/sort.md"}'),o={name:"zjw/sort.md"},t=l("",10),e=[t];function c(r,y,F,D,C,A){return a(),n("div",null,e)}const m=s(o,[["render",c]]);export{f as __pageData,m as default}; diff --git a/assets/zjw_transform-tree.md.4415d31c.js b/assets/zjw_transform-tree.md.4415d31c.js deleted file mode 100644 index 9bd5e99..0000000 --- a/assets/zjw_transform-tree.md.4415d31c.js +++ /dev/null @@ -1,60 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"扁平数据结构转换成树","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/transform-tree.md"}'),p={name:"zjw/transform-tree.md"},o=l(`

扁平数据结构转换成树

input

js
let arr = [
-  { id: 1, name: '部门1', pid: 0 },
-  { id: 2, name: '部门2', pid: 1 },
-  { id: 3, name: '部门3', pid: 1 },
-  { id: 4, name: '部门4', pid: 3 },
-  { id: 5, name: '部门5', pid: 4 },
-];

output

js
[
-  {
-    id: 1,
-    name: '部门1',
-    children: [
-      { id: 2, name: '部门2', pid: 1 },
-      {
-        id: 3,
-        name: '部门3',
-        pid: 1,
-        children: [
-          // ...
-        ],
-      },
-    ],
-  },
-];

实现一:递归

js
function getChildren(arr, id, result = []) {
-  arr.forEach((m) => {
-    if (m.pid === id) {
-      result.push({
-        ...m,
-        children: getChildren(arr, m.id),
-      });
-    }
-  });
-
-  return result;
-}

实现二:Map

js
function gerenteTree(arr) {
-  const map = {};
-  const result = [];
-
-  arr.forEach((m) => {
-    const { id, pid } = m;
-    const item = {
-      ...m,
-      children: map[id] ? map[id].children : [],
-    };
-
-    map[id] = item;
-
-    if (pid === 0) {
-      result.push(item);
-    } else {
-      if (!map[pid]) {
-        map[pid] = {
-          children: [],
-        };
-      }
-      map[pid].children.push(item);
-    }
-  });
-
-  return result;
-}

结论

  • 递归时间复杂度:O(n logk n) 最坏情况下(k=1)等于 n^2,空间复杂度 O(n)
  • Map 时间复杂度:O(n) 空间复杂度 O(n)

当 n 越大时采用实现二更优

`,12),e=[o];function t(c,r,F,y,D,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default}; diff --git a/assets/zjw_transform-tree.md.4415d31c.lean.js b/assets/zjw_transform-tree.md.4415d31c.lean.js deleted file mode 100644 index c58b9f8..0000000 --- a/assets/zjw_transform-tree.md.4415d31c.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"扁平数据结构转换成树","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/transform-tree.md"}'),p={name:"zjw/transform-tree.md"},o=l("",12),e=[o];function t(c,r,F,y,D,C){return a(),n("div",null,e)}const d=s(p,[["render",t]]);export{i as __pageData,d as default}; diff --git a/assets/zjw_transform-tree.md.BWHY7563.js b/assets/zjw_transform-tree.md.BWHY7563.js new file mode 100644 index 0000000..a965410 --- /dev/null +++ b/assets/zjw_transform-tree.md.BWHY7563.js @@ -0,0 +1,60 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const c=JSON.parse('{"title":"扁平数据结构转换成树","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/transform-tree.md","filePath":"zjw/transform-tree.md"}'),h={name:"zjw/transform-tree.md"},p=n(`

扁平数据结构转换成树

input

js
let arr = [
+  { id: 1, name: '部门1', pid: 0 },
+  { id: 2, name: '部门2', pid: 1 },
+  { id: 3, name: '部门3', pid: 1 },
+  { id: 4, name: '部门4', pid: 3 },
+  { id: 5, name: '部门5', pid: 4 },
+];

output

js
[
+  {
+    id: 1,
+    name: '部门1',
+    children: [
+      { id: 2, name: '部门2', pid: 1 },
+      {
+        id: 3,
+        name: '部门3',
+        pid: 1,
+        children: [
+          // ...
+        ],
+      },
+    ],
+  },
+];

实现一:递归

js
function getChildren(arr, id, result = []) {
+  arr.forEach((m) => {
+    if (m.pid === id) {
+      result.push({
+        ...m,
+        children: getChildren(arr, m.id),
+      });
+    }
+  });
+
+  return result;
+}

实现二:Map

js
function gerenteTree(arr) {
+  const map = {};
+  const result = [];
+
+  arr.forEach((m) => {
+    const { id, pid } = m;
+    const item = {
+      ...m,
+      children: map[id] ? map[id].children : [],
+    };
+
+    map[id] = item;
+
+    if (pid === 0) {
+      result.push(item);
+    } else {
+      if (!map[pid]) {
+        map[pid] = {
+          children: [],
+        };
+      }
+      map[pid].children.push(item);
+    }
+  });
+
+  return result;
+}

结论

  • 递归时间复杂度:O(n logk n) 最坏情况下(k=1)等于 n^2,空间复杂度 O(n)
  • Map 时间复杂度:O(n) 空间复杂度 O(n)

当 n 越大时采用实现二更优

`,12),l=[p];function k(t,E,e,r,d,g){return a(),i("div",null,l)}const F=s(h,[["render",k]]);export{c as __pageData,F as default}; diff --git a/assets/zjw_transform-tree.md.BWHY7563.lean.js b/assets/zjw_transform-tree.md.BWHY7563.lean.js new file mode 100644 index 0000000..279b482 --- /dev/null +++ b/assets/zjw_transform-tree.md.BWHY7563.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const c=JSON.parse('{"title":"扁平数据结构转换成树","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/transform-tree.md","filePath":"zjw/transform-tree.md"}'),h={name:"zjw/transform-tree.md"},p=n("",12),l=[p];function k(t,E,e,r,d,g){return a(),i("div",null,l)}const F=s(h,[["render",k]]);export{c as __pageData,F as default}; diff --git a/assets/zjw_webpack-pack-optimization.md.CKTxYpQR.js b/assets/zjw_webpack-pack-optimization.md.CKTxYpQR.js new file mode 100644 index 0000000..71ae5fa --- /dev/null +++ b/assets/zjw_webpack-pack-optimization.md.CKTxYpQR.js @@ -0,0 +1,94 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const g=JSON.parse('{"title":"webpack 打包速度优化","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/webpack-pack-optimization.md","filePath":"zjw/webpack-pack-optimization.md"}'),l={name:"zjw/webpack-pack-optimization.md"},p=n(`

webpack 打包速度优化

webpack 是个模块化打包工具,所以影响打包速度的因素主要取决于打包量。

我们将从减少打包量和 webpack 配置优化两方面讲解优化方法。

减少打包量

1.模块按需引入

例如 antd、echarts、lodash 都支持按需引入,其它支持请查看各包使用文档

diff
! lodash
+-import _ from 'lodash';
++import _map from 'lodash/map';
+
+var users = [
+  { 'user': 'barney' },
+  { 'user': 'fred' }
+];
+
+// => ['barney', 'fred']
+-_.map(users, 'user');
++_map(users, 'user');
+
+! antd
+-import { Button } from 'antd';
++import Button from 'antd/lib/button';
++import 'antd/lib/button/style/css';
+// 如果整体引入样式(import 'antd/dist/antd.css'),则css无法按需引入
+
+! echarts
+-import echarts from 'echarts';
++import echarts from 'echarts/lib/echarts';
++import 'echarts/lib/component/tooltip';
++import 'echarts/lib/component/title';
++import 'echarts/lib/chart/line';

一些插件可以保持当前整体引入的写法,通过插件自动转换成按需引入写法

2.移除未使用的引入模块

未使用的引入,webpack 还是会进行打包,可以开启 eslint 的 no-unused-vars 规则为 error 避免不必要的导入,还可以限制空函数等。

3.统一技术栈,避免同类型包引入

webpack 配置优化

开发环境应该避免不必要的 loader 与 plugin ,如 postcss,uglifyjs-webpack-plugin 等,只启用保证运行的工具。

1.移除不必要的 polyfill 与兼容 loader(适用 dev)

diff
//webpack.config.dev.js
+module.exports = {
+  entry: [
+-   require.resolve('./polyfills')
+  ],
+  module: {
+    rules: [
+      {
+        test: /\\.css$/,
+        use: [
+              'style-loader',
+              'css-loader',
+-             'postcss-loader'
+              ]
+      }
+    ]
+  }
+};

2.DllPlugin 预编译与 IgnorePlugin 忽略语言文件打包(适用 dev 和 prod)

可以通过 DllPlugin 插件将公共模块预编译,减少构建时间

  • 创建 config/webpack.config.dll.js 文件
js
const path = require('path');
+const webpack = require('webpack');
+
+module.exports = {
+  entry: {
+    vendor: [
+      'react',
+      'react-dom',
+      'react-router',
+      'react-router-dom',
+      'react-router-redux',
+      'redux',
+      'react-redux',
+      'redux-thunk',
+      'axios',
+      'react-intl-universal',
+      'antd'
+    ]
+  },
+  output: {
+    path: path.join(__dirname, '../public/static/js'), // 放在项目的static/js目录下面
+    filename: '[name].dll.js', // 打包文件的名字
+    library: '[name]_library' // 暴露出的全局变量名,需要与插件name对应
+  },
+  plugins: [
+    new webpack.IgnorePlugin(/^\\.\\/locale$/, /moment$/),
+    new webpack.DllPlugin({
+      path: path.join(__dirname, '[name]-manifest.json'), // 生成模块清单文件
+      name: '[name]_library'
+    }),
+    new webpack.optimize.UglifyJsPlugin({
+      compress: {
+        warnings: false,
+        comparisons: false
+      },
+      output: {
+        comments: false,
+        ascii_only: true
+      },
+      parallel: true, // 并行压缩代码
+      sourceMap: true
+    })
+  ],
+  devtool: 'source-map'
+};
  • 修改 package.json 的 scripts
diff
  "scripts": {
++    "build:dll": "webpack --config config/webpack.config.dll.js -p"
+  }

运行 npm run build:dll 会在 config/ 下生成 vendor-manifest.json 打包清单文件,用于 DllReferencePlugin 插件忽略掉已预编译的模块,从而减少打包量。 同时会在 public/static/js/ 下生成打包文件

  • 修改 dev 与 prod 的 webpack 配置文件
diff
module.exports = {
+  plugins: [
++    new webpack.DllReferencePlugin({
++     manifest: require('./vendor-manifest.json')
++    })
+  ]
+};
  • 修改 index.html 添加 dll 包的引用
diff
+  <script src="%PUBLIC_URL%/static/js/vendor.dll.js"></script>

注:如果报公共库找不到,先检查 public/static/js/vendor.dll.js 是否存在,否则先构建公共库 npm run build:dll,如果修改或升级预编译的模块也需要重新构建公共库

升级 webpack 等构建工具

`,28),h=[p];function e(t,k,E,r,d,c){return a(),i("div",null,h)}const y=s(l,[["render",e]]);export{g as __pageData,y as default}; diff --git a/assets/zjw_webpack-pack-optimization.md.CKTxYpQR.lean.js b/assets/zjw_webpack-pack-optimization.md.CKTxYpQR.lean.js new file mode 100644 index 0000000..b2d375c --- /dev/null +++ b/assets/zjw_webpack-pack-optimization.md.CKTxYpQR.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const g=JSON.parse('{"title":"webpack 打包速度优化","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/webpack-pack-optimization.md","filePath":"zjw/webpack-pack-optimization.md"}'),l={name:"zjw/webpack-pack-optimization.md"},p=n("",28),h=[p];function e(t,k,E,r,d,c){return a(),i("div",null,h)}const y=s(l,[["render",e]]);export{g as __pageData,y as default}; diff --git a/assets/zjw_webpack-pack-optimization.md.bd8e6393.js b/assets/zjw_webpack-pack-optimization.md.bd8e6393.js deleted file mode 100644 index 379dee7..0000000 --- a/assets/zjw_webpack-pack-optimization.md.bd8e6393.js +++ /dev/null @@ -1,94 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const A=JSON.parse('{"title":"webpack 打包速度优化","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/webpack-pack-optimization.md"}'),p={name:"zjw/webpack-pack-optimization.md"},o=l(`

webpack 打包速度优化

webpack 是个模块化打包工具,所以影响打包速度的因素主要取决于打包量。

我们将从减少打包量和 webpack 配置优化两方面讲解优化方法。

减少打包量

1.模块按需引入

例如 antd、echarts、lodash 都支持按需引入,其它支持请查看各包使用文档

diff
! lodash
--import _ from 'lodash';
-+import _map from 'lodash/map';
-
-var users = [
-  { 'user': 'barney' },
-  { 'user': 'fred' }
-];
-
-// => ['barney', 'fred']
--_.map(users, 'user');
-+_map(users, 'user');
-
-! antd
--import { Button } from 'antd';
-+import Button from 'antd/lib/button';
-+import 'antd/lib/button/style/css';
-// 如果整体引入样式(import 'antd/dist/antd.css'),则css无法按需引入
-
-! echarts
--import echarts from 'echarts';
-+import echarts from 'echarts/lib/echarts';
-+import 'echarts/lib/component/tooltip';
-+import 'echarts/lib/component/title';
-+import 'echarts/lib/chart/line';

一些插件可以保持当前整体引入的写法,通过插件自动转换成按需引入写法

2.移除未使用的引入模块

未使用的引入,webpack 还是会进行打包,可以开启 eslint 的 no-unused-vars 规则为 error 避免不必要的导入,还可以限制空函数等。

3.统一技术栈,避免同类型包引入

webpack 配置优化

开发环境应该避免不必要的 loader 与 plugin ,如 postcss,uglifyjs-webpack-plugin 等,只启用保证运行的工具。

1.移除不必要的 polyfill 与兼容 loader(适用 dev)

diff
//webpack.config.dev.js
-module.exports = {
-  entry: [
--   require.resolve('./polyfills')
-  ],
-  module: {
-    rules: [
-      {
-        test: /\\.css$/,
-        use: [
-              'style-loader',
-              'css-loader',
--             'postcss-loader'
-              ]
-      }
-    ]
-  }
-};

2.DllPlugin 预编译与 IgnorePlugin 忽略语言文件打包(适用 dev 和 prod)

可以通过 DllPlugin 插件将公共模块预编译,减少构建时间

  • 创建 config/webpack.config.dll.js 文件
js
const path = require('path');
-const webpack = require('webpack');
-
-module.exports = {
-  entry: {
-    vendor: [
-      'react',
-      'react-dom',
-      'react-router',
-      'react-router-dom',
-      'react-router-redux',
-      'redux',
-      'react-redux',
-      'redux-thunk',
-      'axios',
-      'react-intl-universal',
-      'antd'
-    ]
-  },
-  output: {
-    path: path.join(__dirname, '../public/static/js'), // 放在项目的static/js目录下面
-    filename: '[name].dll.js', // 打包文件的名字
-    library: '[name]_library' // 暴露出的全局变量名,需要与插件name对应
-  },
-  plugins: [
-    new webpack.IgnorePlugin(/^\\.\\/locale$/, /moment$/),
-    new webpack.DllPlugin({
-      path: path.join(__dirname, '[name]-manifest.json'), // 生成模块清单文件
-      name: '[name]_library'
-    }),
-    new webpack.optimize.UglifyJsPlugin({
-      compress: {
-        warnings: false,
-        comparisons: false
-      },
-      output: {
-        comments: false,
-        ascii_only: true
-      },
-      parallel: true, // 并行压缩代码
-      sourceMap: true
-    })
-  ],
-  devtool: 'source-map'
-};
  • 修改 package.json 的 scripts
diff
"scripts": {
-+    "build:dll": "webpack --config config/webpack.config.dll.js -p"
-  }

运行 npm run build:dll 会在 config/ 下生成 vendor-manifest.json 打包清单文件,用于 DllReferencePlugin 插件忽略掉已预编译的模块,从而减少打包量。 同时会在 public/static/js/ 下生成打包文件

  • 修改 dev 与 prod 的 webpack 配置文件
diff
module.exports = {
-  plugins: [
-+    new webpack.DllReferencePlugin({
-+     manifest: require('./vendor-manifest.json')
-+    })
-  ]
-};
  • 修改 index.html 添加 dll 包的引用
diff
+  <script src="%PUBLIC_URL%/static/js/vendor.dll.js"></script>

注:如果报公共库找不到,先检查 public/static/js/vendor.dll.js 是否存在,否则先构建公共库 npm run build:dll,如果修改或升级预编译的模块也需要重新构建公共库

升级 webpack 等构建工具

`,28),e=[o];function c(t,r,D,y,i,F){return n(),a("div",null,e)}const d=s(p,[["render",c]]);export{A as __pageData,d as default}; diff --git a/assets/zjw_webpack-pack-optimization.md.bd8e6393.lean.js b/assets/zjw_webpack-pack-optimization.md.bd8e6393.lean.js deleted file mode 100644 index 8aed874..0000000 --- a/assets/zjw_webpack-pack-optimization.md.bd8e6393.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as n,R as l}from"./chunks/framework.3876c926.js";const A=JSON.parse('{"title":"webpack 打包速度优化","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/webpack-pack-optimization.md"}'),p={name:"zjw/webpack-pack-optimization.md"},o=l("",28),e=[o];function c(t,r,D,y,i,F){return n(),a("div",null,e)}const d=s(p,[["render",c]]);export{A as __pageData,d as default}; diff --git a/assets/zjw_webpack.md.M_XiAUUo.js b/assets/zjw_webpack.md.M_XiAUUo.js new file mode 100644 index 0000000..c349fda --- /dev/null +++ b/assets/zjw_webpack.md.M_XiAUUo.js @@ -0,0 +1,9 @@ +import{_ as i,c as a,o as s,a4 as e}from"./chunks/framework.D5F7AbHZ.js";const g=JSON.parse('{"title":"webpack 总览","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/webpack.md","filePath":"zjw/webpack.md"}'),l={name:"zjw/webpack.md"},t=e(`

webpack 总览

loader 用于转换某些类型的模块,插件则用于扩展 webpack 功能,通过注入钩子参与构建流程

构建流程

  1. 初始化参数
  2. 通过参数初始化 Compiler 对象,加载所有配置的插件,执行 run 方法开始编译
  3. 根据 entry 递归找到所有依赖,并根据文件类型,使用配置 loader 处理文件
  4. 完成所有模块转换后,构建依赖图
  5. 根据依赖图组装成一个个包含多模块的 chunk,再把 chunk 加入输出列表(插件最后修改输出内容时机)
  6. 根据配置确定输出内容的路径与文件名,写入文件系统

打包速度优化(简言之:减少打包量、并行、缓存、预构建)

  • 缩小处理文件
    • resolve.alias:直接指定打包好的代码(仅开发)
    • 优化 loader 配置:开启缓存、include 减少匹配文件
    • 减少文件匹配路径:resolve 匹配规则
    • 优化解析规则:module.noParse 指定不使用模块化解析文件
    • 按需加载
    • 懒编译
  • 并行打包
  • 构建缓存
  • 模块联邦

webpack4 打包速度优化文档【旧】

webpack HRM 原理

webpack-dev-server 向网页注入用于连接开发服务的客户端代码,在代码变更时编译出新的补丁文件,发送到网页执行

当模块变更后,更新事件会向上传递,直到某层接受了当前变化的模块,就会调用 callback 去执行自定义逻辑。当上抛到最外层没有被接受,就会刷新整个网页

js
if (module.hot) {
+  module.hot.accept(['./App'], () => {
+    render(<App />, window.document.getElementById('app'));
+  });
+}

Scope Hoisting(作用域提升)

合并 ES6 模块导入,且只被引用一次

好处:代码体积更小;内存开销减少,通过减少作用域创建函数

Compiler 和 Compilation

compiler 代表了整个 Webpack 从启动到关闭的生命周期,而 compilation 只是代表了一次新的编译,由 compiler 每次构建创建

compilation 包含了当前的模块资源、编译生成资源、变化的文件等

loader 用法

js
{
+  // 用正则去匹配要用该 loader 转换的 CSS 文件
+  test: /\\.css$/,
+  use: ['style-loader', 'css-loader?minimize']
+}
  • use 属性由 loader 名称组成的数组,loader 从后往前执行
  • 每个 loader 可以通过 URL querystring 方式传入参数,也可以通过对象形式传入 { loader: 'css-loader', options: { minimize: true } }
  • 内联方式使用 loader,import '!style-loader!css-loader?minimize!./styles.css'

loader 执行循序

`,21),n=[t];function h(p,r,k,o,d,c){return s(),a("div",null,n)}const u=i(l,[["render",h]]);export{g as __pageData,u as default}; diff --git a/assets/zjw_webpack.md.M_XiAUUo.lean.js b/assets/zjw_webpack.md.M_XiAUUo.lean.js new file mode 100644 index 0000000..da30a6f --- /dev/null +++ b/assets/zjw_webpack.md.M_XiAUUo.lean.js @@ -0,0 +1 @@ +import{_ as i,c as a,o as s,a4 as e}from"./chunks/framework.D5F7AbHZ.js";const g=JSON.parse('{"title":"webpack 总览","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/webpack.md","filePath":"zjw/webpack.md"}'),l={name:"zjw/webpack.md"},t=e("",21),n=[t];function h(p,r,k,o,d,c){return s(),a("div",null,n)}const u=i(l,[["render",h]]);export{g as __pageData,u as default}; diff --git a/assets/zjw_webpack.md.f23ad039.js b/assets/zjw_webpack.md.f23ad039.js deleted file mode 100644 index 8a5e4ba..0000000 --- a/assets/zjw_webpack.md.f23ad039.js +++ /dev/null @@ -1,9 +0,0 @@ -import{_ as a,c as s,o as l,R as o}from"./chunks/framework.3876c926.js";const h=JSON.parse('{"title":"webpack 总览","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/webpack.md"}'),e={name:"zjw/webpack.md"},n=o(`

webpack 总览

loader 用于转换某些类型的模块,插件则用于扩展 webpack 功能,通过注入钩子参与构建流程

构建流程

  1. 初始化参数
  2. 通过参数初始化 Compiler 对象,加载所有配置的插件,执行 run 方法开始编译
  3. 根据 entry 递归找到所有依赖,并根据文件类型,使用配置 loader 处理文件
  4. 完成所有模块转换后,构建依赖图
  5. 根据依赖图组装成一个个包含多模块的 chunk,再把 chunk 加入输出列表(插件最后修改输出内容时机)
  6. 根据配置确定输出内容的路径与文件名,写入文件系统

打包速度优化(简言之:减少打包量、并行、缓存、预构建)

  • 缩小处理文件
    • resolve.alias:直接指定打包好的代码(仅开发)
    • 优化 loader 配置:开启缓存、include 减少匹配文件
    • 减少文件匹配路径:resolve 匹配规则
    • 优化解析规则:module.noParse 指定不使用模块化解析文件
    • 按需加载
    • 懒编译
  • 并行打包
  • 构建缓存
  • 模块联邦

webpack4 打包速度优化文档【旧】

webpack HRM 原理

webpack-dev-server 向网页注入用于连接开发服务的客户端代码,在代码变更时编译出新的补丁文件,发送到网页执行

当模块变更后,更新事件会向上传递,直到某层接受了当前变化的模块,就会调用 callback 去执行自定义逻辑。当上抛到最外层没有被接受,就会刷新整个网页

js
if (module.hot) {
-  module.hot.accept(['./App'], () => {
-    render(<App />, window.document.getElementById('app'));
-  });
-}

Scope Hoisting(作用域提升)

合并 ES6 模块导入,且只被引用一次

好处:代码体积更小;内存开销减少,通过减少作用域创建函数

Compiler 和 Compilation

compiler 代表了整个 Webpack 从启动到关闭的生命周期,而 compilation 只是代表了一次新的编译,由 compiler 每次构建创建

compilation 包含了当前的模块资源、编译生成资源、变化的文件等

loader 用法

js
{
-  // 用正则去匹配要用该 loader 转换的 CSS 文件
-  test: /\\.css$/,
-  use: ['style-loader', 'css-loader?minimize']
-}
  • use 属性由 loader 名称组成的数组,loader 从后往前执行
  • 每个 loader 可以通过 URL querystring 方式传入参数,也可以通过对象形式传入 { loader: 'css-loader', options: { minimize: true } }
  • 内联方式使用 loader,import '!style-loader!css-loader?minimize!./styles.css'

loader 执行循序

`,21),p=[n];function t(r,c,i,F,y,d){return l(),s("div",null,p)}const m=a(e,[["render",t]]);export{h as __pageData,m as default}; diff --git a/assets/zjw_webpack.md.f23ad039.lean.js b/assets/zjw_webpack.md.f23ad039.lean.js deleted file mode 100644 index d569913..0000000 --- a/assets/zjw_webpack.md.f23ad039.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as s,o as l,R as o}from"./chunks/framework.3876c926.js";const h=JSON.parse('{"title":"webpack 总览","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/webpack.md"}'),e={name:"zjw/webpack.md"},n=o("",21),p=[n];function t(r,c,i,F,y,d){return l(),s("div",null,p)}const m=a(e,[["render",t]]);export{h as __pageData,m as default}; diff --git "a/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.2bdbb8db.js" "b/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.2bdbb8db.js" deleted file mode 100644 index 92aab74..0000000 --- "a/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.2bdbb8db.js" +++ /dev/null @@ -1,292 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"前端常见手写代码","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/前端常见手写代码.md"}'),p={name:"zjw/前端常见手写代码.md"},o=l(`

前端常见手写代码

防抖

用于用户频繁触发某个事件(如输入搜索),避免函数被频繁执行,最近一次触发需要等待一定的时间间隔才会被执行,如果期间再次触发执行,则重置定时器,直到停止触发等待足够时间

js
function debounce(fn, delay) {
-  var timer;
-
-  return function () {
-    clearTimeout(timer);
-    timer = setTimeout(fn.bind(this, ...arguments), delay);
-  };
-}
-
-// 测试
-function task() {
-  console.log('run task', arguments);
-}
-const debounceTask = debounce(task, 1000);
-window.addEventListener('scroll', debounceTask);

首次立即执行

js
function debounce(fn, delay) {
-  var timer = null;
-
-  return function () {
-    clearTimeout(timer);
-
-    const f = fn.bind(this, ...arguments);
-    const callNow = !timer;
-
-    if (callNow) {
-      f();
-    }
-    timer = setTimeout(() => {
-      timer = null;
-      // 非首次调用
-      if (!callNow) {
-        f();
-      }
-    }, delay);
-  };
-}

节流

用于限制函数执行频率

javascript
function throttle(fn, delay) {
-  var last = 0;
-  var timer;
-
-  return function () {
-    const now = Date.now();
-
-    clearTimeout(timer);
-    if (now - last >= delay) {
-      last = now;
-      fn.apply(this, arguments);
-    } else {
-      timer = setTimeout(() => {
-        fn.apply(this, arguments);
-        last = Date.now();
-      }, delay - (now - last));
-    }
-  };
-}

深拷贝

JSON 方法

javascript
// 不支持值为 undefined、函数和循环引用的情况
-const cloneObj = JSON.parse(JSON.stringify(obj));

递归拷贝

js
function deepClone(obj) {
-  if (obj === null || typeof obj !== 'object') {
-    return obj;
-  }
-
-  const copy = Array.isArray(obj) ? [] : {};
-
-  for (let key in obj) {
-    if (obj.hasOwnProperty(key)) {
-      copy[key] = deepClone(obj[key]);
-    }
-  }
-
-  return copy;
-}

stringify 方法实现

js
function stringify(obj) {
-  if (obj === null || typeof obj !== 'object') {
-    // 数组 undefined 会被转换成 null
-    return obj === undefined || obj === null ? 'null' : obj;
-  }
-  if (Array.isArray(obj)) {
-    return '[' + json.map((m) => stringify(m)).join(',') + ']';
-  }
-
-  return (
-    '{' +
-    Object.keys(obj)
-      // 过滤值为 undefined 的 key
-      .filter((key) => obj[key] !== undefined)
-      .map((key) => \`"\${key}":\${stringify(obj[key])}\`)
-      .join(',') +
-    '}'
-  );
-}

继承

ES5 继承

组合继承

javascript
function Parent(value) {
-  this.val = value;
-}
-Parent.prototype.getValue = function () {
-  console.log(this.val);
-};
-function Child(value) {
-  Parent.call(this, value);
-}
-Child.prototype = new Parent();
  • 缺点:原型上创建了父类属性(调用父类构造函数导致)

寄生组合继承

javascript
function Parent(value) {
-  this.val = value;
-}
-Parent.prototype.getValue = function () {
-  console.log(this.val);
-};
-
-function Child(value) {
-  Parent.call(this, value);
-}
-Child.prototype = Object.create(Parent.prototype, {
-  // 原型构造函数指向Child
-  constructor: {
-    value: Child,
-    enumerable: false,
-    writable: true,
-    configurable: true,
-  },
-});

ES6 继承

javascript
class Parent {
-  constructor(value) {
-    this.val = value;
-  }
-  getValue() {
-    console.log(this.val);
-  }
-}
-class Child extends Parent {
-  constructor(value) {
-    super(value);
-  }
-}

数组去重

Set

javascript
[...new Set([1, 3, 4, 5, 3, 1])];

Map

javascript
function uniq(arr) {
-  var visited = {};
-  var res = [];
-
-  for (e of arr) {
-    if (visited[e]) continue;
-    res.push(e);
-    visited[e] = true;
-  }
-  return res;
-}

虚拟滚动

tsx
import React, { useState, useCallback, useRef, useEffect } from 'react';
-
-export interface VirtualScrollProps {
-  items: string[];
-  height: number;
-  rowHeight: number;
-}
-
-export default function VirtualScroll({ items, height, rowHeight }: VirtualScrollProps) {
-  // 保存滚动条位置的状态
-  const [scrollTop, setScrollTop] = useState(0);
-  // 获取列表容器元素的引用
-  const containerRef = useRef<HTMLDivElement>(null);
-  // 计算可见区域的行数
-  const visibleRowCount = Math.ceil(height / rowHeight);
-
-  // 监听滚动条的滚动事件,更新滚动条位置的状态
-  const handleScroll = useCallback(() => {
-    const scrollTop = containerRef.current!.scrollTop;
-    setScrollTop(scrollTop);
-  }, []);
-
-  // 使用 useEffect 添加滚动条滚动事件的监听器,并在组件卸载时移除监听器
-  useEffect(() => {
-    const container = containerRef.current;
-    container!.addEventListener('scroll', handleScroll);
-    return () => {
-      container!.removeEventListener('scroll', handleScroll);
-    };
-  }, [handleScroll]);
-
-  // 计算可见区域的起始行和结束行
-  const start = Math.floor(scrollTop / rowHeight);
-  const end = Math.min(start + visibleRowCount + 1, items.length);
-
-  // 渲染可见区域内的元素
-  const visibleItems = items.slice(start, end).map((item, index) => (
-    <div key={start + index} style={{ height: rowHeight }}>
-      {item}
-    </div>
-  ));
-
-  // 计算列表容器的 paddingTop 和 paddingBottom,确保可见区域内的元素能够正确地垂直对齐
-  const paddingTop = start * rowHeight;
-  const paddingBottom = (items.length - end) * rowHeight;
-
-  return (
-    <div ref={containerRef} style={{ height, overflowY: 'scroll' }}>
-      {/* 使用 paddingTop 和 paddingBottom 让可见区域内的元素能够正确地垂直对齐 */}
-      <div style={{ paddingTop, paddingBottom }}>{visibleItems}</div>
-    </div>
-  );
-}

限制最大并发数

js
function limit(maxCount) {
-  return {
-    count: 0,
-    queue: [],
-    pauseState: false,
-    push(task) {
-      this.queue.push(task);
-      this.next();
-    },
-    next() {
-      if (this.queue.length && this.count < maxCount) {
-        this.count++;
-        this.queue
-          .shift()()
-          .finally(() => {
-            this.count--;
-            if (!this.pauseState) {
-              this.next();
-            }
-          });
-      }
-    },
-    pause() {
-      this.pauseState = true;
-    },
-    start() {
-      this.pauseState = false;
-      let max = Math.min(this.queue.length, maxCount - this.count);
-
-      for (let i = 0; i < max; i++) {
-        this.next();
-      }
-    },
-  };
-}
-
-// 测试代码
-const scheduler = limit(2);
-
-function addTask(time, order) {
-  scheduler.push(() =>
-    new Promise((resolve) => setTimeout(resolve, time)).then(() => console.log(order)),
-  );
-}
-
-addTask(1000, 1);
-addTask(500, 2);
-addTask(300, 3);
-addTask(400, 4);
-// 2 3 1 4 耗时 1200ms

延迟调用

js
function lazyMan(name) {
-  let runing = false;
-  const sleep = (time) => () =>
-    new Promise((resolve) => {
-      console.log(\`Wake up after \${time}\`);
-      setTimeout(resolve, time * 1000);
-    });
-  const obj = {
-    tasks: [],
-    async next() {
-      const task = this.tasks.shift();
-
-      if (task) {
-        await task();
-        this.next();
-      }
-    },
-    run() {
-      Promise.resolve().then(() => {
-        if (runing) {
-          return;
-        }
-        runing = true;
-        this.next();
-      });
-    },
-    eat(food) {
-      this.tasks.push(() => console.log(\`Eat \${food}\`));
-      this.run();
-      return this;
-    },
-    sleep(time) {
-      this.tasks.push(sleep(time));
-      this.run();
-      return this;
-    },
-    sleepFirst(time) {
-      this.tasks.unshift(sleep(time));
-      this.run();
-      return this;
-    },
-  };
-
-  obj.tasks.push(() => console.log(\`Hi! This is \${name}!\`));
-  obj.run();
-
-  return obj;
-}
-
-lazyMan('Hank').sleep(10).eat('dinner');
-// Hi! This is Hank!
-// Wake up after 10
-// Eat dinner
-lazyMan('Hank').eat('dinner').sleepFirst(10);
-// Wake up after 10
-// Hi! This is Hank!
-// Eat dinner
`,36),e=[o];function t(c,r,F,y,D,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default}; diff --git "a/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.2bdbb8db.lean.js" "b/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.2bdbb8db.lean.js" deleted file mode 100644 index f048039..0000000 --- "a/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.2bdbb8db.lean.js" +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as n,o as a,R as l}from"./chunks/framework.3876c926.js";const i=JSON.parse('{"title":"前端常见手写代码","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/前端常见手写代码.md"}'),p={name:"zjw/前端常见手写代码.md"},o=l("",36),e=[o];function t(c,r,F,y,D,A){return a(),n("div",null,e)}const u=s(p,[["render",t]]);export{i as __pageData,u as default}; diff --git "a/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.DK0l8WTV.js" "b/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.DK0l8WTV.js" new file mode 100644 index 0000000..bc07c5a --- /dev/null +++ "b/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.DK0l8WTV.js" @@ -0,0 +1,292 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"前端常见手写代码","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/前端常见手写代码.md","filePath":"zjw/前端常见手写代码.md"}'),h={name:"zjw/前端常见手写代码.md"},k=n(`

前端常见手写代码

防抖

用于用户频繁触发某个事件(如输入搜索),避免函数被频繁执行,最近一次触发需要等待一定的时间间隔才会被执行,如果期间再次触发执行,则重置定时器,直到停止触发等待足够时间

js
function debounce(fn, delay) {
+  var timer;
+
+  return function () {
+    clearTimeout(timer);
+    timer = setTimeout(fn.bind(this, ...arguments), delay);
+  };
+}
+
+// 测试
+function task() {
+  console.log('run task', arguments);
+}
+const debounceTask = debounce(task, 1000);
+window.addEventListener('scroll', debounceTask);

首次立即执行

js
function debounce(fn, delay) {
+  var timer = null;
+
+  return function () {
+    clearTimeout(timer);
+
+    const f = fn.bind(this, ...arguments);
+    const callNow = !timer;
+
+    if (callNow) {
+      f();
+    }
+    timer = setTimeout(() => {
+      timer = null;
+      // 非首次调用
+      if (!callNow) {
+        f();
+      }
+    }, delay);
+  };
+}

节流

用于限制函数执行频率

javascript
function throttle(fn, delay) {
+  var last = 0;
+  var timer;
+
+  return function () {
+    const now = Date.now();
+
+    clearTimeout(timer);
+    if (now - last >= delay) {
+      last = now;
+      fn.apply(this, arguments);
+    } else {
+      timer = setTimeout(() => {
+        fn.apply(this, arguments);
+        last = Date.now();
+      }, delay - (now - last));
+    }
+  };
+}

深拷贝

JSON 方法

javascript
// 不支持值为 undefined、函数和循环引用的情况
+const cloneObj = JSON.parse(JSON.stringify(obj));

递归拷贝

js
function deepClone(obj) {
+  if (obj === null || typeof obj !== 'object') {
+    return obj;
+  }
+
+  const copy = Array.isArray(obj) ? [] : {};
+
+  for (let key in obj) {
+    if (obj.hasOwnProperty(key)) {
+      copy[key] = deepClone(obj[key]);
+    }
+  }
+
+  return copy;
+}

stringify 方法实现

js
function stringify(obj) {
+  if (obj === null || typeof obj !== 'object') {
+    // 数组 undefined 会被转换成 null
+    return obj === undefined || obj === null ? 'null' : obj;
+  }
+  if (Array.isArray(obj)) {
+    return '[' + json.map((m) => stringify(m)).join(',') + ']';
+  }
+
+  return (
+    '{' +
+    Object.keys(obj)
+      // 过滤值为 undefined 的 key
+      .filter((key) => obj[key] !== undefined)
+      .map((key) => \`"\${key}":\${stringify(obj[key])}\`)
+      .join(',') +
+    '}'
+  );
+}

继承

ES5 继承

组合继承

javascript
function Parent(value) {
+  this.val = value;
+}
+Parent.prototype.getValue = function () {
+  console.log(this.val);
+};
+function Child(value) {
+  Parent.call(this, value);
+}
+Child.prototype = new Parent();
  • 缺点:原型上创建了父类属性(调用父类构造函数导致)

寄生组合继承

javascript
function Parent(value) {
+  this.val = value;
+}
+Parent.prototype.getValue = function () {
+  console.log(this.val);
+};
+
+function Child(value) {
+  Parent.call(this, value);
+}
+Child.prototype = Object.create(Parent.prototype, {
+  // 原型构造函数指向Child
+  constructor: {
+    value: Child,
+    enumerable: false,
+    writable: true,
+    configurable: true,
+  },
+});

ES6 继承

javascript
class Parent {
+  constructor(value) {
+    this.val = value;
+  }
+  getValue() {
+    console.log(this.val);
+  }
+}
+class Child extends Parent {
+  constructor(value) {
+    super(value);
+  }
+}

数组去重

Set

javascript
[...new Set([1, 3, 4, 5, 3, 1])];

Map

javascript
function uniq(arr) {
+  var visited = {};
+  var res = [];
+
+  for (e of arr) {
+    if (visited[e]) continue;
+    res.push(e);
+    visited[e] = true;
+  }
+  return res;
+}

虚拟滚动

tsx
import React, { useState, useCallback, useRef, useEffect } from 'react';
+
+export interface VirtualScrollProps {
+  items: string[];
+  height: number;
+  rowHeight: number;
+}
+
+export default function VirtualScroll({ items, height, rowHeight }: VirtualScrollProps) {
+  // 保存滚动条位置的状态
+  const [scrollTop, setScrollTop] = useState(0);
+  // 获取列表容器元素的引用
+  const containerRef = useRef<HTMLDivElement>(null);
+  // 计算可见区域的行数
+  const visibleRowCount = Math.ceil(height / rowHeight);
+
+  // 监听滚动条的滚动事件,更新滚动条位置的状态
+  const handleScroll = useCallback(() => {
+    const scrollTop = containerRef.current!.scrollTop;
+    setScrollTop(scrollTop);
+  }, []);
+
+  // 使用 useEffect 添加滚动条滚动事件的监听器,并在组件卸载时移除监听器
+  useEffect(() => {
+    const container = containerRef.current;
+    container!.addEventListener('scroll', handleScroll);
+    return () => {
+      container!.removeEventListener('scroll', handleScroll);
+    };
+  }, [handleScroll]);
+
+  // 计算可见区域的起始行和结束行
+  const start = Math.floor(scrollTop / rowHeight);
+  const end = Math.min(start + visibleRowCount + 1, items.length);
+
+  // 渲染可见区域内的元素
+  const visibleItems = items.slice(start, end).map((item, index) => (
+    <div key={start + index} style={{ height: rowHeight }}>
+      {item}
+    </div>
+  ));
+
+  // 计算列表容器的 paddingTop 和 paddingBottom,确保可见区域内的元素能够正确地垂直对齐
+  const paddingTop = start * rowHeight;
+  const paddingBottom = (items.length - end) * rowHeight;
+
+  return (
+    <div ref={containerRef} style={{ height, overflowY: 'scroll' }}>
+      {/* 使用 paddingTop 和 paddingBottom 让可见区域内的元素能够正确地垂直对齐 */}
+      <div style={{ paddingTop, paddingBottom }}>{visibleItems}</div>
+    </div>
+  );
+}

限制最大并发数

js
function limit(maxCount) {
+  return {
+    count: 0,
+    queue: [],
+    pauseState: false,
+    push(task) {
+      this.queue.push(task);
+      this.next();
+    },
+    next() {
+      if (this.queue.length && this.count < maxCount) {
+        this.count++;
+        this.queue
+          .shift()()
+          .finally(() => {
+            this.count--;
+            if (!this.pauseState) {
+              this.next();
+            }
+          });
+      }
+    },
+    pause() {
+      this.pauseState = true;
+    },
+    start() {
+      this.pauseState = false;
+      let max = Math.min(this.queue.length, maxCount - this.count);
+
+      for (let i = 0; i < max; i++) {
+        this.next();
+      }
+    },
+  };
+}
+
+// 测试代码
+const scheduler = limit(2);
+
+function addTask(time, order) {
+  scheduler.push(() =>
+    new Promise((resolve) => setTimeout(resolve, time)).then(() => console.log(order)),
+  );
+}
+
+addTask(1000, 1);
+addTask(500, 2);
+addTask(300, 3);
+addTask(400, 4);
+// 2 3 1 4 耗时 1200ms

延迟调用

js
function lazyMan(name) {
+  let runing = false;
+  const sleep = (time) => () =>
+    new Promise((resolve) => {
+      console.log(\`Wake up after \${time}\`);
+      setTimeout(resolve, time * 1000);
+    });
+  const obj = {
+    tasks: [],
+    async next() {
+      const task = this.tasks.shift();
+
+      if (task) {
+        await task();
+        this.next();
+      }
+    },
+    run() {
+      Promise.resolve().then(() => {
+        if (runing) {
+          return;
+        }
+        runing = true;
+        this.next();
+      });
+    },
+    eat(food) {
+      this.tasks.push(() => console.log(\`Eat \${food}\`));
+      this.run();
+      return this;
+    },
+    sleep(time) {
+      this.tasks.push(sleep(time));
+      this.run();
+      return this;
+    },
+    sleepFirst(time) {
+      this.tasks.unshift(sleep(time));
+      this.run();
+      return this;
+    },
+  };
+
+  obj.tasks.push(() => console.log(\`Hi! This is \${name}!\`));
+  obj.run();
+
+  return obj;
+}
+
+lazyMan('Hank').sleep(10).eat('dinner');
+// Hi! This is Hank!
+// Wake up after 10
+// Eat dinner
+lazyMan('Hank').eat('dinner').sleepFirst(10);
+// Wake up after 10
+// Hi! This is Hank!
+// Eat dinner
`,36),l=[k];function p(t,E,e,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",p]]);export{F as __pageData,c as default}; diff --git "a/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.DK0l8WTV.lean.js" "b/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.DK0l8WTV.lean.js" new file mode 100644 index 0000000..1faa11b --- /dev/null +++ "b/assets/zjw_\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.md.DK0l8WTV.lean.js" @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a4 as n}from"./chunks/framework.D5F7AbHZ.js";const F=JSON.parse('{"title":"前端常见手写代码","description":"","frontmatter":{},"headers":[],"relativePath":"zjw/前端常见手写代码.md","filePath":"zjw/前端常见手写代码.md"}'),h={name:"zjw/前端常见手写代码.md"},k=n("",36),l=[k];function p(t,E,e,r,d,g){return a(),i("div",null,l)}const c=s(h,[["render",p]]);export{F as __pageData,c as default}; diff --git a/hashmap.json b/hashmap.json index e2dc401..cbafa70 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"zjw_babel-plugin-taro-page-hoc.md":"c5b8e797","zjw_babel-plugin-import.md":"b3fe9f86","zjw_bfc.md":"bf39e00f","zjw_(0_fn)().md":"90153474","index.md":"ecf03cad","zjw_linked-list.md":"826dff0c","zjw_api-cache.md":"47c00025","zjw_binary-tree.md":"b08eff68","zjw_auto-test.md":"eaf268b9","zjw_react-router.md":"b0bc65d4","zjw_binary-search.md":"4a6149b9","zjw_前端常见手写代码.md":"2bdbb8db","zjw_koa-middleware.md":"5b834bb2","zjw_sort.md":"c1426320","zjw_data-structure.md":"ff8b49fb","zjw_webpack.md":"f23ad039","zjw_sandbox.md":"0865631e","zjw_transform-tree.md":"4415d31c","zjw_webpack-pack-optimization.md":"bd8e6393"} +{"zjw_bfc.md":"Wc3HGD05","zjw_webpack.md":"M_XiAUUo","zjw_sandbox.md":"DgdhC6rv","zjw_react-router.md":"DTfIZYpJ","zjw_babel-plugin-taro-page-hoc.md":"DwkJp9WN","index.md":"DYvXomfm","zjw_前端常见手写代码.md":"DK0l8WTV","zjw_binary-tree.md":"DZw5h4Ni","zjw_sort.md":"Bm-jLNgr","zjw_linked-list.md":"DKumdPKd","zjw_auto-test.md":"HsizIQ-a","zjw_transform-tree.md":"BWHY7563","zjw_data-structure.md":"YAkYuSGi","zjw_babel-plugin-import.md":"CR8YxeOP","zjw_webpack-pack-optimization.md":"CKTxYpQR","zjw_api-cache.md":"D3wFev7N","zjw_binary-search.md":"qAilxVuS","zjw_(0_fn)().md":"DR-yeSMY","zjw_koa-middleware.md":"DA53IkQj"} diff --git a/index.html b/index.html index 760d537..656ac25 100644 --- a/index.html +++ b/index.html @@ -5,19 +5,21 @@ 学习清单 | daydayup - - - - - - - - + + + + + + + + + + + - - + + \ No newline at end of file diff --git a/zjw/(0,fn)().html b/zjw/(0,fn)().html index 3ad8886..68fd27b 100644 --- a/zjw/(0,fn)().html +++ b/zjw/(0,fn)().html @@ -5,35 +5,37 @@ 从模块编译结果学习 (0,fn)() 用法 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

从模块编译结果学习 (0,fn)() 用法

例如下面示例代码

js
export function say(name) {
-  return `hello ${name}`;
-}
js
import { say } from './hello.js';
-say('world');

当我们使用 babel 编译后,出现如下结果

js
var _hello = require('./hello.js');
-(0, _hello.say)('world');

为什么需要 (0,fn)() 这种形式调用

其实 (0,fn)() 是逗号运算符,等同于 fn=_hello.say; fn() 最终还是为了调用 fn 函数,为什么不直接调用

从例子分析

js
// a.js
-const moduleA = {
-  name: 1,
-  say() {
-    console.log(this.name);
-  },
-};
+    
Skip to content

从模块编译结果学习 (0,fn)() 用法

例如下面示例代码

js
export function say(name) {
+  return `hello ${name}`;
+}
js
import { say } from './hello.js';
+say('world');

当我们使用 babel 编译后,出现如下结果

js
var _hello = require('./hello.js');
+(0, _hello.say)('world');

为什么需要 (0,fn)() 这种形式调用

其实 (0,fn)() 是逗号运算符,等同于 fn=_hello.say; fn() 最终还是为了调用 fn 函数,为什么不直接调用

从例子分析

js
// a.js
+const moduleA = {
+  name: 1,
+  say() {
+    console.log(this.name);
+  },
+};
 
-// b.js
-// 输出 1
-moduleA.say();
-// undefined
-(0, moduleA.say)();

这样调用后,等于函数 say 在 b 模块上下文下执行,从而保证执行上下文的正确

- +// b.js +// 输出 1 +moduleA.say(); +// undefined +(0, moduleA.say)();

这样调用后,等于函数 say 在 b 模块上下文下执行,从而保证执行上下文的正确

+ \ No newline at end of file diff --git a/zjw/api-cache.html b/zjw/api-cache.html index e5b2a02..7615469 100644 --- a/zjw/api-cache.html +++ b/zjw/api-cache.html @@ -5,73 +5,75 @@ 请求缓存 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

请求缓存

在 PaaS 组件或者路由中间件内发起的重复请求,多数情况下可以通过请求缓存合并成一个请求

需求

  • 扩展现有请求方法
  • 合并同一时间内的重复请求

定义缓存结构

js
export class MapCache {
-  map = new Map();
+    
Skip to content

请求缓存

在 PaaS 组件或者路由中间件内发起的重复请求,多数情况下可以通过请求缓存合并成一个请求

需求

  • 扩展现有请求方法
  • 合并同一时间内的重复请求

定义缓存结构

js
export class MapCache {
+  map = new Map();
 
-  static getKey(parmas) {
-    return JSON.stringify(parmas);
-  }
+  static getKey(parmas) {
+    return JSON.stringify(parmas);
+  }
 
-  get(key) {
-    return this.map.get(key) && this.map.get(key).value;
-  }
-  set(key, value) {
-    return this.map.set(key, { value, timestamp: Date.now() });
-  }
-  // 按时间是否命中缓存
-  hit(key, maxTime) {
-    const { timestamp = 0 } = this.map.get(key) || {};
+  get(key) {
+    return this.map.get(key) && this.map.get(key).value;
+  }
+  set(key, value) {
+    return this.map.set(key, { value, timestamp: Date.now() });
+  }
+  // 按时间是否命中缓存
+  hit(key, maxTime) {
+    const { timestamp = 0 } = this.map.get(key) || {};
 
-    if (Date.now() - timestamp < maxTime) {
-      return true;
-    }
-    return false;
-  }
-}

使用装饰器模式扩展当前请求

js
export function apiHelper(fn) {
-  const apiCache = new MapCache();
+    if (Date.now() - timestamp < maxTime) {
+      return true;
+    }
+    return false;
+  }
+}

使用装饰器模式扩展当前请求

js
export function apiHelper(fn) {
+  const apiCache = new MapCache();
 
-  return function (...args) {
-    let cache = false;
+  return function (...args) {
+    let cache = false;
 
-    // 是否开启缓存
-    if (args.length === 2) {
-      cache = args.splice(-1)[0];
-    }
-    if (!cache) {
-      return fn.apply(this, args);
-    }
-    // 处理缓存
-    const { maxTime } = typeof cache === 'boolean' ? { maxTime: 1000 } : cache;
-    const { url, params, data, method } = args[0];
-    const key = ApiCache.getKey({ url, params, data, method });
+    // 是否开启缓存
+    if (args.length === 2) {
+      cache = args.splice(-1)[0];
+    }
+    if (!cache) {
+      return fn.apply(this, args);
+    }
+    // 处理缓存
+    const { maxTime } = typeof cache === 'boolean' ? { maxTime: 1000 } : cache;
+    const { url, params, data, method } = args[0];
+    const key = ApiCache.getKey({ url, params, data, method });
 
-    if (apiCache.hit(key, maxTime)) {
-      return apiCache.get(key);
-    }
-    const response = fn.apply(this, args);
-    // 支持并发请求合并成一个 Promise
-    apiCache.set(key, response);
+    if (apiCache.hit(key, maxTime)) {
+      return apiCache.get(key);
+    }
+    const response = fn.apply(this, args);
+    // 支持并发请求合并成一个 Promise
+    apiCache.set(key, response);
 
-    return response;
-  };
-}

使用

js
import Axios from 'axios';
+    return response;
+  };
+}

使用

js
import Axios from 'axios';
 
-const request = apiHelper(Axios.request);
+const request = apiHelper(Axios.request);
 
-// 使用缓存
-request({ url: 'http://api.twitter.com', params: { a: 1 } }, true);
- +// 使用缓存 +request({ url: 'http://api.twitter.com', params: { a: 1 } }, true);
+ \ No newline at end of file diff --git a/zjw/auto-test.html b/zjw/auto-test.html index ad8e20d..a197220 100644 --- a/zjw/auto-test.html +++ b/zjw/auto-test.html @@ -5,132 +5,134 @@ 前端自动化测试 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

前端自动化测试

现状

技术选型

技术选择:jest+@testing-library/react+playwright

bash
yarn add -D jest @playwright/test babel-jest jest-environment-jsdom react-test-renderer @testing-library/react @types/jest

cypress 使用中的问题

流程与规范

目录与命名规范

  • 单元测试一般放在对应目录的 __tests__文件夹下,命名为测试代码的文件名中加 .test
  • e2e 测试放在根目录 e2e 下,命名 xxxx.test.ts

组件测试

typescript
import { render } from '@testing-library/react';
-import IncPrice from '.';
+    
Skip to content

前端自动化测试

现状

技术选型

技术选择:jest+@testing-library/react+playwright

bash
yarn add -D jest @playwright/test babel-jest jest-environment-jsdom react-test-renderer @testing-library/react @types/jest

cypress 使用中的问题

流程与规范

目录与命名规范

  • 单元测试一般放在对应目录的 __tests__文件夹下,命名为测试代码的文件名中加 .test
  • e2e 测试放在根目录 e2e 下,命名 xxxx.test.ts

组件测试

typescript
import { render } from '@testing-library/react';
+import IncPrice from '.';
 
-jest.mock('antd-mobile/es/utils/native-props', () => {
-  return {
-    withNativeProps: (props, el) => el,
-  };
-});
+jest.mock('antd-mobile/es/utils/native-props', () => {
+  return {
+    withNativeProps: (props, el) => el,
+  };
+});
 
-describe('价格组件', () => {
-  it('1+100=>1积分+1.00元', () => {
-    const { container } = render(<IncPrice integral={1} currency={100} />);
-    expect(container.textContent).toBe('1积分+1.00元');
-  });
-  it('0+100=>1.00元', () => {
-    const { container } = render(<IncPrice integral={0} currency={100} />);
-    expect(container.textContent).toBe('1.00元');
-  });
-  it('1=>1积分', () => {
-    const { container } = render(<IncPrice integral={1} currency={0} />);
-    expect(container.textContent).toBe('1积分');
-  });
-  it('0+0=>免费', () => {
-    const { container } = render(<IncPrice integral={0} currency={0} />);
-    expect(container.textContent).toBe('免费');
-  });
-});

可以使用 chatGPT 生成基础测试代码

e2e 测试

typescript
import { test } from '@playwright/test';
+describe('价格组件', () => {
+  it('1+100=>1积分+1.00元', () => {
+    const { container } = render(<IncPrice integral={1} currency={100} />);
+    expect(container.textContent).toBe('1积分+1.00元');
+  });
+  it('0+100=>1.00元', () => {
+    const { container } = render(<IncPrice integral={0} currency={100} />);
+    expect(container.textContent).toBe('1.00元');
+  });
+  it('1=>1积分', () => {
+    const { container } = render(<IncPrice integral={1} currency={0} />);
+    expect(container.textContent).toBe('1积分');
+  });
+  it('0+0=>免费', () => {
+    const { container } = render(<IncPrice integral={0} currency={0} />);
+    expect(container.textContent).toBe('免费');
+  });
+});

可以使用 chatGPT 生成基础测试代码

e2e 测试

typescript
import { test } from '@playwright/test';
 
-test.beforeEach(async ({ page }) => {
-  await page.goto('https://127.0.0.1:10086');
-});
+test.beforeEach(async ({ page }) => {
+  await page.goto('https://127.0.0.1:10086');
+});
 
-test.describe('下单', () => {
-  test('券码下单流程', async ({ page }) => {
-    const goodsName = '券码';
-    await page.getByPlaceholder('请输入关键词').fill(goodsName);
-    await page.keyboard.press('Enter');
-    await page.getByText(goodsName).last().click();
-    // 商品详情页
-    await page.getByRole('button', { name: '立即兑换' }).click();
-    // 确认订单页
-    await page.getByRole('button', { name: '提交订单' }).click();
-    // 支付结果页
-    await page.waitForSelector('text=支付成功');
-  });
-});

GitLab 工作流集成

yml
stages:
-  - test
-  - deploy
+test.describe('下单', () => {
+  test('券码下单流程', async ({ page }) => {
+    const goodsName = '券码';
+    await page.getByPlaceholder('请输入关键词').fill(goodsName);
+    await page.keyboard.press('Enter');
+    await page.getByText(goodsName).last().click();
+    // 商品详情页
+    await page.getByRole('button', { name: '立即兑换' }).click();
+    // 确认订单页
+    await page.getByRole('button', { name: '提交订单' }).click();
+    // 支付结果页
+    await page.waitForSelector('text=支付成功');
+  });
+});

GitLab 工作流集成

yml
stages:
+  - test
+  - deploy
 
-.testTpl:
-  rules:
-    # 提交默认分支时触发
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
-      when: always
+.testTpl:
+  rules:
+    # 提交默认分支时触发
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+      when: always
 
-test:
-  extends: .testTpl
-  image: mcr.microsoft.com/playwright:v1.31.0-focal
-  stage: test
-  script:
-    - 'yarn'
-    # jest --ci --coverage --runInBand --reporters=default --reporters=jest-junit
-    - 'yarn test:ci'
-    # playwright test ; node ./post-message.js  用于发消息到企微
-    - 'yarn test:e2e:ci'
-  artifacts:
-    reports:
-      cobertura: coverage/cobertura-coverage.xml
-      junit:
-        # 单测报告
-        - junit.xml
-        # e2e报告
-        - je2e.xml
-    paths:
-      - coverage
-      - playwright-report
-      - test
+test:
+  extends: .testTpl
+  image: mcr.microsoft.com/playwright:v1.31.0-focal
+  stage: test
+  script:
+    - 'yarn'
+    # jest --ci --coverage --runInBand --reporters=default --reporters=jest-junit
+    - 'yarn test:ci'
+    # playwright test ; node ./post-message.js  用于发消息到企微
+    - 'yarn test:e2e:ci'
+  artifacts:
+    reports:
+      cobertura: coverage/cobertura-coverage.xml
+      junit:
+        # 单测报告
+        - junit.xml
+        # e2e报告
+        - je2e.xml
+    paths:
+      - coverage
+      - playwright-report
+      - test
 
-pages:
-  extends: .testTpl
-  stage: deploy
-  dependencies:
-    - test
-  script:
-    # 部署单测报告到 GitLab Pages
-    - mv coverage/ public/
-  artifacts:
-    paths:
-      - public

post-message.js 部分代码

js
async function main() {
-  // 读取e2e报告文件
-  if (fs.existsSync('je2e.xml')) {
-    const xml = fs.readFileSync('je2e.xml', 'utf8').toString();
-    const result = await parser.parseStringPromise(xml);
-    const { testsuites } = result;
-    const { time, tests, failures } = testsuites.$;
-    // 拼接消息并发送到企微
-    const msg = `总数: ${tests}  失败: ${failures}  耗时: ${Math.floor(time)}s\n\n
-   ${testsuites.testsuite
-     .map(
-       (m) => `${m.$.name}\n
-       ${m.testcase
-         .map(
-           (c) =>
-             `>${c.failure ? '<font color="warning">✕</font>' : '<font color="info">✓</font>'} ${
-               c.$.name
-             } (${c.$.time * 1000} ms)`,
-         )
-         .join('\n')}`,
-     )
-     .join('\n')}\n\n流水线地址:${process.env.CI_PIPELINE_URL}`;
+pages:
+  extends: .testTpl
+  stage: deploy
+  dependencies:
+    - test
+  script:
+    # 部署单测报告到 GitLab Pages
+    - mv coverage/ public/
+  artifacts:
+    paths:
+      - public

post-message.js 部分代码

js
async function main() {
+  // 读取e2e报告文件
+  if (fs.existsSync('je2e.xml')) {
+    const xml = fs.readFileSync('je2e.xml', 'utf8').toString();
+    const result = await parser.parseStringPromise(xml);
+    const { testsuites } = result;
+    const { time, tests, failures } = testsuites.$;
+    // 拼接消息并发送到企微
+    const msg = `总数: ${tests}  失败: ${failures}  耗时: ${Math.floor(time)}s\n\n
+   ${testsuites.testsuite
+     .map(
+       (m) => `${m.$.name}\n
+       ${m.testcase
+         .map(
+           (c) =>
+             `>${c.failure ? '<font color="warning">✕</font>' : '<font color="info">✓</font>'} ${
+               c.$.name
+             } (${c.$.time * 1000} ms)`,
+         )
+         .join('\n')}`,
+     )
+     .join('\n')}\n\n流水线地址:${process.env.CI_PIPELINE_URL}`;
 
-    postMsgToQw(msg);
-  }
-}

完整例子:https://github.com/dobble11/daydayup-playground/tree/main/vite-react-playwright

- + postMsgToQw(msg); + } +}

完整例子:https://github.com/dobble11/daydayup-playground/tree/main/vite-react-playwright

+ \ No newline at end of file diff --git a/zjw/babel-plugin-import.html b/zjw/babel-plugin-import.html index eb61b80..207d761 100644 --- a/zjw/babel-plugin-import.html +++ b/zjw/babel-plugin-import.html @@ -5,100 +5,102 @@ 实现导入转换 babel 插件 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

实现导入转换 babel 插件

转换 antd 导入为按需加载,例如

js
import { Button } from 'antd'
+    
Skip to content

实现导入转换 babel 插件

转换 antd 导入为按需加载,例如

js
import { Button } from 'antd'
 
-⬇️    ⬇️     ⬇️
-import Button from 'antd/es/button'
-import 'antd/es/button/style'

babel 运行过程

输入 code -> ast (@babel/parser) -> 转换 (应用插件修改 ast) -> 生成代码 (@babel/generator)

babel 插件顺序

  • 插件在预设之前运行
  • 插件按定义循序执行
  • 预设从后往前执行

插件基本结构

js
export default function (babel) {
-  return {
-    // pre(state) {},
-    visitor: {},
-    // post(state) {},
-  };
-}

插件执行时,pre -> visitor -> post

插件分为两类:

  • 语法插件
  • 转换插件

其中语法插件则是启用 @babel/parser 内部支持语法,例如支持解析 jsx 插件

babel-plugin-syntax-jsx 源码

ts
import { declare } from '@babel/helper-plugin-utils';
+⬇️    ⬇️     ⬇️
+import Button from 'antd/es/button'
+import 'antd/es/button/style'

babel 运行过程

输入 code -> ast (@babel/parser) -> 转换 (应用插件修改 ast) -> 生成代码 (@babel/generator)

babel 插件顺序

  • 插件在预设之前运行
  • 插件按定义循序执行
  • 预设从后往前执行

插件基本结构

js
export default function (babel) {
+  return {
+    // pre(state) {},
+    visitor: {},
+    // post(state) {},
+  };
+}

插件执行时,pre -> visitor -> post

插件分为两类:

  • 语法插件
  • 转换插件

其中语法插件则是启用 @babel/parser 内部支持语法,例如支持解析 jsx 插件

babel-plugin-syntax-jsx 源码

ts
import { declare } from '@babel/helper-plugin-utils';
 
-export default declare((api) => {
-  api.assertVersion(7);
+export default declare((api) => {
+  api.assertVersion(7);
 
-  return {
-    name: 'syntax-jsx',
+  return {
+    name: 'syntax-jsx',
 
-    manipulateOptions(opts, parserOpts) {
-      const { plugins } = parserOpts;
-      // 如果包含 typescript 插件,则使用其解析 jsx,所以直接返回
-      if (plugins.some((p) => (Array.isArray(p) ? p[0] : p) === 'typescript')) {
-        return;
-      }
+    manipulateOptions(opts, parserOpts) {
+      const { plugins } = parserOpts;
+      // 如果包含 typescript 插件,则使用其解析 jsx,所以直接返回
+      if (plugins.some((p) => (Array.isArray(p) ? p[0] : p) === 'typescript')) {
+        return;
+      }
 
-      // 启用 jsx 语法解析,否则 @babel/praser 会报错
-      plugins.push('jsx');
-    },
-  };
-});

实现

ts
import * as Babel from '@babel/core';
+      // 启用 jsx 语法解析,否则 @babel/praser 会报错
+      plugins.push('jsx');
+    },
+  };
+});

实现

ts
import * as Babel from '@babel/core';
 
-export default function (babel: typeof Babel): Babel.PluginObj {
-  const { types: t } = babel;
+export default function (babel: typeof Babel): Babel.PluginObj {
+  const { types: t } = babel;
 
-  return {
-    name: 'babel-plugin-import',
-    visitor: {
-      ImportDeclaration(path) {
-        if (path.node.source?.value === 'antd') {
-          const vars = path.node.specifiers.map((m) => m.local.name);
+  return {
+    name: 'babel-plugin-import',
+    visitor: {
+      ImportDeclaration(path) {
+        if (path.node.source?.value === 'antd') {
+          const vars = path.node.specifiers.map((m) => m.local.name);
 
-          path.replaceWithMultiple(
-            vars
-              .map((m) => [
-                t.importDeclaration(
-                  [t.importDefaultSpecifier(t.identifier(m))],
-                  t.stringLiteral(`antd/es/${m.toLowerCase()}`),
-                ),
-                t.importDeclaration([], t.stringLiteral(`antd/es/${m.toLowerCase()}/style`)),
-              ])
-              .flat(),
-          );
-        }
-      },
-    },
-  };
-}

使用

json
{
-  "plugins": ["./babel-plugin-import"]
-}

插件选项

支持库目录指定

diff
+      ImportDeclaration(path, state) {
-         if (path.node.source?.value === 'antd') {
-+          const { libraryDirectory = 'es' } = state.opts;
+          path.replaceWithMultiple(
+            vars
+              .map((m) => [
+                t.importDeclaration(
+                  [t.importDefaultSpecifier(t.identifier(m))],
+                  t.stringLiteral(`antd/es/${m.toLowerCase()}`),
+                ),
+                t.importDeclaration([], t.stringLiteral(`antd/es/${m.toLowerCase()}/style`)),
+              ])
+              .flat(),
+          );
+        }
+      },
+    },
+  };
+}

使用

json
{
+  "plugins": ["./babel-plugin-import"]
+}

插件选项

支持库目录指定

diff
+      ImportDeclaration(path, state) {
+         if (path.node.source?.value === 'antd') {
++          const { libraryDirectory = 'es' } = state.opts;
 
-           path.replaceWithMultiple(
-             vars
-               .map((m) => [
-                 t.importDeclaration(
-                   [t.importDefaultSpecifier(t.identifier(m))],
-+                  t.stringLiteral(`antd/${libraryDirectory}/${m.toLowerCase()}`),
-                 ),
-                 t.importDeclaration(
-                   [],
-+                  t.stringLiteral(`antd/${libraryDirectory}/${m.toLowerCase()}/style`),
-                 ),
-               ])
-               .flat(),
-           );
-         }
-       },

使用

json
{
-  "plugins": [["./babel-plugin-import", { "libraryDirectory": "lib" }]]
-}

遇到的问题

  • @babel/cli 默认只编译 js 文件,会忽略 ts 文件,需要设置 --extensions '.ts'"presets": ["@babel/preset-typescript"](.babelrc)
  • ts 文件下应用插件不生效,由于 @babel/preset-typescript onlyRemoveTypeImports 选项默认值为 false 移除未使用的导入,可以设置为 true 仅移除类型导入,或者使用导入变量,例如
diff
import { Button, Card } from 'antd';
+           path.replaceWithMultiple(
+             vars
+               .map((m) => [
+                 t.importDeclaration(
+                   [t.importDefaultSpecifier(t.identifier(m))],
++                  t.stringLiteral(`antd/${libraryDirectory}/${m.toLowerCase()}`),
+                 ),
+                 t.importDeclaration(
+                   [],
++                  t.stringLiteral(`antd/${libraryDirectory}/${m.toLowerCase()}/style`),
+                 ),
+               ])
+               .flat(),
+           );
+         }
+       },

使用

json
{
+  "plugins": [["./babel-plugin-import", { "libraryDirectory": "lib" }]]
+}

遇到的问题

  • @babel/cli 默认只编译 js 文件,会忽略 ts 文件,需要设置 --extensions '.ts'"presets": ["@babel/preset-typescript"](.babelrc)
  • ts 文件下应用插件不生效,由于 @babel/preset-typescript onlyRemoveTypeImports 选项默认值为 false 移除未使用的导入,可以设置为 true 仅移除类型导入,或者使用导入变量,例如
diff
import { Button, Card } from 'antd';
 
-+ console.log(Button, Card)

相关资源

- ++ console.log(Button, Card)

相关资源

+ \ No newline at end of file diff --git a/zjw/babel-plugin-taro-page-hoc.html b/zjw/babel-plugin-taro-page-hoc.html index d52a22a..23ad284 100644 --- a/zjw/babel-plugin-taro-page-hoc.html +++ b/zjw/babel-plugin-taro-page-hoc.html @@ -5,124 +5,126 @@ 如何解决 Taro 页面无法异步渲染问题 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

如何解决 Taro 页面无法异步渲染问题

当使用 Taro 开发时,要实现拦截页面渲染做一些异步操作(例如单点登录,前置检查等)

举个自动登录场景,当访问页面链接上带有登录凭证 (ticket) 时,需要调用后端接口实现登录操作,在请求过程中展示一个 loading 样式,我们很容易想到通过入口组件(app.tsx)去拦截子元素(this.props.children)渲染实现

Taro H5 端实现

tsx
class App extends Component {
-  state = {
-    loading: false,
-  };
+    
Skip to content

如何解决 Taro 页面无法异步渲染问题

当使用 Taro 开发时,要实现拦截页面渲染做一些异步操作(例如单点登录,前置检查等)

举个自动登录场景,当访问页面链接上带有登录凭证 (ticket) 时,需要调用后端接口实现登录操作,在请求过程中展示一个 loading 样式,我们很容易想到通过入口组件(app.tsx)去拦截子元素(this.props.children)渲染实现

Taro H5 端实现

tsx
class App extends Component {
+  state = {
+    loading: false,
+  };
 
-  componentDidMount() {
-    const ticket = getQuery('ticket');
+  componentDidMount() {
+    const ticket = getQuery('ticket');
 
-    if (ticket) {
-      this.setState({ loading: true });
-      // 模拟异步过程
-      setTimeout(() => {
-        this.setState({ loading: false });
-      }, 2000);
-    }
-  }
+    if (ticket) {
+      this.setState({ loading: true });
+      // 模拟异步过程
+      setTimeout(() => {
+        this.setState({ loading: false });
+      }, 2000);
+    }
+  }
 
-  render() {
-    return this.state.loading ? <div>loading</div> : this.props.children;
-  }
-}
+  render() {
+    return this.state.loading ? <div>loading</div> : this.props.children;
+  }
+}
 
-export default App;

当运行上面代码,会得到如下报错

Taro 遵守小程序设计,所以无法从入口组件拦截子元素的挂载
另一种方式是通过高阶组件去包裹每个页面实现

tsx
function hoc(Component) {
-  return (props) => {
-    const [loading, setLoading] = useState(false);
+export default App;

当运行上面代码,会得到如下报错

Taro 遵守小程序设计,所以无法从入口组件拦截子元素的挂载
另一种方式是通过高阶组件去包裹每个页面实现

tsx
function hoc(Component) {
+  return (props) => {
+    const [loading, setLoading] = useState(false);
 
-    useEffect(() => {
-      const ticket = getQuery('ticket');
+    useEffect(() => {
+      const ticket = getQuery('ticket');
 
-      if (ticket) {
-        setLoading(true);
-        setTimeout(() => {
-          setLoading(false);
-        }, 2000);
-      }
-    }, []);
+      if (ticket) {
+        setLoading(true);
+        setTimeout(() => {
+          setLoading(false);
+        }, 2000);
+      }
+    }, []);
 
-    return loading ? <div>loading</div> : <Component {...props} />;
-  };
-}
+    return loading ? <div>loading</div> : <Component {...props} />;
+  };
+}
 
-export default hoc;
+export default hoc;
 
-// 包裹页面组件
-export default hoc(Home);

但是这样带来一个问题,通过约定无法保证每个人新建页面时都会使用这个 hoc
既然运行时我们无法通过入口组件拦截整个页面,那是不是可以通过编译时解决

通过 Babel 编译时转换页面导出

可以实现一个 babel 插件,获取页面路径,然后匹配到页面组件,转换导出内容,包裹上自定义的 hoc 函数

主要实现流程

step1:获取页面路径

Taro 的页面路径配置在 app.config.ts 文件的 pages 字段,可以通过 babel 解析拿到这个值

tsx
const srcPath = path.join(process.cwd(), './src');
-const filenames = fs.readdirSync(srcPath);
-// 查找到app配置文件路径
-const appConfigPath = `${srcPath}/${filenames.find((m) => m.includes('app.config.'))}`;
-let pages: string[] = [];
+// 包裹页面组件
+export default hoc(Home);

但是这样带来一个问题,通过约定无法保证每个人新建页面时都会使用这个 hoc
既然运行时我们无法通过入口组件拦截整个页面,那是不是可以通过编译时解决

通过 Babel 编译时转换页面导出

可以实现一个 babel 插件,获取页面路径,然后匹配到页面组件,转换导出内容,包裹上自定义的 hoc 函数

主要实现流程

step1:获取页面路径

Taro 的页面路径配置在 app.config.ts 文件的 pages 字段,可以通过 babel 解析拿到这个值

tsx
const srcPath = path.join(process.cwd(), './src');
+const filenames = fs.readdirSync(srcPath);
+// 查找到app配置文件路径
+const appConfigPath = `${srcPath}/${filenames.find((m) => m.includes('app.config.'))}`;
+let pages: string[] = [];
 
-if (fs.existsSync(appConfigPath)) {
-  const code = fs.readFileSync(appConfigPath).toString();
-  // 读取文件,转换成 ast
-  const ast = parse(code, {
-    sourceType: 'module',
-    plugins: ['typescript'],
-  });
-  traverse(ast, {
-    // 查找数组元素
-    ArrayExpression(path) {
-      if (
-        t.isObjectProperty(path.parent) &&
-        t.isIdentifier(path.parent.key) &&
-        // 判断属性名为 pages
-        path.parent.key.name === 'pages'
-      ) {
-        // 获取 pages 的值
-        pages = pages.concat(path.node.elements.map((m: any) => m.value));
-      }
-    },
-  });
-}

这样我们就可以拿到 Taro 所有的页面路径

step2:遍历默认导出找到页面组件

tsx
{
-  ExportDefaultDeclaration(path, state) {
-    // 当前代码的文件名
-    const filename = state.filename;
-    // 通过排除config文件及匹配上一步中获取的路径找到页面组件
-    const isPage = filename.includes('.config.')
-      ? false
-      : pages.some((m) => state.filename.includes(m));
-    }
-  },
-}

step3:转换

tsx
{
-  ExportDefaultDeclaration(path, state) {
-    const hocSource='src/component/hoc'
-    const hocName='__hoc__'
+if (fs.existsSync(appConfigPath)) {
+  const code = fs.readFileSync(appConfigPath).toString();
+  // 读取文件,转换成 ast
+  const ast = parse(code, {
+    sourceType: 'module',
+    plugins: ['typescript'],
+  });
+  traverse(ast, {
+    // 查找数组元素
+    ArrayExpression(path) {
+      if (
+        t.isObjectProperty(path.parent) &&
+        t.isIdentifier(path.parent.key) &&
+        // 判断属性名为 pages
+        path.parent.key.name === 'pages'
+      ) {
+        // 获取 pages 的值
+        pages = pages.concat(path.node.elements.map((m: any) => m.value));
+      }
+    },
+  });
+}

这样我们就可以拿到 Taro 所有的页面路径

step2:遍历默认导出找到页面组件

tsx
{
+  ExportDefaultDeclaration(path, state) {
+    // 当前代码的文件名
+    const filename = state.filename;
+    // 通过排除config文件及匹配上一步中获取的路径找到页面组件
+    const isPage = filename.includes('.config.')
+      ? false
+      : pages.some((m) => state.filename.includes(m));
+    }
+  },
+}

step3:转换

tsx
{
+  ExportDefaultDeclaration(path, state) {
+    const hocSource='src/component/hoc'
+    const hocName='__hoc__'
 
-    if (!t.isClassDeclaration(path.node.declaration) && isPage) {
-      // 在前面插入导入语句
-      path.insertBefore(
-        t.importDeclaration(
-          [t.importDefaultSpecifier(t.identifier(hocName))],
-          t.stringLiteral(hocSource),
-        ),
-      );
-      // hoc 包裹导出
-      path.node.declaration = t.callExpression(t.identifier(hocName), [
-        path.node.declaration as any,
-      ]);
-    }
-  },
-}
+    if (!t.isClassDeclaration(path.node.declaration) && isPage) {
+      // 在前面插入导入语句
+      path.insertBefore(
+        t.importDeclaration(
+          [t.importDefaultSpecifier(t.identifier(hocName))],
+          t.stringLiteral(hocSource),
+        ),
+      );
+      // hoc 包裹导出
+      path.node.declaration = t.callExpression(t.identifier(hocName), [
+        path.node.declaration as any,
+      ]);
+    }
+  },
+}
 
-// 例如页面组件 Home 转换后输出
-⬇️     ⬇️     ⬇️
-import __hoc__ from 'src/component/hoc'
-export default __hoc__(Home)

更完整的实现:https://github.com/epeejs/babel-plugin-taro-page-hoc

- +// 例如页面组件 Home 转换后输出 +⬇️ ⬇️ ⬇️ +import __hoc__ from 'src/component/hoc' +export default __hoc__(Home)

更完整的实现:https://github.com/epeejs/babel-plugin-taro-page-hoc

+ \ No newline at end of file diff --git a/zjw/bfc.html b/zjw/bfc.html index 5a21d46..99085bf 100644 --- a/zjw/bfc.html +++ b/zjw/bfc.html @@ -5,19 +5,21 @@ 块级格式化上下文(Block Formatting Context) | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

块级格式化上下文(Block Formatting Context)

它决定了元素如何对其内容进行定位,以及与其它元素的关系和相互作用

简单解析:BFC 创建一个完全独立的布局环境,让空间里子元素不会影响到外面布局

用于定位与清除浮动

  • 包含内部浮动
  • 排除外部浮动
  • 阻止外边距重叠

创建 BFC 的主要方式

  • html 元素(display: flow-root)
  • 定位与布局方式,position:absolutefixed;float:值不为 none;display:inline-blocktableflexgrid
  • 溢出行为,overflow 值不为 visible 的块元素

扩展

两栏布局,一列固定宽度,一列自适应

  • float + BFC 或 margin-left
  • absolute + margin-left
  • inline-block 设置 width:<percentage>
  • table
  • flex
  • grid

float + BFC 或 margin-left (父元素高度塌陷问题)

absolute + margin-left

inline-block(内联块之间空白符会当作一个字符,可以通过 font-size:0 消除)

table(未设置宽的一列自动填充剩余空间)

flex

grid

代码仓库:https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html

- +
Skip to content

块级格式化上下文(Block Formatting Context)

它决定了元素如何对其内容进行定位,以及与其它元素的关系和相互作用

简单解析:BFC 创建一个完全独立的布局环境,让空间里子元素不会影响到外面布局

用于定位与清除浮动

  • 包含内部浮动
  • 排除外部浮动
  • 阻止外边距重叠

创建 BFC 的主要方式

  • html 元素(display: flow-root)
  • 定位与布局方式,position:absolutefixed;float:值不为 none;display:inline-blocktableflexgrid
  • 溢出行为,overflow 值不为 visible 的块元素

扩展

两栏布局,一列固定宽度,一列自适应

  • float + BFC 或 margin-left
  • absolute + margin-left
  • inline-block 设置 width:<percentage>
  • table
  • flex
  • grid

float + BFC 或 margin-left (父元素高度塌陷问题)

absolute + margin-left

inline-block(内联块之间空白符会当作一个字符,可以通过 font-size:0 消除)

table(未设置宽的一列自动填充剩余空间)

flex

grid

代码仓库:https://github.com/dobble11/daydayup-playground/blob/main/two-col-layout/index.html

+ \ No newline at end of file diff --git a/zjw/binary-search.html b/zjw/binary-search.html index 502f033..5ab949c 100644 --- a/zjw/binary-search.html +++ b/zjw/binary-search.html @@ -5,82 +5,84 @@ 二分查找 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲
+ \ No newline at end of file diff --git a/zjw/binary-tree.html b/zjw/binary-tree.html index bf42828..0d6c918 100644 --- a/zjw/binary-tree.html +++ b/zjw/binary-tree.html @@ -5,97 +5,99 @@ 二叉树 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

二叉树

  • 满二叉树(完美二叉树):除了叶节点,每个节点度都为 2
  • 完全二叉树:除去最后一层为满二叉树,且最后一层节点从左到右分布
  • 完满二叉树:除了叶子结点之外的每一个结点都有两个孩子结点

满二叉树

完全二叉树

完满二叉树

高度为 H 的一棵满 K 叉树,其节点总数为等比数列求和公式 (K^H - 1)/(K - 1),用 Big O 表示就是 O(K^H)

满二叉树的节点数为 2^h - 1,节点总数为 n 的满二叉树高度为 log (n+1)

完全二叉树层序遍历结果还原

tree.jpg

补充成完全二叉树的层序遍历结果:[3,9,20,null,null,15,7]

代码实现

js
function TreeNode(val, left, right) {
-  this.val = val === undefined ? 0 : val;
-  this.left = left === undefined ? null : left;
-  this.right = right === undefined ? null : right;
-}
+    
Skip to content

二叉树

  • 满二叉树(完美二叉树):除了叶节点,每个节点度都为 2
  • 完全二叉树:除去最后一层为满二叉树,且最后一层节点从左到右分布
  • 完满二叉树:除了叶子结点之外的每一个结点都有两个孩子结点

满二叉树

完全二叉树

完满二叉树

高度为 H 的一棵满 K 叉树,其节点总数为等比数列求和公式 (K^H - 1)/(K - 1),用 Big O 表示就是 O(K^H)

满二叉树的节点数为 2^h - 1,节点总数为 n 的满二叉树高度为 log (n+1)

完全二叉树层序遍历结果还原

tree.jpg

补充成完全二叉树的层序遍历结果:[3,9,20,null,null,15,7]

代码实现

js
function TreeNode(val, left, right) {
+  this.val = val === undefined ? 0 : val;
+  this.left = left === undefined ? null : left;
+  this.right = right === undefined ? null : right;
+}
 
-function build(levelOrder) {
-  var p = 0;
-  var track = [];
-  var res = new TreeNode(levelOrder[p]);
+function build(levelOrder) {
+  var p = 0;
+  var track = [];
+  var res = new TreeNode(levelOrder[p]);
 
-  track.push(res);
+  track.push(res);
 
-  while (p < levelOrder.length - 1) {
-    var n = track.length;
+  while (p < levelOrder.length - 1) {
+    var n = track.length;
 
-    for (var i = 0; i < n; i++) {
-      var node = track.shift();
+    for (var i = 0; i < n; i++) {
+      var node = track.shift();
 
-      if (node) {
-        node.left = levelOrder[p + 1] ? new TreeNode(levelOrder[p + 1]) : null;
-        node.right = levelOrder[p + 2] ? new TreeNode(levelOrder[p + 2]) : null;
-        track.push(node.left, node.right);
-        // 无节点
-      } else {
-        track.push(null, null);
-      }
-      p += 2;
-    }
-  }
+      if (node) {
+        node.left = levelOrder[p + 1] ? new TreeNode(levelOrder[p + 1]) : null;
+        node.right = levelOrder[p + 2] ? new TreeNode(levelOrder[p + 2]) : null;
+        track.push(node.left, node.right);
+        // 无节点
+      } else {
+        track.push(null, null);
+      }
+      p += 2;
+    }
+  }
 
-  return res;
-}
+  return res;
+}
 
-console.log(build([3, 9, 20, null, null, 15, 7]));

中序+后序遍历结果还原

js
function build(inorder, inStart, inEnd, postorder, postStart, postEnd) {
-  if (inStart > inEnd) return null;
+console.log(build([3, 9, 20, null, null, 15, 7]));

中序+后序遍历结果还原

js
function build(inorder, inStart, inEnd, postorder, postStart, postEnd) {
+  if (inStart > inEnd) return null;
 
-  var rootVal = postorder[postEnd];
-  // rootVal在中序中的索引
-  var index = 0;
+  var rootVal = postorder[postEnd];
+  // rootVal在中序中的索引
+  var index = 0;
 
-  for (var i = inStart; i <= inEnd; i++) {
-    if (inorder[i] === rootVal) {
-      index = i;
-      break;
-    }
-  }
-  var leftSize = index - inStart;
-  var root = new TreeNode(rootVal);
-  root.left = build(inorder, inStart, index - 1, postorder, postStart, postStart + leftSize - 1);
-  root.right = build(inorder, index + 1, inEnd, postorder, postStart + leftSize, postEnd - 1);
-  return root;
-}
+  for (var i = inStart; i <= inEnd; i++) {
+    if (inorder[i] === rootVal) {
+      index = i;
+      break;
+    }
+  }
+  var leftSize = index - inStart;
+  var root = new TreeNode(rootVal);
+  root.left = build(inorder, inStart, index - 1, postorder, postStart, postStart + leftSize - 1);
+  root.right = build(inorder, index + 1, inEnd, postorder, postStart + leftSize, postEnd - 1);
+  return root;
+}
 
-function buildTree(inorder, postorder) {
-  return build(inorder, 0, inorder.length - 1, postorder, 0, postorder.length - 1);
-}

中序+前序遍历结果还原

js
function build(preorder, preStart, preEnd, inorder, inStart, inEnd) {
-  if (preStart > preEnd) return null;
+function buildTree(inorder, postorder) {
+  return build(inorder, 0, inorder.length - 1, postorder, 0, postorder.length - 1);
+}

中序+前序遍历结果还原

js
function build(preorder, preStart, preEnd, inorder, inStart, inEnd) {
+  if (preStart > preEnd) return null;
 
-  var rootVal = preorder[preStart];
-  // rootVal在中序中的索引
-  var index = 0;
+  var rootVal = preorder[preStart];
+  // rootVal在中序中的索引
+  var index = 0;
 
-  for (var i = inStart; i <= inEnd; i++) {
-    if (inorder[i] === rootVal) {
-      index = i;
-      break;
-    }
-  }
-  var leftSize = index - inStart;
-  var root = new TreeNode(rootVal);
-  root.left = build(preorder, preStart + 1, preStart + leftSize, inorder, inStart, index - 1);
-  root.right = build(preorder, preStart + leftSize + 1, preEnd, inorder, index + 1, inEnd);
-  return root;
-}
+  for (var i = inStart; i <= inEnd; i++) {
+    if (inorder[i] === rootVal) {
+      index = i;
+      break;
+    }
+  }
+  var leftSize = index - inStart;
+  var root = new TreeNode(rootVal);
+  root.left = build(preorder, preStart + 1, preStart + leftSize, inorder, inStart, index - 1);
+  root.right = build(preorder, preStart + leftSize + 1, preEnd, inorder, index + 1, inEnd);
+  return root;
+}
 
-function buildTree(preorder, inorder) {
-  return build(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1);
-}
- +function buildTree(preorder, inorder) { + return build(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1); +}
+ \ No newline at end of file diff --git a/zjw/data-structure.html b/zjw/data-structure.html index 658af6d..8b03480 100644 --- a/zjw/data-structure.html +++ b/zjw/data-structure.html @@ -5,189 +5,191 @@ 数据结构 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

数据结构

优先队列

js
class PriorityQueue {
-  size = 0;
-  pq = [];
+    
Skip to content

数据结构

优先队列

js
class PriorityQueue {
+  size = 0;
+  pq = [];
 
-  constructor(compareFn) {
-    this.compareFn = compareFn;
-  }
+  constructor(compareFn) {
+    this.compareFn = compareFn;
+  }
 
-  // 上浮
-  swim(x) {
-    // 小堆:当x小,上浮(a-b>0),反之
-    while (x > 1 && this.compare(this.parent(x), x)) {
-      this.swap(x, this.parent(x));
-      x = this.parent(x);
-    }
-  }
-  // 下沉
-  sink(x) {
-    while (this.left(x) <= this.size) {
-      var cur = this.left(x);
+  // 上浮
+  swim(x) {
+    // 小堆:当x小,上浮(a-b>0),反之
+    while (x > 1 && this.compare(this.parent(x), x)) {
+      this.swap(x, this.parent(x));
+      x = this.parent(x);
+    }
+  }
+  // 下沉
+  sink(x) {
+    while (this.left(x) <= this.size) {
+      var cur = this.left(x);
 
-      if (this.right(x) <= this.size && this.compare(cur, this.right(x))) {
-        cur = this.right(x);
-      }
-      if (this.compare(cur, x)) break;
-      this.swap(cur, x);
-      x = cur;
-    }
-  }
-  // 插入堆底
-  add(e) {
-    this.size++;
-    this.pq[this.size] = e;
-    this.swim(this.size);
-  }
-  // 移除堆顶
-  poll() {
-    var cur = this.pq[1];
-    this.swap(1, this.size);
-    this.pq.pop();
-    this.size--;
-    this.sink(1);
-    return cur;
-  }
-  // 获取堆顶元素
-  peek() {
-    return this.pq[1];
-  }
-  swap(i, j) {
-    var temp = this.pq[i];
-    this.pq[i] = this.pq[j];
-    this.pq[j] = temp;
-  }
-  compare(i, j) {
-    if (this.compareFn) {
-      return this.compareFn(this.pq[i], this.pq[j]) > 0;
-    }
-    return this.pq[i] - this.pq[j] > 0;
-  }
-  left(x) {
-    return x * 2;
-  }
-  right(x) {
-    return x * 2 + 1;
-  }
-  parent(x) {
-    return Math.floor(x / 2);
-  }
-  isEmpty() {
-    return !this.size;
-  }
-}
-// 大堆
-var pq = new PriorityQueue((a, b) => b - a);
-[1, 2, 3, 4, 5, 6].forEach((e) => pq.add(e));
-console.log(pq.pq);
js
class PriorityQueue {
-  size = 0;
-  pq = [];
+      if (this.right(x) <= this.size && this.compare(cur, this.right(x))) {
+        cur = this.right(x);
+      }
+      if (this.compare(cur, x)) break;
+      this.swap(cur, x);
+      x = cur;
+    }
+  }
+  // 插入堆底
+  add(e) {
+    this.size++;
+    this.pq[this.size] = e;
+    this.swim(this.size);
+  }
+  // 移除堆顶
+  poll() {
+    var cur = this.pq[1];
+    this.swap(1, this.size);
+    this.pq.pop();
+    this.size--;
+    this.sink(1);
+    return cur;
+  }
+  // 获取堆顶元素
+  peek() {
+    return this.pq[1];
+  }
+  swap(i, j) {
+    var temp = this.pq[i];
+    this.pq[i] = this.pq[j];
+    this.pq[j] = temp;
+  }
+  compare(i, j) {
+    if (this.compareFn) {
+      return this.compareFn(this.pq[i], this.pq[j]) > 0;
+    }
+    return this.pq[i] - this.pq[j] > 0;
+  }
+  left(x) {
+    return x * 2;
+  }
+  right(x) {
+    return x * 2 + 1;
+  }
+  parent(x) {
+    return Math.floor(x / 2);
+  }
+  isEmpty() {
+    return !this.size;
+  }
+}
+// 大堆
+var pq = new PriorityQueue((a, b) => b - a);
+[1, 2, 3, 4, 5, 6].forEach((e) => pq.add(e));
+console.log(pq.pq);
js
class PriorityQueue {
+  size = 0;
+  pq = [];
 
-  constructor(compareFn) {
-    this.compareFn = compareFn;
-  }
+  constructor(compareFn) {
+    this.compareFn = compareFn;
+  }
 
-  // 上浮
-  swim(x) {
-    // 改动处:x>1
-    while (x > 0 && this.compare(this.parent(x), x)) {
-      this.swap(x, this.parent(x));
-      x = this.parent(x);
-    }
-  }
-  // 下沉
-  sink(x) {
-    while (this.left(x) <= this.size) {
-      var cur = this.left(x);
+  // 上浮
+  swim(x) {
+    // 改动处:x>1
+    while (x > 0 && this.compare(this.parent(x), x)) {
+      this.swap(x, this.parent(x));
+      x = this.parent(x);
+    }
+  }
+  // 下沉
+  sink(x) {
+    while (this.left(x) <= this.size) {
+      var cur = this.left(x);
 
-      if (this.right(x) <= this.size && this.compare(cur, this.right(x))) {
-        cur = this.right(x);
-      }
-      if (this.compare(cur, x)) break;
-      this.swap(cur, x);
-      x = cur;
-    }
-  }
-  // 插入堆底
-  add(e) {
-    this.pq[this.size] = e;
-    this.swim(this.size);
-    // 改动处:后加
-    this.size++;
-  }
-  // 移除堆顶
-  poll() {
-    // 改动处:this.pq[1]
-    var cur = this.pq[0];
-    this.swap(0, this.size);
-    this.pq.pop();
-    this.size--;
-    this.sink(0);
-    return cur;
-  }
-  peek() {
-    // 改动处:this.pq[1]
-    return this.pq[0];
-  }
-  swap(i, j) {
-    var temp = this.pq[i];
-    this.pq[i] = this.pq[j];
-    this.pq[j] = temp;
-  }
-  compare(i, j) {
-    if (this.compareFn) {
-      return this.compareFn(this.pq[i], this.pq[j]) > 0;
-    }
-    return this.pq[i] - this.pq[j] > 0;
-  }
-  left(x) {
-    // 改动处:x*2
-    return x * 2 + 1;
-  }
-  right(x) {
-    // 改动处:x*2+1
-    return x * 2 + 2;
-  }
-  parent(x) {
-    // 改动处:x/2
-    return Math.floor(x - 1 / 2);
-  }
-  isEmpty() {
-    return !this.pq.length;
-  }
-}

优点:自排序,时间复杂度 O(log n)
缺点:出队顺序按照元素大小,无法按先进先出顺序

单调队列

js
class MonotonicQueue {
-  maxq = [];
+      if (this.right(x) <= this.size && this.compare(cur, this.right(x))) {
+        cur = this.right(x);
+      }
+      if (this.compare(cur, x)) break;
+      this.swap(cur, x);
+      x = cur;
+    }
+  }
+  // 插入堆底
+  add(e) {
+    this.pq[this.size] = e;
+    this.swim(this.size);
+    // 改动处:后加
+    this.size++;
+  }
+  // 移除堆顶
+  poll() {
+    // 改动处:this.pq[1]
+    var cur = this.pq[0];
+    this.swap(0, this.size);
+    this.pq.pop();
+    this.size--;
+    this.sink(0);
+    return cur;
+  }
+  peek() {
+    // 改动处:this.pq[1]
+    return this.pq[0];
+  }
+  swap(i, j) {
+    var temp = this.pq[i];
+    this.pq[i] = this.pq[j];
+    this.pq[j] = temp;
+  }
+  compare(i, j) {
+    if (this.compareFn) {
+      return this.compareFn(this.pq[i], this.pq[j]) > 0;
+    }
+    return this.pq[i] - this.pq[j] > 0;
+  }
+  left(x) {
+    // 改动处:x*2
+    return x * 2 + 1;
+  }
+  right(x) {
+    // 改动处:x*2+1
+    return x * 2 + 2;
+  }
+  parent(x) {
+    // 改动处:x/2
+    return Math.floor(x - 1 / 2);
+  }
+  isEmpty() {
+    return !this.pq.length;
+  }
+}

优点:自排序,时间复杂度 O(log n)
缺点:出队顺序按照元素大小,无法按先进先出顺序

单调队列

js
class MonotonicQueue {
+  maxq = [];
 
-  pop(n) {
-    // 如果出队不是最大元素,可能被压扁,则不用出队
-    if (this.maxq[0] === n) {
-      this.maxq.shift();
-    }
-  }
-  push(n) {
-    // 压扁中间元素,找到合适位置
-    while (this.maxq.length && this.maxq[this.maxq.length - 1] < n) {
-      this.maxq.pop();
-    }
-    this.maxq.push(n);
-  }
-  max() {
-    return this.maxq[0];
-  }
-}

优点:单调递增或递减,时间复杂度 O(1),可以按先进先出顺序
缺点:不能获取完整数据(由于删除中间元素)

- + pop(n) { + // 如果出队不是最大元素,可能被压扁,则不用出队 + if (this.maxq[0] === n) { + this.maxq.shift(); + } + } + push(n) { + // 压扁中间元素,找到合适位置 + while (this.maxq.length && this.maxq[this.maxq.length - 1] < n) { + this.maxq.pop(); + } + this.maxq.push(n); + } + max() { + return this.maxq[0]; + } +}

优点:单调递增或递减,时间复杂度 O(1),可以按先进先出顺序
缺点:不能获取完整数据(由于删除中间元素)

+ \ No newline at end of file diff --git a/zjw/koa-middleware.html b/zjw/koa-middleware.html index 509ffb5..7763aea 100644 --- a/zjw/koa-middleware.html +++ b/zjw/koa-middleware.html @@ -5,80 +5,82 @@ 实现 koa 中间件 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

实现 koa 中间件

koa 中间件具备以下特点

  • 每个中间件接受 next 函数,控制继续向下个中间件执行
  • next(error) 调用时,抛出异常,中断调用栈
  • await next() 前代码按中间件正序运行,后面代码按逆序运行(即洋葱模型)

例如,实现 run 函数,输出以下结果

ts
run(() => {
-  console.log('run task');
-  return Promise.resolve(1);
-}, [
-  (next) => {
-    console.log('1 entry');
-    await next();
-    console.log('1 leave');
-  },
-  (next) => {
-    console.log('2 entry');
-    await next();
-    console.log('2 leave');
-  },
-]);
+    
Skip to content

实现 koa 中间件

koa 中间件具备以下特点

  • 每个中间件接受 next 函数,控制继续向下个中间件执行
  • next(error) 调用时,抛出异常,中断调用栈
  • await next() 前代码按中间件正序运行,后面代码按逆序运行(即洋葱模型)

例如,实现 run 函数,输出以下结果

ts
run(() => {
+  console.log('run task');
+  return Promise.resolve(1);
+}, [
+  (next) => {
+    console.log('1 entry');
+    await next();
+    console.log('1 leave');
+  },
+  (next) => {
+    console.log('2 entry');
+    await next();
+    console.log('2 leave');
+  },
+]);
 
-// 1 entry
-// 2 entry
-// run task
-// 2 leave
-// 1 leave

使用 async await 实现

逆序遍历中间件列表,层层包裹 task 实现

ts
function run(task, middlewares: any[]) {
-  const composeTask = middlewares.reverse().reduce((prev, curr) => {
-    return async () => {
-      await curr(prev);
-    };
-  }, task);
+// 1 entry
+// 2 entry
+// run task
+// 2 leave
+// 1 leave

使用 async await 实现

逆序遍历中间件列表,层层包裹 task 实现

ts
function run(task, middlewares: any[]) {
+  const composeTask = middlewares.reverse().reduce((prev, curr) => {
+    return async () => {
+      await curr(prev);
+    };
+  }, task);
 
-  return composeTask();
-}

实现 next(error) 调用抛出异常

ts
function run(task, middlewares: any[]) {
-  // 包裹 task 接收 error 参数抛出
-  const composeTask = [...middlewares, task].reverse().reduce((prev, curr) => {
-    return async (error) => {
-      if (error) {
-        throw error;
-      }
-      await curr(prev);
-    };
-    // 省略第二个参数,会从第二个元素开始遍历
-  }, undefined);
+  return composeTask();
+}

实现 next(error) 调用抛出异常

ts
function run(task, middlewares: any[]) {
+  // 包裹 task 接收 error 参数抛出
+  const composeTask = [...middlewares, task].reverse().reduce((prev, curr) => {
+    return async (error) => {
+      if (error) {
+        throw error;
+      }
+      await curr(prev);
+    };
+    // 省略第二个参数,会从第二个元素开始遍历
+  }, undefined);
 
-  return composeTask();
-}

如果其中一个中间件不使用 await 方式调用 next 会出现以下输出

ts
run(() => {
-  console.log('run task');
-  return Promise.resolve(1);
-}, [
-  (next) => {
-    console.log('1 entry');
-    next();
-    console.log('1 leave');
-  },
-  (next) => {
-    console.log('2 entry');
-    await next();
-    console.log('2 leave');
-  },
-]);
+  return composeTask();
+}

如果其中一个中间件不使用 await 方式调用 next 会出现以下输出

ts
run(() => {
+  console.log('run task');
+  return Promise.resolve(1);
+}, [
+  (next) => {
+    console.log('1 entry');
+    next();
+    console.log('1 leave');
+  },
+  (next) => {
+    console.log('2 entry');
+    await next();
+    console.log('2 leave');
+  },
+]);
 
-// 1 entry
-// 2 entry
-// run task
-// 1 leave
-// 2 leave

可以发现,entry 代码是按正确循序执行,但是 leave 代码,由于第二个中间件 await next() 后面代码添加成微任务,退出第一个中间件 next 调用,执行接下来语句,所以先输出 “1 leave”,再执行微任务,输出 “2 leave”

- +// 1 entry +// 2 entry +// run task +// 1 leave +// 2 leave

可以发现,entry 代码是按正确循序执行,但是 leave 代码,由于第二个中间件 await next() 后面代码添加成微任务,退出第一个中间件 next 调用,执行接下来语句,所以先输出 “1 leave”,再执行微任务,输出 “2 leave”

+ \ No newline at end of file diff --git a/zjw/linked-list.html b/zjw/linked-list.html index 9b747b6..33e965d 100644 --- a/zjw/linked-list.html +++ b/zjw/linked-list.html @@ -5,126 +5,128 @@ 链表 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

链表

构建

js
function ListNode(val) {
-  this.val = val;
-  this.next = null;
-}
+    
Skip to content

链表

构建

js
function ListNode(val) {
+  this.val = val;
+  this.next = null;
+}
 
-console.log(build([1, 2, 3]));
js
function build(nums) {
-  var dummy = new ListNode();
-  var p = dummy;
+console.log(build([1, 2, 3]));
js
function build(nums) {
+  var dummy = new ListNode();
+  var p = dummy;
 
-  for (let i = 0; i < nums.length; i++) {
-    var node = new ListNode(nums[i]);
-    p.next = node;
-    p = node;
-  }
+  for (let i = 0; i < nums.length; i++) {
+    var node = new ListNode(nums[i]);
+    p.next = node;
+    p = node;
+  }
 
-  return dummy.next;
-}
js
function build(nums, start = 0) {
-  if (start > nums.length - 1) {
-    return null;
-  }
-  var node = new ListNode(nums[start]);
-  node.next = build(nums, start + 1);
+  return dummy.next;
+}
js
function build(nums, start = 0) {
+  if (start > nums.length - 1) {
+    return null;
+  }
+  var node = new ListNode(nums[start]);
+  node.next = build(nums, start + 1);
 
-  return node;
-}

反转

js
function reverse(head) {
-  var pre = null,
-    cur = head;
+  return node;
+}

反转

js
function reverse(head) {
+  var pre = null,
+    cur = head;
 
-  while (cur) {
-    var next = cur.next;
-    cur.next = pre;
-    pre = cur;
-    cur = next;
-  }
-  return pre;
-}
js
function reverse(head) {
-  if (head === null || head.next === null) {
-    return head;
-  }
+  while (cur) {
+    var next = cur.next;
+    cur.next = pre;
+    pre = cur;
+    cur = next;
+  }
+  return pre;
+}
js
function reverse(head) {
+  if (head === null || head.next === null) {
+    return head;
+  }
 
-  var last = reverse(head.next);
-  head.next.next = head;
-  head.next = null;
-  return last;
-}

反转 m 到 n 之间元素

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

js
var reverseBetween = function (head, left, right) {
-  if (left === 1) {
-    return reverseN(head, right);
-  }
+  var last = reverse(head.next);
+  head.next.next = head;
+  head.next = null;
+  return last;
+}

反转 m 到 n 之间元素

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

js
var reverseBetween = function (head, left, right) {
+  if (left === 1) {
+    return reverseN(head, right);
+  }
 
-  head.next = reverseBetween(head.next, left - 1, right - 1);
-  return head;
-};
+  head.next = reverseBetween(head.next, left - 1, right - 1);
+  return head;
+};
 
-var successor = null;
+var successor = null;
 
-function reverseN(head, n) {
-  if (n === 1) {
-    successor = head.next;
-    return head;
-  }
+function reverseN(head, n) {
+  if (n === 1) {
+    successor = head.next;
+    return head;
+  }
 
-  var last = reverseN(head.next, n - 1);
-  head.next.next = head;
-  head.next = successor;
+  var last = reverseN(head.next, n - 1);
+  head.next.next = head;
+  head.next = successor;
 
-  return last;
-}

双向链表

js
class Node {
-  prev = null;
-  next = null;
+  return last;
+}

双向链表

js
class Node {
+  prev = null;
+  next = null;
 
-  constructor(val) {
-    this.val = val;
-  }
-}
+  constructor(val) {
+    this.val = val;
+  }
+}
 
-class DoubleLinkedList {
-  size = 0;
+class DoubleLinkedList {
+  size = 0;
 
-  constructor() {
-    this.head = new Node();
-    this.tail = new Node();
-    this.head.next = this.tail;
-    this.tail.prev = this.head;
-  }
-  // 向队尾添加节点
-  addLast(node) {
-    node.prev = this.tail.prev;
-    node.next = this.tail;
-    this.tail.prev.next = node;
-    this.tail.prev = node;
-    this.size++;
-  }
-  // 移除节点
-  remove(node) {
-    node.prev.next = node.next;
-    node.next.prev = node.prev;
-    this.size--;
-  }
-  // 移除队头
-  removeFirst() {
-    if (this.head.next === this.tail) {
-      return null;
-    }
-    const first = this.head.next;
-    this.remove(first);
-    return first;
-  }
-}
- + constructor() { + this.head = new Node(); + this.tail = new Node(); + this.head.next = this.tail; + this.tail.prev = this.head; + } + // 向队尾添加节点 + addLast(node) { + node.prev = this.tail.prev; + node.next = this.tail; + this.tail.prev.next = node; + this.tail.prev = node; + this.size++; + } + // 移除节点 + remove(node) { + node.prev.next = node.next; + node.next.prev = node.prev; + this.size--; + } + // 移除队头 + removeFirst() { + if (this.head.next === this.tail) { + return null; + } + const first = this.head.next; + this.remove(first); + return first; + } +}
+ \ No newline at end of file diff --git a/zjw/react-router.html b/zjw/react-router.html index 9603b2e..a0d504a 100644 --- a/zjw/react-router.html +++ b/zjw/react-router.html @@ -5,29 +5,31 @@ react-router 实现 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

react-router 实现

history

  • pushState 与 replaceState 改变路由,不会触发路由事件

  • 监听路由改变事件(只在浏览器行为下触发,前进后退、history 方法 forward、back、go)

    window.addEventListener('popstate',function(e){ // 监听改变 })

    需要修改 nginx 支持路由重定向到 index.html

nginx
location / {
-   try_files $uri $uri/ /index.html;
- }

hash

  • location.hash 设置改变路由

  • onhashchange 监听路由改变

    window.addEventListener('onhashchange',function(e){ // 监听改变 })

js
function push(path) {
-  location.hash = path;
-}
-function replace(path) {
-  const hashIndex = location.href.indexOf('#');
-  const href = hashIndex === -1 ? url : url.slice(0, hashIndex);
+    
Skip to content

react-router 实现

history

  • pushState 与 replaceState 改变路由,不会触发路由事件

  • 监听路由改变事件(只在浏览器行为下触发,前进后退、history 方法 forward、back、go)

    window.addEventListener('popstate',function(e){ // 监听改变 })

    需要修改 nginx 支持路由重定向到 index.html

nginx
 location / {
+   try_files $uri $uri/ /index.html;
+ }

hash

  • location.hash 设置改变路由

  • onhashchange 监听路由改变

    window.addEventListener('onhashchange',function(e){ // 监听改变 })

js
function push(path) {
+  location.hash = path;
+}
+function replace(path) {
+  const hashIndex = location.href.indexOf('#');
+  const href = hashIndex === -1 ? url : url.slice(0, hashIndex);
 
-  location.replace(href + '#' + path);
-}

总结

v5 版本:路由改变 history 创建新的 location 对象,Router 监听 history 触发的事件,并更新 RouterContext 的 location 值,触发 Switch 匹配 Route 并渲染

图片来源:https://juejin.cn/post/6886290490640039943

- + location.replace(href + '#' + path); +}

总结

v5 版本:路由改变 history 创建新的 location 对象,Router 监听 history 触发的事件,并更新 RouterContext 的 location 值,触发 Switch 匹配 Route 并渲染

图片来源:https://juejin.cn/post/6886290490640039943

+ \ No newline at end of file diff --git a/zjw/sandbox.html b/zjw/sandbox.html index 2cc67b1..b1f379b 100644 --- a/zjw/sandbox.html +++ b/zjw/sandbox.html @@ -5,37 +5,39 @@ 实现一个不能操作 DOM 的环境 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

实现一个不能操作 DOM 的环境

实现一

通过 with 语句限制内部代码访问的上下文,再代理 window 对象

js
function sandbox(code, options) {
-  const { blackList, ctx } = options;
-  const innerCtx = new Proxy(ctx, {
-    has(target, prop) {
-      if (blackList.includes(prop)) {
-        throw new Error(`cant use ${prop} in sandbox`);
-      }
+    
Skip to content

实现一个不能操作 DOM 的环境

实现一

通过 with 语句限制内部代码访问的上下文,再代理 window 对象

js
function sandbox(code, options) {
+  const { blackList, ctx } = options;
+  const innerCtx = new Proxy(ctx, {
+    has(target, prop) {
+      if (blackList.includes(prop)) {
+        throw new Error(`cant use ${prop} in sandbox`);
+      }
 
-      return Reflect.has(target, prop);
-    },
-  });
+      return Reflect.has(target, prop);
+    },
+  });
 
-  return new Function('ctx', `with(ctx) { ${code} }`).call(innerCtx, innerCtx);
-}
+  return new Function('ctx', `with(ctx) { ${code} }`).call(innerCtx, innerCtx);
+}
 
-sandbox('console.log(document)', {
-  blackList: ['document'],
-  ctx: window,
-});
- +sandbox('console.log(document)', { + blackList: ['document'], + ctx: window, +});
+ \ No newline at end of file diff --git a/zjw/sort.html b/zjw/sort.html index 34212a9..be1ac99 100644 --- a/zjw/sort.html +++ b/zjw/sort.html @@ -5,185 +5,187 @@ 排序算法 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

排序算法

冒泡排序

javascript
function bubbleSort(nums) {
-  var n = nums.length;
-  var temp, didSwap;
-
-  for (var i = 0; i < n - 1; i++) {
-    didSwap = false;
-    for (var j = 0; j < n - i - 1; j++) {
-      if (nums[j] > nums[j + 1]) {
-        temp = nums[j];
-        nums[j] = nums[j + 1];
-        nums[j + 1] = temp;
-        didSwap = true;
-      }
-    }
-
-    // 正序情况下直接返回
-    if (!didSwap) {
-      return;
-    }
-  }
-}

归并排序

javascript
class Merge {
-  static temp;
-
-  static sort(nums) {
-    Merge.temp = [];
-    Merge._sort(nums, 0, nums.length - 1);
-  }
-
-  static _sort(nums, lo, hi) {
-    if (lo === hi) {
-      return;
-    }
-    var mid = lo + Math.floor((hi - lo) / 2);
-    Merge._sort(nums, lo, mid);
-    Merge._sort(nums, mid + 1, hi);
-    Merge.merge(nums, lo, mid, hi);
-  }
-
-  static merge(nums, lo, mid, hi) {
-    for (var i = lo; i <= hi; i++) {
-      Merge.temp[i] = nums[i];
-    }
-    // 合并两个升序数组 temp[lo,mid] temp[mid+1,hi]
-    var i = lo,
-      j = mid + 1;
-    for (var p = lo; p <= hi; p++) {
-      if (i === mid + 1) {
-        // 左半边数组被全部合并
-        nums[p] = Merge.temp[j++];
-      } else if (j === hi + 1) {
-        // 右半边数组被全部合并
-        nums[p] = Merge.temp[i++];
-      } else if (Merge.temp[i] > Merge.temp[j]) {
-        nums[p] = Merge.temp[j++];
-      } else {
-        nums[p] = Merge.temp[i++];
-      }
-    }
-  }
-}
-
-Merge.sort([5, 2, 3, 1]);

快速排序

js
function quickSort(nums) {
-  // 洗牌降低退化成一个链表的概率
-  shuffle(nums);
-  sort(nums, 0, nums.length - 1);
-  return nums;
-}
-
-function sort(nums, lo, hi) {
-  if (lo >= hi) {
-    return;
-  }
-  // 对 nums[lo..hi] 进行切分
-  // 使得 nums[lo..p-1] <= nums[p] < nums[p+1..hi]
-  var p = partition(nums, lo, hi);
-
-  sort(nums, lo, p - 1);
-  sort(nums, p + 1, hi);
-}
-
-function partition(nums, lo, hi) {
-  // [lo, i) <= pivot && (j, hi] > pivot
-  var pivot = nums[lo];
-  var i = lo + 1,
-    j = hi;
-
-  while (i <= j) {
-    while (i < hi && nums[i] <= pivot) i++;
-    while (j > lo && nums[j] > pivot) j--;
-
-    // 此时 [lo, i) <= pivot && (j, hi] > pivot
-    if (i >= j) {
-      break;
-    }
-    [nums[i], nums[j]] = [nums[j], nums[i]];
-  }
-  [nums[lo], nums[j]] = [nums[j], nums[lo]];
-  return j;
-}
-
-// 洗牌算法,将输入的数组随机打乱
-function shuffle(nums) {
-  for (var i = nums.length - 1; i > 0; i--) {
-    const j = Math.floor(Math.random() * (i + 1));
-
-    [nums[i], nums[j]] = [nums[j], nums[i]];
-  }
-}
js
function quickSort(nums) {
-  const stack = [[0, nums.length - 1]];
-
-  while (stack.length) {
-    const [lo, hi] = stack.pop();
-
-    if (lo >= hi) {
-      continue;
-    }
-
-    let p = partition(nums, lo, hi);
-
-    stack.push([lo, p - 1]);
-    stack.push([p + 1, hi]);
-  }
-
-  return nums;
-}

堆排序

javascript
function heapSort(nums) {
-  buildMaxHeap(nums);
-  for (var i = nums.length - 1; i >= 0; i--) {
-    // 交换堆顶与最后一个元素
-    [nums[i], nums[0]] = [nums[0], nums[i]];
-    // 下沉堆顶元素到合适位置
-    maxHeapify(nums, 0, i);
-  }
-}
-
-function buildMaxHeap(nums) {
-  var n = nums.length;
-  // 从低向上构建大堆
-  for (var i = Math.floor(n / 2) - 1; i >= 0; i--) {
-    maxHeapify(nums, i, n);
-  }
-}
-
-/**
- *
- * @param {*} nums
- * @param {*} i 父节点下标
- * @param {*} len 堆大小
- */
-function maxHeapify(nums, i, len) {
-  var largest = i;
-  var left = i * 2 + 1;
-  var right = i * 2 + 2;
-
-  if (left < len && nums[left] > nums[largest]) {
-    largest = left;
-  }
-  if (right < len && nums[right] > nums[largest]) {
-    largest = right;
-  }
-
-  if (largest !== i) {
-    // 上浮大元素
-    [nums[i], nums[largest]] = [nums[largest], nums[i]];
-    // 下沉小元素
-    maxHeapify(nums, largest, len);
-  }
-}
- +
Skip to content

排序算法

冒泡排序

javascript
function bubbleSort(nums) {
+  var n = nums.length;
+  var temp, didSwap;
+
+  for (var i = 0; i < n - 1; i++) {
+    didSwap = false;
+    for (var j = 0; j < n - i - 1; j++) {
+      if (nums[j] > nums[j + 1]) {
+        temp = nums[j];
+        nums[j] = nums[j + 1];
+        nums[j + 1] = temp;
+        didSwap = true;
+      }
+    }
+
+    // 正序情况下直接返回
+    if (!didSwap) {
+      return;
+    }
+  }
+}

归并排序

javascript
class Merge {
+  static temp;
+
+  static sort(nums) {
+    Merge.temp = [];
+    Merge._sort(nums, 0, nums.length - 1);
+  }
+
+  static _sort(nums, lo, hi) {
+    if (lo === hi) {
+      return;
+    }
+    var mid = lo + Math.floor((hi - lo) / 2);
+    Merge._sort(nums, lo, mid);
+    Merge._sort(nums, mid + 1, hi);
+    Merge.merge(nums, lo, mid, hi);
+  }
+
+  static merge(nums, lo, mid, hi) {
+    for (var i = lo; i <= hi; i++) {
+      Merge.temp[i] = nums[i];
+    }
+    // 合并两个升序数组 temp[lo,mid] temp[mid+1,hi]
+    var i = lo,
+      j = mid + 1;
+    for (var p = lo; p <= hi; p++) {
+      if (i === mid + 1) {
+        // 左半边数组被全部合并
+        nums[p] = Merge.temp[j++];
+      } else if (j === hi + 1) {
+        // 右半边数组被全部合并
+        nums[p] = Merge.temp[i++];
+      } else if (Merge.temp[i] > Merge.temp[j]) {
+        nums[p] = Merge.temp[j++];
+      } else {
+        nums[p] = Merge.temp[i++];
+      }
+    }
+  }
+}
+
+Merge.sort([5, 2, 3, 1]);

快速排序

js
function quickSort(nums) {
+  // 洗牌降低退化成一个链表的概率
+  shuffle(nums);
+  sort(nums, 0, nums.length - 1);
+  return nums;
+}
+
+function sort(nums, lo, hi) {
+  if (lo >= hi) {
+    return;
+  }
+  // 对 nums[lo..hi] 进行切分
+  // 使得 nums[lo..p-1] <= nums[p] < nums[p+1..hi]
+  var p = partition(nums, lo, hi);
+
+  sort(nums, lo, p - 1);
+  sort(nums, p + 1, hi);
+}
+
+function partition(nums, lo, hi) {
+  // [lo, i) <= pivot && (j, hi] > pivot
+  var pivot = nums[lo];
+  var i = lo + 1,
+    j = hi;
+
+  while (i <= j) {
+    while (i < hi && nums[i] <= pivot) i++;
+    while (j > lo && nums[j] > pivot) j--;
+
+    // 此时 [lo, i) <= pivot && (j, hi] > pivot
+    if (i >= j) {
+      break;
+    }
+    [nums[i], nums[j]] = [nums[j], nums[i]];
+  }
+  [nums[lo], nums[j]] = [nums[j], nums[lo]];
+  return j;
+}
+
+// 洗牌算法,将输入的数组随机打乱
+function shuffle(nums) {
+  for (var i = nums.length - 1; i > 0; i--) {
+    const j = Math.floor(Math.random() * (i + 1));
+
+    [nums[i], nums[j]] = [nums[j], nums[i]];
+  }
+}
js
function quickSort(nums) {
+  const stack = [[0, nums.length - 1]];
+
+  while (stack.length) {
+    const [lo, hi] = stack.pop();
+
+    if (lo >= hi) {
+      continue;
+    }
+
+    let p = partition(nums, lo, hi);
+
+    stack.push([lo, p - 1]);
+    stack.push([p + 1, hi]);
+  }
+
+  return nums;
+}

堆排序

javascript
function heapSort(nums) {
+  buildMaxHeap(nums);
+  for (var i = nums.length - 1; i >= 0; i--) {
+    // 交换堆顶与最后一个元素
+    [nums[i], nums[0]] = [nums[0], nums[i]];
+    // 下沉堆顶元素到合适位置
+    maxHeapify(nums, 0, i);
+  }
+}
+
+function buildMaxHeap(nums) {
+  var n = nums.length;
+  // 从低向上构建大堆
+  for (var i = Math.floor(n / 2) - 1; i >= 0; i--) {
+    maxHeapify(nums, i, n);
+  }
+}
+
+/**
+ *
+ * @param {*} nums
+ * @param {*} i 父节点下标
+ * @param {*} len 堆大小
+ */
+function maxHeapify(nums, i, len) {
+  var largest = i;
+  var left = i * 2 + 1;
+  var right = i * 2 + 2;
+
+  if (left < len && nums[left] > nums[largest]) {
+    largest = left;
+  }
+  if (right < len && nums[right] > nums[largest]) {
+    largest = right;
+  }
+
+  if (largest !== i) {
+    // 上浮大元素
+    [nums[i], nums[largest]] = [nums[largest], nums[i]];
+    // 下沉小元素
+    maxHeapify(nums, largest, len);
+  }
+}
+ \ No newline at end of file diff --git a/zjw/transform-tree.html b/zjw/transform-tree.html index 745e70a..8676dcb 100644 --- a/zjw/transform-tree.html +++ b/zjw/transform-tree.html @@ -5,78 +5,80 @@ 扁平数据结构转换成树 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

扁平数据结构转换成树

input

js
let arr = [
-  { id: 1, name: '部门1', pid: 0 },
-  { id: 2, name: '部门2', pid: 1 },
-  { id: 3, name: '部门3', pid: 1 },
-  { id: 4, name: '部门4', pid: 3 },
-  { id: 5, name: '部门5', pid: 4 },
-];

output

js
[
-  {
-    id: 1,
-    name: '部门1',
-    children: [
-      { id: 2, name: '部门2', pid: 1 },
-      {
-        id: 3,
-        name: '部门3',
-        pid: 1,
-        children: [
-          // ...
-        ],
-      },
-    ],
-  },
-];

实现一:递归

js
function getChildren(arr, id, result = []) {
-  arr.forEach((m) => {
-    if (m.pid === id) {
-      result.push({
-        ...m,
-        children: getChildren(arr, m.id),
-      });
-    }
-  });
+    
Skip to content

扁平数据结构转换成树

input

js
let arr = [
+  { id: 1, name: '部门1', pid: 0 },
+  { id: 2, name: '部门2', pid: 1 },
+  { id: 3, name: '部门3', pid: 1 },
+  { id: 4, name: '部门4', pid: 3 },
+  { id: 5, name: '部门5', pid: 4 },
+];

output

js
[
+  {
+    id: 1,
+    name: '部门1',
+    children: [
+      { id: 2, name: '部门2', pid: 1 },
+      {
+        id: 3,
+        name: '部门3',
+        pid: 1,
+        children: [
+          // ...
+        ],
+      },
+    ],
+  },
+];

实现一:递归

js
function getChildren(arr, id, result = []) {
+  arr.forEach((m) => {
+    if (m.pid === id) {
+      result.push({
+        ...m,
+        children: getChildren(arr, m.id),
+      });
+    }
+  });
 
-  return result;
-}

实现二:Map

js
function gerenteTree(arr) {
-  const map = {};
-  const result = [];
+  return result;
+}

实现二:Map

js
function gerenteTree(arr) {
+  const map = {};
+  const result = [];
 
-  arr.forEach((m) => {
-    const { id, pid } = m;
-    const item = {
-      ...m,
-      children: map[id] ? map[id].children : [],
-    };
+  arr.forEach((m) => {
+    const { id, pid } = m;
+    const item = {
+      ...m,
+      children: map[id] ? map[id].children : [],
+    };
 
-    map[id] = item;
+    map[id] = item;
 
-    if (pid === 0) {
-      result.push(item);
-    } else {
-      if (!map[pid]) {
-        map[pid] = {
-          children: [],
-        };
-      }
-      map[pid].children.push(item);
-    }
-  });
+    if (pid === 0) {
+      result.push(item);
+    } else {
+      if (!map[pid]) {
+        map[pid] = {
+          children: [],
+        };
+      }
+      map[pid].children.push(item);
+    }
+  });
 
-  return result;
-}

结论

  • 递归时间复杂度:O(n logk n) 最坏情况下(k=1)等于 n^2,空间复杂度 O(n)
  • Map 时间复杂度:O(n) 空间复杂度 O(n)

当 n 越大时采用实现二更优

- + return result; +}

结论

  • 递归时间复杂度:O(n logk n) 最坏情况下(k=1)等于 n^2,空间复杂度 O(n)
  • Map 时间复杂度:O(n) 空间复杂度 O(n)

当 n 越大时采用实现二更优

+ \ No newline at end of file diff --git a/zjw/webpack-pack-optimization.html b/zjw/webpack-pack-optimization.html index fdcec93..651c9a3 100644 --- a/zjw/webpack-pack-optimization.html +++ b/zjw/webpack-pack-optimization.html @@ -5,112 +5,114 @@ webpack 打包速度优化 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

webpack 打包速度优化

webpack 是个模块化打包工具,所以影响打包速度的因素主要取决于打包量。

我们将从减少打包量和 webpack 配置优化两方面讲解优化方法。

减少打包量

1.模块按需引入

例如 antd、echarts、lodash 都支持按需引入,其它支持请查看各包使用文档

diff
! lodash
--import _ from 'lodash';
-+import _map from 'lodash/map';
+    
Skip to content

webpack 打包速度优化

webpack 是个模块化打包工具,所以影响打包速度的因素主要取决于打包量。

我们将从减少打包量和 webpack 配置优化两方面讲解优化方法。

减少打包量

1.模块按需引入

例如 antd、echarts、lodash 都支持按需引入,其它支持请查看各包使用文档

diff
! lodash
+-import _ from 'lodash';
++import _map from 'lodash/map';
 
-var users = [
-  { 'user': 'barney' },
-  { 'user': 'fred' }
-];
+var users = [
+  { 'user': 'barney' },
+  { 'user': 'fred' }
+];
 
-// => ['barney', 'fred']
--_.map(users, 'user');
-+_map(users, 'user');
+// => ['barney', 'fred']
+-_.map(users, 'user');
++_map(users, 'user');
 
-! antd
--import { Button } from 'antd';
-+import Button from 'antd/lib/button';
-+import 'antd/lib/button/style/css';
-// 如果整体引入样式(import 'antd/dist/antd.css'),则css无法按需引入
+! antd
+-import { Button } from 'antd';
++import Button from 'antd/lib/button';
++import 'antd/lib/button/style/css';
+// 如果整体引入样式(import 'antd/dist/antd.css'),则css无法按需引入
 
-! echarts
--import echarts from 'echarts';
-+import echarts from 'echarts/lib/echarts';
-+import 'echarts/lib/component/tooltip';
-+import 'echarts/lib/component/title';
-+import 'echarts/lib/chart/line';

一些插件可以保持当前整体引入的写法,通过插件自动转换成按需引入写法

2.移除未使用的引入模块

未使用的引入,webpack 还是会进行打包,可以开启 eslint 的 no-unused-vars 规则为 error 避免不必要的导入,还可以限制空函数等。

3.统一技术栈,避免同类型包引入

webpack 配置优化

开发环境应该避免不必要的 loader 与 plugin ,如 postcss,uglifyjs-webpack-plugin 等,只启用保证运行的工具。

1.移除不必要的 polyfill 与兼容 loader(适用 dev)

diff
//webpack.config.dev.js
-module.exports = {
-  entry: [
--   require.resolve('./polyfills')
-  ],
-  module: {
-    rules: [
-      {
-        test: /\.css$/,
-        use: [
-              'style-loader',
-              'css-loader',
--             'postcss-loader'
-              ]
-      }
-    ]
-  }
-};

2.DllPlugin 预编译与 IgnorePlugin 忽略语言文件打包(适用 dev 和 prod)

可以通过 DllPlugin 插件将公共模块预编译,减少构建时间

  • 创建 config/webpack.config.dll.js 文件
js
const path = require('path');
-const webpack = require('webpack');
+! echarts
+-import echarts from 'echarts';
++import echarts from 'echarts/lib/echarts';
++import 'echarts/lib/component/tooltip';
++import 'echarts/lib/component/title';
++import 'echarts/lib/chart/line';

一些插件可以保持当前整体引入的写法,通过插件自动转换成按需引入写法

2.移除未使用的引入模块

未使用的引入,webpack 还是会进行打包,可以开启 eslint 的 no-unused-vars 规则为 error 避免不必要的导入,还可以限制空函数等。

3.统一技术栈,避免同类型包引入

webpack 配置优化

开发环境应该避免不必要的 loader 与 plugin ,如 postcss,uglifyjs-webpack-plugin 等,只启用保证运行的工具。

1.移除不必要的 polyfill 与兼容 loader(适用 dev)

diff
//webpack.config.dev.js
+module.exports = {
+  entry: [
+-   require.resolve('./polyfills')
+  ],
+  module: {
+    rules: [
+      {
+        test: /\.css$/,
+        use: [
+              'style-loader',
+              'css-loader',
+-             'postcss-loader'
+              ]
+      }
+    ]
+  }
+};

2.DllPlugin 预编译与 IgnorePlugin 忽略语言文件打包(适用 dev 和 prod)

可以通过 DllPlugin 插件将公共模块预编译,减少构建时间

  • 创建 config/webpack.config.dll.js 文件
js
const path = require('path');
+const webpack = require('webpack');
 
-module.exports = {
-  entry: {
-    vendor: [
-      'react',
-      'react-dom',
-      'react-router',
-      'react-router-dom',
-      'react-router-redux',
-      'redux',
-      'react-redux',
-      'redux-thunk',
-      'axios',
-      'react-intl-universal',
-      'antd'
-    ]
-  },
-  output: {
-    path: path.join(__dirname, '../public/static/js'), // 放在项目的static/js目录下面
-    filename: '[name].dll.js', // 打包文件的名字
-    library: '[name]_library' // 暴露出的全局变量名,需要与插件name对应
-  },
-  plugins: [
-    new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
-    new webpack.DllPlugin({
-      path: path.join(__dirname, '[name]-manifest.json'), // 生成模块清单文件
-      name: '[name]_library'
-    }),
-    new webpack.optimize.UglifyJsPlugin({
-      compress: {
-        warnings: false,
-        comparisons: false
-      },
-      output: {
-        comments: false,
-        ascii_only: true
-      },
-      parallel: true, // 并行压缩代码
-      sourceMap: true
-    })
-  ],
-  devtool: 'source-map'
-};
  • 修改 package.json 的 scripts
diff
"scripts": {
-+    "build:dll": "webpack --config config/webpack.config.dll.js -p"
-  }

运行 npm run build:dll 会在 config/ 下生成 vendor-manifest.json 打包清单文件,用于 DllReferencePlugin 插件忽略掉已预编译的模块,从而减少打包量。 同时会在 public/static/js/ 下生成打包文件

  • 修改 dev 与 prod 的 webpack 配置文件
diff
module.exports = {
-  plugins: [
-+    new webpack.DllReferencePlugin({
-+     manifest: require('./vendor-manifest.json')
-+    })
-  ]
-};
  • 修改 index.html 添加 dll 包的引用
diff
+  <script src="%PUBLIC_URL%/static/js/vendor.dll.js"></script>

注:如果报公共库找不到,先检查 public/static/js/vendor.dll.js 是否存在,否则先构建公共库 npm run build:dll,如果修改或升级预编译的模块也需要重新构建公共库

升级 webpack 等构建工具

- +module.exports = { + entry: { + vendor: [ + 'react', + 'react-dom', + 'react-router', + 'react-router-dom', + 'react-router-redux', + 'redux', + 'react-redux', + 'redux-thunk', + 'axios', + 'react-intl-universal', + 'antd' + ] + }, + output: { + path: path.join(__dirname, '../public/static/js'), // 放在项目的static/js目录下面 + filename: '[name].dll.js', // 打包文件的名字 + library: '[name]_library' // 暴露出的全局变量名,需要与插件name对应 + }, + plugins: [ + new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + new webpack.DllPlugin({ + path: path.join(__dirname, '[name]-manifest.json'), // 生成模块清单文件 + name: '[name]_library' + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false, + comparisons: false + }, + output: { + comments: false, + ascii_only: true + }, + parallel: true, // 并行压缩代码 + sourceMap: true + }) + ], + devtool: 'source-map' +};
  • 修改 package.json 的 scripts
diff
  "scripts": {
++    "build:dll": "webpack --config config/webpack.config.dll.js -p"
+  }

运行 npm run build:dll 会在 config/ 下生成 vendor-manifest.json 打包清单文件,用于 DllReferencePlugin 插件忽略掉已预编译的模块,从而减少打包量。 同时会在 public/static/js/ 下生成打包文件

  • 修改 dev 与 prod 的 webpack 配置文件
diff
module.exports = {
+  plugins: [
++    new webpack.DllReferencePlugin({
++     manifest: require('./vendor-manifest.json')
++    })
+  ]
+};
  • 修改 index.html 添加 dll 包的引用
diff
+  <script src="%PUBLIC_URL%/static/js/vendor.dll.js"></script>

注:如果报公共库找不到,先检查 public/static/js/vendor.dll.js 是否存在,否则先构建公共库 npm run build:dll,如果修改或升级预编译的模块也需要重新构建公共库

升级 webpack 等构建工具

+ \ No newline at end of file diff --git a/zjw/webpack.html b/zjw/webpack.html index abac3d7..974470f 100644 --- a/zjw/webpack.html +++ b/zjw/webpack.html @@ -5,27 +5,29 @@ webpack 总览 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

webpack 总览

loader 用于转换某些类型的模块,插件则用于扩展 webpack 功能,通过注入钩子参与构建流程

构建流程

  1. 初始化参数
  2. 通过参数初始化 Compiler 对象,加载所有配置的插件,执行 run 方法开始编译
  3. 根据 entry 递归找到所有依赖,并根据文件类型,使用配置 loader 处理文件
  4. 完成所有模块转换后,构建依赖图
  5. 根据依赖图组装成一个个包含多模块的 chunk,再把 chunk 加入输出列表(插件最后修改输出内容时机)
  6. 根据配置确定输出内容的路径与文件名,写入文件系统

打包速度优化(简言之:减少打包量、并行、缓存、预构建)

  • 缩小处理文件
    • resolve.alias:直接指定打包好的代码(仅开发)
    • 优化 loader 配置:开启缓存、include 减少匹配文件
    • 减少文件匹配路径:resolve 匹配规则
    • 优化解析规则:module.noParse 指定不使用模块化解析文件
    • 按需加载
    • 懒编译
  • 并行打包
  • 构建缓存
  • 模块联邦

webpack4 打包速度优化文档【旧】

webpack HRM 原理

webpack-dev-server 向网页注入用于连接开发服务的客户端代码,在代码变更时编译出新的补丁文件,发送到网页执行

当模块变更后,更新事件会向上传递,直到某层接受了当前变化的模块,就会调用 callback 去执行自定义逻辑。当上抛到最外层没有被接受,就会刷新整个网页

js
if (module.hot) {
-  module.hot.accept(['./App'], () => {
-    render(<App />, window.document.getElementById('app'));
-  });
-}

Scope Hoisting(作用域提升)

合并 ES6 模块导入,且只被引用一次

好处:代码体积更小;内存开销减少,通过减少作用域创建函数

Compiler 和 Compilation

compiler 代表了整个 Webpack 从启动到关闭的生命周期,而 compilation 只是代表了一次新的编译,由 compiler 每次构建创建

compilation 包含了当前的模块资源、编译生成资源、变化的文件等

loader 用法

js
{
-  // 用正则去匹配要用该 loader 转换的 CSS 文件
-  test: /\.css$/,
-  use: ['style-loader', 'css-loader?minimize']
-}
  • use 属性由 loader 名称组成的数组,loader 从后往前执行
  • 每个 loader 可以通过 URL querystring 方式传入参数,也可以通过对象形式传入 { loader: 'css-loader', options: { minimize: true } }
  • 内联方式使用 loader,import '!style-loader!css-loader?minimize!./styles.css'

loader 执行循序

- +
Skip to content

webpack 总览

loader 用于转换某些类型的模块,插件则用于扩展 webpack 功能,通过注入钩子参与构建流程

构建流程

  1. 初始化参数
  2. 通过参数初始化 Compiler 对象,加载所有配置的插件,执行 run 方法开始编译
  3. 根据 entry 递归找到所有依赖,并根据文件类型,使用配置 loader 处理文件
  4. 完成所有模块转换后,构建依赖图
  5. 根据依赖图组装成一个个包含多模块的 chunk,再把 chunk 加入输出列表(插件最后修改输出内容时机)
  6. 根据配置确定输出内容的路径与文件名,写入文件系统

打包速度优化(简言之:减少打包量、并行、缓存、预构建)

  • 缩小处理文件
    • resolve.alias:直接指定打包好的代码(仅开发)
    • 优化 loader 配置:开启缓存、include 减少匹配文件
    • 减少文件匹配路径:resolve 匹配规则
    • 优化解析规则:module.noParse 指定不使用模块化解析文件
    • 按需加载
    • 懒编译
  • 并行打包
  • 构建缓存
  • 模块联邦

webpack4 打包速度优化文档【旧】

webpack HRM 原理

webpack-dev-server 向网页注入用于连接开发服务的客户端代码,在代码变更时编译出新的补丁文件,发送到网页执行

当模块变更后,更新事件会向上传递,直到某层接受了当前变化的模块,就会调用 callback 去执行自定义逻辑。当上抛到最外层没有被接受,就会刷新整个网页

js
if (module.hot) {
+  module.hot.accept(['./App'], () => {
+    render(<App />, window.document.getElementById('app'));
+  });
+}

Scope Hoisting(作用域提升)

合并 ES6 模块导入,且只被引用一次

好处:代码体积更小;内存开销减少,通过减少作用域创建函数

Compiler 和 Compilation

compiler 代表了整个 Webpack 从启动到关闭的生命周期,而 compilation 只是代表了一次新的编译,由 compiler 每次构建创建

compilation 包含了当前的模块资源、编译生成资源、变化的文件等

loader 用法

js
{
+  // 用正则去匹配要用该 loader 转换的 CSS 文件
+  test: /\.css$/,
+  use: ['style-loader', 'css-loader?minimize']
+}
  • use 属性由 loader 名称组成的数组,loader 从后往前执行
  • 每个 loader 可以通过 URL querystring 方式传入参数,也可以通过对象形式传入 { loader: 'css-loader', options: { minimize: true } }
  • 内联方式使用 loader,import '!style-loader!css-loader?minimize!./styles.css'

loader 执行循序

+ \ No newline at end of file diff --git "a/zjw/\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.html" "b/zjw/\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.html" index ae9d24a..ca3fbf3 100644 --- "a/zjw/\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.html" +++ "b/zjw/\345\211\215\347\253\257\345\270\270\350\247\201\346\211\213\345\206\231\344\273\243\347\240\201.html" @@ -5,310 +5,312 @@ 前端常见手写代码 | daydayup - - - - - - - - + + + + + + + + + + + -
Skip to content
大纲

前端常见手写代码

防抖

用于用户频繁触发某个事件(如输入搜索),避免函数被频繁执行,最近一次触发需要等待一定的时间间隔才会被执行,如果期间再次触发执行,则重置定时器,直到停止触发等待足够时间

js
function debounce(fn, delay) {
-  var timer;
+    
Skip to content

前端常见手写代码

防抖

用于用户频繁触发某个事件(如输入搜索),避免函数被频繁执行,最近一次触发需要等待一定的时间间隔才会被执行,如果期间再次触发执行,则重置定时器,直到停止触发等待足够时间

js
function debounce(fn, delay) {
+  var timer;
 
-  return function () {
-    clearTimeout(timer);
-    timer = setTimeout(fn.bind(this, ...arguments), delay);
-  };
-}
+  return function () {
+    clearTimeout(timer);
+    timer = setTimeout(fn.bind(this, ...arguments), delay);
+  };
+}
 
-// 测试
-function task() {
-  console.log('run task', arguments);
-}
-const debounceTask = debounce(task, 1000);
-window.addEventListener('scroll', debounceTask);

首次立即执行

js
function debounce(fn, delay) {
-  var timer = null;
+// 测试
+function task() {
+  console.log('run task', arguments);
+}
+const debounceTask = debounce(task, 1000);
+window.addEventListener('scroll', debounceTask);

首次立即执行

js
function debounce(fn, delay) {
+  var timer = null;
 
-  return function () {
-    clearTimeout(timer);
+  return function () {
+    clearTimeout(timer);
 
-    const f = fn.bind(this, ...arguments);
-    const callNow = !timer;
+    const f = fn.bind(this, ...arguments);
+    const callNow = !timer;
 
-    if (callNow) {
-      f();
-    }
-    timer = setTimeout(() => {
-      timer = null;
-      // 非首次调用
-      if (!callNow) {
-        f();
-      }
-    }, delay);
-  };
-}

节流

用于限制函数执行频率

javascript
function throttle(fn, delay) {
-  var last = 0;
-  var timer;
+    if (callNow) {
+      f();
+    }
+    timer = setTimeout(() => {
+      timer = null;
+      // 非首次调用
+      if (!callNow) {
+        f();
+      }
+    }, delay);
+  };
+}

节流

用于限制函数执行频率

javascript
function throttle(fn, delay) {
+  var last = 0;
+  var timer;
 
-  return function () {
-    const now = Date.now();
+  return function () {
+    const now = Date.now();
 
-    clearTimeout(timer);
-    if (now - last >= delay) {
-      last = now;
-      fn.apply(this, arguments);
-    } else {
-      timer = setTimeout(() => {
-        fn.apply(this, arguments);
-        last = Date.now();
-      }, delay - (now - last));
-    }
-  };
-}

深拷贝

JSON 方法

javascript
// 不支持值为 undefined、函数和循环引用的情况
-const cloneObj = JSON.parse(JSON.stringify(obj));

递归拷贝

js
function deepClone(obj) {
-  if (obj === null || typeof obj !== 'object') {
-    return obj;
-  }
+    clearTimeout(timer);
+    if (now - last >= delay) {
+      last = now;
+      fn.apply(this, arguments);
+    } else {
+      timer = setTimeout(() => {
+        fn.apply(this, arguments);
+        last = Date.now();
+      }, delay - (now - last));
+    }
+  };
+}

深拷贝

JSON 方法

javascript
// 不支持值为 undefined、函数和循环引用的情况
+const cloneObj = JSON.parse(JSON.stringify(obj));

递归拷贝

js
function deepClone(obj) {
+  if (obj === null || typeof obj !== 'object') {
+    return obj;
+  }
 
-  const copy = Array.isArray(obj) ? [] : {};
+  const copy = Array.isArray(obj) ? [] : {};
 
-  for (let key in obj) {
-    if (obj.hasOwnProperty(key)) {
-      copy[key] = deepClone(obj[key]);
-    }
-  }
+  for (let key in obj) {
+    if (obj.hasOwnProperty(key)) {
+      copy[key] = deepClone(obj[key]);
+    }
+  }
 
-  return copy;
-}

stringify 方法实现

js
function stringify(obj) {
-  if (obj === null || typeof obj !== 'object') {
-    // 数组 undefined 会被转换成 null
-    return obj === undefined || obj === null ? 'null' : obj;
-  }
-  if (Array.isArray(obj)) {
-    return '[' + json.map((m) => stringify(m)).join(',') + ']';
-  }
+  return copy;
+}

stringify 方法实现

js
function stringify(obj) {
+  if (obj === null || typeof obj !== 'object') {
+    // 数组 undefined 会被转换成 null
+    return obj === undefined || obj === null ? 'null' : obj;
+  }
+  if (Array.isArray(obj)) {
+    return '[' + json.map((m) => stringify(m)).join(',') + ']';
+  }
 
-  return (
-    '{' +
-    Object.keys(obj)
-      // 过滤值为 undefined 的 key
-      .filter((key) => obj[key] !== undefined)
-      .map((key) => `"${key}":${stringify(obj[key])}`)
-      .join(',') +
-    '}'
-  );
-}

继承

ES5 继承

组合继承

javascript
function Parent(value) {
-  this.val = value;
-}
-Parent.prototype.getValue = function () {
-  console.log(this.val);
-};
-function Child(value) {
-  Parent.call(this, value);
-}
-Child.prototype = new Parent();
  • 缺点:原型上创建了父类属性(调用父类构造函数导致)

寄生组合继承

javascript
function Parent(value) {
-  this.val = value;
-}
-Parent.prototype.getValue = function () {
-  console.log(this.val);
-};
+  return (
+    '{' +
+    Object.keys(obj)
+      // 过滤值为 undefined 的 key
+      .filter((key) => obj[key] !== undefined)
+      .map((key) => `"${key}":${stringify(obj[key])}`)
+      .join(',') +
+    '}'
+  );
+}

继承

ES5 继承

组合继承

javascript
function Parent(value) {
+  this.val = value;
+}
+Parent.prototype.getValue = function () {
+  console.log(this.val);
+};
+function Child(value) {
+  Parent.call(this, value);
+}
+Child.prototype = new Parent();
  • 缺点:原型上创建了父类属性(调用父类构造函数导致)

寄生组合继承

javascript
function Parent(value) {
+  this.val = value;
+}
+Parent.prototype.getValue = function () {
+  console.log(this.val);
+};
 
-function Child(value) {
-  Parent.call(this, value);
-}
-Child.prototype = Object.create(Parent.prototype, {
-  // 原型构造函数指向Child
-  constructor: {
-    value: Child,
-    enumerable: false,
-    writable: true,
-    configurable: true,
-  },
-});

ES6 继承

javascript
class Parent {
-  constructor(value) {
-    this.val = value;
-  }
-  getValue() {
-    console.log(this.val);
-  }
-}
-class Child extends Parent {
-  constructor(value) {
-    super(value);
-  }
-}

数组去重

Set

javascript
[...new Set([1, 3, 4, 5, 3, 1])];

Map

javascript
function uniq(arr) {
-  var visited = {};
-  var res = [];
+function Child(value) {
+  Parent.call(this, value);
+}
+Child.prototype = Object.create(Parent.prototype, {
+  // 原型构造函数指向Child
+  constructor: {
+    value: Child,
+    enumerable: false,
+    writable: true,
+    configurable: true,
+  },
+});

ES6 继承

javascript
class Parent {
+  constructor(value) {
+    this.val = value;
+  }
+  getValue() {
+    console.log(this.val);
+  }
+}
+class Child extends Parent {
+  constructor(value) {
+    super(value);
+  }
+}

数组去重

Set

javascript
[...new Set([1, 3, 4, 5, 3, 1])];

Map

javascript
function uniq(arr) {
+  var visited = {};
+  var res = [];
 
-  for (e of arr) {
-    if (visited[e]) continue;
-    res.push(e);
-    visited[e] = true;
-  }
-  return res;
-}

虚拟滚动

tsx
import React, { useState, useCallback, useRef, useEffect } from 'react';
+  for (e of arr) {
+    if (visited[e]) continue;
+    res.push(e);
+    visited[e] = true;
+  }
+  return res;
+}

虚拟滚动

tsx
import React, { useState, useCallback, useRef, useEffect } from 'react';
 
-export interface VirtualScrollProps {
-  items: string[];
-  height: number;
-  rowHeight: number;
-}
+export interface VirtualScrollProps {
+  items: string[];
+  height: number;
+  rowHeight: number;
+}
 
-export default function VirtualScroll({ items, height, rowHeight }: VirtualScrollProps) {
-  // 保存滚动条位置的状态
-  const [scrollTop, setScrollTop] = useState(0);
-  // 获取列表容器元素的引用
-  const containerRef = useRef<HTMLDivElement>(null);
-  // 计算可见区域的行数
-  const visibleRowCount = Math.ceil(height / rowHeight);
+export default function VirtualScroll({ items, height, rowHeight }: VirtualScrollProps) {
+  // 保存滚动条位置的状态
+  const [scrollTop, setScrollTop] = useState(0);
+  // 获取列表容器元素的引用
+  const containerRef = useRef<HTMLDivElement>(null);
+  // 计算可见区域的行数
+  const visibleRowCount = Math.ceil(height / rowHeight);
 
-  // 监听滚动条的滚动事件,更新滚动条位置的状态
-  const handleScroll = useCallback(() => {
-    const scrollTop = containerRef.current!.scrollTop;
-    setScrollTop(scrollTop);
-  }, []);
+  // 监听滚动条的滚动事件,更新滚动条位置的状态
+  const handleScroll = useCallback(() => {
+    const scrollTop = containerRef.current!.scrollTop;
+    setScrollTop(scrollTop);
+  }, []);
 
-  // 使用 useEffect 添加滚动条滚动事件的监听器,并在组件卸载时移除监听器
-  useEffect(() => {
-    const container = containerRef.current;
-    container!.addEventListener('scroll', handleScroll);
-    return () => {
-      container!.removeEventListener('scroll', handleScroll);
-    };
-  }, [handleScroll]);
+  // 使用 useEffect 添加滚动条滚动事件的监听器,并在组件卸载时移除监听器
+  useEffect(() => {
+    const container = containerRef.current;
+    container!.addEventListener('scroll', handleScroll);
+    return () => {
+      container!.removeEventListener('scroll', handleScroll);
+    };
+  }, [handleScroll]);
 
-  // 计算可见区域的起始行和结束行
-  const start = Math.floor(scrollTop / rowHeight);
-  const end = Math.min(start + visibleRowCount + 1, items.length);
+  // 计算可见区域的起始行和结束行
+  const start = Math.floor(scrollTop / rowHeight);
+  const end = Math.min(start + visibleRowCount + 1, items.length);
 
-  // 渲染可见区域内的元素
-  const visibleItems = items.slice(start, end).map((item, index) => (
-    <div key={start + index} style={{ height: rowHeight }}>
-      {item}
-    </div>
-  ));
+  // 渲染可见区域内的元素
+  const visibleItems = items.slice(start, end).map((item, index) => (
+    <div key={start + index} style={{ height: rowHeight }}>
+      {item}
+    </div>
+  ));
 
-  // 计算列表容器的 paddingTop 和 paddingBottom,确保可见区域内的元素能够正确地垂直对齐
-  const paddingTop = start * rowHeight;
-  const paddingBottom = (items.length - end) * rowHeight;
+  // 计算列表容器的 paddingTop 和 paddingBottom,确保可见区域内的元素能够正确地垂直对齐
+  const paddingTop = start * rowHeight;
+  const paddingBottom = (items.length - end) * rowHeight;
 
-  return (
-    <div ref={containerRef} style={{ height, overflowY: 'scroll' }}>
-      {/* 使用 paddingTop 和 paddingBottom 让可见区域内的元素能够正确地垂直对齐 */}
-      <div style={{ paddingTop, paddingBottom }}>{visibleItems}</div>
-    </div>
-  );
-}

限制最大并发数

js
function limit(maxCount) {
-  return {
-    count: 0,
-    queue: [],
-    pauseState: false,
-    push(task) {
-      this.queue.push(task);
-      this.next();
-    },
-    next() {
-      if (this.queue.length && this.count < maxCount) {
-        this.count++;
-        this.queue
-          .shift()()
-          .finally(() => {
-            this.count--;
-            if (!this.pauseState) {
-              this.next();
-            }
-          });
-      }
-    },
-    pause() {
-      this.pauseState = true;
-    },
-    start() {
-      this.pauseState = false;
-      let max = Math.min(this.queue.length, maxCount - this.count);
+  return (
+    <div ref={containerRef} style={{ height, overflowY: 'scroll' }}>
+      {/* 使用 paddingTop 和 paddingBottom 让可见区域内的元素能够正确地垂直对齐 */}
+      <div style={{ paddingTop, paddingBottom }}>{visibleItems}</div>
+    </div>
+  );
+}

限制最大并发数

js
function limit(maxCount) {
+  return {
+    count: 0,
+    queue: [],
+    pauseState: false,
+    push(task) {
+      this.queue.push(task);
+      this.next();
+    },
+    next() {
+      if (this.queue.length && this.count < maxCount) {
+        this.count++;
+        this.queue
+          .shift()()
+          .finally(() => {
+            this.count--;
+            if (!this.pauseState) {
+              this.next();
+            }
+          });
+      }
+    },
+    pause() {
+      this.pauseState = true;
+    },
+    start() {
+      this.pauseState = false;
+      let max = Math.min(this.queue.length, maxCount - this.count);
 
-      for (let i = 0; i < max; i++) {
-        this.next();
-      }
-    },
-  };
-}
+      for (let i = 0; i < max; i++) {
+        this.next();
+      }
+    },
+  };
+}
 
-// 测试代码
-const scheduler = limit(2);
+// 测试代码
+const scheduler = limit(2);
 
-function addTask(time, order) {
-  scheduler.push(() =>
-    new Promise((resolve) => setTimeout(resolve, time)).then(() => console.log(order)),
-  );
-}
+function addTask(time, order) {
+  scheduler.push(() =>
+    new Promise((resolve) => setTimeout(resolve, time)).then(() => console.log(order)),
+  );
+}
 
-addTask(1000, 1);
-addTask(500, 2);
-addTask(300, 3);
-addTask(400, 4);
-// 2 3 1 4 耗时 1200ms

延迟调用

js
function lazyMan(name) {
-  let runing = false;
-  const sleep = (time) => () =>
-    new Promise((resolve) => {
-      console.log(`Wake up after ${time}`);
-      setTimeout(resolve, time * 1000);
-    });
-  const obj = {
-    tasks: [],
-    async next() {
-      const task = this.tasks.shift();
+addTask(1000, 1);
+addTask(500, 2);
+addTask(300, 3);
+addTask(400, 4);
+// 2 3 1 4 耗时 1200ms

延迟调用

js
function lazyMan(name) {
+  let runing = false;
+  const sleep = (time) => () =>
+    new Promise((resolve) => {
+      console.log(`Wake up after ${time}`);
+      setTimeout(resolve, time * 1000);
+    });
+  const obj = {
+    tasks: [],
+    async next() {
+      const task = this.tasks.shift();
 
-      if (task) {
-        await task();
-        this.next();
-      }
-    },
-    run() {
-      Promise.resolve().then(() => {
-        if (runing) {
-          return;
-        }
-        runing = true;
-        this.next();
-      });
-    },
-    eat(food) {
-      this.tasks.push(() => console.log(`Eat ${food}`));
-      this.run();
-      return this;
-    },
-    sleep(time) {
-      this.tasks.push(sleep(time));
-      this.run();
-      return this;
-    },
-    sleepFirst(time) {
-      this.tasks.unshift(sleep(time));
-      this.run();
-      return this;
-    },
-  };
+      if (task) {
+        await task();
+        this.next();
+      }
+    },
+    run() {
+      Promise.resolve().then(() => {
+        if (runing) {
+          return;
+        }
+        runing = true;
+        this.next();
+      });
+    },
+    eat(food) {
+      this.tasks.push(() => console.log(`Eat ${food}`));
+      this.run();
+      return this;
+    },
+    sleep(time) {
+      this.tasks.push(sleep(time));
+      this.run();
+      return this;
+    },
+    sleepFirst(time) {
+      this.tasks.unshift(sleep(time));
+      this.run();
+      return this;
+    },
+  };
 
-  obj.tasks.push(() => console.log(`Hi! This is ${name}!`));
-  obj.run();
+  obj.tasks.push(() => console.log(`Hi! This is ${name}!`));
+  obj.run();
 
-  return obj;
-}
+  return obj;
+}
 
-lazyMan('Hank').sleep(10).eat('dinner');
-// Hi! This is Hank!
-// Wake up after 10
-// Eat dinner
-lazyMan('Hank').eat('dinner').sleepFirst(10);
-// Wake up after 10
-// Hi! This is Hank!
-// Eat dinner
- +lazyMan('Hank').sleep(10).eat('dinner'); +// Hi! This is Hank! +// Wake up after 10 +// Eat dinner +lazyMan('Hank').eat('dinner').sleepFirst(10); +// Wake up after 10 +// Hi! This is Hank! +// Eat dinner
+ \ No newline at end of file