diff --git a/404.html b/404.html index cb206f43..74e61c20 100644 --- a/404.html +++ b/404.html @@ -6,7 +6,7 @@ 404 | Shmily - + @@ -17,7 +17,7 @@
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.

GPLv3 License.

- + \ No newline at end of file diff --git a/assets/guide_concept.md.IHQfas8f.js b/assets/guide_concept.md.ULxRsOWz.js similarity index 99% rename from assets/guide_concept.md.IHQfas8f.js rename to assets/guide_concept.md.ULxRsOWz.js index 4be15652..a43afc7c 100644 --- a/assets/guide_concept.md.IHQfas8f.js +++ b/assets/guide_concept.md.ULxRsOWz.js @@ -1,4 +1,4 @@ -import{_ as a,c as e,o as l,R as s}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1700914484000}'),i={name:"guide/concept.md"},t=s(`

理念

why

现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例


+import{_ as a,c as e,o as l,R as s}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1700921956000}'),i={name:"guide/concept.md"},t=s(`

理念

why

现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例


 导出数据库 --> 解密数据库 --> 解密资源(图片等) --> 生成 HTML (多为模板直出)

在此流程中有很多弊端

  • 使用上
    • 大都为 HTML 模板直出,无分页,几百兆的 HTML 不可用
    • 导出的归档数据无法查询, 筛选、评论等. 失去了归档数据的意义
    • 没有图表统计,数据未体现额外价值
    • 显示数据单一, 无法多项目如 QQ Wechat 按时间线合并查看
    • 多次导出的数据 (如 2020 年导出的数据和 2021 年导出的数据) 不能累计查看并分析
  • 程序上
    • 获取数据不完整,只能拿到当前 HTML 所需导出的数据, 无法拿到数据库中完整的额外字段
    • 全流程耦合,如果对产物不满意, 只能从头开始造轮子, 难以从中间(如解密后的数据库)开始
  基于以上问题,Shimly 的亮点在于
  • 使用上

    • Show 基于 Vue 组件化开发,纯前端实现,240M 数据文件浏览搜索无压力
    • 支持筛选、搜索(支持正则)、评论(支持双向引用链接且显示)
    • 支持我能想到所有维度的数据图表统计
    • 支持多种类、多批次数据合并显示与统计
  • 程序上

    • 完整的数据导出、不管是否 Show 有使用,能导尽导,万一别人需要呢
    • 架构 (见下)

架构

基于以上问题, 我提出以下架构进行 "前后端" "功能化" 拆分, 减少后人的 轮子

|---------|----------------------- Get -----------------------|------------------------ Show -------------------------|
 |---------|------- ExportDB ------|----------- ToMsg ---------|------- ModifyServer ------|---------- Web ------------|
 
diff --git a/assets/guide_concept.md.IHQfas8f.lean.js b/assets/guide_concept.md.ULxRsOWz.lean.js
similarity index 84%
rename from assets/guide_concept.md.IHQfas8f.lean.js
rename to assets/guide_concept.md.ULxRsOWz.lean.js
index f1c0dcf1..8a5cfc46 100644
--- a/assets/guide_concept.md.IHQfas8f.lean.js
+++ b/assets/guide_concept.md.ULxRsOWz.lean.js
@@ -1 +1 @@
-import{_ as a,c as e,o as l,R as s}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1700914484000}'),i={name:"guide/concept.md"},t=s("",21),n=[t];function o(p,h,r,c,d,u){return l(),e("div",null,n)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
+import{_ as a,c as e,o as l,R as s}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1700921956000}'),i={name:"guide/concept.md"},t=s("",21),n=[t];function o(p,h,r,c,d,u){return l(),e("div",null,n)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
diff --git a/assets/guide_other_donation.md.I4vLgMSz.js b/assets/guide_other_donation.md.04WM6cQL.js
similarity index 98%
rename from assets/guide_other_donation.md.I4vLgMSz.js
rename to assets/guide_other_donation.md.04WM6cQL.js
index ffe0c0b8..c71d9ebd 100644
--- a/assets/guide_other_donation.md.I4vLgMSz.js
+++ b/assets/guide_other_donation.md.04WM6cQL.js
@@ -1 +1 @@
-import{_ as s,c as a,k as e,a as t,R as o,o as i}from"./chunks/framework.6Zk1sI6T.js";const r="/Shmily/assets/Ailurus.SiFWyxGE.mp4",n="/Shmily/assets/pay_al.vEIg12O3.png",l="/Shmily/assets/pay_wx.z7n4utdb.png",d="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",c="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1700914484000}'),_={name:"guide/other/donation.md"},p=e("h1",{id:"捐赠",tabindex:"-1"},[t("捐赠 "),e("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1),h={align:"center"},m=e("p",null,[t("!!! "),e("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[e("em",null,"小熊猫")]),t(" 是世界上最可爱的动物 !!! XD")],-1),g={key:0},v=e("video",{src:r,controls:""},null,-1),b=[v],w=o('

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

',10);function f(x,u,y,S,k,E){return i(),a("div",null,[p,e("div",h,[m,(i(),a("div",g,b)),w])])}const C=s(_,[["render",f]]);export{A as __pageData,C as default}; +import{_ as s,c as a,k as e,a as t,R as o,o as i}from"./chunks/framework.6Zk1sI6T.js";const r="/Shmily/assets/Ailurus.SiFWyxGE.mp4",n="/Shmily/assets/pay_al.vEIg12O3.png",l="/Shmily/assets/pay_wx.z7n4utdb.png",d="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",c="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1700921956000}'),_={name:"guide/other/donation.md"},p=e("h1",{id:"捐赠",tabindex:"-1"},[t("捐赠 "),e("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1),h={align:"center"},m=e("p",null,[t("!!! "),e("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[e("em",null,"小熊猫")]),t(" 是世界上最可爱的动物 !!! XD")],-1),g={key:0},v=e("video",{src:r,controls:""},null,-1),b=[v],w=o('

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

',10);function f(x,u,y,S,k,E){return i(),a("div",null,[p,e("div",h,[m,(i(),a("div",g,b)),w])])}const C=s(_,[["render",f]]);export{A as __pageData,C as default}; diff --git a/assets/guide_other_donation.md.I4vLgMSz.lean.js b/assets/guide_other_donation.md.04WM6cQL.lean.js similarity index 97% rename from assets/guide_other_donation.md.I4vLgMSz.lean.js rename to assets/guide_other_donation.md.04WM6cQL.lean.js index e08ee178..6ef33361 100644 --- a/assets/guide_other_donation.md.I4vLgMSz.lean.js +++ b/assets/guide_other_donation.md.04WM6cQL.lean.js @@ -1 +1 @@ -import{_ as s,c as a,k as e,a as t,R as o,o as i}from"./chunks/framework.6Zk1sI6T.js";const r="/Shmily/assets/Ailurus.SiFWyxGE.mp4",n="/Shmily/assets/pay_al.vEIg12O3.png",l="/Shmily/assets/pay_wx.z7n4utdb.png",d="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",c="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1700914484000}'),_={name:"guide/other/donation.md"},p=e("h1",{id:"捐赠",tabindex:"-1"},[t("捐赠 "),e("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1),h={align:"center"},m=e("p",null,[t("!!! "),e("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[e("em",null,"小熊猫")]),t(" 是世界上最可爱的动物 !!! XD")],-1),g={key:0},v=e("video",{src:r,controls:""},null,-1),b=[v],w=o("",10);function f(x,u,y,S,k,E){return i(),a("div",null,[p,e("div",h,[m,(i(),a("div",g,b)),w])])}const C=s(_,[["render",f]]);export{A as __pageData,C as default}; +import{_ as s,c as a,k as e,a as t,R as o,o as i}from"./chunks/framework.6Zk1sI6T.js";const r="/Shmily/assets/Ailurus.SiFWyxGE.mp4",n="/Shmily/assets/pay_al.vEIg12O3.png",l="/Shmily/assets/pay_wx.z7n4utdb.png",d="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",c="/Shmily/assets/red-panda.-_1nL8ud.jpg",A=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1700921956000}'),_={name:"guide/other/donation.md"},p=e("h1",{id:"捐赠",tabindex:"-1"},[t("捐赠 "),e("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1),h={align:"center"},m=e("p",null,[t("!!! "),e("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[e("em",null,"小熊猫")]),t(" 是世界上最可爱的动物 !!! XD")],-1),g={key:0},v=e("video",{src:r,controls:""},null,-1),b=[v],w=o("",10);function f(x,u,y,S,k,E){return i(),a("div",null,[p,e("div",h,[m,(i(),a("div",g,b)),w])])}const C=s(_,[["render",f]]);export{A as __pageData,C as default}; diff --git a/assets/guide_other_donation_list.md.OZovLmHg.js b/assets/guide_other_donation_list.md.Ka0DKJpc.js similarity index 97% rename from assets/guide_other_donation_list.md.OZovLmHg.js rename to assets/guide_other_donation_list.md.Ka0DKJpc.js index 082678c5..3227d68f 100644 --- a/assets/guide_other_donation_list.md.OZovLmHg.js +++ b/assets/guide_other_donation_list.md.Ka0DKJpc.js @@ -1 +1 @@ -import{_ as t,c as e,o as l,R as n}from"./chunks/framework.6Zk1sI6T.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1700914484000}'),a={name:"guide/other/donation_list.md"},d=n('
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏,请发送截图至 i@lqzh.me


时间姓名金额来源
2023/09/03 17:12:36*门10Wechat
2023/11/02 14:56:02**勇15Alipay
2023/11/18 14:51:42*翔10Alipay
2023/11/18 17:08:15*畅11.11Alipay
2023/11/19 01:39:48A*s5Wechat
2023/11/22 10:17:50*羊5.61Wechat
2023/11/24 19:18:28*生20Wechat
',4),r=[d];function i(s,c,o,y,g,x){return l(),e("div",null,r)}const p=t(a,[["render",i]]);export{_ as __pageData,p as default}; +import{_ as t,c as e,o as l,R as n}from"./chunks/framework.6Zk1sI6T.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1700921956000}'),a={name:"guide/other/donation_list.md"},d=n('
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏,请发送截图至 i@lqzh.me


时间姓名金额来源
2023/09/03 17:12:36*门10Wechat
2023/11/02 14:56:02**勇15Alipay
2023/11/18 14:51:42*翔10Alipay
2023/11/18 17:08:15*畅11.11Alipay
2023/11/19 01:39:48A*s5Wechat
2023/11/22 10:17:50*羊5.61Wechat
2023/11/24 19:18:28*生20Wechat
',4),r=[d];function i(s,c,o,y,g,x){return l(),e("div",null,r)}const p=t(a,[["render",i]]);export{_ as __pageData,p as default}; diff --git a/assets/guide_other_donation_list.md.OZovLmHg.lean.js b/assets/guide_other_donation_list.md.Ka0DKJpc.lean.js similarity index 85% rename from assets/guide_other_donation_list.md.OZovLmHg.lean.js rename to assets/guide_other_donation_list.md.Ka0DKJpc.lean.js index 182c0049..ffe97b2c 100644 --- a/assets/guide_other_donation_list.md.OZovLmHg.lean.js +++ b/assets/guide_other_donation_list.md.Ka0DKJpc.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as l,R as n}from"./chunks/framework.6Zk1sI6T.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1700914484000}'),a={name:"guide/other/donation_list.md"},d=n("",4),r=[d];function i(s,c,o,y,g,x){return l(),e("div",null,r)}const p=t(a,[["render",i]]);export{_ as __pageData,p as default}; +import{_ as t,c as e,o as l,R as n}from"./chunks/framework.6Zk1sI6T.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1700921956000}'),a={name:"guide/other/donation_list.md"},d=n("",4),r=[d];function i(s,c,o,y,g,x){return l(),e("div",null,r)}const p=t(a,[["render",i]]);export{_ as __pageData,p as default}; diff --git a/assets/guide_other_thanks.md.dnoZ8w4M.js b/assets/guide_other_thanks.md.WJWpw_6S.js similarity index 97% rename from assets/guide_other_thanks.md.dnoZ8w4M.js rename to assets/guide_other_thanks.md.WJWpw_6S.js index 056887e8..648ab49e 100644 --- a/assets/guide_other_thanks.md.dnoZ8w4M.js +++ b/assets/guide_other_thanks.md.WJWpw_6S.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,R as a}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1700914484000}'),o={name:"guide/other/thanks.md"},h=a('

感谢

这 3 年的开发中受到了各种开源库的启发与帮助, 在此感谢

Adun toridas

神圣的 Ctrl_C 连接着我们每个人的思想!让我们在绝望之中团结一致。

恩人

开发周期有点长, 名单不完整, 会逐步补充

',6),i=[h];function l(s,c,n,p,u,g){return r(),t("div",null,i)}const d=e(o,[["render",l]]);export{m as __pageData,d as default}; +import{_ as e,c as t,o as r,R as a}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1700921956000}'),o={name:"guide/other/thanks.md"},h=a('

感谢

这 3 年的开发中受到了各种开源库的启发与帮助, 在此感谢

Adun toridas

神圣的 Ctrl_C 连接着我们每个人的思想!让我们在绝望之中团结一致。

恩人

开发周期有点长, 名单不完整, 会逐步补充

',6),i=[h];function l(s,c,n,p,u,g){return r(),t("div",null,i)}const d=e(o,[["render",l]]);export{m as __pageData,d as default}; diff --git a/assets/guide_other_thanks.md.dnoZ8w4M.lean.js b/assets/guide_other_thanks.md.WJWpw_6S.lean.js similarity index 85% rename from assets/guide_other_thanks.md.dnoZ8w4M.lean.js rename to assets/guide_other_thanks.md.WJWpw_6S.lean.js index 55091eb1..a6b2d443 100644 --- a/assets/guide_other_thanks.md.dnoZ8w4M.lean.js +++ b/assets/guide_other_thanks.md.WJWpw_6S.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,R as a}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1700914484000}'),o={name:"guide/other/thanks.md"},h=a("",6),i=[h];function l(s,c,n,p,u,g){return r(),t("div",null,i)}const d=e(o,[["render",l]]);export{m as __pageData,d as default}; +import{_ as e,c as t,o as r,R as a}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1700921956000}'),o={name:"guide/other/thanks.md"},h=a("",6),i=[h];function l(s,c,n,p,u,g){return r(),t("div",null,i)}const d=e(o,[["render",l]]);export{m as __pageData,d as default}; diff --git a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.g0PfTavC.js b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md._Aiomy9D.js similarity index 98% rename from assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.g0PfTavC.js rename to assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md._Aiomy9D.js index b7b1c795..e50a44ec 100644 --- a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.g0PfTavC.js +++ b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md._Aiomy9D.js @@ -1,4 +1,4 @@ -import{_ as n,c as s,o as a,R as e}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1700914484000}'),l={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"},d=e(`

DANGER

Cannot find module ‘xxxxxx’

报错详情
Error: Cannot find module 'fs-extra'
+import{_ as n,c as s,o as a,R as e}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1700921956000}'),l={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"},d=e(`

DANGER

Cannot find module ‘xxxxxx’

报错详情
Error: Cannot find module 'fs-extra'
 Require stack:
 - D:\\transfer_redmi\\AndroidQQ_MIUI\\Shmily-Get-MobileQQ-Andriod\\decode\\utils\\db.js
 - D:\\transfer_redmi\\AndroidQQ_MIUI\\Shmily-Get-MobileQQ-Andriod\\tools\\exportTable.js
