diff --git a/.vitepress/dist/404.html b/.vitepress/dist/404.html new file mode 100644 index 0000000..388c5fb --- /dev/null +++ b/.vitepress/dist/404.html @@ -0,0 +1,21 @@ + + + + + + 404 | Beacon SDK + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/README.html b/.vitepress/dist/README.html new file mode 100644 index 0000000..252ecd3 --- /dev/null +++ b/.vitepress/dist/README.html @@ -0,0 +1,24 @@ + + + + + + beacon-docs | Beacon SDK + + + + + + + + + + + + + +
Skip to content

beacon-docs

Repository for public documentation of Beacon SDK.

Install dependencies

npm install

Run locally

The docs:dev script will start a local dev server with instant hot updates. Run it with the following command:

npm run docs:dev
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/assets/README.md.MDy2-9Hv.js b/.vitepress/dist/assets/README.md.MDy2-9Hv.js new file mode 100644 index 0000000..b7fda9e --- /dev/null +++ b/.vitepress/dist/assets/README.md.MDy2-9Hv.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a3 as s}from"./chunks/framework.D5qxx6u8.js";const b=JSON.parse('{"title":"beacon-docs","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1717792017000}'),n={name:"README.md"},o=s('

beacon-docs

Repository for public documentation of Beacon SDK.

Install dependencies

npm install

Run locally

The docs:dev script will start a local dev server with instant hot updates. Run it with the following command:

npm run docs:dev
',7),l=[o];function c(i,d,p,r,h,u){return t(),e("div",null,l)}const m=a(n,[["render",c]]);export{b as __pageData,m as default}; diff --git a/.vitepress/dist/assets/README.md.MDy2-9Hv.lean.js b/.vitepress/dist/assets/README.md.MDy2-9Hv.lean.js new file mode 100644 index 0000000..a7bdec1 --- /dev/null +++ b/.vitepress/dist/assets/README.md.MDy2-9Hv.lean.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a3 as s}from"./chunks/framework.D5qxx6u8.js";const b=JSON.parse('{"title":"beacon-docs","description":"","frontmatter":{},"headers":[],"relativePath":"README.md","filePath":"README.md","lastUpdated":1717792017000}'),n={name:"README.md"},o=s("",7),l=[o];function c(i,d,p,r,h,u){return t(),e("div",null,l)}const m=a(n,[["render",c]]);export{b as __pageData,m as default}; diff --git a/.vitepress/dist/assets/advanced.ro_Mb-JH.png b/.vitepress/dist/assets/advanced.ro_Mb-JH.png new file mode 100644 index 0000000..72491f2 Binary files /dev/null and b/.vitepress/dist/assets/advanced.ro_Mb-JH.png differ diff --git a/.vitepress/dist/assets/app.QUVZUM3Z.js b/.vitepress/dist/assets/app.QUVZUM3Z.js new file mode 100644 index 0000000..ae543b6 --- /dev/null +++ b/.vitepress/dist/assets/app.QUVZUM3Z.js @@ -0,0 +1 @@ +import{U as o,a4 as p,a5 as u,a6 as l,a7 as c,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,d as P,u as v,y,x as C,ae as b,af as w,ag as E,ah as R}from"./chunks/framework.D5qxx6u8.js";import{t as S}from"./chunks/theme.DOJLXmKO.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),_=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),E(),s.setup&&s.setup(),()=>R(s.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function x(){return h(_)}function D(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/.vitepress/dist/assets/beginner.2RvY_hqf.png b/.vitepress/dist/assets/beginner.2RvY_hqf.png new file mode 100644 index 0000000..15b9299 Binary files /dev/null and b/.vitepress/dist/assets/beginner.2RvY_hqf.png differ diff --git a/.vitepress/dist/assets/changelog_version1.0.0.md.C_EDnW_t.js b/.vitepress/dist/assets/changelog_version1.0.0.md.C_EDnW_t.js new file mode 100644 index 0000000..40b1856 --- /dev/null +++ b/.vitepress/dist/assets/changelog_version1.0.0.md.C_EDnW_t.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as i,a3 as t}from"./chunks/framework.D5qxx6u8.js";const f=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"changelog/version1.0.0.md","filePath":"changelog/version1.0.0.md","lastUpdated":1717792017000}'),r={name:"changelog/version1.0.0.md"},l=t('

Changelog

Version 1.0.0

Release Date: 2022-03-17

New Features

Improvements

Bug Fixes

Version 2.0.0

Release Date: 2023-03-17

New Features

Improvements

Bug Fixes

',17),o=[l];function n(s,h,d,u,c,m){return i(),a("div",null,o)}const g=e(r,[["render",n]]);export{f as __pageData,g as default}; diff --git a/.vitepress/dist/assets/changelog_version1.0.0.md.C_EDnW_t.lean.js b/.vitepress/dist/assets/changelog_version1.0.0.md.C_EDnW_t.lean.js new file mode 100644 index 0000000..2c650d0 --- /dev/null +++ b/.vitepress/dist/assets/changelog_version1.0.0.md.C_EDnW_t.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as i,a3 as t}from"./chunks/framework.D5qxx6u8.js";const f=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"changelog/version1.0.0.md","filePath":"changelog/version1.0.0.md","lastUpdated":1717792017000}'),r={name:"changelog/version1.0.0.md"},l=t("",17),o=[l];function n(s,h,d,u,c,m){return i(),a("div",null,o)}const g=e(r,[["render",n]]);export{f as __pageData,g as default}; diff --git a/.vitepress/dist/assets/changelog_version2.0.0.md.B01QjFuf.js b/.vitepress/dist/assets/changelog_version2.0.0.md.B01QjFuf.js new file mode 100644 index 0000000..975bcb7 --- /dev/null +++ b/.vitepress/dist/assets/changelog_version2.0.0.md.B01QjFuf.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as i,a3 as t}from"./chunks/framework.D5qxx6u8.js";const f=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"changelog/version2.0.0.md","filePath":"changelog/version2.0.0.md","lastUpdated":1717792017000}'),r={name:"changelog/version2.0.0.md"},l=t('

Changelog

Version 1.0.0

Release Date: 2022-03-17

New Features

Improvements

Bug Fixes

Version 2.0.0

Release Date: 2023-03-17

New Features

Improvements

Bug Fixes

',17),o=[l];function n(s,h,d,u,c,m){return i(),a("div",null,o)}const g=e(r,[["render",n]]);export{f as __pageData,g as default}; diff --git a/.vitepress/dist/assets/changelog_version2.0.0.md.B01QjFuf.lean.js b/.vitepress/dist/assets/changelog_version2.0.0.md.B01QjFuf.lean.js new file mode 100644 index 0000000..aaac6b4 --- /dev/null +++ b/.vitepress/dist/assets/changelog_version2.0.0.md.B01QjFuf.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as i,a3 as t}from"./chunks/framework.D5qxx6u8.js";const f=JSON.parse('{"title":"Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"changelog/version2.0.0.md","filePath":"changelog/version2.0.0.md","lastUpdated":1717792017000}'),r={name:"changelog/version2.0.0.md"},l=t("",17),o=[l];function n(s,h,d,u,c,m){return i(),a("div",null,o)}const g=e(r,[["render",n]]);export{f as __pageData,g as default}; diff --git a/.vitepress/dist/assets/chunks/@localSearchIndexroot.BZg8rdYJ.js b/.vitepress/dist/assets/chunks/@localSearchIndexroot.BZg8rdYJ.js new file mode 100644 index 0000000..5886f3c --- /dev/null +++ b/.vitepress/dist/assets/chunks/@localSearchIndexroot.BZg8rdYJ.js @@ -0,0 +1 @@ +const t='{"documentCount":104,"nextId":104,"documentIds":{"0":"/README.html#beacon-docs","1":"/README.html#install-dependencies","2":"/README.html#run-locally","3":"/changelog/version1.0.0.html#changelog","4":"/changelog/version1.0.0.html#version-1-0-0","5":"/changelog/version1.0.0.html#new-features","6":"/changelog/version1.0.0.html#improvements","7":"/changelog/version1.0.0.html#bug-fixes","8":"/changelog/version1.0.0.html#version-2-0-0","9":"/changelog/version1.0.0.html#new-features-1","10":"/changelog/version1.0.0.html#improvements-1","11":"/changelog/version1.0.0.html#bug-fixes-1","12":"/changelog/version2.0.0.html#changelog","13":"/changelog/version2.0.0.html#version-1-0-0","14":"/changelog/version2.0.0.html#new-features","15":"/changelog/version2.0.0.html#improvements","16":"/changelog/version2.0.0.html#bug-fixes","17":"/changelog/version2.0.0.html#version-2-0-0","18":"/changelog/version2.0.0.html#new-features-1","19":"/changelog/version2.0.0.html#improvements-1","20":"/changelog/version2.0.0.html#bug-fixes-1","21":"/components/actions.html#actions","22":"/components/components-overview.html#components","23":"/components/computed.html#computed","24":"/components/handlers.html#handlers","25":"/components/handlers.html#oninit","26":"/components/handlers.html#onchange","27":"/components/handlers.html#onsettingschange","28":"/components/handlers.html#onsharedsettingschange","29":"/components/handlers.html#ontranslationsrequest","30":"/components/handlers.html#ondragover-optional","31":"/components/handlers.html#ondropover-optional","32":"/components/macros.html#handling-legacy-macro-attributes","33":"/components/macros.html#convertlegacymacroattributes","34":"/components/roll.html#rolls","35":"/components/roll.html#data-rollname","36":"/components/roll.html#data-computed","37":"/components/roll.html#roll-buttons","38":"/dispatch.html#dispatch","39":"/dispatch.html#update","40":"/dispatch.html#updatecharacter","41":"/dispatch.html#updatesharedsettings","42":"/dispatch.html#roll","43":"/dispatch.html#post","44":"/dispatch.html#query","45":"/dispatch.html#perform","46":"/dispatch.html#getcomputed","47":"/dispatch.html#setcomputed","48":"/dispatch.html#compendiumrequest","49":"/dispatch.html#debouncedcompendiumrequest","50":"/dispatch.html#gettokens","51":"/dispatch.html#addtotracker","52":"/dispatch.html#addactionstohost","53":"/dispatch.html#getactions","54":"/dispatch.html#setcontainersize","55":"/dispatch.html#updatetokensbycharacter","56":"/dispatch.html#updatetokensbyids","57":"/dispatch.html#autolinktext","58":"/dispatch.html#opendialogfromlink","59":"/gettingstarted/contributing.html#contributing-guide","60":"/gettingstarted/contributing.html#how-to-contribute","61":"/gettingstarted/contributing.html#reporting-bugs","62":"/gettingstarted/contributing.html#suggesting-features","63":"/gettingstarted/contributing.html#code-contributions","64":"/gettingstarted/contributing.html#running-tests","65":"/gettingstarted/contributing.html#code-style","66":"/gettingstarted/contributing.html#communication","67":"/gettingstarted/faq.html#faq","68":"/gettingstarted/glossary.html#glossary","69":"/gettingstarted/glossary.html#background","70":"/gettingstarted/glossary.html#character","71":"/gettingstarted/glossary.html#character-sheet","72":"/gettingstarted/glossary.html#computed-property","73":"/gettingstarted/glossary.html#convertlegacymacroattributes","74":"/gettingstarted/glossary.html#dispatch","75":"/gettingstarted/glossary.html#gm-game-master","76":"/gettingstarted/glossary.html#handler","77":"/gettingstarted/glossary.html#initrelay","78":"/gettingstarted/glossary.html#macro","79":"/gettingstarted/glossary.html#roll-template","80":"/gettingstarted/glossary.html#token","81":"/gettingstarted/glossary.html#vtt-virtual-tabletop","82":"/gettingstarted/glossary.html#validationmessage","83":"/gettingstarted/glossary.html#quantum-roll","84":"/gettingstarted/installation.html#installation","85":"/gettingstarted/installation.html#prerequisites","86":"/gettingstarted/installation.html#step-1-accessing-beacon-sdk","87":"/gettingstarted/installation.html#step-2-install-import","88":"/gettingstarted/introduction.html#introduction","89":"/gettingstarted/introduction.html#what-is-the-beacon-sdk","90":"/gettingstarted/introduction.html#key-features","91":"/gettingstarted/introduction.html#components-overview","92":"/gettingstarted/introduction.html#getting-started","93":"/gettingstarted/quickstart.html#beginner-beacon-sheet","94":"/gettingstarted/quickstart.html#prerequisites","95":"/gettingstarted/quickstart.html#useful-commands","96":"/gettingstarted/quickstartadvance.html#advanced-beacon-sheet","97":"/gettingstarted/quickstartadvance.html#prerequisites","98":"/gettingstarted/quickstartadvance.html#useful-commands","99":"/types.html#types","100":"/types.html#character","101":"/types.html#token","102":"/types.html#rollresults","103":"/types.html#convertlegacymacroattributesargs"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,8],"1":[2,2,3],"2":[2,2,21],"3":[1,1,1],"4":[3,1,6],"5":[2,4,22],"6":[1,4,18],"7":[2,4,5],"8":[3,1,6],"9":[2,4,14],"10":[1,4,17],"11":[2,4,5],"12":[1,1,1],"13":[3,1,6],"14":[2,4,22],"15":[1,4,18],"16":[2,4,5],"17":[3,1,6],"18":[2,4,14],"19":[1,4,17],"20":[2,4,5],"21":[1,1,136],"22":[1,1,137],"23":[1,1,129],"24":[1,1,17],"25":[1,1,81],"26":[1,1,39],"27":[1,1,29],"28":[1,1,19],"29":[1,1,23],"30":[3,1,55],"31":[3,1,50],"32":[4,1,61],"33":[1,4,65],"34":[1,1,30],"35":[2,1,51],"36":[2,1,62],"37":[2,1,49],"38":[1,1,40],"39":[1,1,51],"40":[1,1,46],"41":[1,1,28],"42":[1,1,77],"43":[1,1,78],"44":[1,1,173],"45":[1,1,37],"46":[1,1,51],"47":[1,1,51],"48":[1,1,54],"49":[1,1,48],"50":[1,1,60],"51":[1,1,56],"52":[1,1,51],"53":[1,1,19],"54":[1,1,50],"55":[1,1,33],"56":[1,1,32],"57":[1,1,51],"58":[1,1,58],"59":[2,1,20],"60":[3,2,1],"61":[2,5,28],"62":[2,5,32],"63":[2,5,78],"64":[2,5,15],"65":[2,5,19],"66":[1,2,27],"67":[1,1,157],"68":[1,1,1],"69":[2,1,8],"70":[2,1,15],"71":[3,1,22],"72":[3,1,14],"73":[2,1,14],"74":[2,1,13],"75":[4,1,16],"76":[2,1,13],"77":[2,1,15],"78":[2,1,10],"79":[3,1,12],"80":[2,1,21],"81":[4,1,16],"82":[2,1,13],"83":[3,1,18],"84":[1,1,14],"85":[1,1,27],"86":[5,1,7],"87":[5,1,79],"88":[1,1,40],"89":[6,1,38],"90":[2,1,68],"91":[2,1,63],"92":[2,1,69],"93":[3,1,18],"94":[1,3,145],"95":[2,3,34],"96":[3,1,15],"97":[1,3,91],"98":[2,3,54],"99":[1,1,33],"100":[1,1,64],"101":[1,1,174],"102":[1,1,54],"103":[1,1,54]},"averageFieldLength":[1.7884615384615385,1.6826923076923075,39.76923076923075],"storedFields":{"0":{"title":"beacon-docs","titles":[]},"1":{"title":"Install dependencies","titles":["beacon-docs"]},"2":{"title":"Run locally","titles":["beacon-docs"]},"3":{"title":"Changelog","titles":[]},"4":{"title":"Version 1.0.0","titles":["Changelog"]},"5":{"title":"New Features","titles":["Changelog","Version 1.0.0"]},"6":{"title":"Improvements","titles":["Changelog","Version 1.0.0"]},"7":{"title":"Bug Fixes","titles":["Changelog","Version 1.0.0"]},"8":{"title":"Version 2.0.0","titles":["Changelog"]},"9":{"title":"New Features","titles":["Changelog","Version 2.0.0"]},"10":{"title":"Improvements","titles":["Changelog","Version 2.0.0"]},"11":{"title":"Bug Fixes","titles":["Changelog","Version 2.0.0"]},"12":{"title":"Changelog","titles":[]},"13":{"title":"Version 1.0.0","titles":["Changelog"]},"14":{"title":"New Features","titles":["Changelog","Version 1.0.0"]},"15":{"title":"Improvements","titles":["Changelog","Version 1.0.0"]},"16":{"title":"Bug Fixes","titles":["Changelog","Version 1.0.0"]},"17":{"title":"Version 2.0.0","titles":["Changelog"]},"18":{"title":"New Features","titles":["Changelog","Version 2.0.0"]},"19":{"title":"Improvements","titles":["Changelog","Version 2.0.0"]},"20":{"title":"Bug Fixes","titles":["Changelog","Version 2.0.0"]},"21":{"title":"Actions","titles":[]},"22":{"title":"Components","titles":[]},"23":{"title":"Computed","titles":[]},"24":{"title":"Handlers","titles":[]},"25":{"title":"onInit","titles":["Handlers"]},"26":{"title":"onChange","titles":["Handlers"]},"27":{"title":"onSettingsChange","titles":["Handlers"]},"28":{"title":"onSharedSettingsChange","titles":["Handlers"]},"29":{"title":"onTranslationsRequest","titles":["Handlers"]},"30":{"title":"onDragOver (optional)","titles":["Handlers"]},"31":{"title":"onDropOver (optional)","titles":["Handlers"]},"32":{"title":"Handling Legacy Macro Attributes","titles":[]},"33":{"title":"convertLegacyMacroAttributes","titles":["Handling Legacy Macro Attributes"]},"34":{"title":"Rolls","titles":[]},"35":{"title":"data-rollname","titles":["Rolls"]},"36":{"title":"data-computed","titles":["Rolls"]},"37":{"title":"Roll Buttons","titles":["Rolls"]},"38":{"title":"Dispatch","titles":[]},"39":{"title":"update","titles":["Dispatch"]},"40":{"title":"updateCharacter","titles":["Dispatch"]},"41":{"title":"updateSharedSettings","titles":["Dispatch"]},"42":{"title":"roll","titles":["Dispatch"]},"43":{"title":"post","titles":["Dispatch"]},"44":{"title":"query","titles":["Dispatch"]},"45":{"title":"perform","titles":["Dispatch"]},"46":{"title":"getComputed","titles":["Dispatch"]},"47":{"title":"setComputed","titles":["Dispatch"]},"48":{"title":"compendiumRequest","titles":["Dispatch"]},"49":{"title":"debouncedCompendiumRequest","titles":["Dispatch"]},"50":{"title":"getTokens","titles":["Dispatch"]},"51":{"title":"addToTracker","titles":["Dispatch"]},"52":{"title":"addActionsToHost","titles":["Dispatch"]},"53":{"title":"getActions","titles":["Dispatch"]},"54":{"title":"setContainerSize","titles":["Dispatch"]},"55":{"title":"updateTokensByCharacter","titles":["Dispatch"]},"56":{"title":"updateTokensByIds","titles":["Dispatch"]},"57":{"title":"autoLinkText","titles":["Dispatch"]},"58":{"title":"openDialogFromLink","titles":["Dispatch"]},"59":{"title":"Contributing Guide","titles":[]},"60":{"title":"How to Contribute","titles":["Contributing Guide"]},"61":{"title":"Reporting Bugs","titles":["Contributing Guide","How to Contribute"]},"62":{"title":"Suggesting Features","titles":["Contributing Guide","How to Contribute"]},"63":{"title":"Code Contributions","titles":["Contributing Guide","How to Contribute"]},"64":{"title":"Running Tests","titles":["Contributing Guide","How to Contribute"]},"65":{"title":"Code Style","titles":["Contributing Guide","How to Contribute"]},"66":{"title":"Communication","titles":["Contributing Guide"]},"67":{"title":"FAQ","titles":[]},"68":{"title":"Glossary","titles":[]},"69":{"title":"Background:","titles":["Glossary"]},"70":{"title":"Character:","titles":["Glossary"]},"71":{"title":"Character sheet:","titles":["Glossary"]},"72":{"title":"Computed Property:","titles":["Glossary"]},"73":{"title":"ConvertLegacyMacroAttributes:","titles":["Glossary"]},"74":{"title":"Dispatch:","titles":["Glossary"]},"75":{"title":"GM (Game Master):","titles":["Glossary"]},"76":{"title":"Handler:","titles":["Glossary"]},"77":{"title":"InitRelay:","titles":["Glossary"]},"78":{"title":"Macro:","titles":["Glossary"]},"79":{"title":"Roll Template:","titles":["Glossary"]},"80":{"title":"Token:","titles":["Glossary"]},"81":{"title":"VTT (Virtual Tabletop):","titles":["Glossary"]},"82":{"title":"ValidationMessage:","titles":["Glossary"]},"83":{"title":"Quantum Roll:","titles":["Glossary"]},"84":{"title":"Installation","titles":[]},"85":{"title":"Prerequisites","titles":["Installation"]},"86":{"title":"Step 1: Accessing Beacon SDK","titles":["Installation"]},"87":{"title":"Step 2: Install & Import","titles":["Installation"]},"88":{"title":"Introduction","titles":[]},"89":{"title":"What is the Beacon SDK?","titles":["Introduction"]},"90":{"title":"Key Features","titles":["Introduction"]},"91":{"title":"Components Overview","titles":["Introduction"]},"92":{"title":"Getting Started","titles":["Introduction"]},"93":{"title":"Beginner Beacon Sheet","titles":[]},"94":{"title":"Prerequisites","titles":["Beginner Beacon Sheet"]},"95":{"title":"Useful Commands","titles":["Beginner Beacon Sheet"]},"96":{"title":"Advanced Beacon Sheet","titles":[]},"97":{"title":"Prerequisites","titles":["Advanced Beacon Sheet"]},"98":{"title":"Useful Commands","titles":["Advanced Beacon Sheet"]},"99":{"title":"Types","titles":[]},"100":{"title":"Character","titles":["Types"]},"101":{"title":"Token","titles":["Types"]},"102":{"title":"RollResults","titles":["Types"]},"103":{"title":"convertLegacyMacroAttributesArgs","titles":["Types"]}},"dirtCount":0,"index":[["=",{"2":{"100":1,"101":1,"102":1,"103":1}}],["=>",{"2":{"23":2,"33":1}}],["7620",{"2":{"94":2}}],["5173",{"2":{"94":1}}],["kit",{"2":{"89":1}}],["key",{"0":{"90":1},"2":{"28":1,"29":1,"41":1,"87":2,"91":1,"99":1}}],["keys",{"2":{"21":1,"23":1,"42":1}}],["q8",{"2":{"67":1}}],["q7",{"2":{"67":1}}],["q6",{"2":{"67":1}}],["q5",{"2":{"67":1}}],["q4",{"2":{"67":1}}],["q3",{"2":{"67":1}}],["q2",{"2":{"67":1}}],["q1",{"2":{"67":1}}],["quickstart",{"2":{"94":1}}],["quick",{"2":{"93":1,"96":1}}],["questions",{"2":{"66":1}}],["queries",{"2":{"54":1}}],["query",{"0":{"44":1},"2":{"44":3,"48":3,"49":1,"67":2}}],["quot",{"2":{"36":2,"57":2,"101":4}}],["quantum",{"0":{"83":1},"2":{"35":1,"36":1}}],["8je02j0kd02k",{"2":{"57":1}}],["`",{"2":{"57":1}}],["`3d6+2`",{"2":{"42":1}}],[">dragon",{"2":{"57":1}}],[">click",{"2":{"37":1}}],[">25",{"2":{"36":1}}],[">",{"2":{"35":1,"42":1,"44":1,"48":1,"49":1,"50":1,"53":1}}],["your",{"2":{"59":1,"63":11,"66":1,"84":1,"85":1,"87":6,"90":1,"92":2,"94":2,"97":2}}],["you",{"2":{"22":1,"46":1,"47":1,"50":1,"59":1,"61":1,"62":2,"66":1,"84":1,"85":3,"87":4,"88":1,"92":3,"93":1,"94":6,"97":4}}],["lock",{"2":{"101":1}}],["lockmovement",{"2":{"101":2}}],["locations",{"2":{"52":1}}],["locating",{"2":{"33":1}}],["localhost",{"2":{"94":1}}],["local",{"2":{"2":1,"63":1,"98":4}}],["locally",{"0":{"2":1}}],["low",{"2":{"101":15}}],["losangle",{"2":{"101":2}}],["ll",{"2":{"85":1,"94":1,"97":1}}],["last",{"2":{"101":1}}],["lastmove",{"2":{"101":2}}],["layer",{"2":{"101":3}}],["label",{"2":{"44":6}}],["language",{"2":{"25":1,"29":2}}],["leverage",{"2":{"97":1}}],["leveraging",{"2":{"92":1}}],["level",{"2":{"22":1}}],["left",{"2":{"30":2,"31":2}}],["letter",{"2":{"29":1}}],["legacy",{"0":{"32":1},"1":{"33":1},"2":{"22":1,"32":4,"33":1,"42":1,"67":5,"73":1,"90":2,"91":1,"103":2}}],["limited",{"2":{"101":2}}],["limit",{"2":{"101":16}}],["lightcolor",{"2":{"101":2}}],["light",{"2":{"101":56}}],["life",{"2":{"92":1}}],["line",{"2":{"101":1}}],["lint",{"2":{"65":1,"95":1,"98":1}}],["linting",{"2":{"65":1,"95":1,"97":1,"98":1}}],["link",{"2":{"58":2,"101":9}}],["links",{"2":{"57":1}}],["listed",{"2":{"97":1}}],["listener",{"2":{"54":1}}],["listeners",{"2":{"22":1}}],["list",{"2":{"44":1}}],["like",{"2":{"22":1,"40":1,"43":1,"49":1,"54":1,"62":1,"67":1,"80":1,"94":1}}],["history",{"2":{"87":1}}],["high",{"2":{"22":1}}],["http",{"2":{"94":1}}],["https",{"2":{"57":1}}],["html",{"2":{"35":2,"36":1,"37":1,"43":1,"57":1,"67":1}}],["href=",{"2":{"57":1}}],["help",{"2":{"59":1,"61":1,"84":1,"92":1}}],["helping",{"2":{"22":1}}],["height",{"2":{"44":1,"54":1}}],["here",{"2":{"39":1,"44":1,"50":1,"59":1,"87":1}}],["headless",{"2":{"25":1}}],["handy",{"2":{"95":1,"98":1}}],["handoutid",{"2":{"57":1}}],["handout",{"2":{"57":2,"58":3}}],["handled",{"2":{"34":1,"67":1}}],["handler",{"0":{"76":1},"2":{"24":1}}],["handlers",{"0":{"24":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1},"2":{"22":2,"24":1,"76":1,"90":1,"91":2,"92":1}}],["handle",{"2":{"22":1,"67":1,"73":1,"90":1}}],["handling",{"0":{"32":1},"1":{"33":1},"2":{"22":1,"33":1,"67":1,"90":1,"102":1,"103":1}}],["have",{"2":{"39":1,"45":1,"72":1,"85":2,"94":2,"97":1}}],["hassight",{"2":{"101":2}}],["has",{"2":{"21":1,"34":1,"58":2,"101":19}}],["horizontally",{"2":{"101":1}}],["holds",{"2":{"54":1}}],["hosted",{"2":{"98":1}}],["host",{"2":{"23":1,"24":1,"26":1,"33":1,"38":1,"39":1,"40":1,"54":1,"67":2,"76":1,"77":1}}],["how",{"0":{"60":1},"1":{"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"22":2,"67":5}}],["however",{"2":{"21":1,"33":1,"40":1,"44":1}}],["hot",{"2":{"2":1,"25":1,"95":1,"98":1}}],["given",{"2":{"102":1}}],["github",{"2":{"61":1,"62":1,"63":1,"66":3}}],["glossary",{"0":{"68":1},"1":{"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1}}],["guides",{"2":{"92":1}}],["guidelines",{"2":{"59":1}}],["guide",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"84":1,"87":1,"93":1}}],["goes",{"2":{"57":1}}],["grouped",{"2":{"49":1}}],["grow",{"2":{"44":2}}],["graphql",{"2":{"48":2}}],["grants",{"2":{"33":1}}],["gameplay",{"2":{"92":1}}],["game",{"0":{"75":1},"2":{"41":1,"57":1,"70":1,"71":1,"75":1,"88":1,"90":1,"92":1,"94":1,"100":3,"101":2,"102":1}}],["games",{"2":{"22":1,"81":1}}],["generic",{"2":{"52":1}}],["generate",{"2":{"43":1}}],["generally",{"2":{"21":1,"36":1}}],["getting",{"0":{"92":1},"2":{"93":1}}],["gettokens",{"0":{"50":1},"2":{"50":2,"67":1}}],["getactions",{"0":{"53":1},"2":{"53":2}}],["getcomputed",{"0":{"46":1},"2":{"46":2}}],["get",{"2":{"23":3,"46":1,"59":1,"72":1,"92":1,"94":1}}],["gmnotes",{"2":{"39":1,"100":2,"101":2}}],["gm",{"0":{"75":1},"2":{"21":1,"25":1,"26":1,"43":3,"70":1,"88":1}}],["would",{"2":{"62":2,"94":1}}],["working",{"2":{"94":1,"95":1,"98":1}}],["works",{"2":{"49":1}}],["work",{"2":{"23":1,"44":1,"63":1,"67":1,"94":1}}],["website",{"2":{"94":1}}],["welcome",{"2":{"62":1}}],["well",{"2":{"55":1,"94":1}}],["we",{"2":{"59":1,"62":1}}],["were",{"2":{"36":1}}],["written",{"2":{"48":1}}],["war",{"2":{"101":1}}],["warn",{"2":{"58":1}}],["watch",{"2":{"95":1,"98":1}}],["was",{"2":{"50":1}}],["want",{"2":{"46":1,"47":1,"87":1}}],["ways",{"2":{"94":1}}],["way",{"2":{"34":1}}],["why",{"2":{"62":1,"63":1}}],["who",{"2":{"75":1}}],["whose",{"2":{"46":1,"47":1,"50":1}}],["whole",{"2":{"35":1}}],["while",{"2":{"51":1}}],["whisper",{"2":{"43":5}}],["which",{"2":{"23":1,"43":1,"45":1,"46":1,"47":1,"50":1,"54":1,"72":1}}],["whatever",{"2":{"23":1}}],["what",{"0":{"89":1},"2":{"23":1,"67":5}}],["whenever",{"2":{"26":1}}],["when",{"2":{"21":1,"22":1,"25":1,"27":2,"28":1,"30":1,"31":1,"32":2,"33":1,"36":1,"37":1,"38":1,"39":1,"44":1,"52":2,"67":1,"82":1,"94":1,"95":1,"97":1,"98":1}}],["whether",{"2":{"21":1,"23":1,"88":1,"92":1}}],["wherever",{"2":{"35":1}}],["where",{"2":{"21":1,"23":1,"32":1,"42":1}}],["width",{"2":{"44":3,"54":1}}],["window",{"2":{"30":1,"31":1,"44":1,"58":1}}],["within",{"2":{"22":3,"32":1,"34":1,"67":1,"90":2,"91":2,"99":1,"101":1}}],["with",{"2":{"2":2,"5":1,"9":1,"10":2,"14":1,"18":1,"19":2,"22":1,"23":2,"26":1,"32":1,"35":1,"36":2,"38":2,"40":1,"42":3,"44":1,"46":1,"47":1,"49":1,"51":1,"54":1,"57":2,"62":1,"63":1,"64":2,"65":1,"67":5,"70":1,"80":1,"87":1,"90":2,"91":1,"92":1,"93":1,"94":2,"95":2,"98":7,"103":1}}],["will",{"2":{"2":1,"21":1,"23":3,"33":1,"35":1,"36":2,"37":1,"38":1,"42":2,"43":3,"49":1,"51":2,"58":6,"84":1,"87":2,"93":1,"94":5,"97":1}}],["x3c",{"2":{"21":1,"23":1,"26":1,"35":2,"36":2,"37":2,"39":2,"40":2,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":3,"49":1,"50":1,"51":1,"53":1,"54":1,"55":2,"56":2,"57":3,"100":1}}],["|",{"2":{"21":1,"23":3,"30":1,"44":6,"46":2,"47":2,"51":1,"52":2,"53":1}}],["please",{"2":{"61":1,"62":1}}],["platform",{"2":{"81":1,"89":1}}],["play",{"2":{"81":1}}],["playing",{"2":{"71":1,"81":1}}],["playersedit",{"2":{"101":12}}],["players",{"2":{"75":1,"81":1,"101":13}}],["player",{"2":{"21":1,"27":1,"43":1,"88":1,"101":1}}],["placeholder",{"2":{"44":1}}],["plain",{"2":{"21":1,"43":1}}],["people",{"2":{"41":1}}],["person",{"2":{"75":1}}],["personal",{"2":{"63":1}}],["persist",{"2":{"39":1,"40":1}}],["perform",{"0":{"45":1},"2":{"45":3}}],["performed",{"2":{"22":1}}],["performing",{"2":{"21":1,"67":1}}],["pull",{"2":{"63":2,"66":2}}],["pushing",{"2":{"97":1}}],["push",{"2":{"63":3}}],["purpose",{"2":{"33":1,"67":1}}],["public",{"2":{"0":1}}],["pivotal",{"2":{"32":1}}],["port",{"2":{"94":2}}],["pop",{"2":{"58":2}}],["populated",{"2":{"25":1}}],["position",{"2":{"44":2,"80":1}}],["posted",{"2":{"43":1}}],["posts",{"2":{"43":1}}],["post",{"0":{"43":1},"2":{"43":2}}],["possible",{"2":{"32":1,"35":1,"61":1,"97":1}}],["printed",{"2":{"71":1}}],["primary",{"2":{"25":1,"27":1}}],["prerequisites",{"0":{"85":1,"94":1,"97":1}}],["predefined",{"2":{"79":1}}],["prettier",{"2":{"65":1,"95":1,"98":1}}],["preferred",{"2":{"33":1,"35":1}}],["project",{"2":{"59":1,"63":1,"66":1,"94":3}}],["progressstepsdistance",{"2":{"44":1}}],["progresssteps",{"2":{"44":1}}],["progress",{"2":{"44":4}}],["prompts",{"2":{"67":1}}],["prompt",{"2":{"44":1,"67":1}}],["promise",{"2":{"21":1,"23":1,"38":2,"39":1,"40":1,"41":2,"42":2,"43":1,"44":1,"45":1,"46":2,"47":2,"48":1,"49":1,"50":1,"51":1,"53":1,"54":2,"55":2,"56":2,"57":1}}],["process",{"2":{"33":1,"76":1,"91":1,"92":1}}],["providing",{"2":{"22":1}}],["provided",{"2":{"30":2,"31":2,"37":1,"42":1,"43":1,"50":1}}],["provides",{"2":{"22":1,"25":1,"38":1,"67":1,"75":1,"88":1,"92":1,"99":1}}],["provide",{"2":{"21":1,"61":1,"63":1}}],["properly",{"2":{"94":1,"97":1}}],["properties",{"2":{"21":1,"22":1,"23":4,"33":1,"39":1,"67":2,"72":1,"80":1,"90":1,"91":2,"92":1,"100":1,"101":2,"102":1,"103":1}}],["property",{"0":{"72":1},"2":{"21":1,"23":4,"42":2,"46":6,"47":6}}],["props",{"2":{"21":2,"23":2}}],["packages",{"2":{"87":1}}],["package",{"2":{"87":7}}],["padding",{"2":{"44":2}}],["pass",{"2":{"63":1,"67":1}}],["passing",{"2":{"45":1,"51":2,"57":1}}],["password",{"2":{"44":1}}],["passed",{"2":{"21":1,"23":1,"30":1,"31":1,"39":1,"52":3}}],["page",{"2":{"39":1,"40":1,"42":1,"50":2,"58":3,"71":1}}],["pagename",{"2":{"25":1,"30":1,"31":1}}],["parameter",{"2":{"51":1}}],["parameters",{"2":{"23":1}}],["parts",{"2":{"94":1}}],["particular",{"2":{"36":1,"55":1}}],["partial",{"2":{"26":2,"39":2,"40":1,"55":1,"56":1}}],["part",{"2":{"25":1}}],["journal",{"2":{"57":1}}],["just",{"2":{"49":1}}],["javascript",{"2":{"87":1}}],["javascriptimport",{"2":{"87":1}}],["javascriptdispatch",{"2":{"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1}}],["javascriptondropover",{"2":{"31":1}}],["javascriptondragover",{"2":{"30":1}}],["javascriptontranslationsrequest",{"2":{"29":1}}],["javascriptonsharedsettingschange",{"2":{"28":1}}],["javascriptonsettingschange",{"2":{"27":1}}],["javascriptonchange",{"2":{"26":1}}],["javascriptoninit",{"2":{"25":1}}],["javascriptcomputed",{"2":{"23":1}}],["javascriptactions",{"2":{"21":1}}],["jsnpm",{"2":{"86":1}}],["json",{"2":{"23":1,"29":1,"48":1,"87":3,"94":2}}],["js",{"2":{"5":1,"14":1,"85":3,"94":1}}],["outcomes",{"2":{"102":1}}],["outside",{"2":{"21":1,"30":1}}],["our",{"2":{"87":1}}],["override",{"2":{"48":1}}],["overwriting",{"2":{"43":1}}],["overwrite",{"2":{"39":1}}],["over",{"2":{"30":1,"31":1,"81":1}}],["overview",{"0":{"91":1},"2":{"22":1,"91":1}}],["ownership",{"2":{"27":1}}],["owned",{"2":{"25":1,"27":1}}],["omitted",{"2":{"23":1,"42":1,"43":1}}],["once",{"2":{"94":1}}],["onchange",{"0":{"26":1},"2":{"26":1}}],["online",{"2":{"81":1}}],["only",{"2":{"26":2,"36":1,"39":1,"40":1,"43":2,"49":1}}],["ondropover",{"0":{"31":1},"2":{"31":1}}],["ondragover",{"0":{"30":1},"2":{"30":1}}],["ontranslationsrequest",{"0":{"29":1},"2":{"29":1}}],["onsharedsettingschange",{"0":{"28":1},"2":{"28":1}}],["onsettingschange",{"0":{"27":1},"2":{"27":1}}],["oninit",{"0":{"25":1},"2":{"25":1}}],["ones",{"2":{"92":1}}],["one",{"2":{"23":1,"42":1,"43":1}}],["on",{"2":{"23":1,"26":1,"42":1,"45":2,"50":2,"54":1,"63":1,"67":2,"80":1,"84":1,"85":1,"91":1,"94":4,"100":1,"101":2,"102":1}}],["older",{"2":{"22":1}}],["otherplayers",{"2":{"101":2}}],["other",{"2":{"22":1,"71":1,"88":1,"89":1,"91":1,"101":1}}],["opacity",{"2":{"101":3}}],["optimal",{"2":{"97":1}}],["option",{"2":{"43":1}}],["options",{"2":{"39":1,"43":2,"44":7}}],["optional",{"0":{"30":1,"31":1},"2":{"21":2,"23":3,"51":2,"100":3,"102":2}}],["open",{"2":{"58":2,"62":1,"63":1,"87":1,"98":2}}],["opening",{"2":{"58":1,"61":1}}],["opened",{"2":{"58":1}}],["opens",{"2":{"58":1}}],["opendialogfromlink",{"0":{"58":1},"2":{"58":2}}],["operations",{"2":{"22":2}}],["opposed",{"2":{"36":1}}],["object>",{"2":{"46":1,"47":1}}],["objects",{"2":{"21":1,"50":1,"67":1,"101":1}}],["object",{"2":{"21":4,"23":3,"25":1,"26":1,"38":2,"42":2,"43":1,"44":1,"46":1,"47":1,"48":1,"49":1,"80":1,"87":1,"100":1,"101":1,"102":1,"103":2}}],["origin",{"2":{"63":1}}],["original",{"2":{"21":2,"37":1}}],["order",{"2":{"44":1}}],["or",{"2":{"21":4,"22":3,"23":2,"25":1,"26":1,"27":1,"42":1,"43":2,"46":1,"47":1,"48":1,"49":1,"51":2,"52":2,"56":1,"63":2,"67":4,"71":1,"80":1,"88":1,"92":1,"94":5,"101":2}}],["offers",{"2":{"92":1}}],["official",{"2":{"85":1,"86":1,"94":1}}],["offline",{"2":{"9":1,"18":1,"94":1}}],["often",{"2":{"67":1}}],["of",{"2":{"0":1,"5":1,"14":1,"21":8,"22":4,"23":2,"25":2,"27":1,"30":2,"31":1,"32":1,"35":2,"36":2,"38":1,"39":1,"40":1,"42":1,"44":9,"45":2,"46":4,"47":4,"50":3,"52":1,"54":1,"56":1,"62":1,"63":3,"67":3,"69":1,"74":1,"79":1,"80":1,"83":1,"87":2,"88":1,"90":1,"91":2,"92":1,"94":1,"95":1,"97":1,"98":1,"99":2,"100":1,"101":36,"102":7,"103":2}}],["m",{"2":{"63":1}}],["might",{"2":{"32":1}}],["much",{"2":{"61":1}}],["multiplier",{"2":{"101":3}}],["multiple",{"2":{"25":1,"97":1}}],["multi",{"2":{"44":1,"101":2}}],["must",{"2":{"21":1,"23":2,"39":1,"92":1}}],["meet",{"2":{"82":1}}],["merged",{"2":{"63":1}}],["me",{"2":{"37":1}}],["mechanic",{"2":{"36":1}}],["mechanics",{"2":{"22":1,"90":1,"91":1}}],["messages",{"2":{"24":1,"33":1,"76":1,"91":1}}],["message",{"2":{"21":1,"42":2,"43":7,"44":1,"63":1,"82":1}}],["messageid",{"2":{"21":2,"37":1,"42":6,"43":4}}],["metadata",{"2":{"21":1}}],["method",{"2":{"21":3,"23":2,"35":1,"39":1,"42":1,"45":3,"46":1,"47":1,"49":1,"51":1,"52":1,"54":1,"55":2,"56":1,"57":1,"67":1,"94":3}}],["methods",{"2":{"21":1,"23":1,"24":1,"38":2,"67":2,"72":1,"76":1,"83":1}}],["movement",{"2":{"101":1}}],["move",{"2":{"101":1}}],["moved",{"2":{"30":1}}],["mode",{"2":{"94":2}}],["modal",{"2":{"44":9}}],["modified",{"2":{"36":1}}],["modifying",{"2":{"23":1}}],["more",{"2":{"22":1,"42":2,"52":1,"87":3}}],["most",{"2":{"21":1}}],["mocking",{"2":{"94":1}}],["mock",{"2":{"9":1,"18":1}}],["making",{"2":{"103":1}}],["make",{"2":{"23":1,"63":2,"94":1,"97":1}}],["markers",{"2":{"101":1}}],["map",{"2":{"101":1}}],["mapped",{"2":{"67":1}}],["mapping",{"2":{"32":1,"67":1,"73":1}}],["manipulation",{"2":{"94":1}}],["managing",{"2":{"89":1}}],["management",{"2":{"92":1}}],["managed",{"2":{"67":1}}],["manage",{"2":{"22":1,"67":1,"90":2,"91":2}}],["master",{"0":{"75":1},"2":{"88":1,"100":2,"101":1}}],["machine",{"2":{"63":1,"84":1,"85":1}}],["macrobar",{"2":{"52":3}}],["macros",{"2":{"22":2,"23":1,"32":1,"33":1,"53":1,"67":3,"89":1,"90":3}}],["macro",{"0":{"32":1,"78":1},"1":{"33":1},"2":{"21":2,"22":3,"32":2,"33":1,"52":1,"67":3,"73":1,"91":2,"99":1,"103":2}}],["main",{"2":{"58":1,"63":1}}],["made",{"2":{"30":1,"31":1}}],["maximum",{"2":{"101":3}}],["max",{"2":{"23":1,"101":6}}],["may",{"2":{"21":2,"25":1,"32":1,"46":1,"47":1}}],["edit",{"2":{"101":6}}],["editor",{"2":{"94":1}}],["editable",{"2":{"23":1}}],["easy",{"2":{"89":1}}],["each",{"2":{"22":1,"92":1,"99":1,"102":1}}],["essential",{"2":{"102":1}}],["eslint",{"2":{"65":1}}],["esc",{"2":{"44":1}}],["e2e",{"2":{"64":1,"98":3}}],["error>",{"2":{"48":1}}],["errors",{"2":{"44":3,"48":1,"49":1,"67":1}}],["even",{"2":{"45":1}}],["events",{"2":{"22":1,"90":1,"91":1}}],["event",{"2":{"22":1,"25":1,"26":1,"54":1,"76":1,"90":1,"91":1}}],["etc",{"2":{"44":1,"94":1,"100":1}}],["emitted",{"2":{"101":1}}],["emits",{"2":{"101":8}}],["emission",{"2":{"101":1}}],["email",{"2":{"44":1}}],["empowering",{"2":{"32":1}}],["employed",{"2":{"32":1}}],["element",{"2":{"35":3,"36":3,"54":1}}],["elements",{"2":{"34":1,"37":1,"67":1,"88":1}}],["e",{"2":{"25":1,"26":1,"27":1,"30":1,"31":1}}],["either",{"2":{"23":1,"27":1,"43":2,"52":2}}],["enabling",{"2":{"74":1}}],["entity",{"2":{"70":1}}],["entry",{"2":{"25":1}}],["ensure",{"2":{"58":1,"63":1,"67":1,"97":1}}],["ensures",{"2":{"22":1,"83":1,"89":1}}],["encountered",{"2":{"44":1}}],["encounters",{"2":{"33":1}}],["enhance",{"2":{"34":1,"88":1,"92":1}}],["environment",{"2":{"25":1,"34":1,"94":3,"99":1,"101":1}}],["endpoint",{"2":{"48":1}}],["end",{"2":{"10":2,"19":2,"26":1,"64":4,"97":4,"98":6}}],["external",{"2":{"58":2}}],["extensions",{"2":{"48":1,"49":1}}],["execute",{"2":{"67":1}}],["executes",{"2":{"45":1,"48":1,"94":1}}],["executed",{"2":{"21":1,"37":1,"67":1}}],["exactly",{"2":{"44":1}}],["example",{"2":{"6":1,"15":1,"57":1,"87":2,"93":1,"96":1}}],["examples",{"2":{"5":1,"14":1,"92":1,"99":1}}],["ex",{"2":{"42":1}}],["exception",{"2":{"49":1}}],["except",{"2":{"38":1}}],["expression",{"2":{"102":5}}],["exports",{"2":{"87":1}}],["expansionid",{"2":{"30":1,"31":1}}],["expansion",{"2":{"25":1}}],["experiences",{"2":{"88":1,"92":1}}],["experience",{"2":{"10":1,"19":1}}],["existing",{"2":{"21":1,"32":1,"40":1,"42":1,"43":2,"55":1,"63":1,"65":1,"67":1,"92":1,"94":1}}],["2023",{"2":{"8":1,"17":1}}],["2022",{"2":{"4":1,"13":1}}],["2",{"0":{"8":1,"17":1,"87":1},"1":{"9":1,"10":1,"11":1,"18":1,"19":1,"20":1}}],["utilize",{"2":{"87":1,"90":1}}],["utilizing",{"2":{"32":1}}],["utilities",{"2":{"87":1}}],["up",{"2":{"58":2,"77":1,"84":1,"92":1,"94":3,"97":1,"98":1}}],["updating",{"2":{"39":1,"67":1}}],["updatetokensbyids",{"0":{"56":1},"2":{"56":2}}],["updatetokensbycharacter",{"0":{"55":1},"2":{"55":2,"67":1}}],["updatecharacter",{"0":{"40":1},"2":{"40":2}}],["update",{"0":{"39":1},"2":{"22":1,"39":2,"40":1,"41":1,"43":1,"67":1}}],["updatesharedsettings",{"0":{"41":1},"2":{"41":1}}],["updates",{"2":{"2":1,"22":1,"41":1,"51":1,"54":1,"55":1,"56":1,"89":1,"90":1}}],["ui",{"2":{"52":1}}],["urlstring",{"2":{"58":2}}],["url",{"2":{"44":1,"51":1,"58":3,"100":1,"101":1}}],["usable",{"2":{"67":1}}],["us",{"2":{"61":1}}],["using",{"2":{"37":1,"67":1,"83":1}}],["useful",{"0":{"95":1,"98":1},"2":{"44":1,"62":1,"94":1}}],["uses",{"2":{"44":1,"97":1}}],["users",{"2":{"67":1}}],["user",{"2":{"23":1,"44":1,"50":1,"58":3}}],["use",{"2":{"23":2,"37":1,"65":1,"66":2,"85":1,"87":1,"94":2,"95":3,"98":8,"103":1}}],["used",{"2":{"21":1,"22":1,"23":1,"36":1,"38":1,"46":1,"47":1,"54":1,"67":7,"71":1,"99":1,"102":2}}],["under",{"2":{"87":1}}],["understand",{"2":{"22":1,"61":1}}],["understanding",{"2":{"6":1,"15":1}}],["unless",{"2":{"43":1}}],["unlimited",{"2":{"21":1}}],["unique",{"2":{"21":2,"42":1,"100":2,"101":1,"103":1}}],["unit",{"2":{"10":1,"19":1,"64":3,"97":2,"98":2}}],["t",{"2":{"85":1}}],["turn",{"2":{"51":1,"67":1}}],["typically",{"2":{"33":1}}],["types",{"0":{"99":1},"1":{"100":1,"101":1,"102":1,"103":1},"2":{"23":1,"42":2,"99":1,"103":1}}],["typescripttype",{"2":{"100":1,"101":1,"102":1,"103":1}}],["typescriptconvertlegacymacroattributes",{"2":{"33":1}}],["typescript",{"2":{"10":1,"19":1,"97":1,"98":1}}],["type",{"2":{"10":1,"19":1,"44":1,"67":2,"97":1,"98":2,"99":1,"100":2,"101":3,"102":3,"103":3}}],["two",{"2":{"29":1,"50":1,"94":1}}],["tint",{"2":{"101":3}}],["title",{"2":{"44":1}}],["titletext",{"2":{"44":1}}],["time",{"2":{"89":1,"90":1}}],["timerprogressbar",{"2":{"44":1}}],["timer",{"2":{"44":4}}],["times",{"2":{"25":1}}],["tip",{"2":{"23":1}}],["track",{"2":{"71":1}}],["tracker",{"2":{"51":2,"67":1}}],["translation",{"2":{"29":1}}],["transitions",{"2":{"32":1}}],["transitioning",{"2":{"32":1}}],["transition",{"2":{"22":1}}],["trim",{"2":{"44":1}}],["triggering",{"2":{"67":1}}],["trigger",{"2":{"22":1,"37":1}}],["triggered",{"2":{"21":4,"67":1,"91":1}}],["true",{"2":{"23":2,"36":2,"43":1,"94":1}}],["tailored",{"2":{"90":1}}],["takes",{"2":{"40":1,"42":1,"44":1,"46":1,"47":1,"48":1,"96":1}}],["tagging",{"2":{"36":1}}],["tab",{"2":{"30":1,"31":1,"58":1}}],["tabletops",{"2":{"89":1}}],["tabletop",{"0":{"81":1},"2":{"22":1,"34":1,"67":1,"80":1,"81":1,"88":1,"92":1,"101":1}}],["tasks",{"2":{"22":1,"78":1}}],["three",{"2":{"97":1}}],["through",{"2":{"33":1,"57":1,"58":1,"92":1,"93":1,"94":1}}],["thank",{"2":{"66":1}}],["that",{"2":{"21":2,"22":4,"23":1,"30":1,"31":1,"32":1,"33":1,"34":2,"35":2,"36":2,"37":1,"38":1,"39":1,"40":1,"41":2,"42":1,"46":2,"47":2,"49":1,"50":1,"54":1,"55":2,"56":1,"58":1,"63":1,"67":1,"72":1,"76":1,"78":1,"81":1,"83":1,"87":1,"91":2,"92":1,"94":3,"97":1}}],["third",{"2":{"101":5}}],["think",{"2":{"62":1,"97":1}}],["this",{"2":{"21":2,"22":2,"23":4,"25":3,"26":1,"32":1,"33":1,"35":2,"36":2,"38":1,"40":1,"43":1,"45":1,"46":1,"47":1,"48":1,"49":2,"54":2,"55":1,"57":2,"58":1,"84":1,"92":1,"93":2,"94":8,"95":1,"96":2,"97":4,"98":1,"99":1,"101":2,"102":2,"103":1}}],["those",{"2":{"21":1,"39":1,"97":1}}],["then",{"2":{"94":1}}],["them",{"2":{"57":1}}],["theme",{"2":{"27":1}}],["there",{"2":{"32":1,"94":1}}],["they",{"2":{"22":3,"50":1,"63":1,"67":4}}],["their",{"2":{"22":2,"33":1,"58":1}}],["these",{"2":{"21":4,"22":2,"23":1,"34":1,"37":1,"38":1,"91":1,"103":1}}],["the",{"0":{"89":1},"2":{"2":2,"5":1,"14":1,"21":19,"22":12,"23":17,"24":4,"25":8,"26":6,"27":3,"28":1,"29":3,"30":7,"31":5,"32":8,"33":7,"34":3,"35":15,"36":10,"37":4,"38":4,"39":6,"40":5,"41":1,"42":16,"43":10,"44":41,"45":5,"46":9,"47":9,"48":6,"49":4,"50":11,"51":7,"52":8,"54":6,"55":1,"56":1,"57":4,"58":15,"59":1,"61":2,"62":2,"63":6,"65":1,"66":1,"67":30,"69":2,"70":1,"73":1,"74":2,"75":5,"76":1,"77":3,"78":1,"79":1,"80":1,"81":1,"83":2,"84":1,"85":3,"87":14,"88":3,"89":4,"90":3,"91":5,"92":7,"93":1,"94":27,"95":4,"96":1,"97":4,"98":9,"99":3,"100":10,"101":66,"102":17,"103":13}}],["terminal",{"2":{"87":1}}],["template",{"0":{"79":1}}],["templates",{"2":{"6":1,"15":1,"89":1,"90":2,"97":1}}],["test",{"2":{"64":2,"94":1,"98":4}}],["tests",{"0":{"64":1},"2":{"63":2,"64":4,"97":3,"98":4}}],["testing",{"2":{"10":2,"19":2,"94":1}}],["tells",{"2":{"35":1,"36":1}}],["text",{"2":{"21":1,"23":1,"43":1,"44":7,"57":3}}],["total",{"2":{"101":12}}],["toggling",{"2":{"43":1}}],["tools",{"2":{"92":1,"94":1}}],["toolset",{"2":{"88":1}}],["tooltip",{"2":{"35":1,"36":1,"101":3}}],["tool",{"2":{"32":1}}],["top",{"2":{"30":2,"31":2,"44":1}}],["token>",{"2":{"55":1,"56":1}}],["tokenactionbar",{"2":{"52":2}}],["tokenids",{"2":{"56":1}}],["tokenid",{"2":{"51":2}}],["tokens",{"2":{"50":6,"55":1,"56":1,"67":3,"99":1,"101":2,"103":1}}],["tokenbarvalue",{"2":{"23":4}}],["token",{"0":{"80":1,"101":1},"2":{"23":4,"50":4,"51":2,"52":1,"55":2,"56":1,"67":3,"70":1,"94":1,"100":5,"101":33}}],["to",{"0":{"60":1},"1":{"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"6":1,"10":1,"15":1,"19":1,"21":4,"22":5,"23":7,"24":2,"25":1,"29":1,"32":4,"33":3,"35":3,"36":1,"37":2,"38":2,"39":2,"40":3,"42":2,"43":7,"44":3,"45":1,"46":3,"47":3,"48":4,"49":2,"50":2,"51":2,"52":2,"54":1,"57":3,"58":5,"59":2,"61":1,"62":1,"63":4,"64":2,"66":2,"67":9,"71":1,"73":2,"74":2,"76":1,"77":1,"81":1,"85":1,"87":6,"88":2,"90":2,"91":1,"92":4,"94":14,"96":1,"97":5,"98":5,"100":1,"101":20,"102":1,"103":1}}],["big",{"2":{"97":1}}],["biography",{"2":{"100":2}}],["bio",{"2":{"21":1,"26":1,"39":1,"70":1,"100":2}}],["bright",{"2":{"101":18}}],["bring",{"2":{"92":1}}],["branch",{"2":{"63":2}}],["brackets",{"2":{"57":1}}],["b",{"2":{"63":1,"94":1}}],["box",{"2":{"69":1}}],["bottom",{"2":{"44":1}}],["both",{"2":{"22":1,"35":1,"36":1,"52":1,"72":1}}],["boolean",{"2":{"23":2,"25":6,"27":1,"39":1,"43":1,"44":6,"101":30}}],["based",{"2":{"67":1,"91":1}}],["bashnpm",{"2":{"63":1,"64":2,"65":2,"87":1,"94":4,"95":3,"97":1,"98":8}}],["bashgit",{"2":{"63":4}}],["basic",{"2":{"5":1,"14":1,"30":1,"31":1}}],["background",{"0":{"69":1},"2":{"44":5,"69":1}}],["backdrop",{"2":{"44":1}}],["back",{"2":{"38":1,"67":1,"74":1}}],["bar3",{"2":{"101":10}}],["bar2",{"2":{"101":10}}],["bar1",{"2":{"101":10}}],["bar",{"2":{"23":1,"44":1,"52":1,"101":15}}],["bars",{"2":{"23":3,"67":1}}],["by",{"2":{"21":1,"22":1,"23":1,"33":1,"36":1,"45":1,"46":1,"47":1,"61":1,"67":1,"83":1,"92":1,"101":1}}],["build",{"2":{"94":1}}],["building",{"2":{"92":1,"94":1,"95":1,"96":1,"98":1}}],["but",{"2":{"36":2,"43":1,"52":1}}],["button>",{"2":{"37":1}}],["buttons",{"0":{"37":1},"2":{"21":1,"37":2,"44":1,"67":3}}],["button",{"2":{"21":2,"37":1,"44":14}}],["bugfix",{"2":{"63":2}}],["bugs",{"0":{"61":1}}],["bug",{"0":{"7":1,"11":1,"16":1,"20":1},"2":{"61":1,"66":1}}],["beginner",{"0":{"93":1},"1":{"94":1,"95":1},"2":{"97":1}}],["behalf",{"2":{"45":2}}],["below",{"2":{"38":1}}],["before",{"2":{"29":1,"33":1,"63":1,"85":1}}],["between",{"2":{"22":1,"25":1,"44":1,"57":1,"77":1,"89":1}}],["better",{"2":{"6":1,"15":1}}],["because",{"2":{"21":1}}],["be",{"2":{"21":7,"22":1,"23":4,"25":1,"26":1,"30":1,"31":1,"32":1,"33":1,"36":2,"37":3,"38":1,"41":1,"42":3,"43":3,"46":2,"47":2,"51":1,"52":3,"54":2,"55":1,"56":1,"58":1,"62":1,"63":1,"67":1,"72":1,"91":1,"103":1}}],["beacon",{"0":{"0":1,"86":1,"89":1,"93":1,"96":1},"1":{"1":1,"2":1,"94":1,"95":1,"97":1,"98":1},"2":{"0":1,"5":1,"14":1,"22":2,"32":4,"59":1,"66":1,"73":1,"84":1,"85":1,"86":1,"87":3,"88":2,"89":1,"90":1,"91":2,"92":3,"93":1,"94":3,"96":1}}],["vertically",{"2":{"101":1}}],["version",{"0":{"4":1,"8":1,"13":1,"17":1},"1":{"5":1,"6":1,"7":1,"9":1,"10":1,"11":1,"14":1,"15":1,"16":1,"18":1,"19":1,"20":1},"2":{"87":2}}],["validation",{"2":{"44":1}}],["validationmessage",{"0":{"82":1},"2":{"44":1}}],["valid",{"2":{"43":1}}],["value",{"2":{"21":1,"23":7,"33":2,"43":1,"44":5,"46":2,"47":2,"48":1,"50":1,"51":2,"82":1,"101":12}}],["values",{"2":{"21":1,"22":1,"23":1,"30":1,"31":1,"33":1,"42":1,"67":2}}],["various",{"2":{"22":2,"80":1,"87":1,"90":1,"91":1,"100":1,"101":1,"103":1}}],["vision",{"2":{"101":29}}],["visible",{"2":{"43":1,"101":1}}],["visual",{"2":{"80":1,"100":1,"101":1}}],["view",{"2":{"58":1,"91":1,"101":2}}],["virtual",{"0":{"81":1},"2":{"22":1,"34":1,"67":1,"80":1,"88":1,"89":1,"92":1,"101":1}}],["via",{"2":{"21":1,"30":2,"31":2,"51":1}}],["vitest",{"2":{"10":1,"19":1,"64":1,"98":1}}],["vite",{"2":{"5":1,"14":1,"94":7,"97":1}}],["void>",{"2":{"21":1,"23":1,"39":1,"40":1,"41":1,"45":1,"51":1,"54":1,"55":1,"56":1}}],["void",{"2":{"21":1,"23":1,"25":1,"26":1,"27":1,"28":1,"30":1,"31":1,"52":1,"58":1}}],["vtt",{"0":{"81":1},"2":{"9":1,"18":1,"21":1,"22":4,"27":1,"28":1,"32":1,"34":2,"35":3,"36":2,"39":1,"40":1,"48":1,"52":1,"58":1,"67":7,"74":1,"78":1,"83":1,"88":2,"89":2,"90":2,"91":3,"92":1,"94":4,"99":1,"100":1}}],["vue",{"2":{"5":1,"14":1,"94":2,"97":1}}],["flipped",{"2":{"101":2}}],["fliph",{"2":{"101":2}}],["flipv",{"2":{"101":2}}],["flexible",{"2":{"99":1,"103":1}}],["flexibility",{"2":{"22":1,"92":1}}],["facilitating",{"2":{"99":1}}],["facilitates",{"2":{"89":1}}],["fairness",{"2":{"83":1}}],["failure",{"2":{"33":1}}],["faq",{"0":{"67":1}}],["feature",{"2":{"62":1,"63":2,"66":1}}],["features",{"0":{"5":1,"9":1,"14":1,"18":1,"62":1,"90":1},"2":{"34":2,"62":1}}],["fullscreen",{"2":{"44":1}}],["full",{"2":{"40":1}}],["fully",{"2":{"29":1,"88":1,"92":1}}],["future",{"2":{"21":1}}],["functionality",{"2":{"94":2}}],["functionalities",{"2":{"89":1}}],["functions",{"2":{"21":2,"24":1,"67":1,"74":1,"94":1}}],["function",{"2":{"21":1,"23":3,"25":2,"32":1,"33":3,"38":1,"40":1,"42":1,"43":4,"44":1,"46":1,"47":1,"49":2,"50":1,"67":5,"73":1,"77":1,"87":2}}],["from",{"2":{"21":4,"22":2,"23":1,"24":1,"25":1,"30":1,"31":1,"32":2,"35":1,"38":1,"54":1,"63":1,"67":4,"76":1,"87":3,"92":1}}],["framework",{"2":{"5":1,"14":1,"88":1,"97":1}}],["final",{"2":{"102":2}}],["find",{"2":{"50":1,"57":1,"61":1}}],["figure",{"2":{"94":1,"97":1}}],["field",{"2":{"44":6,"100":1,"101":15}}],["fields",{"2":{"21":2,"100":1}}],["firebase",{"2":{"39":1,"40":1}}],["first",{"2":{"33":1,"101":10}}],["fixes",{"0":{"7":1,"11":1,"16":1,"20":1}}],["files",{"2":{"6":1,"15":1,"94":1,"95":1,"98":1}}],["fog",{"2":{"101":1}}],["fow",{"2":{"101":2}}],["folder",{"2":{"87":1}}],["follow",{"2":{"63":1,"65":1}}],["following",{"2":{"2":1,"21":1,"23":1,"24":1,"25":1,"46":1,"47":1,"85":1,"87":2,"94":4,"95":4,"97":2,"98":9,"100":1,"101":1,"102":1,"103":1}}],["fork",{"2":{"63":6}}],["forms",{"2":{"44":1}}],["form",{"2":{"42":1}}],["formulas",{"2":{"90":1}}],["formula",{"2":{"35":1,"51":2,"102":2}}],["formatting",{"2":{"95":1,"97":1,"98":1}}],["format",{"2":{"22":1,"42":1,"65":2,"73":1,"79":1,"95":1,"98":1}}],["for",{"2":{"0":1,"5":2,"6":2,"9":2,"10":1,"14":2,"15":2,"18":2,"19":1,"21":3,"22":5,"23":3,"25":1,"32":2,"33":1,"34":1,"35":1,"38":1,"42":1,"43":1,"44":25,"45":1,"51":1,"57":1,"58":4,"62":1,"63":1,"65":1,"66":2,"67":7,"75":1,"79":1,"87":6,"89":1,"90":1,"91":2,"94":2,"95":3,"97":1,"98":6,"100":4,"101":17,"102":2,"103":2}}],["night",{"2":{"101":15}}],["node",{"2":{"85":3}}],["note",{"2":{"25":1,"49":1,"58":1}}],["notes",{"2":{"21":1,"26":1,"70":1,"100":2,"101":1}}],["not",{"2":{"21":2,"23":3,"32":1,"36":2,"43":1,"44":1,"45":1,"48":1,"49":1,"51":1,"52":1,"82":1,"94":2}}],["null",{"2":{"30":2}}],["number",{"2":{"21":1,"23":4,"25":2,"30":3,"31":3,"44":2,"46":2,"47":2,"51":2,"54":2,"101":15,"102":7}}],["npcs",{"2":{"75":1}}],["npc",{"2":{"25":1}}],["npm",{"2":{"1":1,"2":1,"54":1,"87":4}}],["named",{"2":{"57":1}}],["names",{"2":{"21":1,"23":1,"42":1,"57":1}}],["name",{"2":{"21":1,"23":1,"46":1,"47":1,"51":2,"52":1,"67":1,"100":4,"101":10,"102":2,"103":2}}],["necessary",{"2":{"87":1,"92":1}}],["net",{"2":{"57":1}}],["needs",{"2":{"90":1}}],["needed",{"2":{"67":1}}],["need",{"2":{"21":1,"23":1,"32":1,"48":1,"85":1,"87":1,"94":2}}],["new",{"0":{"5":1,"9":1,"14":1,"18":1},"2":{"22":2,"32":1,"34":1,"42":2,"43":3,"47":1,"58":1,"62":1,"63":1,"67":2,"73":1,"87":1,"90":1,"92":1}}],["n",{"2":{"7":1,"11":1,"16":1,"20":1}}],["03",{"2":{"4":1,"8":1,"13":1,"17":1}}],["0",{"0":{"4":2,"8":2,"13":2,"17":2},"1":{"5":2,"6":2,"7":2,"9":2,"10":2,"11":2,"14":2,"15":2,"16":2,"18":2,"19":2,"20":2},"2":{"87":3}}],["100ms",{"2":{"49":1}}],["1d20+4",{"2":{"42":1}}],["17",{"2":{"4":1,"8":1,"13":1,"17":1}}],["1",{"0":{"4":1,"13":1,"86":1},"1":{"5":1,"6":1,"7":1,"14":1,"15":1,"16":1},"2":{"94":1,"97":1}}],["cdn",{"2":{"98":1}}],["ci",{"2":{"63":1,"97":2}}],["css",{"2":{"54":1,"95":1,"98":1}}],["center",{"2":{"44":1,"101":12}}],["customization",{"2":{"90":1}}],["custom",{"2":{"44":6,"51":3,"90":1,"91":1,"94":2}}],["currentside",{"2":{"101":2}}],["currentprogressstep",{"2":{"44":1}}],["currentuserid",{"2":{"25":1}}],["current",{"2":{"23":1,"27":1,"44":1,"50":2,"101":4}}],["currently",{"2":{"21":1,"43":1,"50":1}}],["clone",{"2":{"63":3}}],["closebuttonarialabel",{"2":{"44":1}}],["close",{"2":{"44":4}}],["clicked",{"2":{"37":1,"67":1}}],["cases",{"2":{"103":1}}],["casting",{"2":{"22":1}}],["cause",{"2":{"43":1}}],["calculations",{"2":{"67":1,"90":1}}],["calculation",{"2":{"51":1}}],["calculated",{"2":{"22":1,"72":1}}],["calls",{"2":{"49":1}}],["called",{"2":{"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"87":1}}],["campaign",{"2":{"25":2,"48":1,"58":1}}],["campaignid",{"2":{"25":1}}],["categoryname",{"2":{"25":1,"30":1,"31":1}}],["cannot",{"2":{"94":1}}],["cancelbuttontext",{"2":{"44":1}}],["cancelbuttoncolor",{"2":{"44":1}}],["cancelbuttonarialabel",{"2":{"44":1}}],["cancel",{"2":{"44":5}}],["can",{"2":{"21":4,"22":2,"23":1,"30":1,"31":1,"37":1,"38":1,"39":1,"41":1,"42":1,"43":1,"45":1,"46":1,"47":1,"50":1,"51":1,"52":1,"54":2,"55":1,"56":1,"67":5,"72":1,"85":1,"87":1,"91":1,"92":1,"94":1,"95":1,"97":2,"98":1,"101":1}}],["cryptographic",{"2":{"83":1}}],["criteria",{"2":{"82":1}}],["creating",{"2":{"43":1,"89":1}}],["creation",{"2":{"22":1}}],["creature",{"2":{"25":1}}],["created",{"2":{"25":1}}],["create",{"2":{"22":1,"63":4,"88":1,"90":1,"92":1}}],["crucial",{"2":{"22":1}}],["codebase",{"2":{"63":1}}],["code",{"0":{"63":1,"65":1},"2":{"63":1,"65":2,"66":1,"94":1,"97":1}}],["coordinates",{"2":{"30":3,"31":2,"101":1}}],["corresponding",{"2":{"29":1,"58":1}}],["correctly",{"2":{"23":1}}],["could",{"2":{"26":1}}],["column",{"2":{"44":1}}],["color",{"2":{"27":1,"44":5,"69":1,"101":10}}],["colortheme",{"2":{"25":1,"27":1}}],["collection",{"2":{"21":1}}],["connecting",{"2":{"94":1}}],["connection",{"2":{"94":1}}],["connected",{"2":{"51":1}}],["configuration",{"2":{"67":1}}],["confirmed",{"2":{"58":1}}],["confirmations",{"2":{"67":1}}],["confirmation",{"2":{"58":1}}],["confirmbuttontext",{"2":{"44":1}}],["confirmbuttoncolor",{"2":{"44":1}}],["confirmbuttonarialabel",{"2":{"44":1}}],["confirm",{"2":{"44":4}}],["conventions",{"2":{"63":1,"65":1}}],["converted",{"2":{"103":1}}],["converting",{"2":{"103":1}}],["convert",{"2":{"90":1,"91":1}}],["converts",{"2":{"57":1}}],["convertlegacymacroattributesargs",{"0":{"103":1},"2":{"33":1,"67":2,"103":3}}],["convertlegacymacroattributes",{"0":{"33":1,"73":1},"2":{"32":1,"33":1,"67":1}}],["conversion",{"2":{"22":1}}],["conjunction",{"2":{"54":1}}],["controlledby",{"2":{"101":2}}],["controlling",{"2":{"43":1,"101":1}}],["control",{"2":{"101":1,"103":1}}],["controls",{"2":{"75":1}}],["contributions",{"0":{"63":1},"2":{"66":1}}],["contributing",{"0":{"59":1},"1":{"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"59":1,"66":1}}],["contribute",{"0":{"60":1},"1":{"61":1,"62":1,"63":1,"64":1,"65":1}}],["content",{"2":{"36":1,"43":2,"44":1}}],["contents",{"2":{"35":1,"87":1}}],["context",{"2":{"21":1,"67":1}}],["container",{"2":{"54":2}}],["contain",{"2":{"39":2,"50":1}}],["contains",{"2":{"21":1,"25":1,"26":1,"50":3,"100":2,"101":1,"102":1,"103":1}}],["containing",{"2":{"21":2,"23":1,"30":1,"31":1,"42":1,"43":1,"102":1,"103":1}}],["come",{"2":{"95":1,"98":1}}],["combination",{"2":{"39":1}}],["comprehensive",{"2":{"90":1,"91":1,"99":1}}],["compendiumrequest",{"0":{"48":1},"2":{"48":2,"49":1}}],["compendium",{"2":{"25":1,"30":4,"31":4,"48":2,"49":1,"58":2}}],["compendiumdropdata",{"2":{"25":2}}],["compatibility",{"2":{"22":1,"67":1,"91":1}}],["computes",{"2":{"40":1}}],["computed=",{"2":{"36":2}}],["computedresult",{"2":{"23":1}}],["computed",{"0":{"23":1,"36":1,"72":1},"2":{"22":3,"23":5,"33":1,"36":1,"42":1,"46":5,"47":5,"67":2,"90":1,"91":2,"92":1,"102":1}}],["computing",{"2":{"36":1}}],["computations",{"2":{"22":1}}],["component",{"2":{"22":1}}],["components",{"0":{"22":1,"91":1},"2":{"22":2,"91":3,"94":1}}],["composed",{"2":{"22":1,"91":1}}],["complex",{"2":{"6":1,"15":1,"22":3,"36":1,"67":1,"90":1,"97":1}}],["commit",{"2":{"63":4}}],["commonly",{"2":{"32":1,"67":2}}],["communication",{"0":{"66":1},"2":{"22":1,"77":1,"89":1}}],["comments",{"2":{"6":1,"15":1}}],["commands",{"0":{"95":1,"98":1},"2":{"38":1,"67":1,"74":1,"87":1,"95":1,"98":1}}],["command",{"2":{"2":1,"87":1,"94":2,"95":3,"97":1,"98":8}}],["cypress",{"2":{"10":1,"19":1,"64":1,"98":3}}],["checks",{"2":{"97":1}}],["checkout",{"2":{"63":1}}],["check",{"2":{"58":2,"63":1,"97":3,"98":1}}],["checking",{"2":{"10":1,"19":1,"97":1,"98":1}}],["challenges",{"2":{"75":1}}],["changed",{"2":{"26":3,"27":1,"39":1,"40":1}}],["change",{"2":{"22":1}}],["changes",{"2":{"22":1,"27":1,"28":1,"39":1,"40":1,"63":9,"94":1}}],["changelog",{"0":{"3":1,"12":1},"1":{"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1}}],["characterid",{"2":{"39":1,"43":2,"45":2,"46":2,"47":2,"50":1,"52":1,"53":1,"55":1,"103":2}}],["character>",{"2":{"26":1,"39":1,"40":1}}],["characters",{"2":{"22":1,"25":1,"67":1,"94":3,"99":1}}],["character",{"0":{"70":1,"71":1,"100":1},"2":{"21":5,"22":5,"23":6,"25":6,"26":5,"27":1,"30":1,"31":1,"37":1,"38":1,"39":4,"40":5,"45":3,"46":1,"47":1,"50":3,"51":1,"52":1,"53":1,"55":2,"67":7,"71":1,"77":1,"80":1,"88":1,"89":2,"90":2,"92":2,"94":1,"100":10,"101":2,"103":9}}],["chat",{"2":{"21":4,"42":2,"43":3,"67":1}}],["i",{"2":{"86":1,"94":1}}],["immediately",{"2":{"97":1}}],["implementing",{"2":{"97":1}}],["implement",{"2":{"90":1,"91":1}}],["imports",{"2":{"87":1}}],["import",{"0":{"87":1},"2":{"87":3}}],["improved",{"2":{"10":1,"19":1}}],["improvements",{"0":{"6":1,"10":1,"15":1,"19":1}}],["imgsrc",{"2":{"101":2}}],["img",{"2":{"51":2}}],["imagewidth",{"2":{"44":1}}],["imageurl",{"2":{"44":1}}],["imageheight",{"2":{"44":1}}],["image",{"2":{"44":4,"51":1,"100":1,"101":1}}],["imagealt",{"2":{"44":1}}],["icon",{"2":{"44":1}}],["iconcolor",{"2":{"44":1}}],["ignored",{"2":{"43":1}}],["iframe",{"2":{"30":2,"31":1}}],["if",{"2":{"23":3,"30":1,"42":1,"43":1,"58":5,"61":1,"85":1,"101":5}}],["issues",{"2":{"66":2}}],["issue",{"2":{"61":2,"62":1}}],["isdrawing",{"2":{"101":2}}],["isdismissed",{"2":{"44":2}}],["isdenied",{"2":{"44":2}}],["isconfirmed",{"2":{"44":2}}],["is",{"0":{"89":1},"2":{"21":2,"22":1,"23":3,"25":1,"26":2,"27":2,"28":1,"29":2,"30":4,"31":3,"33":3,"35":3,"36":1,"42":2,"43":3,"44":1,"46":1,"47":1,"48":1,"51":1,"52":2,"57":2,"58":4,"67":4,"88":1,"89":1,"91":1,"93":1,"94":1,"96":1,"97":1,"101":7,"102":1}}],["identifier",{"2":{"100":1,"101":1,"103":1}}],["ids",{"2":{"56":1}}],["id",{"2":{"21":1,"26":1,"46":1,"47":1,"50":2,"53":1,"67":1,"100":3,"101":4,"103":1}}],["info",{"2":{"94":1}}],["information",{"2":{"42":1,"50":1,"67":1,"71":1,"87":3}}],["including",{"2":{"67":1,"97":1,"100":1,"102":1}}],["includes",{"2":{"67":1,"101":1,"103":1}}],["include",{"2":{"34":1,"39":1,"48":1}}],["included",{"2":{"21":2,"37":1}}],["individual",{"2":{"102":2}}],["indicates",{"2":{"101":5}}],["indicating",{"2":{"23":2}}],["index",{"2":{"44":1}}],["invoked",{"2":{"33":1}}],["inputvalue",{"2":{"44":1}}],["inputplaceholder",{"2":{"44":1}}],["inputs",{"2":{"44":1}}],["inputoptions",{"2":{"44":1}}],["inputlabel",{"2":{"44":1}}],["inputautotrim",{"2":{"44":1}}],["inputattributes",{"2":{"44":1}}],["input",{"2":{"23":1,"44":10,"82":1}}],["in",{"2":{"21":3,"22":3,"23":3,"25":2,"28":1,"32":1,"33":2,"39":2,"40":1,"41":1,"42":3,"44":1,"45":1,"48":2,"51":3,"52":2,"54":1,"57":2,"58":2,"59":1,"61":1,"62":1,"67":7,"70":1,"71":1,"78":1,"83":1,"85":1,"87":5,"94":4,"95":1,"97":1,"98":1,"99":1,"101":1,"102":1}}],["initiative",{"2":{"51":1}}],["initialize",{"2":{"77":1,"92":1}}],["initialized",{"2":{"29":1}}],["initialization",{"2":{"33":1}}],["initial",{"2":{"5":1,"7":1,"11":1,"14":1,"16":1,"20":1,"25":1,"33":1,"44":1}}],["initrelay",{"0":{"77":1},"2":{"21":1,"23":1,"38":1,"87":2}}],["introduction",{"0":{"88":1},"1":{"89":1,"90":1,"91":1,"92":1}}],["intended",{"2":{"100":1}}],["internet",{"2":{"81":1}}],["interface",{"2":{"67":2}}],["interest",{"2":{"59":1}}],["interact",{"2":{"38":1,"67":1}}],["interaction",{"2":{"103":1}}],["interactions",{"2":{"22":1,"89":1,"90":1,"99":1,"101":1}}],["interacting",{"2":{"67":1}}],["interactivity",{"2":{"34":1}}],["interactive",{"2":{"22":1,"37":1,"67":1,"88":1,"89":1,"92":1}}],["integrated",{"2":{"88":1,"92":1}}],["integrate",{"2":{"22":1,"90":2}}],["integration",{"2":{"9":1,"10":1,"18":1,"19":1}}],["into",{"2":{"21":1,"23":2,"49":1,"57":1}}],["instances",{"2":{"32":1}}],["instant",{"2":{"2":1}}],["installing",{"2":{"87":2,"94":1}}],["installed",{"2":{"85":2,"94":1}}],["installation",{"0":{"84":1},"1":{"85":1,"86":1,"87":1}}],["install",{"0":{"1":1,"87":1},"2":{"1":1,"85":1,"87":4,"94":4}}],["its",{"2":{"100":1}}],["itself",{"2":{"21":1,"23":1,"103":1}}],["item",{"2":{"30":2,"31":1,"51":3}}],["it",{"2":{"2":1,"21":1,"22":1,"23":1,"32":1,"33":2,"43":1,"44":2,"46":1,"47":1,"48":1,"49":1,"54":1,"56":1,"58":2,"61":1,"62":1,"67":2,"89":1,"100":1}}],["aura",{"2":{"101":10}}],["aura2",{"2":{"101":10}}],["aura1",{"2":{"101":10}}],["authenticity",{"2":{"83":1}}],["author",{"2":{"36":1}}],["authors",{"2":{"23":1}}],["automated",{"2":{"90":1}}],["automates",{"2":{"78":1}}],["automatically",{"2":{"22":1,"37":1,"40":1,"44":1,"48":1,"49":1,"54":1}}],["autolinktext",{"0":{"57":1},"2":{"57":3}}],["auto",{"2":{"44":1}}],["autonomy",{"2":{"33":1}}],["agility",{"2":{"100":1}}],["avatar",{"2":{"100":3}}],["available",{"2":{"23":3,"50":1}}],["after",{"2":{"94":1,"97":1}}],["amp",{"0":{"87":1},"2":{"75":1,"97":2}}],["a>`",{"2":{"57":1}}],["applied",{"2":{"101":2}}],["application",{"2":{"87":4}}],["appearance",{"2":{"101":1}}],["appreciate",{"2":{"59":1}}],["approach",{"2":{"33":1,"96":1}}],["appropriate",{"2":{"22":1}}],["api",{"2":{"50":1}}],["ability",{"2":{"97":1}}],["abilities",{"2":{"22":1,"71":1}}],["about",{"2":{"50":1,"87":3,"101":1}}],["at",{"2":{"49":1,"94":1}}],["attach",{"2":{"42":1}}],["attack",{"2":{"35":1,"42":1}}],["attribute",{"2":{"33":2,"35":1,"37":2,"67":2,"101":3,"103":4}}],["attributes",{"0":{"32":1},"1":{"33":1},"2":{"22":6,"23":1,"26":2,"32":3,"34":1,"39":3,"40":3,"44":1,"50":1,"67":6,"70":1,"71":1,"73":1,"80":1,"90":1,"91":3,"99":1,"100":4,"103":2}}],["ajax",{"2":{"48":1}}],["awaited",{"2":{"41":1,"54":1,"55":1,"56":1}}],["alert",{"2":{"69":1}}],["alternate",{"2":{"44":1}}],["align",{"2":{"32":1}}],["along",{"2":{"23":2,"44":1,"67":1}}],["also",{"2":{"21":1,"43":2,"54":1,"56":1,"58":2,"100":1}}],["allowed",{"2":{"44":3}}],["allows",{"2":{"22":1,"81":1}}],["allowing",{"2":{"22":1,"35":1,"89":1}}],["allow",{"2":{"22":2,"24":1,"34":1,"101":6}}],["all",{"2":{"21":2,"25":1,"38":1,"41":1,"44":1,"50":2,"55":1,"63":1}}],["act",{"2":{"76":1}}],["activating",{"2":{"22":1}}],["actionfromhost",{"2":{"53":1}}],["actionid",{"2":{"52":1}}],["action=",{"2":{"37":1}}],["action",{"2":{"21":3,"37":2,"45":3,"52":8,"67":1}}],["actions",{"0":{"21":1},"2":{"6":1,"15":1,"21":7,"22":4,"37":1,"45":1,"53":2,"67":4,"90":2,"91":2,"92":1,"97":1}}],["according",{"2":{"48":2}}],["accepts",{"2":{"43":1}}],["accessing",{"0":{"86":1}}],["accessible",{"2":{"67":1}}],["accessed",{"2":{"23":1}}],["access",{"2":{"21":1,"58":2,"94":3}}],["across",{"2":{"41":1}}],["architecture",{"2":{"90":1}}],["arrays",{"2":{"50":1}}],["array",{"2":{"46":1,"47":1,"48":1,"50":2,"56":1,"102":1}}],["aria",{"2":{"44":5}}],["arialabel",{"2":{"44":1}}],["arises",{"2":{"32":1}}],["arg",{"2":{"52":2}}],["arg2",{"2":{"37":1}}],["arg1",{"2":{"37":1}}],["argument",{"2":{"23":1,"24":1,"29":1,"40":1}}],["arguments",{"2":{"21":2,"23":2,"37":1,"46":2,"47":2,"67":2,"103":1}}],["args=",{"2":{"37":1}}],["args",{"2":{"21":1,"23":2,"37":1,"45":2,"46":2,"47":2,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1}}],["area",{"2":{"52":1}}],["are",{"2":{"21":5,"22":4,"23":4,"30":2,"31":1,"32":1,"34":1,"37":1,"40":1,"41":1,"42":2,"43":1,"44":1,"49":1,"50":1,"59":1,"67":11,"94":1}}],["aspects",{"2":{"99":1}}],["associated",{"2":{"36":1,"42":1}}],["assignable",{"2":{"67":1}}],["assign",{"2":{"23":1}}],["asynchronous",{"2":{"21":1}}],["as",{"2":{"21":2,"22":2,"23":3,"25":2,"32":1,"36":1,"37":1,"40":1,"42":1,"43":1,"44":2,"48":1,"55":2,"56":1,"61":2,"76":1,"94":4,"97":3,"100":1,"101":1}}],["angle",{"2":{"101":4}}],["animation",{"2":{"44":1}}],["an",{"2":{"21":3,"23":3,"32":1,"33":1,"36":1,"42":3,"43":3,"44":1,"46":1,"47":1,"48":1,"51":1,"52":1,"58":2,"61":1,"62":1,"70":1,"81":1,"82":1,"87":1,"96":2,"100":1,"102":2}}],["any>",{"2":{"48":1,"100":1}}],["any",{"2":{"21":1,"23":2,"28":1,"33":1,"39":1,"41":1,"44":1,"45":1,"50":1,"51":1,"67":1}}],["and",{"2":{"5":1,"6":1,"9":1,"10":1,"14":1,"15":1,"18":1,"19":1,"21":2,"22":8,"23":5,"25":1,"26":1,"29":1,"30":3,"31":2,"33":1,"34":3,"35":2,"36":1,"37":2,"39":2,"40":1,"42":3,"43":3,"44":1,"49":1,"50":1,"51":1,"57":1,"58":1,"61":1,"62":1,"63":2,"65":1,"66":1,"67":9,"70":1,"71":1,"72":1,"75":1,"77":1,"80":1,"83":1,"87":1,"88":3,"89":4,"90":9,"91":5,"92":5,"94":4,"95":1,"97":1,"98":2,"99":3,"100":2,"101":1,"102":2,"103":2}}],["adv",{"2":{"101":2}}],["advancedport",{"2":{"94":1}}],["advanced",{"0":{"96":1},"1":{"97":1,"98":1},"2":{"5":1,"14":1,"22":1,"33":1,"91":1,"94":1,"96":2,"97":1,"101":1}}],["adapting",{"2":{"92":1}}],["addactionstohost",{"0":{"52":1},"2":{"52":2}}],["adds",{"2":{"51":1,"52":1}}],["addtotracker",{"0":{"51":1},"2":{"51":2,"67":1}}],["add",{"2":{"35":1,"36":1,"51":2,"87":2,"94":1,"97":1}}],["additionally",{"2":{"21":1}}],["additional",{"2":{"21":3,"23":1,"37":1}}],["added",{"2":{"6":1,"15":1,"21":1,"51":1}}],["a",{"2":{"2":1,"7":1,"11":1,"16":1,"20":1,"21":11,"22":3,"23":7,"25":2,"26":2,"28":1,"30":2,"31":2,"32":4,"33":2,"35":1,"36":4,"38":3,"39":1,"40":1,"41":1,"42":3,"43":7,"44":4,"45":1,"46":3,"47":3,"48":1,"49":1,"50":1,"51":5,"52":2,"53":1,"54":1,"55":2,"56":2,"57":5,"58":5,"61":1,"62":1,"63":7,"67":1,"70":1,"71":3,"73":1,"74":1,"78":1,"79":2,"80":2,"82":1,"83":1,"87":2,"88":5,"89":1,"90":1,"91":1,"93":1,"94":3,"97":3,"100":4,"101":5}}],["square",{"2":{"57":1,"101":6}}],["swal2options",{"2":{"44":1}}],["sweetalert2",{"2":{"44":1}}],["sweetalertresult",{"2":{"44":1}}],["sweetalert",{"2":{"44":1,"67":1}}],["sanity",{"2":{"97":1}}],["sandbox",{"2":{"25":2,"94":5}}],["save",{"2":{"94":1}}],["same",{"2":{"42":1,"97":1}}],["span>",{"2":{"35":1,"36":1}}],["span",{"2":{"35":1,"36":1}}],["specialized",{"2":{"89":1}}],["specifies",{"2":{"101":1}}],["specified",{"2":{"38":1,"45":1,"51":1}}],["specific",{"2":{"22":1,"25":1,"52":1,"53":1,"67":1,"82":1,"90":1}}],["specify",{"2":{"37":1}}],["spells",{"2":{"22":1}}],["software",{"2":{"89":1}}],["some",{"2":{"59":1}}],["something",{"2":{"54":1,"57":1}}],["someone",{"2":{"28":1}}],["so",{"2":{"30":1,"31":1,"40":1}}],["side",{"2":{"101":1}}],["sided",{"2":{"101":2}}],["sides",{"2":{"101":3,"102":3}}],["sight",{"2":{"101":2}}],["signature",{"2":{"35":1,"36":1}}],["site",{"2":{"58":1}}],["size",{"2":{"54":1,"80":1}}],["similar",{"2":{"57":1}}],["simultaneously",{"2":{"52":1}}],["simple",{"2":{"22":2,"23":1}}],["single",{"2":{"49":1,"51":1,"56":1}}],["singlesheet",{"2":{"25":1}}],["system",{"2":{"22":1,"38":1,"42":1,"83":1}}],["synchronous",{"2":{"21":1}}],["smooth",{"2":{"22":1}}],["shortname",{"2":{"48":1}}],["showplayers",{"2":{"101":12}}],["showname",{"2":{"101":2}}],["showdenybutton",{"2":{"44":1}}],["showconfirmbutton",{"2":{"44":1}}],["showclosebutton",{"2":{"44":1}}],["showcancelbutton",{"2":{"44":1}}],["show",{"2":{"44":5,"101":10}}],["should",{"2":{"21":1,"23":3,"36":1,"52":2,"63":1}}],["shared",{"2":{"25":1,"28":1,"41":1,"54":1}}],["sharedsettings",{"2":{"25":2}}],["sheetaction",{"2":{"52":3}}],["sheets",{"2":{"22":2,"88":1,"89":2,"90":2,"92":2}}],["sheet",{"0":{"71":1,"93":1,"96":1},"1":{"94":1,"95":1,"97":1,"98":1},"2":{"5":1,"6":1,"14":1,"15":1,"21":2,"22":1,"23":1,"24":1,"25":4,"30":1,"31":1,"32":6,"33":2,"37":3,"38":1,"41":1,"45":1,"48":1,"54":1,"67":7,"73":1,"74":1,"77":1,"93":3,"94":5,"95":1,"96":3,"97":6,"98":1}}],["s",{"2":{"21":3,"26":4,"27":2,"32":1,"33":2,"39":1,"48":2,"50":1,"53":1,"55":1,"67":1,"71":1,"87":2,"90":1,"94":1,"100":4,"101":5,"103":1}}],["successfully",{"2":{"94":1}}],["such",{"2":{"21":1,"22":2,"25":1,"32":1,"37":1,"94":2,"100":1,"101":1}}],["sure",{"2":{"94":1,"97":1}}],["submit",{"2":{"66":1}}],["submitting",{"2":{"63":1}}],["substituted",{"2":{"33":1}}],["subsequent",{"2":{"30":1,"31":1}}],["suggestions",{"2":{"62":1}}],["suggesting",{"0":{"62":1}}],["supplied",{"2":{"58":1}}],["supported",{"2":{"43":1}}],["supports",{"2":{"22":1,"100":1}}],["support",{"2":{"5":1,"6":1,"9":1,"14":1,"15":1,"18":1,"36":1,"90":1}}],["summary",{"2":{"22":1,"23":1}}],["status",{"2":{"101":7}}],["statusmarkers",{"2":{"101":2}}],["statement",{"2":{"87":1}}],["staging",{"2":{"94":1}}],["started",{"0":{"92":1},"2":{"59":1,"92":1,"93":1,"94":1}}],["start",{"2":{"2":1,"93":1,"94":2,"96":1}}],["story",{"2":{"75":1}}],["stores",{"2":{"97":1}}],["store",{"2":{"39":1,"40":2}}],["style",{"0":{"65":1},"2":{"63":1,"65":1}}],["styling",{"2":{"9":1,"18":1,"94":1}}],["steps",{"2":{"44":2,"85":1,"87":1,"94":1,"97":2}}],["step",{"0":{"86":1,"87":1},"2":{"44":2,"92":1,"97":1}}],["strength",{"2":{"100":1}}],["streamline",{"2":{"88":1,"92":1}}],["strategy",{"2":{"32":1}}],["structure",{"2":{"32":1,"67":2}}],["string>",{"2":{"43":1,"57":1}}],["strings",{"2":{"21":1,"42":1,"56":1}}],["string",{"2":{"21":3,"23":10,"25":6,"27":1,"28":1,"29":3,"30":2,"31":2,"41":1,"42":4,"43":4,"44":5,"45":3,"46":6,"47":6,"48":4,"49":1,"50":2,"51":6,"52":7,"53":2,"55":1,"57":1,"58":1,"87":1,"100":6,"101":30,"102":4,"103":2}}],["scratch",{"2":{"92":1}}],["script",{"2":{"2":1,"78":1}}],["schema",{"2":{"48":1}}],["scenario",{"2":{"32":1}}],["scss",{"2":{"9":1,"18":1,"94":2,"95":1,"97":1,"98":1}}],["service",{"2":{"48":2,"49":1}}],["serves",{"2":{"32":1}}],["server",{"2":{"2":1,"35":1,"36":2,"94":7}}],["selected",{"2":{"50":3}}],["select",{"2":{"44":1}}],["second",{"2":{"101":10}}],["secret",{"2":{"43":3}}],["section",{"2":{"22":1,"91":1,"99":1}}],["see",{"2":{"42":1,"62":1,"101":1}}],["sensitivity",{"2":{"101":3}}],["sent",{"2":{"40":1}}],["send",{"2":{"43":1,"74":1}}],["sends",{"2":{"39":1,"40":1}}],["sending",{"2":{"35":1,"38":1,"67":1}}],["several",{"2":{"34":1,"56":1,"91":1,"97":1}}],["search",{"2":{"33":1}}],["setcontainersize",{"0":{"54":1},"2":{"54":1}}],["setcomputed",{"0":{"47":1},"2":{"47":2}}],["setting",{"2":{"23":1,"28":1,"77":1}}],["settingssheet",{"2":{"25":1}}],["settings",{"2":{"22":1,"25":3,"28":1,"41":2,"54":1,"94":1}}],["set",{"2":{"23":5,"25":1,"40":1,"43":1,"47":3,"48":1,"72":1,"74":1,"84":1,"90":1,"92":1,"94":5,"95":1,"97":1,"98":1}}],["setup",{"2":{"5":1,"14":1}}],["sdk",{"0":{"86":1,"89":1},"2":{"0":1,"5":1,"14":1,"22":3,"33":1,"59":1,"66":1,"77":1,"84":1,"85":1,"86":1,"87":3,"88":2,"89":2,"91":2,"92":3,"94":3,"99":1,"103":1}}],["rulesystem",{"2":{"48":1}}],["runs",{"2":{"75":1}}],["running",{"0":{"64":1},"2":{"98":2}}],["run",{"0":{"2":1},"2":{"2":2,"63":2,"64":4,"65":2,"87":2,"94":6,"95":3,"97":4,"98":9}}],["routing",{"2":{"97":1}}],["round",{"2":{"51":1}}],["root",{"2":{"87":1}}],["row",{"2":{"44":1}}],["role",{"2":{"67":1,"71":1,"81":1}}],["roles",{"2":{"22":1}}],["rolled",{"2":{"102":3}}],["rollresult",{"2":{"42":1}}],["rollresults",{"0":{"102":1},"2":{"21":1,"42":1,"102":3}}],["rollname=",{"2":{"35":1,"36":1}}],["rollname",{"0":{"35":1},"2":{"35":1,"36":1,"42":1,"102":2}}],["rolling",{"2":{"22":2,"94":1}}],["rolls",{"0":{"34":1},"1":{"35":1,"36":1,"37":1},"2":{"21":4,"22":4,"34":1,"37":2,"42":2,"67":2,"83":1,"91":1,"102":4}}],["roll20",{"2":{"9":1,"18":1,"57":1,"86":1,"87":3,"94":5}}],["roll",{"0":{"37":1,"42":1,"79":1,"83":1},"2":{"6":1,"15":1,"21":3,"22":1,"34":1,"35":6,"36":5,"37":1,"42":9,"43":1,"67":2,"79":1,"89":1,"90":6,"91":1,"97":1,"99":1,"102":6,"103":1}}],["radius",{"2":{"101":10}}],["range",{"2":{"22":1}}],["rapid",{"2":{"5":1,"14":1}}],["rich",{"2":{"6":1,"15":1,"92":1,"97":1}}],["real",{"2":{"89":1,"90":1}}],["re",{"2":{"88":1}}],["refer",{"2":{"87":3}}],["record",{"2":{"48":1,"100":2}}],["receive",{"2":{"21":2,"23":1}}],["receives",{"2":{"21":1,"23":2}}],["retrieves",{"2":{"53":1}}],["retrieve",{"2":{"46":2,"67":1}}],["returninputvalueondeny",{"2":{"44":1}}],["returned",{"2":{"42":2,"50":1}}],["returns",{"2":{"29":1,"38":1,"41":1,"42":1,"43":1,"44":1,"46":1,"47":1,"50":1,"54":1,"55":1,"56":1,"57":1,"67":1}}],["return",{"2":{"21":1,"23":3,"33":1,"38":1,"44":1,"49":2,"50":1}}],["reverse",{"2":{"44":1}}],["reversebuttons",{"2":{"44":1}}],["requests",{"2":{"66":3}}],["requestid",{"2":{"52":1}}],["requested",{"2":{"49":1}}],["request",{"2":{"30":1,"31":1,"48":1,"49":1,"63":2}}],["requires",{"2":{"24":1,"43":1,"50":1}}],["required",{"2":{"23":1,"46":1,"47":1,"103":1}}],["repetitive",{"2":{"78":1}}],["reproduce",{"2":{"61":1}}],["representation",{"2":{"70":1,"80":1,"100":1}}],["represent",{"2":{"50":1,"67":2}}],["representing",{"2":{"50":1,"55":1,"100":1}}],["represents",{"2":{"23":1,"99":1,"101":7}}],["reports",{"2":{"66":1}}],["report",{"2":{"61":1}}],["reporting",{"0":{"61":1}}],["repository",{"2":{"0":1,"61":1,"62":1,"63":2}}],["replace",{"2":{"35":1}}],["responsive",{"2":{"88":1}}],["respond",{"2":{"22":1,"24":1,"91":1}}],["resize",{"2":{"54":1}}],["resizesensor",{"2":{"54":1}}],["resolves",{"2":{"38":1,"42":1,"46":1,"47":1}}],["resorting",{"2":{"33":1}}],["result",{"2":{"35":3,"36":1,"42":1,"102":4}}],["results",{"2":{"21":1,"22":1,"34":1,"35":1,"36":1,"42":2,"44":2,"67":1,"79":1,"90":1,"91":1,"99":1,"102":9,"103":1}}],["regardless",{"2":{"21":1,"50":1}}],["related",{"2":{"101":1}}],["relay",{"2":{"9":1,"18":1,"29":1,"38":1,"77":1,"92":1}}],["reloading",{"2":{"95":1,"98":1}}],["reloads",{"2":{"25":1}}],["relevant",{"2":{"71":1}}],["release",{"2":{"4":1,"5":1,"7":1,"8":1,"11":1,"13":1,"14":1,"16":1,"17":1,"20":1,"97":1}}],["rely",{"2":{"23":1}}],["damage",{"2":{"37":2,"42":1}}],["data",{"0":{"35":1,"36":1},"2":{"21":1,"23":2,"25":2,"26":2,"29":1,"30":1,"31":1,"35":2,"36":4,"37":4,"39":1,"40":2,"42":1,"45":1,"48":1,"49":2,"67":5,"94":1,"97":1,"103":2}}],["date",{"2":{"4":1,"8":1,"13":1,"17":1}}],["drawing",{"2":{"101":1}}],["dragon",{"2":{"57":2}}],["dragdata",{"2":{"30":2}}],["drag",{"2":{"30":1}}],["dragged",{"2":{"30":1}}],["dropdata",{"2":{"31":1}}],["drop",{"2":{"31":1}}],["dropped",{"2":{"31":1}}],["during",{"2":{"25":1,"32":1,"33":1}}],["dim",{"2":{"101":4}}],["dimradius",{"2":{"101":2}}],["directional",{"2":{"101":18}}],["directly",{"2":{"90":1}}],["digital",{"2":{"71":1}}],["distance",{"2":{"44":1,"101":16}}],["dismiss",{"2":{"44":2}}],["displays",{"2":{"67":1}}],["display",{"2":{"35":1,"44":2,"58":1,"90":1,"91":1}}],["displaying",{"2":{"35":2,"79":1,"102":1}}],["displayed",{"2":{"22":1,"34":1,"82":1,"101":1}}],["dispatch",{"0":{"38":1,"74":1},"1":{"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1},"2":{"21":4,"23":3,"25":2,"26":2,"27":2,"30":3,"31":3,"38":2,"67":2}}],["different",{"2":{"99":1}}],["diff",{"2":{"40":1}}],["dice",{"2":{"22":2,"36":1,"79":1,"83":1,"94":1,"102":12}}],["dynamically",{"2":{"72":1,"91":2}}],["dynamic",{"2":{"22":2,"34":1,"88":1,"90":1}}],["don",{"2":{"85":1}}],["does",{"2":{"23":1,"36":1,"45":1,"48":1,"49":1,"82":1}}],["do",{"2":{"21":1,"67":1,"94":3}}],["documentation",{"2":{"0":1,"44":1,"50":1,"85":1,"87":3,"92":1}}],["docs",{"0":{"0":1},"1":{"1":1,"2":1},"2":{"2":2}}],["depend",{"2":{"94":2}}],["dependencies",{"0":{"1":1},"2":{"22":1,"87":1,"94":3}}],["default",{"2":{"55":1,"94":1}}],["defines",{"2":{"67":1,"103":1}}],["define",{"2":{"22":1,"23":1,"67":1,"90":1,"91":2,"92":1}}],["defined",{"2":{"21":1,"23":1,"33":2,"67":2}}],["debounced",{"2":{"49":1}}],["debouncedcompendiumrequest",{"0":{"49":1},"2":{"49":2}}],["design",{"2":{"90":1}}],["designed",{"2":{"88":1}}],["designated",{"2":{"45":1,"52":1,"67":1}}],["descriptive",{"2":{"63":1}}],["descriptions",{"2":{"99":1}}],["description",{"2":{"23":2,"44":1,"62":1,"63":4}}],["described",{"2":{"44":1}}],["denied",{"2":{"44":1}}],["denybuttontext",{"2":{"44":1}}],["denybuttoncolor",{"2":{"44":1}}],["denybuttonarialabel",{"2":{"44":1}}],["deny",{"2":{"44":4}}],["details",{"2":{"102":1}}],["detail",{"2":{"61":1}}],["detailed",{"2":{"6":1,"15":1,"62":1,"63":1,"90":1,"92":1,"99":1,"102":1}}],["determine",{"2":{"32":1}}],["derived",{"2":{"22":1,"67":1}}],["devise",{"2":{"33":1}}],["develop",{"2":{"98":1}}],["developer",{"2":{"88":1}}],["developers",{"2":{"22":1,"32":1,"33":1,"67":1}}],["development",{"2":{"5":1,"9":1,"10":1,"14":1,"18":1,"19":1,"25":1,"88":1,"89":1,"94":4}}],["dev",{"2":{"2":3,"94":1}}]],"serializationVersion":2}';export{t as default}; diff --git a/.vitepress/dist/assets/chunks/VPLocalSearchBox.CAk53M2R.js b/.vitepress/dist/assets/chunks/VPLocalSearchBox.CAk53M2R.js new file mode 100644 index 0000000..574125e --- /dev/null +++ b/.vitepress/dist/assets/chunks/VPLocalSearchBox.CAk53M2R.js @@ -0,0 +1,7 @@ +var Ct=Object.defineProperty;var It=(o,e,t)=>e in o?Ct(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(It(o,typeof e!="symbol"?e+"":e,t),t);import{X as Dt,s as oe,v as $e,ai as kt,aj as Ot,d as Rt,G as xe,ak as tt,h as Fe,al as _t,am as Mt,x as Lt,an as Pt,y as Re,R as de,Q as Ee,ao as zt,ap as Bt,Y as Vt,U as $t,aq as Wt,o as ee,b as Kt,j as k,a1 as Jt,k as j,ar as Ut,as as jt,at as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,au as Qt,p as qt,l as Ht,av as it,aw as Yt,a7 as Zt,ad as Xt,ax as er,_ as tr}from"./framework.D5qxx6u8.js";import{u as rr,c as ar}from"./theme.DOJLXmKO.js";const nr={root:()=>Dt(()=>import("./@localSearchIndexroot.BZg8rdYJ.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var yt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=yt.join(","),mt=typeof Element>"u",ue=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!mt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ue.call(e,Ne)&&n.unshift(e),n=n.filter(r),n},bt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ne);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!wt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!wt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ur=function(e){return xt(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ce(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},yr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=gt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=bt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ne)===!1?!1:We(t,e)},xr=yt.concat("iframe").join(","),_e=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function st(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function ut(o){for(var e=1;e0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},Ar=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Tr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Nr=function(e){return ge(e)&&!e.shiftKey},Cr=function(e){return ge(e)&&e.shiftKey},ct=function(e){return setTimeout(e,0)},ft=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},ye=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1?p-1:0),I=1;I=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=br(c,a.tabbableOptions),p=wr(c,a.tabbableOptions),C=f.length>0?f[0]:void 0,I=f.length>0?f[f.length-1]:void 0,M=p.find(function(m){return le(m)}),P=p.slice().reverse().find(function(m){return le(m)}),z=!!f.find(function(m){return se(m)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:z,firstTabbableNode:C,lastTabbableNode:I,firstDomTabbableNode:M,lastDomTabbableNode:P,nextTabbableNode:function(x){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,K=f.indexOf(x);return K<0?$?p.slice(p.indexOf(x)+1).find(function(Q){return le(Q)}):p.slice(0,p.indexOf(x)).reverse().find(function(Q){return le(Q)}):f[K+($?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function w(c){var f=c.activeElement;if(f)return f.shadowRoot&&f.shadowRoot.activeElement!==null?w(f.shadowRoot):f},b=function w(c){if(c!==!1&&c!==y(document)){if(!c||!c.focus){w(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,Ar(c)&&c.select()}},E=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},g=function(c){var f=c.target,p=c.event,C=c.isBackward,I=C===void 0?!1:C;f=f||Ae(p),v();var M=null;if(i.tabbableGroups.length>0){var P=l(f,p),z=P>=0?i.containerGroups[P]:void 0;if(P<0)I?M=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:M=i.tabbableGroups[0].firstTabbableNode;else if(I){var m=ft(i.tabbableGroups,function(B){var U=B.firstTabbableNode;return f===U});if(m<0&&(z.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f,!1))&&(m=P),m>=0){var x=m===0?i.tabbableGroups.length-1:m-1,$=i.tabbableGroups[x];M=se(f)>=0?$.lastTabbableNode:$.lastDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f,!1))}else{var K=ft(i.tabbableGroups,function(B){var U=B.lastTabbableNode;return f===U});if(K<0&&(z.container===f||_e(f,a.tabbableOptions)&&!le(f,a.tabbableOptions)&&!z.nextTabbableNode(f))&&(K=P),K>=0){var Q=K===i.tabbableGroups.length-1?0:K+1,q=i.tabbableGroups[Q];M=se(f)>=0?q.firstTabbableNode:q.firstDomTabbableNode}else ge(p)||(M=z.nextTabbableNode(f))}}else M=h("fallbackFocus");return M},S=function(c){var f=Ae(c);if(!(l(f,c)>=0)){if(ye(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ye(a.allowOutsideClick,c)||c.preventDefault()}},T=function(c){var f=Ae(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var C,I=!0;if(i.mostRecentlyFocusedNode)if(se(i.mostRecentlyFocusedNode)>0){var M=l(i.mostRecentlyFocusedNode),P=i.containerGroups[M].tabbableNodes;if(P.length>0){var z=P.findIndex(function(m){return m===i.mostRecentlyFocusedNode});z>=0&&(a.isKeyForward(i.recentNavEvent)?z+1=0&&(C=P[z-1],I=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(x){return se(x)>0})})||(I=!1);else I=!1;I&&(C=g({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),b(C||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},F=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=g({event:c,isBackward:f});p&&(ge(c)&&c.preventDefault(),b(p))},L=function(c){if(Tr(c)&&ye(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&F(c,a.isKeyBackward(c))},_=function(c){var f=Ae(c);l(f,c)>=0||ye(a.clickOutsideDeactivates,c)||ye(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},V=function(){if(i.active)return lt.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?ct(function(){b(d())}):b(d()),r.addEventListener("focusin",T,!0),r.addEventListener("mousedown",S,{capture:!0,passive:!1}),r.addEventListener("touchstart",S,{capture:!0,passive:!1}),r.addEventListener("click",_,{capture:!0,passive:!1}),r.addEventListener("keydown",L,{capture:!0,passive:!1}),s},N=function(){if(i.active)return r.removeEventListener("focusin",T,!0),r.removeEventListener("mousedown",S,!0),r.removeEventListener("touchstart",S,!0),r.removeEventListener("click",_,!0),r.removeEventListener("keydown",L,!0),s},R=function(c){var f=c.some(function(p){var C=Array.from(p.removedNodes);return C.some(function(I){return I===i.mostRecentlyFocusedNode})});f&&b(d())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(R):void 0,O=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){A.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),C=u(c,"checkCanFocusTrap");C||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var I=function(){C&&v(),V(),O(),p==null||p()};return C?(C(i.containers.concat()).then(I,I),this):(I(),this)},deactivate:function(c){if(!i.active)return this;var f=ut({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,N(),i.active=!1,i.paused=!1,O(),lt.deactivateTrap(n,s);var p=u(f,"onDeactivate"),C=u(f,"onPostDeactivate"),I=u(f,"checkCanReturnFocus"),M=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var P=function(){ct(function(){M&&b(E(i.nodeFocusedBeforeActivation)),C==null||C()})};return M&&I?(I(E(i.nodeFocusedBeforeActivation)).then(P,P),this):(P(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),N(),O(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),V(),O(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),O(),this}},s.updateContainerElements(e),s};function kr(o,e={}){let t;const{immediate:r,...n}=e,a=oe(!1),i=oe(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return $e(()=>kt(o),d=>{d&&(t=Dr(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),Ot(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class fe{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{fe.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new fe(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Or=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new fe(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return fe.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((y,b)=>{b>=s&&(e.nodes[b].start>0&&b!==s&&(e.nodes[b].start-=h),e.nodes[b].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;dr(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,y)=>this.opt.filter(y,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=fe.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Rr(o){const e=new Or(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var W=function(){return W=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function J(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Lr="ENTRIES",Ft="KEYS",Et="VALUES",G="",Me=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ce(this._path),t=e.node,r=e.keys;if(ce(r)===G)return{done:!1,value:this.result()};var n=t.get(ce(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ce(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ce(t)}).filter(function(e){return e!==G}).join("")},o.prototype.value=function(){return ce(this._path).node.get(G)},o.prototype.result=function(){switch(this._type){case Et:return this.value();case Ft:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ce=function(o){return o[o.length-1]},Pr=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;st)continue e}St(o.get(y),e,t,r,n,E,i,s+y)}}}catch(f){u={error:f}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},Le=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=J(ke(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=J(je(i),2),u=s[0],l=s[1];try{for(var h=D(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==G&&v.startsWith(l)){var y=new Map;return y.set(v.slice(l.length),u.get(v)),new o(y,e)}}}catch(b){t={error:b}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,zr(this._tree,e)},o.prototype.entries=function(){return new Me(this,Lr)},o.prototype.forEach=function(e){var t,r;try{for(var n=D(this),a=n.next();!a.done;a=n.next()){var i=J(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return Pr(this._tree,e,t)},o.prototype.get=function(e){var t=Ke(this._tree,e);return t!==void 0?t.get(G):void 0},o.prototype.has=function(e){var t=Ke(this._tree,e);return t!==void 0&&t.has(G)},o.prototype.keys=function(){return new Me(this,Ft)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e);return r.set(G,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e);return r.set(G,t(r.get(G))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Pe(this._tree,e),n=r.get(G);return n===void 0&&r.set(G,n=t()),n},o.prototype.values=function(){return new Me(this,Et)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=J(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),ke=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=D(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==G&&e.startsWith(s))return t.push([o,s]),ke(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),ke(void 0,"",t)},Ke=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=D(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==G&&e.startsWith(i))return Ke(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},Pe=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Le,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=D(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=Ue,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return _r(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,y,b,E,g,S,T,F,L,_,V,N,R,A,O,w;return Mr(this,function(c){switch(c.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||Je.batchSize,a=e.batchWait||Je.batchWait,i=1,c.label=1;case 1:c.trys.push([1,7,8,9]),s=D(this._index),u=s.next(),c.label=2;case 2:if(u.done)return[3,6];l=J(u.value,2),h=l[0],d=l[1];try{for(v=(R=void 0,D(d)),y=v.next();!y.done;y=v.next()){b=J(y.value,2),E=b[0],g=b[1];try{for(S=(O=void 0,D(g)),T=S.next();!T.done;T=S.next())F=J(T.value,1),L=F[0],!this._documentIds.has(L)&&(g.size<=1?d.delete(E):g.delete(L))}catch(f){O={error:f}}finally{try{T&&!T.done&&(w=S.return)&&w.call(S)}finally{if(O)throw O.error}}}}catch(f){R={error:f}}finally{try{y&&!y.done&&(A=v.return)&&A.call(v)}finally{if(R)throw R.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(f){return setTimeout(f,a)})];case 3:c.sent(),c.label=4;case 4:i+=1,c.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return _=c.sent(),V={error:_},[3,9];case 8:try{u&&!u.done&&(N=s.return)&&N.call(s)}finally{if(V)throw V.error}return[7];case 9:this._dirtCount-=r,c.label=10;case 10:return[4,null];case 11:return c.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Ve.minDirtCount,r=r||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=D(a),u=s.next();!u.done;u=s.next()){var l=J(u.value,2),h=l[0],d=l[1],v=d.score,y=d.terms,b=d.match,E=y.length||1,g={id:this._documentIds.get(h),score:v*E,terms:Object.keys(b),queryTerms:y,match:b};Object.assign(g,this._storedFields.get(h)),(t.filter==null||t.filter(g))&&i.push(g)}}catch(S){r={error:S}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return e===o.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||i.sort(vt),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=W(W({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=D(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,y=v.join(" "),b=s.get(y);b!=null?(b.score+=d,b.count+=1):s.set(y,{score:d,terms:v,count:1})}}catch(_){r={error:_}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var E=[];try{for(var g=D(s),S=g.next();!S.done;S=g.next()){var T=J(S.value,2),b=T[0],F=T[1],d=F.score,v=F.terms,L=F.count;E.push({suggestion:b,terms:v,score:d/L})}}catch(_){a={error:_}}finally{try{S&&!S.done&&(i=g.return)&&i.call(g)}finally{if(a)throw a.error}}return E.sort(vt),E},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Be.hasOwnProperty(e))return ze(Be,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,y=e.fieldIds,b=e.fieldLength,E=e.averageFieldLength,g=e.storedFields,S=e.dirtCount,T=e.serializationVersion;if(T!==1&&T!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var F=new o(t);F._documentCount=h,F._nextId=d,F._documentIds=Te(v),F._idToShortId=new Map,F._fieldIds=y,F._fieldLength=Te(b),F._avgFieldLength=E,F._storedFields=Te(g),F._dirtCount=S||0,F._index=new Le;try{for(var L=D(F._documentIds),_=L.next();!_.done;_=L.next()){var V=J(_.value,2),N=V[0],R=V[1];F._idToShortId.set(R,N)}}catch(z){r={error:z}}finally{try{_&&!_.done&&(n=L.return)&&n.call(L)}finally{if(r)throw r.error}}try{for(var A=D(l),O=A.next();!O.done;O=A.next()){var w=J(O.value,2),c=w[0],f=w[1],p=new Map;try{for(var C=(s=void 0,D(Object.keys(f))),I=C.next();!I.done;I=C.next()){var M=I.value,P=f[M];T===1&&(P=P.ds),p.set(parseInt(M,10),Te(P))}}catch(z){s={error:z}}finally{try{I&&!I.done&&(u=C.return)&&u.call(C)}finally{if(s)throw s.error}}F._index.set(c,p)}}catch(z){a={error:z}}finally{try{O&&!O.done&&(i=A.return)&&i.call(A)}finally{if(a)throw a.error}}return F},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),e===o.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){var n=W(W(W({},t),e),{queries:void 0}),a=e.queries.map(function(g){return r.executeQuery(g,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=W(W({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,y=d(e).flatMap(function(g){return v(g)}).filter(function(g){return!!g}),b=y.map(Jr(h)),E=b.map(function(g){return r.executeQuerySpec(g,h)});return this.combineResults(E,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=W(W({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(M,P){var z;return W(W({},M),(z={},z[P]=ze(s.boost,P)||1,z))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,y=W(W({},ht.weights),h),b=y.fuzzy,E=y.prefix,g=this._index.get(e.term),S=this.termResults(e.term,e.term,1,g,u,l,v),T,F;if(e.prefix&&(T=this._index.atPrefix(e.term)),e.fuzzy){var L=e.fuzzy===!0?.2:e.fuzzy,_=L<1?Math.min(d,Math.round(e.term.length*L)):L;_&&(F=this._index.fuzzyGet(e.term,_))}if(T)try{for(var V=D(T),N=V.next();!N.done;N=V.next()){var R=J(N.value,2),A=R[0],O=R[1],w=A.length-e.term.length;if(w){F==null||F.delete(A);var c=E*A.length/(A.length+.3*w);this.termResults(e.term,A,c,O,u,l,v,S)}}}catch(M){r={error:M}}finally{try{N&&!N.done&&(n=V.return)&&n.call(V)}finally{if(r)throw r.error}}if(F)try{for(var f=D(F.keys()),p=f.next();!p.done;p=f.next()){var A=p.value,C=J(F.get(A),2),I=C[0],w=C[1];if(w){var c=b*A.length/(A.length+w);this.termResults(e.term,A,c,I,u,l,v,S)}}}catch(M){a={error:M}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}finally{if(a)throw a.error}}return S},o.prototype.executeWildcardQuery=function(e){var t,r,n=new Map,a=W(W({},this._options.searchOptions),e);try{for(var i=D(this._documentIds),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d=a.boostDocument?a.boostDocument(h,"",this._storedFields.get(l)):1;n.set(l,{score:d,terms:[],match:{}})}}catch(v){t={error:v}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return n},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=Ge),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce($r[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=D(this._index),s=i.next();!s.done;s=i.next()){var u=J(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,D(h)),y=v.next();!y.done;y=v.next()){var b=J(y.value,2),E=b[0],g=b[1];d[E]=Object.fromEntries(g)}}catch(S){r={error:S}}finally{try{y&&!y.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(S){e={error:S}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,y;if(u===void 0&&(u=new Map),n==null)return u;try{for(var b=D(Object.keys(a)),E=b.next();!E.done;E=b.next()){var g=E.value,S=a[g],T=this._fieldIds[g],F=n.get(T);if(F!=null){var L=F.size,_=this._avgFieldLength[T];try{for(var V=(d=void 0,D(F.keys())),N=V.next();!N.done;N=V.next()){var R=N.value;if(!this._documentIds.has(R)){this.removeTerm(T,R,t),L-=1;continue}var A=i?i(this._documentIds.get(R),t,this._storedFields.get(R)):1;if(A){var O=F.get(R),w=this._fieldLength.get(R)[T],c=Kr(O,L,this._documentCount,w,_,s),f=r*S*A*c,p=u.get(R);if(p){p.score+=f,jr(p.terms,e);var C=ze(p.match,t);C?C.push(g):p.match[t]=[g]}else u.set(R,{score:f,terms:[e],match:(y={},y[t]=[g],y)})}}}catch(I){d={error:I}}finally{try{N&&!N.done&&(v=V.return)&&v.call(V)}finally{if(d)throw d.error}}}}}catch(I){l={error:I}}finally{try{E&&!E.done&&(h=b.return)&&h.call(b)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,pt),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,pt),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=D(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t(qt("data-v-cb4e1afe"),o=o(),Ht(),o),qr=["aria-owns"],Hr={class:"shell"},Yr=["title"],Zr=Y(()=>k("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Xr=[Zr],ea={class:"search-actions before"},ta=["title"],ra=Y(()=>k("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),aa=[ra],na=["placeholder"],ia={class:"search-actions"},oa=["title"],sa=Y(()=>k("span",{class:"vpi-layout-list local-search-icon"},null,-1)),ua=[sa],la=["disabled","title"],ca=Y(()=>k("span",{class:"vpi-delete local-search-icon"},null,-1)),fa=[ca],ha=["id","role","aria-labelledby"],da=["aria-selected"],va=["href","aria-label","onMouseenter","onFocusin"],pa={class:"titles"},ya=Y(()=>k("span",{class:"title-icon"},"#",-1)),ma=["innerHTML"],ga=Y(()=>k("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),ba={class:"title main"},wa=["innerHTML"],xa={key:0,class:"excerpt-wrapper"},Fa={key:0,class:"excerpt",inert:""},Ea=["innerHTML"],Sa=Y(()=>k("div",{class:"excerpt-gradient-bottom"},null,-1)),Aa=Y(()=>k("div",{class:"excerpt-gradient-top"},null,-1)),Ta={key:0,class:"no-results"},Na={class:"search-keyboard-shortcuts"},Ca=["aria-label"],Ia=Y(()=>k("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),Da=[Ia],ka=["aria-label"],Oa=Y(()=>k("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Ra=[Oa],_a=["aria-label"],Ma=Y(()=>k("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),La=[Ma],Pa=["aria-label"],za=Rt({__name:"VPLocalSearchBox",emits:["close"],setup(o,{emit:e}){var P,z;const t=e,r=xe(),n=xe(),a=xe(nr),i=rr(),{activate:s}=kr(r,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:u,theme:l}=i,h=tt(async()=>{var m,x,$,K,Q,q,B,U,Z;return it(Vr.loadJSON(($=await((x=(m=a.value)[u.value])==null?void 0:x.call(m)))==null?void 0:$.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((K=l.value.search)==null?void 0:K.provider)==="local"&&((q=(Q=l.value.search.options)==null?void 0:Q.miniSearch)==null?void 0:q.searchOptions)},...((B=l.value.search)==null?void 0:B.provider)==="local"&&((Z=(U=l.value.search.options)==null?void 0:U.miniSearch)==null?void 0:Z.options)}))}),v=Fe(()=>{var m,x;return((m=l.value.search)==null?void 0:m.provider)==="local"&&((x=l.value.search.options)==null?void 0:x.disableQueryPersistence)===!0}).value?oe(""):_t("vitepress:local-search-filter",""),y=Mt("vitepress:local-search-detailed-list",((P=l.value.search)==null?void 0:P.provider)==="local"&&((z=l.value.search.options)==null?void 0:z.detailedView)===!0),b=Fe(()=>{var m,x,$;return((m=l.value.search)==null?void 0:m.provider)==="local"&&(((x=l.value.search.options)==null?void 0:x.disableDetailedView)===!0||(($=l.value.search.options)==null?void 0:$.detailedView)===!1)}),E=Fe(()=>{var x,$,K,Q,q,B,U;const m=((x=l.value.search)==null?void 0:x.options)??l.value.algolia;return((q=(Q=(K=($=m==null?void 0:m.locales)==null?void 0:$[u.value])==null?void 0:K.translations)==null?void 0:Q.button)==null?void 0:q.buttonText)||((U=(B=m==null?void 0:m.translations)==null?void 0:B.button)==null?void 0:U.buttonText)||"Search"});Lt(()=>{b.value&&(y.value=!1)});const g=xe([]),S=oe(!1);$e(v,()=>{S.value=!1});const T=tt(async()=>{if(n.value)return it(new Rr(n.value))},null),F=new Qr(16);Pt(()=>[h.value,v.value,y.value],async([m,x,$],K,Q)=>{var be,Qe,qe,He;(K==null?void 0:K[0])!==m&&F.clear();let q=!1;if(Q(()=>{q=!0}),!m)return;g.value=m.search(x).slice(0,16),S.value=!0;const B=$?await Promise.all(g.value.map(H=>L(H.id))):[];if(q)return;for(const{id:H,mod:ae}of B){const ne=H.slice(0,H.indexOf("#"));let te=F.get(ne);if(te)continue;te=new Map,F.set(ne,te);const X=ae.default??ae;if(X!=null&&X.render||X!=null&&X.setup){const ie=Yt(X);ie.config.warnHandler=()=>{},ie.provide(Zt,i),Object.defineProperties(ie.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ie.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(he=>{var et;const we=(et=he.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(he=he.nextElementSibling)&&!/^h[1-6]$/i.test(he.tagName);)Xe+=he.outerHTML;te.set(Ze,Xe)}),ie.unmount()}if(q)return}const U=new Set;if(g.value=g.value.map(H=>{const[ae,ne]=H.id.split("#"),te=F.get(ae),X=(te==null?void 0:te.get(ne))??"";for(const ie in H.match)U.add(ie);return{...H,text:X}}),await de(),q)return;await new Promise(H=>{var ae;(ae=T.value)==null||ae.unmark({done:()=>{var ne;(ne=T.value)==null||ne.markRegExp(M(U),{done:H})}})});const Z=((be=r.value)==null?void 0:be.querySelectorAll(".result .excerpt"))??[];for(const H of Z)(Qe=H.querySelector('mark[data-markjs="true"]'))==null||Qe.scrollIntoView({block:"center"});(He=(qe=n.value)==null?void 0:qe.firstElementChild)==null||He.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function L(m){const x=Xt(m.slice(0,m.indexOf("#")));try{if(!x)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(x)}}catch($){return console.error($),{id:m,mod:{}}}}const _=oe(),V=Fe(()=>{var m;return((m=v.value)==null?void 0:m.length)<=0});function N(m=!0){var x,$;(x=_.value)==null||x.focus(),m&&(($=_.value)==null||$.select())}Re(()=>{N()});function R(m){m.pointerType==="mouse"&&N()}const A=oe(-1),O=oe(!1);$e(g,m=>{A.value=m.length?0:-1,w()});function w(){de(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}Ee("ArrowUp",m=>{m.preventDefault(),A.value--,A.value<0&&(A.value=g.value.length-1),O.value=!0,w()}),Ee("ArrowDown",m=>{m.preventDefault(),A.value++,A.value>=g.value.length&&(A.value=0),O.value=!0,w()});const c=zt();Ee("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const x=g.value[A.value];if(m.target instanceof HTMLInputElement&&!x){m.preventDefault();return}x&&(c.go(x.id),t("close"))}),Ee("Escape",()=>{t("close")});const p=ar({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Re(()=>{window.history.pushState(null,"",null)}),Bt("popstate",m=>{m.preventDefault(),t("close")});const C=Vt($t?document.body:null);Re(()=>{de(()=>{C.value=!0,de().then(()=>s())})}),Wt(()=>{C.value=!1});function I(){v.value="",de().then(()=>N(!1))}function M(m){return new RegExp([...m].sort((x,$)=>$.length-x.length).map(x=>`(${er(x)})`).join("|"),"gi")}return(m,x)=>{var $,K,Q,q;return ee(),Kt(Qt,{to:"body"},[k("div",{ref_key:"el",ref:r,role:"button","aria-owns":($=g.value)!=null&&$.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[k("div",{class:"backdrop",onClick:x[0]||(x[0]=B=>m.$emit("close"))}),k("div",Hr,[k("form",{class:"search-bar",onPointerup:x[4]||(x[4]=B=>R(B)),onSubmit:x[5]||(x[5]=Jt(()=>{},["prevent"]))},[k("label",{title:E.value,id:"localsearch-label",for:"localsearch-input"},Xr,8,Yr),k("div",ea,[k("button",{class:"back-button",title:j(p)("modal.backButtonTitle"),onClick:x[1]||(x[1]=B=>m.$emit("close"))},aa,8,ta)]),Ut(k("input",{ref_key:"searchInput",ref:_,"onUpdate:modelValue":x[2]||(x[2]=B=>Gt(v)?v.value=B:null),placeholder:E.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,na),[[jt,j(v)]]),k("div",ia,[b.value?Se("",!0):(ee(),re("button",{key:0,class:rt(["toggle-layout-button",{"detailed-list":j(y)}]),type:"button",title:j(p)("modal.displayDetails"),onClick:x[3]||(x[3]=B=>A.value>-1&&(y.value=!j(y)))},ua,10,oa)),k("button",{class:"clear-button",type:"reset",disabled:V.value,title:j(p)("modal.resetButtonTitle"),onClick:I},fa,8,la)])],32),k("ul",{ref_key:"resultsEl",ref:n,id:(K=g.value)!=null&&K.length?"localsearch-list":void 0,role:(Q=g.value)!=null&&Q.length?"listbox":void 0,"aria-labelledby":(q=g.value)!=null&&q.length?"localsearch-label":void 0,class:"results",onMousemove:x[7]||(x[7]=B=>O.value=!1)},[(ee(!0),re(nt,null,at(g.value,(B,U)=>(ee(),re("li",{key:B.id,role:"option","aria-selected":A.value===U?"true":"false"},[k("a",{href:B.id,class:rt(["result",{selected:A.value===U}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:Z=>!O.value&&(A.value=U),onFocusin:Z=>A.value=U,onClick:x[6]||(x[6]=Z=>m.$emit("close"))},[k("div",null,[k("div",pa,[ya,(ee(!0),re(nt,null,at(B.titles,(Z,be)=>(ee(),re("span",{key:be,class:"title"},[k("span",{class:"text",innerHTML:Z},null,8,ma),ga]))),128)),k("span",ba,[k("span",{class:"text",innerHTML:B.title},null,8,wa)])]),j(y)?(ee(),re("div",xa,[B.text?(ee(),re("div",Fa,[k("div",{class:"vp-doc",innerHTML:B.text},null,8,Ea)])):Se("",!0),Sa,Aa])):Se("",!0)])],42,va)],8,da))),128)),j(v)&&!g.value.length&&S.value?(ee(),re("li",Ta,[ve(pe(j(p)("modal.noResultsText"))+' "',1),k("strong",null,pe(j(v)),1),ve('" ')])):Se("",!0)],40,ha),k("div",Na,[k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.navigateUpKeyAriaLabel")},Da,8,Ca),k("kbd",{"aria-label":j(p)("modal.footer.navigateDownKeyAriaLabel")},Ra,8,ka),ve(" "+pe(j(p)("modal.footer.navigateText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.selectKeyAriaLabel")},La,8,_a),ve(" "+pe(j(p)("modal.footer.selectText")),1)]),k("span",null,[k("kbd",{"aria-label":j(p)("modal.footer.closeKeyAriaLabel")},"esc",8,Pa),ve(" "+pe(j(p)("modal.footer.closeText")),1)])])])],8,qr)])}}}),Ja=tr(za,[["__scopeId","data-v-cb4e1afe"]]);export{Ja as default}; diff --git a/.vitepress/dist/assets/chunks/framework.D5qxx6u8.js b/.vitepress/dist/assets/chunks/framework.D5qxx6u8.js new file mode 100644 index 0000000..4f1ec06 --- /dev/null +++ b/.vitepress/dist/assets/chunks/framework.D5qxx6u8.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function wr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ee={},mt=[],xe=()=>{},Ti=()=>!1,kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Er=e=>e.startsWith("onUpdate:"),ie=Object.assign,Cr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ai=Object.prototype.hasOwnProperty,Y=(e,t)=>Ai.call(e,t),k=Array.isArray,yt=e=>xn(e)==="[object Map]",Gs=e=>xn(e)==="[object Set]",K=e=>typeof e=="function",se=e=>typeof e=="string",ft=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",zs=e=>(Z(e)||K(e))&&K(e.then)&&K(e.catch),Xs=Object.prototype.toString,xn=e=>Xs.call(e),Ri=e=>xn(e).slice(8,-1),Ys=e=>xn(e)==="[object Object]",xr=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Sn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Oi=/-(\w)/g,$e=Sn(e=>e.replace(Oi,(t,n)=>n?n.toUpperCase():"")),Li=/\B([A-Z])/g,dt=Sn(e=>e.replace(Li,"-$1").toLowerCase()),Tn=Sn(e=>e.charAt(0).toUpperCase()+e.slice(1)),un=Sn(e=>e?`on${Tn(e)}`:""),Je=(e,t)=>!Object.is(e,t),fn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},lr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ii=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let Jr;const Qs=()=>Jr||(Jr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Sr(e){if(k(e)){const t={};for(let n=0;n{if(n){const r=n.split(Pi);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Tr(e){let t="";if(se(e))t=e;else if(k(e))for(let n=0;nse(e)?e:e==null?"":k(e)||Z(e)&&(e.toString===Xs||!K(e.toString))?JSON.stringify(e,eo,2):String(e),eo=(e,t)=>t&&t.__v_isRef?eo(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Bn(r,o)+" =>"]=s,n),{})}:Gs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Bn(n))}:ft(t)?Bn(t):Z(t)&&!k(t)&&!Ys(t)?String(t):t,Bn=(e,t="")=>{var n;return ft(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class ji{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),et()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Xe,n=ct;try{return Xe=!0,ct=this,this._runnings++,Qr(this),this.fn()}finally{Zr(this),this._runnings--,ct=n,Xe=t}}stop(){this.active&&(Qr(this),Zr(this),this.onStop&&this.onStop(),this.active=!1)}}function Ui(e){return e.value}function Qr(e){e._trackId++,e._depsLength=0}function Zr(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},mn=new WeakMap,at=Symbol(""),ur=Symbol("");function ve(e,t,n){if(Xe&&ct){let r=mn.get(e);r||mn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=io(()=>r.delete(n))),so(ct,s)}}function Ve(e,t,n,r,s,o){const i=mn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&k(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!ft(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":k(e)?xr(n)&&l.push(i.get("length")):(l.push(i.get(at)),yt(e)&&l.push(i.get(ur)));break;case"delete":k(e)||(l.push(i.get(at)),yt(e)&&l.push(i.get(ur)));break;case"set":yt(e)&&l.push(i.get(at));break}Rr();for(const c of l)c&&oo(c,4);Or()}function Bi(e,t){const n=mn.get(e);return n&&n.get(t)}const ki=wr("__proto__,__v_isRef,__isVue"),lo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ft)),es=Ki();function Ki(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){Ze(),Rr();const r=J(this)[t].apply(this,n);return Or(),et(),r}}),e}function Wi(e){ft(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class co{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?sl:ho:o?fo:uo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=k(t);if(!s){if(i&&Y(es,n))return Reflect.get(es,n,r);if(n==="hasOwnProperty")return Wi}const l=Reflect.get(t,n,r);return(ft(n)?lo.has(n):ki(n))||(s||ve(t,"get",n),o)?l:de(l)?i&&xr(n)?l:l.value:Z(l)?s?On(l):Rn(l):l}}class ao extends co{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=$t(o);if(!yn(r)&&!$t(r)&&(o=J(o),r=J(r)),!k(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=k(t)&&xr(n)?Number(n)e,An=e=>Reflect.getPrototypeOf(e);function Yt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Je(t,o)&&ve(s,"get",t),ve(s,"get",o));const{has:i}=An(s),l=r?Lr:n?Pr:Ht;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Jt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Je(e,s)&&ve(r,"has",e),ve(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Qt(e,t=!1){return e=e.__v_raw,!t&&ve(J(e),"iterate",at),Reflect.get(e,"size",e)}function ts(e){e=J(e);const t=J(this);return An(t).has.call(t,e)||(t.add(e),Ve(t,"add",e,e)),this}function ns(e,t){t=J(t);const n=J(this),{has:r,get:s}=An(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?Je(t,i)&&Ve(n,"set",e,t):Ve(n,"add",e,t),this}function rs(e){const t=J(this),{has:n,get:r}=An(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function ss(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function Zt(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Lr:e?Pr:Ht;return!e&&ve(l,"iterate",at),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function en(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=yt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Lr:t?Pr:Ht;return!t&&ve(o,"iterate",c?ur:at),{next(){const{value:h,done:m}=a.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Yi(){const e={get(o){return Yt(this,o)},get size(){return Qt(this)},has:Jt,add:ts,set:ns,delete:rs,clear:ss,forEach:Zt(!1,!1)},t={get(o){return Yt(this,o,!1,!0)},get size(){return Qt(this)},has:Jt,add:ts,set:ns,delete:rs,clear:ss,forEach:Zt(!1,!0)},n={get(o){return Yt(this,o,!0)},get size(){return Qt(this,!0)},has(o){return Jt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:Zt(!0,!1)},r={get(o){return Yt(this,o,!0,!0)},get size(){return Qt(this,!0)},has(o){return Jt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:Zt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=en(o,!1,!1),n[o]=en(o,!0,!1),t[o]=en(o,!1,!0),r[o]=en(o,!0,!0)}),[e,n,t,r]}const[Ji,Qi,Zi,el]=Yi();function Ir(e,t){const n=t?e?el:Zi:e?Qi:Ji;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const tl={get:Ir(!1,!1)},nl={get:Ir(!1,!0)},rl={get:Ir(!0,!1)};const uo=new WeakMap,fo=new WeakMap,ho=new WeakMap,sl=new WeakMap;function ol(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function il(e){return e.__v_skip||!Object.isExtensible(e)?0:ol(Ri(e))}function Rn(e){return $t(e)?e:Mr(e,!1,Gi,tl,uo)}function ll(e){return Mr(e,!1,Xi,nl,fo)}function On(e){return Mr(e,!0,zi,rl,ho)}function Mr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=il(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function Rt(e){return $t(e)?Rt(e.__v_raw):!!(e&&e.__v_isReactive)}function $t(e){return!!(e&&e.__v_isReadonly)}function yn(e){return!!(e&&e.__v_isShallow)}function po(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function dn(e){return Object.isExtensible(e)&&Js(e,"__v_skip",!0),e}const Ht=e=>Z(e)?Rn(e):e,Pr=e=>Z(e)?On(e):e;class go{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ar(()=>t(this._value),()=>Ot(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Je(t._value,t._value=t.effect.run())&&Ot(t,4),Nr(t),t.effect._dirtyLevel>=2&&Ot(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function cl(e,t,n=!1){let r,s;const o=K(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new go(r,s,o||!s,n)}function Nr(e){var t;Xe&&ct&&(e=J(e),so(ct,(t=e.dep)!=null?t:e.dep=io(()=>e.dep=void 0,e instanceof go?e:void 0)))}function Ot(e,t=4,n){e=J(e);const r=e.dep;r&&oo(r,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function re(e){return mo(e,!1)}function Fr(e){return mo(e,!0)}function mo(e,t){return de(e)?e:new al(e,t)}class al{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Ht(t)}get value(){return Nr(this),this._value}set value(t){const n=this.__v_isShallow||yn(t)||$t(t);t=n?t:J(t),Je(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Ht(t),Ot(this,4))}}function yo(e){return de(e)?e.value:e}const ul={get:(e,t,n)=>yo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function _o(e){return Rt(e)?e:new Proxy(e,ul)}class fl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Nr(this),()=>Ot(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function dl(e){return new fl(e)}class hl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Bi(J(this._object),this._key)}}class pl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function gl(e,t,n){return de(e)?e:K(e)?new pl(e):Z(e)&&arguments.length>1?ml(e,t,n):re(e)}function ml(e,t,n){const r=e[t];return de(r)?r:new hl(e,t,n)}/** +* @vue/runtime-core v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ye(e,t,n,r){try{return r?e(...r):e()}catch(s){Kt(s,t,n)}}function Se(e,t,n,r){if(K(e)){const s=Ye(e,t,n,r);return s&&zs(s)&&s.catch(o=>{Kt(o,t,n)}),s}if(k(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=Vt(s);oPe&&pe.splice(t,1)}function bl(e){k(e)?vt.push(...e):(!We||!We.includes(e,e.allowRecurse?ot+1:ot))&&vt.push(e),bo()}function os(e,t,n=jt?Pe+1:0){for(;nVt(n)-Vt(r));if(vt.length=0,We){We.push(...t);return}for(We=t,ot=0;ote.id==null?1/0:e.id,wl=(e,t)=>{const n=Vt(e)-Vt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function wo(e){fr=!1,jt=!0,pe.sort(wl);try{for(Pe=0;Pese(v)?v.trim():v)),h&&(s=n.map(lr))}let l,c=r[l=un(t)]||r[l=un($e(t))];!c&&o&&(c=r[l=un(dt(t))]),c&&Se(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,s)}}function Eo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!K(e)){const c=a=>{const f=Eo(a,t,!0);f&&(l=!0,ie(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(k(o)?o.forEach(c=>i[c]=null):ie(i,o),Z(e)&&r.set(e,i),i)}function Mn(e,t){return!e||!kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,dt(t))||Y(e,t))}let ce=null,Pn=null;function vn(e){const t=ce;return ce=e,Pn=e&&e.type.__scopeId||null,t}function eu(e){Pn=e}function tu(){Pn=null}function Cl(e,t=ce,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&vs(-1);const o=vn(t);let i;try{i=e(...s)}finally{vn(o),r._d&&vs(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function kn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:f,props:h,data:m,setupState:v,ctx:C,inheritAttrs:I}=e,$=vn(e);let q,D;try{if(n.shapeFlag&4){const y=s||r,M=y;q=Ae(a.call(M,y,f,h,v,m,C)),D=l}else{const y=t;q=Ae(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),D=t.props?l:xl(l)}}catch(y){Nt.length=0,Kt(y,e,1),q=oe(_e)}let p=q;if(D&&I!==!1){const y=Object.keys(D),{shapeFlag:M}=p;y.length&&M&7&&(o&&y.some(Er)&&(D=Sl(D,o)),p=Qe(p,D,!1,!0))}return n.dirs&&(p=Qe(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),q=p,vn($),q}const xl=e=>{let t;for(const n in e)(n==="class"||n==="style"||kt(n))&&((t||(t={}))[n]=e[n]);return t},Sl=(e,t)=>{const n={};for(const r in e)(!Er(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Tl(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?is(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function To(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):bl(e)}const Ol=Symbol.for("v-scx"),Ll=()=>wt(Ol);function Hr(e,t){return Nn(e,null,t)}function su(e,t){return Nn(e,null,{flush:"post"})}const tn={};function Ne(e,t,n){return Nn(e,t,n)}function Nn(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ee){if(t&&o){const O=t;t=(...N)=>{O(...N),M()}}const c=ue,a=O=>r===!0?O:lt(O,r===!1?1:void 0);let f,h=!1,m=!1;if(de(e)?(f=()=>e.value,h=yn(e)):Rt(e)?(f=()=>a(e),h=!0):k(e)?(m=!0,h=e.some(O=>Rt(O)||yn(O)),f=()=>e.map(O=>{if(de(O))return O.value;if(Rt(O))return a(O);if(K(O))return Ye(O,c,2)})):K(e)?t?f=()=>Ye(e,c,2):f=()=>(v&&v(),Se(e,c,3,[C])):f=xe,t&&r){const O=f;f=()=>lt(O())}let v,C=O=>{v=p.onStop=()=>{Ye(O,c,4),v=p.onStop=void 0}},I;if(Gt)if(C=xe,t?n&&Se(t,c,3,[f(),m?[]:void 0,C]):f(),s==="sync"){const O=Ll();I=O.__watcherHandles||(O.__watcherHandles=[])}else return xe;let $=m?new Array(e.length).fill(tn):tn;const q=()=>{if(!(!p.active||!p.dirty))if(t){const O=p.run();(r||h||(m?O.some((N,T)=>Je(N,$[T])):Je(O,$)))&&(v&&v(),Se(t,c,3,[O,$===tn?void 0:m&&$[0]===tn?[]:$,C]),$=O)}else p.run()};q.allowRecurse=!!t;let D;s==="sync"?D=q:s==="post"?D=()=>me(q,c&&c.suspense):(q.pre=!0,c&&(q.id=c.uid),D=()=>In(q));const p=new Ar(f,xe,D),y=to(),M=()=>{p.stop(),y&&Cr(y.effects,p)};return t?n?q():$=p.run():s==="post"?me(p.run.bind(p),c&&c.suspense):p.run(),I&&I.push(M),M}function Il(e,t,n){const r=this.proxy,s=se(e)?e.includes(".")?Ao(r,e):()=>r[e]:e.bind(r,r);let o;K(t)?o=t:(o=t.handler,n=t);const i=qt(this),l=Nn(s,o.bind(r),n);return i(),l}function Ao(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{lt(r,t,n)});else if(Ys(e))for(const r in e)lt(e[r],t,n);return e}function ou(e,t){if(ce===null)return e;const n=jn(ce)||ce.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Mo(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],Ro={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},Pl={name:"BaseTransition",props:Ro,setup(e,{slots:t}){const n=Hn(),r=Ml();return()=>{const s=t.default&&Lo(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const m of s)if(m.type!==_e){o=m;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Kn(o);const c=cs(o);if(!c)return Kn(o);const a=dr(c,i,r,n);hr(c,a);const f=n.subTree,h=f&&cs(f);if(h&&h.type!==_e&&!it(c,h)){const m=dr(h,i,r,n);if(hr(h,m),l==="out-in"&&c.type!==_e)return r.isLeaving=!0,m.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Kn(o);l==="in-out"&&c.type!==_e&&(m.delayLeave=(v,C,I)=>{const $=Oo(r,h);$[String(h.key)]=h,v[qe]=()=>{C(),v[qe]=void 0,delete a.delayedLeave},a.delayedLeave=I})}return o}}},Nl=Pl;function Oo(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function dr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:m,onAfterLeave:v,onLeaveCancelled:C,onBeforeAppear:I,onAppear:$,onAfterAppear:q,onAppearCancelled:D}=t,p=String(e.key),y=Oo(n,e),M=(T,F)=>{T&&Se(T,r,9,F)},O=(T,F)=>{const w=F[1];M(T,F),k(T)?T.every(j=>j.length<=1)&&w():T.length<=1&&w()},N={mode:o,persisted:i,beforeEnter(T){let F=l;if(!n.isMounted)if(s)F=I||l;else return;T[qe]&&T[qe](!0);const w=y[p];w&&it(e,w)&&w.el[qe]&&w.el[qe](),M(F,[T])},enter(T){let F=c,w=a,j=f;if(!n.isMounted)if(s)F=$||c,w=q||a,j=D||f;else return;let A=!1;const G=T[nn]=le=>{A||(A=!0,le?M(j,[T]):M(w,[T]),N.delayedLeave&&N.delayedLeave(),T[nn]=void 0)};F?O(F,[T,G]):G()},leave(T,F){const w=String(e.key);if(T[nn]&&T[nn](!0),n.isUnmounting)return F();M(h,[T]);let j=!1;const A=T[qe]=G=>{j||(j=!0,F(),G?M(C,[T]):M(v,[T]),T[qe]=void 0,y[w]===e&&delete y[w])};y[w]=e,m?O(m,[T,A]):A()},clone(T){return dr(T,t,n,r)}};return N}function Kn(e){if(Wt(e))return e=Qe(e),e.children=null,e}function cs(e){if(!Wt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&K(n.default))return n.default()}}function hr(e,t){e.shapeFlag&6&&e.component?hr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Lo(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function iu(e){K(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,m()),m=()=>{let v;return c||(v=c=t().catch(C=>{if(C=C instanceof Error?C:new Error(String(C)),l)return new Promise((I,$)=>{l(C,()=>I(h()),()=>$(C),f+1)});throw C}).then(C=>v!==c&&c?c:(C&&(C.__esModule||C[Symbol.toStringTag]==="Module")&&(C=C.default),a=C,C)))};return jr({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return a},setup(){const v=ue;if(a)return()=>Wn(a,v);const C=D=>{c=null,Kt(D,v,13,!r)};if(i&&v.suspense||Gt)return m().then(D=>()=>Wn(D,v)).catch(D=>(C(D),()=>r?oe(r,{error:D}):null));const I=re(!1),$=re(),q=re(!!s);return s&&setTimeout(()=>{q.value=!1},s),o!=null&&setTimeout(()=>{if(!I.value&&!$.value){const D=new Error(`Async component timed out after ${o}ms.`);C(D),$.value=D}},o),m().then(()=>{I.value=!0,v.parent&&Wt(v.parent.vnode)&&(v.parent.effect.dirty=!0,In(v.parent.update))}).catch(D=>{C(D),$.value=D}),()=>{if(I.value&&a)return Wn(a,v);if($.value&&r)return oe(r,{error:$.value});if(n&&!q.value)return oe(n)}}})}function Wn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=oe(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const Wt=e=>e.type.__isKeepAlive;function Fl(e,t){Io(e,"a",t)}function $l(e,t){Io(e,"da",t)}function Io(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Fn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Wt(s.parent.vnode)&&Hl(r,t,n,s),s=s.parent}}function Hl(e,t,n,r){const s=Fn(t,e,r,!0);$n(()=>{Cr(r[t],s)},n)}function Fn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;Ze();const l=qt(n),c=Se(t,n,e,i);return l(),et(),c});return r?s.unshift(o):s.push(o),o}}const De=e=>(t,n=ue)=>(!Gt||e==="sp")&&Fn(e,(...r)=>t(...r),n),jl=De("bm"),xt=De("m"),Vl=De("bu"),Dl=De("u"),Mo=De("bum"),$n=De("um"),Ul=De("sp"),Bl=De("rtg"),kl=De("rtc");function Kl(e,t=ue){Fn("ec",e,t)}function lu(e,t,n,r){let s;const o=n;if(k(e)||se(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lEn(t)?!(t.type===_e||t.type===ye&&!Po(t.children)):!0)?e:null}function au(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:un(r)]=e[r];return n}const pr=e=>e?ei(e)?jn(e)||e.proxy:pr(e.parent):null,Lt=ie(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>pr(e.parent),$root:e=>pr(e.root),$emit:e=>e.emit,$options:e=>Vr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,In(e.update)}),$nextTick:e=>e.n||(e.n=Ln.bind(e.proxy)),$watch:e=>Il.bind(e)}),qn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),Wl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const v=i[t];if(v!==void 0)switch(v){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(qn(r,t))return i[t]=1,r[t];if(s!==ee&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];gr&&(i[t]=0)}}const f=Lt[t];let h,m;if(f)return t==="$attrs"&&ve(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,Y(m,t))return m[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return qn(s,t)?(s[t]=n,!0):r!==ee&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ee&&Y(e,i)||qn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Lt,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function uu(){return ql().slots}function ql(){const e=Hn();return e.setupContext||(e.setupContext=ni(e))}function as(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let gr=!0;function Gl(e){const t=Vr(e),n=e.proxy,r=e.ctx;gr=!1,t.beforeCreate&&us(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:m,beforeUpdate:v,updated:C,activated:I,deactivated:$,beforeDestroy:q,beforeUnmount:D,destroyed:p,unmounted:y,render:M,renderTracked:O,renderTriggered:N,errorCaptured:T,serverPrefetch:F,expose:w,inheritAttrs:j,components:A,directives:G,filters:le}=t;if(a&&zl(a,r,null),i)for(const X in i){const V=i[X];K(V)&&(r[X]=V.bind(n))}if(s){const X=s.call(n,n);Z(X)&&(e.data=Rn(X))}if(gr=!0,o)for(const X in o){const V=o[X],He=K(V)?V.bind(n,n):K(V.get)?V.get.bind(n,n):xe,zt=!K(V)&&K(V.set)?V.set.bind(n):xe,tt=ne({get:He,set:zt});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Le=>tt.value=Le})}if(l)for(const X in l)No(l[X],r,n,X);if(c){const X=K(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{ec(V,X[V])})}f&&us(f,e,"c");function U(X,V){k(V)?V.forEach(He=>X(He.bind(n))):V&&X(V.bind(n))}if(U(jl,h),U(xt,m),U(Vl,v),U(Dl,C),U(Fl,I),U($l,$),U(Kl,T),U(kl,O),U(Bl,N),U(Mo,D),U($n,y),U(Ul,F),k(w))if(w.length){const X=e.exposed||(e.exposed={});w.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:He=>n[V]=He})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),j!=null&&(e.inheritAttrs=j),A&&(e.components=A),G&&(e.directives=G)}function zl(e,t,n=xe){k(e)&&(e=mr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=wt(s.from||r,s.default,!0):o=wt(s.from||r):o=wt(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function us(e,t,n){Se(k(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function No(e,t,n,r){const s=r.includes(".")?Ao(n,r):()=>n[r];if(se(e)){const o=t[e];K(o)&&Ne(s,o)}else if(K(e))Ne(s,e.bind(n));else if(Z(e))if(k(e))e.forEach(o=>No(o,t,n,r));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Ne(s,o,e)}}function Vr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>bn(c,a,i,!0)),bn(c,t,i)),Z(t)&&o.set(t,c),c}function bn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&bn(e,o,n,!0),s&&s.forEach(i=>bn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Xl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Xl={data:fs,props:ds,emits:ds,methods:At,computed:At,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:At,directives:At,watch:Jl,provide:fs,inject:Yl};function fs(e,t){return t?e?function(){return ie(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Yl(e,t){return At(mr(e),mr(t))}function mr(e){if(k(e)){const t={};for(let n=0;n1)return n&&K(t)?t.call(r&&r.proxy):t}}const $o={},Ho=()=>Object.create($o),jo=e=>Object.getPrototypeOf(e)===$o;function tc(e,t,n,r=!1){const s={},o=Ho();e.propsDefaults=Object.create(null),Vo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:ll(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function nc(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,v]=Do(h,t,!0);ie(i,m),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,mt),mt;if(k(o))for(let f=0;f-1,v[1]=I<0||C-1||Y(v,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function hs(e){return e[0]!=="$"&&!_t(e)}function ps(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function gs(e,t){return ps(e)===ps(t)}function ms(e,t){return k(t)?t.findIndex(n=>gs(n,e)):K(t)&&gs(t,e)?0:-1}const Uo=e=>e[0]==="_"||e==="$stable",Dr=e=>k(e)?e.map(Ae):[Ae(e)],rc=(e,t,n)=>{if(t._n)return t;const r=Cl((...s)=>Dr(t(...s)),n);return r._c=!1,r},Bo=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Uo(s))continue;const o=e[s];if(K(o))t[s]=rc(s,o,r);else if(o!=null){const i=Dr(o);t[s]=()=>i}}},ko=(e,t)=>{const n=Dr(t);e.slots.default=()=>n},sc=(e,t)=>{const n=e.slots=Ho();if(e.vnode.shapeFlag&32){const r=t._;r?(ie(n,t),Js(n,"_",r,!0)):Bo(t,n)}else t&&ko(e,t)},oc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ie(s,t),!n&&l===1&&delete s._):(o=!t.$stable,Bo(t,s)),i=t}else t&&(ko(e,t),i={default:1});if(o)for(const l in s)!Uo(l)&&i[l]==null&&delete s[l]};function wn(e,t,n,r,s=!1){if(k(e)){e.forEach((m,v)=>wn(m,t&&(k(t)?t[v]:t),n,r,s));return}if(bt(r)&&!s)return;const o=r.shapeFlag&4?jn(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(se(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),K(c))Ye(c,l,12,[i,f]);else{const m=se(c),v=de(c);if(m||v){const C=()=>{if(e.f){const I=m?Y(h,c)?h[c]:f[c]:c.value;s?k(I)&&Cr(I,o):k(I)?I.includes(o)||I.push(o):m?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,Y(h,c)&&(h[c]=i)):v&&(c.value=i,e.k&&(f[e.k]=i))};i?(C.id=-1,me(C,n)):C()}}}let Be=!1;const ic=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",lc=e=>e.namespaceURI.includes("MathML"),rn=e=>{if(ic(e))return"svg";if(lc(e))return"mathml"},sn=e=>e.nodeType===8;function cc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),_n(),y._vnode=p;return}Be=!1,h(y.firstChild,p,null,null,null),_n(),y._vnode=p,Be&&console.error("Hydration completed but contains mismatches.")},h=(p,y,M,O,N,T=!1)=>{T=T||!!y.dynamicChildren;const F=sn(p)&&p.data==="[",w=()=>I(p,y,M,O,N,F),{type:j,ref:A,shapeFlag:G,patchFlag:le}=y;let fe=p.nodeType;y.el=p,le===-2&&(T=!1,y.dynamicChildren=null);let U=null;switch(j){case Et:fe!==3?y.children===""?(c(y.el=s(""),i(p),p),U=p):U=w():(p.data!==y.children&&(Be=!0,p.data=y.children),U=o(p));break;case _e:D(p)?(U=o(p),q(y.el=p.content.firstChild,p,M)):fe!==8||F?U=w():U=o(p);break;case Pt:if(F&&(p=o(p),fe=p.nodeType),fe===1||fe===3){U=p;const X=!y.children.length;for(let V=0;V{T=T||!!y.dynamicChildren;const{type:F,props:w,patchFlag:j,shapeFlag:A,dirs:G,transition:le}=y,fe=F==="input"||F==="option";if(fe||j!==-1){G&&Me(y,null,M,"created");let U=!1;if(D(p)){U=Wo(O,le)&&M&&M.vnode.props&&M.vnode.props.appear;const V=p.content.firstChild;U&&le.beforeEnter(V),q(V,p,M),y.el=p=V}if(A&16&&!(w&&(w.innerHTML||w.textContent))){let V=v(p.firstChild,y,p,M,O,N,T);for(;V;){Be=!0;const He=V;V=V.nextSibling,l(He)}}else A&8&&p.textContent!==y.children&&(Be=!0,p.textContent=y.children);if(w)if(fe||!T||j&48)for(const V in w)(fe&&(V.endsWith("value")||V==="indeterminate")||kt(V)&&!_t(V)||V[0]===".")&&r(p,V,null,w[V],void 0,void 0,M);else w.onClick&&r(p,"onClick",null,w.onClick,void 0,void 0,M);let X;(X=w&&w.onVnodeBeforeMount)&&Ce(X,M,y),G&&Me(y,null,M,"beforeMount"),((X=w&&w.onVnodeMounted)||G||U)&&To(()=>{X&&Ce(X,M,y),U&&le.enter(p),G&&Me(y,null,M,"mounted")},O)}return p.nextSibling},v=(p,y,M,O,N,T,F)=>{F=F||!!y.dynamicChildren;const w=y.children,j=w.length;for(let A=0;A{const{slotScopeIds:F}=y;F&&(N=N?N.concat(F):F);const w=i(p),j=v(o(p),y,w,M,O,N,T);return j&&sn(j)&&j.data==="]"?o(y.anchor=j):(Be=!0,c(y.anchor=a("]"),w,j),j)},I=(p,y,M,O,N,T)=>{if(Be=!0,y.el=null,T){const j=$(p);for(;;){const A=o(p);if(A&&A!==j)l(A);else break}}const F=o(p),w=i(p);return l(p),n(null,y,w,F,M,O,rn(w),N),F},$=(p,y="[",M="]")=>{let O=0;for(;p;)if(p=o(p),p&&sn(p)&&(p.data===y&&O++,p.data===M)){if(O===0)return o(p);O--}return p},q=(p,y,M)=>{const O=y.parentNode;O&&O.replaceChild(p,y);let N=M;for(;N;)N.vnode.el===y&&(N.vnode.el=N.subTree.el=p),N=N.parent},D=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[f,h]}const me=To;function ac(e){return Ko(e)}function uc(e){return Ko(e,cc)}function Ko(e,t){const n=Qs();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:m,setScopeId:v=xe,insertStaticContent:C}=e,I=(u,d,g,_=null,b=null,S=null,L=void 0,x=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!it(u,d)&&(_=Xt(u),Le(u,b,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:P,shapeFlag:B}=d;switch(E){case Et:$(u,d,g,_);break;case _e:q(u,d,g,_);break;case Pt:u==null&&D(d,g,_,L);break;case ye:A(u,d,g,_,b,S,L,x,R);break;default:B&1?M(u,d,g,_,b,S,L,x,R):B&6?G(u,d,g,_,b,S,L,x,R):(B&64||B&128)&&E.process(u,d,g,_,b,S,L,x,R,ht)}P!=null&&b&&wn(P,u&&u.ref,S,d||u,!d)},$=(u,d,g,_)=>{if(u==null)r(d.el=l(d.children),g,_);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},q=(u,d,g,_)=>{u==null?r(d.el=c(d.children||""),g,_):d.el=u.el},D=(u,d,g,_)=>{[u.el,u.anchor]=C(u.children,d,g,_,u.el,u.anchor)},p=({el:u,anchor:d},g,_)=>{let b;for(;u&&u!==d;)b=m(u),r(u,g,_),u=b;r(d,g,_)},y=({el:u,anchor:d})=>{let g;for(;u&&u!==d;)g=m(u),s(u),u=g;s(d)},M=(u,d,g,_,b,S,L,x,R)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),u==null?O(d,g,_,b,S,L,x,R):F(u,d,b,S,L,x,R)},O=(u,d,g,_,b,S,L,x)=>{let R,E;const{props:P,shapeFlag:B,transition:H,dirs:W}=u;if(R=u.el=i(u.type,S,P&&P.is,P),B&8?f(R,u.children):B&16&&T(u.children,R,null,_,b,Gn(u,S),L,x),W&&Me(u,null,_,"created"),N(R,u,u.scopeId,L,_),P){for(const Q in P)Q!=="value"&&!_t(Q)&&o(R,Q,null,P[Q],S,u.children,_,b,je);"value"in P&&o(R,"value",null,P.value,S),(E=P.onVnodeBeforeMount)&&Ce(E,_,u)}W&&Me(u,null,_,"beforeMount");const z=Wo(b,H);z&&H.beforeEnter(R),r(R,d,g),((E=P&&P.onVnodeMounted)||z||W)&&me(()=>{E&&Ce(E,_,u),z&&H.enter(R),W&&Me(u,null,_,"mounted")},b)},N=(u,d,g,_,b)=>{if(g&&v(u,g),_)for(let S=0;S<_.length;S++)v(u,_[S]);if(b){let S=b.subTree;if(d===S){const L=b.vnode;N(u,L,L.scopeId,L.slotScopeIds,b.parent)}}},T=(u,d,g,_,b,S,L,x,R=0)=>{for(let E=R;E{const x=d.el=u.el;let{patchFlag:R,dynamicChildren:E,dirs:P}=d;R|=u.patchFlag&16;const B=u.props||ee,H=d.props||ee;let W;if(g&&nt(g,!1),(W=H.onVnodeBeforeUpdate)&&Ce(W,g,d,u),P&&Me(d,u,g,"beforeUpdate"),g&&nt(g,!0),E?w(u.dynamicChildren,E,x,g,_,Gn(d,b),S):L||V(u,d,x,null,g,_,Gn(d,b),S,!1),R>0){if(R&16)j(x,d,B,H,g,_,b);else if(R&2&&B.class!==H.class&&o(x,"class",null,H.class,b),R&4&&o(x,"style",B.style,H.style,b),R&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ce(W,g,d,u),P&&Me(d,u,g,"updated")},_)},w=(u,d,g,_,b,S,L)=>{for(let x=0;x{if(g!==_){if(g!==ee)for(const x in g)!_t(x)&&!(x in _)&&o(u,x,g[x],null,L,d.children,b,S,je);for(const x in _){if(_t(x))continue;const R=_[x],E=g[x];R!==E&&x!=="value"&&o(u,x,E,R,L,d.children,b,S,je)}"value"in _&&o(u,"value",g.value,_.value,L)}},A=(u,d,g,_,b,S,L,x,R)=>{const E=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:B,dynamicChildren:H,slotScopeIds:W}=d;W&&(x=x?x.concat(W):W),u==null?(r(E,g,_),r(P,g,_),T(d.children||[],g,P,b,S,L,x,R)):B>0&&B&64&&H&&u.dynamicChildren?(w(u.dynamicChildren,H,g,b,S,L,x),(d.key!=null||b&&d===b.subTree)&&Ur(u,d,!0)):V(u,d,g,P,b,S,L,x,R)},G=(u,d,g,_,b,S,L,x,R)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,g,_,L,R):le(d,g,_,b,S,L,R):fe(u,d,R)},le=(u,d,g,_,b,S,L)=>{const x=u.component=wc(u,_,b);if(Wt(u)&&(x.ctx.renderer=ht),Ec(x),x.asyncDep){if(b&&b.registerDep(x,U),!u.el){const R=x.subTree=oe(_e);q(null,R,d,g)}}else U(x,u,d,g,b,S,L)},fe=(u,d,g)=>{const _=d.component=u.component;if(Tl(u,d,g))if(_.asyncDep&&!_.asyncResolved){X(_,d,g);return}else _.next=d,vl(_.update),_.effect.dirty=!0,_.update();else d.el=u.el,_.vnode=d},U=(u,d,g,_,b,S,L)=>{const x=()=>{if(u.isMounted){let{next:P,bu:B,u:H,parent:W,vnode:z}=u;{const pt=qo(u);if(pt){P&&(P.el=z.el,X(u,P,L)),pt.asyncDep.then(()=>{u.isUnmounted||x()});return}}let Q=P,te;nt(u,!1),P?(P.el=z.el,X(u,P,L)):P=z,B&&fn(B),(te=P.props&&P.props.onVnodeBeforeUpdate)&&Ce(te,W,P,z),nt(u,!0);const ae=kn(u),Te=u.subTree;u.subTree=ae,I(Te,ae,h(Te.el),Xt(Te),u,b,S),P.el=ae.el,Q===null&&Al(u,ae.el),H&&me(H,b),(te=P.props&&P.props.onVnodeUpdated)&&me(()=>Ce(te,W,P,z),b)}else{let P;const{el:B,props:H}=d,{bm:W,m:z,parent:Q}=u,te=bt(d);if(nt(u,!1),W&&fn(W),!te&&(P=H&&H.onVnodeBeforeMount)&&Ce(P,Q,d),nt(u,!0),B&&Un){const ae=()=>{u.subTree=kn(u),Un(B,u.subTree,u,b,null)};te?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=kn(u);I(null,ae,g,_,u,b,S),d.el=ae.el}if(z&&me(z,b),!te&&(P=H&&H.onVnodeMounted)){const ae=d;me(()=>Ce(P,Q,ae),b)}(d.shapeFlag&256||Q&&bt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&me(u.a,b),u.isMounted=!0,d=g=_=null}},R=u.effect=new Ar(x,xe,()=>In(E),u.scope),E=u.update=()=>{R.dirty&&R.run()};E.id=u.uid,nt(u,!0),E()},X=(u,d,g)=>{d.component=u;const _=u.vnode.props;u.vnode=d,u.next=null,nc(u,d.props,_,g),oc(u,d.children,g),Ze(),os(u),et()},V=(u,d,g,_,b,S,L,x,R=!1)=>{const E=u&&u.children,P=u?u.shapeFlag:0,B=d.children,{patchFlag:H,shapeFlag:W}=d;if(H>0){if(H&128){zt(E,B,g,_,b,S,L,x,R);return}else if(H&256){He(E,B,g,_,b,S,L,x,R);return}}W&8?(P&16&&je(E,b,S),B!==E&&f(g,B)):P&16?W&16?zt(E,B,g,_,b,S,L,x,R):je(E,b,S,!0):(P&8&&f(g,""),W&16&&T(B,g,_,b,S,L,x,R))},He=(u,d,g,_,b,S,L,x,R)=>{u=u||mt,d=d||mt;const E=u.length,P=d.length,B=Math.min(E,P);let H;for(H=0;HP?je(u,b,S,!0,!1,B):T(d,g,_,b,S,L,x,R,B)},zt=(u,d,g,_,b,S,L,x,R)=>{let E=0;const P=d.length;let B=u.length-1,H=P-1;for(;E<=B&&E<=H;){const W=u[E],z=d[E]=R?Ge(d[E]):Ae(d[E]);if(it(W,z))I(W,z,g,null,b,S,L,x,R);else break;E++}for(;E<=B&&E<=H;){const W=u[B],z=d[H]=R?Ge(d[H]):Ae(d[H]);if(it(W,z))I(W,z,g,null,b,S,L,x,R);else break;B--,H--}if(E>B){if(E<=H){const W=H+1,z=WH)for(;E<=B;)Le(u[E],b,S,!0),E++;else{const W=E,z=E,Q=new Map;for(E=z;E<=H;E++){const be=d[E]=R?Ge(d[E]):Ae(d[E]);be.key!=null&&Q.set(be.key,E)}let te,ae=0;const Te=H-z+1;let pt=!1,zr=0;const St=new Array(Te);for(E=0;E=Te){Le(be,b,S,!0);continue}let Ie;if(be.key!=null)Ie=Q.get(be.key);else for(te=z;te<=H;te++)if(St[te-z]===0&&it(be,d[te])){Ie=te;break}Ie===void 0?Le(be,b,S,!0):(St[Ie-z]=E+1,Ie>=zr?zr=Ie:pt=!0,I(be,d[Ie],g,null,b,S,L,x,R),ae++)}const Xr=pt?fc(St):mt;for(te=Xr.length-1,E=Te-1;E>=0;E--){const be=z+E,Ie=d[be],Yr=be+1{const{el:S,type:L,transition:x,children:R,shapeFlag:E}=u;if(E&6){tt(u.component.subTree,d,g,_);return}if(E&128){u.suspense.move(d,g,_);return}if(E&64){L.move(u,d,g,ht);return}if(L===ye){r(S,d,g);for(let B=0;Bx.enter(S),b);else{const{leave:B,delayLeave:H,afterLeave:W}=x,z=()=>r(S,d,g),Q=()=>{B(S,()=>{z(),W&&W()})};H?H(S,z,Q):Q()}else r(S,d,g)},Le=(u,d,g,_=!1,b=!1)=>{const{type:S,props:L,ref:x,children:R,dynamicChildren:E,shapeFlag:P,patchFlag:B,dirs:H}=u;if(x!=null&&wn(x,null,g,u,!0),P&256){d.ctx.deactivate(u);return}const W=P&1&&H,z=!bt(u);let Q;if(z&&(Q=L&&L.onVnodeBeforeUnmount)&&Ce(Q,d,u),P&6)Si(u.component,g,_);else{if(P&128){u.suspense.unmount(g,_);return}W&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,g,b,ht,_):E&&(S!==ye||B>0&&B&64)?je(E,d,g,!1,!0):(S===ye&&B&384||!b&&P&16)&&je(R,d,g),_&&qr(u)}(z&&(Q=L&&L.onVnodeUnmounted)||W)&&me(()=>{Q&&Ce(Q,d,u),W&&Me(u,null,d,"unmounted")},g)},qr=u=>{const{type:d,el:g,anchor:_,transition:b}=u;if(d===ye){xi(g,_);return}if(d===Pt){y(u);return}const S=()=>{s(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:L,delayLeave:x}=b,R=()=>L(g,S);x?x(u.el,S,R):R()}else S()},xi=(u,d)=>{let g;for(;u!==d;)g=m(u),s(u),u=g;s(d)},Si=(u,d,g)=>{const{bum:_,scope:b,update:S,subTree:L,um:x}=u;_&&fn(_),b.stop(),S&&(S.active=!1,Le(L,u,d,g)),x&&me(x,d),me(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(u,d,g,_=!1,b=!1,S=0)=>{for(let L=S;Lu.shapeFlag&6?Xt(u.component.subTree):u.shapeFlag&128?u.suspense.next():m(u.anchor||u.el);let Vn=!1;const Gr=(u,d,g)=>{u==null?d._vnode&&Le(d._vnode,null,null,!0):I(d._vnode||null,u,d,null,null,null,g),Vn||(Vn=!0,os(),_n(),Vn=!1),d._vnode=u},ht={p:I,um:Le,m:tt,r:qr,mt:le,mc:T,pc:V,pbc:w,n:Xt,o:e};let Dn,Un;return t&&([Dn,Un]=t(ht)),{render:Gr,hydrate:Dn,createApp:Zl(Gr,Dn)}}function Gn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Wo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ur(e,t,n=!1){const r=e.children,s=t.children;if(k(r)&&k(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function qo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:qo(t)}const dc=e=>e.__isTeleport,Mt=e=>e&&(e.disabled||e.disabled===""),ys=e=>typeof SVGElement<"u"&&e instanceof SVGElement,_s=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,_r=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},hc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:m,o:{insert:v,querySelector:C,createText:I,createComment:$}}=a,q=Mt(t.props);let{shapeFlag:D,children:p,dynamicChildren:y}=t;if(e==null){const M=t.el=I(""),O=t.anchor=I("");v(M,n,r),v(O,n,r);const N=t.target=_r(t.props,C),T=t.targetAnchor=I("");N&&(v(T,N),i==="svg"||ys(N)?i="svg":(i==="mathml"||_s(N))&&(i="mathml"));const F=(w,j)=>{D&16&&f(p,w,j,s,o,i,l,c)};q?F(n,O):N&&F(N,T)}else{t.el=e.el;const M=t.anchor=e.anchor,O=t.target=e.target,N=t.targetAnchor=e.targetAnchor,T=Mt(e.props),F=T?n:O,w=T?M:N;if(i==="svg"||ys(O)?i="svg":(i==="mathml"||_s(O))&&(i="mathml"),y?(m(e.dynamicChildren,y,F,s,o,i,l),Ur(e,t,!0)):c||h(e,t,F,w,s,o,i,l,!1),q)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):on(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const j=t.target=_r(t.props,C);j&&on(t,j,null,a,0)}else T&&on(t,O,N,a,1)}Go(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:m}=e;if(h&&o(f),i&&o(a),l&16){const v=i||!Mt(m);for(let C=0;C0?Re||mt:null,gc(),Dt>0&&Re&&Re.push(e),e}function du(e,t,n,r,s,o){return Xo(Qo(e,t,n,r,s,o,!0))}function Yo(e,t,n,r,s){return Xo(oe(e,t,n,r,s,!0))}function En(e){return e?e.__v_isVNode===!0:!1}function it(e,t){return e.type===t.type&&e.key===t.key}const Jo=({key:e})=>e??null,hn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||de(e)||K(e)?{i:ce,r:e,k:t,f:!!n}:e:null);function Qo(e,t=null,n=null,r=0,s=null,o=e===ye?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Jo(t),ref:t&&hn(t),scopeId:Pn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ce};return l?(Br(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Dt>0&&!i&&Re&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Re.push(c),c}const oe=mc;function mc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===xo)&&(e=_e),En(e)){const l=Qe(e,t,!0);return n&&Br(l,n),Dt>0&&!o&&Re&&(l.shapeFlag&6?Re[Re.indexOf(e)]=l:Re.push(l)),l.patchFlag|=-2,l}if(Tc(e)&&(e=e.__vccOpts),t){t=yc(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=Tr(l)),Z(c)&&(po(c)&&!k(c)&&(c=ie({},c)),t.style=Sr(c))}const i=se(e)?1:Rl(e)?128:dc(e)?64:Z(e)?4:K(e)?2:0;return Qo(e,t,n,r,s,i,o,!0)}function yc(e){return e?po(e)||jo(e)?ie({},e):e:null}function Qe(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?_c(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Jo(a),ref:t&&t.ref?n&&o?k(o)?o.concat(hn(t)):[o,hn(t)]:hn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qe(e.ssContent),ssFallback:e.ssFallback&&Qe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&(f.transition=c.clone(f)),f}function Zo(e=" ",t=0){return oe(Et,null,e,t)}function hu(e,t){const n=oe(Pt,null,e);return n.staticCount=t,n}function pu(e="",t=!1){return t?(zo(),Yo(_e,null,e)):oe(_e,null,e)}function Ae(e){return e==null||typeof e=="boolean"?oe(_e):k(e)?oe(ye,null,e.slice()):typeof e=="object"?Ge(e):oe(Et,null,String(e))}function Ge(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qe(e)}function Br(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Br(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!jo(t)?t._ctx=ce:s===3&&ce&&(ce.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:ce},n=32):(t=String(t),r&64?(n=16,t=[Zo(t)]):n=8);e.children=t,e.shapeFlag|=n}function _c(...e){const t={};for(let n=0;nue||ce;let Cn,vr;{const e=Qs(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Cn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),vr=t("__VUE_SSR_SETTERS__",n=>Gt=n)}const qt=e=>{const t=ue;return Cn(e),e.scope.on(),()=>{e.scope.off(),Cn(t)}},bs=()=>{ue&&ue.scope.off(),Cn(null)};function ei(e){return e.vnode.shapeFlag&4}let Gt=!1;function Ec(e,t=!1){t&&vr(t);const{props:n,children:r}=e.vnode,s=ei(e);tc(e,n,s,t),sc(e,r);const o=s?Cc(e,t):void 0;return t&&vr(!1),o}function Cc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Wl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?ni(e):null,o=qt(e);Ze();const i=Ye(r,e,0,[e.props,s]);if(et(),o(),zs(i)){if(i.then(bs,bs),t)return i.then(l=>{ws(e,l,t)}).catch(l=>{Kt(l,e,0)});e.asyncDep=i}else ws(e,i,t)}else ti(e,t)}function ws(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=_o(t)),ti(e,n)}let Es;function ti(e,t,n){const r=e.type;if(!e.render){if(!t&&Es&&!r.render){const s=r.template||Vr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ie(ie({isCustomElement:o,delimiters:l},i),c);r.render=Es(s,a)}}e.render=r.render||xe}{const s=qt(e);Ze();try{Gl(e)}finally{et(),s()}}}const xc={get(e,t){return ve(e,"get",""),e[t]}};function ni(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,xc),slots:e.slots,emit:e.emit,expose:t}}function jn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(_o(dn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Lt)return Lt[n](e)},has(t,n){return n in t||n in Lt}}))}function Sc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function Tc(e){return K(e)&&"__vccOpts"in e}const ne=(e,t)=>cl(e,t,Gt);function br(e,t,n){const r=arguments.length;return r===2?Z(t)&&!k(t)?En(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&En(n)&&(n=[n]),oe(e,t,n))}const Ac="3.4.27";/** +* @vue/runtime-dom v3.4.27 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Rc="http://www.w3.org/2000/svg",Oc="http://www.w3.org/1998/Math/MathML",ze=typeof document<"u"?document:null,Cs=ze&&ze.createElement("template"),Lc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?ze.createElementNS(Rc,e):t==="mathml"?ze.createElementNS(Oc,e):ze.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>ze.createTextNode(e),createComment:e=>ze.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ze.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Cs.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Cs.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ke="transition",Tt="animation",Ut=Symbol("_vtc"),ri=(e,{slots:t})=>br(Nl,Ic(e),t);ri.displayName="Transition";const si={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ri.props=ie({},Ro,si);const rt=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},xs=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Ic(e){const t={};for(const A in e)A in si||(t[A]=e[A]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,C=Mc(s),I=C&&C[0],$=C&&C[1],{onBeforeEnter:q,onEnter:D,onEnterCancelled:p,onLeave:y,onLeaveCancelled:M,onBeforeAppear:O=q,onAppear:N=D,onAppearCancelled:T=p}=t,F=(A,G,le)=>{st(A,G?f:l),st(A,G?a:i),le&&le()},w=(A,G)=>{A._isLeaving=!1,st(A,h),st(A,v),st(A,m),G&&G()},j=A=>(G,le)=>{const fe=A?N:D,U=()=>F(G,A,le);rt(fe,[G,U]),Ss(()=>{st(G,A?c:o),Ke(G,A?f:l),xs(fe)||Ts(G,r,I,U)})};return ie(t,{onBeforeEnter(A){rt(q,[A]),Ke(A,o),Ke(A,i)},onBeforeAppear(A){rt(O,[A]),Ke(A,c),Ke(A,a)},onEnter:j(!1),onAppear:j(!0),onLeave(A,G){A._isLeaving=!0;const le=()=>w(A,G);Ke(A,h),Ke(A,m),Fc(),Ss(()=>{A._isLeaving&&(st(A,h),Ke(A,v),xs(y)||Ts(A,r,$,le))}),rt(y,[A,le])},onEnterCancelled(A){F(A,!1),rt(p,[A])},onAppearCancelled(A){F(A,!0),rt(T,[A])},onLeaveCancelled(A){w(A),rt(M,[A])}})}function Mc(e){if(e==null)return null;if(Z(e))return[zn(e.enter),zn(e.leave)];{const t=zn(e);return[t,t]}}function zn(e){return Ii(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ut]||(e[Ut]=new Set)).add(t)}function st(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Ut];n&&(n.delete(t),n.size||(e[Ut]=void 0))}function Ss(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Pc=0;function Ts(e,t,n,r){const s=e._endId=++Pc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Nc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,m),o()},m=v=>{v.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[C]||"").split(", "),s=r(`${ke}Delay`),o=r(`${ke}Duration`),i=As(s,o),l=r(`${Tt}Delay`),c=r(`${Tt}Duration`),a=As(l,c);let f=null,h=0,m=0;t===ke?i>0&&(f=ke,h=i,m=o.length):t===Tt?a>0&&(f=Tt,h=a,m=c.length):(h=Math.max(i,a),f=h>0?i>a?ke:Tt:null,m=f?f===ke?o.length:c.length:0);const v=f===ke&&/\b(transform|all)(,|$)/.test(r(`${ke}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:v}}function As(e,t){for(;e.lengthRs(n)+Rs(e[r])))}function Rs(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Fc(){return document.body.offsetHeight}function $c(e,t,n){const r=e[Ut];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Os=Symbol("_vod"),Hc=Symbol("_vsh"),jc=Symbol(""),Vc=/(^|;)\s*display\s*:/;function Dc(e,t,n){const r=e.style,s=se(n);let o=!1;if(n&&!s){if(t)if(se(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&pn(r,l,"")}else for(const i in t)n[i]==null&&pn(r,i,"");for(const i in n)i==="display"&&(o=!0),pn(r,i,n[i])}else if(s){if(t!==n){const i=r[jc];i&&(n+=";"+i),r.cssText=n,o=Vc.test(n)}}else t&&e.removeAttribute("style");Os in e&&(e[Os]=o?r.display:"",e[Hc]&&(r.display="none"))}const Ls=/\s*!important$/;function pn(e,t,n){if(k(n))n.forEach(r=>pn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Uc(e,t);Ls.test(n)?e.setProperty(dt(r),n.replace(Ls,""),"important"):e[r]=n}}const Is=["Webkit","Moz","ms"],Xn={};function Uc(e,t){const n=Xn[t];if(n)return n;let r=$e(t);if(r!=="filter"&&r in e)return Xn[t]=r;r=Tn(r);for(let s=0;sYn||(Gc.then(()=>Yn=0),Yn=Date.now());function Xc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(Yc(r,n.value),t,5,[r])};return n.value=e,n.attached=zc(),n}function Yc(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Fs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Jc=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?$c(e,r,a):t==="style"?Dc(e,n,r):kt(t)?Er(t)||Wc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qc(e,t,r,a))?kc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Bc(e,t,r,a))};function Qc(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Fs(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Fs(t)&&se(n)?!1:t in e}const $s=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>fn(t,n):t};function Zc(e){e.target.composing=!0}function Hs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Jn=Symbol("_assign"),gu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Jn]=$s(s);const o=r||s.props&&s.props.type==="number";gt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=lr(l)),e[Jn](l)}),n&>(e,"change",()=>{e.value=e.value.trim()}),t||(gt(e,"compositionstart",Zc),gt(e,"compositionend",Hs),gt(e,"change",Hs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e[Jn]=$s(o),e.composing)return;const i=(s||e.type==="number")&&!/^0\d/.test(e.value)?lr(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===l)||(e.value=l))}},ea=["ctrl","shift","alt","meta"],ta={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ea.some(n=>e[`${n}Key`]&&!t.includes(n))},mu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=dt(s.key);if(t.some(i=>i===o||na[i]===o))return e(s)})},oi=ie({patchProp:Jc},Lc);let Ft,js=!1;function ra(){return Ft||(Ft=ac(oi))}function sa(){return Ft=js?Ft:uc(oi),js=!0,Ft}const _u=(...e)=>{const t=ra().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=li(r);if(!s)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,ii(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},vu=(...e)=>{const t=sa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=li(r);if(s)return n(s,!0,ii(s))},t};function ii(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function li(e){return se(e)?document.querySelector(e):e}const bu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},oa="modulepreload",ia=function(e){return"/"+e},Vs={},wu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=ia(l),l in Vs)return;Vs[l]=!0;const c=l.endsWith(".css"),a=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${a}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":oa,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,m)=>{f.addEventListener("load",h),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},la=window.__VP_SITE_DATA__;function kr(e){return to()?(Di(e),!0):!1}function Fe(e){return typeof e=="function"?e():yo(e)}const ci=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ca=Object.prototype.toString,aa=e=>ca.call(e)==="[object Object]",Bt=()=>{},Ds=ua();function ua(){var e,t;return ci&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function fa(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const ai=e=>e();function da(e,t={}){let n,r,s=Bt;const o=l=>{clearTimeout(l),s(),s=Bt};return l=>{const c=Fe(e),a=Fe(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function ha(e=ai){const t=re(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:On(t),pause:n,resume:r,eventFilter:s}}function pa(e){return Hn()}function ui(...e){if(e.length!==1)return gl(...e);const t=e[0];return typeof t=="function"?On(dl(()=>({get:t,set:Bt}))):re(t)}function fi(e,t,n={}){const{eventFilter:r=ai,...s}=n;return Ne(e,fa(r,t),s)}function ga(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=ha(r);return{stop:fi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Kr(e,t=!0,n){pa()?xt(e,n):t?e():Ln(e)}function Eu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return fi(e,t,{...o,eventFilter:da(r,{maxWait:s})})}function Cu(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Bt}=r,c=re(!s),a=i?Fr(t):re(t);let f=0;return Hr(async h=>{if(!c.value)return;f++;const m=f;let v=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const C=await e(I=>{h(()=>{o&&(o.value=!1),v||I()})});m===f&&(a.value=C)}catch(C){l(C)}finally{o&&m===f&&(o.value=!1),v=!0}}),s?ne(()=>(c.value=!0,a.value)):a}function di(e){var t;const n=Fe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Oe=ci?window:void 0;function Ct(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Oe):[t,n,r,s]=e,!t)return Bt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,v)=>(f.addEventListener(h,m,v),()=>f.removeEventListener(h,m,v)),c=Ne(()=>[di(t),Fe(s)],([f,h])=>{if(i(),!f)return;const m=aa(h)?{...h}:h;o.push(...n.flatMap(v=>r.map(C=>l(f,v,C,m))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return kr(a),a}function ma(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function xu(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Oe,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=ma(t);return Ct(s,o,f=>{f.repeat&&Fe(l)||c(f)&&n(f)},i)}function ya(){const e=re(!1),t=Hn();return t&&xt(()=>{e.value=!0},t),e}function _a(e){const t=ya();return ne(()=>(t.value,!!e()))}function hi(e,t={}){const{window:n=Oe}=t,r=_a(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=re(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Hr(()=>{r.value&&(l(),s=n.matchMedia(Fe(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return kr(()=>{c(),l(),s=void 0}),o}const ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},cn="__vueuse_ssr_handlers__",va=ba();function ba(){return cn in ln||(ln[cn]=ln[cn]||{}),ln[cn]}function pi(e,t){return va[e]||t}function wa(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ea={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Us="vueuse-storage";function Wr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Oe,eventFilter:m,onError:v=w=>{console.error(w)},initOnMounted:C}=r,I=(f?Fr:re)(typeof t=="function"?t():t);if(!n)try{n=pi("getDefaultStorage",()=>{var w;return(w=Oe)==null?void 0:w.localStorage})()}catch(w){v(w)}if(!n)return I;const $=Fe(t),q=wa($),D=(s=r.serializer)!=null?s:Ea[q],{pause:p,resume:y}=ga(I,()=>O(I.value),{flush:o,deep:i,eventFilter:m});h&&l&&Kr(()=>{Ct(h,"storage",T),Ct(h,Us,F),C&&T()}),C||T();function M(w,j){h&&h.dispatchEvent(new CustomEvent(Us,{detail:{key:e,oldValue:w,newValue:j,storageArea:n}}))}function O(w){try{const j=n.getItem(e);if(w==null)M(j,null),n.removeItem(e);else{const A=D.write(w);j!==A&&(n.setItem(e,A),M(j,A))}}catch(j){v(j)}}function N(w){const j=w?w.newValue:n.getItem(e);if(j==null)return c&&$!=null&&n.setItem(e,D.write($)),$;if(!w&&a){const A=D.read(j);return typeof a=="function"?a(A,$):q==="object"&&!Array.isArray(A)?{...$,...A}:A}else return typeof j!="string"?j:D.read(j)}function T(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){I.value=$;return}if(!(w&&w.key!==e)){p();try{(w==null?void 0:w.newValue)!==D.write(I.value)&&(I.value=N(w))}catch(j){v(j)}finally{w?Ln(y):y()}}}}function F(w){T(w.detail)}return I}function gi(e){return hi("(prefers-color-scheme: dark)",e)}function Ca(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Oe,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=gi({window:s}),v=ne(()=>m.value?"dark":"light"),C=c||(i==null?ui(r):Wr(i,r,o,{window:s,listenToStorageChanges:l})),I=ne(()=>C.value==="auto"?v.value:C.value),$=pi("updateHTMLAttrs",(y,M,O)=>{const N=typeof y=="string"?s==null?void 0:s.document.querySelector(y):di(y);if(!N)return;let T;if(f&&(T=s.document.createElement("style"),T.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(T)),M==="class"){const F=O.split(/\s/g);Object.values(h).flatMap(w=>(w||"").split(/\s/g)).filter(Boolean).forEach(w=>{F.includes(w)?N.classList.add(w):N.classList.remove(w)})}else N.setAttribute(M,O);f&&(s.getComputedStyle(T).opacity,document.head.removeChild(T))});function q(y){var M;$(t,n,(M=h[y])!=null?M:y)}function D(y){e.onChanged?e.onChanged(y,q):q(y)}Ne(I,D,{flush:"post",immediate:!0}),Kr(()=>D(I.value));const p=ne({get(){return a?C.value:I.value},set(y){C.value=y}});try{return Object.assign(p,{store:C,system:v,state:I})}catch{return p}}function xa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Oe}=e,s=Ca({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=ne(()=>s.system?s.system.value:gi({window:r}).value?"dark":"light");return ne({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function Qn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Su(e,t,n={}){const{window:r=Oe}=n;return Wr(e,t,r==null?void 0:r.localStorage,n)}function mi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Zn=new WeakMap;function Tu(e,t=!1){const n=re(t);let r=null,s="";Ne(ui(e),l=>{const c=Qn(Fe(l));if(c){const a=c;if(Zn.get(a)||Zn.set(a,a.style.overflow),a.style.overflow!=="hidden"&&(s=a.style.overflow),a.style.overflow==="hidden")return n.value=!0;if(n.value)return a.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Qn(Fe(e));!l||n.value||(Ds&&(r=Ct(l,"touchmove",c=>{Sa(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Qn(Fe(e));!l||!n.value||(Ds&&(r==null||r()),l.style.overflow=s,Zn.delete(l),n.value=!1)};return kr(i),ne({get(){return n.value},set(l){l?o():i()}})}function Au(e,t,n={}){const{window:r=Oe}=n;return Wr(e,t,r==null?void 0:r.sessionStorage,n)}function Ru(e={}){const{window:t=Oe,behavior:n="auto"}=e;if(!t)return{x:re(0),y:re(0)};const r=re(t.scrollX),s=re(t.scrollY),o=ne({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=ne({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return Ct(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Ou(e={}){const{window:t=Oe,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=re(n),l=re(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Kr(c),Ct("resize",c,{passive:!0}),s){const a=hi("(orientation: portrait)");Ne(a,()=>c())}return{width:i,height:l}}var er={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},tr={};const yi=/^(?:[a-z]+:|\/\/)/i,Ta="vitepress-theme-appearance",Aa=/#.*$/,Ra=/[?#].*$/,Oa=/(?:(^|\/)index)?\.(?:md|html)$/,he=typeof document<"u",_i={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function La(e,t,n=!1){if(t===void 0)return!1;if(e=Bs(`/${e}`),n)return new RegExp(t).test(e);if(Bs(t)!==e)return!1;const r=t.match(Aa);return r?(he?location.hash:"")===r[0]:!0}function Bs(e){return decodeURI(e).replace(Ra,"").replace(Oa,"$1")}function Ia(e){return yi.test(e)}function Ma(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ia(n)&&La(t,`/${n}/`,!0))||"root"}function Pa(e,t){var r,s,o,i,l,c,a;const n=Ma(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:bi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function vi(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Na(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Na(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Fa(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function bi(e,t){return[...e.filter(n=>!Fa(t,n)),...t]}const $a=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ha=/^[a-z]:/i;function ks(e){const t=Ha.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace($a,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const nr=new Set;function ja(e){if(nr.size===0){const n=typeof process=="object"&&(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||(er==null?void 0:er.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>nr.add(r))}const t=e.split(".").pop();return t==null||!nr.has(t.toLowerCase())}function Lu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Va=Symbol(),ut=Fr(la);function Iu(e){const t=ne(()=>Pa(ut.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?re(!0):n?xa({storageKey:Ta,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):re(!1),s=re(he?location.hash:"");return he&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Ne(()=>e.data,()=>{s.value=he?location.hash:""}),{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>vi(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:r,hash:ne(()=>s.value)}}function Da(){const e=wt(Va);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ua(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ks(e){return yi.test(e)||!e.startsWith("/")?e:Ua(ut.value.base,e)}function Ba(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),he){const n="/";t=ks(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${ks(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let gn=[];function Mu(e){gn.push(e),$n(()=>{gn=gn.filter(t=>t!==e)})}function ka(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Ws(e,n);else if(Array.isArray(e))for(const r of e){const s=Ws(r,n);if(s){t=s;break}}return t}function Ws(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ka=Symbol(),wi="http://a.com",Wa=()=>({path:"/",component:null,data:_i});function Pu(e,t){const n=Rn(Wa()),r={route:n,go:s};async function s(l=he?location.href:"/"){var c,a;l=rr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(he&&l!==rr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l)))}let o=null;async function i(l,c=0,a=!1){var m;if(await((m=r.onBeforePageLoad)==null?void 0:m.call(r,l))===!1)return;const f=new URL(l,wi),h=o=f.pathname;try{let v=await e(h);if(!v)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:C,__pageData:I}=v;if(!C)throw new Error(`Invalid route component: ${C}`);n.path=he?h:Ks(h),n.component=dn(C),n.data=dn(I),he&&Ln(()=>{let $=ut.value.base+I.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!$.endsWith("/")&&($+=".html"),$!==f.pathname&&(f.pathname=$,l=$+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let q=null;try{q=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(D){console.warn(D)}if(q){qs(q,f.hash);return}}window.scrollTo(0,c)})}}catch(v){if(!/fetch|Page not found/.test(v.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(v),!a)try{const C=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await C.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=he?h:Ks(h),n.component=t?dn(t):null;const C=he?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={..._i,relativePath:C}}}}return he&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:m,pathname:v,hash:C,search:I}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),$=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&m===$.origin&&ja(v)&&(l.preventDefault(),v===$.pathname&&I===$.search?(C!==$.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:$.href,newURL:h}))),C?qs(a,C,a.classList.contains("header-anchor")):window.scrollTo(0,0)):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(rr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function qa(){const e=wt(Ka);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ei(){return qa().route}function qs(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-ka()+o;requestAnimationFrame(s)}}function rr(e){const t=new URL(e,wi);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const sr=()=>gn.forEach(e=>e()),Nu=jr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ei(),{site:n}=Da();return()=>br(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?br(t.component,{onVnodeMounted:sr,onVnodeUpdated:sr,onVnodeUnmounted:sr}):"404 Page Not Found"])}}),Fu=jr({setup(e,{slots:t}){const n=re(!1);return xt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function $u(){he&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Hu(){if(he){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let a=c.textContent||"";i&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),Ga(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Ga(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function ju(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=or(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(or);r.forEach((l,c)=>{const a=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));a!==-1?delete i[a]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Hr(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=vi(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):or(["meta",{name:"description",content:f}]),s(bi(i.head,Xa(c)))})}function or([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function za(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Xa(e){return e.filter(t=>!za(t))}const ir=new Set,Ci=()=>document.createElement("link"),Ya=e=>{const t=Ci();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ja=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let an;const Qa=he&&(an=Ci())&&an.relList&&an.relList.supports&&an.relList.supports("prefetch")?Ya:Ja;function Vu(){if(!he||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!ir.has(c)){ir.add(c);const a=Ba(c);a&&Qa(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):ir.add(l))})})};xt(r);const s=Ei();Ne(()=>s.path,r),$n(()=>{n&&n.disconnect()})}export{yu as $,su as A,Dl as B,ka as C,nu as D,lu as E,ye as F,Fr as G,Mu as H,oe as I,ru as J,yi as K,Ei as L,_c as M,wt as N,Ou as O,Sr as P,xu as Q,Ln as R,Ru as S,ri as T,he as U,On as V,iu as W,wu as X,Tu as Y,ec as Z,bu as _,Zo as a,au as a0,mu as a1,uu as a2,hu as a3,ju as a4,Ka as a5,Iu as a6,Va as a7,Nu as a8,Fu as a9,ut as aa,vu as ab,Pu as ac,Ba as ad,Vu as ae,Hu as af,$u as ag,br as ah,di as ai,kr as aj,Cu as ak,Au as al,Su as am,Eu as an,qa as ao,Ct as ap,Mo as aq,ou as ar,gu as as,de as at,fu as au,dn as av,_u as aw,Lu as ax,Yo as b,du as c,jr as d,pu as e,ja as f,Ks as g,ne as h,Ia as i,Qo as j,yo as k,tu as l,La as m,Tr as n,zo as o,eu as p,hi as q,cu as r,re as s,Za as t,Da as u,Ne as v,Cl as w,Hr as x,xt as y,$n as z}; diff --git a/.vitepress/dist/assets/chunks/theme.DOJLXmKO.js b/.vitepress/dist/assets/chunks/theme.DOJLXmKO.js new file mode 100644 index 0000000..205ee32 --- /dev/null +++ b/.vitepress/dist/assets/chunks/theme.DOJLXmKO.js @@ -0,0 +1,2 @@ +const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.CAk53M2R.js","assets/chunks/framework.D5qxx6u8.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +import{d as _,o as a,c,r as l,n as N,a as D,t as I,b as $,w as d,e as f,T as ve,_ as b,u as Ue,i as Ge,f as je,g as pe,h as y,j as v,k as r,p as B,l as H,m as z,q as ie,s as w,v as j,x as Z,y as R,z as he,A as ye,B as ze,C as qe,D as q,F as M,E,G as Pe,H as x,I as m,J as W,K as Le,L as ee,M as Y,N as te,O as Ke,P as Ve,Q as le,R as We,S as Se,U as oe,V as Re,W as Je,X as Ye,Y as Te,Z as Ie,$ as Qe,a0 as Xe,a1 as Ze,a2 as xe}from"./framework.D5qxx6u8.js";const et=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:N(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[D(I(e.text),1)])],2))}}),tt={key:0,class:"VPBackdrop"},ot=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),$(ve,{name:"fade"},{default:d(()=>[e.show?(a(),c("div",tt)):f("",!0)]),_:1}))}}),st=b(ot,[["__scopeId","data-v-54a304ca"]]),P=Ue;function nt(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:n,protocol:s}=new URL(o,"http://a.com");if(Ge(o)||o.startsWith("#")||!s.startsWith("http")||!je(e))return o;const{site:i}=P(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return pe(u)}function J({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:i}=P(),u=y(()=>{var p,g;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,g])=>u.value.label===g.label?[]:{text:g.label,link:at(g.link||(p==="root"?"/":`/${p}/`),s.value.i18nRouting!==!1&&o,n.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function at(o,e,t,n){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const rt=o=>(B("data-v-6ff51ddd"),o=o(),H(),o),it={class:"NotFound"},lt={class:"code"},ct={class:"title"},ut=rt(()=>v("div",{class:"divider"},null,-1)),dt={class:"quote"},vt={class:"action"},pt=["href","aria-label"],ht=_({__name:"NotFound",setup(o){const{theme:e}=P(),{currentLang:t}=J();return(n,s)=>{var i,u,h,p,g;return a(),c("div",it,[v("p",lt,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),v("h1",ct,I(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),ut,v("blockquote",dt,I(((h=r(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",vt,[v("a",{class:"link",href:r(pe)(r(t).link),"aria-label":((p=r(e).notFound)==null?void 0:p.linkLabel)??"go to home"},I(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,pt)])])}}}),ft=b(ht,[["__scopeId","data-v-6ff51ddd"]]);function we(o,e){if(Array.isArray(o))return Q(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((s,i)=>i.split("/").length-s.split("/").length).find(s=>e.startsWith(ce(s))),n=t?o[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function _t(o){const e=[];let t=0;for(const n in o){const s=o[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function mt(o){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):z(o,e.link)?!0:e.items?ue(o,e.items):!1}function Q(o,e){return[...o].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Q(n.items,s)),n})}function O(){const{frontmatter:o,page:e,theme:t}=P(),n=ie("(min-width: 960px)"),s=w(!1),i=y(()=>{const C=t.value.sidebar,S=e.value.relativePath;return C?we(C,S):[]}),u=w(i.value);j(i,(C,S)=>{JSON.stringify(C)!==JSON.stringify(S)&&(u.value=i.value)});const h=y(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=y(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>h.value&&n.value),k=y(()=>h.value?_t(u.value):[]);function V(){s.value=!0}function T(){s.value=!1}function A(){s.value?T():V()}return{isOpen:s,sidebar:u,sidebarGroups:k,hasSidebar:h,hasAside:g,leftAside:p,isSidebarEnabled:L,open:V,close:T,toggle:A}}function kt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",n)}),he(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function bt(o){const{page:e,hash:t}=P(),n=w(!1),s=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),u=w(!1),h=()=>{u.value=z(e.value.relativePath,o.value.link)};j([e,o,t],h),R(h);const p=y(()=>u.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),g=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{n.value=!!(s.value&&o.value.collapsed)}),ye(()=>{(u.value||p.value)&&(n.value=!1)});function L(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:i,isActiveLink:u,hasActiveLink:p,hasChildren:g,toggle:L}}function $t(){const{hasSidebar:o}=O(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Ne(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:gt(t),link:"#"+t.id,level:n}});return yt(e,o)}function gt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function yt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=n&&u.level<=s),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const i=[];e:for(let u=0;u=0;p--){const g=o[p];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",n)}),ze(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,g=document.body.offsetHeight,L=Math.abs(h+p-g)<1,k=de.map(({element:T,link:A})=>({link:A,top:Lt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!k.length){u(null);return}if(h<1){u(null);return}if(L){u(k[k.length-1].link);return}let V=null;for(const{link:T,top:A}of k){if(A>h+qe()+4)break;V=T}u(V)}function u(h){s&&s.classList.remove("active"),h==null?s=null:s=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=s;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const Vt=["href","title"],St=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const n=t.href.split("#")[1],s=document.getElementById(decodeURIComponent(n));s==null||s.focus({preventScroll:!0})}return(t,n)=>{const s=q("VPDocOutlineItem",!0);return a(),c("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[v("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,Vt),i!=null&&i.length?(a(),$(s,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Me=b(St,[["__scopeId","data-v-53c99d69"]]),Tt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},wt=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=P(),n=Pe([]);x(()=>{n.value=_e(e.value.outline??t.value.outline)});const s=w(),i=w();return Pt(s,i),(u,h)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[v("div",Tt,[v("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),v("div",It,I(r(Ne)(r(t))),1),m(Me,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Nt=b(wt,[["__scopeId","data-v-f610f197"]]),Mt={class:"VPDocAsideCarbonAds"},At=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(a(),c("div",Mt,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct=o=>(B("data-v-cb998dce"),o=o(),H(),o),Bt={class:"VPDocAside"},Ht=Ct(()=>v("div",{class:"spacer"},null,-1)),Et=_({__name:"VPDocAside",setup(o){const{theme:e}=P();return(t,n)=>(a(),c("div",Bt,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Nt),l(t.$slots,"aside-outline-after",{},void 0,!0),Ht,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(At,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ft=b(Et,[["__scopeId","data-v-cb998dce"]]);function Dt(){const{theme:o,page:e}=P();return y(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Ot(){const{page:o,theme:e,frontmatter:t}=P();return y(()=>{var g,L,k,V,T,A,C,S;const n=we(e.value.sidebar,o.value.relativePath),s=mt(n),i=Ut(s,U=>U.link.replace(/[?#].*$/,"")),u=i.findIndex(U=>z(o.value.relativePath,U.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((k=i[u-1])==null?void 0:k.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[u-1])==null?void 0:T.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((C=i[u+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Ut(o,e){const t=new Set;return o.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),n=y(()=>e.href&&Le.test(e.href)||e.target==="_blank");return(s,i)=>(a(),$(W(t.value),{class:N(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?r(fe)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:d(()=>[l(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},jt=["datetime"],zt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:n,lang:s}=P(),i=y(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),u=y(()=>i.value.toISOString()),h=w("");return R(()=>{Z(()=>{var p,g,L;h.value=new Intl.DateTimeFormat((g=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&g.forceLocale?s.value:void 0,((L=e.value.lastUpdated)==null?void 0:L.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(p,g)=>{var L;return a(),c("p",Gt,[D(I(((L=r(e).lastUpdated)==null?void 0:L.text)||r(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:u.value},I(h.value),9,jt)])}}}),qt=b(zt,[["__scopeId","data-v-19a7ae4e"]]),Ae=o=>(B("data-v-5941af80"),o=o(),H(),o),Kt={key:0,class:"VPDocFooter"},Wt={key:0,class:"edit-info"},Rt={key:0,class:"edit-link"},Jt=Ae(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Yt={key:1,class:"last-updated"},Qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt=Ae(()=>v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Zt={class:"pager"},xt=["innerHTML"],eo=["innerHTML"],to={class:"pager"},oo=["innerHTML"],so=["innerHTML"],no=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=P(),s=Dt(),i=Ot(),u=y(()=>e.value.editLink&&n.value.editLink!==!1),h=y(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),p=y(()=>u.value||h.value||i.value.prev||i.value.next);return(g,L)=>{var k,V,T,A;return p.value?(a(),c("footer",Kt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Wt,[u.value?(a(),c("div",Rt,[m(F,{class:"edit-link-button",href:r(s).url,"no-icon":!0},{default:d(()=>[Jt,D(" "+I(r(s).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",Yt,[m(qt)])):f("",!0)])):f("",!0),(k=r(i).prev)!=null&&k.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",Qt,[Xt,v("div",Zt,[(T=r(i).prev)!=null&&T.link?(a(),$(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,xt),v("span",{class:"title",innerHTML:r(i).prev.text},null,8,eo)]}),_:1},8,["href"])):f("",!0)]),v("div",to,[(A=r(i).next)!=null&&A.link?(a(),$(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,oo),v("span",{class:"title",innerHTML:r(i).next.text},null,8,so)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),ao=b(no,[["__scopeId","data-v-5941af80"]]),ro=o=>(B("data-v-e6f2a212"),o=o(),H(),o),io={class:"container"},lo=ro(()=>v("div",{class:"aside-curtain"},null,-1)),co={class:"aside-container"},uo={class:"aside-content"},vo={class:"content"},po={class:"content-container"},ho={class:"main"},fo=_({__name:"VPDoc",setup(o){const{theme:e}=P(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:i}=O(),u=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const g=q("Content");return a(),c("div",{class:N(["VPDoc",{"has-sidebar":r(n),"has-aside":r(s)}])},[l(h.$slots,"doc-top",{},void 0,!0),v("div",io,[r(s)?(a(),c("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[lo,v("div",co,[v("div",uo,[m(Ft,null,{"aside-top":d(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),v("div",vo,[v("div",po,[l(h.$slots,"doc-before",{},void 0,!0),v("main",ho,[m(g,{class:N(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(ao,null,{"doc-footer-before":d(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),_o=b(fo,[["__scopeId","data-v-e6f2a212"]]),mo=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Le.test(e.href)),n=y(()=>e.tag||e.href?"a":"button");return(s,i)=>(a(),$(W(n.value),{class:N(["VPButton",[s.size,s.theme]]),href:s.href?r(fe)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:d(()=>[D(I(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),ko=b(mo,[["__scopeId","data-v-c9cf0e3c"]]),bo=["src","alt"],$o=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=q("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,bo)):(a(),c(M,{key:1},[m(n,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(n,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),X=b($o,[["__scopeId","data-v-ab19afbb"]]),go=o=>(B("data-v-b10c5094"),o=o(),H(),o),yo={class:"container"},Po={class:"main"},Lo={key:0,class:"name"},Vo=["innerHTML"],So=["innerHTML"],To=["innerHTML"],Io={key:0,class:"actions"},wo={key:0,class:"image"},No={class:"image-container"},Mo=go(()=>v("div",{class:"image-bg"},null,-1)),Ao=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,n)=>(a(),c("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[v("div",yo,[v("div",Po,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Lo,[v("span",{innerHTML:t.name,class:"clip"},null,8,Vo)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,So)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,To)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",Io,[(a(!0),c(M,null,E(t.actions,s=>(a(),c("div",{key:s.link,class:"action"},[m(ko,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",wo,[v("div",No,[Mo,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Co=b(Ao,[["__scopeId","data-v-b10c5094"]]),Bo=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=P();return(t,n)=>r(e).hero?(a(),$(Co,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Ho=o=>(B("data-v-bd37d1a2"),o=o(),H(),o),Eo={class:"box"},Fo={key:0,class:"icon"},Do=["innerHTML"],Oo=["innerHTML"],Uo=["innerHTML"],Go={key:4,class:"link-text"},jo={class:"link-text-value"},zo=Ho(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),qo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),$(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:d(()=>[v("article",Eo,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Fo,[m(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Do)):f("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Oo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Uo)):f("",!0),e.linkText?(a(),c("div",Go,[v("p",jo,[D(I(e.linkText)+" ",1),zo])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Ko=b(qo,[["__scopeId","data-v-bd37d1a2"]]),Wo={key:0,class:"VPFeatures"},Ro={class:"container"},Jo={class:"items"},Yo=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(a(),c("div",Wo,[v("div",Ro,[v("div",Jo,[(a(!0),c(M,null,E(n.features,i=>(a(),c("div",{key:i.title,class:N(["item",[t.value]])},[m(Ko,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Qo=b(Yo,[["__scopeId","data-v-b1eea84a"]]),Xo=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=P();return(t,n)=>r(e).features?(a(),$(Qo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),Zo=_({__name:"VPHomeContent",setup(o){const{width:e}=Ke({initialWidth:0,includeScrollbar:!1});return(t,n)=>(a(),c("div",{class:"vp-doc container",style:Ve(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),xo=b(Zo,[["__scopeId","data-v-c141a4bd"]]),es={class:"VPHome"},ts=_({__name:"VPHome",setup(o){const{frontmatter:e}=P();return(t,n)=>{const s=q("Content");return a(),c("div",es,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Bo,null,{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(Xo),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),$(xo,{key:0},{default:d(()=>[m(s)]),_:1})):(a(),$(s,{key:1}))])}}}),os=b(ts,[["__scopeId","data-v-07b1ad08"]]),ss={},ns={class:"VPPage"};function as(o,e){const t=q("Content");return a(),c("div",ns,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const rs=b(ss,[["render",as]]),is=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=P(),{hasSidebar:n}=O();return(s,i)=>(a(),c("div",{class:N(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(s.$slots,"not-found",{key:0},()=>[m(ft)],!0):r(t).layout==="page"?(a(),$(rs,{key:1},{"page-top":d(()=>[l(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(os,{key:2},{"home-hero-before":d(()=>[l(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(W(r(t).layout),{key:3})):(a(),$(_o,{key:4},{"doc-top":d(()=>[l(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":d(()=>[l(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":d(()=>[l(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":d(()=>[l(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":d(()=>[l(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ls=b(is,[["__scopeId","data-v-9a6c75ad"]]),cs={class:"container"},us=["innerHTML"],ds=["innerHTML"],vs=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=O();return(s,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(n)}])},[v("div",cs,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,us)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,ds)):f("",!0)])],2)):f("",!0)}}),ps=b(vs,[["__scopeId","data-v-566314d4"]]);function hs(){const{theme:o,frontmatter:e}=P(),t=Pe([]),n=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const fs=o=>(B("data-v-883964e0"),o=o(),H(),o),_s={class:"menu-text"},ms=fs(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),ks={class:"header"},bs={class:"outline"},$s=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=P(),n=w(!1),s=w(0),i=w(),u=w();function h(k){var V;(V=i.value)!=null&&V.contains(k.target)||(n.value=!1)}j(n,k=>{if(k){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),le("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function p(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g(k){k.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{n.value=!1}))}function L(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(k,V)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Ve({"--vp-vh":s.value+"px"}),ref_key:"main",ref:i},[k.headers.length>0?(a(),c("button",{key:0,onClick:p,class:N({open:n.value})},[v("span",_s,I(r(Ne)(r(t))),1),ms],2)):(a(),c("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:d(()=>[n.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:g},[v("div",ks,[v("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),v("div",bs,[m(Me,{headers:k.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),gs=b($s,[["__scopeId","data-v-883964e0"]]),ys=o=>(B("data-v-2488c25a"),o=o(),H(),o),Ps={class:"container"},Ls=["aria-expanded"],Vs=ys(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),Ss={class:"menu-text"},Ts=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=O(),{headers:s}=hs(),{y:i}=Se(),u=w(0);R(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=_e(t.value.outline??e.value.outline)});const h=y(()=>s.value.length===0),p=y(()=>h.value&&!n.value),g=y(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:h.value,fixed:p.value}));return(L,k)=>r(t).layout!=="home"&&(!p.value||r(i)>=u.value)?(a(),c("div",{key:0,class:N(g.value)},[v("div",Ps,[r(n)?(a(),c("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=V=>L.$emit("open-menu"))},[Vs,v("span",Ss,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Ls)):f("",!0),m(gs,{headers:r(s),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Is=b(Ts,[["__scopeId","data-v-2488c25a"]]);function ws(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",s)}function t(){o.value=!1,window.removeEventListener("resize",s)}function n(){o.value?t():e()}function s(){window.outerWidth>=768&&t()}const i=ee();return j(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const Ns={},Ms={class:"VPSwitch",type:"button",role:"switch"},As={class:"check"},Cs={key:0,class:"icon"};function Bs(o,e){return a(),c("button",Ms,[v("span",As,[o.$slots.default?(a(),c("span",Cs,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Hs=b(Ns,[["render",Bs],["__scopeId","data-v-b4ccac88"]]),Ce=o=>(B("data-v-7df97737"),o=o(),H(),o),Es=Ce(()=>v("span",{class:"vpi-sun sun"},null,-1)),Fs=Ce(()=>v("span",{class:"vpi-moon moon"},null,-1)),Ds=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=P(),n=te("toggle-appearance",()=>{e.value=!e.value}),s=y(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),$(Hs,{title:s.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:d(()=>[Es,Fs]),_:1},8,["title","aria-checked","onClick"]))}}),me=b(Ds,[["__scopeId","data-v-7df97737"]]),Os={key:0,class:"VPNavBarAppearance"},Us=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=P();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",Os,[m(me)])):f("",!0)}}),Gs=b(Us,[["__scopeId","data-v-283b26e9"]]),ke=w();let Be=!1,re=0;function js(o){const e=w(!1);if(oe){!Be&&zs(),re++;const t=j(ke,n=>{var s,i,u;n===o.el.value||(s=o.el.value)!=null&&s.contains(n)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});he(()=>{t(),re--,re||qs()})}return Re(e)}function zs(){document.addEventListener("focusin",He),Be=!0,ke.value=document.activeElement}function qs(){document.removeEventListener("focusin",He)}function He(){ke.value=document.activeElement}const Ks={class:"VPMenuLink"},Ws=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,n)=>(a(),c("div",Ks,[m(F,{class:N({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:d(()=>[D(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=b(Ws,[["__scopeId","data-v-f51f088d"]]),Rs={class:"VPMenuGroup"},Js={key:0,class:"title"},Ys=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Rs,[e.text?(a(),c("p",Js,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),c(M,null,["link"in n?(a(),$(se,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),Qs=b(Ys,[["__scopeId","data-v-a6b0397c"]]),Xs={class:"VPMenu"},Zs={key:0,class:"items"},xs=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",Xs,[e.items?(a(),c("div",Zs,[(a(!0),c(M,null,E(e.items,n=>(a(),c(M,{key:n.text},["link"in n?(a(),$(se,{key:0,item:n},null,8,["item"])):(a(),$(Qs,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),en=b(xs,[["__scopeId","data-v-e42ed9b3"]]),tn=o=>(B("data-v-af5898d3"),o=o(),H(),o),on=["aria-expanded","aria-label"],sn={key:0,class:"text"},nn=["innerHTML"],an=tn(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),rn={key:1,class:"vpi-more-horizontal icon"},ln={class:"menu"},cn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();js({el:t,onBlur:n});function n(){e.value=!1}return(s,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[s.button||s.icon?(a(),c("span",sn,[s.icon?(a(),c("span",{key:0,class:N([s.icon,"option-icon"])},null,2)):f("",!0),s.button?(a(),c("span",{key:1,innerHTML:s.button},null,8,nn)):f("",!0),an])):(a(),c("span",rn))],8,on),v("div",ln,[m(en,{items:s.items},{default:d(()=>[l(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),be=b(cn,[["__scopeId","data-v-af5898d3"]]),un=["href","aria-label","innerHTML"],dn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,s)=>(a(),c("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,un))}}),vn=b(dn,[["__scopeId","data-v-358b6670"]]),pn={class:"VPSocialLinks"},hn=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",pn,[(a(!0),c(M,null,E(e.links,({link:n,icon:s,ariaLabel:i})=>(a(),$(vn,{key:n,icon:s,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=b(hn,[["__scopeId","data-v-e71e869c"]]),fn={key:0,class:"group translations"},_n={class:"trans-title"},mn={key:1,class:"group"},kn={class:"item appearance"},bn={class:"label"},$n={class:"appearance-action"},gn={key:2,class:"group"},yn={class:"item social-links"},Pn=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=P(),{localeLinks:n,currentLang:s}=J({correspondingLink:!0}),i=y(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:d(()=>[r(n).length&&r(s).label?(a(),c("div",fn,[v("p",_n,I(r(s).label),1),(a(!0),c(M,null,E(r(n),p=>(a(),$(se,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",mn,[v("div",kn,[v("p",bn,I(r(t).darkModeSwitchLabel||"Appearance"),1),v("div",$n,[m(me)])])])):f("",!0),r(t).socialLinks?(a(),c("div",gn,[v("div",yn,[m($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Ln=b(Pn,[["__scopeId","data-v-8e87c032"]]),Vn=o=>(B("data-v-6bee1efd"),o=o(),H(),o),Sn=["aria-expanded"],Tn=Vn(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),In=[Tn],wn=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},In,10,Sn))}}),Nn=b(wn,[["__scopeId","data-v-6bee1efd"]]),Mn=["innerHTML"],An=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,n)=>(a(),$(F,{class:N({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:d(()=>[v("span",{innerHTML:t.item.text},null,8,Mn)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Cn=b(An,[["__scopeId","data-v-08fbf4b6"]]),Bn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=P(),n=i=>"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),s=y(()=>n(e.item));return(i,u)=>(a(),$(be,{class:N({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||s.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Hn=o=>(B("data-v-f732b5d0"),o=o(),H(),o),En={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Fn=Hn(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Dn=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=P();return(t,n)=>r(e).nav?(a(),c("nav",En,[Fn,(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),$(Cn,{key:0,item:s},null,8,["item"])):(a(),$(Bn,{key:1,item:s},null,8,["item"]))],64))),128))])):f("",!0)}}),On=b(Dn,[["__scopeId","data-v-f732b5d0"]]);function Un(o){const{localeIndex:e,theme:t}=P();function n(s){var A,C,S;const i=s.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",p=h&&((S=(C=u.locales)==null?void 0:C[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let L=p,k=g,V=o;const T=i.pop();for(const U of i){let G=null;const K=V==null?void 0:V[U];K&&(G=V=K);const ne=k==null?void 0:k[U];ne&&(G=k=ne);const ae=L==null?void 0:L[U];ae&&(G=L=ae),K||(V=G),ne||(k=G),ae||(L=G)}return(L==null?void 0:L[T])??(k==null?void 0:k[T])??(V==null?void 0:V[T])??""}return n}const Gn=["aria-label"],jn={class:"DocSearch-Button-Container"},zn=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),qn={class:"DocSearch-Button-Placeholder"},Kn=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ge=_({__name:"VPNavBarSearchButton",setup(o){const t=Un({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[v("span",jn,[zn,v("span",qn,I(r(t)("button.buttonText")),1)]),Kn],8,Gn))}}),Wn={class:"VPNavBarSearch"},Rn={id:"local-search"},Jn={key:1,id:"docsearch"},Yn=_({__name:"VPNavBarSearch",setup(o){const e=Je(()=>Ye(()=>import("./VPLocalSearchBox.CAk53M2R.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=P(),s=w(!1),i=w(!1);R(()=>{});function u(){s.value||(s.value=!0,setTimeout(h,16))}function h(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function p(k){const V=k.target,T=V.tagName;return V.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const g=w(!1);le("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),g.value=!0)}),le("/",k=>{p(k)||(k.preventDefault(),g.value=!0)});const L="local";return(k,V)=>{var T;return a(),c("div",Wn,[r(L)==="local"?(a(),c(M,{key:0},[g.value?(a(),$(r(e),{key:0,onClose:V[0]||(V[0]=A=>g.value=!1)})):f("",!0),v("div",Rn,[m(ge,{onClick:V[1]||(V[1]=A=>g.value=!0)})])],64)):r(L)==="algolia"?(a(),c(M,{key:1},[s.value?(a(),$(r(t),{key:0,algolia:((T=r(n).search)==null?void 0:T.options)??r(n).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",Jn,[m(ge,{onClick:u})]))],64)):f("",!0)])}}}),Qn=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=P();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Xn=b(Qn,[["__scopeId","data-v-ef6192dc"]]),Zn=["href","rel","target"],xn={key:1},ea={key:2},ta=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=P(),{hasSidebar:n}=O(),{currentLang:s}=J(),i=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,g)=>(a(),c("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(n)}])},[v("a",{class:"title",href:i.value??r(fe)(r(s).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",xn,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",ea,I(r(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,Zn)],2))}}),oa=b(ta,[["__scopeId","data-v-0ad69264"]]),sa={class:"items"},na={class:"title"},aa=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=P(),{localeLinks:t,currentLang:n}=J({correspondingLink:!0});return(s,i)=>r(t).length&&r(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:d(()=>[v("div",sa,[v("p",na,I(r(n).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),$(se,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ra=b(aa,[["__scopeId","data-v-acee064b"]]),ia=o=>(B("data-v-844edcde"),o=o(),H(),o),la={class:"wrapper"},ca={class:"container"},ua={class:"title"},da={class:"content"},va={class:"content-body"},pa=ia(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),ha=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=Se(),{hasSidebar:t}=O(),{frontmatter:n}=P(),s=w({});return ye(()=>{s.value={"has-sidebar":t.value,home:n.value.layout==="home",top:e.value===0}}),(i,u)=>(a(),c("div",{class:N(["VPNavBar",s.value])},[v("div",la,[v("div",ca,[v("div",ua,[m(oa,null,{"nav-bar-title-before":d(()=>[l(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",da,[v("div",va,[l(i.$slots,"nav-bar-content-before",{},void 0,!0),m(Yn,{class:"search"}),m(On,{class:"menu"}),m(ra,{class:"translations"}),m(Gs,{class:"appearance"}),m(Xn,{class:"social-links"}),m(Ln,{class:"extra"}),l(i.$slots,"nav-bar-content-after",{},void 0,!0),m(Nn,{class:"hamburger",active:i.isScreenOpen,onClick:u[0]||(u[0]=h=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),pa],2))}}),fa=b(ha,[["__scopeId","data-v-844edcde"]]),_a={key:0,class:"VPNavScreenAppearance"},ma={class:"text"},ka=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=P();return(n,s)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",_a,[v("p",ma,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(me)])):f("",!0)}}),ba=b(ka,[["__scopeId","data-v-338d9b48"]]),$a=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),$(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ga=b($a,[["__scopeId","data-v-1a934d60"]]),ya=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),$(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:d(()=>[D(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ee=b(ya,[["__scopeId","data-v-aea78dd1"]]),Pa={class:"VPNavScreenMenuGroupSection"},La={key:0,class:"title"},Va=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Pa,[e.text?(a(),c("p",La,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),$(Ee,{key:n.text,item:n},null,8,["item"]))),128))]))}}),Sa=b(Va,[["__scopeId","data-v-f60dbfa7"]]),Ta=o=>(B("data-v-d2212c70"),o=o(),H(),o),Ia=["aria-controls","aria-expanded"],wa=["innerHTML"],Na=Ta(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),Ma=["id"],Aa={key:1,class:"group"},Ca=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),n=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[v("span",{class:"button-text",innerHTML:i.text},null,8,wa),Na],8,Ia),v("div",{id:n.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(Ee,{item:h},null,8,["item"])])):(a(),c("div",Aa,[m(Sa,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ma)],2))}}),Ba=b(Ca,[["__scopeId","data-v-d2212c70"]]),Ha={key:0,class:"VPNavScreenMenu"},Ea=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=P();return(t,n)=>r(e).nav?(a(),c("nav",Ha,[(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),$(ga,{key:0,item:s},null,8,["item"])):(a(),$(Ba,{key:1,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Fa=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=P();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Fe=o=>(B("data-v-516e4bc3"),o=o(),H(),o),Da=Fe(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),Oa=Fe(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Ua={class:"list"},Ga=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),n=w(!1);function s(){n.value=!n.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:N(["VPNavScreenTranslations",{open:n.value}])},[v("button",{class:"title",onClick:s},[Da,D(" "+I(r(t).label)+" ",1),Oa]),v("ul",Ua,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(F,{class:"link",href:h.link},{default:d(()=>[D(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),ja=b(Ga,[["__scopeId","data-v-516e4bc3"]]),za={class:"container"},qa=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Te(oe?document.body:null);return(n,s)=>(a(),$(ve,{name:"fade",onEnter:s[0]||(s[0]=i=>t.value=!0),onAfterLeave:s[1]||(s[1]=i=>t.value=!1)},{default:d(()=>[n.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",za,[l(n.$slots,"nav-screen-content-before",{},void 0,!0),m(Ea,{class:"menu"}),m(ja,{class:"translations"}),m(ba,{class:"appearance"}),m(Fa,{class:"social-links"}),l(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ka=b(qa,[["__scopeId","data-v-57cce842"]]),Wa={key:0,class:"VPNav"},Ra=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=ws(),{frontmatter:s}=P(),i=y(()=>s.value.navbar!==!1);return Ie("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",Wa,[m(fa,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Ka,{open:r(e)},{"nav-screen-content-before":d(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Ja=b(Ra,[["__scopeId","data-v-7ad780c2"]]),De=o=>(B("data-v-c24f735a"),o=o(),H(),o),Ya=["role","tabindex"],Qa=De(()=>v("div",{class:"indicator"},null,-1)),Xa=De(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Za=[Xa],xa={key:1,class:"items"},er=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:s,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:p}=bt(y(()=>e.item)),g=y(()=>h.value?"section":"div"),L=y(()=>s.value?"a":"div"),k=y(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=y(()=>s.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(S,U)=>{const G=q("VPSidebarItem",!0);return a(),$(W(g.value),{class:N(["VPSidebarItem",T.value])},{default:d(()=>[S.item.text?(a(),c("div",Y({key:0,class:"item",role:V.value},Xe(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[Qa,S.item.link?(a(),$(F,{key:0,tag:L.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:d(()=>[(a(),$(W(k.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(W(k.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Qe(C,["enter"]),tabindex:"0"},Za,32)):f("",!0)],16,Ya)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",xa,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,K=>(a(),$(G,{key:K.text,item:K,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),tr=b(er,[["__scopeId","data-v-c24f735a"]]),Oe=o=>(B("data-v-4871f9f5"),o=o(),H(),o),or=Oe(()=>v("div",{class:"curtain"},null,-1)),sr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},nr=Oe(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),ar=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),n=o,s=w(null),i=Te(oe?document.body:null);return j([n,s],()=>{var u;n.open?(i.value=!0,(u=s.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,h)=>r(t)?(a(),c("aside",{key:0,class:N(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:s,onClick:h[0]||(h[0]=Ze(()=>{},["stop"]))},[or,v("nav",sr,[nr,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(M,null,E(r(e),p=>(a(),c("div",{key:p.text,class:"group"},[m(tr,{item:p,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),rr=b(ar,[["__scopeId","data-v-4871f9f5"]]),ir=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();j(()=>e.path,()=>t.value.focus());function n({target:s}){const i=document.getElementById(decodeURIComponent(s.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(s,i)=>(a(),c(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),lr=b(ir,[["__scopeId","data-v-c8291ffa"]]),cr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=O(),s=ee();j(()=>s.path,n),kt(e,n);const{frontmatter:i}=P(),u=xe(),h=y(()=>!!u["home-hero-image"]);return Ie("hero-image-slot-exists",h),(p,g)=>{const L=q("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:N(["Layout",r(i).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(lr),m(st,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),m(Ja,null,{"nav-bar-title-before":d(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":d(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Is,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(rr,{open:r(e)},{"sidebar-nav-before":d(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":d(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(ls,null,{"page-top":d(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":d(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":d(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":d(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":d(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":d(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ps),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(L,{key:1}))}}}),ur=b(cr,[["__scopeId","data-v-d8b57b2d"]]),vr={Layout:ur,enhanceApp:({app:o})=>{o.component("Badge",et)}};export{Un as c,vr as t,P as u}; diff --git a/.vitepress/dist/assets/components_actions.md.DD4l12qJ.js b/.vitepress/dist/assets/components_actions.md.DD4l12qJ.js new file mode 100644 index 0000000..4fd125a --- /dev/null +++ b/.vitepress/dist/assets/components_actions.md.DD4l12qJ.js @@ -0,0 +1,10 @@ +import{_ as s,c as i,o as a,a3 as t}from"./chunks/framework.D5qxx6u8.js";const E=JSON.parse('{"title":"Actions","description":"","frontmatter":{},"headers":[],"relativePath":"components/actions.md","filePath":"components/actions.md","lastUpdated":1717792017000}'),e={name:"components/actions.md"},n=t(`

Actions

Actions are a collection of methods that can be executed from the VTT. These actions are used for any rolls that may need to be triggered outside of the sheet itself, such as from a macro or a chat button. Generally, most or all of a sheet’s rolls should be defined as actions.

javascript
actions: {
+ [name: string]: {
+    method: (props: {
+ dispatch: Dispatch,
+ character: Character,
+ messageId?: string,
+ rolls?: RollResults 
+ }, ...args: string[]): void | Promise<void>
+ }
+}

Actions are passed into the initRelay function in an object, where the keys are the unique names of the actions, and the values are objects containing a method property (additional metadata fields may be added to this object in the future).

The method receives a props object containing the following properties:

  • dispatch: A Dispatch object.
  • character: The data of the character performing the action. Currently, the action will not receive the character’s bio or GM notes, regardless of whether the player has access to those fields.
  • messageId (optional): A unique ID for an existing chat message. It's included in actions triggered from chat buttons to provide context for the original roll.
  • rolls (optional): Included when action is triggered from a chat button. Contains the roll results of the original roll.

These functions can also receive an unlimited number of additional arguments. This is because these actions can be triggered by plain text via a macro. However, all additional arguments must be strings. Additionally, these functions can be synchronous or asynchronous and do not return a value.

`,7),h=[n];function l(o,p,r,c,d,k){return a(),i("div",null,h)}const y=s(e,[["render",l]]);export{E as __pageData,y as default}; diff --git a/.vitepress/dist/assets/components_actions.md.DD4l12qJ.lean.js b/.vitepress/dist/assets/components_actions.md.DD4l12qJ.lean.js new file mode 100644 index 0000000..5fbc565 --- /dev/null +++ b/.vitepress/dist/assets/components_actions.md.DD4l12qJ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a3 as t}from"./chunks/framework.D5qxx6u8.js";const E=JSON.parse('{"title":"Actions","description":"","frontmatter":{},"headers":[],"relativePath":"components/actions.md","filePath":"components/actions.md","lastUpdated":1717792017000}'),e={name:"components/actions.md"},n=t("",7),h=[n];function l(o,p,r,c,d,k){return a(),i("div",null,h)}const y=s(e,[["render",l]]);export{E as __pageData,y as default}; diff --git a/.vitepress/dist/assets/components_components-overview.md.CT9Z7mbI.js b/.vitepress/dist/assets/components_components-overview.md.CT9Z7mbI.js new file mode 100644 index 0000000..f9a191f --- /dev/null +++ b/.vitepress/dist/assets/components_components-overview.md.CT9Z7mbI.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a3 as a}from"./chunks/framework.D5qxx6u8.js";const v=JSON.parse('{"title":"Components","description":"","frontmatter":{},"headers":[],"relativePath":"components/components-overview.md","filePath":"components/components-overview.md","lastUpdated":1717792017000}'),s={name:"components/components-overview.md"},n=a('

Components

The Beacon SDK is composed of various components that allow developers to create dynamic and interactive character sheets for virtual tabletop (VTT) games.

These components are crucial for handling actions, computations, macros, and rolls. This overview provides a high-level summary of each section, helping you understand their roles and how they integrate within the SDK.

Actions

Actions define specific operations that can be performed by characters within the VTT. These operations can range from simple tasks like rolling a dice to more complex interactions such as casting spells or activating abilities.

Handlers

Handlers are event listeners that manage communication between the VTT and the character sheet. They respond to various events, such as changes in character attributes or settings, and trigger appropriate actions or updates.

Computed

Computed properties are dynamic values derived from other character attributes. They allow for the creation of complex, calculated attributes that automatically update when their dependencies change.

Macro Attributes

Macro attributes handle the conversion of legacy macro attributes to the new format used in the Beacon SDK. This ensures compatibility with older character sheets and macros, allowing for a smooth transition to the new system.

Rolls

The Rolls component allows for advanced dice-rolling mechanics within the VTT. It supports both simple and complex rolls, providing flexibility in how roll results are displayed and computed.

',8),i=[n];function c(r,l,p,d,h,m){return o(),t("div",null,i)}const b=e(s,[["render",c]]);export{v as __pageData,b as default}; diff --git a/.vitepress/dist/assets/components_components-overview.md.CT9Z7mbI.lean.js b/.vitepress/dist/assets/components_components-overview.md.CT9Z7mbI.lean.js new file mode 100644 index 0000000..d295f6d --- /dev/null +++ b/.vitepress/dist/assets/components_components-overview.md.CT9Z7mbI.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a3 as a}from"./chunks/framework.D5qxx6u8.js";const v=JSON.parse('{"title":"Components","description":"","frontmatter":{},"headers":[],"relativePath":"components/components-overview.md","filePath":"components/components-overview.md","lastUpdated":1717792017000}'),s={name:"components/components-overview.md"},n=a("",8),i=[n];function c(r,l,p,d,h,m){return o(),t("div",null,i)}const b=e(s,[["render",c]]);export{v as __pageData,b as default}; diff --git a/.vitepress/dist/assets/components_computed.md.8eKgCilz.js b/.vitepress/dist/assets/components_computed.md.8eKgCilz.js new file mode 100644 index 0000000..9edbfa0 --- /dev/null +++ b/.vitepress/dist/assets/components_computed.md.8eKgCilz.js @@ -0,0 +1,19 @@ +import{_ as s,c as i,o as a,a3 as t}from"./chunks/framework.D5qxx6u8.js";const E=JSON.parse('{"title":"Computed","description":"","frontmatter":{},"headers":[],"relativePath":"components/computed.md","filePath":"components/computed.md","lastUpdated":1717792017000}'),e={name:"components/computed.md"},n=t(`

Computed

Sheet authors define computed properties that are accessed by the host. These computed properties can be used as attributes in macros and are available to assign as values to token bars - if the tokenBarValue property is set to true.

javascript
computed: {
+ [name: string]: {
+ tokenBarValue?: boolean,
+ description?: string,
+    get: (
+      props: {
+ character: Character
+ },
+      ...args: string[]
+ ) => ComputedResult,
+ set?: (
+      props: {
+ character: Character,
+ dispatch: Dispatch
+ },
+      ...args: string[]
+ ) => void | Promise<void>
+ }
+}

Computed properties are passed into the initRelay function in an object where the keys are the names of the properties, and the value should be an object containing the following:

  • get (required): It receives character data along with any number of string parameters and should return the computed value.
  • tokenBarValue (optional): A boolean indicating whether this property should be available for use in token bars.
  • description (optional): A text value indicating what this computed summary property represents.
  • set (optional): This method receives character data and a dispatch, along with string arguments. This method does not need to return a value.

TIP

  • Setting tokenBarValue to true will make the property available to use as a value for token bars. To work correctly, the get function must not rely on any additional arguments and must return either a simple value (a string or number) or an object:
JSON
 { current: number | string, max: number | string }
  • If the set function is omitted, the value will not be editable from the token itself. If defined, set methods will receive one string argument, which is whatever the user types into the input for modifying the bar.
`,6),l=[n];function h(p,k,r,o,d,c){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{E as __pageData,y as default}; diff --git a/.vitepress/dist/assets/components_computed.md.8eKgCilz.lean.js b/.vitepress/dist/assets/components_computed.md.8eKgCilz.lean.js new file mode 100644 index 0000000..6d54cec --- /dev/null +++ b/.vitepress/dist/assets/components_computed.md.8eKgCilz.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a3 as t}from"./chunks/framework.D5qxx6u8.js";const E=JSON.parse('{"title":"Computed","description":"","frontmatter":{},"headers":[],"relativePath":"components/computed.md","filePath":"components/computed.md","lastUpdated":1717792017000}'),e={name:"components/computed.md"},n=t("",6),l=[n];function h(p,k,r,o,d,c){return a(),i("div",null,l)}const y=s(e,[["render",h]]);export{E as __pageData,y as default}; diff --git a/.vitepress/dist/assets/components_handlers.md.5grfnb62.js b/.vitepress/dist/assets/components_handlers.md.5grfnb62.js new file mode 100644 index 0000000..5a45e33 --- /dev/null +++ b/.vitepress/dist/assets/components_handlers.md.5grfnb62.js @@ -0,0 +1,41 @@ +import{_ as s,c as a,o as i,a3 as e}from"./chunks/framework.D5qxx6u8.js";const E=JSON.parse('{"title":"Handlers","description":"","frontmatter":{},"headers":[],"relativePath":"components/handlers.md","filePath":"components/handlers.md","lastUpdated":1717792017000}'),n={name:"components/handlers.md"},t=e(`

Handlers

Handler functions allow the sheet to respond to messages from the host. The handlers argument requires the following methods:

onInit

The onInit function provides the initial set of data to the sheet.

javascript
onInit(e: {
+ character: Character,
+ settings: {
+ colorTheme: string,
+ language: string,
+ gm: boolean,
+ owned: boolean,
+ settingsSheet: boolean,
+ headless: boolean,
+ sandbox: boolean,
+ campaignId: number,
+ environment: string,
+ currentUserId: string,
+ singleSheet: boolean
+ },
+ sharedSettings: {},
+ compendiumDropData: {
+ pageName: string,
+ categoryName: string,
+ expansion: number
+ }
+}, dispatch: Dispatch): void;

The event object contains the following:

  • character: The primary character for this sheet.
  • settings: Campaign and character-specific settings.
  • sharedSettings: Data shared between all characters in this campaign.
  • compendiumDropData: Populated when the character sheet is created from a compendium entry such as a creature or NPC.

Note: This function may be called multiple times during development in the sheet sandbox as part of hot reloads.

onChange

onChange is called whenever a character’s data is changed on the host’s end. The event object contains a partial character with only the character’s ID and the changed data. This could be the character’s bio, GM notes, or attributes (only the changed attributes).

javascript
onChange(e: {
+ character: Partial<Character>
+}, dispatch: Dispatch): void;

onSettingsChange

onSettingsChange is called when either the VTT’s color theme is changed, or when the current player’s ownership of the primary character changes.

javascript
onSettingsChange(e: {
+ colorTheme: string,
+ owned: boolean
+}, dispatch: Dispatch): void;

onSharedSettingsChange

onSharedSettingsChange is called when someone changes a shared setting in the VTT.

javascript
onSharedSettingsChange({ settings: { [key: string]: any } }): void;

onTranslationsRequest

onTranslationsRequest is called before the relay is fully initialized and returns the translation JSON data corresponding to the two-letter language argument.

javascript
onTranslationsRequest(language: string): { [key: string]: string };

onDragOver (optional)

onDragOver is called when a compendium item from the compendium tab is dragged over the iframe window containing the character sheet.

Coordinates of the drag are provided via top and left values, and basic compendium data is passed so that a subsequent compendium request can be made via the provided dispatch. If the item is moved outside of the iframe, dragData and coordinates are null.

javascript
onDragOver(e: {
+ coordinates: { top: number, left: number },
+ dragData: { 
+ pageName: string,
+ categoryName: string,
+ expansionId: number
+ } | null
+}, dispatch: Dispatch): void

onDropOver (optional)

onDropOver is called when a compendium item from the compendium tab is dropped over the iframe window containing the character sheet.

Coordinates of the drop are provided via top and left values, and basic compendium data is passed so that a subsequent compendium request can be made via the provided dispatch.

javascript
onDropOver(e: {
+ coordinates: { top: number, left: number },
+ dropData: { 
+ pageName: string,
+ categoryName: string,
+ expansionId: number
+ }
+}, dispatch: Dispatch): void
`,28),h=[t];function l(p,o,r,d,c,k){return i(),a("div",null,h)}const u=s(n,[["render",l]]);export{E as __pageData,u as default}; diff --git a/.vitepress/dist/assets/components_handlers.md.5grfnb62.lean.js b/.vitepress/dist/assets/components_handlers.md.5grfnb62.lean.js new file mode 100644 index 0000000..a85eb19 --- /dev/null +++ b/.vitepress/dist/assets/components_handlers.md.5grfnb62.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a3 as e}from"./chunks/framework.D5qxx6u8.js";const E=JSON.parse('{"title":"Handlers","description":"","frontmatter":{},"headers":[],"relativePath":"components/handlers.md","filePath":"components/handlers.md","lastUpdated":1717792017000}'),n={name:"components/handlers.md"},t=e("",28),h=[t];function l(p,o,r,d,c,k){return i(),a("div",null,h)}const u=s(n,[["render",l]]);export{E as __pageData,u as default}; diff --git a/.vitepress/dist/assets/components_macros.md.DLr_mdjs.js b/.vitepress/dist/assets/components_macros.md.DLr_mdjs.js new file mode 100644 index 0000000..7a85603 --- /dev/null +++ b/.vitepress/dist/assets/components_macros.md.DLr_mdjs.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a3 as i}from"./chunks/framework.D5qxx6u8.js";const m=JSON.parse('{"title":"Handling Legacy Macro Attributes","description":"","frontmatter":{},"headers":[],"relativePath":"components/macros.md","filePath":"components/macros.md","lastUpdated":1717792017000}'),s={name:"components/macros.md"},r=i('

Handling Legacy Macro Attributes

When utilizing Macros within the VTT, there are instances where a legacy macro might need to be employed for a Beacon sheet.

This scenario commonly arises when transitioning from an existing legacy sheet to a Beacon sheet. During such transitions, it's possible that the attributes called from the legacy macro may not align with the structure of attributes in the Beacon Sheet.

The convertLegacyMacroAttributes function serves as a pivotal tool, empowering Sheet Developers to determine the mapping strategy for legacy attributes to the new Beacon Sheet.

convertLegacyMacroAttributes

This function is defined during the initial SDK initialization process and is invoked by the host when it encounters a failure in locating an attribute's value.

typescript
convertLegacyMacroAttributes: (messages: convertLegacyMacroAttributesArgs) => {}: any

Advanced sheet macros typically first search through the defined computed properties before resorting to the convertLegacyMacroAttributes function.

The function's purpose is to return a value that will be substituted in the macro. However, it grants Sheet Developers the autonomy to devise their preferred approach for handling legacy attribute values.

',9),n=[r];function o(c,h,l,p,d,g){return a(),t("div",null,n)}const y=e(s,[["render",o]]);export{m as __pageData,y as default}; diff --git a/.vitepress/dist/assets/components_macros.md.DLr_mdjs.lean.js b/.vitepress/dist/assets/components_macros.md.DLr_mdjs.lean.js new file mode 100644 index 0000000..2a15fe9 --- /dev/null +++ b/.vitepress/dist/assets/components_macros.md.DLr_mdjs.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a3 as i}from"./chunks/framework.D5qxx6u8.js";const m=JSON.parse('{"title":"Handling Legacy Macro Attributes","description":"","frontmatter":{},"headers":[],"relativePath":"components/macros.md","filePath":"components/macros.md","lastUpdated":1717792017000}'),s={name:"components/macros.md"},r=i("",9),n=[r];function o(c,h,l,p,d,g){return a(),t("div",null,n)}const y=e(s,[["render",o]]);export{m as __pageData,y as default}; diff --git a/.vitepress/dist/assets/components_roll.md.7YnwoYiF.js b/.vitepress/dist/assets/components_roll.md.7YnwoYiF.js new file mode 100644 index 0000000..fc5413c --- /dev/null +++ b/.vitepress/dist/assets/components_roll.md.7YnwoYiF.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as e,a3 as s}from"./chunks/framework.D5qxx6u8.js";const g=JSON.parse('{"title":"Rolls","description":"","frontmatter":{},"headers":[],"relativePath":"components/roll.md","filePath":"components/roll.md","lastUpdated":1717792017000}'),i={name:"components/roll.md"},l=s('

Rolls

The VTT (Virtual Tabletop) has several new features that enhance the way rolls are handled and displayed. These features include attributes and elements that allow for dynamic roll results and interactivity within the VTT environment.

data-rollname

The data-rollname attribute tells the VTT that this HTML element is displaying the result of a roll.

html
<span data-rollname="attack"></span>

The VTT will both add the Quantum Roll signature tooltip to the element and replace the contents of the element with the result from the roll.

This is the preferred method for displaying roll results wherever possible, that is, sending the whole roll formula to the roll server and allowing the VTT to display the result.

data-computed

Tagging an element with both a data-rollname and a data-computed="true" tells the VTT that this element is associated with a roll, but the results of that roll were computed by the author, as opposed to the roll server computing the result.

html
<span data-rollname="complex" data-computed="true">25</span>

The VTT will add the Quantum Roll signature tooltip, but the content of the element will not be modified. Generally, this should only be used when the roll server does not support a particular dice mechanic.

Roll Buttons

Roll buttons are interactive elements that trigger sheet actions, such as damage rolls, when clicked. These buttons use the data-sheet-action attribute to specify the action to be executed.

html
<button data-sheet-action="damage" data-args="arg1:arg2">Click Me</button>

Additional arguments can be provided using the data-args attribute, and the character, messageId, and original rolls will be included automatically.

',15),h=[l];function n(o,d,r,p,k,c){return e(),a("div",null,h)}const E=t(i,[["render",n]]);export{g as __pageData,E as default}; diff --git a/.vitepress/dist/assets/components_roll.md.7YnwoYiF.lean.js b/.vitepress/dist/assets/components_roll.md.7YnwoYiF.lean.js new file mode 100644 index 0000000..783e410 --- /dev/null +++ b/.vitepress/dist/assets/components_roll.md.7YnwoYiF.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as e,a3 as s}from"./chunks/framework.D5qxx6u8.js";const g=JSON.parse('{"title":"Rolls","description":"","frontmatter":{},"headers":[],"relativePath":"components/roll.md","filePath":"components/roll.md","lastUpdated":1717792017000}'),i={name:"components/roll.md"},l=s("",15),h=[l];function n(o,d,r,p,k,c){return e(),a("div",null,h)}const E=t(i,[["render",n]]);export{g as __pageData,E as default}; diff --git a/.vitepress/dist/assets/dispatch.md.BcfYGwEY.js b/.vitepress/dist/assets/dispatch.md.BcfYGwEY.js new file mode 100644 index 0000000..9eeaef2 --- /dev/null +++ b/.vitepress/dist/assets/dispatch.md.BcfYGwEY.js @@ -0,0 +1,110 @@ +import{_ as s,c as i,o as a,a3 as t}from"./chunks/framework.D5qxx6u8.js";const g=JSON.parse('{"title":"Dispatch","description":"","frontmatter":{},"headers":[],"relativePath":"dispatch.md","filePath":"dispatch.md","lastUpdated":1717792017000}'),e={name:"dispatch.md"},n=t(`

Dispatch

The initRelay function returns a promise that resolves with a Dispatch object. This object can be used to interact with the relay system.

Dispatch provides methods for sending commands from the character sheet back to the host. Except when specified, all of these methods below will return a promise.

update

The update method sends character changes to the host page (VTT) to persist in the data store (Firebase).

The partial character passed in here must contain the characterId and can contain any combination of the attributes, bio, and gmNotes properties.

javascript
dispatch.update({
+ options: { overwrite?: boolean },
+ character: Partial<Character>
+}): Promise<void>

When updating a character’s attributes, only include those attributes that have changed.

updateCharacter

Like update, updateCharacter sends character changes to the host page (VTT) to persist in the data store (Firebase).

However, this function takes a full set of character attributes as the character argument and automatically computes the diff with existing character attributes so that only changed attributes are sent to the data store.

javascript
dispatch.updateCharacter({
+ character: Partial<Character>
+}): Promise<void>

updateSharedSettings

Updates sheet settings that are shared across all people in the game. Returns a promise that can be awaited.

javascript
dispatch.updateSharedSettings({
+ update: { settings: { [key: string]: any } }
+}): Promise<void>

roll

The roll method takes one or more rolls in the form of an object, where the keys are unique roll names and the values are roll strings.

javascript
dispatch.roll({
+ rolls: { [rollName: string]: string } // Ex. {attack: '1d20+4', damage: \`3d6+2\`}
+  messageId?: string
+}): Promise<{messageId: string, results: RollResults }>

The messageId property can be provided to attach the roll to an existing chat message. If the messageId property is omitted, the roll will be associated with a new chat message, and a new messageId will be returned with the roll results.

The function returns a promise that resolves with an object containing the messageId and the RollResult. The roll result is returned in the same format as in the legacy computed roll system.

For more information on data types, see the Types page.

post

This function posts a message to chat, either creating a new message or overwriting an existing one. It requires a characterId and message content, a string containing either plain text or HTML to be posted.

javascript
dispatch.post({
+ characterId: string,
+ messageId?: string,
+ content: string,
+ options?: {
+ whisper?: 'gm',
+ secret?: boolean,
+ }
+}): Promise<string>

The function also accepts an options object. Currently, only whisper and secret are supported. The only valid value for whisper is gm, which will send the message as a whisper to the GM.

The secret option is ignored unless whisper is also set; toggling to true will cause the message to not be visible to the controlling player.

Like roll, messageId can be provided to update an existing chat message, but if omitted, the function will generate a new messageId and post a new chat message. The function returns the messageId.

query

The query function takes an options object and uses it to display a SweetAlert prompt to the user.

javascript
dispatch.query(options: Swal2Options): {
+ isConfirmed: boolean,
+ isDenied: boolean,
+ isDismissed: boolean,
+ value?: string | number,
+ dismiss?: "cancel" | "backdrop" | "close" | "esc" | "timer",
+ errors?: string[],
+}: Promise<{
+ results: {
+ isConfirmed: boolean,
+ isDenied: boolean,
+ isDismissed: boolean,
+ value: string | number,
+ dismiss: string,
+ },
+ errors: [string]
+}>

It returns the results of the query as a SweetAlertResult, along with any errors encountered. The options work exactly as described in the SweetAlert2 documentation.

However, not all options are allowed. Here is a list of the allowed options:

Allowed OptionsDescription
ariaLabelCustom aria-label for the input field.
backgroundBackground color for the modal.
cancelButtonAriaLabelCustom aria-label for the cancel button.
cancelButtonColorBackground color for the cancel button.
cancelButtonTextText for the cancel button.
closeButtonAriaLabelCustom aria-label for the close button.
confirmButtonAriaLabelCustom aria-label for the confirm button.
confirmButtonColorBackground color for the confirm button.
confirmButtonTextText for the confirm button.
currentProgressStepCurrent progress step index.
denyButtonAriaLabelCustom aria-label for the deny button.
denyButtonColorBackground color for the deny button.
denyButtonTextText for the deny button.
growGrow animation for the modal ('row', 'column', 'fullscreen').
iconColorColor of the modal icon.
imageAltAlternate text for the image.
imageHeightHeight of the image.
imageUrlURL of the image to display.
imageWidthWidth of the image.
inputInput field type ('text', 'email', 'password', etc.).
inputAttributesCustom attributes for the input field.
inputAutoTrimAutomatically trim the input value.
inputLabelLabel for the input field.
inputOptionsOptions for select inputs.
inputPlaceholderPlaceholder for the input field.
inputValueInitial value for the input field.
paddingModal window padding.
positionPosition of the modal ('top', 'center', 'bottom').
progressStepsProgress steps, useful for multi-step forms.
progressStepsDistanceDistance between progress steps.
returnInputValueOnDenyReturn input value when denied.
reverseButtonsReverse the order of buttons.
showCancelButtonShow the cancel button.
showCloseButtonShow the close button.
showConfirmButtonShow the confirm button.
showDenyButtonShow the deny button.
textText content for the modal.
timerAuto close timer for the modal.
timerProgressBarShow a progress bar for the timer.
titleTextTitle for the modal.
validationMessageMessage for input validation.
widthWidth of the modal.

perform

The perform method executes the specified action on behalf of the character (designated by characterId), passing in args to the action method. This method can perform actions on behalf of any character, even a character for which the sheet does not have data.

javascript
dispatch.perform({
+ characterId: string,
+ action: string,
+ args: string[],
+}): Promise<void>;

getComputed

The getComputed function is used to retrieve the value of a computed property.

javascript
dispatch.getComputed({
+ characterId: string,
+ property: string,
+ args: string[],
+}): Promise<string | number | object>;

It takes the following arguments:

  • characterId: The ID of the character whose computed property you want to get.
  • property: The name of the computed property to retrieve.
  • args: An array of string arguments that may be required by the computed property.

This method returns a promise that resolves with the computed value, which can be a string, number, or object.

setComputed

The setComputed function is used to set the value of a computed property.

javascript
dispatch.setComputed({
+ characterId: string,
+ property: string,
+ args: string[],
+}): Promise<string | number | object>;

It takes the following arguments:

  • characterId: The ID of the character whose computed property you want to set.
  • property: The name of the computed property to set.
  • args: An array of string arguments that may be required by the computed property.

This method returns a promise that resolves with the new computed value, which can be a string, number, or object.

compendiumRequest

compendiumRequest executes an AJAX request to the compendium service’s graphQL endpoint. It takes in a graphQL query string written according to the Compendium service’s schema. The query string does not need to include the ruleSystem shortName as this is set automatically according to the campaign override or sheet.json value in the VTT.

javascript
dispatch.compendiumRequest({ 
+ query: string
+}): Promise<{
+ data: Object
+ errors: Array<Error>
+ extensions: Record<string, any>
+}>;

debouncedCompendiumRequest

debouncedCompendiumRequest works just like the compendiumRequest method, with the exception that calls to this function are automatically debounced (at 100ms) and grouped into a single request to the compendium service.

javascript
dispatch.debouncedCompendiumRequest({ 
+ query: string
+}): Promise<{
+ data: Object
+}>;

NOTE: This function will only return the requested data; it does not return errors or extensions.

getTokens

getTokens requires a character ID string and returns information about tokens on the user’s current page. The return value contains two arrays of tokens.

javascript
dispatch.getTokens({
+ characterId: string
+}): Promise<{
+ selected: Token[],
+ tokens: Token[]
+}>;

The tokens array contains all tokens on the current page representing the character whose ID was provided to the function. The selected array contains any tokens that are currently selected, regardless of which character they represent.

The returned token objects contain all of the token attributes available to the API. You can find the documentation here.

addToTracker

The addToTracker method adds or updates a single item in the turn tracker. Passing in a tokenId will add the specified token to the tracker, while passing in custom with a name and an optional image URL (img) will add a custom item, not connected to any character or token.

javascript
dispatch.addToTracker({
+ tokenId?: string,
+ custom?: {
+ name: string,
+ img?: string
+ },
+ formula?: string,
+ value: string | number
+}): Promise<void>;

A round calculation string can be added via the optional formula parameter. value is the initiative number for the item.

addActionsToHost

The addActionsToHost method adds a specific action (macro) to an area of the VTT UI, either the macrobar or the token action bar. Either sheetAction or action can be passed in, but not both simultaneously.

javascript
dispatch.addActionsToHost({
+ sheetAction?: {
+ characterId: string,
+ action: string,
+ args?: string[]
+ },
+ action?: string,
+ locations?: ['macroBar'] | ['tokenActionBar'] | ['macroBar', 'tokenActionBar'],
+ actionId?: string,
+ name: string,
+ requestId?: string
+}): void;

The sheetAction arg should be passed in when the action is designated to a character. The action arg should be passed when the action is more generic.

getActions

getActions retrieves a specific character’s actions (macros).

javascript
dispatch.getActions({
+ args: {
+ characterId?: string
+ }
+}): Promise<{
+ actions?: {} | { [id: string]: ActionFromHost }
+}>;

setContainerSize

This method updates the size of the container which holds the sheet shared settings. It also returns a promise that can be awaited.

javascript
dispatch.setContainerSize({
+ args: { 
+ width?: number,
+ height?: number 
+ }
+}): Promise<void>;

This can be used in conjunction with something like the ResizeSensor event listener from npm: css-element-queries to resize the container on the host automatically.

updateTokensByCharacter

The updateTokensByCharacter method updates a particular character’s default token as well as all existing tokens representing that character.

javascript
dispatch.updateTokensByCharacter({
+ args: { 
+ characterId: string,
+ token: Partial<Token>
+ }
+}): Promise<void>;

This method returns a promise that can be awaited.

updateTokensByIds

The updateTokensByIds method updates a single or several tokens. It also returns a promise that can be awaited.

javascript
dispatch.updateTokensByIds({
+ args: { 
+ tokenIds: array of ids as strings,
+ token: Partial<Token>
+ }
+}): Promise<void>;

autoLinkText

autoLinkText goes through the text to find handout names between square brackets and converts them into links with the handoutID.

javascript
dispatch.autoLinkText({
+ args: { 
+ text: string
+ }
+}): Promise<string>;

For example, in a game with a handout named Dragon, passing in the text "this is a [Dragon]" to the autoLinkText method returns something similar to:

html
"this is a \`<a href="https://journal.roll20.net/8je02j0kd02k">Dragon</a>\`"

openDialogFromLink opens the supplied urlString through the VTT.

javascript
dispatch.openDialogFromLink({
+ args: { 
+ urlString: string
+ }
+}): void;

NOTE:

  • If the URL is for a handout, the corresponding handout will be opened in the campaign. This will also check if the user opening the link has access to the handout.
  • If the URL is for a compendium, it will open a pop-up to the compendium page. It will also check to ensure the user has access to view the page.
  • If the URL is for an external page, a confirmation pop-up will display to warn the user that the link is for an external site, and a new tab will open in their main window if confirmed.
`,92),h=[n];function l(p,r,d,o,k,c){return a(),i("div",null,h)}const u=s(e,[["render",l]]);export{g as __pageData,u as default}; diff --git a/.vitepress/dist/assets/dispatch.md.BcfYGwEY.lean.js b/.vitepress/dist/assets/dispatch.md.BcfYGwEY.lean.js new file mode 100644 index 0000000..06e317d --- /dev/null +++ b/.vitepress/dist/assets/dispatch.md.BcfYGwEY.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a3 as t}from"./chunks/framework.D5qxx6u8.js";const g=JSON.parse('{"title":"Dispatch","description":"","frontmatter":{},"headers":[],"relativePath":"dispatch.md","filePath":"dispatch.md","lastUpdated":1717792017000}'),e={name:"dispatch.md"},n=t("",92),h=[n];function l(p,r,d,o,k,c){return a(),i("div",null,h)}const u=s(e,[["render",l]]);export{g as __pageData,u as default}; diff --git a/.vitepress/dist/assets/gettingstarted_contributing.md.BjD3FF_z.js b/.vitepress/dist/assets/gettingstarted_contributing.md.BjD3FF_z.js new file mode 100644 index 0000000..c800854 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_contributing.md.BjD3FF_z.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as t,a3 as e}from"./chunks/framework.D5qxx6u8.js";const k=JSON.parse('{"title":"Contributing Guide","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/contributing.md","filePath":"gettingstarted/contributing.md","lastUpdated":1717792017000}'),a={name:"gettingstarted/contributing.md"},n=e('

Contributing Guide

We appreciate your interest in contributing to the Beacon SDK project. Here are some guidelines to help you get started:

How to Contribute

Reporting Bugs

If you find a bug, please report it by opening an issue in the GitHub repository. Provide as much detail as possible to help us understand and reproduce the issue.

Suggesting Features

We welcome suggestions for new features. Please open an issue in the GitHub repository with a detailed description of the feature you would like to see and why you think it would be useful.

Code Contributions

  1. Fork the Repository: Create a personal fork of the project on GitHub.

  2. Clone the Fork: Clone your fork to your local machine.

    bash
    git clone
  3. Create a Branch: Create a new branch for your work.

    bash
    git checkout -b feature-or-bugfix-description
  4. Make Changes: Make your changes to the codebase. Follow the existing code style and conventions.

  5. Run Tests: Ensure that all tests pass before submitting your changes.

    bash
    npm run ci-check
  6. Commit Changes: Commit your changes with a descriptive commit message.

    bash
    git commit -m "Description of your changes"
  7. Push Changes: Push your changes to your fork.

    bash
    git push origin feature-or-bugfix-description
  8. Create a Pull Request: Open a pull request from your fork to the main repository. Provide a detailed description of your changes and why they should be merged.

Running Tests

  • Unit Tests: Run unit tests with Vitest.

    bash
    npm run test:unit
  • End-to-End Tests: Run End-to-End tests with Cypress.

    bash
    npm run test:e2e

Code Style

  • Follow the existing code style and conventions.

  • Use ESLint for linting.

    bash
    npm run lint
  • Format code with Prettier.

    bash
    npm run format

Communication

  • GitHub Issues: Use GitHub issues for bug reports, feature requests, and questions.
  • Pull Requests: Use GitHub pull requests to submit your code contributions.

Thank you for contributing to the Beacon SDK project!

',16),o=[n];function l(h,r,p,d,u,g){return t(),i("div",null,o)}const b=s(a,[["render",l]]);export{k as __pageData,b as default}; diff --git a/.vitepress/dist/assets/gettingstarted_contributing.md.BjD3FF_z.lean.js b/.vitepress/dist/assets/gettingstarted_contributing.md.BjD3FF_z.lean.js new file mode 100644 index 0000000..51c7be0 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_contributing.md.BjD3FF_z.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as t,a3 as e}from"./chunks/framework.D5qxx6u8.js";const k=JSON.parse('{"title":"Contributing Guide","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/contributing.md","filePath":"gettingstarted/contributing.md","lastUpdated":1717792017000}'),a={name:"gettingstarted/contributing.md"},n=e("",16),o=[n];function l(h,r,p,d,u,g){return t(),i("div",null,o)}const b=s(a,[["render",l]]);export{k as __pageData,b as default}; diff --git a/.vitepress/dist/assets/gettingstarted_faq.md.ZFzyjSX-.js b/.vitepress/dist/assets/gettingstarted_faq.md.ZFzyjSX-.js new file mode 100644 index 0000000..feacf47 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_faq.md.ZFzyjSX-.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as a,a3 as s}from"./chunks/framework.D5qxx6u8.js";const g=JSON.parse('{"title":"FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/faq.md","filePath":"gettingstarted/faq.md","lastUpdated":1717792017000}'),r={name:"gettingstarted/faq.md"},o=s('

FAQ

Q1: What are actions in the context of the VTT?

Actions are methods executed from the VTT, often used for rolls triggered from macros or chat buttons. They are defined in the sheet's configuration and can interact with character data.

Q2: How are computed properties used in the VTT?

Computed properties are defined attributes accessible by the host, usable in macros, and assignable to token bars. They can represent derived values or complex calculations based on character data.

Q3: What is the dispatch function used for?

The dispatch function provides methods for sending commands from the character sheet back to the host, including updating character data, performing actions, and interacting with the VTT interface.

Q4: What are roll buttons, and how do they work?

Roll buttons are HTML elements with specific attributes that execute designated sheet actions when clicked. They can pass arguments to the action method and are commonly used for triggering rolls from the character sheet.

Q5: How are legacy macro attributes handled in the VTT?

Legacy macro attributes can be mapped to the new sheet structure using the convertLegacyMacroAttributes function. Sheet developers can define how to handle legacy attribute values to ensure compatibility with existing macros.

Q6: What is the purpose of the query function?

The query function displays a SweetAlert prompt to users and returns the results along with any errors. It is commonly used for interactive prompts or confirmations within the VTT interface.

Q7: How are tokens managed in the VTT?

Tokens represent characters or objects on the virtual tabletop. Functions like getTokens, updateTokensByCharacter, and addToTracker are used to retrieve token information, update token data, and manage tokens in the turn tracker.

Q8: What is the role of the convertLegacyMacroAttributesArgs type?

The convertLegacyMacroAttributesArgs type defines the arguments used for handling legacy macro attributes. It includes the attribute name, character ID, and character data needed for mapping legacy attributes to the new sheet structure.

',9),n=[o];function i(c,d,l,u,h,m){return a(),e("div",null,n)}const f=t(r,[["render",i]]);export{g as __pageData,f as default}; diff --git a/.vitepress/dist/assets/gettingstarted_faq.md.ZFzyjSX-.lean.js b/.vitepress/dist/assets/gettingstarted_faq.md.ZFzyjSX-.lean.js new file mode 100644 index 0000000..05094ba --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_faq.md.ZFzyjSX-.lean.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as a,a3 as s}from"./chunks/framework.D5qxx6u8.js";const g=JSON.parse('{"title":"FAQ","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/faq.md","filePath":"gettingstarted/faq.md","lastUpdated":1717792017000}'),r={name:"gettingstarted/faq.md"},o=s("",9),n=[o];function i(c,d,l,u,h,m){return a(),e("div",null,n)}const f=t(r,[["render",i]]);export{g as __pageData,f as default}; diff --git a/.vitepress/dist/assets/gettingstarted_glossary.md.CDvkStwl.js b/.vitepress/dist/assets/gettingstarted_glossary.md.CDvkStwl.js new file mode 100644 index 0000000..514bf05 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_glossary.md.CDvkStwl.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a3 as r}from"./chunks/framework.D5qxx6u8.js";const b=JSON.parse('{"title":"Glossary","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/glossary.md","filePath":"gettingstarted/glossary.md","lastUpdated":1717792017000}'),o={name:"gettingstarted/glossary.md"},i=r('

Glossary

Background:

The background color of the alert box.

Character:

An entity in the game with attributes, bio, GM notes, and a token representation.

Character sheet:

A digital or printed page used to track a character's attributes, abilities, and other relevant information in a role-playing game.

Computed Property:

Properties that have both get and set methods, which can be dynamically calculated.

ConvertLegacyMacroAttributes:

A function to handle mapping legacy macro attributes to the new Beacon Sheet format.

Dispatch:

A set of functions enabling the sheet to send commands back to the VTT.

GM (Game Master):

The person who runs the game, controls the NPCs & the story, and provides challenges for the players.

Handler:

Methods that act as event handlers to process messages from the host.

InitRelay:

Function to initialize the SDK relay, setting up communication between the host and the character sheet.

Macro:

A script that automates repetitive tasks in the VTT.

Roll Template:

A predefined format for displaying the results of a dice roll.

Token:

A visual representation of a character or object on the virtual tabletop, with various properties like position, size, and attributes.

VTT (Virtual Tabletop):

An online platform that allows players to play tabletop role-playing games over the internet.

ValidationMessage:

A message displayed when an input value does not meet specific criteria.

Quantum Roll:

A system that ensures the fairness and authenticity of dice rolls in the VTT by using cryptographic methods.

',31),l=[i];function n(s,h,c,d,p,u){return t(),e("div",null,l)}const g=a(o,[["render",n]]);export{b as __pageData,g as default}; diff --git a/.vitepress/dist/assets/gettingstarted_glossary.md.CDvkStwl.lean.js b/.vitepress/dist/assets/gettingstarted_glossary.md.CDvkStwl.lean.js new file mode 100644 index 0000000..26ee0a0 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_glossary.md.CDvkStwl.lean.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as t,a3 as r}from"./chunks/framework.D5qxx6u8.js";const b=JSON.parse('{"title":"Glossary","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/glossary.md","filePath":"gettingstarted/glossary.md","lastUpdated":1717792017000}'),o={name:"gettingstarted/glossary.md"},i=r("",31),l=[i];function n(s,h,c,d,p,u){return t(),e("div",null,l)}const g=a(o,[["render",n]]);export{b as __pageData,g as default}; diff --git a/.vitepress/dist/assets/gettingstarted_installation.md.CeGvA-jF.js b/.vitepress/dist/assets/gettingstarted_installation.md.CeGvA-jF.js new file mode 100644 index 0000000..9e3f3f5 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_installation.md.CeGvA-jF.js @@ -0,0 +1,3 @@ +import{_ as a,c as e,o as s,a3 as t}from"./chunks/framework.D5qxx6u8.js";const u=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/installation.md","filePath":"gettingstarted/installation.md","lastUpdated":1717792017000}'),i={name:"gettingstarted/installation.md"},n=t(`

Installation

This guide will help you set up the Beacon SDK on your machine.

Prerequisites

Before you can install the Beacon SDK, you'll need to have Node.js installed on your machine. If you don't have Node.js installed, use the following steps in the official Node.js documentation.

Step 1: Accessing Beacon SDK

js
npm i @roll20-official/beacon-sdk

Step 2: Install & Import

The following steps will guide you in installing the package in your application:

  1. Add the package to your package.json:

    Under the dependencies object key of your package.json, add a new string key called @roll20/beacon-sdk with the version you want to install from our version history.

    For example:

    json
    {
    +  "@roll20/beacon-sdk": "0.0.0"
    +}

    For more information about installing packages, refer to the NPM documentation.

  2. Run npm install:

    Open a terminal in the root of your application’s folder and run the following command:

    bash
    npm install

    For more information about NPM commands, refer to the NPM install documentation.

  3. Import the necessary package contents in your application:

    The package exports various utilities you can use in your application. For example, you will need to utilize the initRelay function from the package.

    Here's an import statement for that function:

    javascript
    import { initRelay } from '@roll20/beacon-sdk';

    For more information about imports, refer to the JavaScript import documentation.

`,9),o=[n];function l(p,r,h,c,d,k){return s(),e("div",null,o)}const m=a(i,[["render",l]]);export{u as __pageData,m as default}; diff --git a/.vitepress/dist/assets/gettingstarted_installation.md.CeGvA-jF.lean.js b/.vitepress/dist/assets/gettingstarted_installation.md.CeGvA-jF.lean.js new file mode 100644 index 0000000..0c5798b --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_installation.md.CeGvA-jF.lean.js @@ -0,0 +1 @@ +import{_ as a,c as e,o as s,a3 as t}from"./chunks/framework.D5qxx6u8.js";const u=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/installation.md","filePath":"gettingstarted/installation.md","lastUpdated":1717792017000}'),i={name:"gettingstarted/installation.md"},n=t("",9),o=[n];function l(p,r,h,c,d,k){return s(),e("div",null,o)}const m=a(i,[["render",l]]);export{u as __pageData,m as default}; diff --git a/.vitepress/dist/assets/gettingstarted_introduction.md.D4KjaCzI.js b/.vitepress/dist/assets/gettingstarted_introduction.md.D4KjaCzI.js new file mode 100644 index 0000000..520b010 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_introduction.md.D4KjaCzI.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a3 as n}from"./chunks/framework.D5qxx6u8.js";const g=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/introduction.md","filePath":"gettingstarted/introduction.md","lastUpdated":1717792017000}'),o={name:"gettingstarted/introduction.md"},r=n('

Introduction

The Beacon SDK is a toolset designed to enhance and streamline the development of virtual tabletop (VTT) character sheets and other interactive elements.

Whether you're a game master (GM), a developer, or a player, the Beacon SDK provides a framework to create dynamic, responsive, and fully integrated VTT experiences.

What is the Beacon SDK?

The Beacon SDK is a specialized software development kit for virtual tabletops.

It facilitates creating and managing interactive character sheets, roll templates, macros, and other VTT functionalities.

The SDK ensures easy communication between the VTT platform and the character sheets, allowing real-time updates and interactions.

Key Features

  • Character Sheets: Design and implement detailed character sheets with dynamic attributes and real-time updates.
  • Roll Mechanics: Integrate complex roll formulas and display roll results directly within the VTT.
  • Macros: Create and manage macros for automated actions and roll calculations.
  • Event Handling: Utilize a comprehensive set of handlers to manage various events and interactions within the VTT.
  • Legacy Support: Convert and integrate legacy macros and roll templates with the new Beacon architecture.
  • Customization: Define custom actions computed properties and handle specific roll templates tailored to your game's needs.

Components Overview

The Beacon SDK is composed of several key components:

  • Actions: Define and manage custom actions that can be triggered within the VTT.
  • Handlers: Event handlers that process and respond to various VTT events and messages.
  • Computed Properties: Define dynamically computed properties based on other attributes.
  • Macro Attributes: Convert and manage legacy macro attributes for compatibility with the Beacon SDK.
  • Rolls: Implement advanced roll mechanics and display results dynamically within the VTT.

For a comprehensive overview of these components, view the components section.

Getting Started

To get started with the Beacon SDK, you must initialize the relay, set up your character sheets, and define the necessary actions, handlers, and computed properties.

This documentation provides detailed guides and examples to help you through each step of the process.

By leveraging the Beacon SDK, you can create rich, interactive, fully integrated VTT experiences that enhance gameplay and streamline game management.

Whether adapting existing character sheets or building new ones from scratch, the Beacon SDK offers the tools and flexibility to bring your virtual tabletop to life.

',18),i=[r];function s(l,c,d,h,p,m){return a(),t("div",null,i)}const f=e(o,[["render",s]]);export{g as __pageData,f as default}; diff --git a/.vitepress/dist/assets/gettingstarted_introduction.md.D4KjaCzI.lean.js b/.vitepress/dist/assets/gettingstarted_introduction.md.D4KjaCzI.lean.js new file mode 100644 index 0000000..cc1ba79 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_introduction.md.D4KjaCzI.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a3 as n}from"./chunks/framework.D5qxx6u8.js";const g=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/introduction.md","filePath":"gettingstarted/introduction.md","lastUpdated":1717792017000}'),o={name:"gettingstarted/introduction.md"},r=n("",18),i=[r];function s(l,c,d,h,p,m){return a(),t("div",null,i)}const f=e(o,[["render",s]]);export{g as __pageData,f as default}; diff --git a/.vitepress/dist/assets/gettingstarted_quickstart.md.DR8RojTF.js b/.vitepress/dist/assets/gettingstarted_quickstart.md.DR8RojTF.js new file mode 100644 index 0000000..849e5e0 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_quickstart.md.DR8RojTF.js @@ -0,0 +1,4 @@ +import{_ as s,c as e,o as t,a3 as i}from"./chunks/framework.D5qxx6u8.js";const a="/assets/beginner.2RvY_hqf.png",m=JSON.parse('{"title":"Beginner Beacon Sheet","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/quickstart.md","filePath":"gettingstarted/quickstart.md","lastUpdated":1717792017000}'),n={name:"gettingstarted/quickstart.md"},l=i('

Beginner Beacon Sheet

This is a quick start sheet example. This sheet will guide you through getting started with the Beacon Sheet.

Prerequisites

To set this sheet up properly, make sure that you have the following tools installed:

  • Vue.js
  • Vite
  • SCSS

BeginnerFigure 1: Quickstart sheet

Use the following steps to get started:

  1. Install the Beacon SDK: Run the following command.
bash
npm i @roll20-official/beacon-sdk
  1. Install dependencies: Install the dependencies for the project.
bash
npm install
  1. Start the Vite server: After installing the project's dependencies, you'll need to start the Vite server. There are two ways to do this:

a. Offline Development: This method will run the Vite server with the default port and environment set to development.

bash
npm run dev

Once this code executes successfully, you can access the Vite server at http://localhost:5173.

This method is useful when you do not have access to the Roll20 website or would like to work on parts of your project that do not depend on a connection to the VTT or Roll20 Characters, such as working on styling, mocking up the environment, building Vue components, testing functionality, etc.

INFO

In development mode, you cannot save or access existing character data or use the Beacon SDK functions that depend on VTT or Roll20 Characters functionality, such as dice rolling and token manipulation.

b. Sandbox Development: This method will run the Vite server with the port set to 7620 and the environment set to staging mode.

bash
npm run sandbox

This command will build the SCSS files and then run the Vite server. This will set the server up for connecting to a VTT custom sheet sandbox as well as through the sandbox in Roll20 Characters.

To test your changes in the VTT custom sheet sandbox, you will need to add the following to the sheet.json editor in the game settings:

json
{
+       "advanced": true,
+       "advancedPort": 7620
+}

Useful Commands

The following set of commands can come in handy when working with this sheet:

  • For Hot reloading and building CSS files, use the following command:
bash
npm run watch-scss
  • For linting, use the following command:
bash
npm run lint
  • For formatting with Prettier, use the following command:
bash
npm run format
`,30),o=[l];function h(p,r,d,c,g,k){return t(),e("div",null,o)}const b=s(n,[["render",h]]);export{m as __pageData,b as default}; diff --git a/.vitepress/dist/assets/gettingstarted_quickstart.md.DR8RojTF.lean.js b/.vitepress/dist/assets/gettingstarted_quickstart.md.DR8RojTF.lean.js new file mode 100644 index 0000000..302a210 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_quickstart.md.DR8RojTF.lean.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as t,a3 as i}from"./chunks/framework.D5qxx6u8.js";const a="/assets/beginner.2RvY_hqf.png",m=JSON.parse('{"title":"Beginner Beacon Sheet","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/quickstart.md","filePath":"gettingstarted/quickstart.md","lastUpdated":1717792017000}'),n={name:"gettingstarted/quickstart.md"},l=i("",30),o=[l];function h(p,r,d,c,g,k){return t(),e("div",null,o)}const b=s(n,[["render",h]]);export{m as __pageData,b as default}; diff --git a/.vitepress/dist/assets/gettingstarted_quickstartadvance.md.CLzkgrw2.js b/.vitepress/dist/assets/gettingstarted_quickstartadvance.md.CLzkgrw2.js new file mode 100644 index 0000000..847876a --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_quickstartadvance.md.CLzkgrw2.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as i,a3 as a}from"./chunks/framework.D5qxx6u8.js";const t="/assets/advanced.ro_Mb-JH.png",m=JSON.parse('{"title":"Advanced Beacon Sheet","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/quickstartadvance.md","filePath":"gettingstarted/quickstartadvance.md","lastUpdated":1717792017000}'),n={name:"gettingstarted/quickstartadvance.md"},l=a('

Advanced Beacon Sheet

This is an advanced quick start sheet example. This sheet takes an advanced approach to building the Beacon sheet.

Prerequisites

To set this sheet up properly, make sure that you have the following:

  • Vue framework & Routing
  • Multiple Data Stores
  • Complex Roll Templates
  • Rich Sheet Actions
  • TypeScript
  • Vite
  • SCSS
  • Ability to run Unit & End-to-End Tests

AdvancedFigure 1: Advanced sheet

This sheet uses the same steps listed in the Beginner sheet. Immediately after implementing those three steps, you'll add the following step:

  • Run a CI check: This will run several checks to ensure your code is as optimal as possible, including formatting, linting, type checking, unit tests, and end-to-end tests.
bash
npm run ci-check

You can think of this command as a sanity check you can leverage when pushing a big release for your sheet!

Useful Commands

The following set of commands can come in handy when working with this sheet:

  • For Hot reloading and building CSS files, use the following command:
bash
npm run watch-scss
  • For linting, use the following command:
bash
npm run lint
  • For formatting with Prettier, use the following command:
bash
npm run format
  • For type checking with TypeScript, use the following command:
bash
npm run type-check
  • For running unit tests with Vitest, use the following command:
bash
npm run test:unit
  • To open up and develop local end-to-end tests with Cypress, use the following command:
bash
npm run test:e2e:open:local
  • For running local end-to-end tests with Cypress, use the following command:
bash
npm run test:e2e:local
  • To run CDN-hosted end-to-end tests with Cypress, use the following command:
bash
npm run test:e2e
',28),h=[l];function p(o,d,c,r,u,k){return i(),e("div",null,h)}const F=s(n,[["render",p]]);export{m as __pageData,F as default}; diff --git a/.vitepress/dist/assets/gettingstarted_quickstartadvance.md.CLzkgrw2.lean.js b/.vitepress/dist/assets/gettingstarted_quickstartadvance.md.CLzkgrw2.lean.js new file mode 100644 index 0000000..8e36c9d --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_quickstartadvance.md.CLzkgrw2.lean.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as i,a3 as a}from"./chunks/framework.D5qxx6u8.js";const t="/assets/advanced.ro_Mb-JH.png",m=JSON.parse('{"title":"Advanced Beacon Sheet","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/quickstartadvance.md","filePath":"gettingstarted/quickstartadvance.md","lastUpdated":1717792017000}'),n={name:"gettingstarted/quickstartadvance.md"},l=a("",28),h=[l];function p(o,d,c,r,u,k){return i(),e("div",null,h)}const F=s(n,[["render",p]]);export{m as __pageData,F as default}; diff --git a/.vitepress/dist/assets/gettingstarted_releasesheet.md.kJPGiQBn.js b/.vitepress/dist/assets/gettingstarted_releasesheet.md.kJPGiQBn.js new file mode 100644 index 0000000..cf9b5d7 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_releasesheet.md.kJPGiQBn.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.D5qxx6u8.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/releasesheet.md","filePath":"gettingstarted/releasesheet.md","lastUpdated":1717792017000}'),s={name:"gettingstarted/releasesheet.md"};function r(n,o,c,d,i,l){return a(),t("div")}const m=e(s,[["render",r]]);export{_ as __pageData,m as default}; diff --git a/.vitepress/dist/assets/gettingstarted_releasesheet.md.kJPGiQBn.lean.js b/.vitepress/dist/assets/gettingstarted_releasesheet.md.kJPGiQBn.lean.js new file mode 100644 index 0000000..cf9b5d7 --- /dev/null +++ b/.vitepress/dist/assets/gettingstarted_releasesheet.md.kJPGiQBn.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.D5qxx6u8.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"gettingstarted/releasesheet.md","filePath":"gettingstarted/releasesheet.md","lastUpdated":1717792017000}'),s={name:"gettingstarted/releasesheet.md"};function r(n,o,c,d,i,l){return a(),t("div")}const m=e(s,[["render",r]]);export{_ as __pageData,m as default}; diff --git a/.vitepress/dist/assets/index.md.flauEWzo.js b/.vitepress/dist/assets/index.md.flauEWzo.js new file mode 100644 index 0000000..394ee98 --- /dev/null +++ b/.vitepress/dist/assets/index.md.flauEWzo.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.D5qxx6u8.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Beacon SDK","text":"","tagline":"Build Advanced Character Sheets for Roll20","actions":[{"theme":"brand","text":"Markdown Examples","link":"/markdown-examples"},{"theme":"alt","text":"Docs","link":"../gettingstarted/introduction"}]},"features":[{"title":"Feature A","details":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"},{"title":"Feature B","details":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"},{"title":"Feature C","details":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1717792017000}'),i={name:"index.md"};function o(r,s,n,d,c,l){return a(),t("div")}const u=e(i,[["render",o]]);export{p as __pageData,u as default}; diff --git a/.vitepress/dist/assets/index.md.flauEWzo.lean.js b/.vitepress/dist/assets/index.md.flauEWzo.lean.js new file mode 100644 index 0000000..394ee98 --- /dev/null +++ b/.vitepress/dist/assets/index.md.flauEWzo.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.D5qxx6u8.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Beacon SDK","text":"","tagline":"Build Advanced Character Sheets for Roll20","actions":[{"theme":"brand","text":"Markdown Examples","link":"/markdown-examples"},{"theme":"alt","text":"Docs","link":"../gettingstarted/introduction"}]},"features":[{"title":"Feature A","details":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"},{"title":"Feature B","details":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"},{"title":"Feature C","details":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1717792017000}'),i={name:"index.md"};function o(r,s,n,d,c,l){return a(),t("div")}const u=e(i,[["render",o]]);export{p as __pageData,u as default}; diff --git a/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000..b6b603d Binary files /dev/null and b/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ diff --git a/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000..def40a4 Binary files /dev/null and b/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ diff --git a/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 new file mode 100644 index 0000000..e070c3d Binary files /dev/null and b/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ diff --git a/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000..a3c16ca Binary files /dev/null and b/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ diff --git a/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000..2210a89 Binary files /dev/null and b/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ diff --git a/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 b/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 new file mode 100644 index 0000000..790d62d Binary files /dev/null and b/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 differ diff --git a/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 new file mode 100644 index 0000000..1eec077 Binary files /dev/null and b/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ diff --git a/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 new file mode 100644 index 0000000..2cfe615 Binary files /dev/null and b/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ diff --git a/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 new file mode 100644 index 0000000..e3886dd Binary files /dev/null and b/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ diff --git a/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000..36d6748 Binary files /dev/null and b/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ diff --git a/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 b/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000..2bed1e8 Binary files /dev/null and b/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 differ diff --git a/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000..9a8d1e2 Binary files /dev/null and b/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ diff --git a/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 b/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000..07d3c53 Binary files /dev/null and b/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 differ diff --git a/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000..57bdc22 Binary files /dev/null and b/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ diff --git a/.vitepress/dist/assets/style.CXcL9v0B.css b/.vitepress/dist/assets/style.CXcL9v0B.css new file mode 100644 index 0000000..94179eb --- /dev/null +++ b/.vitepress/dist/assets/style.CXcL9v0B.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.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;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.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;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-54a304ca]{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-54a304ca],.VPBackdrop.fade-leave-to[data-v-54a304ca]{opacity:0}.VPBackdrop.fade-leave-active[data-v-54a304ca]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-54a304ca]{display:none}}.NotFound[data-v-6ff51ddd]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-6ff51ddd]{padding:96px 32px 168px}}.code[data-v-6ff51ddd]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-6ff51ddd]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-6ff51ddd]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-6ff51ddd]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-6ff51ddd]{padding-top:20px}.link[data-v-6ff51ddd]{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-6ff51ddd]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-53c99d69]{position:relative;z-index:1}.nested[data-v-53c99d69]{padding-right:16px;padding-left:16px}.outline-link[data-v-53c99d69]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-53c99d69]:hover,.outline-link.active[data-v-53c99d69]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-53c99d69]{padding-left:13px}.VPDocAsideOutline[data-v-f610f197]{display:none}.VPDocAsideOutline.has-outline[data-v-f610f197]{display:block}.content[data-v-f610f197]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-f610f197]{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-f610f197]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-cb998dce]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-cb998dce]{flex-grow:1}.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-cb998dce] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-19a7ae4e]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-19a7ae4e]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-5941af80]{margin-top:64px}.edit-info[data-v-5941af80]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-5941af80]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-5941af80]{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-5941af80]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-5941af80]{margin-right:8px}.prev-next[data-v-5941af80]{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-5941af80]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-5941af80]{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-5941af80]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-5941af80]{margin-left:auto;text-align:right}.desc[data-v-5941af80]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-5941af80]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-e6f2a212]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-e6f2a212]{display:flex;justify-content:center}.VPDoc .aside[data-v-e6f2a212]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{max-width:1104px}}.container[data-v-e6f2a212]{margin:0 auto;width:100%}.aside[data-v-e6f2a212]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-e6f2a212]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-e6f2a212]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-e6f2a212]::-webkit-scrollbar{display:none}.aside-curtain[data-v-e6f2a212]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-e6f2a212]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-e6f2a212]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-e6f2a212]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-e6f2a212]{order:1;margin:0;min-width:640px}}.content-container[data-v-e6f2a212]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-e6f2a212]{max-width:688px}.VPButton[data-v-c9cf0e3c]{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-c9cf0e3c]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-c9cf0e3c]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-c9cf0e3c]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-c9cf0e3c]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-c9cf0e3c]: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-c9cf0e3c]: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-c9cf0e3c]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-c9cf0e3c]: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-c9cf0e3c]: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-c9cf0e3c]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-c9cf0e3c]: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-c9cf0e3c]: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-ab19afbb]{display:none}.dark .VPImage.light[data-v-ab19afbb]{display:none}.VPHero[data-v-b10c5094]{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-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-b10c5094]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-b10c5094]{flex-direction:row}}.main[data-v-b10c5094]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-b10c5094]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-b10c5094]{text-align:left}}@media (min-width: 960px){.main[data-v-b10c5094]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-b10c5094]{max-width:592px}}.name[data-v-b10c5094],.text[data-v-b10c5094]{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-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0 auto}.name[data-v-b10c5094]{color:var(--vp-home-hero-name-color)}.clip[data-v-b10c5094]{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-b10c5094],.text[data-v-b10c5094]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-b10c5094],.text[data-v-b10c5094]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0}}.tagline[data-v-b10c5094]{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-b10c5094]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-b10c5094]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-b10c5094]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-b10c5094]{margin:0}}.actions[data-v-b10c5094]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-b10c5094]{justify-content:center}@media (min-width: 640px){.actions[data-v-b10c5094]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-b10c5094]{justify-content:flex-start}}.action[data-v-b10c5094]{flex-shrink:0;padding:6px}.image[data-v-b10c5094]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-b10c5094]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-b10c5094]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-b10c5094]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-b10c5094]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-b10c5094]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-b10c5094]{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-b10c5094]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-b10c5094]{width:320px;height:320px}}[data-v-b10c5094] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-b10c5094] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-b10c5094] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-bd37d1a2]{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-bd37d1a2]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-bd37d1a2]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-bd37d1a2]>.VPImage{margin-bottom:20px}.icon[data-v-bd37d1a2]{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-bd37d1a2]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-bd37d1a2]{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-bd37d1a2]{padding-top:8px}.link-text-value[data-v-bd37d1a2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-bd37d1a2]{margin-left:6px}.VPFeatures[data-v-b1eea84a]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-b1eea84a]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-b1eea84a]{padding:0 64px}}.container[data-v-b1eea84a]{margin:0 auto;max-width:1152px}.items[data-v-b1eea84a]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-b1eea84a]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a]{width:50%}.item.grid-3[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-b1eea84a]{width:25%}}.container[data-v-c141a4bd]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-c141a4bd]{padding:0 48px}}@media (min-width: 960px){.container[data-v-c141a4bd]{width:100%;padding:0 64px}}.vp-doc[data-v-c141a4bd] .VPHomeSponsors,.vp-doc[data-v-c141a4bd] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-c141a4bd] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-c141a4bd] .VPHomeSponsors a,.vp-doc[data-v-c141a4bd] .VPTeamPage a{text-decoration:none}.VPHome[data-v-07b1ad08]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-07b1ad08]{margin-bottom:128px}}.VPContent[data-v-9a6c75ad]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-9a6c75ad]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:0}@media (min-width: 960px){.VPContent[data-v-9a6c75ad]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-9a6c75ad]{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-566314d4]{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-566314d4]{display:none}.VPFooter[data-v-566314d4] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-566314d4] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-566314d4]{padding:32px}}.container[data-v-566314d4]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-566314d4],.copyright[data-v-566314d4]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-883964e0]{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-883964e0]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-883964e0]{color:var(--vp-c-text-1)}.icon[data-v-883964e0]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-883964e0]{font-size:14px}.icon[data-v-883964e0]{font-size:16px}}.open>.icon[data-v-883964e0]{transform:rotate(90deg)}.items[data-v-883964e0]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-883964e0]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-883964e0]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-883964e0]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-883964e0]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-883964e0]{transition:all .2s ease-out}.flyout-leave-active[data-v-883964e0]{transition:all .15s ease-in}.flyout-enter-from[data-v-883964e0],.flyout-leave-to[data-v-883964e0]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-2488c25a]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-2488c25a]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-2488c25a]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-2488c25a]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-2488c25a]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-2488c25a]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-2488c25a]{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-2488c25a]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-2488c25a]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-2488c25a]{display:none}}.menu-icon[data-v-2488c25a]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-2488c25a]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-2488c25a]{padding:12px 32px 11px}}.VPSwitch[data-v-b4ccac88]{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-b4ccac88]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b4ccac88]{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-b4ccac88]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b4ccac88] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-b4ccac88] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-7df97737]{opacity:1}.moon[data-v-7df97737],.dark .sun[data-v-7df97737]{opacity:0}.dark .moon[data-v-7df97737]{opacity:1}.dark .VPSwitchAppearance[data-v-7df97737] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-283b26e9]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-283b26e9]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-f51f088d]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-f51f088d]{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-f51f088d]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-f51f088d]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-a6b0397c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-a6b0397c]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-a6b0397c]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-a6b0397c]{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-e42ed9b3]{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-e42ed9b3] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e42ed9b3] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e42ed9b3] .group:last-child{padding-bottom:0}.VPMenu[data-v-e42ed9b3] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e42ed9b3] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e42ed9b3] .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-e42ed9b3] .action{padding-left:24px}.VPFlyout[data-v-af5898d3]{position:relative}.VPFlyout[data-v-af5898d3]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-af5898d3]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-af5898d3]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-af5898d3]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-af5898d3]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-af5898d3],.button[aria-expanded=true]+.menu[data-v-af5898d3]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-af5898d3]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-af5898d3]{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-af5898d3]{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-af5898d3]{margin-right:0;font-size:16px}.text-icon[data-v-af5898d3]{margin-left:4px;font-size:14px}.icon[data-v-af5898d3]{font-size:20px;transition:fill .25s}.menu[data-v-af5898d3]{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-358b6670]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-358b6670]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-358b6670]>svg,.VPSocialLink[data-v-358b6670]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e71e869c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-8e87c032]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-8e87c032]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-8e87c032]{display:none}}.trans-title[data-v-8e87c032]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-8e87c032],.item.social-links[data-v-8e87c032]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-8e87c032]{min-width:176px}.appearance-action[data-v-8e87c032]{margin-right:-2px}.social-links-list[data-v-8e87c032]{margin:-4px -8px}.VPNavBarHamburger[data-v-6bee1efd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-6bee1efd]{display:none}}.container[data-v-6bee1efd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-6bee1efd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-6bee1efd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-6bee1efd],.VPNavBarHamburger.active:hover .middle[data-v-6bee1efd],.VPNavBarHamburger.active:hover .bottom[data-v-6bee1efd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-6bee1efd],.middle[data-v-6bee1efd],.bottom[data-v-6bee1efd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-6bee1efd]{top:0;left:0;transform:translate(0)}.middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-08fbf4b6]{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-08fbf4b6],.VPNavBarMenuLink[data-v-08fbf4b6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-f732b5d0]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-f732b5d0]{display:flex}}/*! @docsearch/css 3.6.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-ef6192dc]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ef6192dc]{display:flex;align-items:center}}.title[data-v-0ad69264]{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-0ad69264]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0ad69264]{border-bottom-color:var(--vp-c-divider)}}[data-v-0ad69264] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-acee064b]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-acee064b]{display:flex;align-items:center}}.title[data-v-acee064b]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-844edcde]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar[data-v-844edcde]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-844edcde]:not(.home){background-color:transparent}.VPNavBar[data-v-844edcde]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-844edcde]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-844edcde]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-844edcde]{padding:0}}.container[data-v-844edcde]{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-844edcde],.container>.content[data-v-844edcde]{pointer-events:none}.container[data-v-844edcde] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-844edcde]{max-width:100%}}.title[data-v-844edcde]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-844edcde]{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-844edcde]{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-844edcde]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-844edcde]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-844edcde]{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-844edcde]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-844edcde]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-844edcde]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-844edcde]{column-gap:.5rem}}.menu+.translations[data-v-844edcde]:before,.menu+.appearance[data-v-844edcde]:before,.menu+.social-links[data-v-844edcde]:before,.translations+.appearance[data-v-844edcde]:before,.appearance+.social-links[data-v-844edcde]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-844edcde]:before,.translations+.appearance[data-v-844edcde]:before{margin-right:16px}.appearance+.social-links[data-v-844edcde]:before{margin-left:16px}.social-links[data-v-844edcde]{margin-right:-8px}.divider[data-v-844edcde]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-844edcde]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-844edcde]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-844edcde]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-844edcde]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-844edcde]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-844edcde]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-338d9b48]{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-338d9b48]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-1a934d60]{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-1a934d60]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-aea78dd1]{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-aea78dd1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f60dbfa7]{display:block}.title[data-v-f60dbfa7]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-d2212c70]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-d2212c70]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-d2212c70]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-d2212c70]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-d2212c70]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-d2212c70]{transform:rotate(45deg)}.button[data-v-d2212c70]{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-d2212c70]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-d2212c70]{transition:transform .25s}.group[data-v-d2212c70]:first-child{padding-top:0}.group+.group[data-v-d2212c70],.group+.item[data-v-d2212c70]{padding-top:4px}.VPNavScreenTranslations[data-v-516e4bc3]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-516e4bc3]{height:auto}.title[data-v-516e4bc3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-516e4bc3]{font-size:16px}.icon.lang[data-v-516e4bc3]{margin-right:8px}.icon.chevron[data-v-516e4bc3]{margin-left:4px}.list[data-v-516e4bc3]{padding:4px 0 0 24px}.link[data-v-516e4bc3]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-57cce842]{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-57cce842],.VPNavScreen.fade-leave-active[data-v-57cce842]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-57cce842],.VPNavScreen.fade-leave-active .container[data-v-57cce842]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-57cce842],.VPNavScreen.fade-leave-to[data-v-57cce842]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-57cce842],.VPNavScreen.fade-leave-to .container[data-v-57cce842]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-57cce842]{display:none}}.container[data-v-57cce842]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-57cce842],.menu+.appearance[data-v-57cce842],.translations+.appearance[data-v-57cce842]{margin-top:24px}.menu+.social-links[data-v-57cce842]{margin-top:16px}.appearance+.social-links[data-v-57cce842]{margin-top:16px}.VPNav[data-v-7ad780c2]{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-7ad780c2]{position:fixed}}.VPSidebarItem.level-0[data-v-c24f735a]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-c24f735a]{padding-bottom:10px}.item[data-v-c24f735a]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-c24f735a]{cursor:pointer}.indicator[data-v-c24f735a]{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-c24f735a],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-c24f735a],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-c24f735a]{background-color:var(--vp-c-brand-1)}.link[data-v-c24f735a]{display:flex;align-items:center;flex-grow:1}.text[data-v-c24f735a]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-c24f735a]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-c24f735a],.VPSidebarItem.level-2 .text[data-v-c24f735a],.VPSidebarItem.level-3 .text[data-v-c24f735a],.VPSidebarItem.level-4 .text[data-v-c24f735a],.VPSidebarItem.level-5 .text[data-v-c24f735a]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-c24f735a],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-c24f735a]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-1.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-2.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-3.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-4.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-5.has-active>.item>.text[data-v-c24f735a],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-c24f735a],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-c24f735a]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-c24f735a],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-c24f735a]{color:var(--vp-c-brand-1)}.caret[data-v-c24f735a]{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-c24f735a]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-c24f735a]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-c24f735a]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-c24f735a]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-c24f735a],.VPSidebarItem.level-2 .items[data-v-c24f735a],.VPSidebarItem.level-3 .items[data-v-c24f735a],.VPSidebarItem.level-4 .items[data-v-c24f735a],.VPSidebarItem.level-5 .items[data-v-c24f735a]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-c24f735a]{display:none}.VPSidebar[data-v-4871f9f5]{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-4871f9f5]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-4871f9f5]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-4871f9f5]{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-4871f9f5]{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-4871f9f5]{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-4871f9f5]{outline:0}.group+.group[data-v-4871f9f5]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-4871f9f5]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-c8291ffa]{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-c8291ffa]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c8291ffa]{top:14px;left:16px}}.Layout[data-v-d8b57b2d]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3dc26e1d]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3dc26e1d]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{margin:128px 0}}.VPHomeSponsors[data-v-3dc26e1d]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 64px}}.container[data-v-3dc26e1d]{margin:0 auto;max-width:1152px}.love[data-v-3dc26e1d]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3dc26e1d]{display:inline-block}.message[data-v-3dc26e1d]{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-3dc26e1d]{padding-top:32px}.action[data-v-3dc26e1d]{padding-top:40px;text-align:center}.VPTeamPage[data-v-a5329171]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-a5329171]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-a5329171-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-a5329171-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-a5329171-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:96px}}.VPTeamMembers[data-v-a5329171-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-a5329171-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-a5329171-s]{padding:0 64px}}.VPTeamPageTitle[data-v-46c5e327]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-46c5e327]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-46c5e327]{padding:80px 64px 48px}}.title[data-v-46c5e327]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-46c5e327]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-46c5e327]{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-46c5e327]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3bf2e850]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 64px}}.title[data-v-3bf2e850]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3bf2e850]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3bf2e850]{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-3bf2e850]{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-3bf2e850]{padding-top:40px}.VPTeamMembersItem[data-v-acff304e]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-acff304e]{padding:32px}.VPTeamMembersItem.small .data[data-v-acff304e]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-acff304e]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-acff304e]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-acff304e]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-acff304e]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-acff304e]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-acff304e]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-acff304e]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-acff304e]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-acff304e]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-acff304e]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-acff304e]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-acff304e]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-acff304e]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-acff304e]{text-align:center}.avatar[data-v-acff304e]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-acff304e]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-acff304e]{margin:0;font-weight:600}.affiliation[data-v-acff304e]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-acff304e]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-acff304e]:hover{color:var(--vp-c-brand-1)}.desc[data-v-acff304e]{margin:0 auto}.desc[data-v-acff304e] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-acff304e]{display:flex;justify-content:center;height:56px}.sp-link[data-v-acff304e]{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-acff304e]:hover,.sp .sp-link.link[data-v-acff304e]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-acff304e]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-bf782009]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-bf782009]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-bf782009]{max-width:876px}.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-bf782009]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-bf782009]{max-width:760px}.container[data-v-bf782009]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPLocalSearchBox[data-v-cb4e1afe]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-cb4e1afe]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-cb4e1afe]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-cb4e1afe]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-cb4e1afe]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-cb4e1afe]{padding:0 8px}}.search-bar[data-v-cb4e1afe]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-cb4e1afe]{display:block;font-size:18px}.navigate-icon[data-v-cb4e1afe]{display:block;font-size:14px}.search-icon[data-v-cb4e1afe]{margin:8px}@media (max-width: 767px){.search-icon[data-v-cb4e1afe]{display:none}}.search-input[data-v-cb4e1afe]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-cb4e1afe]{padding:6px 4px}}.search-actions[data-v-cb4e1afe]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-cb4e1afe]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-cb4e1afe]{display:none}}.search-actions button[data-v-cb4e1afe]{padding:8px}.search-actions button[data-v-cb4e1afe]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-cb4e1afe]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-cb4e1afe]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-cb4e1afe]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-cb4e1afe]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-cb4e1afe]{display:none}}.search-keyboard-shortcuts kbd[data-v-cb4e1afe]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-cb4e1afe]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-cb4e1afe]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-cb4e1afe]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-cb4e1afe]{margin:8px}}.titles[data-v-cb4e1afe]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-cb4e1afe]{display:flex;align-items:center;gap:4px}.title.main[data-v-cb4e1afe]{font-weight:500}.title-icon[data-v-cb4e1afe]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-cb4e1afe]{opacity:.5}.result.selected[data-v-cb4e1afe]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-cb4e1afe]{position:relative}.excerpt[data-v-cb4e1afe]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-cb4e1afe]{opacity:1}.excerpt[data-v-cb4e1afe] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-cb4e1afe] mark,.excerpt[data-v-cb4e1afe] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-cb4e1afe] .vp-code-group .tabs{display:none}.excerpt[data-v-cb4e1afe] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-cb4e1afe]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-cb4e1afe]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-cb4e1afe],.result.selected .title-icon[data-v-cb4e1afe]{color:var(--vp-c-brand-1)!important}.no-results[data-v-cb4e1afe]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-cb4e1afe]{flex:none} diff --git a/.vitepress/dist/assets/types.md.DatBM-ns.js b/.vitepress/dist/assets/types.md.DatBM-ns.js new file mode 100644 index 0000000..4bf82a8 --- /dev/null +++ b/.vitepress/dist/assets/types.md.DatBM-ns.js @@ -0,0 +1,103 @@ +import{_ as i,c as s,o as a,a3 as n}from"./chunks/framework.D5qxx6u8.js";const E=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"types.md","filePath":"types.md","lastUpdated":1717792017000}'),l={name:"types.md"},t=n(`

Types

This section provides detailed descriptions and examples of the key types used in the SDK.

Each type represents different aspects of characters, tokens, roll results, and macro attributes, facilitating comprehensive and flexible interactions within the VTT environment.

Character

The Character type contains a game character, including its unique ID, name, attributes, and visual representation. It also supports optional fields for character biography and Game Master notes.

typescript
type Character = {
+ id: string;
+ name: string;
+ attributes: Record<string, any>;
+ bio?: string;
+ gmNotes?: string;
+ token: Token;
+ avatar: string;
+}

The character type contains the following properties:

  • id: A unique identifier for the character.
  • name: The character's name.
  • attributes: A record of various attributes such as strength, agility, etc.
  • bio: An optional field for the character's biography.
  • gmNotes: Optional notes intended for the Game Master.
  • token: A Token object representing the character's token on the VTT.
  • avatar: URL to the character's avatar image.

Token

The Token type represents a character or object's visual token on the virtual tabletop. This type includes various properties related to the token's appearance, control, and interactions within the game environment.

typescript
type Token = {
+ id: string;
+ layer: string;
+ imgsrc: string;
+ name: string;
+ gmnotes: string
+ controlledby: string;
+ bar1_value: string;
+ bar1_max: string;
+ bar1_link: string;
+ bar2_value: string;
+ bar2_max: string;
+ bar2_link: string;
+ bar3_value: string;
+ bar3_max: string;
+ bar3_link: string;
+ represents: string;
+ aura1_radius: string;
+ aura1_color: string;
+ aura2_radius: string;
+ aura2_color: string;
+ tint_color: string;
+ statusmarkers: string;
+ light_radius: string;
+ light_dimradius: string;
+ light_angle: string;
+ light_losangle: string;
+ adv_fow_view_distance: string;
+ sides: string;
+ lastmove: string;
+ lightColor: string;
+ currentSide: number;
+ night_vision_distance: number;
+ bright_light_distance: number;
+ low_light_distance: number;
+ limit_field_of_vision_center: number;
+ limit_field_of_vision_total: number;
+ limit_field_of_night_vision_center: number;
+ limit_field_of_night_vision_total: number;
+ directional_bright_light_total: number;
+ directional_bright_light_center: number;
+ directional_low_light_total: number;
+ directional_low_light_center: number;
+ light_sensitivity_multiplier: number;
+ dim_light_opacity: number;
+ isdrawing: boolean;
+ flipv: boolean;
+ fliph: boolean;
+ aura1_square: boolean;
+ aura2_square: boolean;
+ showname: boolean;
+ showplayers_name: boolean;
+ showplayers_bar1: boolean;
+ showplayers_bar2: boolean;
+ showplayers_bar3: boolean;
+ showplayers_aura1: boolean;
+ showplayers_aura2: boolean;
+ playersedit_name: boolean;
+ playersedit_bar1: boolean;
+ playersedit_bar2: boolean;
+ playersedit_bar3: boolean;
+ playersedit_aura1: boolean;
+ playersedit_aura2: boolean;
+ light_otherplayers: boolean;
+ light_hassight: boolean;
+ has_bright_light_vision: boolean;
+ has_night_vision: boolean;
+ emits_bright_light: boolean;
+ emits_low_light: boolean;
+ has_limit_field_of_vision: boolean;
+ has_limit_field_of_night_vision: boolean;
+ has_directional_bright_light: boolean;
+ has_directional_low_light: boolean;
+ show_tooltip: boolean;
+ lockMovement: boolean;
+}

The token type contains the following properties:

  • id: A unique identifier for the token.
  • layer: Specifies the layer the token is on, such as "map" or "objects".
  • imgsrc: URL to the token's image.
  • name: Name of the token.
  • gmnotes: Notes for the Game Master about the token.
  • controlledby: ID of the player controlling the token.
  • bar1_value: Current value of the first status bar.
  • bar1_max: Maximum value of the first status bar.
  • bar1_link: Link to the attribute the first bar represents.
  • bar2_value: Current value of the second status bar.
  • bar2_max: Maximum value of the second status bar.
  • bar2_link: Link to the attribute the second bar represents.
  • bar3_value: Current value of the third status bar.
  • bar3_max: Maximum value of the third status bar.
  • bar3_link: Link to the attribute the third bar represents.
  • represents: The character ID this token represents.
  • aura1_radius: Radius of the first aura.
  • aura1_color: Color of the first aura.
  • aura2_radius: Radius of the second aura.
  • aura2_color: Color of the second aura.
  • tint_color: Tint color applied to the token.
  • statusmarkers: Status markers applied to the token.
  • light_radius: Radius of the light the token emits.
  • light_dimradius: Radius of the dim light the token emits.
  • light_angle: Angle of the light emission.
  • light_losangle: Line of sight angle.
  • adv_fow_view_distance: Distance the token can see in advanced fog of war.
  • sides: Number of sides for multi-sided tokens.
  • lastmove: Coordinates of the last move.
  • lightColor: Color of the light emitted by the token.
  • currentSide: Current side displayed for multi-sided tokens.
  • night_vision_distance: Distance for night vision.
  • bright_light_distance: Distance for bright light vision.
  • low_light_distance: Distance for low light vision.
  • limit_field_of_vision_center: Center limit for the field of vision.
  • limit_field_of_vision_total: Total limit for the field of vision.
  • limit_field_of_night_vision_center: Center limit for night vision.
  • limit_field_of_night_vision_total: Total limit for night vision.
  • directional_bright_light_total: Total distance for directional bright light.
  • directional_bright_light_center: Center distance for directional bright light.
  • directional_low_light_total: Total distance for directional low light.
  • directional_low_light_center: Center distance for directional low light.
  • light_sensitivity_multiplier: Multiplier for light sensitivity.
  • dim_light_opacity: Opacity of the dim light.
  • isdrawing: Indicates if the token is a drawing.
  • flipv: Indicates if the token is flipped vertically.
  • fliph: Indicates if the token is flipped horizontally.
  • aura1_square: Indicates if the first aura is square.
  • aura2_square: Indicates if the second aura is square.
  • showname: Show the token's name.
  • showplayers_name: Show the name to players.
  • showplayers_bar1: Show the first bar to players.
  • showplayers_bar2: Show the second bar to players.
  • showplayers_bar3: Show the third bar to players.
  • showplayers_aura1: Show the first aura to players.
  • showplayers_aura2: Show the second aura to players.
  • playersedit_name: Allow players to edit the name.
  • playersedit_bar1: Allow players to edit the first bar.
  • playersedit_bar2: Allow players to edit the second bar.
  • playersedit_bar3: Allow players to edit the third bar.
  • playersedit_aura1: Allow players to edit the first aura.
  • playersedit_aura2: Allow players to edit the second aura.
  • light_otherplayers: Light is visible to other players.
  • light_hassight: Token has sight.
  • has_bright_light_vision: Token has bright light vision.
  • has_night_vision: Token has night vision.
  • emits_bright_light: Token emits bright light.
  • emits_low_light: Token emits low light.
  • has_limit_field_of_vision: Token has a limited field of vision.
  • has_limit_field_of_night_vision: Token has a limited night vision.
  • has_directional_bright_light: Token has directional bright light.
  • has_directional_low_light: Token has directional low light.
  • show_tooltip: Show tooltip for the token.
  • lockMovement: Lock the token's movement.

RollResults

The RollResults type details the outcomes of dice rolls, including the expression used, individual dice results, and the final computed result. This type is essential for handling and displaying roll results in the game.

typescript
type RollResults = {
+ [name: string]: {
+ expression: string;
+ rollName: string;
+ results: {
+ expression: string;
+ dice?: number[];
+ result: number;
+ rolls?: {
+ sides: number;
+ dice: number;
+ results: number[];
+ }[];
+ };
+ };
+}

The RollResults type contains the following properties:

  • expression: The dice roll formula.
  • rollName: The name given to this roll.
  • results: An object containing the roll results.
    • expression: The formula used for the roll.
    • dice: An optional array of the dice rolled.
    • result: The final result of the roll.
    • rolls: Optional detailed results of each dice rolled.
      • sides: Number of sides on the dice.
      • dice: Number of dice rolled.
      • results: Results of the individual dice rolls.

convertLegacyMacroAttributesArgs

The convertLegacyMacroAttributesArgs type defines the arguments required for converting legacy macro attributes. This type includes the attribute name, character ID, and the character object itself.

typescript
type convertLegacyMacroAttributesArgs = {
+ attribute: string;
+ characterId: string;
+ character: Character;
+}

The convertLegacyMacroAttributesArgs type contains the following properties:

  • attribute: The name of the attribute to be converted.
  • characterId: The unique identifier of the character.
  • character: The Character object containing the character's data.

These types control interaction with character data, tokens, roll results, and handling legacy macro attributes, making the SDK flexible for various use cases.

`,24),e=[t];function h(k,p,r,d,o,g){return a(),s("div",null,e)}const y=i(l,[["render",h]]);export{E as __pageData,y as default}; diff --git a/.vitepress/dist/assets/types.md.DatBM-ns.lean.js b/.vitepress/dist/assets/types.md.DatBM-ns.lean.js new file mode 100644 index 0000000..4cd39db --- /dev/null +++ b/.vitepress/dist/assets/types.md.DatBM-ns.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as a,a3 as n}from"./chunks/framework.D5qxx6u8.js";const E=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"types.md","filePath":"types.md","lastUpdated":1717792017000}'),l={name:"types.md"},t=n("",24),e=[t];function h(k,p,r,d,o,g){return a(),s("div",null,e)}const y=i(l,[["render",h]]);export{E as __pageData,y as default}; diff --git a/.vitepress/dist/changelog/version1.0.0.html b/.vitepress/dist/changelog/version1.0.0.html new file mode 100644 index 0000000..6fec315 --- /dev/null +++ b/.vitepress/dist/changelog/version1.0.0.html @@ -0,0 +1,24 @@ + + + + + + Changelog | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Changelog

Version 1.0.0

Release Date: 2022-03-17

New Features

  • Initial release of the Beacon SDK.
  • Support for Vue.js framework.
  • Setup with Vite for rapid development.
  • Basic and advanced sheet examples.

Improvements

  • Detailed comments added to example files for better understanding.
  • Support for complex roll templates and rich sheet actions.

Bug Fixes

  • N/A (initial release).

Version 2.0.0

Release Date: 2023-03-17

New Features

  • SCSS support for styling.
  • Integration with Roll20 and VTT.
  • Mock Relay for offline development.

Improvements

  • TypeScript integration for type checking and improved development experience.
  • Unit testing with Vitest.
  • End-to-End testing with Cypress.

Bug Fixes

  • N/A (initial release).
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/changelog/version2.0.0.html b/.vitepress/dist/changelog/version2.0.0.html new file mode 100644 index 0000000..04afb1f --- /dev/null +++ b/.vitepress/dist/changelog/version2.0.0.html @@ -0,0 +1,24 @@ + + + + + + Changelog | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Changelog

Version 1.0.0

Release Date: 2022-03-17

New Features

  • Initial release of the Beacon SDK.
  • Support for Vue.js framework.
  • Setup with Vite for rapid development.
  • Basic and advanced sheet examples.

Improvements

  • Detailed comments added to example files for better understanding.
  • Support for complex roll templates and rich sheet actions.

Bug Fixes

  • N/A (initial release).

Version 2.0.0

Release Date: 2023-03-17

New Features

  • SCSS support for styling.
  • Integration with Roll20 and VTT.
  • Mock Relay for offline development.

Improvements

  • TypeScript integration for type checking and improved development experience.
  • Unit testing with Vitest.
  • End-to-End testing with Cypress.

Bug Fixes

  • N/A (initial release).
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/components/actions.html b/.vitepress/dist/components/actions.html new file mode 100644 index 0000000..872f437 --- /dev/null +++ b/.vitepress/dist/components/actions.html @@ -0,0 +1,33 @@ + + + + + + Actions | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Actions

Actions are a collection of methods that can be executed from the VTT. These actions are used for any rolls that may need to be triggered outside of the sheet itself, such as from a macro or a chat button. Generally, most or all of a sheet’s rolls should be defined as actions.

javascript
actions: {
+ [name: string]: {
+    method: (props: {
+ dispatch: Dispatch,
+ character: Character,
+ messageId?: string,
+ rolls?: RollResults 
+ }, ...args: string[]): void | Promise<void>
+ }
+}

Actions are passed into the initRelay function in an object, where the keys are the unique names of the actions, and the values are objects containing a method property (additional metadata fields may be added to this object in the future).

The method receives a props object containing the following properties:

  • dispatch: A Dispatch object.
  • character: The data of the character performing the action. Currently, the action will not receive the character’s bio or GM notes, regardless of whether the player has access to those fields.
  • messageId (optional): A unique ID for an existing chat message. It's included in actions triggered from chat buttons to provide context for the original roll.
  • rolls (optional): Included when action is triggered from a chat button. Contains the roll results of the original roll.

These functions can also receive an unlimited number of additional arguments. This is because these actions can be triggered by plain text via a macro. However, all additional arguments must be strings. Additionally, these functions can be synchronous or asynchronous and do not return a value.

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/components/components-overview.html b/.vitepress/dist/components/components-overview.html new file mode 100644 index 0000000..74c286e --- /dev/null +++ b/.vitepress/dist/components/components-overview.html @@ -0,0 +1,24 @@ + + + + + + Components | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Components

The Beacon SDK is composed of various components that allow developers to create dynamic and interactive character sheets for virtual tabletop (VTT) games.

These components are crucial for handling actions, computations, macros, and rolls. This overview provides a high-level summary of each section, helping you understand their roles and how they integrate within the SDK.

Actions

Actions define specific operations that can be performed by characters within the VTT. These operations can range from simple tasks like rolling a dice to more complex interactions such as casting spells or activating abilities.

Handlers

Handlers are event listeners that manage communication between the VTT and the character sheet. They respond to various events, such as changes in character attributes or settings, and trigger appropriate actions or updates.

Computed

Computed properties are dynamic values derived from other character attributes. They allow for the creation of complex, calculated attributes that automatically update when their dependencies change.

Macro Attributes

Macro attributes handle the conversion of legacy macro attributes to the new format used in the Beacon SDK. This ensures compatibility with older character sheets and macros, allowing for a smooth transition to the new system.

Rolls

The Rolls component allows for advanced dice-rolling mechanics within the VTT. It supports both simple and complex rolls, providing flexibility in how roll results are displayed and computed.

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/components/computed.html b/.vitepress/dist/components/computed.html new file mode 100644 index 0000000..ac4ede1 --- /dev/null +++ b/.vitepress/dist/components/computed.html @@ -0,0 +1,42 @@ + + + + + + Computed | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Computed

Sheet authors define computed properties that are accessed by the host. These computed properties can be used as attributes in macros and are available to assign as values to token bars - if the tokenBarValue property is set to true.

javascript
computed: {
+ [name: string]: {
+ tokenBarValue?: boolean,
+ description?: string,
+    get: (
+      props: {
+ character: Character
+ },
+      ...args: string[]
+ ) => ComputedResult,
+ set?: (
+      props: {
+ character: Character,
+ dispatch: Dispatch
+ },
+      ...args: string[]
+ ) => void | Promise<void>
+ }
+}

Computed properties are passed into the initRelay function in an object where the keys are the names of the properties, and the value should be an object containing the following:

  • get (required): It receives character data along with any number of string parameters and should return the computed value.
  • tokenBarValue (optional): A boolean indicating whether this property should be available for use in token bars.
  • description (optional): A text value indicating what this computed summary property represents.
  • set (optional): This method receives character data and a dispatch, along with string arguments. This method does not need to return a value.

TIP

  • Setting tokenBarValue to true will make the property available to use as a value for token bars. To work correctly, the get function must not rely on any additional arguments and must return either a simple value (a string or number) or an object:
JSON
 { current: number | string, max: number | string }
  • If the set function is omitted, the value will not be editable from the token itself. If defined, set methods will receive one string argument, which is whatever the user types into the input for modifying the bar.
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/components/handlers.html b/.vitepress/dist/components/handlers.html new file mode 100644 index 0000000..50e6299 --- /dev/null +++ b/.vitepress/dist/components/handlers.html @@ -0,0 +1,64 @@ + + + + + + Handlers | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Handlers

Handler functions allow the sheet to respond to messages from the host. The handlers argument requires the following methods:

onInit

The onInit function provides the initial set of data to the sheet.

javascript
onInit(e: {
+ character: Character,
+ settings: {
+ colorTheme: string,
+ language: string,
+ gm: boolean,
+ owned: boolean,
+ settingsSheet: boolean,
+ headless: boolean,
+ sandbox: boolean,
+ campaignId: number,
+ environment: string,
+ currentUserId: string,
+ singleSheet: boolean
+ },
+ sharedSettings: {},
+ compendiumDropData: {
+ pageName: string,
+ categoryName: string,
+ expansion: number
+ }
+}, dispatch: Dispatch): void;

The event object contains the following:

  • character: The primary character for this sheet.
  • settings: Campaign and character-specific settings.
  • sharedSettings: Data shared between all characters in this campaign.
  • compendiumDropData: Populated when the character sheet is created from a compendium entry such as a creature or NPC.

Note: This function may be called multiple times during development in the sheet sandbox as part of hot reloads.

onChange

onChange is called whenever a character’s data is changed on the host’s end. The event object contains a partial character with only the character’s ID and the changed data. This could be the character’s bio, GM notes, or attributes (only the changed attributes).

javascript
onChange(e: {
+ character: Partial<Character>
+}, dispatch: Dispatch): void;

onSettingsChange

onSettingsChange is called when either the VTT’s color theme is changed, or when the current player’s ownership of the primary character changes.

javascript
onSettingsChange(e: {
+ colorTheme: string,
+ owned: boolean
+}, dispatch: Dispatch): void;

onSharedSettingsChange

onSharedSettingsChange is called when someone changes a shared setting in the VTT.

javascript
onSharedSettingsChange({ settings: { [key: string]: any } }): void;

onTranslationsRequest

onTranslationsRequest is called before the relay is fully initialized and returns the translation JSON data corresponding to the two-letter language argument.

javascript
onTranslationsRequest(language: string): { [key: string]: string };

onDragOver (optional)

onDragOver is called when a compendium item from the compendium tab is dragged over the iframe window containing the character sheet.

Coordinates of the drag are provided via top and left values, and basic compendium data is passed so that a subsequent compendium request can be made via the provided dispatch. If the item is moved outside of the iframe, dragData and coordinates are null.

javascript
onDragOver(e: {
+ coordinates: { top: number, left: number },
+ dragData: { 
+ pageName: string,
+ categoryName: string,
+ expansionId: number
+ } | null
+}, dispatch: Dispatch): void

onDropOver (optional)

onDropOver is called when a compendium item from the compendium tab is dropped over the iframe window containing the character sheet.

Coordinates of the drop are provided via top and left values, and basic compendium data is passed so that a subsequent compendium request can be made via the provided dispatch.

javascript
onDropOver(e: {
+ coordinates: { top: number, left: number },
+ dropData: { 
+ pageName: string,
+ categoryName: string,
+ expansionId: number
+ }
+}, dispatch: Dispatch): void
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/components/macros.html b/.vitepress/dist/components/macros.html new file mode 100644 index 0000000..51a6efd --- /dev/null +++ b/.vitepress/dist/components/macros.html @@ -0,0 +1,24 @@ + + + + + + Handling Legacy Macro Attributes | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Handling Legacy Macro Attributes

When utilizing Macros within the VTT, there are instances where a legacy macro might need to be employed for a Beacon sheet.

This scenario commonly arises when transitioning from an existing legacy sheet to a Beacon sheet. During such transitions, it's possible that the attributes called from the legacy macro may not align with the structure of attributes in the Beacon Sheet.

The convertLegacyMacroAttributes function serves as a pivotal tool, empowering Sheet Developers to determine the mapping strategy for legacy attributes to the new Beacon Sheet.

convertLegacyMacroAttributes

This function is defined during the initial SDK initialization process and is invoked by the host when it encounters a failure in locating an attribute's value.

typescript
convertLegacyMacroAttributes: (messages: convertLegacyMacroAttributesArgs) => {}: any

Advanced sheet macros typically first search through the defined computed properties before resorting to the convertLegacyMacroAttributes function.

The function's purpose is to return a value that will be substituted in the macro. However, it grants Sheet Developers the autonomy to devise their preferred approach for handling legacy attribute values.

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/components/roll.html b/.vitepress/dist/components/roll.html new file mode 100644 index 0000000..c959f24 --- /dev/null +++ b/.vitepress/dist/components/roll.html @@ -0,0 +1,24 @@ + + + + + + Rolls | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Rolls

The VTT (Virtual Tabletop) has several new features that enhance the way rolls are handled and displayed. These features include attributes and elements that allow for dynamic roll results and interactivity within the VTT environment.

data-rollname

The data-rollname attribute tells the VTT that this HTML element is displaying the result of a roll.

html
<span data-rollname="attack"></span>

The VTT will both add the Quantum Roll signature tooltip to the element and replace the contents of the element with the result from the roll.

This is the preferred method for displaying roll results wherever possible, that is, sending the whole roll formula to the roll server and allowing the VTT to display the result.

data-computed

Tagging an element with both a data-rollname and a data-computed="true" tells the VTT that this element is associated with a roll, but the results of that roll were computed by the author, as opposed to the roll server computing the result.

html
<span data-rollname="complex" data-computed="true">25</span>

The VTT will add the Quantum Roll signature tooltip, but the content of the element will not be modified. Generally, this should only be used when the roll server does not support a particular dice mechanic.

Roll Buttons

Roll buttons are interactive elements that trigger sheet actions, such as damage rolls, when clicked. These buttons use the data-sheet-action attribute to specify the action to be executed.

html
<button data-sheet-action="damage" data-args="arg1:arg2">Click Me</button>

Additional arguments can be provided using the data-args attribute, and the character, messageId, and original rolls will be included automatically.

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/dispatch.html b/.vitepress/dist/dispatch.html new file mode 100644 index 0000000..126dbe2 --- /dev/null +++ b/.vitepress/dist/dispatch.html @@ -0,0 +1,133 @@ + + + + + + Dispatch | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Dispatch

The initRelay function returns a promise that resolves with a Dispatch object. This object can be used to interact with the relay system.

Dispatch provides methods for sending commands from the character sheet back to the host. Except when specified, all of these methods below will return a promise.

update

The update method sends character changes to the host page (VTT) to persist in the data store (Firebase).

The partial character passed in here must contain the characterId and can contain any combination of the attributes, bio, and gmNotes properties.

javascript
dispatch.update({
+ options: { overwrite?: boolean },
+ character: Partial<Character>
+}): Promise<void>

When updating a character’s attributes, only include those attributes that have changed.

updateCharacter

Like update, updateCharacter sends character changes to the host page (VTT) to persist in the data store (Firebase).

However, this function takes a full set of character attributes as the character argument and automatically computes the diff with existing character attributes so that only changed attributes are sent to the data store.

javascript
dispatch.updateCharacter({
+ character: Partial<Character>
+}): Promise<void>

updateSharedSettings

Updates sheet settings that are shared across all people in the game. Returns a promise that can be awaited.

javascript
dispatch.updateSharedSettings({
+ update: { settings: { [key: string]: any } }
+}): Promise<void>

roll

The roll method takes one or more rolls in the form of an object, where the keys are unique roll names and the values are roll strings.

javascript
dispatch.roll({
+ rolls: { [rollName: string]: string } // Ex. {attack: '1d20+4', damage: `3d6+2`}
+  messageId?: string
+}): Promise<{messageId: string, results: RollResults }>

The messageId property can be provided to attach the roll to an existing chat message. If the messageId property is omitted, the roll will be associated with a new chat message, and a new messageId will be returned with the roll results.

The function returns a promise that resolves with an object containing the messageId and the RollResult. The roll result is returned in the same format as in the legacy computed roll system.

For more information on data types, see the Types page.

post

This function posts a message to chat, either creating a new message or overwriting an existing one. It requires a characterId and message content, a string containing either plain text or HTML to be posted.

javascript
dispatch.post({
+ characterId: string,
+ messageId?: string,
+ content: string,
+ options?: {
+ whisper?: 'gm',
+ secret?: boolean,
+ }
+}): Promise<string>

The function also accepts an options object. Currently, only whisper and secret are supported. The only valid value for whisper is gm, which will send the message as a whisper to the GM.

The secret option is ignored unless whisper is also set; toggling to true will cause the message to not be visible to the controlling player.

Like roll, messageId can be provided to update an existing chat message, but if omitted, the function will generate a new messageId and post a new chat message. The function returns the messageId.

query

The query function takes an options object and uses it to display a SweetAlert prompt to the user.

javascript
dispatch.query(options: Swal2Options): {
+ isConfirmed: boolean,
+ isDenied: boolean,
+ isDismissed: boolean,
+ value?: string | number,
+ dismiss?: "cancel" | "backdrop" | "close" | "esc" | "timer",
+ errors?: string[],
+}: Promise<{
+ results: {
+ isConfirmed: boolean,
+ isDenied: boolean,
+ isDismissed: boolean,
+ value: string | number,
+ dismiss: string,
+ },
+ errors: [string]
+}>

It returns the results of the query as a SweetAlertResult, along with any errors encountered. The options work exactly as described in the SweetAlert2 documentation.

However, not all options are allowed. Here is a list of the allowed options:

Allowed OptionsDescription
ariaLabelCustom aria-label for the input field.
backgroundBackground color for the modal.
cancelButtonAriaLabelCustom aria-label for the cancel button.
cancelButtonColorBackground color for the cancel button.
cancelButtonTextText for the cancel button.
closeButtonAriaLabelCustom aria-label for the close button.
confirmButtonAriaLabelCustom aria-label for the confirm button.
confirmButtonColorBackground color for the confirm button.
confirmButtonTextText for the confirm button.
currentProgressStepCurrent progress step index.
denyButtonAriaLabelCustom aria-label for the deny button.
denyButtonColorBackground color for the deny button.
denyButtonTextText for the deny button.
growGrow animation for the modal ('row', 'column', 'fullscreen').
iconColorColor of the modal icon.
imageAltAlternate text for the image.
imageHeightHeight of the image.
imageUrlURL of the image to display.
imageWidthWidth of the image.
inputInput field type ('text', 'email', 'password', etc.).
inputAttributesCustom attributes for the input field.
inputAutoTrimAutomatically trim the input value.
inputLabelLabel for the input field.
inputOptionsOptions for select inputs.
inputPlaceholderPlaceholder for the input field.
inputValueInitial value for the input field.
paddingModal window padding.
positionPosition of the modal ('top', 'center', 'bottom').
progressStepsProgress steps, useful for multi-step forms.
progressStepsDistanceDistance between progress steps.
returnInputValueOnDenyReturn input value when denied.
reverseButtonsReverse the order of buttons.
showCancelButtonShow the cancel button.
showCloseButtonShow the close button.
showConfirmButtonShow the confirm button.
showDenyButtonShow the deny button.
textText content for the modal.
timerAuto close timer for the modal.
timerProgressBarShow a progress bar for the timer.
titleTextTitle for the modal.
validationMessageMessage for input validation.
widthWidth of the modal.

perform

The perform method executes the specified action on behalf of the character (designated by characterId), passing in args to the action method. This method can perform actions on behalf of any character, even a character for which the sheet does not have data.

javascript
dispatch.perform({
+ characterId: string,
+ action: string,
+ args: string[],
+}): Promise<void>;

getComputed

The getComputed function is used to retrieve the value of a computed property.

javascript
dispatch.getComputed({
+ characterId: string,
+ property: string,
+ args: string[],
+}): Promise<string | number | object>;

It takes the following arguments:

  • characterId: The ID of the character whose computed property you want to get.
  • property: The name of the computed property to retrieve.
  • args: An array of string arguments that may be required by the computed property.

This method returns a promise that resolves with the computed value, which can be a string, number, or object.

setComputed

The setComputed function is used to set the value of a computed property.

javascript
dispatch.setComputed({
+ characterId: string,
+ property: string,
+ args: string[],
+}): Promise<string | number | object>;

It takes the following arguments:

  • characterId: The ID of the character whose computed property you want to set.
  • property: The name of the computed property to set.
  • args: An array of string arguments that may be required by the computed property.

This method returns a promise that resolves with the new computed value, which can be a string, number, or object.

compendiumRequest

compendiumRequest executes an AJAX request to the compendium service’s graphQL endpoint. It takes in a graphQL query string written according to the Compendium service’s schema. The query string does not need to include the ruleSystem shortName as this is set automatically according to the campaign override or sheet.json value in the VTT.

javascript
dispatch.compendiumRequest({ 
+ query: string
+}): Promise<{
+ data: Object
+ errors: Array<Error>
+ extensions: Record<string, any>
+}>;

debouncedCompendiumRequest

debouncedCompendiumRequest works just like the compendiumRequest method, with the exception that calls to this function are automatically debounced (at 100ms) and grouped into a single request to the compendium service.

javascript
dispatch.debouncedCompendiumRequest({ 
+ query: string
+}): Promise<{
+ data: Object
+}>;

NOTE: This function will only return the requested data; it does not return errors or extensions.

getTokens

getTokens requires a character ID string and returns information about tokens on the user’s current page. The return value contains two arrays of tokens.

javascript
dispatch.getTokens({
+ characterId: string
+}): Promise<{
+ selected: Token[],
+ tokens: Token[]
+}>;

The tokens array contains all tokens on the current page representing the character whose ID was provided to the function. The selected array contains any tokens that are currently selected, regardless of which character they represent.

The returned token objects contain all of the token attributes available to the API. You can find the documentation here.

addToTracker

The addToTracker method adds or updates a single item in the turn tracker. Passing in a tokenId will add the specified token to the tracker, while passing in custom with a name and an optional image URL (img) will add a custom item, not connected to any character or token.

javascript
dispatch.addToTracker({
+ tokenId?: string,
+ custom?: {
+ name: string,
+ img?: string
+ },
+ formula?: string,
+ value: string | number
+}): Promise<void>;

A round calculation string can be added via the optional formula parameter. value is the initiative number for the item.

addActionsToHost

The addActionsToHost method adds a specific action (macro) to an area of the VTT UI, either the macrobar or the token action bar. Either sheetAction or action can be passed in, but not both simultaneously.

javascript
dispatch.addActionsToHost({
+ sheetAction?: {
+ characterId: string,
+ action: string,
+ args?: string[]
+ },
+ action?: string,
+ locations?: ['macroBar'] | ['tokenActionBar'] | ['macroBar', 'tokenActionBar'],
+ actionId?: string,
+ name: string,
+ requestId?: string
+}): void;

The sheetAction arg should be passed in when the action is designated to a character. The action arg should be passed when the action is more generic.

getActions

getActions retrieves a specific character’s actions (macros).

javascript
dispatch.getActions({
+ args: {
+ characterId?: string
+ }
+}): Promise<{
+ actions?: {} | { [id: string]: ActionFromHost }
+}>;

setContainerSize

This method updates the size of the container which holds the sheet shared settings. It also returns a promise that can be awaited.

javascript
dispatch.setContainerSize({
+ args: { 
+ width?: number,
+ height?: number 
+ }
+}): Promise<void>;

This can be used in conjunction with something like the ResizeSensor event listener from npm: css-element-queries to resize the container on the host automatically.

updateTokensByCharacter

The updateTokensByCharacter method updates a particular character’s default token as well as all existing tokens representing that character.

javascript
dispatch.updateTokensByCharacter({
+ args: { 
+ characterId: string,
+ token: Partial<Token>
+ }
+}): Promise<void>;

This method returns a promise that can be awaited.

updateTokensByIds

The updateTokensByIds method updates a single or several tokens. It also returns a promise that can be awaited.

javascript
dispatch.updateTokensByIds({
+ args: { 
+ tokenIds: array of ids as strings,
+ token: Partial<Token>
+ }
+}): Promise<void>;

autoLinkText

autoLinkText goes through the text to find handout names between square brackets and converts them into links with the handoutID.

javascript
dispatch.autoLinkText({
+ args: { 
+ text: string
+ }
+}): Promise<string>;

For example, in a game with a handout named Dragon, passing in the text "this is a [Dragon]" to the autoLinkText method returns something similar to:

html
"this is a `<a href="https://journal.roll20.net/8je02j0kd02k">Dragon</a>`"

openDialogFromLink opens the supplied urlString through the VTT.

javascript
dispatch.openDialogFromLink({
+ args: { 
+ urlString: string
+ }
+}): void;

NOTE:

  • If the URL is for a handout, the corresponding handout will be opened in the campaign. This will also check if the user opening the link has access to the handout.
  • If the URL is for a compendium, it will open a pop-up to the compendium page. It will also check to ensure the user has access to view the page.
  • If the URL is for an external page, a confirmation pop-up will display to warn the user that the link is for an external site, and a new tab will open in their main window if confirmed.
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/gettingstarted/contributing.html b/.vitepress/dist/gettingstarted/contributing.html new file mode 100644 index 0000000..4cd02f6 --- /dev/null +++ b/.vitepress/dist/gettingstarted/contributing.html @@ -0,0 +1,24 @@ + + + + + + Contributing Guide | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Contributing Guide

We appreciate your interest in contributing to the Beacon SDK project. Here are some guidelines to help you get started:

How to Contribute

Reporting Bugs

If you find a bug, please report it by opening an issue in the GitHub repository. Provide as much detail as possible to help us understand and reproduce the issue.

Suggesting Features

We welcome suggestions for new features. Please open an issue in the GitHub repository with a detailed description of the feature you would like to see and why you think it would be useful.

Code Contributions

  1. Fork the Repository: Create a personal fork of the project on GitHub.

  2. Clone the Fork: Clone your fork to your local machine.

    bash
    git clone
  3. Create a Branch: Create a new branch for your work.

    bash
    git checkout -b feature-or-bugfix-description
  4. Make Changes: Make your changes to the codebase. Follow the existing code style and conventions.

  5. Run Tests: Ensure that all tests pass before submitting your changes.

    bash
    npm run ci-check
  6. Commit Changes: Commit your changes with a descriptive commit message.

    bash
    git commit -m "Description of your changes"
  7. Push Changes: Push your changes to your fork.

    bash
    git push origin feature-or-bugfix-description
  8. Create a Pull Request: Open a pull request from your fork to the main repository. Provide a detailed description of your changes and why they should be merged.

Running Tests

  • Unit Tests: Run unit tests with Vitest.

    bash
    npm run test:unit
  • End-to-End Tests: Run End-to-End tests with Cypress.

    bash
    npm run test:e2e

Code Style

  • Follow the existing code style and conventions.

  • Use ESLint for linting.

    bash
    npm run lint
  • Format code with Prettier.

    bash
    npm run format

Communication

  • GitHub Issues: Use GitHub issues for bug reports, feature requests, and questions.
  • Pull Requests: Use GitHub pull requests to submit your code contributions.

Thank you for contributing to the Beacon SDK project!

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/gettingstarted/faq.html b/.vitepress/dist/gettingstarted/faq.html new file mode 100644 index 0000000..15f786f --- /dev/null +++ b/.vitepress/dist/gettingstarted/faq.html @@ -0,0 +1,24 @@ + + + + + + FAQ | Beacon SDK + + + + + + + + + + + + + +
Skip to content

FAQ

Q1: What are actions in the context of the VTT?

Actions are methods executed from the VTT, often used for rolls triggered from macros or chat buttons. They are defined in the sheet's configuration and can interact with character data.

Q2: How are computed properties used in the VTT?

Computed properties are defined attributes accessible by the host, usable in macros, and assignable to token bars. They can represent derived values or complex calculations based on character data.

Q3: What is the dispatch function used for?

The dispatch function provides methods for sending commands from the character sheet back to the host, including updating character data, performing actions, and interacting with the VTT interface.

Q4: What are roll buttons, and how do they work?

Roll buttons are HTML elements with specific attributes that execute designated sheet actions when clicked. They can pass arguments to the action method and are commonly used for triggering rolls from the character sheet.

Q5: How are legacy macro attributes handled in the VTT?

Legacy macro attributes can be mapped to the new sheet structure using the convertLegacyMacroAttributes function. Sheet developers can define how to handle legacy attribute values to ensure compatibility with existing macros.

Q6: What is the purpose of the query function?

The query function displays a SweetAlert prompt to users and returns the results along with any errors. It is commonly used for interactive prompts or confirmations within the VTT interface.

Q7: How are tokens managed in the VTT?

Tokens represent characters or objects on the virtual tabletop. Functions like getTokens, updateTokensByCharacter, and addToTracker are used to retrieve token information, update token data, and manage tokens in the turn tracker.

Q8: What is the role of the convertLegacyMacroAttributesArgs type?

The convertLegacyMacroAttributesArgs type defines the arguments used for handling legacy macro attributes. It includes the attribute name, character ID, and character data needed for mapping legacy attributes to the new sheet structure.

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/gettingstarted/glossary.html b/.vitepress/dist/gettingstarted/glossary.html new file mode 100644 index 0000000..ee41b82 --- /dev/null +++ b/.vitepress/dist/gettingstarted/glossary.html @@ -0,0 +1,24 @@ + + + + + + Glossary | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Glossary

Background:

The background color of the alert box.

Character:

An entity in the game with attributes, bio, GM notes, and a token representation.

Character sheet:

A digital or printed page used to track a character's attributes, abilities, and other relevant information in a role-playing game.

Computed Property:

Properties that have both get and set methods, which can be dynamically calculated.

ConvertLegacyMacroAttributes:

A function to handle mapping legacy macro attributes to the new Beacon Sheet format.

Dispatch:

A set of functions enabling the sheet to send commands back to the VTT.

GM (Game Master):

The person who runs the game, controls the NPCs & the story, and provides challenges for the players.

Handler:

Methods that act as event handlers to process messages from the host.

InitRelay:

Function to initialize the SDK relay, setting up communication between the host and the character sheet.

Macro:

A script that automates repetitive tasks in the VTT.

Roll Template:

A predefined format for displaying the results of a dice roll.

Token:

A visual representation of a character or object on the virtual tabletop, with various properties like position, size, and attributes.

VTT (Virtual Tabletop):

An online platform that allows players to play tabletop role-playing games over the internet.

ValidationMessage:

A message displayed when an input value does not meet specific criteria.

Quantum Roll:

A system that ensures the fairness and authenticity of dice rolls in the VTT by using cryptographic methods.

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/gettingstarted/installation.html b/.vitepress/dist/gettingstarted/installation.html new file mode 100644 index 0000000..7acd5ed --- /dev/null +++ b/.vitepress/dist/gettingstarted/installation.html @@ -0,0 +1,26 @@ + + + + + + Installation | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Installation

This guide will help you set up the Beacon SDK on your machine.

Prerequisites

Before you can install the Beacon SDK, you'll need to have Node.js installed on your machine. If you don't have Node.js installed, use the following steps in the official Node.js documentation.

Step 1: Accessing Beacon SDK

js
npm i @roll20-official/beacon-sdk

Step 2: Install & Import

The following steps will guide you in installing the package in your application:

  1. Add the package to your package.json:

    Under the dependencies object key of your package.json, add a new string key called @roll20/beacon-sdk with the version you want to install from our version history.

    For example:

    json
    {
    +  "@roll20/beacon-sdk": "0.0.0"
    +}

    For more information about installing packages, refer to the NPM documentation.

  2. Run npm install:

    Open a terminal in the root of your application’s folder and run the following command:

    bash
    npm install

    For more information about NPM commands, refer to the NPM install documentation.

  3. Import the necessary package contents in your application:

    The package exports various utilities you can use in your application. For example, you will need to utilize the initRelay function from the package.

    Here's an import statement for that function:

    javascript
    import { initRelay } from '@roll20/beacon-sdk';

    For more information about imports, refer to the JavaScript import documentation.

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/gettingstarted/introduction.html b/.vitepress/dist/gettingstarted/introduction.html new file mode 100644 index 0000000..25b1876 --- /dev/null +++ b/.vitepress/dist/gettingstarted/introduction.html @@ -0,0 +1,24 @@ + + + + + + Introduction | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Introduction

The Beacon SDK is a toolset designed to enhance and streamline the development of virtual tabletop (VTT) character sheets and other interactive elements.

Whether you're a game master (GM), a developer, or a player, the Beacon SDK provides a framework to create dynamic, responsive, and fully integrated VTT experiences.

What is the Beacon SDK?

The Beacon SDK is a specialized software development kit for virtual tabletops.

It facilitates creating and managing interactive character sheets, roll templates, macros, and other VTT functionalities.

The SDK ensures easy communication between the VTT platform and the character sheets, allowing real-time updates and interactions.

Key Features

  • Character Sheets: Design and implement detailed character sheets with dynamic attributes and real-time updates.
  • Roll Mechanics: Integrate complex roll formulas and display roll results directly within the VTT.
  • Macros: Create and manage macros for automated actions and roll calculations.
  • Event Handling: Utilize a comprehensive set of handlers to manage various events and interactions within the VTT.
  • Legacy Support: Convert and integrate legacy macros and roll templates with the new Beacon architecture.
  • Customization: Define custom actions computed properties and handle specific roll templates tailored to your game's needs.

Components Overview

The Beacon SDK is composed of several key components:

  • Actions: Define and manage custom actions that can be triggered within the VTT.
  • Handlers: Event handlers that process and respond to various VTT events and messages.
  • Computed Properties: Define dynamically computed properties based on other attributes.
  • Macro Attributes: Convert and manage legacy macro attributes for compatibility with the Beacon SDK.
  • Rolls: Implement advanced roll mechanics and display results dynamically within the VTT.

For a comprehensive overview of these components, view the components section.

Getting Started

To get started with the Beacon SDK, you must initialize the relay, set up your character sheets, and define the necessary actions, handlers, and computed properties.

This documentation provides detailed guides and examples to help you through each step of the process.

By leveraging the Beacon SDK, you can create rich, interactive, fully integrated VTT experiences that enhance gameplay and streamline game management.

Whether adapting existing character sheets or building new ones from scratch, the Beacon SDK offers the tools and flexibility to bring your virtual tabletop to life.

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/gettingstarted/quickstart.html b/.vitepress/dist/gettingstarted/quickstart.html new file mode 100644 index 0000000..8ac923e --- /dev/null +++ b/.vitepress/dist/gettingstarted/quickstart.html @@ -0,0 +1,27 @@ + + + + + + Beginner Beacon Sheet | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Beginner Beacon Sheet

This is a quick start sheet example. This sheet will guide you through getting started with the Beacon Sheet.

Prerequisites

To set this sheet up properly, make sure that you have the following tools installed:

  • Vue.js
  • Vite
  • SCSS

BeginnerFigure 1: Quickstart sheet

Use the following steps to get started:

  1. Install the Beacon SDK: Run the following command.
bash
npm i @roll20-official/beacon-sdk
  1. Install dependencies: Install the dependencies for the project.
bash
npm install
  1. Start the Vite server: After installing the project's dependencies, you'll need to start the Vite server. There are two ways to do this:

a. Offline Development: This method will run the Vite server with the default port and environment set to development.

bash
npm run dev

Once this code executes successfully, you can access the Vite server at http://localhost:5173.

This method is useful when you do not have access to the Roll20 website or would like to work on parts of your project that do not depend on a connection to the VTT or Roll20 Characters, such as working on styling, mocking up the environment, building Vue components, testing functionality, etc.

INFO

In development mode, you cannot save or access existing character data or use the Beacon SDK functions that depend on VTT or Roll20 Characters functionality, such as dice rolling and token manipulation.

b. Sandbox Development: This method will run the Vite server with the port set to 7620 and the environment set to staging mode.

bash
npm run sandbox

This command will build the SCSS files and then run the Vite server. This will set the server up for connecting to a VTT custom sheet sandbox as well as through the sandbox in Roll20 Characters.

To test your changes in the VTT custom sheet sandbox, you will need to add the following to the sheet.json editor in the game settings:

json
{
+       "advanced": true,
+       "advancedPort": 7620
+}

Useful Commands

The following set of commands can come in handy when working with this sheet:

  • For Hot reloading and building CSS files, use the following command:
bash
npm run watch-scss
  • For linting, use the following command:
bash
npm run lint
  • For formatting with Prettier, use the following command:
bash
npm run format
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/gettingstarted/quickstartadvance.html b/.vitepress/dist/gettingstarted/quickstartadvance.html new file mode 100644 index 0000000..c6ab5c0 --- /dev/null +++ b/.vitepress/dist/gettingstarted/quickstartadvance.html @@ -0,0 +1,24 @@ + + + + + + Advanced Beacon Sheet | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Advanced Beacon Sheet

This is an advanced quick start sheet example. This sheet takes an advanced approach to building the Beacon sheet.

Prerequisites

To set this sheet up properly, make sure that you have the following:

  • Vue framework & Routing
  • Multiple Data Stores
  • Complex Roll Templates
  • Rich Sheet Actions
  • TypeScript
  • Vite
  • SCSS
  • Ability to run Unit & End-to-End Tests

AdvancedFigure 1: Advanced sheet

This sheet uses the same steps listed in the Beginner sheet. Immediately after implementing those three steps, you'll add the following step:

  • Run a CI check: This will run several checks to ensure your code is as optimal as possible, including formatting, linting, type checking, unit tests, and end-to-end tests.
bash
npm run ci-check

You can think of this command as a sanity check you can leverage when pushing a big release for your sheet!

Useful Commands

The following set of commands can come in handy when working with this sheet:

  • For Hot reloading and building CSS files, use the following command:
bash
npm run watch-scss
  • For linting, use the following command:
bash
npm run lint
  • For formatting with Prettier, use the following command:
bash
npm run format
  • For type checking with TypeScript, use the following command:
bash
npm run type-check
  • For running unit tests with Vitest, use the following command:
bash
npm run test:unit
  • To open up and develop local end-to-end tests with Cypress, use the following command:
bash
npm run test:e2e:open:local
  • For running local end-to-end tests with Cypress, use the following command:
bash
npm run test:e2e:local
  • To run CDN-hosted end-to-end tests with Cypress, use the following command:
bash
npm run test:e2e
+ + + + \ No newline at end of file diff --git a/.vitepress/dist/gettingstarted/releasesheet.html b/.vitepress/dist/gettingstarted/releasesheet.html new file mode 100644 index 0000000..764fbd0 --- /dev/null +++ b/.vitepress/dist/gettingstarted/releasesheet.html @@ -0,0 +1,24 @@ + + + + + + Beacon SDK + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.vitepress/dist/hashmap.json b/.vitepress/dist/hashmap.json new file mode 100644 index 0000000..37f083c --- /dev/null +++ b/.vitepress/dist/hashmap.json @@ -0,0 +1 @@ +{"components_roll.md":"7YnwoYiF","changelog_version1.0.0.md":"C_EDnW_t","gettingstarted_contributing.md":"BjD3FF_z","components_actions.md":"DD4l12qJ","index.md":"flauEWzo","changelog_version2.0.0.md":"B01QjFuf","gettingstarted_introduction.md":"D4KjaCzI","readme.md":"MDy2-9Hv","components_macros.md":"DLr_mdjs","gettingstarted_faq.md":"ZFzyjSX-","components_computed.md":"8eKgCilz","gettingstarted_installation.md":"CeGvA-jF","types.md":"DatBM-ns","components_components-overview.md":"CT9Z7mbI","gettingstarted_quickstart.md":"DR8RojTF","gettingstarted_glossary.md":"CDvkStwl","components_handlers.md":"5grfnb62","gettingstarted_quickstartadvance.md":"CLzkgrw2","gettingstarted_releasesheet.md":"kJPGiQBn","dispatch.md":"BcfYGwEY"} diff --git a/.vitepress/dist/index.html b/.vitepress/dist/index.html new file mode 100644 index 0000000..4d7887c --- /dev/null +++ b/.vitepress/dist/index.html @@ -0,0 +1,24 @@ + + + + + + Beacon SDK + + + + + + + + + + + + + +
Skip to content

Beacon SDK

Build Advanced Character Sheets for Roll20

+ + + + \ No newline at end of file diff --git a/.vitepress/dist/types.html b/.vitepress/dist/types.html new file mode 100644 index 0000000..e5e3322 --- /dev/null +++ b/.vitepress/dist/types.html @@ -0,0 +1,126 @@ + + + + + + Types | Beacon SDK + + + + + + + + + + + + + +
Skip to content

Types

This section provides detailed descriptions and examples of the key types used in the SDK.

Each type represents different aspects of characters, tokens, roll results, and macro attributes, facilitating comprehensive and flexible interactions within the VTT environment.

Character

The Character type contains a game character, including its unique ID, name, attributes, and visual representation. It also supports optional fields for character biography and Game Master notes.

typescript
type Character = {
+ id: string;
+ name: string;
+ attributes: Record<string, any>;
+ bio?: string;
+ gmNotes?: string;
+ token: Token;
+ avatar: string;
+}

The character type contains the following properties:

  • id: A unique identifier for the character.
  • name: The character's name.
  • attributes: A record of various attributes such as strength, agility, etc.
  • bio: An optional field for the character's biography.
  • gmNotes: Optional notes intended for the Game Master.
  • token: A Token object representing the character's token on the VTT.
  • avatar: URL to the character's avatar image.

Token

The Token type represents a character or object's visual token on the virtual tabletop. This type includes various properties related to the token's appearance, control, and interactions within the game environment.

typescript
type Token = {
+ id: string;
+ layer: string;
+ imgsrc: string;
+ name: string;
+ gmnotes: string
+ controlledby: string;
+ bar1_value: string;
+ bar1_max: string;
+ bar1_link: string;
+ bar2_value: string;
+ bar2_max: string;
+ bar2_link: string;
+ bar3_value: string;
+ bar3_max: string;
+ bar3_link: string;
+ represents: string;
+ aura1_radius: string;
+ aura1_color: string;
+ aura2_radius: string;
+ aura2_color: string;
+ tint_color: string;
+ statusmarkers: string;
+ light_radius: string;
+ light_dimradius: string;
+ light_angle: string;
+ light_losangle: string;
+ adv_fow_view_distance: string;
+ sides: string;
+ lastmove: string;
+ lightColor: string;
+ currentSide: number;
+ night_vision_distance: number;
+ bright_light_distance: number;
+ low_light_distance: number;
+ limit_field_of_vision_center: number;
+ limit_field_of_vision_total: number;
+ limit_field_of_night_vision_center: number;
+ limit_field_of_night_vision_total: number;
+ directional_bright_light_total: number;
+ directional_bright_light_center: number;
+ directional_low_light_total: number;
+ directional_low_light_center: number;
+ light_sensitivity_multiplier: number;
+ dim_light_opacity: number;
+ isdrawing: boolean;
+ flipv: boolean;
+ fliph: boolean;
+ aura1_square: boolean;
+ aura2_square: boolean;
+ showname: boolean;
+ showplayers_name: boolean;
+ showplayers_bar1: boolean;
+ showplayers_bar2: boolean;
+ showplayers_bar3: boolean;
+ showplayers_aura1: boolean;
+ showplayers_aura2: boolean;
+ playersedit_name: boolean;
+ playersedit_bar1: boolean;
+ playersedit_bar2: boolean;
+ playersedit_bar3: boolean;
+ playersedit_aura1: boolean;
+ playersedit_aura2: boolean;
+ light_otherplayers: boolean;
+ light_hassight: boolean;
+ has_bright_light_vision: boolean;
+ has_night_vision: boolean;
+ emits_bright_light: boolean;
+ emits_low_light: boolean;
+ has_limit_field_of_vision: boolean;
+ has_limit_field_of_night_vision: boolean;
+ has_directional_bright_light: boolean;
+ has_directional_low_light: boolean;
+ show_tooltip: boolean;
+ lockMovement: boolean;
+}

The token type contains the following properties:

  • id: A unique identifier for the token.
  • layer: Specifies the layer the token is on, such as "map" or "objects".
  • imgsrc: URL to the token's image.
  • name: Name of the token.
  • gmnotes: Notes for the Game Master about the token.
  • controlledby: ID of the player controlling the token.
  • bar1_value: Current value of the first status bar.
  • bar1_max: Maximum value of the first status bar.
  • bar1_link: Link to the attribute the first bar represents.
  • bar2_value: Current value of the second status bar.
  • bar2_max: Maximum value of the second status bar.
  • bar2_link: Link to the attribute the second bar represents.
  • bar3_value: Current value of the third status bar.
  • bar3_max: Maximum value of the third status bar.
  • bar3_link: Link to the attribute the third bar represents.
  • represents: The character ID this token represents.
  • aura1_radius: Radius of the first aura.
  • aura1_color: Color of the first aura.
  • aura2_radius: Radius of the second aura.
  • aura2_color: Color of the second aura.
  • tint_color: Tint color applied to the token.
  • statusmarkers: Status markers applied to the token.
  • light_radius: Radius of the light the token emits.
  • light_dimradius: Radius of the dim light the token emits.
  • light_angle: Angle of the light emission.
  • light_losangle: Line of sight angle.
  • adv_fow_view_distance: Distance the token can see in advanced fog of war.
  • sides: Number of sides for multi-sided tokens.
  • lastmove: Coordinates of the last move.
  • lightColor: Color of the light emitted by the token.
  • currentSide: Current side displayed for multi-sided tokens.
  • night_vision_distance: Distance for night vision.
  • bright_light_distance: Distance for bright light vision.
  • low_light_distance: Distance for low light vision.
  • limit_field_of_vision_center: Center limit for the field of vision.
  • limit_field_of_vision_total: Total limit for the field of vision.
  • limit_field_of_night_vision_center: Center limit for night vision.
  • limit_field_of_night_vision_total: Total limit for night vision.
  • directional_bright_light_total: Total distance for directional bright light.
  • directional_bright_light_center: Center distance for directional bright light.
  • directional_low_light_total: Total distance for directional low light.
  • directional_low_light_center: Center distance for directional low light.
  • light_sensitivity_multiplier: Multiplier for light sensitivity.
  • dim_light_opacity: Opacity of the dim light.
  • isdrawing: Indicates if the token is a drawing.
  • flipv: Indicates if the token is flipped vertically.
  • fliph: Indicates if the token is flipped horizontally.
  • aura1_square: Indicates if the first aura is square.
  • aura2_square: Indicates if the second aura is square.
  • showname: Show the token's name.
  • showplayers_name: Show the name to players.
  • showplayers_bar1: Show the first bar to players.
  • showplayers_bar2: Show the second bar to players.
  • showplayers_bar3: Show the third bar to players.
  • showplayers_aura1: Show the first aura to players.
  • showplayers_aura2: Show the second aura to players.
  • playersedit_name: Allow players to edit the name.
  • playersedit_bar1: Allow players to edit the first bar.
  • playersedit_bar2: Allow players to edit the second bar.
  • playersedit_bar3: Allow players to edit the third bar.
  • playersedit_aura1: Allow players to edit the first aura.
  • playersedit_aura2: Allow players to edit the second aura.
  • light_otherplayers: Light is visible to other players.
  • light_hassight: Token has sight.
  • has_bright_light_vision: Token has bright light vision.
  • has_night_vision: Token has night vision.
  • emits_bright_light: Token emits bright light.
  • emits_low_light: Token emits low light.
  • has_limit_field_of_vision: Token has a limited field of vision.
  • has_limit_field_of_night_vision: Token has a limited night vision.
  • has_directional_bright_light: Token has directional bright light.
  • has_directional_low_light: Token has directional low light.
  • show_tooltip: Show tooltip for the token.
  • lockMovement: Lock the token's movement.

RollResults

The RollResults type details the outcomes of dice rolls, including the expression used, individual dice results, and the final computed result. This type is essential for handling and displaying roll results in the game.

typescript
type RollResults = {
+ [name: string]: {
+ expression: string;
+ rollName: string;
+ results: {
+ expression: string;
+ dice?: number[];
+ result: number;
+ rolls?: {
+ sides: number;
+ dice: number;
+ results: number[];
+ }[];
+ };
+ };
+}

The RollResults type contains the following properties:

  • expression: The dice roll formula.
  • rollName: The name given to this roll.
  • results: An object containing the roll results.
    • expression: The formula used for the roll.
    • dice: An optional array of the dice rolled.
    • result: The final result of the roll.
    • rolls: Optional detailed results of each dice rolled.
      • sides: Number of sides on the dice.
      • dice: Number of dice rolled.
      • results: Results of the individual dice rolls.

convertLegacyMacroAttributesArgs

The convertLegacyMacroAttributesArgs type defines the arguments required for converting legacy macro attributes. This type includes the attribute name, character ID, and the character object itself.

typescript
type convertLegacyMacroAttributesArgs = {
+ attribute: string;
+ characterId: string;
+ character: Character;
+}

The convertLegacyMacroAttributesArgs type contains the following properties:

  • attribute: The name of the attribute to be converted.
  • characterId: The unique identifier of the character.
  • character: The Character object containing the character's data.

These types control interaction with character data, tokens, roll results, and handling legacy macro attributes, making the SDK flexible for various use cases.

+ + + + \ No newline at end of file diff --git a/README.md b/README.md index a236b21..b2a806c 100644 --- a/README.md +++ b/README.md @@ -12,4 +12,18 @@ Run it with the following command: ``` npm run docs:dev -``` \ No newline at end of file +``` + +## Build and Test Locally +Run this command to build the docs: + +`` +npm run docs:build +``` +Once built, preview it locally by running: + +``` +npm run docs:preview +``` + +The preview command will boot up a local static web server that will serve the output directory .vitepress/dist at http://localhost:4173. You can use this to make sure everything looks good before pushing to production. \ No newline at end of file