diff --git a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.g0PfTavC.lean.js b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md._Aiomy9D.lean.js
similarity index 89%
rename from assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.g0PfTavC.lean.js
rename to assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md._Aiomy9D.lean.js
index 64d966cd..0e5f3cbb 100644
--- a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.g0PfTavC.lean.js
+++ b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md._Aiomy9D.lean.js
@@ -1 +1 @@
-import{_ as n,c as s,o as a,R as e}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1700914484000}'),l={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"},d=e("",4),o=[d];function p(t,i,r,c,u,m){return a(),s("div",null,o)}const x=n(l,[["render",p]]);export{h as __pageData,x as default};
+import{_ as n,c as s,o as a,R as e}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1700921956000}'),l={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"},d=e("",4),o=[d];function p(t,i,r,c,u,m){return a(),s("div",null,o)}const x=n(l,[["render",p]]);export{h as __pageData,x as default};
diff --git a/assets/guide_setup-runtime_Q_A.md.BQLsdHyz.js b/assets/guide_setup-runtime_Q_A.md.uS1R8K3v.js
similarity index 98%
rename from assets/guide_setup-runtime_Q_A.md.BQLsdHyz.js
rename to assets/guide_setup-runtime_Q_A.md.uS1R8K3v.js
index 679a948e..24eed30c 100644
--- a/assets/guide_setup-runtime_Q_A.md.BQLsdHyz.js
+++ b/assets/guide_setup-runtime_Q_A.md.uS1R8K3v.js
@@ -1 +1 @@
-import{d as o,c as s,k as n,F as t,E as i,m as r,a as e,o as l,t as d}from"./chunks/framework.6Zk1sI6T.js";const p=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c=n("h1",{id:"q-a",tabindex:"-1"},[e("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1),u=n("blockquote",null,[n("p",null,[e("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[e("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1),m=n("h2",{id:"常见问题",tabindex:"-1"},[e("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1),_={class:"qa-list"},h={class:"title"},Q={class:"link",target:"_blank"},j={class:"author"},x=["innerHTML"],k=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1700914484000}'),M={name:"guide/setup-runtime/Q&A.md"},I=o({...M,setup(b){return(f,A)=>(l(),s("div",null,[c,u,m,n("div",null,[(l(!0),s(t,null,i(r(p),a=>(l(),s("details",_,[n("summary",h,[n("h4",Q,d(a.frontmatter.title),1),n("span",j,"by "+d(a.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:a.html},null,8,x)]))),256))])]))}});export{k as __pageData,I as default}; +import{d as o,c as s,k as n,F as t,E as i,m as r,a as e,o as l,t as d}from"./chunks/framework.6Zk1sI6T.js";const p=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c=n("h1",{id:"q-a",tabindex:"-1"},[e("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1),u=n("blockquote",null,[n("p",null,[e("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[e("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1),m=n("h2",{id:"常见问题",tabindex:"-1"},[e("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1),_={class:"qa-list"},h={class:"title"},Q={class:"link",target:"_blank"},j={class:"author"},x=["innerHTML"],k=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1700921956000}'),M={name:"guide/setup-runtime/Q&A.md"},I=o({...M,setup(b){return(f,A)=>(l(),s("div",null,[c,u,m,n("div",null,[(l(!0),s(t,null,i(r(p),a=>(l(),s("details",_,[n("summary",h,[n("h4",Q,d(a.frontmatter.title),1),n("span",j,"by "+d(a.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:a.html},null,8,x)]))),256))])]))}});export{k as __pageData,I as default}; diff --git a/assets/guide_setup-runtime_Q_A.md.BQLsdHyz.lean.js b/assets/guide_setup-runtime_Q_A.md.uS1R8K3v.lean.js similarity index 98% rename from assets/guide_setup-runtime_Q_A.md.BQLsdHyz.lean.js rename to assets/guide_setup-runtime_Q_A.md.uS1R8K3v.lean.js index 679a948e..24eed30c 100644 --- a/assets/guide_setup-runtime_Q_A.md.BQLsdHyz.lean.js +++ b/assets/guide_setup-runtime_Q_A.md.uS1R8K3v.lean.js @@ -1 +1 @@ -import{d as o,c as s,k as n,F as t,E as i,m as r,a as e,o as l,t as d}from"./chunks/framework.6Zk1sI6T.js";const p=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c=n("h1",{id:"q-a",tabindex:"-1"},[e("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1),u=n("blockquote",null,[n("p",null,[e("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[e("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1),m=n("h2",{id:"常见问题",tabindex:"-1"},[e("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1),_={class:"qa-list"},h={class:"title"},Q={class:"link",target:"_blank"},j={class:"author"},x=["innerHTML"],k=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1700914484000}'),M={name:"guide/setup-runtime/Q&A.md"},I=o({...M,setup(b){return(f,A)=>(l(),s("div",null,[c,u,m,n("div",null,[(l(!0),s(t,null,i(r(p),a=>(l(),s("details",_,[n("summary",h,[n("h4",Q,d(a.frontmatter.title),1),n("span",j,"by "+d(a.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:a.html},null,8,x)]))),256))])]))}});export{k as __pageData,I as default}; +import{d as o,c as s,k as n,F as t,E as i,m as r,a as e,o as l,t as d}from"./chunks/framework.6Zk1sI6T.js";const p=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c=n("h1",{id:"q-a",tabindex:"-1"},[e("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1),u=n("blockquote",null,[n("p",null,[e("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[e("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1),m=n("h2",{id:"常见问题",tabindex:"-1"},[e("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1),_={class:"qa-list"},h={class:"title"},Q={class:"link",target:"_blank"},j={class:"author"},x=["innerHTML"],k=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1700921956000}'),M={name:"guide/setup-runtime/Q&A.md"},I=o({...M,setup(b){return(f,A)=>(l(),s("div",null,[c,u,m,n("div",null,[(l(!0),s(t,null,i(r(p),a=>(l(),s("details",_,[n("summary",h,[n("h4",Q,d(a.frontmatter.title),1),n("span",j,"by "+d(a.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:a.html},null,8,x)]))),256))])]))}});export{k as __pageData,I as default}; diff --git a/assets/guide_setup-runtime_docker.md.TlM1aZdP.js b/assets/guide_setup-runtime_docker.md.uB7GSjfi.js similarity index 92% rename from assets/guide_setup-runtime_docker.md.TlM1aZdP.js rename to assets/guide_setup-runtime_docker.md.uB7GSjfi.js index b8278115..1ff144c5 100644 --- a/assets/guide_setup-runtime_docker.md.TlM1aZdP.js +++ b/assets/guide_setup-runtime_docker.md.uB7GSjfi.js @@ -1 +1 @@ -import{_ as r,c as o,o as a,k as e,a as t}from"./chunks/framework.6Zk1sI6T.js";const f=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1700914484000}'),d={name:"guide/setup-runtime/docker.md"},s=e("h1",{id:"开始-docker",tabindex:"-1"},[t("开始 docker "),e("a",{class:"header-anchor",href:"#开始-docker","aria-label":'Permalink to "开始 docker"'},"​")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"https://docs.docker.com/desktop/install/windows-install/",target:"_blank",rel:"noreferrer"},"官网"),t("下载 "),e("code",null,"docker desktop")]),e("li",null,"全默认下一步完成")],-1),n=[s,c];function l(i,u,k,p,_,m){return a(),o("div",null,n)}const g=r(d,[["render",l]]);export{f as __pageData,g as default}; +import{_ as r,c as o,o as a,k as e,a as t}from"./chunks/framework.6Zk1sI6T.js";const f=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1700921956000}'),d={name:"guide/setup-runtime/docker.md"},s=e("h1",{id:"开始-docker",tabindex:"-1"},[t("开始 docker "),e("a",{class:"header-anchor",href:"#开始-docker","aria-label":'Permalink to "开始 docker"'},"​")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"https://docs.docker.com/desktop/install/windows-install/",target:"_blank",rel:"noreferrer"},"官网"),t("下载 "),e("code",null,"docker desktop")]),e("li",null,"全默认下一步完成")],-1),n=[s,c];function l(i,u,k,p,_,m){return a(),o("div",null,n)}const g=r(d,[["render",l]]);export{f as __pageData,g as default}; diff --git a/assets/guide_setup-runtime_docker.md.TlM1aZdP.lean.js b/assets/guide_setup-runtime_docker.md.uB7GSjfi.lean.js similarity index 92% rename from assets/guide_setup-runtime_docker.md.TlM1aZdP.lean.js rename to assets/guide_setup-runtime_docker.md.uB7GSjfi.lean.js index b8278115..1ff144c5 100644 --- a/assets/guide_setup-runtime_docker.md.TlM1aZdP.lean.js +++ b/assets/guide_setup-runtime_docker.md.uB7GSjfi.lean.js @@ -1 +1 @@ -import{_ as r,c as o,o as a,k as e,a as t}from"./chunks/framework.6Zk1sI6T.js";const f=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1700914484000}'),d={name:"guide/setup-runtime/docker.md"},s=e("h1",{id:"开始-docker",tabindex:"-1"},[t("开始 docker "),e("a",{class:"header-anchor",href:"#开始-docker","aria-label":'Permalink to "开始 docker"'},"​")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"https://docs.docker.com/desktop/install/windows-install/",target:"_blank",rel:"noreferrer"},"官网"),t("下载 "),e("code",null,"docker desktop")]),e("li",null,"全默认下一步完成")],-1),n=[s,c];function l(i,u,k,p,_,m){return a(),o("div",null,n)}const g=r(d,[["render",l]]);export{f as __pageData,g as default}; +import{_ as r,c as o,o as a,k as e,a as t}from"./chunks/framework.6Zk1sI6T.js";const f=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1700921956000}'),d={name:"guide/setup-runtime/docker.md"},s=e("h1",{id:"开始-docker",tabindex:"-1"},[t("开始 docker "),e("a",{class:"header-anchor",href:"#开始-docker","aria-label":'Permalink to "开始 docker"'},"​")],-1),c=e("ul",null,[e("li",null,[e("a",{href:"https://docs.docker.com/desktop/install/windows-install/",target:"_blank",rel:"noreferrer"},"官网"),t("下载 "),e("code",null,"docker desktop")]),e("li",null,"全默认下一步完成")],-1),n=[s,c];function l(i,u,k,p,_,m){return a(),o("div",null,n)}const g=r(d,[["render",l]]);export{f as __pageData,g as default}; diff --git a/assets/guide_setup-runtime_explain.md.ujK0SBQl.js b/assets/guide_setup-runtime_explain.md.RoNHmt_e.js similarity index 92% rename from assets/guide_setup-runtime_explain.md.ujK0SBQl.js rename to assets/guide_setup-runtime_explain.md.RoNHmt_e.js index d1b8744d..9258e06c 100644 --- a/assets/guide_setup-runtime_explain.md.ujK0SBQl.js +++ b/assets/guide_setup-runtime_explain.md.RoNHmt_e.js @@ -1 +1 @@ -import{_ as t,c as a,o as s,k as e,a as n}from"./chunks/framework.6Zk1sI6T.js";const k=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1700914484000}'),o={name:"guide/setup-runtime/explain.md"},i=e("h1",{id:"说明",tabindex:"-1"},[n("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),r=e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),d=e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),c=e("p",null,"不是说这里的运行时你需要全部安装",-1),l=[i,r,d,c];function p(_,u,h,m,f,x){return s(),a("div",null,l)}const $=t(o,[["render",p]]);export{k as __pageData,$ as default}; +import{_ as t,c as a,o as s,k as e,a as n}from"./chunks/framework.6Zk1sI6T.js";const k=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1700921956000}'),o={name:"guide/setup-runtime/explain.md"},i=e("h1",{id:"说明",tabindex:"-1"},[n("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),r=e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),d=e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),c=e("p",null,"不是说这里的运行时你需要全部安装",-1),l=[i,r,d,c];function p(_,u,h,m,f,x){return s(),a("div",null,l)}const $=t(o,[["render",p]]);export{k as __pageData,$ as default}; diff --git a/assets/guide_setup-runtime_explain.md.ujK0SBQl.lean.js b/assets/guide_setup-runtime_explain.md.RoNHmt_e.lean.js similarity index 92% rename from assets/guide_setup-runtime_explain.md.ujK0SBQl.lean.js rename to assets/guide_setup-runtime_explain.md.RoNHmt_e.lean.js index d1b8744d..9258e06c 100644 --- a/assets/guide_setup-runtime_explain.md.ujK0SBQl.lean.js +++ b/assets/guide_setup-runtime_explain.md.RoNHmt_e.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o as s,k as e,a as n}from"./chunks/framework.6Zk1sI6T.js";const k=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1700914484000}'),o={name:"guide/setup-runtime/explain.md"},i=e("h1",{id:"说明",tabindex:"-1"},[n("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),r=e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),d=e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),c=e("p",null,"不是说这里的运行时你需要全部安装",-1),l=[i,r,d,c];function p(_,u,h,m,f,x){return s(),a("div",null,l)}const $=t(o,[["render",p]]);export{k as __pageData,$ as default}; +import{_ as t,c as a,o as s,k as e,a as n}from"./chunks/framework.6Zk1sI6T.js";const k=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1700921956000}'),o={name:"guide/setup-runtime/explain.md"},i=e("h1",{id:"说明",tabindex:"-1"},[n("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),r=e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),d=e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),c=e("p",null,"不是说这里的运行时你需要全部安装",-1),l=[i,r,d,c];function p(_,u,h,m,f,x){return s(),a("div",null,l)}const $=t(o,[["render",p]]);export{k as __pageData,$ as default}; diff --git a/assets/guide_setup-runtime_java.md.kZU9JTX9.js b/assets/guide_setup-runtime_java.md.vDak_eq0.js similarity index 94% rename from assets/guide_setup-runtime_java.md.kZU9JTX9.js rename to assets/guide_setup-runtime_java.md.vDak_eq0.js index d4c490e8..806b9bf0 100644 --- a/assets/guide_setup-runtime_java.md.kZU9JTX9.js +++ b/assets/guide_setup-runtime_java.md.vDak_eq0.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,R as o}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1700914484000}'),r={name:"guide/setup-runtime/java.md"},l=o('

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

',4),i=[l];function c(s,n,d,_,u,h){return t(),e("div",null,i)}const f=a(r,[["render",c]]);export{m as __pageData,f as default}; +import{_ as a,c as e,o as t,R as o}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1700921956000}'),r={name:"guide/setup-runtime/java.md"},l=o('

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

',4),i=[l];function c(s,n,d,_,u,h){return t(),e("div",null,i)}const f=a(r,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_java.md.kZU9JTX9.lean.js b/assets/guide_setup-runtime_java.md.vDak_eq0.lean.js similarity index 86% rename from assets/guide_setup-runtime_java.md.kZU9JTX9.lean.js rename to assets/guide_setup-runtime_java.md.vDak_eq0.lean.js index 49895af8..51105e36 100644 --- a/assets/guide_setup-runtime_java.md.kZU9JTX9.lean.js +++ b/assets/guide_setup-runtime_java.md.vDak_eq0.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as t,R as o}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1700914484000}'),r={name:"guide/setup-runtime/java.md"},l=o("",4),i=[l];function c(s,n,d,_,u,h){return t(),e("div",null,i)}const f=a(r,[["render",c]]);export{m as __pageData,f as default}; +import{_ as a,c as e,o as t,R as o}from"./chunks/framework.6Zk1sI6T.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1700921956000}'),r={name:"guide/setup-runtime/java.md"},l=o("",4),i=[l];function c(s,n,d,_,u,h){return t(),e("div",null,i)}const f=a(r,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_nodejs-dependencies.md.sCQ78Ugz.js b/assets/guide_setup-runtime_nodejs-dependencies.md.sCQ78Ugz.js new file mode 100644 index 00000000..daf996cf --- /dev/null +++ b/assets/guide_setup-runtime_nodejs-dependencies.md.sCQ78Ugz.js @@ -0,0 +1,9 @@ +import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as e,c as a,o as n,R as p}from"./chunks/framework.6Zk1sI6T.js";const i="/Shmily/assets/node-dependencies.Clor6cih.png",f=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1700921956000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"},d=p('

安装 nodejs 项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
+
+-\\
+  - node_modules
+    - .bin
+    - ...
+  - package.json
+  - README.md
+  - ...

从本地安装

  • 命令行打开项目目录

    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd
  • 执行命令安装依赖 shell npm i

    WARNING

    如果安装以来过程中大量报错,特别是有 node-gyp 字样的,建议使用 [从项目下载] 的方式解决

其他的参考报错提示处理 :::

',6),t=[d];function l(c,r,_,u,m,h){return n(),a("div",null,t)}const k=e(o,[["render",l]]);export{f as __pageData,k as default}; diff --git a/assets/guide_setup-runtime_nodejs-dependencies.md.sCQ78Ugz.lean.js b/assets/guide_setup-runtime_nodejs-dependencies.md.sCQ78Ugz.lean.js new file mode 100644 index 00000000..76b666ff --- /dev/null +++ b/assets/guide_setup-runtime_nodejs-dependencies.md.sCQ78Ugz.lean.js @@ -0,0 +1 @@ +import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as e,c as a,o as n,R as p}from"./chunks/framework.6Zk1sI6T.js";const i="/Shmily/assets/node-dependencies.Clor6cih.png",f=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1700921956000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"},d=p("",6),t=[d];function l(c,r,_,u,m,h){return n(),a("div",null,t)}const k=e(o,[["render",l]]);export{f as __pageData,k as default}; diff --git a/assets/guide_setup-runtime_nodejs-start.md.-8Pba3jg.js b/assets/guide_setup-runtime_nodejs-start.md.-8Pba3jg.js new file mode 100644 index 00000000..189b8775 --- /dev/null +++ b/assets/guide_setup-runtime_nodejs-start.md.-8Pba3jg.js @@ -0,0 +1,13 @@ +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const E=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1700921956000}'),t={name:"guide/setup-runtime/nodejs-start.md"},e=n(`

启动 nodejs 程序

WARNING

启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

优先级从高到低

  • 按照项目说明启动程序 (一般为 npm run xxx)

  • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

    json
    {
    +    ...
    +    "scripts": {
    +        "dev": "vitepress dev docs",
    +        "build": "vitepress build docs",
    +        "serve": "vitepress serve docs"
    +    },
    +    ...
    +}
    +
    +若 \`script\` 中有多个脚本名称(如上图), 一般来说,\`build\` 代表生产(正式),\`dev\` 代表测试
    +
    +执行 \`npm run build\` 即可
  • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件, 执行:

    shell
        node index.js
`,4),l=[e];function p(d,h,o,c,k,r){return a(),i("div",null,l)}const g=s(t,[["render",p]]);export{E as __pageData,g as default}; diff --git a/assets/guide_setup-runtime_nodejs-start.md.-8Pba3jg.lean.js b/assets/guide_setup-runtime_nodejs-start.md.-8Pba3jg.lean.js new file mode 100644 index 00000000..5ee9508b --- /dev/null +++ b/assets/guide_setup-runtime_nodejs-start.md.-8Pba3jg.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const E=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1700921956000}'),t={name:"guide/setup-runtime/nodejs-start.md"},e=n("",4),l=[e];function p(d,h,o,c,k,r){return a(),i("div",null,l)}const g=s(t,[["render",p]]);export{E as __pageData,g as default}; diff --git a/assets/guide_setup-runtime_nodejs.md.V8C2J_oB.js b/assets/guide_setup-runtime_nodejs.md.V8C2J_oB.js new file mode 100644 index 00000000..0b7fc49f --- /dev/null +++ b/assets/guide_setup-runtime_nodejs.md.V8C2J_oB.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as d,R as t}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1700921956000}'),n={name:"guide/setup-runtime/nodejs.md"},c=t('

安装 nodejs

  • 查看 package.jsonengines 字段获取项目所需 nodejs 版本

    • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
  • https://nodejs.org/dist/ 下载相应版本的 nodejs

    • Windows 平台
      • (推荐) node-v99.99.9-x64.msi 标准安装程序
      • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
      • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
  • 安装过程,选项全部默认

',2),s=[c];function i(a,l,r,_,p,u){return d(),o("div",null,s)}const j=e(n,[["render",i]]);export{h as __pageData,j as default}; diff --git a/assets/guide_setup-runtime_nodejs.md.V8C2J_oB.lean.js b/assets/guide_setup-runtime_nodejs.md.V8C2J_oB.lean.js new file mode 100644 index 00000000..18d17122 --- /dev/null +++ b/assets/guide_setup-runtime_nodejs.md.V8C2J_oB.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as d,R as t}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1700921956000}'),n={name:"guide/setup-runtime/nodejs.md"},c=t("",2),s=[c];function i(a,l,r,_,p,u){return d(),o("div",null,s)}const j=e(n,[["render",i]]);export{h as __pageData,j as default}; diff --git a/assets/guide_setup-runtime_nodejs.md.VqjErHCE.js b/assets/guide_setup-runtime_nodejs.md.VqjErHCE.js deleted file mode 100644 index 43628cd6..00000000 --- a/assets/guide_setup-runtime_nodejs.md.VqjErHCE.js +++ /dev/null @@ -1,17 +0,0 @@ -import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as i,o as e,R as n}from"./chunks/framework.6Zk1sI6T.js";const l="/Shmily/assets/node-dependencies.Clor6cih.png",_=JSON.parse('{"title":"开始 Nodejs 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1700914484000}'),t={name:"guide/setup-runtime/nodejs.md"},o=n('

开始 Nodejs 项目

1. 安装 nodejs

  • 查看 package.jsonengines 字段获取项目所需 nodejs 版本
    • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
  • https://nodejs.org/dist/ 下载相应版本的 nodejs
    • Windows 平台注意事项
      • 请下载 .msi 后缀的标准安装程序(如 node-v99.99.9-x64.msi), 以下均不推荐
        • node-v99.9.9-win-x64.7z / node-v99.9.9-win-x64.zip 为绿色版, 需要自己配置 Path 环境变量
        • ./win-x64/node.exe 为绿色单文件
  • 安装过程,选项全部默认

2. 下载项目源代码

3. 安装项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

3.1 从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
-
--\\
-  - node_modules
-    - .bin
-    - ...
-  - package.json
-  - README.md
-  - ...

3.2 从本地安装

  • 命令行打开项目目录

    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd
  • 执行命令安装依赖

    shell
    npm i

WARNING

如果安装以来过程中大量报错,特别是有 node-gyp 字样的,建议使用 [3.1 从项目下载] 的方式解决

其他的参考报错提示处理

4. (可选)启动程序

项目一般会说明启动方式(npm run xxxx), 如果没有, 可以参考以下

WARNING

项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

  • 按照项目说明启动程序

  • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

    json
    {
    -    ...
    -    "scripts": {
    -        "dev": "vitepress dev docs",
    -        "build": "vitepress build docs",
    -        "serve": "vitepress serve docs"
    -    },
    -    ...
    -}

    INFO

    script 中有多个脚本名称(如上图), 一般来说,build 代表生产(正式),dev 代表测试, 执行 npm run build 即可

  • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件

    shell
        node index.js
`,14),p=[o];function d(c,h,r,k,u,g){return e(),i("div",null,p)}const b=a(t,[["render",d]]);export{_ as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_nodejs.md.VqjErHCE.lean.js b/assets/guide_setup-runtime_nodejs.md.VqjErHCE.lean.js deleted file mode 100644 index 3533d6e6..00000000 --- a/assets/guide_setup-runtime_nodejs.md.VqjErHCE.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as i,o as e,R as n}from"./chunks/framework.6Zk1sI6T.js";const l="/Shmily/assets/node-dependencies.Clor6cih.png",_=JSON.parse('{"title":"开始 Nodejs 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1700914484000}'),t={name:"guide/setup-runtime/nodejs.md"},o=n("",14),p=[o];function d(c,h,r,k,u,g){return e(),i("div",null,p)}const b=a(t,[["render",d]]);export{_ as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_php.md.cAoG4XKu.js b/assets/guide_setup-runtime_php.md.mnwzyq2x.js similarity index 95% rename from assets/guide_setup-runtime_php.md.cAoG4XKu.js rename to assets/guide_setup-runtime_php.md.mnwzyq2x.js index 09b5dfd4..1d5ffcca 100644 --- a/assets/guide_setup-runtime_php.md.cAoG4XKu.js +++ b/assets/guide_setup-runtime_php.md.mnwzyq2x.js @@ -1 +1 @@ -import{_ as e,c as o,o as t,R as p}from"./chunks/framework.6Zk1sI6T.js";const c="/Shmily/assets/php.jJW9nwie.png",P=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1700914484000}'),d={name:"guide/setup-runtime/php.md"},a=p('

开始 PHP 项目

  1. 官网 下载 PHP

    Windows 下载 VS16 x64 Thread Safe .zip 就行了

  2. 解压 .zipD:\\php
  3. 确认 D:\\php\\php.exe 存在
  4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
  5. 选择 高级 环境变量
  6. 选择 Path,新增一行 D:\\php
  7. 确认关闭窗口

php

',3),i=[a];function l(s,r,n,_,h,u){return t(),o("div",null,i)}const f=e(d,[["render",l]]);export{P as __pageData,f as default}; +import{_ as e,c as o,o as t,R as p}from"./chunks/framework.6Zk1sI6T.js";const c="/Shmily/assets/php.jJW9nwie.png",P=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1700921956000}'),d={name:"guide/setup-runtime/php.md"},a=p('

开始 PHP 项目

  1. 官网 下载 PHP

    Windows 下载 VS16 x64 Thread Safe .zip 就行了

  2. 解压 .zipD:\\php
  3. 确认 D:\\php\\php.exe 存在
  4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
  5. 选择 高级 环境变量
  6. 选择 Path,新增一行 D:\\php
  7. 确认关闭窗口

php

',3),i=[a];function l(s,r,n,_,h,u){return t(),o("div",null,i)}const f=e(d,[["render",l]]);export{P as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_php.md.cAoG4XKu.lean.js b/assets/guide_setup-runtime_php.md.mnwzyq2x.lean.js similarity index 86% rename from assets/guide_setup-runtime_php.md.cAoG4XKu.lean.js rename to assets/guide_setup-runtime_php.md.mnwzyq2x.lean.js index ae1c4546..b95da8d7 100644 --- a/assets/guide_setup-runtime_php.md.cAoG4XKu.lean.js +++ b/assets/guide_setup-runtime_php.md.mnwzyq2x.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as t,R as p}from"./chunks/framework.6Zk1sI6T.js";const c="/Shmily/assets/php.jJW9nwie.png",P=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1700914484000}'),d={name:"guide/setup-runtime/php.md"},a=p("",3),i=[a];function l(s,r,n,_,h,u){return t(),o("div",null,i)}const f=e(d,[["render",l]]);export{P as __pageData,f as default}; +import{_ as e,c as o,o as t,R as p}from"./chunks/framework.6Zk1sI6T.js";const c="/Shmily/assets/php.jJW9nwie.png",P=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1700921956000}'),d={name:"guide/setup-runtime/php.md"},a=p("",3),i=[a];function l(s,r,n,_,h,u){return t(),o("div",null,i)}const f=e(d,[["render",l]]);export{P as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_python.md.ICTBAasY.js b/assets/guide_setup-runtime_python.md.8FDDOhhH.js similarity index 97% rename from assets/guide_setup-runtime_python.md.ICTBAasY.js rename to assets/guide_setup-runtime_python.md.8FDDOhhH.js index 9beba714..99e50c10 100644 --- a/assets/guide_setup-runtime_python.md.ICTBAasY.js +++ b/assets/guide_setup-runtime_python.md.8FDDOhhH.js @@ -1 +1 @@ -import{_ as t}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as e,o as s,R as i}from"./chunks/framework.6Zk1sI6T.js";const l="/Shmily/assets/python-setup.uz-aeYAo.png",g=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1700914484000}'),p={name:"guide/setup-runtime/python.md"},n=i('

开始 Python 项目

1. 安装 python

  • 进入官网下载

  • 勾选 Add python.exe to PATH

    python add path

  • 全默认 下一步 完成

2. 安装项目依赖

  • 命令行打开项目目录
    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

    • 执行命令安装依赖

    shell
    pip install -r requirements.txt

3.启动程序

WARNING

项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

  • 按照项目说明启动程序

  • 若无说明, 一般 main.py 为入口文件

    shell
        python main.py
',8),o=[n];function h(r,d,c,u,_,m){return s(),e("div",null,o)}const b=a(p,[["render",h]]);export{g as __pageData,b as default}; +import{_ as t}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as e,o as s,R as i}from"./chunks/framework.6Zk1sI6T.js";const l="/Shmily/assets/python-setup.uz-aeYAo.png",g=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1700921956000}'),p={name:"guide/setup-runtime/python.md"},n=i('

开始 Python 项目

1. 安装 python

  • 进入官网下载

  • 勾选 Add python.exe to PATH

    python add path

  • 全默认 下一步 完成

2. 安装项目依赖

  • 命令行打开项目目录
    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

    • 执行命令安装依赖

    shell
    pip install -r requirements.txt

3.启动程序

WARNING

项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

  • 按照项目说明启动程序

  • 若无说明, 一般 main.py 为入口文件

    shell
        python main.py
',8),o=[n];function h(r,d,c,u,_,m){return s(),e("div",null,o)}const b=a(p,[["render",h]]);export{g as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_python.md.ICTBAasY.lean.js b/assets/guide_setup-runtime_python.md.8FDDOhhH.lean.js similarity index 88% rename from assets/guide_setup-runtime_python.md.ICTBAasY.lean.js rename to assets/guide_setup-runtime_python.md.8FDDOhhH.lean.js index d087b442..511663de 100644 --- a/assets/guide_setup-runtime_python.md.ICTBAasY.lean.js +++ b/assets/guide_setup-runtime_python.md.8FDDOhhH.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as e,o as s,R as i}from"./chunks/framework.6Zk1sI6T.js";const l="/Shmily/assets/python-setup.uz-aeYAo.png",g=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1700914484000}'),p={name:"guide/setup-runtime/python.md"},n=i("",8),o=[n];function h(r,d,c,u,_,m){return s(),e("div",null,o)}const b=a(p,[["render",h]]);export{g as __pageData,b as default}; +import{_ as t}from"./chunks/open_cmd.sSnH096g.js";import{_ as a,c as e,o as s,R as i}from"./chunks/framework.6Zk1sI6T.js";const l="/Shmily/assets/python-setup.uz-aeYAo.png",g=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1700921956000}'),p={name:"guide/setup-runtime/python.md"},n=i("",8),o=[n];function h(r,d,c,u,_,m){return s(),e("div",null,o)}const b=a(p,[["render",h]]);export{g as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_snippets_open_cmd.md.MNLcYIqJ.js b/assets/guide_setup-runtime_snippets_open_cmd.md.B1kl9riq.js similarity index 91% rename from assets/guide_setup-runtime_snippets_open_cmd.md.MNLcYIqJ.js rename to assets/guide_setup-runtime_snippets_open_cmd.md.B1kl9riq.js index 5e888936..2a2bdeff 100644 --- a/assets/guide_setup-runtime_snippets_open_cmd.md.MNLcYIqJ.js +++ b/assets/guide_setup-runtime_snippets_open_cmd.md.B1kl9riq.js @@ -1 +1 @@ -import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as n,c as o,o as a,k as e,a as t}from"./chunks/framework.6Zk1sI6T.js";const x=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1700914484000}'),p={name:"guide/setup-runtime/snippets/open_cmd.md"},i=e("ul",null,[e("li",null,[t("命令行打开项目目录 "),e("ul",null,[e("li",null,[t("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:s,alt:"open cmd"})])])])],-1),r=[i];function c(d,l,m,_,u,f){return a(),o("div",null,r)}const $=n(p,[["render",c]]);export{x as __pageData,$ as default}; +import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as n,c as o,o as a,k as e,a as t}from"./chunks/framework.6Zk1sI6T.js";const x=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1700921956000}'),p={name:"guide/setup-runtime/snippets/open_cmd.md"},i=e("ul",null,[e("li",null,[t("命令行打开项目目录 "),e("ul",null,[e("li",null,[t("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:s,alt:"open cmd"})])])])],-1),r=[i];function c(d,l,m,_,u,f){return a(),o("div",null,r)}const $=n(p,[["render",c]]);export{x as __pageData,$ as default}; diff --git a/assets/guide_setup-runtime_snippets_open_cmd.md.MNLcYIqJ.lean.js b/assets/guide_setup-runtime_snippets_open_cmd.md.B1kl9riq.lean.js similarity index 91% rename from assets/guide_setup-runtime_snippets_open_cmd.md.MNLcYIqJ.lean.js rename to assets/guide_setup-runtime_snippets_open_cmd.md.B1kl9riq.lean.js index 5e888936..2a2bdeff 100644 --- a/assets/guide_setup-runtime_snippets_open_cmd.md.MNLcYIqJ.lean.js +++ b/assets/guide_setup-runtime_snippets_open_cmd.md.B1kl9riq.lean.js @@ -1 +1 @@ -import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as n,c as o,o as a,k as e,a as t}from"./chunks/framework.6Zk1sI6T.js";const x=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1700914484000}'),p={name:"guide/setup-runtime/snippets/open_cmd.md"},i=e("ul",null,[e("li",null,[t("命令行打开项目目录 "),e("ul",null,[e("li",null,[t("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:s,alt:"open cmd"})])])])],-1),r=[i];function c(d,l,m,_,u,f){return a(),o("div",null,r)}const $=n(p,[["render",c]]);export{x as __pageData,$ as default}; +import{_ as s}from"./chunks/open_cmd.sSnH096g.js";import{_ as n,c as o,o as a,k as e,a as t}from"./chunks/framework.6Zk1sI6T.js";const x=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1700921956000}'),p={name:"guide/setup-runtime/snippets/open_cmd.md"},i=e("ul",null,[e("li",null,[t("命令行打开项目目录 "),e("ul",null,[e("li",null,[t("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:s,alt:"open cmd"})])])])],-1),r=[i];function c(d,l,m,_,u,f){return a(),o("div",null,r)}const $=n(p,[["render",c]]);export{x as __pageData,$ as default}; diff --git a/assets/guide_use_begin.md.8Scwmk0Z.js b/assets/guide_use_begin.md.-IE3bnoC.js similarity index 99% rename from assets/guide_use_begin.md.8Scwmk0Z.js rename to assets/guide_use_begin.md.-IE3bnoC.js index c8c84474..8c12bc84 100644 --- a/assets/guide_use_begin.md.8Scwmk0Z.js +++ b/assets/guide_use_begin.md.-IE3bnoC.js @@ -1,4 +1,4 @@ -import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a}from"./chunks/open_cmd.sSnH096g.js";import{_ as o,c as t,o as s,R as d}from"./chunks/framework.6Zk1sI6T.js";const n="/Shmily/assets/down_repo.D7_I53Od.png",c="/Shmily/assets/cmd_run.oYJ7fYXP.png",P=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1700914484000}'),p={name:"guide/use/begin.md"},l=d('

开始吧

概述

对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

学前班 ( 如何开始一个项目 )

大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

实操

Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

在每个章节最后均有实操示例

如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

学前班教程

1. 下载源码

在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

实操

打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\\Shmily-Get-QQ-PC_MHT-main

2. 安装项目运行时环境

什么是运行时环境?

顾名思义: 运行这个 "东西" 所需要的 "环境"

例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
那么运行 风景.mp4 所需要环境就是 视频播放器

下载的 源码 也需要对应的 (运行时)环境

项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

2.1 如何判断项目的 编程语言

2.1.1 按照项目的特征(推荐)
编程语言特征
nodejspackage.json 文件, 或大量 .js .ts 后缀文件
pythonrequirements.txt 文件, 或大量 .py 后缀文件
java大量 .java 后缀文件
2.1.2 Github 会自动标注主要语言(并不准确)

what-languages

2.2 根据 编程语言 安装对应的 运行时

编程语言安装运行时
nodejs教程
python教程
java教程
php教程
docker教程

实操

打开 D:\\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
按照 nodejs 教程,
下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
在项目目录 D:\\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

3. 使用

参照具体项目中的文档继续

实操

打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

  1. 安装 node 环境

    上述 2.2 已经安装

  2. 安装 php 环境

    参照2.2 安装 php 环境

  3. 导出的 .mht 文件放入 input

    从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

    // 文件夹结构
    +import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a}from"./chunks/open_cmd.sSnH096g.js";import{_ as o,c as t,o as s,R as d}from"./chunks/framework.6Zk1sI6T.js";const n="/Shmily/assets/down_repo.D7_I53Od.png",c="/Shmily/assets/cmd_run.oYJ7fYXP.png",P=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1700921956000}'),p={name:"guide/use/begin.md"},l=d('

    开始吧

    概述

    对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

    若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

    所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

    因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

    基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

    学前班 ( 如何开始一个项目 )

    大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

    实操

    Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

    在每个章节最后均有实操示例

    如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

    学前班教程

    1. 下载源码

    在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

    实操

    打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
    下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\\Shmily-Get-QQ-PC_MHT-main

    2. 安装项目运行时环境

    什么是运行时环境?

    顾名思义: 运行这个 "东西" 所需要的 "环境"

    例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
    那么运行 风景.mp4 所需要环境就是 视频播放器

    下载的 源码 也需要对应的 (运行时)环境

    项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

    2.1 如何判断项目的 编程语言

    2.1.1 按照项目的特征(推荐)
    编程语言特征
    nodejspackage.json 文件, 或大量 .js .ts 后缀文件
    pythonrequirements.txt 文件, 或大量 .py 后缀文件
    java大量 .java 后缀文件
    2.1.2 Github 会自动标注主要语言(并不准确)

    what-languages

    2.2 根据 编程语言 安装对应的 运行时

    编程语言安装运行时
    nodejs教程
    python教程
    java教程
    php教程
    docker教程

    实操

    打开 D:\\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
    按照 nodejs 教程,
    下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
    在项目目录 D:\\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

    3. 使用

    参照具体项目中的文档继续

    实操

    打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

    1. 安装 node 环境

      上述 2.2 已经安装

    2. 安装 php 环境

      参照2.2 安装 php 环境

    3. 导出的 .mht 文件放入 input

      从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

      // 文件夹结构
       
       -\\
         - node_modules
      diff --git a/assets/guide_use_begin.md.8Scwmk0Z.lean.js b/assets/guide_use_begin.md.-IE3bnoC.lean.js
      similarity index 89%
      rename from assets/guide_use_begin.md.8Scwmk0Z.lean.js
      rename to assets/guide_use_begin.md.-IE3bnoC.lean.js
      index 77b66243..cb3ab4c3 100644
      --- a/assets/guide_use_begin.md.8Scwmk0Z.lean.js
      +++ b/assets/guide_use_begin.md.-IE3bnoC.lean.js
      @@ -1 +1 @@
      -import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a}from"./chunks/open_cmd.sSnH096g.js";import{_ as o,c as t,o as s,R as d}from"./chunks/framework.6Zk1sI6T.js";const n="/Shmily/assets/down_repo.D7_I53Od.png",c="/Shmily/assets/cmd_run.oYJ7fYXP.png",P=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1700914484000}'),p={name:"guide/use/begin.md"},l=d("",24),i=[l];function r(h,u,m,b,_,g){return s(),t("div",null,i)}const y=o(p,[["render",r]]);export{P as __pageData,y as default};
      +import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a}from"./chunks/open_cmd.sSnH096g.js";import{_ as o,c as t,o as s,R as d}from"./chunks/framework.6Zk1sI6T.js";const n="/Shmily/assets/down_repo.D7_I53Od.png",c="/Shmily/assets/cmd_run.oYJ7fYXP.png",P=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1700921956000}'),p={name:"guide/use/begin.md"},l=d("",24),i=[l];function r(h,u,m,b,_,g){return s(),t("div",null,i)}const y=o(p,[["render",r]]);export{P as __pageData,y as default};
      diff --git a/assets/guide_use_data.md.cCg4D9zG.js b/assets/guide_use_data.md.m9x35CC4.js
      similarity index 96%
      rename from assets/guide_use_data.md.cCg4D9zG.js
      rename to assets/guide_use_data.md.m9x35CC4.js
      index a492d1b6..9f8d3a9b 100644
      --- a/assets/guide_use_data.md.cCg4D9zG.js
      +++ b/assets/guide_use_data.md.m9x35CC4.js
      @@ -1 +1 @@
      -import{_ as e,c as a,o as t,R as o}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1700914484000}'),d={name:"guide/use/data.md"},c=o('

      资源文件

      路径说明

      资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

      其中 $rootPath 可以在 Get 项目的 config.js 配置.

      修改补充

      如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

      评论资源

      评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

      ',8),r=[c];function i(s,n,h,l,_,p){return t(),a("div",null,r)}const f=e(d,[["render",i]]);export{u as __pageData,f as default}; +import{_ as e,c as a,o as t,R as o}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1700921956000}'),d={name:"guide/use/data.md"},c=o('

      资源文件

      路径说明

      资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

      其中 $rootPath 可以在 Get 项目的 config.js 配置.

      修改补充

      如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

      评论资源

      评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

      ',8),r=[c];function i(s,n,h,l,_,p){return t(),a("div",null,r)}const f=e(d,[["render",i]]);export{u as __pageData,f as default}; diff --git a/assets/guide_use_data.md.cCg4D9zG.lean.js b/assets/guide_use_data.md.m9x35CC4.lean.js similarity index 84% rename from assets/guide_use_data.md.cCg4D9zG.lean.js rename to assets/guide_use_data.md.m9x35CC4.lean.js index f36376e3..9d842d25 100644 --- a/assets/guide_use_data.md.cCg4D9zG.lean.js +++ b/assets/guide_use_data.md.m9x35CC4.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,R as o}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1700914484000}'),d={name:"guide/use/data.md"},c=o("",8),r=[c];function i(s,n,h,l,_,p){return t(),a("div",null,r)}const f=e(d,[["render",i]]);export{u as __pageData,f as default}; +import{_ as e,c as a,o as t,R as o}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1700921956000}'),d={name:"guide/use/data.md"},c=o("",8),r=[c];function i(s,n,h,l,_,p){return t(),a("div",null,r)}const f=e(d,[["render",i]]);export{u as __pageData,f as default}; diff --git a/assets/guide_use_draft.md.8qr2k-HI.js b/assets/guide_use_draft.md.U0M1EoPT.js similarity index 94% rename from assets/guide_use_draft.md.8qr2k-HI.js rename to assets/guide_use_draft.md.U0M1EoPT.js index 0f45bc65..d7f576ec 100644 --- a/assets/guide_use_draft.md.8qr2k-HI.js +++ b/assets/guide_use_draft.md.U0M1EoPT.js @@ -1 +1 @@ -import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a,c as t,o,R as r}from"./chunks/framework.6Zk1sI6T.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1700914484000}'),s={name:"guide/use/draft.md"},d=r('

      2. 安装项目运行时环境

      根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

      也可以按照下面列出的特性, 安装对应语言的运行时

      • nodejs (项目中有 package.json 文件)

      • python (大量 .py 后缀文件)

      • java (大量 .java 后缀文件)

      ',4),i=[d];function _(c,p,n,l,u,h){return o(),t("div",null,i)}const j=a(s,[["render",_]]);export{g as __pageData,j as default}; +import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a,c as t,o,R as r}from"./chunks/framework.6Zk1sI6T.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1700921956000}'),s={name:"guide/use/draft.md"},d=r('

      2. 安装项目运行时环境

      根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

      也可以按照下面列出的特性, 安装对应语言的运行时

      • nodejs (项目中有 package.json 文件)

      • python (大量 .py 后缀文件)

      • java (大量 .java 后缀文件)

      ',4),i=[d];function _(c,p,n,l,u,h){return o(),t("div",null,i)}const j=a(s,[["render",_]]);export{g as __pageData,j as default}; diff --git a/assets/guide_use_draft.md.8qr2k-HI.lean.js b/assets/guide_use_draft.md.U0M1EoPT.lean.js similarity index 86% rename from assets/guide_use_draft.md.8qr2k-HI.lean.js rename to assets/guide_use_draft.md.U0M1EoPT.lean.js index fe47657f..44b07107 100644 --- a/assets/guide_use_draft.md.8qr2k-HI.lean.js +++ b/assets/guide_use_draft.md.U0M1EoPT.lean.js @@ -1 +1 @@ -import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a,c as t,o,R as r}from"./chunks/framework.6Zk1sI6T.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1700914484000}'),s={name:"guide/use/draft.md"},d=r("",4),i=[d];function _(c,p,n,l,u,h){return o(),t("div",null,i)}const j=a(s,[["render",_]]);export{g as __pageData,j as default}; +import{_ as e}from"./chunks/what-languages.Ta3V3xqh.js";import{_ as a,c as t,o,R as r}from"./chunks/framework.6Zk1sI6T.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1700921956000}'),s={name:"guide/use/draft.md"},d=r("",4),i=[d];function _(c,p,n,l,u,h){return o(),t("div",null,i)}const j=a(s,[["render",_]]);export{g as __pageData,j as default}; diff --git a/assets/guide_use_get.md.WXq5eihI.js b/assets/guide_use_get.md.E-JGNeEC.js similarity index 98% rename from assets/guide_use_get.md.WXq5eihI.js rename to assets/guide_use_get.md.E-JGNeEC.js index 302c8d9c..efb83ea8 100644 --- a/assets/guide_use_get.md.WXq5eihI.js +++ b/assets/guide_use_get.md.E-JGNeEC.js @@ -1,4 +1,4 @@ -import{_ as e,c as a,o as l,R as t}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1700914484000}'),s={name:"guide/use/get.md"},n=t(`

      Get

      支持列表 中选择所需项目, 按照相应的文档操作

      支持列表

      下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

      产物结构

      最终可以在输出目录(一般是 dist)获得 数据文件资源文件

      // 示例
      +import{_ as e,c as a,o as l,R as t}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1700921956000}'),s={name:"guide/use/get.md"},n=t(`

      Get

      支持列表 中选择所需项目, 按照相应的文档操作

      支持列表

      下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

      产物结构

      最终可以在输出目录(一般是 dist)获得 数据文件资源文件

      // 示例
       
       - dist
           - MobileQQ-lqzh-20230101.json  <--- 数据文件
      diff --git a/assets/guide_use_get.md.WXq5eihI.lean.js b/assets/guide_use_get.md.E-JGNeEC.lean.js
      similarity index 84%
      rename from assets/guide_use_get.md.WXq5eihI.lean.js
      rename to assets/guide_use_get.md.E-JGNeEC.lean.js
      index 4d0eb942..0239ff5d 100644
      --- a/assets/guide_use_get.md.WXq5eihI.lean.js
      +++ b/assets/guide_use_get.md.E-JGNeEC.lean.js
      @@ -1 +1 @@
      -import{_ as e,c as a,o as l,R as t}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1700914484000}'),s={name:"guide/use/get.md"},n=t("",9),i=[n];function o(r,p,h,c,d,m){return l(),a("div",null,i)}const _=e(s,[["render",o]]);export{u as __pageData,_ as default};
      +import{_ as e,c as a,o as l,R as t}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1700921956000}'),s={name:"guide/use/get.md"},n=t("",9),i=[n];function o(r,p,h,c,d,m){return l(),a("div",null,i)}const _=e(s,[["render",o]]);export{u as __pageData,_ as default};
      diff --git a/assets/guide_use_merger.md.002tUzeN.js b/assets/guide_use_merger.md.IF-PKyBA.js
      similarity index 95%
      rename from assets/guide_use_merger.md.002tUzeN.js
      rename to assets/guide_use_merger.md.IF-PKyBA.js
      index 18f2a01b..4f2055c5 100644
      --- a/assets/guide_use_merger.md.002tUzeN.js
      +++ b/assets/guide_use_merger.md.IF-PKyBA.js
      @@ -1 +1 @@
      -import{_ as e,c as r,o as a,R as o}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1700914484000}'),t={name:"guide/use/merger.md"},c=o('

      Merger

      用来对 不同来源(Get), 相同内容数据文件 合并去重

      如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

      可以通过此工具去重 2013-2015 年的部分.

      DANGER

      !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

      支持列表

      • SMS CallLog 短信与通话记录
      ',7),d=[c];function l(s,i,n,_,p,u){return a(),r("div",null,d)}const m=e(t,[["render",l]]);export{h as __pageData,m as default}; +import{_ as e,c as r,o as a,R as o}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1700921956000}'),t={name:"guide/use/merger.md"},c=o('

      Merger

      用来对 不同来源(Get), 相同内容数据文件 合并去重

      如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

      可以通过此工具去重 2013-2015 年的部分.

      DANGER

      !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

      支持列表

      • SMS CallLog 短信与通话记录
      ',7),d=[c];function l(s,i,n,_,p,u){return a(),r("div",null,d)}const m=e(t,[["render",l]]);export{h as __pageData,m as default}; diff --git a/assets/guide_use_merger.md.002tUzeN.lean.js b/assets/guide_use_merger.md.IF-PKyBA.lean.js similarity index 84% rename from assets/guide_use_merger.md.002tUzeN.lean.js rename to assets/guide_use_merger.md.IF-PKyBA.lean.js index a0de9e53..4c7badab 100644 --- a/assets/guide_use_merger.md.002tUzeN.lean.js +++ b/assets/guide_use_merger.md.IF-PKyBA.lean.js @@ -1 +1 @@ -import{_ as e,c as r,o as a,R as o}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1700914484000}'),t={name:"guide/use/merger.md"},c=o("",7),d=[c];function l(s,i,n,_,p,u){return a(),r("div",null,d)}const m=e(t,[["render",l]]);export{h as __pageData,m as default}; +import{_ as e,c as r,o as a,R as o}from"./chunks/framework.6Zk1sI6T.js";const h=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1700921956000}'),t={name:"guide/use/merger.md"},c=o("",7),d=[c];function l(s,i,n,_,p,u){return a(),r("div",null,d)}const m=e(t,[["render",l]]);export{h as __pageData,m as default}; diff --git a/assets/guide_use_msg_custom.md.a3JyWp7K.js b/assets/guide_use_msg_custom.md.oA90u8Mp.js similarity index 99% rename from assets/guide_use_msg_custom.md.a3JyWp7K.js rename to assets/guide_use_msg_custom.md.oA90u8Mp.js index a6be9fda..3a6dbfba 100644 --- a/assets/guide_use_msg_custom.md.a3JyWp7K.js +++ b/assets/guide_use_msg_custom.md.oA90u8Mp.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const g=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1700914484000}'),t={name:"guide/use/msg/custom.md"},l=n(`

      自定义

      • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

      • A: 按以下步骤即可

        简单模式

        适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

        此方式不利于数据统计

        js
            {
        +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const g=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1700921956000}'),t={name:"guide/use/msg/custom.md"},l=n(`

        自定义

        • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

        • A: 按以下步骤即可

          简单模式

          适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

          此方式不利于数据统计

          js
              {
                   // 通用字段都是必填 参考 [标准]
                   "source": "SMS",
                   "content": "你好,钉钉", // 用于搜索
          diff --git a/assets/guide_use_msg_custom.md.a3JyWp7K.lean.js b/assets/guide_use_msg_custom.md.oA90u8Mp.lean.js
          similarity index 85%
          rename from assets/guide_use_msg_custom.md.a3JyWp7K.lean.js
          rename to assets/guide_use_msg_custom.md.oA90u8Mp.lean.js
          index 73eb069e..88bb9396 100644
          --- a/assets/guide_use_msg_custom.md.a3JyWp7K.lean.js
          +++ b/assets/guide_use_msg_custom.md.oA90u8Mp.lean.js
          @@ -1 +1 @@
          -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const g=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1700914484000}'),t={name:"guide/use/msg/custom.md"},l=n("",3),h=[l];function e(p,k,o,r,d,E){return a(),i("div",null,h)}const u=s(t,[["render",e]]);export{g as __pageData,u as default};
          +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const g=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1700921956000}'),t={name:"guide/use/msg/custom.md"},l=n("",3),h=[l];function e(p,k,o,r,d,E){return a(),i("div",null,h)}const u=s(t,[["render",e]]);export{g as __pageData,u as default};
          diff --git a/assets/guide_use_msg_other_emotion.md.r91bxRNb.js b/assets/guide_use_msg_other_emotion.md.kE58Jl4Q.js
          similarity index 99%
          rename from assets/guide_use_msg_other_emotion.md.r91bxRNb.js
          rename to assets/guide_use_msg_other_emotion.md.kE58Jl4Q.js
          index 18b076b9..2e78fbb4 100644
          --- a/assets/guide_use_msg_other_emotion.md.r91bxRNb.js
          +++ b/assets/guide_use_msg_other_emotion.md.kE58Jl4Q.js
          @@ -1,4 +1,4 @@
          -import{_ as s,c as a,o as i,R as t}from"./chunks/framework.6Zk1sI6T.js";const E=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1700914484000}'),e={name:"guide/use/msg/other/emotion.md"},n=t(`

          表情

          如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

          约定

          keyvalue举例备注
          packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
          desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
          mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

          文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

          ./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

          简单模式 (从 HTML 字段统计)

          js
          {
          +import{_ as s,c as a,o as i,R as t}from"./chunks/framework.6Zk1sI6T.js";const E=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1700921956000}'),e={name:"guide/use/msg/other/emotion.md"},n=t(`

          表情

          如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

          约定

          keyvalue举例备注
          packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
          desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
          mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

          文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

          ./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

          简单模式 (从 HTML 字段统计)

          js
          {
               ...
               html: "我是简单的一个表情,<img title='[阿狸过新年-饺子]' alt='[阿狸过新年-饺子]' src='./data/qq-android/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif' />"
               content: "我是简单的一个表情,[阿狸过新年-饺子]"
          diff --git a/assets/guide_use_msg_other_emotion.md.r91bxRNb.lean.js b/assets/guide_use_msg_other_emotion.md.kE58Jl4Q.lean.js
          similarity index 85%
          rename from assets/guide_use_msg_other_emotion.md.r91bxRNb.lean.js
          rename to assets/guide_use_msg_other_emotion.md.kE58Jl4Q.lean.js
          index 36784784..bec2de70 100644
          --- a/assets/guide_use_msg_other_emotion.md.r91bxRNb.lean.js
          +++ b/assets/guide_use_msg_other_emotion.md.kE58Jl4Q.lean.js
          @@ -1 +1 @@
          -import{_ as s,c as a,o as i,R as t}from"./chunks/framework.6Zk1sI6T.js";const E=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1700914484000}'),e={name:"guide/use/msg/other/emotion.md"},n=t("",21),h=[n];function l(o,p,r,d,k,c){return i(),a("div",null,h)}const m=s(e,[["render",l]]);export{E as __pageData,m as default};
          +import{_ as s,c as a,o as i,R as t}from"./chunks/framework.6Zk1sI6T.js";const E=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1700921956000}'),e={name:"guide/use/msg/other/emotion.md"},n=t("",21),h=[n];function l(o,p,r,d,k,c){return i(),a("div",null,h)}const m=s(e,[["render",l]]);export{E as __pageData,m as default};
          diff --git a/assets/guide_use_msg_schema.md.hj6g7Pxe.js b/assets/guide_use_msg_schema.md.ay7tUOLw.js
          similarity index 99%
          rename from assets/guide_use_msg_schema.md.hj6g7Pxe.js
          rename to assets/guide_use_msg_schema.md.ay7tUOLw.js
          index 43b28c89..2e73c2ed 100644
          --- a/assets/guide_use_msg_schema.md.hj6g7Pxe.js
          +++ b/assets/guide_use_msg_schema.md.ay7tUOLw.js
          @@ -1,4 +1,4 @@
          -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const o=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1700914484000}'),t={name:"guide/use/msg/schema.md"},l=n(`

          数据文件-Msg

          为了 GetShow 的良好沟通, 所以需要标准化数据格式

          建议开发 Get 时按以下数据标准导出.

          • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

          v2.0

          json
          [{
          +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const o=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1700921956000}'),t={name:"guide/use/msg/schema.md"},l=n(`

          数据文件-Msg

          为了 GetShow 的良好沟通, 所以需要标准化数据格式

          建议开发 Get 时按以下数据标准导出.

          • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

          v2.0

          json
          [{
           
               ⬇⬇⬇⬇⬇⬇  通用字段 ⬇⬇⬇⬇⬇⬇⬇
           
          diff --git a/assets/guide_use_msg_schema.md.hj6g7Pxe.lean.js b/assets/guide_use_msg_schema.md.ay7tUOLw.lean.js
          similarity index 85%
          rename from assets/guide_use_msg_schema.md.hj6g7Pxe.lean.js
          rename to assets/guide_use_msg_schema.md.ay7tUOLw.lean.js
          index 37818088..44f609dd 100644
          --- a/assets/guide_use_msg_schema.md.hj6g7Pxe.lean.js
          +++ b/assets/guide_use_msg_schema.md.ay7tUOLw.lean.js
          @@ -1 +1 @@
          -import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const o=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1700914484000}'),t={name:"guide/use/msg/schema.md"},l=n("",7),h=[l];function k(p,e,E,r,d,g){return a(),i("div",null,h)}const c=s(t,[["render",k]]);export{o as __pageData,c as default};
          +import{_ as s,c as i,o as a,R as n}from"./chunks/framework.6Zk1sI6T.js";const o=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1700921956000}'),t={name:"guide/use/msg/schema.md"},l=n("",7),h=[l];function k(p,e,E,r,d,g){return a(),i("div",null,h)}const c=s(t,[["render",k]]);export{o as __pageData,c as default};
          diff --git a/assets/guide_use_msg_template_index.md.qOz7Ztvc.js b/assets/guide_use_msg_template_index.md.ghJFE9Bk.js
          similarity index 99%
          rename from assets/guide_use_msg_template_index.md.qOz7Ztvc.js
          rename to assets/guide_use_msg_template_index.md.ghJFE9Bk.js
          index a5c20e2c..d7d42830 100644
          --- a/assets/guide_use_msg_template_index.md.qOz7Ztvc.js
          +++ b/assets/guide_use_msg_template_index.md.ghJFE9Bk.js
          @@ -26,4 +26,4 @@ function print() { __p += __j.call(arguments, '') }
           `)+v+`return __p
           }`;var R=bs(function(){return M(o,x+"return "+v).apply(s,l)});if(R.source=v,Si(R))throw R;return R}function $d(n){return W(n).toLowerCase()}function Ud(n){return W(n).toUpperCase()}function Nd(n,e,t){if(n=W(n),n&&(t||e===s))return Iu(n);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Dn(e),o=Ru(r,i),l=Pu(r,i)+1;return de(r,o,l).join("")}function qd(n,e,t){if(n=W(n),n&&(t||e===s))return n.slice(0,Du(n)+1);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Pu(r,Dn(e))+1;return de(r,0,i).join("")}function Gd(n,e,t){if(n=W(n),n&&(t||e===s))return n.replace(Sr,"");if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Ru(r,Dn(e));return de(r,i).join("")}function Hd(n,e){var t=Fs,r=Ms;if(Y(e)){var i="separator"in e?e.separator:i;t="length"in e?I(e.length):t,r="omission"in e?vn(e.omission):r}n=W(n);var o=n.length;if(Be(n)){var l=Dn(n);o=l.length}if(t>=o)return n;var f=t-De(r);if(f<1)return r;var h=l?de(l,0,f).join(""):n.slice(0,f);if(i===s)return h+r;if(l&&(f+=h.length-f),Ci(i)){if(n.slice(f).search(i)){var g,_=h;for(i.global||(i=Gr(i.source,W(ki.exec(i))+"g")),i.lastIndex=0;g=i.exec(_);)var v=g.index;h=h.slice(0,v===s?f:v)}}else if(n.indexOf(vn(i),f)!=f){var y=h.lastIndexOf(i);y>-1&&(h=h.slice(0,y))}return h+r}function Kd(n){return n=W(n),n&&nl.test(n)?n.replace(Ji,yf):n}var Vd=qe(function(n,e,t){return n+(t?" ":"")+e.toUpperCase()}),Ei=Ao("toUpperCase");function xs(n,e,t){return n=W(n),e=t?s:e,e===s?df(n)?bf(n):uf(n):n.match(e)||[]}var bs=P(function(n,e){try{return gn(n,s,e)}catch(t){return Si(t)?t:new L(t)}}),zd=ne(function(n,e){return On(e,function(t){t=Vn(t),kn(n,t,Ai(n[t],n))}),n});function Yd(n){var e=n==null?0:n.length,t=b();return n=e?z(n,function(r){if(typeof r[1]!="function")throw new Sn(K);return[t(r[0]),r[1]]}):[],P(function(r){for(var i=-1;++ioe)return[];var t=Gn,r=rn(n,Gn);e=b(e),n-=Gn;for(var i=Ur(r,e);++t0||e<0)?new D(t):(n<0?t=t.takeRight(-n):n&&(t=t.drop(n)),e!==s&&(e=I(e),t=e<0?t.dropRight(-e):t.take(e-n)),t)},D.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},D.prototype.toArray=function(){return this.take(Gn)},Hn(D.prototype,function(n,e){var t=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=u[r?"take"+(e=="last"?"Right":""):e],o=r||/^find/.test(e);i&&(u.prototype[e]=function(){var l=this.__wrapped__,f=r?[1]:arguments,h=l instanceof D,g=f[0],_=h||E(l),v=function(B){var F=i.apply(u,le([B],f));return r&&y?F[0]:F};_&&t&&typeof g=="function"&&g.length!=1&&(h=_=!1);var y=this.__chain__,x=!!this.__actions__.length,O=o&&!y,R=h&&!x;if(!o&&_){l=R?l:new D(this);var S=n.apply(l,f);return S.__actions__.push({func:ir,args:[v],thisArg:s}),new Cn(S,y)}return O&&R?n.apply(this,f):(S=this.thru(v),O?r?S.value()[0]:S.value():S)})}),On(["pop","push","shift","sort","splice","unshift"],function(n){var e=It[n],t=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",r=/^(?:pop|shift)$/.test(n);u.prototype[n]=function(){var i=arguments;if(r&&!this.__chain__){var o=this.value();return e.apply(E(o)?o:[],i)}return this[t](function(l){return e.apply(E(l)?l:[],i)})}}),Hn(D.prototype,function(n,e){var t=u[e];if(t){var r=t.name+"";U.call($e,r)||($e[r]=[]),$e[r].push({name:e,func:t})}}),$e[Qt(s,_e).name]=[{name:"wrapper",func:s}],D.prototype.clone=Kf,D.prototype.reverse=Vf,D.prototype.value=zf,u.prototype.at=xh,u.prototype.chain=bh,u.prototype.commit=Ah,u.prototype.next=Oh,u.prototype.plant=Ch,u.prototype.reverse=Th,u.prototype.toJSON=u.prototype.valueOf=u.prototype.value=Lh,u.prototype.first=u.prototype.head,rt&&(u.prototype[rt]=Sh),u},Fe=Af();we?((we.exports=Fe)._=Fe,Rr._=Fe):nn._=Fe}).call(vt)})(pr,pr.exports);var Ng=pr.exports;const qg=Ug(Ng);var Gg=Object.defineProperty,Hg=Object.defineProperties,Kg=Object.getOwnPropertyDescriptors,Rs=Object.getOwnPropertySymbols,Vg=Object.prototype.hasOwnProperty,zg=Object.prototype.propertyIsEnumerable,Ps=(a,w,s)=>w in a?Gg(a,w,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[w]=s,Ve=(a,w)=>{for(var s in w||(w={}))Vg.call(w,s)&&Ps(a,s,w[s]);if(Rs)for(var s of Rs(w))zg.call(w,s)&&Ps(a,s,w[s]);return a},Bs=(a,w)=>Hg(a,Kg(w));const Yg={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer(){this.autoscroll&&this.maybeAdjustScroll()},open(a){this.autoscroll&&a&&this.$nextTick(()=>this.maybeAdjustScroll())}},methods:{maybeAdjustScroll(){var a;const w=((a=this.$refs.dropdownMenu)==null?void 0:a.children[this.typeAheadPointer])||!1;if(w){const s=this.getDropdownViewport(),{top:A,bottom:G,height:T}=w.getBoundingClientRect();if(As.bottom)return this.$refs.dropdownMenu.scrollTop=w.offsetTop-(s.height-T)}},getDropdownViewport(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},Zg={data(){return{typeAheadPointer:-1}},watch:{filteredOptions(){for(let a=0;a=0;a--)if(this.selectable(this.filteredOptions[a])){this.typeAheadPointer=a;break}},typeAheadDown(){for(let a=this.typeAheadPointer+1;a{const s=a.__vccOpts||a;for(const[A,G]of w)s[A]=G;return s},Xg={},Qg={xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"},kg=N("path",{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"},null,-1),jg=[kg];function n_(a,w){return fn(),Rn("svg",Qg,jg)}const e_=Ki(Xg,[["render",n_]]),t_={},r_={xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"},i_=N("path",{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"},null,-1),u_=[i_];function o_(a,w){return fn(),Rn("svg",r_,u_)}const s_=Ki(t_,[["render",o_]]),Ds={Deselect:e_,OpenIndicator:s_},l_={mounted(a,{instance:w}){if(w.appendToBody){const{height:s,top:A,left:G,width:T}=w.$refs.toggle.getBoundingClientRect();let K=window.scrollX||window.pageXOffset,C=window.scrollY||window.pageYOffset;a.unbindPosition=w.calculatePosition(a,w,{width:T+"px",left:K+G+"px",top:C+A+s+"px"}),document.body.appendChild(a)}},unmounted(a,{instance:w}){w.appendToBody&&(a.unbindPosition&&typeof a.unbindPosition=="function"&&a.unbindPosition(),a.parentNode&&a.parentNode.removeChild(a))}};function f_(a){const w={};return Object.keys(a).sort().forEach(s=>{w[s]=a[s]}),JSON.stringify(w)}let a_=0;function c_(){return++a_}const h_={components:Ve({},Ds),directives:{appendToBody:l_},mixins:[Yg,Zg,Jg],compatConfig:{MODE:3},emits:["open","close","update:modelValue","search","search:compositionstart","search:compositionend","search:keydown","search:blur","search:focus","search:input","option:created","option:selecting","option:selected","option:deselecting","option:deselected"],props:{modelValue:{},components:{type:Object,default:()=>({})},options:{type:Array,default(){return[]}},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},deselectFromDropdown:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:""},transition:{type:String,default:"vs__fade"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:"label"},autocomplete:{type:String,default:"off"},reduce:{type:Function,default:a=>a},selectable:{type:Function,default:a=>!0},getOptionLabel:{type:Function,default(a){return typeof a=="object"?a.hasOwnProperty(this.label)?a[this.label]:console.warn(`[vue-select warn]: Label key "option.${this.label}" does not exist in options object ${JSON.stringify(a)}.
           https://vue-select.org/api/props.html#getoptionlabel`):a}},getOptionKey:{type:Function,default(a){if(typeof a!="object")return a;try{return a.hasOwnProperty("id")?a.id:f_(a)}catch(w){return console.warn(`[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option.
          -https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let A=this.getOptionLabel(s);return typeof A=="number"&&(A=A.toString()),this.filterBy(s,A,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:A,left:G}){a.style.top=A,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c_()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(A=>A.contains(a.target)||A===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=A=>JSON.stringify(this.reduce(A))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(A=>this.optionComparator(A,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const A=this.mapKeydown(s,this);if(typeof A[a.keyCode]=="function")return A[a.keyCode](a)}}},p_=["dir"],d_=["id","aria-expanded","aria-owns"],g_={ref:"selectedOptions",class:"vs__selected-options"},__=["disabled","title","aria-label","onClick"],v_={ref:"actions",class:"vs__actions"},w_=["disabled"],y_={class:"vs__spinner"},m_=["id"],x_=["id","aria-selected","onMouseover","onClick"],b_={key:0,class:"vs__no-options"},A_=ze(" Sorry, no matching options. "),O_=["id"];function S_(a,w,s,A,G,T){const K=Rg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",T.stateClasses])},[$n(a.$slots,"header",Un(zn(T.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":T.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=C=>T.toggleDropdown(C))},[N("div",g_,[(fn(!0),Rn(Ss,null,Cs(T.selectedValue,(C,$)=>$n(a.$slots,"selected-option-container",{option:T.normalizeOptionForSlot(C),deselect:T.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(C),class:"vs__selected"},[$n(a.$slots,"selected-option",Un(zn(T.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[$]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(C)}`,"aria-label":`Deselect ${s.getOptionLabel(C)}`,onClick:xn=>T.deselect(C)},[(fn(),Mi(Wi(T.childComponents.Deselect)))],8,__)):$i("",!0)]))])),256)),$n(a.$slots,"search",Un(zn(T.scope.search)),()=>[N("input",Ts({class:"vs__search"},T.scope.search.attributes,Pg(T.scope.search.events)),null,16)])],512),N("div",v_,[Ui(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...C)=>T.clearSelection&&T.clearSelection(...C))},[(fn(),Mi(Wi(T.childComponents.Deselect)))],8,w_),[[Ls,T.showClearButton]]),$n(a.$slots,"open-indicator",Un(zn(T.scope.openIndicator)),()=>[s.noDrop?$i("",!0):(fn(),Mi(Wi(T.childComponents.OpenIndicator),Un(Ts({key:0},T.scope.openIndicator.attributes)),null,16))]),$n(a.$slots,"spinner",Un(zn(T.scope.spinner)),()=>[Ui(N("div",y_,"Loading...",512),[[Ls,a.mutableLoading]])])],512)],40,d_),hr(Dg,{name:s.transition},{default:Bg(()=>[T.dropdownOpen?Ui((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...C)=>T.onMousedown&&T.onMousedown(...C),["prevent"])),onMouseup:w[3]||(w[3]=(...C)=>T.onMouseUp&&T.onMouseUp(...C))},[$n(a.$slots,"list-header",Un(zn(T.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(T.filteredOptions,(C,$)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${$}`,key:s.getOptionKey(C),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":T.isOptionDeselectable(C)&&$===a.typeAheadPointer,"vs__dropdown-option--selected":T.isOptionSelected(C),"vs__dropdown-option--highlight":$===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(C)}]),"aria-selected":$===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(C)?a.typeAheadPointer=$:null,onClick:Es(xn=>s.selectable(C)?T.select(C):null,["prevent","stop"])},[$n(a.$slots,"option",Un(zn(T.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)])],42,x_))),128)),T.filteredOptions.length===0?(fn(),Rn("li",b_,[$n(a.$slots,"no-options",Un(zn(T.scope.noOptions)),()=>[A_])])):$i("",!0),$n(a.$slots,"list-footer",Un(zn(T.scope.listFooter)))],40,m_)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O_))]),_:3},8,["name"]),$n(a.$slots,"footer",Un(zn(T.scope.footer)))],10,p_)}const qi=Ki(h_,[["render",S_]]),C_=Wg('

          数据文件-Msg 示例

          示例有以下几种查看方式

          源码 (推荐)

          最及时最可靠

          Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

          Demo

          更新不及时

          ',7),T_={id:"msg-template"},L_={class:"row"},E_={class:"col"},I_=N("label",null,"source",-1),R_={class:"col"},P_=N("label",null,"type",-1),B_=N("label",null,"$source.os",-1),D_={class:"language-js vp-adaptive-theme"},F_=N("button",{title:"Copy Code",class:"copy"},null,-1),M_=N("span",{class:"lang"},"js",-1),W_={class:"shiki shiki-themes github-light github-dark vp-code"},$_={class:"line"},U_={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},N_=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1),q_=N("p",null,[N("img",{src:$g,alt:"from demo web"})],-1),K_=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1700914484000}'),G_={name:"guide/use/msg/template/index.md"},V_=Object.assign(G_,{setup(a){Fg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(C=>C.json());const K=w.reduce((C,$,xn,Ye)=>{let an=C.find(tn=>tn.source===$.source);an||(an={source:$.source,type:[]},C.push(an));let ue=an.type.find(tn=>tn.type===$.type);ue||(ue={type:$.type,os:[]},an.type.push(ue));const Yn=Object.keys($).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get($,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return C},[]);s.push(...K)});let w=[];const s=Is([]),A=Is({source:"",type:"",os:""}),G=Mg(()=>{if(!A.source||!A.type)return[];const K=A.source.source,C=A.type.type,$=w.filter(xn=>xn.source===K&&xn.type===C);return A.type.os.length===0?$:$.filter(xn=>xn[`$${K}`].os===A.os)});function T(K){K==="source"?(A.type="",A.os=""):K==="type"&&(A.type.os.length===1?A.os=A.type.os[0]:A.os="")}return(K,C)=>(fn(),Rn("div",null,[C_,N("div",T_,[N("div",L_,[N("div",E_,[I_,hr(Ni(qi),{options:s,label:"source",modelValue:A.source,"onUpdate:modelValue":C[0]||(C[0]=$=>A.source=$),"onOption:selected":C[1]||(C[1]=$=>T("source"))},null,8,["options","modelValue"])]),N("div",R_,[P_,hr(Ni(qi),{options:A.source?A.source.type:[],label:"type",modelValue:A.type,"onUpdate:modelValue":C[2]||(C[2]=$=>A.type=$),"onOption:selected":C[3]||(C[3]=$=>T("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!A.type||A.type.os.length===0}])},[B_,hr(Ni(qi),{options:A.type?A.type.os:[],modelValue:A.os,"onUpdate:modelValue":C[4]||(C[4]=$=>A.os=$)},null,8,["options","modelValue"])],2)])]),N("div",D_,[F_,M_,N("pre",W_,[N("code",null,[N("span",$_,[N("span",U_,Gi(G.value.slice(0,1)),1)])])])]),N_,q_]))}});export{K_ as __pageData,V_ as default}; +https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let A=this.getOptionLabel(s);return typeof A=="number"&&(A=A.toString()),this.filterBy(s,A,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:A,left:G}){a.style.top=A,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c_()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(A=>A.contains(a.target)||A===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=A=>JSON.stringify(this.reduce(A))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(A=>this.optionComparator(A,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const A=this.mapKeydown(s,this);if(typeof A[a.keyCode]=="function")return A[a.keyCode](a)}}},p_=["dir"],d_=["id","aria-expanded","aria-owns"],g_={ref:"selectedOptions",class:"vs__selected-options"},__=["disabled","title","aria-label","onClick"],v_={ref:"actions",class:"vs__actions"},w_=["disabled"],y_={class:"vs__spinner"},m_=["id"],x_=["id","aria-selected","onMouseover","onClick"],b_={key:0,class:"vs__no-options"},A_=ze(" Sorry, no matching options. "),O_=["id"];function S_(a,w,s,A,G,T){const K=Rg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",T.stateClasses])},[$n(a.$slots,"header",Un(zn(T.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":T.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=C=>T.toggleDropdown(C))},[N("div",g_,[(fn(!0),Rn(Ss,null,Cs(T.selectedValue,(C,$)=>$n(a.$slots,"selected-option-container",{option:T.normalizeOptionForSlot(C),deselect:T.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(C),class:"vs__selected"},[$n(a.$slots,"selected-option",Un(zn(T.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[$]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(C)}`,"aria-label":`Deselect ${s.getOptionLabel(C)}`,onClick:xn=>T.deselect(C)},[(fn(),Mi(Wi(T.childComponents.Deselect)))],8,__)):$i("",!0)]))])),256)),$n(a.$slots,"search",Un(zn(T.scope.search)),()=>[N("input",Ts({class:"vs__search"},T.scope.search.attributes,Pg(T.scope.search.events)),null,16)])],512),N("div",v_,[Ui(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...C)=>T.clearSelection&&T.clearSelection(...C))},[(fn(),Mi(Wi(T.childComponents.Deselect)))],8,w_),[[Ls,T.showClearButton]]),$n(a.$slots,"open-indicator",Un(zn(T.scope.openIndicator)),()=>[s.noDrop?$i("",!0):(fn(),Mi(Wi(T.childComponents.OpenIndicator),Un(Ts({key:0},T.scope.openIndicator.attributes)),null,16))]),$n(a.$slots,"spinner",Un(zn(T.scope.spinner)),()=>[Ui(N("div",y_,"Loading...",512),[[Ls,a.mutableLoading]])])],512)],40,d_),hr(Dg,{name:s.transition},{default:Bg(()=>[T.dropdownOpen?Ui((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...C)=>T.onMousedown&&T.onMousedown(...C),["prevent"])),onMouseup:w[3]||(w[3]=(...C)=>T.onMouseUp&&T.onMouseUp(...C))},[$n(a.$slots,"list-header",Un(zn(T.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(T.filteredOptions,(C,$)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${$}`,key:s.getOptionKey(C),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":T.isOptionDeselectable(C)&&$===a.typeAheadPointer,"vs__dropdown-option--selected":T.isOptionSelected(C),"vs__dropdown-option--highlight":$===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(C)}]),"aria-selected":$===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(C)?a.typeAheadPointer=$:null,onClick:Es(xn=>s.selectable(C)?T.select(C):null,["prevent","stop"])},[$n(a.$slots,"option",Un(zn(T.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)])],42,x_))),128)),T.filteredOptions.length===0?(fn(),Rn("li",b_,[$n(a.$slots,"no-options",Un(zn(T.scope.noOptions)),()=>[A_])])):$i("",!0),$n(a.$slots,"list-footer",Un(zn(T.scope.listFooter)))],40,m_)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O_))]),_:3},8,["name"]),$n(a.$slots,"footer",Un(zn(T.scope.footer)))],10,p_)}const qi=Ki(h_,[["render",S_]]),C_=Wg('

          数据文件-Msg 示例

          示例有以下几种查看方式

          源码 (推荐)

          最及时最可靠

          Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

          Demo

          更新不及时

          ',7),T_={id:"msg-template"},L_={class:"row"},E_={class:"col"},I_=N("label",null,"source",-1),R_={class:"col"},P_=N("label",null,"type",-1),B_=N("label",null,"$source.os",-1),D_={class:"language-js vp-adaptive-theme"},F_=N("button",{title:"Copy Code",class:"copy"},null,-1),M_=N("span",{class:"lang"},"js",-1),W_={class:"shiki shiki-themes github-light github-dark vp-code"},$_={class:"line"},U_={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},N_=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1),q_=N("p",null,[N("img",{src:$g,alt:"from demo web"})],-1),K_=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1700921956000}'),G_={name:"guide/use/msg/template/index.md"},V_=Object.assign(G_,{setup(a){Fg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(C=>C.json());const K=w.reduce((C,$,xn,Ye)=>{let an=C.find(tn=>tn.source===$.source);an||(an={source:$.source,type:[]},C.push(an));let ue=an.type.find(tn=>tn.type===$.type);ue||(ue={type:$.type,os:[]},an.type.push(ue));const Yn=Object.keys($).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get($,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return C},[]);s.push(...K)});let w=[];const s=Is([]),A=Is({source:"",type:"",os:""}),G=Mg(()=>{if(!A.source||!A.type)return[];const K=A.source.source,C=A.type.type,$=w.filter(xn=>xn.source===K&&xn.type===C);return A.type.os.length===0?$:$.filter(xn=>xn[`$${K}`].os===A.os)});function T(K){K==="source"?(A.type="",A.os=""):K==="type"&&(A.type.os.length===1?A.os=A.type.os[0]:A.os="")}return(K,C)=>(fn(),Rn("div",null,[C_,N("div",T_,[N("div",L_,[N("div",E_,[I_,hr(Ni(qi),{options:s,label:"source",modelValue:A.source,"onUpdate:modelValue":C[0]||(C[0]=$=>A.source=$),"onOption:selected":C[1]||(C[1]=$=>T("source"))},null,8,["options","modelValue"])]),N("div",R_,[P_,hr(Ni(qi),{options:A.source?A.source.type:[],label:"type",modelValue:A.type,"onUpdate:modelValue":C[2]||(C[2]=$=>A.type=$),"onOption:selected":C[3]||(C[3]=$=>T("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!A.type||A.type.os.length===0}])},[B_,hr(Ni(qi),{options:A.type?A.type.os:[],modelValue:A.os,"onUpdate:modelValue":C[4]||(C[4]=$=>A.os=$)},null,8,["options","modelValue"])],2)])]),N("div",D_,[F_,M_,N("pre",W_,[N("code",null,[N("span",$_,[N("span",U_,Gi(G.value.slice(0,1)),1)])])])]),N_,q_]))}});export{K_ as __pageData,V_ as default}; diff --git a/assets/guide_use_msg_template_index.md.qOz7Ztvc.lean.js b/assets/guide_use_msg_template_index.md.ghJFE9Bk.lean.js similarity index 99% rename from assets/guide_use_msg_template_index.md.qOz7Ztvc.lean.js rename to assets/guide_use_msg_template_index.md.ghJFE9Bk.lean.js index 6900dc91..20e0d29e 100644 --- a/assets/guide_use_msg_template_index.md.qOz7Ztvc.lean.js +++ b/assets/guide_use_msg_template_index.md.ghJFE9Bk.lean.js @@ -26,4 +26,4 @@ function print() { __p += __j.call(arguments, '') } `)+v+`return __p }`;var R=bs(function(){return M(o,x+"return "+v).apply(s,l)});if(R.source=v,Si(R))throw R;return R}function $d(n){return W(n).toLowerCase()}function Ud(n){return W(n).toUpperCase()}function Nd(n,e,t){if(n=W(n),n&&(t||e===s))return Iu(n);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Dn(e),o=Ru(r,i),l=Pu(r,i)+1;return de(r,o,l).join("")}function qd(n,e,t){if(n=W(n),n&&(t||e===s))return n.slice(0,Du(n)+1);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Pu(r,Dn(e))+1;return de(r,0,i).join("")}function Gd(n,e,t){if(n=W(n),n&&(t||e===s))return n.replace(Sr,"");if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Ru(r,Dn(e));return de(r,i).join("")}function Hd(n,e){var t=Fs,r=Ms;if(Y(e)){var i="separator"in e?e.separator:i;t="length"in e?I(e.length):t,r="omission"in e?vn(e.omission):r}n=W(n);var o=n.length;if(Be(n)){var l=Dn(n);o=l.length}if(t>=o)return n;var f=t-De(r);if(f<1)return r;var h=l?de(l,0,f).join(""):n.slice(0,f);if(i===s)return h+r;if(l&&(f+=h.length-f),Ci(i)){if(n.slice(f).search(i)){var g,_=h;for(i.global||(i=Gr(i.source,W(ki.exec(i))+"g")),i.lastIndex=0;g=i.exec(_);)var v=g.index;h=h.slice(0,v===s?f:v)}}else if(n.indexOf(vn(i),f)!=f){var y=h.lastIndexOf(i);y>-1&&(h=h.slice(0,y))}return h+r}function Kd(n){return n=W(n),n&&nl.test(n)?n.replace(Ji,yf):n}var Vd=qe(function(n,e,t){return n+(t?" ":"")+e.toUpperCase()}),Ei=Ao("toUpperCase");function xs(n,e,t){return n=W(n),e=t?s:e,e===s?df(n)?bf(n):uf(n):n.match(e)||[]}var bs=P(function(n,e){try{return gn(n,s,e)}catch(t){return Si(t)?t:new L(t)}}),zd=ne(function(n,e){return On(e,function(t){t=Vn(t),kn(n,t,Ai(n[t],n))}),n});function Yd(n){var e=n==null?0:n.length,t=b();return n=e?z(n,function(r){if(typeof r[1]!="function")throw new Sn(K);return[t(r[0]),r[1]]}):[],P(function(r){for(var i=-1;++ioe)return[];var t=Gn,r=rn(n,Gn);e=b(e),n-=Gn;for(var i=Ur(r,e);++t0||e<0)?new D(t):(n<0?t=t.takeRight(-n):n&&(t=t.drop(n)),e!==s&&(e=I(e),t=e<0?t.dropRight(-e):t.take(e-n)),t)},D.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},D.prototype.toArray=function(){return this.take(Gn)},Hn(D.prototype,function(n,e){var t=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=u[r?"take"+(e=="last"?"Right":""):e],o=r||/^find/.test(e);i&&(u.prototype[e]=function(){var l=this.__wrapped__,f=r?[1]:arguments,h=l instanceof D,g=f[0],_=h||E(l),v=function(B){var F=i.apply(u,le([B],f));return r&&y?F[0]:F};_&&t&&typeof g=="function"&&g.length!=1&&(h=_=!1);var y=this.__chain__,x=!!this.__actions__.length,O=o&&!y,R=h&&!x;if(!o&&_){l=R?l:new D(this);var S=n.apply(l,f);return S.__actions__.push({func:ir,args:[v],thisArg:s}),new Cn(S,y)}return O&&R?n.apply(this,f):(S=this.thru(v),O?r?S.value()[0]:S.value():S)})}),On(["pop","push","shift","sort","splice","unshift"],function(n){var e=It[n],t=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",r=/^(?:pop|shift)$/.test(n);u.prototype[n]=function(){var i=arguments;if(r&&!this.__chain__){var o=this.value();return e.apply(E(o)?o:[],i)}return this[t](function(l){return e.apply(E(l)?l:[],i)})}}),Hn(D.prototype,function(n,e){var t=u[e];if(t){var r=t.name+"";U.call($e,r)||($e[r]=[]),$e[r].push({name:e,func:t})}}),$e[Qt(s,_e).name]=[{name:"wrapper",func:s}],D.prototype.clone=Kf,D.prototype.reverse=Vf,D.prototype.value=zf,u.prototype.at=xh,u.prototype.chain=bh,u.prototype.commit=Ah,u.prototype.next=Oh,u.prototype.plant=Ch,u.prototype.reverse=Th,u.prototype.toJSON=u.prototype.valueOf=u.prototype.value=Lh,u.prototype.first=u.prototype.head,rt&&(u.prototype[rt]=Sh),u},Fe=Af();we?((we.exports=Fe)._=Fe,Rr._=Fe):nn._=Fe}).call(vt)})(pr,pr.exports);var Ng=pr.exports;const qg=Ug(Ng);var Gg=Object.defineProperty,Hg=Object.defineProperties,Kg=Object.getOwnPropertyDescriptors,Rs=Object.getOwnPropertySymbols,Vg=Object.prototype.hasOwnProperty,zg=Object.prototype.propertyIsEnumerable,Ps=(a,w,s)=>w in a?Gg(a,w,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[w]=s,Ve=(a,w)=>{for(var s in w||(w={}))Vg.call(w,s)&&Ps(a,s,w[s]);if(Rs)for(var s of Rs(w))zg.call(w,s)&&Ps(a,s,w[s]);return a},Bs=(a,w)=>Hg(a,Kg(w));const Yg={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer(){this.autoscroll&&this.maybeAdjustScroll()},open(a){this.autoscroll&&a&&this.$nextTick(()=>this.maybeAdjustScroll())}},methods:{maybeAdjustScroll(){var a;const w=((a=this.$refs.dropdownMenu)==null?void 0:a.children[this.typeAheadPointer])||!1;if(w){const s=this.getDropdownViewport(),{top:A,bottom:G,height:T}=w.getBoundingClientRect();if(As.bottom)return this.$refs.dropdownMenu.scrollTop=w.offsetTop-(s.height-T)}},getDropdownViewport(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},Zg={data(){return{typeAheadPointer:-1}},watch:{filteredOptions(){for(let a=0;a=0;a--)if(this.selectable(this.filteredOptions[a])){this.typeAheadPointer=a;break}},typeAheadDown(){for(let a=this.typeAheadPointer+1;a{const s=a.__vccOpts||a;for(const[A,G]of w)s[A]=G;return s},Xg={},Qg={xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"},kg=N("path",{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"},null,-1),jg=[kg];function n_(a,w){return fn(),Rn("svg",Qg,jg)}const e_=Ki(Xg,[["render",n_]]),t_={},r_={xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"},i_=N("path",{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"},null,-1),u_=[i_];function o_(a,w){return fn(),Rn("svg",r_,u_)}const s_=Ki(t_,[["render",o_]]),Ds={Deselect:e_,OpenIndicator:s_},l_={mounted(a,{instance:w}){if(w.appendToBody){const{height:s,top:A,left:G,width:T}=w.$refs.toggle.getBoundingClientRect();let K=window.scrollX||window.pageXOffset,C=window.scrollY||window.pageYOffset;a.unbindPosition=w.calculatePosition(a,w,{width:T+"px",left:K+G+"px",top:C+A+s+"px"}),document.body.appendChild(a)}},unmounted(a,{instance:w}){w.appendToBody&&(a.unbindPosition&&typeof a.unbindPosition=="function"&&a.unbindPosition(),a.parentNode&&a.parentNode.removeChild(a))}};function f_(a){const w={};return Object.keys(a).sort().forEach(s=>{w[s]=a[s]}),JSON.stringify(w)}let a_=0;function c_(){return++a_}const h_={components:Ve({},Ds),directives:{appendToBody:l_},mixins:[Yg,Zg,Jg],compatConfig:{MODE:3},emits:["open","close","update:modelValue","search","search:compositionstart","search:compositionend","search:keydown","search:blur","search:focus","search:input","option:created","option:selecting","option:selected","option:deselecting","option:deselected"],props:{modelValue:{},components:{type:Object,default:()=>({})},options:{type:Array,default(){return[]}},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},deselectFromDropdown:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:""},transition:{type:String,default:"vs__fade"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:"label"},autocomplete:{type:String,default:"off"},reduce:{type:Function,default:a=>a},selectable:{type:Function,default:a=>!0},getOptionLabel:{type:Function,default(a){return typeof a=="object"?a.hasOwnProperty(this.label)?a[this.label]:console.warn(`[vue-select warn]: Label key "option.${this.label}" does not exist in options object ${JSON.stringify(a)}. https://vue-select.org/api/props.html#getoptionlabel`):a}},getOptionKey:{type:Function,default(a){if(typeof a!="object")return a;try{return a.hasOwnProperty("id")?a.id:f_(a)}catch(w){return console.warn(`[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option. -https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let A=this.getOptionLabel(s);return typeof A=="number"&&(A=A.toString()),this.filterBy(s,A,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:A,left:G}){a.style.top=A,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c_()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(A=>A.contains(a.target)||A===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=A=>JSON.stringify(this.reduce(A))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(A=>this.optionComparator(A,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const A=this.mapKeydown(s,this);if(typeof A[a.keyCode]=="function")return A[a.keyCode](a)}}},p_=["dir"],d_=["id","aria-expanded","aria-owns"],g_={ref:"selectedOptions",class:"vs__selected-options"},__=["disabled","title","aria-label","onClick"],v_={ref:"actions",class:"vs__actions"},w_=["disabled"],y_={class:"vs__spinner"},m_=["id"],x_=["id","aria-selected","onMouseover","onClick"],b_={key:0,class:"vs__no-options"},A_=ze(" Sorry, no matching options. "),O_=["id"];function S_(a,w,s,A,G,T){const K=Rg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",T.stateClasses])},[$n(a.$slots,"header",Un(zn(T.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":T.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=C=>T.toggleDropdown(C))},[N("div",g_,[(fn(!0),Rn(Ss,null,Cs(T.selectedValue,(C,$)=>$n(a.$slots,"selected-option-container",{option:T.normalizeOptionForSlot(C),deselect:T.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(C),class:"vs__selected"},[$n(a.$slots,"selected-option",Un(zn(T.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[$]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(C)}`,"aria-label":`Deselect ${s.getOptionLabel(C)}`,onClick:xn=>T.deselect(C)},[(fn(),Mi(Wi(T.childComponents.Deselect)))],8,__)):$i("",!0)]))])),256)),$n(a.$slots,"search",Un(zn(T.scope.search)),()=>[N("input",Ts({class:"vs__search"},T.scope.search.attributes,Pg(T.scope.search.events)),null,16)])],512),N("div",v_,[Ui(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...C)=>T.clearSelection&&T.clearSelection(...C))},[(fn(),Mi(Wi(T.childComponents.Deselect)))],8,w_),[[Ls,T.showClearButton]]),$n(a.$slots,"open-indicator",Un(zn(T.scope.openIndicator)),()=>[s.noDrop?$i("",!0):(fn(),Mi(Wi(T.childComponents.OpenIndicator),Un(Ts({key:0},T.scope.openIndicator.attributes)),null,16))]),$n(a.$slots,"spinner",Un(zn(T.scope.spinner)),()=>[Ui(N("div",y_,"Loading...",512),[[Ls,a.mutableLoading]])])],512)],40,d_),hr(Dg,{name:s.transition},{default:Bg(()=>[T.dropdownOpen?Ui((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...C)=>T.onMousedown&&T.onMousedown(...C),["prevent"])),onMouseup:w[3]||(w[3]=(...C)=>T.onMouseUp&&T.onMouseUp(...C))},[$n(a.$slots,"list-header",Un(zn(T.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(T.filteredOptions,(C,$)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${$}`,key:s.getOptionKey(C),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":T.isOptionDeselectable(C)&&$===a.typeAheadPointer,"vs__dropdown-option--selected":T.isOptionSelected(C),"vs__dropdown-option--highlight":$===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(C)}]),"aria-selected":$===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(C)?a.typeAheadPointer=$:null,onClick:Es(xn=>s.selectable(C)?T.select(C):null,["prevent","stop"])},[$n(a.$slots,"option",Un(zn(T.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)])],42,x_))),128)),T.filteredOptions.length===0?(fn(),Rn("li",b_,[$n(a.$slots,"no-options",Un(zn(T.scope.noOptions)),()=>[A_])])):$i("",!0),$n(a.$slots,"list-footer",Un(zn(T.scope.listFooter)))],40,m_)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O_))]),_:3},8,["name"]),$n(a.$slots,"footer",Un(zn(T.scope.footer)))],10,p_)}const qi=Ki(h_,[["render",S_]]),C_=Wg("",7),T_={id:"msg-template"},L_={class:"row"},E_={class:"col"},I_=N("label",null,"source",-1),R_={class:"col"},P_=N("label",null,"type",-1),B_=N("label",null,"$source.os",-1),D_={class:"language-js vp-adaptive-theme"},F_=N("button",{title:"Copy Code",class:"copy"},null,-1),M_=N("span",{class:"lang"},"js",-1),W_={class:"shiki shiki-themes github-light github-dark vp-code"},$_={class:"line"},U_={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},N_=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1),q_=N("p",null,[N("img",{src:$g,alt:"from demo web"})],-1),K_=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1700914484000}'),G_={name:"guide/use/msg/template/index.md"},V_=Object.assign(G_,{setup(a){Fg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(C=>C.json());const K=w.reduce((C,$,xn,Ye)=>{let an=C.find(tn=>tn.source===$.source);an||(an={source:$.source,type:[]},C.push(an));let ue=an.type.find(tn=>tn.type===$.type);ue||(ue={type:$.type,os:[]},an.type.push(ue));const Yn=Object.keys($).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get($,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return C},[]);s.push(...K)});let w=[];const s=Is([]),A=Is({source:"",type:"",os:""}),G=Mg(()=>{if(!A.source||!A.type)return[];const K=A.source.source,C=A.type.type,$=w.filter(xn=>xn.source===K&&xn.type===C);return A.type.os.length===0?$:$.filter(xn=>xn[`$${K}`].os===A.os)});function T(K){K==="source"?(A.type="",A.os=""):K==="type"&&(A.type.os.length===1?A.os=A.type.os[0]:A.os="")}return(K,C)=>(fn(),Rn("div",null,[C_,N("div",T_,[N("div",L_,[N("div",E_,[I_,hr(Ni(qi),{options:s,label:"source",modelValue:A.source,"onUpdate:modelValue":C[0]||(C[0]=$=>A.source=$),"onOption:selected":C[1]||(C[1]=$=>T("source"))},null,8,["options","modelValue"])]),N("div",R_,[P_,hr(Ni(qi),{options:A.source?A.source.type:[],label:"type",modelValue:A.type,"onUpdate:modelValue":C[2]||(C[2]=$=>A.type=$),"onOption:selected":C[3]||(C[3]=$=>T("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!A.type||A.type.os.length===0}])},[B_,hr(Ni(qi),{options:A.type?A.type.os:[],modelValue:A.os,"onUpdate:modelValue":C[4]||(C[4]=$=>A.os=$)},null,8,["options","modelValue"])],2)])]),N("div",D_,[F_,M_,N("pre",W_,[N("code",null,[N("span",$_,[N("span",U_,Gi(G.value.slice(0,1)),1)])])])]),N_,q_]))}});export{K_ as __pageData,V_ as default}; +https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let A=this.getOptionLabel(s);return typeof A=="number"&&(A=A.toString()),this.filterBy(s,A,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:A,left:G}){a.style.top=A,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c_()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(A=>A.contains(a.target)||A===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=A=>JSON.stringify(this.reduce(A))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(A=>this.optionComparator(A,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const A=this.mapKeydown(s,this);if(typeof A[a.keyCode]=="function")return A[a.keyCode](a)}}},p_=["dir"],d_=["id","aria-expanded","aria-owns"],g_={ref:"selectedOptions",class:"vs__selected-options"},__=["disabled","title","aria-label","onClick"],v_={ref:"actions",class:"vs__actions"},w_=["disabled"],y_={class:"vs__spinner"},m_=["id"],x_=["id","aria-selected","onMouseover","onClick"],b_={key:0,class:"vs__no-options"},A_=ze(" Sorry, no matching options. "),O_=["id"];function S_(a,w,s,A,G,T){const K=Rg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",T.stateClasses])},[$n(a.$slots,"header",Un(zn(T.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":T.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=C=>T.toggleDropdown(C))},[N("div",g_,[(fn(!0),Rn(Ss,null,Cs(T.selectedValue,(C,$)=>$n(a.$slots,"selected-option-container",{option:T.normalizeOptionForSlot(C),deselect:T.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(C),class:"vs__selected"},[$n(a.$slots,"selected-option",Un(zn(T.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[$]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(C)}`,"aria-label":`Deselect ${s.getOptionLabel(C)}`,onClick:xn=>T.deselect(C)},[(fn(),Mi(Wi(T.childComponents.Deselect)))],8,__)):$i("",!0)]))])),256)),$n(a.$slots,"search",Un(zn(T.scope.search)),()=>[N("input",Ts({class:"vs__search"},T.scope.search.attributes,Pg(T.scope.search.events)),null,16)])],512),N("div",v_,[Ui(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...C)=>T.clearSelection&&T.clearSelection(...C))},[(fn(),Mi(Wi(T.childComponents.Deselect)))],8,w_),[[Ls,T.showClearButton]]),$n(a.$slots,"open-indicator",Un(zn(T.scope.openIndicator)),()=>[s.noDrop?$i("",!0):(fn(),Mi(Wi(T.childComponents.OpenIndicator),Un(Ts({key:0},T.scope.openIndicator.attributes)),null,16))]),$n(a.$slots,"spinner",Un(zn(T.scope.spinner)),()=>[Ui(N("div",y_,"Loading...",512),[[Ls,a.mutableLoading]])])],512)],40,d_),hr(Dg,{name:s.transition},{default:Bg(()=>[T.dropdownOpen?Ui((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...C)=>T.onMousedown&&T.onMousedown(...C),["prevent"])),onMouseup:w[3]||(w[3]=(...C)=>T.onMouseUp&&T.onMouseUp(...C))},[$n(a.$slots,"list-header",Un(zn(T.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(T.filteredOptions,(C,$)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${$}`,key:s.getOptionKey(C),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":T.isOptionDeselectable(C)&&$===a.typeAheadPointer,"vs__dropdown-option--selected":T.isOptionSelected(C),"vs__dropdown-option--highlight":$===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(C)}]),"aria-selected":$===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(C)?a.typeAheadPointer=$:null,onClick:Es(xn=>s.selectable(C)?T.select(C):null,["prevent","stop"])},[$n(a.$slots,"option",Un(zn(T.normalizeOptionForSlot(C))),()=>[ze(Gi(s.getOptionLabel(C)),1)])],42,x_))),128)),T.filteredOptions.length===0?(fn(),Rn("li",b_,[$n(a.$slots,"no-options",Un(zn(T.scope.noOptions)),()=>[A_])])):$i("",!0),$n(a.$slots,"list-footer",Un(zn(T.scope.listFooter)))],40,m_)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O_))]),_:3},8,["name"]),$n(a.$slots,"footer",Un(zn(T.scope.footer)))],10,p_)}const qi=Ki(h_,[["render",S_]]),C_=Wg("",7),T_={id:"msg-template"},L_={class:"row"},E_={class:"col"},I_=N("label",null,"source",-1),R_={class:"col"},P_=N("label",null,"type",-1),B_=N("label",null,"$source.os",-1),D_={class:"language-js vp-adaptive-theme"},F_=N("button",{title:"Copy Code",class:"copy"},null,-1),M_=N("span",{class:"lang"},"js",-1),W_={class:"shiki shiki-themes github-light github-dark vp-code"},$_={class:"line"},U_={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},N_=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1),q_=N("p",null,[N("img",{src:$g,alt:"from demo web"})],-1),K_=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1700921956000}'),G_={name:"guide/use/msg/template/index.md"},V_=Object.assign(G_,{setup(a){Fg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(C=>C.json());const K=w.reduce((C,$,xn,Ye)=>{let an=C.find(tn=>tn.source===$.source);an||(an={source:$.source,type:[]},C.push(an));let ue=an.type.find(tn=>tn.type===$.type);ue||(ue={type:$.type,os:[]},an.type.push(ue));const Yn=Object.keys($).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get($,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return C},[]);s.push(...K)});let w=[];const s=Is([]),A=Is({source:"",type:"",os:""}),G=Mg(()=>{if(!A.source||!A.type)return[];const K=A.source.source,C=A.type.type,$=w.filter(xn=>xn.source===K&&xn.type===C);return A.type.os.length===0?$:$.filter(xn=>xn[`$${K}`].os===A.os)});function T(K){K==="source"?(A.type="",A.os=""):K==="type"&&(A.type.os.length===1?A.os=A.type.os[0]:A.os="")}return(K,C)=>(fn(),Rn("div",null,[C_,N("div",T_,[N("div",L_,[N("div",E_,[I_,hr(Ni(qi),{options:s,label:"source",modelValue:A.source,"onUpdate:modelValue":C[0]||(C[0]=$=>A.source=$),"onOption:selected":C[1]||(C[1]=$=>T("source"))},null,8,["options","modelValue"])]),N("div",R_,[P_,hr(Ni(qi),{options:A.source?A.source.type:[],label:"type",modelValue:A.type,"onUpdate:modelValue":C[2]||(C[2]=$=>A.type=$),"onOption:selected":C[3]||(C[3]=$=>T("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!A.type||A.type.os.length===0}])},[B_,hr(Ni(qi),{options:A.type?A.type.os:[],modelValue:A.os,"onUpdate:modelValue":C[4]||(C[4]=$=>A.os=$)},null,8,["options","modelValue"])],2)])]),N("div",D_,[F_,M_,N("pre",W_,[N("code",null,[N("span",$_,[N("span",U_,Gi(G.value.slice(0,1)),1)])])])]),N_,q_]))}});export{K_ as __pageData,V_ as default}; diff --git a/assets/guide_use_show.md.I4t-UNQt.js b/assets/guide_use_show.md.QdgYx_gr.js similarity index 94% rename from assets/guide_use_show.md.I4t-UNQt.js rename to assets/guide_use_show.md.QdgYx_gr.js index 76618e02..45f24f34 100644 --- a/assets/guide_use_show.md.I4t-UNQt.js +++ b/assets/guide_use_show.md.QdgYx_gr.js @@ -1 +1 @@ -import{_ as e,c as o,o as a,R as t}from"./chunks/framework.6Zk1sI6T.js";const f=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1700914484000}'),r={name:"guide/use/show.md"},h=t('

          Show

          显示 和 ModifyServer

          Demo
          ',5),i=[h];function s(l,d,n,c,_,m){return a(),o("div",null,i)}const S=e(r,[["render",s]]);export{f as __pageData,S as default}; +import{_ as e,c as o,o as a,R as t}from"./chunks/framework.6Zk1sI6T.js";const f=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1700921956000}'),r={name:"guide/use/show.md"},h=t('

          Show

          显示 和 ModifyServer

          Demo
          ',5),i=[h];function s(l,d,n,c,_,m){return a(),o("div",null,i)}const S=e(r,[["render",s]]);export{f as __pageData,S as default}; diff --git a/assets/guide_use_show.md.I4t-UNQt.lean.js b/assets/guide_use_show.md.QdgYx_gr.lean.js similarity index 84% rename from assets/guide_use_show.md.I4t-UNQt.lean.js rename to assets/guide_use_show.md.QdgYx_gr.lean.js index 40b28f75..0004033c 100644 --- a/assets/guide_use_show.md.I4t-UNQt.lean.js +++ b/assets/guide_use_show.md.QdgYx_gr.lean.js @@ -1 +1 @@ -import{_ as e,c as o,o as a,R as t}from"./chunks/framework.6Zk1sI6T.js";const f=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1700914484000}'),r={name:"guide/use/show.md"},h=t("",5),i=[h];function s(l,d,n,c,_,m){return a(),o("div",null,i)}const S=e(r,[["render",s]]);export{f as __pageData,S as default}; +import{_ as e,c as o,o as a,R as t}from"./chunks/framework.6Zk1sI6T.js";const f=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1700921956000}'),r={name:"guide/use/show.md"},h=t("",5),i=[h];function s(l,d,n,c,_,m){return a(),o("div",null,i)}const S=e(r,[["render",s]]);export{f as __pageData,S as default}; diff --git a/assets/guide_what-is.md.uVlmkiHd.js b/assets/guide_what-is.md.GIPQWGld.js similarity index 97% rename from assets/guide_what-is.md.uVlmkiHd.js rename to assets/guide_what-is.md.GIPQWGld.js index d69bf3fe..88bd4b97 100644 --- a/assets/guide_what-is.md.uVlmkiHd.js +++ b/assets/guide_what-is.md.GIPQWGld.js @@ -1 +1 @@ -import{_ as t,c as e,o as a,R as o}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1700914484000}'),s={name:"guide/what-is.md"},i=o('

          这是啥

          一个悲伤的故事

          我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

          • QQ 微信 等记录能融合, 并用时间线查看
          • 支持搜索过滤查询
          • 可以给消息评论
          • 有图表分析

          然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

          吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

          手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

          总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

          少啰嗦,先看Demo

           

          最后

          不支持用户数据导出的公司都是耍流氓~

          Adun Toridas

          今天,我们将夺回我们的家园,夺回我们的遗产!

          ',13),l=[i];function h(r,p,c,m,d,n){return a(),e("div",null,l)}const g=t(s,[["render",h]]);export{u as __pageData,g as default}; +import{_ as t,c as e,o as a,R as o}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1700921956000}'),s={name:"guide/what-is.md"},i=o('

          这是啥

          一个悲伤的故事

          我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

          • QQ 微信 等记录能融合, 并用时间线查看
          • 支持搜索过滤查询
          • 可以给消息评论
          • 有图表分析

          然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

          吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

          手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

          总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

          少啰嗦,先看Demo

           

          最后

          不支持用户数据导出的公司都是耍流氓~

          Adun Toridas

          今天,我们将夺回我们的家园,夺回我们的遗产!

          ',13),l=[i];function h(r,p,c,m,d,n){return a(),e("div",null,l)}const g=t(s,[["render",h]]);export{u as __pageData,g as default}; diff --git a/assets/guide_what-is.md.uVlmkiHd.lean.js b/assets/guide_what-is.md.GIPQWGld.lean.js similarity index 84% rename from assets/guide_what-is.md.uVlmkiHd.lean.js rename to assets/guide_what-is.md.GIPQWGld.lean.js index 80364f13..f8486932 100644 --- a/assets/guide_what-is.md.uVlmkiHd.lean.js +++ b/assets/guide_what-is.md.GIPQWGld.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as a,R as o}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1700914484000}'),s={name:"guide/what-is.md"},i=o("",13),l=[i];function h(r,p,c,m,d,n){return a(),e("div",null,l)}const g=t(s,[["render",h]]);export{u as __pageData,g as default}; +import{_ as t,c as e,o as a,R as o}from"./chunks/framework.6Zk1sI6T.js";const u=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1700921956000}'),s={name:"guide/what-is.md"},i=o("",13),l=[i];function h(r,p,c,m,d,n){return a(),e("div",null,l)}const g=t(s,[["render",h]]);export{u as __pageData,g as default}; diff --git a/assets/index.md.W10sxjIN.js b/assets/index.md.W10sxjIN.js new file mode 100644 index 00000000..072cb81d --- /dev/null +++ b/assets/index.md.W10sxjIN.js @@ -0,0 +1 @@ +import{_,D as l,c as n,k as t,I as e,w as c,R as o,o as v,a as i,p,q as h}from"./chunks/framework.6Zk1sI6T.js";const r="/Shmily/assets/f1.3NEygoYJ.png",m="/Shmily/assets/f2.KmeCDYiN.png",S="/Shmily/assets/f3.BX_mJhSv.png",f="/Shmily/assets/f4.XBUdr08V.png",g="/Shmily/assets/f5.P7gBLjNP.png",x="/Shmily/assets/f6.Q6EQ9VbO.jpg",tt=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1700921956000}'),u={name:"index.md"},s=d=>(p("data-v-3220cd2e"),d=d(),h(),d),T={id:"features"},w={class:"row"},y={class:"info"},P={class:"content"},I=s(()=>t("h2",{class:"title"},"类型多 平台全",-1)),N=s(()=>t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),V=s(()=>t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),b=s(()=>t("div",{class:"cover"},[t("img",{src:r,style:{"max-width":"240px"}})],-1)),A=o('

          以前导出的能合并

          支持将以前导出的数据和现在合并

          历史不再断代

          * 如2013年导出记录(2000-2013)可以
          和2020年导出记录(2007-2020)合并
          在同一时间线查看

          ',1),C={class:"row"},Q={class:"info"},E={class:"content"},k=s(()=>t("h2",{class:"title"},"支持搜索和筛选",-1)),D=s(()=>t("p",null,"关键词(支持正则)搜索",-1)),B=s(()=>t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),M=s(()=>t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=s(()=>t("div",{class:"cover"},[t("img",{src:S,style:{"max-width":"600px"}})],-1)),$=o('

          还有评论和引用

          时间的长河有感而发?添加一条评论或打上一个Tag吧

          引用的消息也会转化为双向链接可快速跳转

          * 评论也可以搜索哦

          ',1),q={class:"row"},J={class:"info"},L={class:"content"},O=s(()=>t("h2",{class:"title"},"图表与统计",-1)),Y=s(()=>t("p",null,"不想看看各种维度的大数据么?",-1)),j=s(()=>t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),z=s(()=>t("div",{class:"cover"},[t("img",{src:g,style:{"max-width":"600px"}})],-1)),U=o('

          开发

          深入底层优化,240M数据纯前端静态处理

          你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

          标准化、模块化、组件化,开发更容易

          数据字段全导出,总有你能用上的

          数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

          ',1);function X(d,G,H,K,W,F){const a=l("P");return v(),n("div",null,[t("div",T,[t("div",w,[t("div",y,[t("div",P,[I,t("div",null,[N,e(a,null,{default:c(()=>[i("PC、Android、iOS 等各种平台")]),_:1}),V])])]),b]),A,t("div",C,[t("div",Q,[t("div",E,[k,t("div",null,[D,e(a,null,{default:c(()=>[i("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,M])])]),R]),$,t("div",q,[t("div",J,[t("div",L,[O,t("div",null,[Y,e(a,null,{default:c(()=>[i("纯表情回复的数量与对比都有哦!")]),_:1}),j])])]),z]),U])])}const st=_(u,[["render",X],["__scopeId","data-v-3220cd2e"]]);export{tt as __pageData,st as default}; diff --git a/assets/index.md.W10sxjIN.lean.js b/assets/index.md.W10sxjIN.lean.js new file mode 100644 index 00000000..b50b3497 --- /dev/null +++ b/assets/index.md.W10sxjIN.lean.js @@ -0,0 +1 @@ +import{_,D as l,c as n,k as t,I as e,w as c,R as o,o as v,a as i,p,q as h}from"./chunks/framework.6Zk1sI6T.js";const r="/Shmily/assets/f1.3NEygoYJ.png",m="/Shmily/assets/f2.KmeCDYiN.png",S="/Shmily/assets/f3.BX_mJhSv.png",f="/Shmily/assets/f4.XBUdr08V.png",g="/Shmily/assets/f5.P7gBLjNP.png",x="/Shmily/assets/f6.Q6EQ9VbO.jpg",tt=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1700921956000}'),u={name:"index.md"},s=d=>(p("data-v-3220cd2e"),d=d(),h(),d),T={id:"features"},w={class:"row"},y={class:"info"},P={class:"content"},I=s(()=>t("h2",{class:"title"},"类型多 平台全",-1)),N=s(()=>t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),V=s(()=>t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),b=s(()=>t("div",{class:"cover"},[t("img",{src:r,style:{"max-width":"240px"}})],-1)),A=o("",1),C={class:"row"},Q={class:"info"},E={class:"content"},k=s(()=>t("h2",{class:"title"},"支持搜索和筛选",-1)),D=s(()=>t("p",null,"关键词(支持正则)搜索",-1)),B=s(()=>t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),M=s(()=>t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=s(()=>t("div",{class:"cover"},[t("img",{src:S,style:{"max-width":"600px"}})],-1)),$=o("",1),q={class:"row"},J={class:"info"},L={class:"content"},O=s(()=>t("h2",{class:"title"},"图表与统计",-1)),Y=s(()=>t("p",null,"不想看看各种维度的大数据么?",-1)),j=s(()=>t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),z=s(()=>t("div",{class:"cover"},[t("img",{src:g,style:{"max-width":"600px"}})],-1)),U=o("",1);function X(d,G,H,K,W,F){const a=l("P");return v(),n("div",null,[t("div",T,[t("div",w,[t("div",y,[t("div",P,[I,t("div",null,[N,e(a,null,{default:c(()=>[i("PC、Android、iOS 等各种平台")]),_:1}),V])])]),b]),A,t("div",C,[t("div",Q,[t("div",E,[k,t("div",null,[D,e(a,null,{default:c(()=>[i("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,M])])]),R]),$,t("div",q,[t("div",J,[t("div",L,[O,t("div",null,[Y,e(a,null,{default:c(()=>[i("纯表情回复的数量与对比都有哦!")]),_:1}),j])])]),z]),U])])}const st=_(u,[["render",X],["__scopeId","data-v-3220cd2e"]]);export{tt as __pageData,st as default}; diff --git a/assets/index.md.k9IOQFOA.js b/assets/index.md.k9IOQFOA.js deleted file mode 100644 index c9209693..00000000 --- a/assets/index.md.k9IOQFOA.js +++ /dev/null @@ -1 +0,0 @@ -import{_,D as l,c as n,k as t,I as c,w as i,R as e,o as f,a as o,p as v,q as p}from"./chunks/framework.6Zk1sI6T.js";const h="/Shmily/assets/f1.3NEygoYJ.png",r="/Shmily/assets/f2.KmeCDYiN.png",m="/Shmily/assets/f3.BX_mJhSv.png",b="/Shmily/assets/f4.XBUdr08V.png",S="/Shmily/assets/f5.P7gBLjNP.png",g="/Shmily/assets/f6.Q6EQ9VbO.jpg",tt=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1700914484000}'),x={name:"index.md"},s=d=>(v("data-v-dfc209fb"),d=d(),p(),d),u={id:"features"},T={class:"row"},w={class:"info"},y={class:"content"},P=s(()=>t("h2",{class:"title"},"类型多 平台全",-1)),I=s(()=>t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),N=s(()=>t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),V=s(()=>t("div",{class:"cover"},[t("img",{src:h,style:{"max-width":"240px"}})],-1)),A=e('

          以前导出的能合并

          支持将以前导出的数据和现在合并

          历史不再断代

          * 如2013年导出记录(2000-2013)可以
          和2020年导出记录(2007-2020)合并
          在同一时间线查看

          ',1),C={class:"row"},Q={class:"info"},E={class:"content"},k=s(()=>t("h2",{class:"title"},"支持搜索和筛选",-1)),D=s(()=>t("p",null,"关键词(支持正则)搜索",-1)),B=s(()=>t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),M=s(()=>t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=s(()=>t("div",{class:"cover"},[t("img",{src:m,style:{"max-width":"600px"}})],-1)),$=e('

          还有评论和引用

          时间的长河有感而发?添加一条评论或打上一个Tag吧

          引用的消息也会转化为双向链接可快速跳转

          * 评论也可以搜索哦

          ',1),q={class:"row"},J={class:"info"},L={class:"content"},O=s(()=>t("h2",{class:"title"},"图表与统计",-1)),Y=s(()=>t("p",null,"不想看看各种维度的大数据么?",-1)),j=s(()=>t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),z=s(()=>t("div",{class:"cover"},[t("img",{src:S,style:{"max-width":"600px"}})],-1)),U=e('

          开发

          深入底层优化,240M数据纯前端静态处理

          你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

          标准化、模块化、组件化,开发更容易

          数据字段全导出,总有你能用上的

          数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

          ',1);function X(d,G,H,K,W,F){const a=l("P");return f(),n("div",null,[t("div",u,[t("div",T,[t("div",w,[t("div",y,[P,t("div",null,[I,c(a,null,{default:i(()=>[o("PC、Android、iOS 等各种平台")]),_:1}),N])])]),V]),A,t("div",C,[t("div",Q,[t("div",E,[k,t("div",null,[D,c(a,null,{default:i(()=>[o("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,M])])]),R]),$,t("div",q,[t("div",J,[t("div",L,[O,t("div",null,[Y,c(a,null,{default:i(()=>[o("纯表情回复的数量与对比都有哦!")]),_:1}),j])])]),z]),U])])}const st=_(x,[["render",X],["__scopeId","data-v-dfc209fb"]]);export{tt as __pageData,st as default}; diff --git a/assets/index.md.k9IOQFOA.lean.js b/assets/index.md.k9IOQFOA.lean.js deleted file mode 100644 index 9bc599a2..00000000 --- a/assets/index.md.k9IOQFOA.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_,D as l,c as n,k as t,I as c,w as i,R as e,o as f,a as o,p as v,q as p}from"./chunks/framework.6Zk1sI6T.js";const h="/Shmily/assets/f1.3NEygoYJ.png",r="/Shmily/assets/f2.KmeCDYiN.png",m="/Shmily/assets/f3.BX_mJhSv.png",b="/Shmily/assets/f4.XBUdr08V.png",S="/Shmily/assets/f5.P7gBLjNP.png",g="/Shmily/assets/f6.Q6EQ9VbO.jpg",tt=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1700914484000}'),x={name:"index.md"},s=d=>(v("data-v-dfc209fb"),d=d(),p(),d),u={id:"features"},T={class:"row"},w={class:"info"},y={class:"content"},P=s(()=>t("h2",{class:"title"},"类型多 平台全",-1)),I=s(()=>t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),N=s(()=>t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1)),V=s(()=>t("div",{class:"cover"},[t("img",{src:h,style:{"max-width":"240px"}})],-1)),A=e("",1),C={class:"row"},Q={class:"info"},E={class:"content"},k=s(()=>t("h2",{class:"title"},"支持搜索和筛选",-1)),D=s(()=>t("p",null,"关键词(支持正则)搜索",-1)),B=s(()=>t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),M=s(()=>t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1)),R=s(()=>t("div",{class:"cover"},[t("img",{src:m,style:{"max-width":"600px"}})],-1)),$=e("",1),q={class:"row"},J={class:"info"},L={class:"content"},O=s(()=>t("h2",{class:"title"},"图表与统计",-1)),Y=s(()=>t("p",null,"不想看看各种维度的大数据么?",-1)),j=s(()=>t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1)),z=s(()=>t("div",{class:"cover"},[t("img",{src:S,style:{"max-width":"600px"}})],-1)),U=e("",1);function X(d,G,H,K,W,F){const a=l("P");return f(),n("div",null,[t("div",u,[t("div",T,[t("div",w,[t("div",y,[P,t("div",null,[I,c(a,null,{default:i(()=>[o("PC、Android、iOS 等各种平台")]),_:1}),N])])]),V]),A,t("div",C,[t("div",Q,[t("div",E,[k,t("div",null,[D,c(a,null,{default:i(()=>[o("时间、类型、设备、人物、通话时长等筛选")]),_:1}),B,M])])]),R]),$,t("div",q,[t("div",J,[t("div",L,[O,t("div",null,[Y,c(a,null,{default:i(()=>[o("纯表情回复的数量与对比都有哦!")]),_:1}),j])])]),z]),U])])}const st=_(x,[["render",X],["__scopeId","data-v-dfc209fb"]]);export{tt as __pageData,st as default}; diff --git a/assets/style.CsBzL822.css b/assets/style.8H1L5xVh.css similarity index 98% rename from assets/style.CsBzL822.css rename to assets/style.8H1L5xVh.css index b7e71472..7bc2a7c0 100644 --- a/assets/style.CsBzL822.css +++ b/assets/style.8H1L5xVh.css @@ -1 +1 @@ -@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-cyrillic.jIZ9REo5.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(/Shmily/assets/inter-roman-cyrillic-ext.8T9wMG5w.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(/Shmily/assets/inter-roman-greek.Cb5wWeGA.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(/Shmily/assets/inter-roman-greek-ext.9JiNzaSO.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(/Shmily/assets/inter-roman-latin.bvIUbFQP.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(/Shmily/assets/inter-roman-latin-ext.GZWE-KO4.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(/Shmily/assets/inter-roman-vietnamese.paY3CzEB.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(/Shmily/assets/inter-italic-cyrillic.-nLMcIwj.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(/Shmily/assets/inter-italic-cyrillic-ext.OVycGSDq.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(/Shmily/assets/inter-italic-greek.PSfer2Kc.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(/Shmily/assets/inter-italic-greek-ext.hznxWNZO.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(/Shmily/assets/inter-italic-latin.27E69YJn.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(/Shmily/assets/inter-italic-latin-ext.RnFly65-.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(/Shmily/assets/inter-italic-vietnamese.xzQHe1q1.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-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-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-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)}: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}: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-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-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-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-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-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-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-gray-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-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-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);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}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.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{color:var(--vp-c-brand-2)}.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 a,.custom-block.tip code{color:var(--vp-c-brand-1)}.custom-block.tip a:hover{color:var(--vp-c-brand-2)}.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 a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover{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{color:var(--vp-c-danger-2)}.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 a{color:var(--vp-c-brand-1)}.custom-block.details a:hover{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}.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:""}.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-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[data-v-9613cc9f]{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)}.vp-doc h1>.VPBadge[data-v-9613cc9f]{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge[data-v-9613cc9f]{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge[data-v-9613cc9f]{vertical-align:middle}.vp-doc h4>.VPBadge[data-v-9613cc9f],.vp-doc h5>.VPBadge[data-v-9613cc9f],.vp-doc h6>.VPBadge[data-v-9613cc9f]{vertical-align:middle;line-height:18px}.VPBadge.info[data-v-9613cc9f]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-9613cc9f]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-9613cc9f]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-9613cc9f]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{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-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-f87ff6e4]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-f87ff6e4]{padding:96px 32px 168px}}.code[data-v-f87ff6e4]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-f87ff6e4]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-f87ff6e4]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-f87ff6e4]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-f87ff6e4]{padding-top:20px}.link[data-v-f87ff6e4]{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-f87ff6e4]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-d0ee3533]{position:relative;z-index:1}.nested[data-v-d0ee3533]{padding-left:16px}.outline-link[data-v-d0ee3533]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:400}.outline-link[data-v-d0ee3533]:hover,.outline-link.active[data-v-d0ee3533]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-d0ee3533]{padding-left:13px}.VPDocAsideOutline[data-v-d330b1bb]{display:none}.VPDocAsideOutline.has-outline[data-v-d330b1bb]{display:block}.content[data-v-d330b1bb]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-d330b1bb]{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-d330b1bb]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-48f9bb55]{margin-top:64px}.edit-info[data-v-48f9bb55]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-48f9bb55]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-48f9bb55]{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-48f9bb55]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-48f9bb55]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-48f9bb55]{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-48f9bb55]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-48f9bb55]{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-48f9bb55]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-48f9bb55]{margin-left:auto;text-align:right}.desc[data-v-48f9bb55]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-48f9bb55]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDocOutlineDropdown[data-v-eadfb36b]{margin-bottom:48px}.VPDocOutlineDropdown button[data-v-eadfb36b]{display:block;font-size:14px;font-weight:500;line-height:24px;border:1px solid var(--vp-c-border);padding:4px 12px;color:var(--vp-c-text-2);background-color:var(--vp-c-default-soft);border-radius:8px;transition:color .5s}.VPDocOutlineDropdown button[data-v-eadfb36b]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-eadfb36b]{color:var(--vp-c-text-1)}.icon[data-v-eadfb36b]{display:inline-block;vertical-align:middle;width:16px;height:16px;fill:currentColor}[data-v-eadfb36b] .outline-link{font-size:14px;font-weight:400}.open>.icon[data-v-eadfb36b]{transform:rotate(90deg)}.items[data-v-eadfb36b]{margin-top:12px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-6b87e69f]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:none}@media (min-width: 960px) and (max-width: 1279px){.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:block}}@media (min-width: 768px){.VPDoc[data-v-6b87e69f]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-6b87e69f]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-6b87e69f]{display:flex;justify-content:center}.VPDoc .aside[data-v-6b87e69f]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{max-width:1104px}}.container[data-v-6b87e69f]{margin:0 auto;width:100%}.aside[data-v-6b87e69f]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-6b87e69f]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-6b87e69f]{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-6b87e69f]::-webkit-scrollbar{display:none}.aside-curtain[data-v-6b87e69f]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-6b87e69f]{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-6b87e69f]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-6b87e69f]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-6b87e69f]{order:1;margin:0;min-width:640px}}.content-container[data-v-6b87e69f]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-6b87e69f]{max-width:688px}.external-link-icon-enabled[data-v-6b87e69f] :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.VPButton[data-v-c1c5efc1]{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-c1c5efc1]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c1c5efc1]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c1c5efc1]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c1c5efc1]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c1c5efc1]: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-c1c5efc1]: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-c1c5efc1]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c1c5efc1]: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-c1c5efc1]: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-c1c5efc1]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c1c5efc1]: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-c1c5efc1]: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-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-da5d1713]{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-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-da5d1713]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-da5d1713]{flex-direction:row}}.main[data-v-da5d1713]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-da5d1713]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-da5d1713]{text-align:left}}@media (min-width: 960px){.main[data-v-da5d1713]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-da5d1713]{max-width:592px}}.name[data-v-da5d1713],.text[data-v-da5d1713]{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-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0 auto}.name[data-v-da5d1713]{color:var(--vp-home-hero-name-color)}.clip[data-v-da5d1713]{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-da5d1713],.text[data-v-da5d1713]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-da5d1713],.text[data-v-da5d1713]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0}}.tagline[data-v-da5d1713]{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-da5d1713]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-da5d1713]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-da5d1713]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0}}.actions[data-v-da5d1713]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-da5d1713]{justify-content:center}@media (min-width: 640px){.actions[data-v-da5d1713]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-da5d1713]{justify-content:flex-start}}.action[data-v-da5d1713]{flex-shrink:0;padding:6px}.image[data-v-da5d1713]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-da5d1713]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-da5d1713]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-da5d1713]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-da5d1713]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-da5d1713]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-da5d1713]{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-da5d1713]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-da5d1713]{width:320px;height:320px}}[data-v-da5d1713] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-da5d1713] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-da5d1713] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-33204567]{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-33204567]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-33204567]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-33204567]>.VPImage{margin-bottom:20px}.icon[data-v-33204567]{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-33204567]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-33204567]{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-33204567]{padding-top:8px}.link-text-value[data-v-33204567]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-33204567]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.VPHome[data-v-d82743a8]{padding-bottom:96px}.VPHome[data-v-d82743a8] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d82743a8]{padding-bottom:128px}}.VPContent[data-v-669faec9]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-669faec9]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-669faec9]{margin:0}@media (min-width: 960px){.VPContent[data-v-669faec9]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-669faec9]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-669faec9]{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-e315a0ad]{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-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-1c15a60a]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-1c15a60a]{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-1c15a60a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-1c15a60a]{color:var(--vp-c-text-1)}.icon[data-v-1c15a60a]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-1c15a60a] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-1c15a60a]{transform:rotate(90deg)}.items[data-v-1c15a60a]{position:absolute;top:64px;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)}.header[data-v-1c15a60a]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-1c15a60a]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-1c15a60a]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-1c15a60a]{transition:all .2s ease-out}.flyout-leave-active[data-v-1c15a60a]{transition:all .15s ease-in}.flyout-enter-from[data-v-1c15a60a],.flyout-leave-to[data-v-1c15a60a]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-f84a0989]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--vp-c-gutter);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-f84a0989]{position:fixed}.VPLocalNav.reached-top[data-v-f84a0989]{border-top-color:transparent}@media (min-width: 960px){.VPLocalNav[data-v-f84a0989]{display:none}}.menu[data-v-f84a0989]{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-f84a0989]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-f84a0989]{padding:0 32px}}.menu-icon[data-v-f84a0989]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-f84a0989]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-f84a0989]{padding:12px 32px 11px}}.VPSwitch[data-v-b1685198]{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-b1685198]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b1685198]{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-b1685198]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b1685198] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-b1685198] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-cbbe1149]{opacity:1}.moon[data-v-cbbe1149],.dark .sun[data-v-cbbe1149]{opacity:0}.dark .moon[data-v-cbbe1149]{opacity:1}.dark .VPSwitchAppearance[data-v-cbbe1149] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{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-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{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-e7ea1737]{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-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .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-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-9c007e85]{position:relative}.VPFlyout[data-v-9c007e85]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-9c007e85]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-9c007e85]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-9c007e85]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-9c007e85]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-9c007e85],.button[aria-expanded=true]+.menu[data-v-9c007e85]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-9c007e85]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-9c007e85]{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-9c007e85]{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-9c007e85]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-9c007e85]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-9c007e85]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-9c007e85]{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-f80f8133]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-f80f8133]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-f80f8133]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-42ef59de]{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-42ef59de],.VPNavBarMenuLink[data-v-42ef59de]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.5.2 | 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;-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}@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: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{-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}@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}.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-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-86d1bed8]{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-86d1bed8]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-86d1bed8]{border-bottom-color:var(--vp-c-divider)}}[data-v-86d1bed8] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-d83f3580]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap}@media (min-width: 768px){.VPNavBar[data-v-d83f3580]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-d83f3580]{padding:0}.VPNavBar[data-v-d83f3580]:not(.has-sidebar):not(.top){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-d83f3580]{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-d83f3580],.container>.content[data-v-d83f3580]{pointer-events:none}.container[data-v-d83f3580] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-d83f3580]{max-width:100%}}.title[data-v-d83f3580]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-d83f3580]{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-d83f3580]{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-d83f3580]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-d83f3580]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-d83f3580]{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-d83f3580]{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:not(.top) .content-body[data-v-d83f3580]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 767px){.content-body[data-v-d83f3580]{column-gap:.5rem}}.menu+.translations[data-v-d83f3580]:before,.menu+.appearance[data-v-d83f3580]:before,.menu+.social-links[data-v-d83f3580]:before,.translations+.appearance[data-v-d83f3580]:before,.appearance+.social-links[data-v-d83f3580]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-d83f3580]:before,.translations+.appearance[data-v-d83f3580]:before{margin-right:16px}.appearance+.social-links[data-v-d83f3580]:before{margin-left:16px}.social-links[data-v-d83f3580]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-d83f3580]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-d83f3580]: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-d83f3580]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenAppearance[data-v-2d7af913]{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-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-05f27b2a]{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-05f27b2a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{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-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-65ef89ca]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-65ef89ca]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-65ef89ca]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-65ef89ca]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-65ef89ca]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-65ef89ca]{transform:rotate(45deg)}.button[data-v-65ef89ca]{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-65ef89ca]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-65ef89ca]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-65ef89ca]:first-child{padding-top:0}.group+.group[data-v-65ef89ca],.group+.item[data-v-65ef89ca]{padding-top:4px}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{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-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{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-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-e31bd47b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-e31bd47b]{padding-bottom:10px}.item[data-v-e31bd47b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-e31bd47b]{cursor:pointer}.indicator[data-v-e31bd47b]{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-e31bd47b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-e31bd47b]{background-color:var(--vp-c-brand-1)}.link[data-v-e31bd47b]{display:flex;align-items:center;flex-grow:1}.text[data-v-e31bd47b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-e31bd47b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-e31bd47b],.VPSidebarItem.level-2 .text[data-v-e31bd47b],.VPSidebarItem.level-3 .text[data-v-e31bd47b],.VPSidebarItem.level-4 .text[data-v-e31bd47b],.VPSidebarItem.level-5 .text[data-v-e31bd47b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-e31bd47b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.caret[data-v-e31bd47b]{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-e31bd47b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-e31bd47b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-e31bd47b]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-e31bd47b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-e31bd47b],.VPSidebarItem.level-2 .items[data-v-e31bd47b],.VPSidebarItem.level-3 .items[data-v-e31bd47b],.VPSidebarItem.level-4 .items[data-v-e31bd47b],.VPSidebarItem.level-5 .items[data-v-e31bd47b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-e31bd47b]{display:none}.VPSidebar[data-v-7f44e717]{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-7f44e717]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-7f44e717]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-7f44e717]{z-index:1;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-7f44e717]{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-7f44e717]{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-7f44e717]{outline:0}.group+.group[data-v-7f44e717]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-7f44e717]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{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-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5a346dfe]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-96bd69d5]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-96bd69d5]{margin:0 auto;max-width:1152px}.love[data-v-96bd69d5]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-96bd69d5]{width:28px;height:28px;fill:currentColor}.message[data-v-96bd69d5]{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-96bd69d5]{padding-top:32px}.action[data-v-96bd69d5]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{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-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{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-b1a88750]{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-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-28528e42]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-28528e42]{padding:32px}.VPTeamMembersItem.small .data[data-v-28528e42]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-28528e42]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-28528e42]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-28528e42]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-28528e42]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-28528e42]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-28528e42]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-28528e42]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-28528e42]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-28528e42]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-28528e42]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-28528e42]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-28528e42]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-28528e42]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-28528e42]{text-align:center}.avatar[data-v-28528e42]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-28528e42]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-28528e42]{margin:0;font-weight:600}.affiliation[data-v-28528e42]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-28528e42]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-28528e42]:hover{color:var(--vp-c-brand-1)}.desc[data-v-28528e42]{margin:0 auto}.desc[data-v-28528e42] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-28528e42]{display:flex;justify-content:center;height:56px}.sp-link[data-v-28528e42]{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-28528e42]:hover,.sp .sp-link.link[data-v-28528e42]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-28528e42]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.qa-list .title{display:flex}.qa-list .title:before{content:">";margin-right:10px}.qa-list .title .link{flex:1;cursor:pointer}.qa-list .title .author{font-size:12px}.qa-list .detail{margin-left:20px;background:aliceblue;padding:5px 10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}:root{--vs-colors--lightest: rgba(60, 60, 60, .26);--vs-colors--light: rgba(60, 60, 60, .5);--vs-colors--dark: #333;--vs-colors--darkest: rgba(0, 0, 0, .15);--vs-search-input-color: inherit;--vs-search-input-placeholder-color: inherit;--vs-font-size: 1rem;--vs-line-height: 1.4;--vs-state-disabled-bg: rgb(248, 248, 248);--vs-state-disabled-color: var(--vs-colors--light);--vs-state-disabled-controls-color: var(--vs-colors--light);--vs-state-disabled-cursor: not-allowed;--vs-border-color: var(--vs-colors--lightest);--vs-border-width: 1px;--vs-border-style: solid;--vs-border-radius: 4px;--vs-actions-padding: 4px 6px 0 3px;--vs-controls-color: var(--vs-colors--light);--vs-controls-size: 1;--vs-controls--deselect-text-shadow: 0 1px 0 #fff;--vs-selected-bg: #f0f0f0;--vs-selected-color: var(--vs-colors--dark);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: #fff;--vs-dropdown-color: inherit;--vs-dropdown-z-index: 1000;--vs-dropdown-min-width: 160px;--vs-dropdown-max-height: 350px;--vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg: #000;--vs-dropdown-option-color: var(--vs-dropdown-color);--vs-dropdown-option-padding: 3px 20px;--vs-dropdown-option--active-bg: #5897fb;--vs-dropdown-option--active-color: #fff;--vs-dropdown-option--deselect-bg: #fb5858;--vs-dropdown-option--deselect-color: #fff;--vs-transition-timing-function: cubic-bezier(1, -.115, .975, .855);--vs-transition-duration: .15s}.v-select{position:relative;font-family:inherit}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function: cubic-bezier(1, .5, .8, 1);--vs-transition-duration: .15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg: var(--vs-state-disabled-bg);--vs-disabled-color: var(--vs-state-disabled-color);--vs-disabled-cursor: var(--vs-state-disabled-cursor)}.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__clear,.vs--disabled .vs__search,.vs--disabled .vs__selected,.vs--disabled .vs__open-indicator{cursor:var(--vs-disabled-cursor);background-color:var(--vs-disabled-bg)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;padding:0 0 4px;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{display:flex;align-items:center;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);padding:0;border:0;background-color:transparent;cursor:pointer;margin-right:8px}.vs__dropdown-menu{display:block;box-sizing:border-box;position:absolute;top:calc(100% - var(--vs-border-width));left:0;z-index:var(--vs-dropdown-z-index);padding:5px 0;margin:0;width:100%;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;box-shadow:var(--vs-dropdown-box-shadow);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-top-style:none;border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);text-align:left;list-style:none;background:var(--vs-dropdown-bg);color:var(--vs-dropdown-color)}.vs__no-options{text-align:center}.vs__dropdown-option{line-height:1.42857143;display:block;padding:var(--vs-dropdown-option-padding);clear:both;color:var(--vs-dropdown-option-color);white-space:nowrap;cursor:pointer}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{display:flex;align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{display:inline-flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:4px;padding:0;border:0;cursor:pointer;background:none;fill:var(--vs-controls-color);text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--open .vs__selected,.vs--single.vs--loading .vs__selected{position:absolute;opacity:.4}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration,.vs__search::-ms-clear{display:none}.vs__search,.vs__search:focus{color:var(--vs-search-input-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:var(--vs-line-height);font-size:var(--vs-font-size);border:1px solid transparent;border-left:none;outline:none;margin:4px 0 0;padding:0 7px;background:none;box-shadow:none;width:0;max-width:100%;flex-grow:1;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;opacity:0;font-size:5px;text-indent:-9999em;overflow:hidden;border-top:.9em solid rgba(100,100,100,.1);border-right:.9em solid rgba(100,100,100,.1);border-bottom:.9em solid rgba(100,100,100,.1);border-left:.9em solid rgba(60,60,60,.45);transform:translateZ(0) scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));-webkit-animation:vSelectSpinner 1.1s infinite linear;animation:vSelectSpinner 1.1s infinite linear;transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;width:5em;height:5em;transform:scale(var(--vs-controls--spinner-size, var(--vs-controls-size)))}.vs--loading .vs__spinner{opacity:1}#msg-template .row{width:100%;display:flex}#msg-template .row .col{flex:1 0 33%}#msg-template .row .col.disable{opacity:0}.VPHome{background:radial-gradient(transparent,rgba(0,0,0,.3)),url(/Shmily/assets/bg.csZ5PfZW.jpg);background-attachment:fixed;background-size:cover}#features[data-v-dfc209fb]{margin:0 auto;max-width:1000px;background:rgba(255,255,255,.7);padding:0 20px;box-sizing:content-box;border-radius:10px;box-shadow:0 2px 12px #0000001a}#features .row[data-v-dfc209fb]{justify-content:center;display:flex;padding:20px 0;border-bottom:1px solid #aaa}#features .row[data-v-dfc209fb]:nth-child(2n){flex-direction:row-reverse}#features .row:nth-child(2n) .info[data-v-dfc209fb]{text-align:right}#features .row[data-v-dfc209fb]:last-child{border-bottom:none}#features .row .info[data-v-dfc209fb]{flex:1 1 auto;display:flex;align-items:center}#features .row .info .title[data-v-dfc209fb]{font-weight:700;font-size:18px}#features .row .info .content[data-v-dfc209fb]{margin-bottom:20px;width:100%}#features .row .info .content p[data-v-dfc209fb]{font-size:16px;margin:10px 0}#features .row .info .content .tips[data-v-dfc209fb]{font-size:12px;color:#333;font-style:italic}#features .row .info .content a[data-v-dfc209fb]{color:#3451b2;text-decoration:underline;padding:0 5px;font-weight:700;font-style:italic}#features .row .cover[data-v-dfc209fb]{flex:0 0 auto}#features .row .cover img[data-v-dfc209fb]{display:inline-block;width:100%}@media (max-width: 960px){#features .row[data-v-dfc209fb]{flex-direction:column!important}#features .row .info[data-v-dfc209fb],#features .row .cover[data-v-dfc209fb]{text-align:center!important;padding:0!important}} +@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/Shmily/assets/inter-roman-cyrillic.jIZ9REo5.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(/Shmily/assets/inter-roman-cyrillic-ext.8T9wMG5w.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(/Shmily/assets/inter-roman-greek.Cb5wWeGA.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(/Shmily/assets/inter-roman-greek-ext.9JiNzaSO.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(/Shmily/assets/inter-roman-latin.bvIUbFQP.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(/Shmily/assets/inter-roman-latin-ext.GZWE-KO4.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(/Shmily/assets/inter-roman-vietnamese.paY3CzEB.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(/Shmily/assets/inter-italic-cyrillic.-nLMcIwj.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(/Shmily/assets/inter-italic-cyrillic-ext.OVycGSDq.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(/Shmily/assets/inter-italic-greek.PSfer2Kc.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(/Shmily/assets/inter-italic-greek-ext.hznxWNZO.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(/Shmily/assets/inter-italic-latin.27E69YJn.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(/Shmily/assets/inter-italic-latin-ext.RnFly65-.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(/Shmily/assets/inter-italic-vietnamese.xzQHe1q1.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-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-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-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)}: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}: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-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-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-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-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-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-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-gray-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-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-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);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}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.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{color:var(--vp-c-brand-2)}.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 a,.custom-block.tip code{color:var(--vp-c-brand-1)}.custom-block.tip a:hover{color:var(--vp-c-brand-2)}.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 a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover{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{color:var(--vp-c-danger-2)}.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 a{color:var(--vp-c-brand-1)}.custom-block.details a:hover{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}.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:""}.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-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[data-v-9613cc9f]{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)}.vp-doc h1>.VPBadge[data-v-9613cc9f]{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge[data-v-9613cc9f]{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge[data-v-9613cc9f]{vertical-align:middle}.vp-doc h4>.VPBadge[data-v-9613cc9f],.vp-doc h5>.VPBadge[data-v-9613cc9f],.vp-doc h6>.VPBadge[data-v-9613cc9f]{vertical-align:middle;line-height:18px}.VPBadge.info[data-v-9613cc9f]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-9613cc9f]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-9613cc9f]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-9613cc9f]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{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-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-f87ff6e4]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-f87ff6e4]{padding:96px 32px 168px}}.code[data-v-f87ff6e4]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-f87ff6e4]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-f87ff6e4]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-f87ff6e4]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-f87ff6e4]{padding-top:20px}.link[data-v-f87ff6e4]{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-f87ff6e4]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-d0ee3533]{position:relative;z-index:1}.nested[data-v-d0ee3533]{padding-left:16px}.outline-link[data-v-d0ee3533]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:400}.outline-link[data-v-d0ee3533]:hover,.outline-link.active[data-v-d0ee3533]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-d0ee3533]{padding-left:13px}.VPDocAsideOutline[data-v-d330b1bb]{display:none}.VPDocAsideOutline.has-outline[data-v-d330b1bb]{display:block}.content[data-v-d330b1bb]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-d330b1bb]{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-d330b1bb]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-7e05ebdb]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-7e05ebdb]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-48f9bb55]{margin-top:64px}.edit-info[data-v-48f9bb55]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-48f9bb55]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-48f9bb55]{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-48f9bb55]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-48f9bb55]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-48f9bb55]{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-48f9bb55]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-48f9bb55]{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-48f9bb55]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-48f9bb55]{margin-left:auto;text-align:right}.desc[data-v-48f9bb55]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-48f9bb55]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDocOutlineDropdown[data-v-eadfb36b]{margin-bottom:48px}.VPDocOutlineDropdown button[data-v-eadfb36b]{display:block;font-size:14px;font-weight:500;line-height:24px;border:1px solid var(--vp-c-border);padding:4px 12px;color:var(--vp-c-text-2);background-color:var(--vp-c-default-soft);border-radius:8px;transition:color .5s}.VPDocOutlineDropdown button[data-v-eadfb36b]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-eadfb36b]{color:var(--vp-c-text-1)}.icon[data-v-eadfb36b]{display:inline-block;vertical-align:middle;width:16px;height:16px;fill:currentColor}[data-v-eadfb36b] .outline-link{font-size:14px;font-weight:400}.open>.icon[data-v-eadfb36b]{transform:rotate(90deg)}.items[data-v-eadfb36b]{margin-top:12px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-6b87e69f]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:none}@media (min-width: 960px) and (max-width: 1279px){.VPDoc .VPDocOutlineDropdown[data-v-6b87e69f]{display:block}}@media (min-width: 768px){.VPDoc[data-v-6b87e69f]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-6b87e69f]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-6b87e69f]{display:flex;justify-content:center}.VPDoc .aside[data-v-6b87e69f]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-6b87e69f]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-6b87e69f]{max-width:1104px}}.container[data-v-6b87e69f]{margin:0 auto;width:100%}.aside[data-v-6b87e69f]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-6b87e69f]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-6b87e69f]{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-6b87e69f]::-webkit-scrollbar{display:none}.aside-curtain[data-v-6b87e69f]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-6b87e69f]{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-6b87e69f]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-6b87e69f]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-6b87e69f]{order:1;margin:0;min-width:640px}}.content-container[data-v-6b87e69f]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-6b87e69f]{max-width:688px}.external-link-icon-enabled[data-v-6b87e69f] :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.VPButton[data-v-c1c5efc1]{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-c1c5efc1]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c1c5efc1]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c1c5efc1]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c1c5efc1]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c1c5efc1]: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-c1c5efc1]: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-c1c5efc1]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c1c5efc1]: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-c1c5efc1]: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-c1c5efc1]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c1c5efc1]: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-c1c5efc1]: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-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-da5d1713]{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-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-da5d1713]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-da5d1713]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-da5d1713]{flex-direction:row}}.main[data-v-da5d1713]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-da5d1713]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-da5d1713]{text-align:left}}@media (min-width: 960px){.main[data-v-da5d1713]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-da5d1713]{max-width:592px}}.name[data-v-da5d1713],.text[data-v-da5d1713]{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-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0 auto}.name[data-v-da5d1713]{color:var(--vp-home-hero-name-color)}.clip[data-v-da5d1713]{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-da5d1713],.text[data-v-da5d1713]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-da5d1713],.text[data-v-da5d1713]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-da5d1713],.VPHero.has-image .text[data-v-da5d1713]{margin:0}}.tagline[data-v-da5d1713]{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-da5d1713]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-da5d1713]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-da5d1713]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-da5d1713]{margin:0}}.actions[data-v-da5d1713]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-da5d1713]{justify-content:center}@media (min-width: 640px){.actions[data-v-da5d1713]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-da5d1713]{justify-content:flex-start}}.action[data-v-da5d1713]{flex-shrink:0;padding:6px}.image[data-v-da5d1713]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-da5d1713]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-da5d1713]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-da5d1713]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-da5d1713]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-da5d1713]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-da5d1713]{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-da5d1713]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-da5d1713]{width:320px;height:320px}}[data-v-da5d1713] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-da5d1713] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-da5d1713] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-33204567]{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-33204567]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-33204567]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-33204567]>.VPImage{margin-bottom:20px}.icon[data-v-33204567]{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-33204567]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-33204567]{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-33204567]{padding-top:8px}.link-text-value[data-v-33204567]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-33204567]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.VPHome[data-v-d82743a8]{padding-bottom:96px}.VPHome[data-v-d82743a8] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-d82743a8]{padding-bottom:128px}}.VPContent[data-v-669faec9]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-669faec9]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-669faec9]{margin:0}@media (min-width: 960px){.VPContent[data-v-669faec9]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-669faec9]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-669faec9]{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-e315a0ad]{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-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-1c15a60a]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-1c15a60a]{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-1c15a60a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-1c15a60a]{color:var(--vp-c-text-1)}.icon[data-v-1c15a60a]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-1c15a60a] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-1c15a60a]{transform:rotate(90deg)}.items[data-v-1c15a60a]{position:absolute;top:64px;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)}.header[data-v-1c15a60a]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-1c15a60a]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-1c15a60a]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-1c15a60a]{transition:all .2s ease-out}.flyout-leave-active[data-v-1c15a60a]{transition:all .15s ease-in}.flyout-enter-from[data-v-1c15a60a],.flyout-leave-to[data-v-1c15a60a]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-f84a0989]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--vp-c-gutter);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-f84a0989]{position:fixed}.VPLocalNav.reached-top[data-v-f84a0989]{border-top-color:transparent}@media (min-width: 960px){.VPLocalNav[data-v-f84a0989]{display:none}}.menu[data-v-f84a0989]{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-f84a0989]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-f84a0989]{padding:0 32px}}.menu-icon[data-v-f84a0989]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-f84a0989]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-f84a0989]{padding:12px 32px 11px}}.VPSwitch[data-v-b1685198]{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-b1685198]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b1685198]{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-b1685198]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b1685198] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-b1685198] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-cbbe1149]{opacity:1}.moon[data-v-cbbe1149],.dark .sun[data-v-cbbe1149]{opacity:0}.dark .moon[data-v-cbbe1149]{opacity:1}.dark .VPSwitchAppearance[data-v-cbbe1149] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-e6aabb21]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-e6aabb21]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{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-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{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-e7ea1737]{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-e7ea1737] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e7ea1737] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e7ea1737] .group:last-child{padding-bottom:0}.VPMenu[data-v-e7ea1737] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e7ea1737] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e7ea1737] .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-e7ea1737] .action{padding-left:24px}.VPFlyout[data-v-9c007e85]{position:relative}.VPFlyout[data-v-9c007e85]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-9c007e85]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-9c007e85]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-9c007e85]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-9c007e85]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-9c007e85],.button[aria-expanded=true]+.menu[data-v-9c007e85]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-9c007e85]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-9c007e85]{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-9c007e85]{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-9c007e85]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-9c007e85]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-9c007e85]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-9c007e85]{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-f80f8133]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-f80f8133]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-f80f8133]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-d0bd9dde]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-d0bd9dde]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-d0bd9dde]{display:none}}.trans-title[data-v-d0bd9dde]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-d0bd9dde],.item.social-links[data-v-d0bd9dde]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-d0bd9dde]{min-width:176px}.appearance-action[data-v-d0bd9dde]{margin-right:-2px}.social-links-list[data-v-d0bd9dde]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-42ef59de]{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-42ef59de],.VPNavBarMenuLink[data-v-42ef59de]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-7f418b0f]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-7f418b0f]{display:flex}}/*! @docsearch/css 3.5.2 | 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;-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}@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: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{-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}@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}.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-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-86d1bed8]{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-86d1bed8]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-86d1bed8]{border-bottom-color:var(--vp-c-divider)}}[data-v-86d1bed8] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-74abcbb9]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-74abcbb9]{display:flex;align-items:center}}.title[data-v-74abcbb9]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-d83f3580]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap}@media (min-width: 768px){.VPNavBar[data-v-d83f3580]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-d83f3580]{padding:0}.VPNavBar[data-v-d83f3580]:not(.has-sidebar):not(.top){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-d83f3580]{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-d83f3580],.container>.content[data-v-d83f3580]{pointer-events:none}.container[data-v-d83f3580] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-d83f3580]{max-width:100%}}.title[data-v-d83f3580]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-d83f3580]{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-d83f3580]{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-d83f3580]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-d83f3580]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-d83f3580]{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-d83f3580]{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:not(.top) .content-body[data-v-d83f3580]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 767px){.content-body[data-v-d83f3580]{column-gap:.5rem}}.menu+.translations[data-v-d83f3580]:before,.menu+.appearance[data-v-d83f3580]:before,.menu+.social-links[data-v-d83f3580]:before,.translations+.appearance[data-v-d83f3580]:before,.appearance+.social-links[data-v-d83f3580]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-d83f3580]:before,.translations+.appearance[data-v-d83f3580]:before{margin-right:16px}.appearance+.social-links[data-v-d83f3580]:before{margin-left:16px}.social-links[data-v-d83f3580]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-d83f3580]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-d83f3580]: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-d83f3580]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenAppearance[data-v-2d7af913]{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-2d7af913]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-05f27b2a]{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-05f27b2a]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{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-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-65ef89ca]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-65ef89ca]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-65ef89ca]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-65ef89ca]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-65ef89ca]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-65ef89ca]{transform:rotate(45deg)}.button[data-v-65ef89ca]{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-65ef89ca]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-65ef89ca]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-65ef89ca]:first-child{padding-top:0}.group+.group[data-v-65ef89ca],.group+.item[data-v-65ef89ca]{padding-top:4px}.VPNavScreenTranslations[data-v-d72aa483]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-d72aa483]{height:auto}.title[data-v-d72aa483]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-d72aa483]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-d72aa483]{margin-right:8px}.icon.chevron[data-v-d72aa483]{margin-left:4px}.list[data-v-d72aa483]{padding:4px 0 0 24px}.link[data-v-d72aa483]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-cc5739dd]{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-cc5739dd],.VPNavScreen.fade-leave-active[data-v-cc5739dd]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-cc5739dd],.VPNavScreen.fade-leave-active .container[data-v-cc5739dd]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-cc5739dd],.VPNavScreen.fade-leave-to[data-v-cc5739dd]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-cc5739dd],.VPNavScreen.fade-leave-to .container[data-v-cc5739dd]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-cc5739dd]{display:none}}.container[data-v-cc5739dd]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-cc5739dd],.menu+.appearance[data-v-cc5739dd],.translations+.appearance[data-v-cc5739dd]{margin-top:24px}.menu+.social-links[data-v-cc5739dd]{margin-top:16px}.appearance+.social-links[data-v-cc5739dd]{margin-top:16px}.VPNav[data-v-ae24b3ad]{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-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-e31bd47b]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-e31bd47b]{padding-bottom:10px}.item[data-v-e31bd47b]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-e31bd47b]{cursor:pointer}.indicator[data-v-e31bd47b]{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-e31bd47b],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-e31bd47b]{background-color:var(--vp-c-brand-1)}.link[data-v-e31bd47b]{display:flex;align-items:center;flex-grow:1}.text[data-v-e31bd47b]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-e31bd47b]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-e31bd47b],.VPSidebarItem.level-2 .text[data-v-e31bd47b],.VPSidebarItem.level-3 .text[data-v-e31bd47b],.VPSidebarItem.level-4 .text[data-v-e31bd47b],.VPSidebarItem.level-5 .text[data-v-e31bd47b]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-e31bd47b],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.text[data-v-e31bd47b],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-e31bd47b]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-e31bd47b],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-e31bd47b]{color:var(--vp-c-brand-1)}.caret[data-v-e31bd47b]{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-e31bd47b]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-e31bd47b]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-e31bd47b]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-e31bd47b]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-e31bd47b],.VPSidebarItem.level-2 .items[data-v-e31bd47b],.VPSidebarItem.level-3 .items[data-v-e31bd47b],.VPSidebarItem.level-4 .items[data-v-e31bd47b],.VPSidebarItem.level-5 .items[data-v-e31bd47b]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-e31bd47b]{display:none}.VPSidebar[data-v-7f44e717]{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-7f44e717]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-7f44e717]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-7f44e717]{z-index:1;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-7f44e717]{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-7f44e717]{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-7f44e717]{outline:0}.group+.group[data-v-7f44e717]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-7f44e717]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-0f60ec36]{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-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5a346dfe]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-96bd69d5]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-96bd69d5]{margin:0 auto;max-width:1152px}.love[data-v-96bd69d5]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-96bd69d5]{width:28px;height:28px;fill:currentColor}.message[data-v-96bd69d5]{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-96bd69d5]{padding-top:32px}.action[data-v-96bd69d5]{padding-top:40px;text-align:center}.VPTeamPage[data-v-10b00018]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-10b00018]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-10b00018-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-10b00018-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-10b00018-s],.VPTeamMembers+.VPTeamPageSection[data-v-10b00018-s]{margin-top:96px}}.VPTeamMembers[data-v-10b00018-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-10b00018-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-10b00018-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{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-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{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-b1a88750]{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-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-28528e42]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-28528e42]{padding:32px}.VPTeamMembersItem.small .data[data-v-28528e42]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-28528e42]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-28528e42]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-28528e42]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-28528e42]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-28528e42]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-28528e42]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-28528e42]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-28528e42]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-28528e42]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-28528e42]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-28528e42]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-28528e42]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-28528e42]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-28528e42]{text-align:center}.avatar[data-v-28528e42]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-28528e42]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-28528e42]{margin:0;font-weight:600}.affiliation[data-v-28528e42]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-28528e42]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-28528e42]:hover{color:var(--vp-c-brand-1)}.desc[data-v-28528e42]{margin:0 auto}.desc[data-v-28528e42] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-28528e42]{display:flex;justify-content:center;height:56px}.sp-link[data-v-28528e42]{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-28528e42]:hover,.sp .sp-link.link[data-v-28528e42]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-28528e42]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.qa-list .title{display:flex}.qa-list .title:before{content:">";margin-right:10px}.qa-list .title .link{flex:1;cursor:pointer}.qa-list .title .author{font-size:12px}.qa-list .detail{margin-left:20px;background:aliceblue;padding:5px 10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}:root{--vs-colors--lightest: rgba(60, 60, 60, .26);--vs-colors--light: rgba(60, 60, 60, .5);--vs-colors--dark: #333;--vs-colors--darkest: rgba(0, 0, 0, .15);--vs-search-input-color: inherit;--vs-search-input-placeholder-color: inherit;--vs-font-size: 1rem;--vs-line-height: 1.4;--vs-state-disabled-bg: rgb(248, 248, 248);--vs-state-disabled-color: var(--vs-colors--light);--vs-state-disabled-controls-color: var(--vs-colors--light);--vs-state-disabled-cursor: not-allowed;--vs-border-color: var(--vs-colors--lightest);--vs-border-width: 1px;--vs-border-style: solid;--vs-border-radius: 4px;--vs-actions-padding: 4px 6px 0 3px;--vs-controls-color: var(--vs-colors--light);--vs-controls-size: 1;--vs-controls--deselect-text-shadow: 0 1px 0 #fff;--vs-selected-bg: #f0f0f0;--vs-selected-color: var(--vs-colors--dark);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: #fff;--vs-dropdown-color: inherit;--vs-dropdown-z-index: 1000;--vs-dropdown-min-width: 160px;--vs-dropdown-max-height: 350px;--vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg: #000;--vs-dropdown-option-color: var(--vs-dropdown-color);--vs-dropdown-option-padding: 3px 20px;--vs-dropdown-option--active-bg: #5897fb;--vs-dropdown-option--active-color: #fff;--vs-dropdown-option--deselect-bg: #fb5858;--vs-dropdown-option--deselect-color: #fff;--vs-transition-timing-function: cubic-bezier(1, -.115, .975, .855);--vs-transition-duration: .15s}.v-select{position:relative;font-family:inherit}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function: cubic-bezier(1, .5, .8, 1);--vs-transition-duration: .15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg: var(--vs-state-disabled-bg);--vs-disabled-color: var(--vs-state-disabled-color);--vs-disabled-cursor: var(--vs-state-disabled-cursor)}.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__clear,.vs--disabled .vs__search,.vs--disabled .vs__selected,.vs--disabled .vs__open-indicator{cursor:var(--vs-disabled-cursor);background-color:var(--vs-disabled-bg)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;padding:0 0 4px;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{display:flex;align-items:center;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);padding:0;border:0;background-color:transparent;cursor:pointer;margin-right:8px}.vs__dropdown-menu{display:block;box-sizing:border-box;position:absolute;top:calc(100% - var(--vs-border-width));left:0;z-index:var(--vs-dropdown-z-index);padding:5px 0;margin:0;width:100%;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;box-shadow:var(--vs-dropdown-box-shadow);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-top-style:none;border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);text-align:left;list-style:none;background:var(--vs-dropdown-bg);color:var(--vs-dropdown-color)}.vs__no-options{text-align:center}.vs__dropdown-option{line-height:1.42857143;display:block;padding:var(--vs-dropdown-option-padding);clear:both;color:var(--vs-dropdown-option-color);white-space:nowrap;cursor:pointer}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{display:flex;align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{display:inline-flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:4px;padding:0;border:0;cursor:pointer;background:none;fill:var(--vs-controls-color);text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--open .vs__selected,.vs--single.vs--loading .vs__selected{position:absolute;opacity:.4}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration,.vs__search::-ms-clear{display:none}.vs__search,.vs__search:focus{color:var(--vs-search-input-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:var(--vs-line-height);font-size:var(--vs-font-size);border:1px solid transparent;border-left:none;outline:none;margin:4px 0 0;padding:0 7px;background:none;box-shadow:none;width:0;max-width:100%;flex-grow:1;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;opacity:0;font-size:5px;text-indent:-9999em;overflow:hidden;border-top:.9em solid rgba(100,100,100,.1);border-right:.9em solid rgba(100,100,100,.1);border-bottom:.9em solid rgba(100,100,100,.1);border-left:.9em solid rgba(60,60,60,.45);transform:translateZ(0) scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));-webkit-animation:vSelectSpinner 1.1s infinite linear;animation:vSelectSpinner 1.1s infinite linear;transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;width:5em;height:5em;transform:scale(var(--vs-controls--spinner-size, var(--vs-controls-size)))}.vs--loading .vs__spinner{opacity:1}#msg-template .row{width:100%;display:flex}#msg-template .row .col{flex:1 0 33%}#msg-template .row .col.disable{opacity:0}.VPHome{background:radial-gradient(transparent,rgba(0,0,0,.3)),url(/Shmily/assets/bg.csZ5PfZW.jpg);background-attachment:fixed;background-size:cover}#features[data-v-3220cd2e]{margin:0 auto;max-width:1000px;background:rgba(255,255,255,.7);padding:0 20px;box-sizing:content-box;border-radius:10px;box-shadow:0 2px 12px #0000001a}#features .row[data-v-3220cd2e]{justify-content:center;display:flex;padding:20px 0;border-bottom:1px solid #aaa}#features .row[data-v-3220cd2e]:nth-child(2n){flex-direction:row-reverse}#features .row:nth-child(2n) .info[data-v-3220cd2e]{text-align:right}#features .row[data-v-3220cd2e]:last-child{border-bottom:none}#features .row .info[data-v-3220cd2e]{flex:1 1 auto;display:flex;align-items:center}#features .row .info .title[data-v-3220cd2e]{font-weight:700;font-size:18px}#features .row .info .content[data-v-3220cd2e]{margin-bottom:20px;width:100%}#features .row .info .content p[data-v-3220cd2e]{font-size:16px;margin:10px 0}#features .row .info .content .tips[data-v-3220cd2e]{font-size:12px;color:#333;font-style:italic}#features .row .info .content a[data-v-3220cd2e]{color:#3451b2;text-decoration:underline;padding:0 5px;font-weight:700;font-style:italic}#features .row .cover[data-v-3220cd2e]{flex:0 0 auto}#features .row .cover img[data-v-3220cd2e]{display:inline-block;width:100%}@media (max-width: 960px){#features .row[data-v-3220cd2e]{flex-direction:column!important}#features .row .info[data-v-3220cd2e],#features .row .cover[data-v-3220cd2e]{text-align:center!important;padding:0!important}} diff --git a/guide/concept.html b/guide/concept.html index ea077b51..73bbc0bd 100644 --- a/guide/concept.html +++ b/guide/concept.html @@ -6,20 +6,20 @@ 理念 | Shmily - + - + -
          Skip to content

          理念

          why

          现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例

          
          +    
          Skip to content

          理念

          why

          现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例

          
           导出数据库 --> 解密数据库 --> 解密资源(图片等) --> 生成 HTML (多为模板直出)

          在此流程中有很多弊端

          • 使用上
            • 大都为 HTML 模板直出,无分页,几百兆的 HTML 不可用
            • 导出的归档数据无法查询, 筛选、评论等. 失去了归档数据的意义
            • 没有图表统计,数据未体现额外价值
            • 显示数据单一, 无法多项目如 QQ Wechat 按时间线合并查看
            • 多次导出的数据 (如 2020 年导出的数据和 2021 年导出的数据) 不能累计查看并分析
          • 程序上
            • 获取数据不完整,只能拿到当前 HTML 所需导出的数据, 无法拿到数据库中完整的额外字段
            • 全流程耦合,如果对产物不满意, 只能从头开始造轮子, 难以从中间(如解密后的数据库)开始
            基于以上问题,Shimly 的亮点在于
          • 使用上

            • Show 基于 Vue 组件化开发,纯前端实现,240M 数据文件浏览搜索无压力
            • 支持筛选、搜索(支持正则)、评论(支持双向引用链接且显示)
            • 支持我能想到所有维度的数据图表统计
            • 支持多种类、多批次数据合并显示与统计
          • 程序上

            • 完整的数据导出、不管是否 Show 有使用,能导尽导,万一别人需要呢
            • 架构 (见下)

          架构

          基于以上问题, 我提出以下架构进行 "前后端" "功能化" 拆分, 减少后人的 轮子

          |---------|----------------------- Get -----------------------|------------------------ Show -------------------------|
           |---------|------- ExportDB ------|----------- ToMsg ---------|------- ModifyServer ------|---------- Web ------------|
           
          @@ -29,8 +29,8 @@
                                                         /                        \            /            \
           MobileQQ: 导出数据库 ->              解密资源(图片等)                       数据预处理                 大数据图表
           
          -更多来源...

          将过程分为 Get(后端采集) 和 Show(前端展示), 并细化为 4 个部分(库), 中间使用 Shimly-Msg 标准格式进行融合

          • Get
            • ExportDB 从设备导出原始数据(库)并解密
            • ToMsg 从解密数据库导出为标准数据 ${Shmily-Msg}, 并解密资源(图片等)
              • 导出的数据为 json 格式, 并尽可能导出所有数据, 不管用没用,历史不嫌多
          • Show
            • ModifyServer 用于手动修改 数据文件添加评论
            • Web 用于最终显示 时间线大数据图表

          让过程变为 4 个部分后

          • 完全解耦, 便于各种二开造轮子, 便于各个阶段变为轮子
          • 使用现代 Web 框架组件化开发,展示上有了更多可能性. 更多 Show 的问答参考 Shmily-Show/docs/Q_A.md
          • 多种类、多批次的 Get 都可以融合在一个 Show 中时间线展示

          问题

          拆分后势必增加运行成本, 我希望通过批处理等脚本方式粘合各个库之间的运行, 尽量做到开箱即用. 也会完善文档让非程序员也能阅读明白, 如有不懂之处, 欢迎 Github 提 issues.

          感想

          花了近 3 年用 JS 写了一大堆的 Get, 我发现还是原生语言开发最方便, 如 MobileQQ 中 Java Serializable问题JS 太难了, 所以以后我还是希望由开源社区贡献与维护 Get, 我会尽力维护 Show 部分.

          数据本身就归属用户, 不提供数据导出的都是耍流氓.

          GPLv3 License.

          - +更多来源...

          将过程分为 Get(后端采集) 和 Show(前端展示), 并细化为 4 个部分(库), 中间使用 Shimly-Msg 标准格式进行融合

          • Get
            • ExportDB 从设备导出原始数据(库)并解密
            • ToMsg 从解密数据库导出为标准数据 ${Shmily-Msg}, 并解密资源(图片等)
              • 导出的数据为 json 格式, 并尽可能导出所有数据, 不管用没用,历史不嫌多
          • Show
            • ModifyServer 用于手动修改 数据文件添加评论
            • Web 用于最终显示 时间线大数据图表

          让过程变为 4 个部分后

          • 完全解耦, 便于各种二开造轮子, 便于各个阶段变为轮子
          • 使用现代 Web 框架组件化开发,展示上有了更多可能性. 更多 Show 的问答参考 Shmily-Show/docs/Q_A.md
          • 多种类、多批次的 Get 都可以融合在一个 Show 中时间线展示

          问题

          拆分后势必增加运行成本, 我希望通过批处理等脚本方式粘合各个库之间的运行, 尽量做到开箱即用. 也会完善文档让非程序员也能阅读明白, 如有不懂之处, 欢迎 Github 提 issues.

          感想

          花了近 3 年用 JS 写了一大堆的 Get, 我发现还是原生语言开发最方便, 如 MobileQQ 中 Java Serializable问题JS 太难了, 所以以后我还是希望由开源社区贡献与维护 Get, 我会尽力维护 Show 部分.

          数据本身就归属用户, 不提供数据导出的都是耍流氓.

          GPLv3 License.

          + \ No newline at end of file diff --git a/guide/other/donation.html b/guide/other/donation.html index 61102033..09f267b6 100644 --- a/guide/other/donation.html +++ b/guide/other/donation.html @@ -6,21 +6,21 @@ 捐赠 | Shmily - + - + -
          Skip to content

          捐赠

          !!! 小熊猫 是世界上最可爱的动物 !!! XD

          https://www.bilibili.com/video/BV1qy4y1s7SJ/


          如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                                      

          请在备注内包含 Shmily 字样
          门票公示


          如果觉得太麻烦,可以付费代劳。淘宝店地址

          贱的那个是 小浣熊, 萌的那个是 小熊猫

          red-panda

          GPLv3 License.

          - +
          Skip to content

          捐赠

          !!! 小熊猫 是世界上最可爱的动物 !!! XD

          https://www.bilibili.com/video/BV1qy4y1s7SJ/


          如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                                      

          请在备注内包含 Shmily 字样
          门票公示


          如果觉得太麻烦,可以付费代劳。淘宝店地址

          贱的那个是 小浣熊, 萌的那个是 小熊猫

          red-panda

          GPLv3 License.

          + \ No newline at end of file diff --git a/guide/other/donation_list.html b/guide/other/donation_list.html index 0dfb72fb..3745190d 100644 --- a/guide/other/donation_list.html +++ b/guide/other/donation_list.html @@ -6,21 +6,21 @@ Shmily | Shmily - + - + -
          Skip to content
          门票公示

          TIP

          请在备注内包含 Shmily 字样

          如有遗漏,请发送截图至 i@lqzh.me


          时间姓名金额来源
          2023/09/03 17:12:36*门10Wechat
          2023/11/02 14:56:02**勇15Alipay
          2023/11/18 14:51:42*翔10Alipay
          2023/11/18 17:08:15*畅11.11Alipay
          2023/11/19 01:39:48A*s5Wechat
          2023/11/22 10:17:50*羊5.61Wechat
          2023/11/24 19:18:28*生20Wechat

          GPLv3 License.

          - +
          Skip to content
          门票公示

          TIP

          请在备注内包含 Shmily 字样

          如有遗漏,请发送截图至 i@lqzh.me


          时间姓名金额来源
          2023/09/03 17:12:36*门10Wechat
          2023/11/02 14:56:02**勇15Alipay
          2023/11/18 14:51:42*翔10Alipay
          2023/11/18 17:08:15*畅11.11Alipay
          2023/11/19 01:39:48A*s5Wechat
          2023/11/22 10:17:50*羊5.61Wechat
          2023/11/24 19:18:28*生20Wechat

          GPLv3 License.

          + \ No newline at end of file diff --git a/guide/other/thanks.html b/guide/other/thanks.html index 21a5c7f5..43cbbb97 100644 --- a/guide/other/thanks.html +++ b/guide/other/thanks.html @@ -6,21 +6,21 @@ 感谢 | Shmily - + - + - - + + \ No newline at end of file diff --git a/guide/setup-runtime/Q&A-detail/cannot-find-module.html b/guide/setup-runtime/Q&A-detail/cannot-find-module.html index bfb3d7e2..34b00bcc 100644 --- a/guide/setup-runtime/Q&A-detail/cannot-find-module.html +++ b/guide/setup-runtime/Q&A-detail/cannot-find-module.html @@ -6,20 +6,20 @@ Cannot find module ‘xxxxxx’ | Shmily - + - + -
          Skip to content

          DANGER

          Cannot find module ‘xxxxxx’

          报错详情
          Error: Cannot find module 'fs-extra'
          +    
          Skip to content

          DANGER

          Cannot find module ‘xxxxxx’

          报错详情
          Error: Cannot find module 'fs-extra'
           Require stack:
           - D:\transfer_redmi\AndroidQQ_MIUI\Shmily-Get-MobileQQ-Andriod\decode\utils\db.js
           - D:\transfer_redmi\AndroidQQ_MIUI\Shmily-Get-MobileQQ-Andriod\tools\exportTable.js
          @@ -40,8 +40,8 @@
             ]
           }
           
          -Node.js v18.14.0
          解决办法

          nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

          GPLv3 License.

          - +Node.js v18.14.0
          解决办法

          nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

          GPLv3 License.

          + \ No newline at end of file diff --git a/guide/setup-runtime/Q&A.html b/guide/setup-runtime/Q&A.html index 60da2bd7..b70c1d53 100644 --- a/guide/setup-runtime/Q&A.html +++ b/guide/setup-runtime/Q&A.html @@ -6,20 +6,20 @@ Q & A | Shmily - + - + -
          Skip to content

          Q & A

          如需新增, 请新建 docs/guide/setup-runtime/Q&A-detail/{新问题}.md

          内容参考模板 docs/guide/setup-runtime/Q&A-detail/template.md.tpl

          常见问题

          by @appinn.com F124nk1e

          DANGER

          +
          Skip to content

          Q & A

          如需新增, 请新建 docs/guide/setup-runtime/Q&A-detail/{新问题}.md

          内容参考模板 docs/guide/setup-runtime/Q&A-detail/template.md.tpl

          常见问题

          by @appinn.com F124nk1e

          DANGER

          Cannot find module ‘xxxxxx’

          报错详情 @@ -48,8 +48,8 @@
          解决办法

          nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

          -

          GPLv3 License.

          - +
+ \ No newline at end of file diff --git a/guide/setup-runtime/docker.html b/guide/setup-runtime/docker.html index 02c688d5..f53be7f9 100644 --- a/guide/setup-runtime/docker.html +++ b/guide/setup-runtime/docker.html @@ -6,21 +6,21 @@ 开始 docker | Shmily - + - + -
Skip to content

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成

GPLv3 License.

- +
Skip to content

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/explain.html b/guide/setup-runtime/explain.html index 6fcec0c4..1f177bea 100644 --- a/guide/setup-runtime/explain.html +++ b/guide/setup-runtime/explain.html @@ -6,21 +6,21 @@ 说明 | Shmily - + - + -
Skip to content

说明

这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行

每个项目有自己所需要的运行时, 按照项目文档进行即可.

不是说这里的运行时你需要全部安装

GPLv3 License.

- +
Skip to content

说明

这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行

每个项目有自己所需要的运行时, 按照项目文档进行即可.

不是说这里的运行时你需要全部安装

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/java.html b/guide/setup-runtime/java.html index 5bd233ac..413a619d 100644 --- a/guide/setup-runtime/java.html +++ b/guide/setup-runtime/java.html @@ -6,21 +6,21 @@ 开始 java 项目 | Shmily - + - + -
Skip to content

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

GPLv3 License.

- +
Skip to content

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/nodejs-dependencies.html b/guide/setup-runtime/nodejs-dependencies.html new file mode 100644 index 00000000..a70c4b59 --- /dev/null +++ b/guide/setup-runtime/nodejs-dependencies.html @@ -0,0 +1,35 @@ + + + + + + 安装 nodejs 项目依赖 | Shmily + + + + + + + + + + + + + + + + +
Skip to content

安装 nodejs 项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
+
+-\
+  - node_modules
+    - .bin
+    - ...
+  - package.json
+  - README.md
+  - ...

从本地安装

  • 命令行打开项目目录

    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd
  • 执行命令安装依赖 shell npm i

    WARNING

    如果安装以来过程中大量报错,特别是有 node-gyp 字样的,建议使用 [从项目下载] 的方式解决

其他的参考报错提示处理 :::

GPLv3 License.

+ + + + \ No newline at end of file diff --git a/guide/setup-runtime/nodejs-start.html b/guide/setup-runtime/nodejs-start.html new file mode 100644 index 00000000..9f0c7d67 --- /dev/null +++ b/guide/setup-runtime/nodejs-start.html @@ -0,0 +1,38 @@ + + + + + + 启动 nodejs 程序 | Shmily + + + + + + + + + + + + + + + +
Skip to content

启动 nodejs 程序

WARNING

启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

优先级从高到低

  • 按照项目说明启动程序 (一般为 npm run xxx)

  • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

    json
    {
    +    ...
    +    "scripts": {
    +        "dev": "vitepress dev docs",
    +        "build": "vitepress build docs",
    +        "serve": "vitepress serve docs"
    +    },
    +    ...
    +}
    +
    +若 `script` 中有多个脚本名称(如上图), 一般来说,`build` 代表生产(正式),`dev` 代表测试
    +
    +执行 `npm run build` 即可
  • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件, 执行:

    shell
        node index.js

GPLv3 License.

+ + + + \ No newline at end of file diff --git a/guide/setup-runtime/nodejs.html b/guide/setup-runtime/nodejs.html index a8f7144d..f1ebe136 100644 --- a/guide/setup-runtime/nodejs.html +++ b/guide/setup-runtime/nodejs.html @@ -3,41 +3,24 @@ - 开始 Nodejs 项目 | Shmily + 安装 nodejs | Shmily - + - - + -
Skip to content

开始 Nodejs 项目

1. 安装 nodejs

  • 查看 package.jsonengines 字段获取项目所需 nodejs 版本
    • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
  • https://nodejs.org/dist/ 下载相应版本的 nodejs
    • Windows 平台注意事项
      • 请下载 .msi 后缀的标准安装程序(如 node-v99.99.9-x64.msi), 以下均不推荐
        • node-v99.9.9-win-x64.7z / node-v99.9.9-win-x64.zip 为绿色版, 需要自己配置 Path 环境变量
        • ./win-x64/node.exe 为绿色单文件
  • 安装过程,选项全部默认

2. 下载项目源代码

3. 安装项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

3.1 从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
-
--\
-  - node_modules
-    - .bin
-    - ...
-  - package.json
-  - README.md
-  - ...

3.2 从本地安装

  • 命令行打开项目目录

    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd
  • 执行命令安装依赖

    shell
    npm i

WARNING

如果安装以来过程中大量报错,特别是有 node-gyp 字样的,建议使用 [3.1 从项目下载] 的方式解决

其他的参考报错提示处理

4. (可选)启动程序

项目一般会说明启动方式(npm run xxxx), 如果没有, 可以参考以下

WARNING

项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

  • 按照项目说明启动程序

  • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

    json
    {
    -    ...
    -    "scripts": {
    -        "dev": "vitepress dev docs",
    -        "build": "vitepress build docs",
    -        "serve": "vitepress serve docs"
    -    },
    -    ...
    -}

    INFO

    script 中有多个脚本名称(如上图), 一般来说,build 代表生产(正式),dev 代表测试, 执行 npm run build 即可

  • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件

    shell
        node index.js

GPLv3 License.

- +
Skip to content

安装 nodejs

  • 查看 package.jsonengines 字段获取项目所需 nodejs 版本

    • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
  • https://nodejs.org/dist/ 下载相应版本的 nodejs

    • Windows 平台
      • (推荐) node-v99.99.9-x64.msi 标准安装程序
      • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
      • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
  • 安装过程,选项全部默认

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/php.html b/guide/setup-runtime/php.html index 48669099..cede4629 100644 --- a/guide/setup-runtime/php.html +++ b/guide/setup-runtime/php.html @@ -6,21 +6,21 @@ 开始 PHP 项目 | Shmily - + - + -
Skip to content

开始 PHP 项目

  1. 官网 下载 PHP

    Windows 下载 VS16 x64 Thread Safe .zip 就行了

  2. 解压 .zipD:\php
  3. 确认 D:\php\php.exe 存在
  4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
  5. 选择 高级 环境变量
  6. 选择 Path,新增一行 D:\php
  7. 确认关闭窗口

php

GPLv3 License.

- +
Skip to content

开始 PHP 项目

  1. 官网 下载 PHP

    Windows 下载 VS16 x64 Thread Safe .zip 就行了

  2. 解压 .zipD:\php
  3. 确认 D:\php\php.exe 存在
  4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
  5. 选择 高级 环境变量
  6. 选择 Path,新增一行 D:\php
  7. 确认关闭窗口

php

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/python.html b/guide/setup-runtime/python.html index 505627e1..a9126287 100644 --- a/guide/setup-runtime/python.html +++ b/guide/setup-runtime/python.html @@ -6,22 +6,22 @@ 开始 Python 项目 | Shmily - + - + -
Skip to content

开始 Python 项目

1. 安装 python

  • 进入官网下载

  • 勾选 Add python.exe to PATH

    python add path

  • 全默认 下一步 完成

2. 安装项目依赖

  • 命令行打开项目目录
    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

    • 执行命令安装依赖

    shell
    pip install -r requirements.txt

3.启动程序

WARNING

项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

  • 按照项目说明启动程序

  • 若无说明, 一般 main.py 为入口文件

    shell
        python main.py

GPLv3 License.

- +
Skip to content

开始 Python 项目

1. 安装 python

  • 进入官网下载

  • 勾选 Add python.exe to PATH

    python add path

  • 全默认 下一步 完成

2. 安装项目依赖

  • 命令行打开项目目录
    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

    • 执行命令安装依赖

    shell
    pip install -r requirements.txt

3.启动程序

WARNING

项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

  • 按照项目说明启动程序

  • 若无说明, 一般 main.py 为入口文件

    shell
        python main.py

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/snippets/open_cmd.html b/guide/setup-runtime/snippets/open_cmd.html index 21f86600..75239423 100644 --- a/guide/setup-runtime/snippets/open_cmd.html +++ b/guide/setup-runtime/snippets/open_cmd.html @@ -6,22 +6,22 @@ Shmily | Shmily - + - + -
Skip to content
  • 命令行打开项目目录
    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

GPLv3 License.

- +
Skip to content
  • 命令行打开项目目录
    • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/begin.html b/guide/use/begin.html index 9c24b05f..1faab591 100644 --- a/guide/use/begin.html +++ b/guide/use/begin.html @@ -6,7 +6,7 @@ 开始吧 | Shmily - + @@ -14,14 +14,14 @@ - + -
Skip to content

开始吧

概述

对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

学前班 ( 如何开始一个项目 )

大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

实操

Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

在每个章节最后均有实操示例

如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

学前班教程

1. 下载源码

在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

实操

打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\Shmily-Get-QQ-PC_MHT-main

2. 安装项目运行时环境

什么是运行时环境?

顾名思义: 运行这个 "东西" 所需要的 "环境"

例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
那么运行 风景.mp4 所需要环境就是 视频播放器

下载的 源码 也需要对应的 (运行时)环境

项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

2.1 如何判断项目的 编程语言

2.1.1 按照项目的特征(推荐)
编程语言特征
nodejspackage.json 文件, 或大量 .js .ts 后缀文件
pythonrequirements.txt 文件, 或大量 .py 后缀文件
java大量 .java 后缀文件
2.1.2 Github 会自动标注主要语言(并不准确)

what-languages

2.2 根据 编程语言 安装对应的 运行时

编程语言安装运行时
nodejs教程
python教程
java教程
php教程
docker教程

实操

打开 D:\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
按照 nodejs 教程,
下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
在项目目录 D:\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

3. 使用

参照具体项目中的文档继续

实操

打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

  1. 安装 node 环境

    上述 2.2 已经安装

  2. 安装 php 环境

    参照2.2 安装 php 环境

  3. 导出的 .mht 文件放入 input

    从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

    // 文件夹结构
    +    
    Skip to content

    开始吧

    概述

    对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

    若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

    所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

    因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

    基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

    学前班 ( 如何开始一个项目 )

    大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

    实操

    Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

    在每个章节最后均有实操示例

    如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

    学前班教程

    1. 下载源码

    在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

    实操

    打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
    下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\Shmily-Get-QQ-PC_MHT-main

    2. 安装项目运行时环境

    什么是运行时环境?

    顾名思义: 运行这个 "东西" 所需要的 "环境"

    例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
    那么运行 风景.mp4 所需要环境就是 视频播放器

    下载的 源码 也需要对应的 (运行时)环境

    项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

    2.1 如何判断项目的 编程语言

    2.1.1 按照项目的特征(推荐)
    编程语言特征
    nodejspackage.json 文件, 或大量 .js .ts 后缀文件
    pythonrequirements.txt 文件, 或大量 .py 后缀文件
    java大量 .java 后缀文件
    2.1.2 Github 会自动标注主要语言(并不准确)

    what-languages

    2.2 根据 编程语言 安装对应的 运行时

    编程语言安装运行时
    nodejs教程
    python教程
    java教程
    php教程
    docker教程

    实操

    打开 D:\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
    按照 nodejs 教程,
    下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
    在项目目录 D:\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

    3. 使用

    参照具体项目中的文档继续

    实操

    打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

    1. 安装 node 环境

      上述 2.2 已经安装

    2. 安装 php 环境

      参照2.2 安装 php 环境

    3. 导出的 .mht 文件放入 input

      从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

      // 文件夹结构
       
       -\
         - node_modules
      @@ -42,8 +42,8 @@
           - ...                               <-- 其他过程文件及日志
         - index.js
         - package.json
      -  - README.md

    4. 其他说明

    以上是一个 Github 项目运行的完整流程

    以通过 Shmily 导出 电脑QQ聊天记录 为例, 至少需要运行两个 Github 项目,

    1. Get 获取数据, https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT

      得到 数据文件(data)资源文件(QQ_PC_MHT-12345678-20230101.json)

    2. Show 显示数据, https://github.com/lqzhgood/Shmily-Show/

      使用 Get 得到的 "文件" 生成最后的 "显示" 结果

    你可通过多个 Get 获取多个 "文件", 同时导入 Show 获得集中 "显示" 结果

    视频教程

    施工中....

    开始项目

    大致步骤

    Get(获取数据) ---> Merger(合并数据) ---> Show(展示数据)

    TIP

    大多数情况下 Merger(合并数据) 可以跳过

    1. Get-获取数据

    参考 Get 文档

    2. Merger-合并数据 (可选)

    参考 Merger 文档

    3. Show-展示数据

    参考 Show 文档

    GPLv3 License.

    - + - README.md

4. 其他说明

以上是一个 Github 项目运行的完整流程

以通过 Shmily 导出 电脑QQ聊天记录 为例, 至少需要运行两个 Github 项目,

  1. Get 获取数据, https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT

    得到 数据文件(data)资源文件(QQ_PC_MHT-12345678-20230101.json)

  2. Show 显示数据, https://github.com/lqzhgood/Shmily-Show/

    使用 Get 得到的 "文件" 生成最后的 "显示" 结果

你可通过多个 Get 获取多个 "文件", 同时导入 Show 获得集中 "显示" 结果

视频教程

施工中....

开始项目

大致步骤

Get(获取数据) ---> Merger(合并数据) ---> Show(展示数据)

TIP

大多数情况下 Merger(合并数据) 可以跳过

1. Get-获取数据

参考 Get 文档

2. Merger-合并数据 (可选)

参考 Merger 文档

3. Show-展示数据

参考 Show 文档

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/data.html b/guide/use/data.html index df803e51..8f114e3b 100644 --- a/guide/use/data.html +++ b/guide/use/data.html @@ -6,21 +6,21 @@ 资源文件 | Shmily - + - + -
Skip to content

资源文件

路径说明

资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

其中 $rootPath 可以在 Get 项目的 config.js 配置.

修改补充

如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

评论资源

评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

GPLv3 License.

- +
Skip to content

资源文件

路径说明

资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

其中 $rootPath 可以在 Get 项目的 config.js 配置.

修改补充

如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

评论资源

评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/draft.html b/guide/use/draft.html index 8c052166..c478bb12 100644 --- a/guide/use/draft.html +++ b/guide/use/draft.html @@ -6,22 +6,22 @@ Shmily | Shmily - + - + -
Skip to content

2. 安装项目运行时环境

根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

也可以按照下面列出的特性, 安装对应语言的运行时

  • nodejs (项目中有 package.json 文件)

  • python (大量 .py 后缀文件)

  • java (大量 .java 后缀文件)

GPLv3 License.

- +
Skip to content

2. 安装项目运行时环境

根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

也可以按照下面列出的特性, 安装对应语言的运行时

  • nodejs (项目中有 package.json 文件)

  • python (大量 .py 后缀文件)

  • java (大量 .java 后缀文件)

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/get.html b/guide/use/get.html index bcf05146..7e2a6a6f 100644 --- a/guide/use/get.html +++ b/guide/use/get.html @@ -6,20 +6,20 @@ Get | Shmily - + - + -
Skip to content

Get

支持列表 中选择所需项目, 按照相应的文档操作

支持列表

下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

产物结构

最终可以在输出目录(一般是 dist)获得 数据文件资源文件

// 示例
+    
Skip to content

Get

支持列表 中选择所需项目, 按照相应的文档操作

支持列表

下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

产物结构

最终可以在输出目录(一般是 dist)获得 数据文件资源文件

// 示例
 
 - dist
     - MobileQQ-lqzh-20230101.json  <--- 数据文件
@@ -35,8 +35,8 @@
       - XXXX.json
  • 数据文件

    Shmily-Msg 格式的 JSON 文件,内容是从数据(库)导出的消息内容。

    给开发者的一些建议
    -   尽量导出消息相关的所有数据而非所需数据, 这样会给其他人带来帮助, 也便于丰富更多信息
     -   尽量补充完整信息, 如 自定义表情, 补充 表情包名称 与 描述, 对于统计来说更准确全面
     
  • 资源文件

    消息相关的静态资源文件,如图片、表情、视频等

    给开发者的一些建议
    -   对于外链的资源,建议能爬下来的资源(如图片)都本地化, 过个几年这些 URL 都打不开了
    -

GPLv3 License.

- +

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/merger.html b/guide/use/merger.html index aae45c3f..e299854a 100644 --- a/guide/use/merger.html +++ b/guide/use/merger.html @@ -6,21 +6,21 @@ Merger | Shmily - + - + -
Skip to content

Merger

用来对 不同来源(Get), 相同内容数据文件 合并去重

如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

可以通过此工具去重 2013-2015 年的部分.

DANGER

!!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

支持列表

  • SMS CallLog 短信与通话记录

GPLv3 License.

- +
Skip to content

Merger

用来对 不同来源(Get), 相同内容数据文件 合并去重

如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

可以通过此工具去重 2013-2015 年的部分.

DANGER

!!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

支持列表

  • SMS CallLog 短信与通话记录

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/msg/custom.html b/guide/use/msg/custom.html index c0fb787b..9ccfc582 100644 --- a/guide/use/msg/custom.html +++ b/guide/use/msg/custom.html @@ -6,20 +6,20 @@ 自定义 | Shmily - + - + -
Skip to content

自定义

  • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

  • A: 按以下步骤即可

    简单模式

    适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

    此方式不利于数据统计

    js
        {
    +    
    Skip to content

    自定义

    • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

    • A: 按以下步骤即可

      简单模式

      适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

      此方式不利于数据统计

      js
          {
               // 通用字段都是必填 参考 [标准]
               "source": "SMS",
               "content": "你好,钉钉", // 用于搜索
      @@ -40,8 +40,8 @@
           }
       
           $Dev: {} // 开发中需要用到的数据,Show 生成数据时会被删除
      -}
      1. 标准 格式之外,将数据放入 $source
      2. Shmily-Show 项目 memoryweb/src/components/Msg/source 下新增前端组件用于显示数据
        • 如果您对前端不熟悉,可以在 issue 中提出并提供样本 Msg 我来代劳~

    GPLv3 License.

    - +}
    1. 标准 格式之外,将数据放入 $source
    2. Shmily-Show 项目 memoryweb/src/components/Msg/source 下新增前端组件用于显示数据
      • 如果您对前端不熟悉,可以在 issue 中提出并提供样本 Msg 我来代劳~

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/msg/other/emotion.html b/guide/use/msg/other/emotion.html index 74680f2b..a82cb0ea 100644 --- a/guide/use/msg/other/emotion.html +++ b/guide/use/msg/other/emotion.html @@ -6,20 +6,20 @@ 表情 | Shmily - + - + -
Skip to content

表情

如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

约定

keyvalue举例备注
packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

简单模式 (从 HTML 字段统计)

js
{
+    
Skip to content

表情

如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

约定

keyvalue举例备注
packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

简单模式 (从 HTML 字段统计)

js
{
     ...
     html: "我是简单的一个表情,<img title='[阿狸过新年-饺子]' alt='[阿狸过新年-饺子]' src='./data/qq-android/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif' />"
     content: "我是简单的一个表情,[阿狸过新年-饺子]"
@@ -37,8 +37,8 @@
         "rootPath": 'qq-android-lqzh-20230101'
         ...
      }
-}

可以参考 wechat 的函数进行统计

新类型

如果是新的 Get 类型,需要在 这里 补充统计函数

表情数据的一些说明

正向导出

Wechat、MobileQQ 可以直接从数据库中获取表情的 packNamedesc 等值,这样的就很简单,直接导出即可。

反向匹配

如 PC-QQ 无法导出表情类型的消息,更无法获取 packNamedesc,所以所有表情都被视为图片类型被导出

这种情况可以自己收集表情包,根据表情的 MD5 去匹配导出的图片,从而修正图片类型并补充 packNamedesc

这是个苦力活,可以参考 Shmily-Get-QQ-PC-MHT 的表情文件集合,和 Show-Modify-msg 辅助的实现。

GPLv3 License.

- +}

可以参考 wechat 的函数进行统计

新类型

如果是新的 Get 类型,需要在 这里 补充统计函数

表情数据的一些说明

正向导出

Wechat、MobileQQ 可以直接从数据库中获取表情的 packNamedesc 等值,这样的就很简单,直接导出即可。

反向匹配

如 PC-QQ 无法导出表情类型的消息,更无法获取 packNamedesc,所以所有表情都被视为图片类型被导出

这种情况可以自己收集表情包,根据表情的 MD5 去匹配导出的图片,从而修正图片类型并补充 packNamedesc

这是个苦力活,可以参考 Shmily-Get-QQ-PC-MHT 的表情文件集合,和 Show-Modify-msg 辅助的实现。

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/msg/schema.html b/guide/use/msg/schema.html index 6adf39c8..e2125ac7 100644 --- a/guide/use/msg/schema.html +++ b/guide/use/msg/schema.html @@ -6,20 +6,20 @@ 数据文件-Msg | Shmily - + - + -
Skip to content

数据文件-Msg

为了 GetShow 的良好沟通, 所以需要标准化数据格式

建议开发 Get 时按以下数据标准导出.

  • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

v2.0

json
[{
+    
Skip to content

数据文件-Msg

为了 GetShow 的良好沟通, 所以需要标准化数据格式

建议开发 Get 时按以下数据标准导出.

  • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

v2.0

json
[{
 
     ⬇⬇⬇⬇⬇⬇  通用字段 ⬇⬇⬇⬇⬇⬇⬇
 
@@ -115,8 +115,8 @@
     "id": "camera.json_2009-09-25_10-33-02_g_11e351_1",
     // 所有消息合并后, 按时间线排序第几条消息
     "index": 123
-}]

因为项目持续了近 3 年, 所以我写的很多早期 Get 并未遵循以上标准, 我会慢慢重构的.

GPLv3 License.

- +}]

因为项目持续了近 3 年, 所以我写的很多早期 Get 并未遵循以上标准, 我会慢慢重构的.

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/msg/template/index.html b/guide/use/msg/template/index.html index e9cd9407..10032ec4 100644 --- a/guide/use/msg/template/index.html +++ b/guide/use/msg/template/index.html @@ -6,21 +6,21 @@ 数据文件-Msg 示例 | Shmily - + - + -
Skip to content

数据文件-Msg 示例

示例有以下几种查看方式

源码 (推荐)

最及时最可靠

Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

Demo

更新不及时

js
[]

Demo 链接 筛选查看

from demo web

GPLv3 License.

- +
Skip to content

数据文件-Msg 示例

示例有以下几种查看方式

源码 (推荐)

最及时最可靠

Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

Demo

更新不及时

js
[]

Demo 链接 筛选查看

from demo web

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/use/show.html b/guide/use/show.html index 2b265372..94715515 100644 --- a/guide/use/show.html +++ b/guide/use/show.html @@ -6,21 +6,21 @@ Show | Shmily - + - + -
Skip to content

GPLv3 License.

- +
Skip to content

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/what-is.html b/guide/what-is.html index fffa6d9a..60a07a75 100644 --- a/guide/what-is.html +++ b/guide/what-is.html @@ -6,21 +6,21 @@ 这是啥 | Shmily - + - + -
Skip to content

这是啥

一个悲伤的故事

我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

  • QQ 微信 等记录能融合, 并用时间线查看
  • 支持搜索过滤查询
  • 可以给消息评论
  • 有图表分析

然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

少啰嗦,先看Demo

 

最后

不支持用户数据导出的公司都是耍流氓~

Adun Toridas

今天,我们将夺回我们的家园,夺回我们的遗产!

GPLv3 License.

- +
Skip to content

这是啥

一个悲伤的故事

我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

  • QQ 微信 等记录能融合, 并用时间线查看
  • 支持搜索过滤查询
  • 可以给消息评论
  • 有图表分析

然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

少啰嗦,先看Demo

 

最后

不支持用户数据导出的公司都是耍流氓~

Adun Toridas

今天,我们将夺回我们的家园,夺回我们的遗产!

GPLv3 License.

+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index e42d1264..f26b6cca 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"guide_concept.md":"IHQfas8f","guide_use_msg_schema.md":"hj6g7Pxe","guide_other_thanks.md":"dnoZ8w4M","guide_what-is.md":"uVlmkiHd","guide_use_show.md":"I4t-UNQt","guide_use_merger.md":"002tUzeN","index.md":"k9IOQFOA","guide_use_data.md":"cCg4D9zG","guide_setup-runtime_php.md":"cAoG4XKu","guide_setup-runtime_q_a.md":"BQLsdHyz","guide_setup-runtime_docker.md":"TlM1aZdP","guide_setup-runtime_java.md":"kZU9JTX9","guide_use_msg_custom.md":"a3JyWp7K","guide_use_get.md":"WXq5eihI","guide_setup-runtime_q_a-detail_cannot-find-module.md":"g0PfTavC","guide_use_msg_other_emotion.md":"r91bxRNb","guide_setup-runtime_nodejs.md":"VqjErHCE","guide_setup-runtime_snippets_open_cmd.md":"MNLcYIqJ","guide_other_donation_list.md":"OZovLmHg","guide_setup-runtime_explain.md":"ujK0SBQl","guide_use_draft.md":"8qr2k-HI","guide_setup-runtime_python.md":"ICTBAasY","guide_other_donation.md":"I4vLgMSz","guide_use_begin.md":"8Scwmk0Z","guide_use_msg_template_index.md":"qOz7Ztvc"} +{"guide_use_msg_other_emotion.md":"kE58Jl4Q","guide_other_thanks.md":"WJWpw_6S","guide_setup-runtime_explain.md":"RoNHmt_e","guide_use_show.md":"QdgYx_gr","guide_use_msg_custom.md":"oA90u8Mp","guide_setup-runtime_java.md":"vDak_eq0","guide_what-is.md":"GIPQWGld","guide_use_draft.md":"U0M1EoPT","guide_setup-runtime_nodejs-dependencies.md":"sCQ78Ugz","guide_setup-runtime_nodejs.md":"V8C2J_oB","guide_use_merger.md":"IF-PKyBA","guide_use_data.md":"m9x35CC4","guide_concept.md":"ULxRsOWz","guide_setup-runtime_snippets_open_cmd.md":"B1kl9riq","guide_other_donation_list.md":"Ka0DKJpc","guide_setup-runtime_q_a-detail_cannot-find-module.md":"_Aiomy9D","guide_setup-runtime_nodejs-start.md":"-8Pba3jg","guide_setup-runtime_docker.md":"uB7GSjfi","guide_use_begin.md":"-IE3bnoC","index.md":"W10sxjIN","guide_setup-runtime_python.md":"8FDDOhhH","guide_other_donation.md":"04WM6cQL","guide_setup-runtime_php.md":"mnwzyq2x","guide_setup-runtime_q_a.md":"uS1R8K3v","guide_use_get.md":"E-JGNeEC","guide_use_msg_schema.md":"ay7tUOLw","guide_use_msg_template_index.md":"ghJFE9Bk"} diff --git a/index.html b/index.html index 90eaf47d..cc407a2f 100644 --- a/index.html +++ b/index.html @@ -6,21 +6,21 @@ Shmily | Shmily - + - + -
Skip to content

SHMILY

历史的归档

QQ、Wechat、SMS、CallLog、Email……

icon

类型多 平台全

QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型

* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!

以前导出的能合并

支持将以前导出的数据和现在合并

历史不再断代

* 如2013年导出记录(2000-2013)可以
和2020年导出记录(2007-2020)合并
在同一时间线查看

支持搜索和筛选

关键词(支持正则)搜索

* 搜索支持正则,人物支持分组

* 极致优化,240M数据复杂搜索100ms内出结果

还有评论和引用

时间的长河有感而发?添加一条评论或打上一个Tag吧

引用的消息也会转化为双向链接可快速跳转

* 评论也可以搜索哦

图表与统计

不想看看各种维度的大数据么?

* 评论里的 Tag 也有统计,开心的次数不能少

开发

深入底层优化,240M数据纯前端静态处理

你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

标准化、模块化、组件化,开发更容易

数据字段全导出,总有你能用上的

数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

GPLv3 License.

- +
Skip to content

SHMILY

历史的归档

QQ、Wechat、SMS、CallLog、Email……

icon

类型多 平台全

QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型

* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!

以前导出的能合并

支持将以前导出的数据和现在合并

历史不再断代

* 如2013年导出记录(2000-2013)可以
和2020年导出记录(2007-2020)合并
在同一时间线查看

支持搜索和筛选

关键词(支持正则)搜索

* 搜索支持正则,人物支持分组

* 极致优化,240M数据复杂搜索100ms内出结果

还有评论和引用

时间的长河有感而发?添加一条评论或打上一个Tag吧

引用的消息也会转化为双向链接可快速跳转

* 评论也可以搜索哦

图表与统计

不想看看各种维度的大数据么?

* 评论里的 Tag 也有统计,开心的次数不能少

开发

深入底层优化,240M数据纯前端静态处理

你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

标准化、模块化、组件化,开发更容易

数据字段全导出,总有你能用上的

数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

GPLv3 License.

+ \ No newline at end of file